From accb5619e44efa303c38d971db4bf77f0a9e5772 Mon Sep 17 00:00:00 2001
From: RitaDias <rita@sanity.io>
Date: Wed, 17 Jul 2024 15:25:44 +0200
Subject: [PATCH] refactor: update document badge logic and navigation (#7175)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* feat(sanity): add support for sticky query params

* feat(sanity): add 'perspective' dropdown

* feat(sanity): include `_version` field in search results

* feat(types): add `_version` field to `SanityDocument` and `SanityDocumentLike`

* fix(sanity): global perspective state restoration

* feat(sanity): hardcode `summerDrop` and `autumnDrop` bundles

* wip: allow pairs to include multiple drafts

* feat(sanity): support versioned document ids in `getPublishedId` function

* feat(sanity): add `_version` field to preview observation

* feat(sanity): reflect checked out bundle in document lists and list previews

* debug(sanity): add version debug output to list previews

* feat(sanity): add action to create new version based on an doc id

* feat(sanity): update document title + version popover - add new and from existing versions

* chore(sanity): move versions menu to versions folder

* chore(sanity): update check for checking version

* fix(sanity): ability to add new versions to doc

* feat(sanity): add dumb bundle and version data, add icons and hues

* feat(sanity): update styles and don't rely on random

* update isVersion

* docs(sanity): update comments

* feat(sanity): add "latest version" menu button

* refactor(sanity): update comments

* chore(sanity): remove import from format date. will use something else

* fix(sanity): allow uppercase characters in version identifiers

* feat(sanity): add tag to list document versions request

* feat(corel): integrate bundles store (#7040)

* feat(corel): add bundles store

* feat(corel): doc and structure updates (#7039)

* docs(sanity): update comment on getAllVersionsOfDocument

* fix(sanity): listing existing versions didn't account for published

* chore(sanity): move latest version up (temp)

* feat(sanity): update navigation of perspective + add "current badge"

* feat(sanity): add global version navigation

* refactor(sanity): hide document version picker, update the document icon

* feat(sanity): update studio nav bar (reduce create button + spacing)

* chore(sanity): general cleanup

* feat(sanity): add version provider, hide only the version picker in document

* chore(sanity): clean up version context

* chore(sanity): clean up, move components & files to single folder

* chore(sanity): clean up, move components & files to single folder

* chore(sanity): add ready button to document footer

* refactor(sanity): remove isVersion and add frontend guardrails

* chore(sanity): clean duplicate component

* chore(sanity): clean up missing dependencies

* refactor(sanity): update button

* refactor(sanity): clear up naming

* chore(sanity): hide ready

* chore(sanity): ready todos

* feat(sanity): add bundle modal + update colours + remove add new version from doc

* refactor(sanity): rename from release to bundle

* refactor(sanity): clean up code for types (bundleform)

* refactor(sanity): update method

* refactor(sanity): update drafts name (draft -> drafts) in LATEST & context

* refactor(sanity): use handleBundleChange instead of two separate methods

* refactor(sanity): update title to use LATEST const

* refactor(sanity): update draft filtering and checks (global and document level)

* refactor(sanity): update context to rely on router & update query to match existing bundles (MOCK)

* refactor(sanity): update handle methods to have callback

* feat(sanity): add guardrails for title naming on bundle create

* docs(sanity): update comments to potentially move things to plugin

* refactor(sanity): merge version badges & icons

* refactor(sanity): use speakingurl instead of toSlug

* feat(releases): initialising releases plugin (#7048)

* docs(sanity): update comment on getAllVersionsOfDocument

* fix(sanity): listing existing versions didn't account for published

* chore(sanity): move latest version up (temp)

* feat(sanity): update navigation of perspective + add "current badge"

* feat(sanity): add global version navigation

* refactor(sanity): hide document version picker, update the document icon

* feat(sanity): update studio nav bar (reduce create button + spacing)

* chore(sanity): general cleanup

* feat(sanity): add version provider, hide only the version picker in document

* feat(releases): create releases tool as default plugin

* feat(releases): styling and components for basic releases overview

* feat(releases): adding release detail page and routing

* feat(releases): uri decoding releaseID

* chore(sanity): clean up version context

* chore(sanity): clean up, move components & files to single folder

* chore(sanity): clean up, move components & files to single folder

* feat(corel): add bundles store

* chore(sanity): add ready button to document footer

* refactor(sanity): remove isVersion and add frontend guardrails

* chore(sanity): clean duplicate component

* chore(sanity): clean up missing dependencies

* refactor(sanity): update button

* chore(corel): use rxjs in bundlesStore listener

* refactor(sanity): clear up naming

* chore(sanity): hide ready

* chore(sanity): ready todos

* feat(corel): add retry to initialFetch

* feat(releases): remove the ready concepts

* feat(corel): include useBundleOperations and story

* fix(corel): update imports paths

* feat(sanity): add bundle modal + update colours + remove add new version from doc

* refactor(sanity): rename from release to bundle

* refactor(sanity): clean up code for types (bundleform)

* refactor(releases): refactor releases to bundles

* feat(releases): using bundle ops to fetch and create add-on bundles

* refactor(releases): type guard for at least one bundle returned

* fix(releases): fixing issue where overview header not hidden when no bundles

* feat(releases): search filters list of releases

* refactor(releases): minor refactor of hooks in BundlesOverview

* refactor(sanity): update method

* feat(releases): addijg concept loosely of bundle documents

* feat(releases): testing for BundlesTable

* feat(releases): testing for BundlesTable

* feat(releases): testing for releases overview page

* refactor(release): fixing types on the custom queries

* refactor(releases): Creating BundleIcon

* refactor(releases): minor refactor and tidy to component logic

* refactor(releases): minor format changes

* refactor(releases): create bundle dialog creates itself and then returns

* refactor(releases): create bundle dialog creates itself and then returns

* feat(releases): minor style update to match prototype on the mode picker

* feat(releases): minor style update to match prototype on the mode picker

* refactor(releases): moving search into table header as per prototype

* chore(corel): add eslintrc change, remove progress icon and update types (#7050)

---------

Co-authored-by: RitaDias <anarita151@gmail.com>
Co-authored-by: Pedro Bonamin <pedrobonamin@gmail.com>
Co-authored-by: Pedro Bonamin <46196328+pedrobonamin@users.noreply.github.com>

* refactor(releases): removing shortRelativeDate (#7051)

* chore(corel): add bundles provider (#7054)

* chore(corel): add bundles provider

* fix(corel): update bundles overview tests

* feat(COREL): update types to bundle + add create bundle functionality (#7047)

* refactor(sanity): update types to bundle

* feat(sanity): add ability to create releases from dialog + update types

* feat(sanity): update list on global and document to use store

* feat(sanity): update types, add icon and hue picker to bundles, update uis

* feat(sanity): add date picker to bundleform

* refactor(sanity): update publishAt fields in menus

* refactor(sanity): update type in dummyGetter

* chore(sanity): remove BUNDLES const

* chore(sanity): update LATEST type to Partial

* chore(sanity): update validation for bundle date creation

* chore(sanity): clean up code

* refactor(sanity): add archived filter

* refactor(sanity): make single bundle menu + clean up

* chore(sanity): add missing properties

* feat(sanity): add loading & remove unused code

* feat(sanity): add loading to document version, update filter

* chore(sanity): rename VersionBadge to BundleBadge

* chore(sanity): clean up methods and style

* chore(sanity): remove unused import

* refactor(sanity): use Bundle provider instead of store

* chore(sanity): update bundleRow to use the new name for badge

* chore(sanity): clean up code

* refactor(sanity): re-add oncancel and oncreate props in dialog

* refactor(sanity): add scroll to bundle menu

* refactor(sanity): move from archived to archivedAt

* refactor(sanity): only show the list of bundles if it has more than published / drafts

* chore(sanity): remove warnings comments

* refactor(COREL): refactor version context & renaming (#7071)

* feat(sanity): update types, add icon and hue picker to bundles, update uis

* feat(sanity): add date picker to bundleform

* refactor(sanity): update publishAt fields in menus

* chore(sanity): update LATEST type to Partial

* refactor(sanity): make single bundle menu + clean up

* chore(sanity): remove warnings comments

* refactor(sanity): move version provider to its own file + organise + add useVersion

* refactor(sanity): remove provider + context, move logic to hook

* chore(sanity): remove comments + change name from setCurrentVersion to setGlobalBundle

* chore(sanity): rename useVersion to useBundle

* chore(sanity): update comments

* chore(sanity): Rename currentVersion

* refactor(sanity): rename currentBudnle and setGlobalBundle

* chore(sanity): rename versions to bundles in core directory

* chore(sanity): rename to GlobalPerspectiveMenu and move to navbar directory

* chore(sanity): rename to DocumentPerspectiveMenu and move to navbar directory

* chore(sanity): remove isDraft from usePerspective, add new util

* refactor(sanity): remove isDraft

* refactor(sanity): use current global in the bundle badge

* fix(corel): update uses of collate, add typeguard for bundles and add release tag to addonDatasetProvider (#7074)

* fix(corel): update uses of collate, add typeguard for bundles and add release tag to addonDatasetProvider

* fix(corel): update imports for bundleRow test

* chore(corel): disable publish tests

* fix(corel): update failing tests

* fix(corel): update bundle actions definition

* fix(corel): remove not used file

* fix(corel): update DocumentHeaderTitle test

* fix(corel): fix lint issues

* feat(releases): archive and unarchive releases (#7072)

* refactor(sanity): update types to bundle

* feat(sanity): add ability to create releases from dialog + update types

* feat(sanity): update list on global and document to use store

* feat(sanity): update types, add icon and hue picker to bundles, update uis

* feat(sanity): add date picker to bundleform

* refactor(sanity): update publishAt fields in menus

* refactor(sanity): update type in dummyGetter

* chore(sanity): remove BUNDLES const

* chore(sanity): update LATEST type to Partial

* chore(sanity): update validation for bundle date creation

* chore(sanity): clean up code

* refactor(sanity): add archived filter

* refactor(sanity): make single bundle menu + clean up

* chore(sanity): add missing properties

* feat(sanity): add loading & remove unused code

* feat(sanity): add loading to document version, update filter

* chore(sanity): rename VersionBadge to BundleBadge

* chore(sanity): clean up methods and style

* chore(sanity): remove unused import

* refactor(sanity): use Bundle provider instead of store

* chore(sanity): update bundleRow to use the new name for badge

* chore(sanity): clean up code

* refactor(sanity): re-add oncancel and oncreate props in dialog

* refactor(sanity): add scroll to bundle menu

* refactor(sanity): move from archived to archivedAt

* refactor(sanity): move version provider to its own file + organise + add useVersion

* refactor(sanity): remove provider + context, move logic to hook

* chore(sanity): remove comments + change name from setCurrentVersion to setGlobalBundle

* chore(sanity): rename useVersion to useBundle

* chore(sanity): update comments

* chore(sanity): Rename currentVersion

* refactor(sanity): rename currentBudnle and setGlobalBundle

* chore(sanity): rename versions to bundles in core directory

* chore(sanity): rename to GlobalPerspectiveMenu and move to navbar directory

* chore(sanity): rename to DocumentPerspectiveMenu and move to navbar directory

* feat(releases): support for (un)archive

* chore(releases): updating testing for BundlesOverview

* chore(releases): new tests for BundleMenuButton and (un)archive

* fix(releases): disabling bundle menu btn when action is performed

---------

Co-authored-by: RitaDias <anarita151@gmail.com>
Co-authored-by: RitaDias <rita@sanity.io>

* refactor(sanity): move bundle metadata store to resource cache

Co-authored-by: Pedro Bonamin <pedrobonamin@gmail.com>

* feat(corel): remove version documents when deleting bundle (#7107)

* feat(corel): releases details screen. (#7092)

* fix(corel): update releases router to use bundle name

* feat(corel): add bundle details screen

* chore: update @sanity/icons package

* feat(corel): releases DocumentRow updates

* fix(corel): update BundleIconEditorPicker types

* fix(corel): update bundles table test

* fix(corel): add filter in documents table

* chore(corel): update file location and naming

* feat(corel): add document actions to document row

* fix(core): remove references to bundles in useListener hook

* fix(corel): add search params to IntentLink

* chore(corel): remove router type change and restore previous pnpm-lock file

* fix(corel): update bundlesTable tests

* test(COREL): add core tests (#7119)

* test(sanity): try to find solution for test

* wip: add theme provider to test

* test(sanity): add test to bundleForm & add createWrapper in core

* test(sanity): add test to BundleIconEditorPicker

* chore(sanity): update createWrapper

* test(sanity): update bundleForm test

* test(sanity) add createBundleDialog tests

* test(sanity) add BundleMenu tests

* refactor(sanity): add prop to createWrapper to access TestProviderOptions

---------

Co-authored-by: Ash <ash@sanity.io>

* feat(sanity): #TEMPORARY #DELETE handle versions in `DocumentPaneProvider`

* fix(sanity): avoid fetching in a loop

* fix(corel): refactor version history to fetch all release documents (#7150)

* refactor(COREL): update title & date validation (#7148)

* refactor(sanity): refactor error setting

* refactor(sanity): refactor title error setting

* refactor(sanity): refactor date error setting

* docs(sanity): update comments

* chore(sanity): clean up

* test(sanity): update bundleiconeditorpicker test

* test(sanity): update bundleForm test

* test(sanity): update bundleForm & createBundleDialog test

* test: update form and update tests

* chore: hide publish date (#7162)

* feat(releases): last edited and document count in bundle (#7124)

* feat(sanity): add support for sticky query params

* feat(sanity): add 'perspective' dropdown

* feat(sanity): include `_version` field in search results

* feat(types): add `_version` field to `SanityDocument` and `SanityDocumentLike`

* fix(sanity): global perspective state restoration

* feat(sanity): hardcode `summerDrop` and `autumnDrop` bundles

* wip: allow pairs to include multiple drafts

* feat(sanity): support versioned document ids in `getPublishedId` function

* feat(sanity): add `_version` field to preview observation

* feat(sanity): reflect checked out bundle in document lists and list previews

* debug(sanity): add version debug output to list previews

* feat(sanity): add action to create new version based on an doc id

* feat(sanity): update document title + version popover - add new and from existing versions

* chore(sanity): move versions menu to versions folder

* chore(sanity): update check for checking version

* fix(sanity): ability to add new versions to doc

* feat(sanity): add dumb bundle and version data, add icons and hues

* feat(sanity): update styles and don't rely on random

* update isVersion

* docs(sanity): update comments

* feat(sanity): add "latest version" menu button

* refactor(sanity): update comments

* chore(sanity): remove import from format date. will use something else

* fix(sanity): allow uppercase characters in version identifiers

* feat(sanity): add tag to list document versions request

* feat(corel): integrate bundles store (#7040)

* feat(corel): add bundles store

* feat(corel): doc and structure updates (#7039)

* docs(sanity): update comment on getAllVersionsOfDocument

* fix(sanity): listing existing versions didn't account for published

* chore(sanity): move latest version up (temp)

* feat(sanity): update navigation of perspective + add "current badge"

* feat(sanity): add global version navigation

* refactor(sanity): hide document version picker, update the document icon

* feat(sanity): update studio nav bar (reduce create button + spacing)

* chore(sanity): general cleanup

* feat(sanity): add version provider, hide only the version picker in document

* chore(sanity): clean up version context

* chore(sanity): clean up, move components & files to single folder

* chore(sanity): clean up, move components & files to single folder

* chore(sanity): add ready button to document footer

* refactor(sanity): remove isVersion and add frontend guardrails

* chore(sanity): clean duplicate component

* chore(sanity): clean up missing dependencies

* refactor(sanity): update button

* refactor(sanity): clear up naming

* chore(sanity): hide ready

* chore(sanity): ready todos

* feat(sanity): add bundle modal + update colours + remove add new version from doc

* refactor(sanity): rename from release to bundle

* refactor(sanity): clean up code for types (bundleform)

* refactor(sanity): update method

* refactor(sanity): update drafts name (draft -> drafts) in LATEST & context

* refactor(sanity): use handleBundleChange instead of two separate methods

* refactor(sanity): update title to use LATEST const

* refactor(sanity): update draft filtering and checks (global and document level)

* refactor(sanity): update context to rely on router & update query to match existing bundles (MOCK)

* refactor(sanity): update handle methods to have callback

* feat(sanity): add guardrails for title naming on bundle create

* docs(sanity): update comments to potentially move things to plugin

* refactor(sanity): merge version badges & icons

* refactor(sanity): use speakingurl instead of toSlug

* feat(releases): initialising releases plugin (#7048)

* docs(sanity): update comment on getAllVersionsOfDocument

* fix(sanity): listing existing versions didn't account for published

* chore(sanity): move latest version up (temp)

* feat(sanity): update navigation of perspective + add "current badge"

* feat(sanity): add global version navigation

* refactor(sanity): hide document version picker, update the document icon

* feat(sanity): update studio nav bar (reduce create button + spacing)

* chore(sanity): general cleanup

* feat(sanity): add version provider, hide only the version picker in document

* feat(releases): create releases tool as default plugin

* feat(releases): styling and components for basic releases overview

* feat(releases): adding release detail page and routing

* feat(releases): uri decoding releaseID

* chore(sanity): clean up version context

* chore(sanity): clean up, move components & files to single folder

* chore(sanity): clean up, move components & files to single folder

* feat(corel): add bundles store

* chore(sanity): add ready button to document footer

* refactor(sanity): remove isVersion and add frontend guardrails

* chore(sanity): clean duplicate component

* chore(sanity): clean up missing dependencies

* refactor(sanity): update button

* chore(corel): use rxjs in bundlesStore listener

* refactor(sanity): clear up naming

* chore(sanity): hide ready

* chore(sanity): ready todos

* feat(corel): add retry to initialFetch

* feat(releases): remove the ready concepts

* feat(corel): include useBundleOperations and story

* fix(corel): update imports paths

* feat(sanity): add bundle modal + update colours + remove add new version from doc

* refactor(sanity): rename from release to bundle

* refactor(sanity): clean up code for types (bundleform)

* refactor(releases): refactor releases to bundles

* feat(releases): using bundle ops to fetch and create add-on bundles

* refactor(releases): type guard for at least one bundle returned

* fix(releases): fixing issue where overview header not hidden when no bundles

* feat(releases): search filters list of releases

* refactor(releases): minor refactor of hooks in BundlesOverview

* refactor(sanity): update method

* feat(releases): addijg concept loosely of bundle documents

* feat(releases): testing for BundlesTable

* feat(releases): testing for BundlesTable

* feat(releases): testing for releases overview page

* refactor(release): fixing types on the custom queries

* refactor(releases): Creating BundleIcon

* refactor(releases): minor refactor and tidy to component logic

* refactor(releases): minor format changes

* refactor(releases): create bundle dialog creates itself and then returns

* refactor(releases): create bundle dialog creates itself and then returns

* feat(releases): minor style update to match prototype on the mode picker

* feat(releases): minor style update to match prototype on the mode picker

* refactor(releases): moving search into table header as per prototype

* chore(corel): add eslintrc change, remove progress icon and update types (#7050)

---------

Co-authored-by: RitaDias <anarita151@gmail.com>
Co-authored-by: Pedro Bonamin <pedrobonamin@gmail.com>
Co-authored-by: Pedro Bonamin <46196328+pedrobonamin@users.noreply.github.com>

* refactor(releases): removing shortRelativeDate (#7051)

* chore(corel): add bundles provider (#7054)

* chore(corel): add bundles provider

* fix(corel): update bundles overview tests

* feat(COREL): update types to bundle + add create bundle functionality (#7047)

* refactor(sanity): update types to bundle

* feat(sanity): add ability to create releases from dialog + update types

* feat(sanity): update list on global and document to use store

* feat(sanity): update types, add icon and hue picker to bundles, update uis

* feat(sanity): add date picker to bundleform

* refactor(sanity): update publishAt fields in menus

* refactor(sanity): update type in dummyGetter

* chore(sanity): remove BUNDLES const

* chore(sanity): update LATEST type to Partial

* chore(sanity): update validation for bundle date creation

* chore(sanity): clean up code

* refactor(sanity): add archived filter

* refactor(sanity): make single bundle menu + clean up

* chore(sanity): add missing properties

* feat(sanity): add loading & remove unused code

* feat(sanity): add loading to document version, update filter

* chore(sanity): rename VersionBadge to BundleBadge

* chore(sanity): clean up methods and style

* chore(sanity): remove unused import

* refactor(sanity): use Bundle provider instead of store

* chore(sanity): update bundleRow to use the new name for badge

* chore(sanity): clean up code

* refactor(sanity): re-add oncancel and oncreate props in dialog

* refactor(sanity): add scroll to bundle menu

* refactor(sanity): move from archived to archivedAt

* refactor(sanity): only show the list of bundles if it has more than published / drafts

* chore(sanity): remove warnings comments

* refactor(COREL): refactor version context & renaming (#7071)

* feat(sanity): update types, add icon and hue picker to bundles, update uis

* feat(sanity): add date picker to bundleform

* refactor(sanity): update publishAt fields in menus

* chore(sanity): update LATEST type to Partial

* refactor(sanity): make single bundle menu + clean up

* chore(sanity): remove warnings comments

* refactor(sanity): move version provider to its own file + organise + add useVersion

* refactor(sanity): remove provider + context, move logic to hook

* chore(sanity): remove comments + change name from setCurrentVersion to setGlobalBundle

* chore(sanity): rename useVersion to useBundle

* chore(sanity): update comments

* chore(sanity): Rename currentVersion

* refactor(sanity): rename currentBudnle and setGlobalBundle

* chore(sanity): rename versions to bundles in core directory

* chore(sanity): rename to GlobalPerspectiveMenu and move to navbar directory

* chore(sanity): rename to DocumentPerspectiveMenu and move to navbar directory

* chore(sanity): remove isDraft from usePerspective, add new util

* refactor(sanity): remove isDraft

* refactor(sanity): use current global in the bundle badge

* fix(corel): update uses of collate, add typeguard for bundles and add release tag to addonDatasetProvider (#7074)

* fix(corel): update uses of collate, add typeguard for bundles and add release tag to addonDatasetProvider

* fix(corel): update imports for bundleRow test

* chore(corel): disable publish tests

* fix(corel): update failing tests

* fix(corel): update bundle actions definition

* fix(corel): remove not used file

* fix(corel): update DocumentHeaderTitle test

* fix(corel): fix lint issues

* feat(releases): archive and unarchive releases (#7072)

* refactor(sanity): update types to bundle

* feat(sanity): add ability to create releases from dialog + update types

* feat(sanity): update list on global and document to use store

* feat(sanity): update types, add icon and hue picker to bundles, update uis

* feat(sanity): add date picker to bundleform

* refactor(sanity): update publishAt fields in menus

* refactor(sanity): update type in dummyGetter

* chore(sanity): remove BUNDLES const

* chore(sanity): update LATEST type to Partial

* chore(sanity): update validation for bundle date creation

* chore(sanity): clean up code

* refactor(sanity): add archived filter

* refactor(sanity): make single bundle menu + clean up

* chore(sanity): add missing properties

* feat(sanity): add loading & remove unused code

* feat(sanity): add loading to document version, update filter

* chore(sanity): rename VersionBadge to BundleBadge

* chore(sanity): clean up methods and style

* chore(sanity): remove unused import

* refactor(sanity): use Bundle provider instead of store

* chore(sanity): update bundleRow to use the new name for badge

* chore(sanity): clean up code

* refactor(sanity): re-add oncancel and oncreate props in dialog

* refactor(sanity): add scroll to bundle menu

* refactor(sanity): move from archived to archivedAt

* refactor(sanity): move version provider to its own file + organise + add useVersion

* refactor(sanity): remove provider + context, move logic to hook

* chore(sanity): remove comments + change name from setCurrentVersion to setGlobalBundle

* chore(sanity): rename useVersion to useBundle

* chore(sanity): update comments

* chore(sanity): Rename currentVersion

* refactor(sanity): rename currentBudnle and setGlobalBundle

* chore(sanity): rename versions to bundles in core directory

* chore(sanity): rename to GlobalPerspectiveMenu and move to navbar directory

* chore(sanity): rename to DocumentPerspectiveMenu and move to navbar directory

* feat(releases): support for (un)archive

* chore(releases): updating testing for BundlesOverview

* chore(releases): new tests for BundleMenuButton and (un)archive

* fix(releases): disabling bundle menu btn when action is performed

---------

Co-authored-by: RitaDias <anarita151@gmail.com>
Co-authored-by: RitaDias <rita@sanity.io>

* refactor(sanity): move bundle metadata store to resource cache

Co-authored-by: Pedro Bonamin <pedrobonamin@gmail.com>

* feat(releases): bundle store starts to support bundle metadata

* feat(releases): loading state only on initial fetch of metadata

* feat(releases): added created at col

* feat(releases): patching mutated bundle slugs

* feat(releases): aggregate all metadata listening calls

* fix(releases): fixing empty observed result state

* refactor(releases): move to slugs; split agg from createBundleStore

* fix(deps): Update dev-non-major (#7100)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency get-it to ^8.6.3 (#7108)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency @sanity/client to ^6.20.2 (#7111)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* refactor(sanity): remove "features" (#7097)

* fix(deps): update dependency @sanity/client to ^6.20.2 (#7110)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency @sanity/bifur-client to ^0.4.1 (#7102)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency @sanity/ui to ^2.6.3 (#7104)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency react-rx to ^3.1.1 (#7113)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @sanity/tsdoc to v1.0.83 (#7080)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency esbuild to ^0.23.0 (#7106)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* test(cli): use separate tarball location for cursor export test (#7118)

* fix(core): minor typo fix in i18n comment (#7115)

* fix(core): minor typo fix in i18n comment

* refactor(structure): add missing space to tsdoc

* feat(router): update router to support query params in intent links (#7095)

* feat(router): update router to support query params in intent links

* fix(core): update RouterStateEvent interface

* chore(core): add tests for query param intents

* feat(sanity): add 'perspective' dropdown

* fix(sanity): global perspective state restoration

* feat(sanity): hardcode `summerDrop` and `autumnDrop` bundles

* feat(sanity): reflect checked out bundle in document lists and list previews

* debug(sanity): add version debug output to list previews

* feat(sanity): add action to create new version based on an doc id

* feat(sanity): update document title + version popover - add new and from existing versions

* chore(sanity): move versions menu to versions folder

* chore(sanity): update check for checking version

* fix(sanity): ability to add new versions to doc

* feat(sanity): add dumb bundle and version data, add icons and hues

* feat(sanity): update styles and don't rely on random

* update isVersion

* docs(sanity): update comments

* feat(sanity): add "latest version" menu button

* refactor(sanity): update comments

* chore(sanity): remove import from format date. will use something else

* fix(sanity): allow uppercase characters in version identifiers

* feat(sanity): add tag to list document versions request

* feat(corel): integrate bundles store (#7040)

* feat(corel): add bundles store

* feat(corel): doc and structure updates (#7039)

* docs(sanity): update comment on getAllVersionsOfDocument

* fix(sanity): listing existing versions didn't account for published

* chore(sanity): move latest version up (temp)

* feat(sanity): update navigation of perspective + add "current badge"

* feat(sanity): add global version navigation

* refactor(sanity): hide document version picker, update the document icon

* feat(sanity): update studio nav bar (reduce create button + spacing)

* chore(sanity): general cleanup

* feat(sanity): add version provider, hide only the version picker in document

* chore(sanity): clean up version context

* chore(sanity): clean up, move components & files to single folder

* chore(sanity): clean up, move components & files to single folder

* chore(sanity): add ready button to document footer

* refactor(sanity): remove isVersion and add frontend guardrails

* chore(sanity): clean duplicate component

* chore(sanity): clean up missing dependencies

* refactor(sanity): update button

* refactor(sanity): clear up naming

* chore(sanity): hide ready

* chore(sanity): ready todos

* feat(sanity): add bundle modal + update colours + remove add new version from doc

* refactor(sanity): rename from release to bundle

* refactor(sanity): clean up code for types (bundleform)

* refactor(sanity): update method

* refactor(sanity): update drafts name (draft -> drafts) in LATEST & context

* refactor(sanity): use handleBundleChange instead of two separate methods

* refactor(sanity): update title to use LATEST const

* refactor(sanity): update draft filtering and checks (global and document level)

* refactor(sanity): update context to rely on router & update query to match existing bundles (MOCK)

* refactor(sanity): update handle methods to have callback

* feat(sanity): add guardrails for title naming on bundle create

* docs(sanity): update comments to potentially move things to plugin

* refactor(sanity): merge version badges & icons

* refactor(sanity): use speakingurl instead of toSlug

* feat(releases): initialising releases plugin (#7048)

* docs(sanity): update comment on getAllVersionsOfDocument

* fix(sanity): listing existing versions didn't account for published

* chore(sanity): move latest version up (temp)

* feat(sanity): update navigation of perspective + add "current badge"

* feat(sanity): add global version navigation

* refactor(sanity): hide document version picker, update the document icon

* feat(sanity): update studio nav bar (reduce create button + spacing)

* chore(sanity): general cleanup

* feat(sanity): add version provider, hide only the version picker in document

* feat(releases): create releases tool as default plugin

* feat(releases): styling and components for basic releases overview

* feat(releases): adding release detail page and routing

* feat(releases): uri decoding releaseID

* chore(sanity): clean up version context

* chore(sanity): clean up, move components & files to single folder

* chore(sanity): clean up, move components & files to single folder

* feat(corel): add bundles store

* chore(sanity): add ready button to document footer

* refactor(sanity): remove isVersion and add frontend guardrails

* chore(sanity): clean duplicate component

* chore(sanity): clean up missing dependencies

* refactor(sanity): update button

* chore(corel): use rxjs in bundlesStore listener

* refactor(sanity): clear up naming

* chore(sanity): hide ready

* chore(sanity): ready todos

* feat(corel): add retry to initialFetch

* feat(releases): remove the ready concepts

* feat(corel): include useBundleOperations and story

* fix(corel): update imports paths

* feat(sanity): add bundle modal + update colours + remove add new version from doc

* refactor(sanity): rename from release to bundle

* refactor(sanity): clean up code for types (bundleform)

* refactor(releases): refactor releases to bundles

* feat(releases): using bundle ops to fetch and create add-on bundles

* refactor(releases): type guard for at least one bundle returned

* fix(releases): fixing issue where overview header not hidden when no bundles

* feat(releases): search filters list of releases

* refactor(releases): minor refactor of hooks in BundlesOverview

* refactor(sanity): update method

* feat(releases): addijg concept loosely of bundle documents

* feat(releases): testing for BundlesTable

* feat(releases): testing for BundlesTable

* feat(releases): testing for releases overview page

* refactor(release): fixing types on the custom queries

* refactor(releases): Creating BundleIcon

* refactor(releases): minor refactor and tidy to component logic

* refactor(releases): minor format changes

* refactor(releases): create bundle dialog creates itself and then returns

* refactor(releases): create bundle dialog creates itself and then returns

* feat(releases): minor style update to match prototype on the mode picker

* feat(releases): minor style update to match prototype on the mode picker

* refactor(releases): moving search into table header as per prototype

* chore(corel): add eslintrc change, remove progress icon and update types (#7050)

---------

Co-authored-by: RitaDias <anarita151@gmail.com>
Co-authored-by: Pedro Bonamin <pedrobonamin@gmail.com>
Co-authored-by: Pedro Bonamin <46196328+pedrobonamin@users.noreply.github.com>

* refactor(releases): removing shortRelativeDate (#7051)

* chore(corel): add bundles provider (#7054)

* chore(corel): add bundles provider

* fix(corel): update bundles overview tests

* feat(COREL): update types to bundle + add create bundle functionality (#7047)

* refactor(sanity): update types to bundle

* feat(sanity): add ability to create releases from dialog + update types

* feat(sanity): update list on global and document to use store

* feat(sanity): update types, add icon and hue picker to bundles, update uis

* feat(sanity): add date picker to bundleform

* refactor(sanity): update publishAt fields in menus

* refactor(sanity): update type in dummyGetter

* chore(sanity): remove BUNDLES const

* chore(sanity): update LATEST type to Partial

* chore(sanity): update validation for bundle date creation

* chore(sanity): clean up code

* refactor(sanity): add archived filter

* refactor(sanity): make single bundle menu + clean up

* chore(sanity): add missing properties

* feat(sanity): add loading & remove unused code

* feat(sanity): add loading to document version, update filter

* chore(sanity): rename VersionBadge to BundleBadge

* chore(sanity): clean up methods and style

* chore(sanity): remove unused import

* refactor(sanity): use Bundle provider instead of store

* chore(sanity): update bundleRow to use the new name for badge

* chore(sanity): clean up code

* refactor(sanity): re-add oncancel and oncreate props in dialog

* refactor(sanity): add scroll to bundle menu

* refactor(sanity): move from archived to archivedAt

* refactor(sanity): only show the list of bundles if it has more than published / drafts

* chore(sanity): remove warnings comments

* refactor(COREL): refactor version context & renaming (#7071)

* feat(sanity): update types, add icon and hue picker to bundles, update uis

* feat(sanity): add date picker to bundleform

* refactor(sanity): update publishAt fields in menus

* chore(sanity): update LATEST type to Partial

* refactor(sanity): make single bundle menu + clean up

* chore(sanity): remove warnings comments

* refactor(sanity): move version provider to its own file + organise + add useVersion

* refactor(sanity): remove provider + context, move logic to hook

* chore(sanity): remove comments + change name from setCurrentVersion to setGlobalBundle

* chore(sanity): rename useVersion to useBundle

* chore(sanity): update comments

* chore(sanity): Rename currentVersion

* refactor(sanity): rename currentBudnle and setGlobalBundle

* chore(sanity): rename versions to bundles in core directory

* chore(sanity): rename to GlobalPerspectiveMenu and move to navbar directory

* chore(sanity): rename to DocumentPerspectiveMenu and move to navbar directory

* chore(sanity): remove isDraft from usePerspective, add new util

* refactor(sanity): remove isDraft

* refactor(sanity): use current global in the bundle badge

* fix(corel): update uses of collate, add typeguard for bundles and add release tag to addonDatasetProvider (#7074)

* fix(corel): update uses of collate, add typeguard for bundles and add release tag to addonDatasetProvider

* fix(corel): update imports for bundleRow test

* chore(corel): disable publish tests

* fix(corel): update failing tests

* fix(corel): update bundle actions definition

* fix(corel): remove not used file

* fix(corel): update DocumentHeaderTitle test

* fix(corel): fix lint issues

* feat(releases): archive and unarchive releases (#7072)

* refactor(sanity): update types to bundle

* feat(sanity): add ability to create releases from dialog + update types

* feat(sanity): update list on global and document to use store

* feat(sanity): update types, add icon and hue picker to bundles, update uis

* feat(sanity): add date picker to bundleform

* refactor(sanity): update publishAt fields in menus

* refactor(sanity): update type in dummyGetter

* chore(sanity): remove BUNDLES const

* chore(sanity): update LATEST type to Partial

* chore(sanity): update validation for bundle date creation

* chore(sanity): clean up code

* refactor(sanity): add archived filter

* refactor(sanity): make single bundle menu + clean up

* chore(sanity): add missing properties

* feat(sanity): add loading & remove unused code

* feat(sanity): add loading to document version, update filter

* chore(sanity): rename VersionBadge to BundleBadge

* chore(sanity): clean up methods and style

* chore(sanity): remove unused import

* refactor(sanity): use Bundle provider instead of store

* chore(sanity): update bundleRow to use the new name for badge

* chore(sanity): clean up code

* refactor(sanity): re-add oncancel and oncreate props in dialog

* refactor(sanity): add scroll to bundle menu

* refactor(sanity): move from archived to archivedAt

* refactor(sanity): move version provider to its own file + organise + add useVersion

* refactor(sanity): remove provider + context, move logic to hook

* chore(sanity): remove comments + change name from setCurrentVersion to setGlobalBundle

* chore(sanity): rename useVersion to useBundle

* chore(sanity): update comments

* chore(sanity): Rename currentVersion

* refactor(sanity): rename currentBudnle and setGlobalBundle

* chore(sanity): rename versions to bundles in core directory

* chore(sanity): rename to GlobalPerspectiveMenu and move to navbar directory

* chore(sanity): rename to DocumentPerspectiveMenu and move to navbar directory

* feat(releases): support for (un)archive

* chore(releases): updating testing for BundlesOverview

* chore(releases): new tests for BundleMenuButton and (un)archive

* fix(releases): disabling bundle menu btn when action is performed

---------

Co-authored-by: RitaDias <anarita151@gmail.com>
Co-authored-by: RitaDias <rita@sanity.io>

* refactor(sanity): move bundle metadata store to resource cache

Co-authored-by: Pedro Bonamin <pedrobonamin@gmail.com>

* refactor(releases): only adding metadata context when not already existing

* refactor(releases): only adding metadata context when not already existing

* refactor(releases): creating tableBundles in BundlesOverview

* refactor(releases): renaming projection of query for metadata

* chore(releases): code comments

* fix(releases): fixing issue with removing bundles from aggregator listener

* refactor(releases): nesting bundle doc metadata in TableBunde

* fix(corel): update releases router to use bundle name

* feat(corel): add bundle details screen

* chore: update @sanity/icons package

* feat(corel): releases DocumentRow updates

* fix(corel): update BundleIconEditorPicker types

* fix(corel): update bundles table test

* fix(corel): add filter in documents table

* chore(corel): update file location and naming

* feat(corel): add document actions to document row

* fix(core): remove references to bundles in useListener hook

* fix(corel): add search params to IntentLink

* chore(corel): remove router type change and restore previous pnpm-lock file

* fix(releases): fixing tests for BundlesTable

* fix(releases):adding tests for doc count and updated time to bundles table

* fix(corel): update bundlesTable tests

* fix(releases): fixing BundlesOverview tests

* feat(releases): delete bundle confirm lists document count in bundle

* refactor(releases): update BundlesMetadataContext to export interface

* fix(releases): fix BundlesTable tests

* refactor(releases): rename components and files to releases rather than bundles

* feat(releases): assigning authorId on release creation

* fix(releases): update BundleMenuButton test with hue and icon properties

* feat(releases): release detail delete uses documents count in bundle

* fix(releases): using short and temporal version of relative time

* refactor(releases): startWith to handle initial loading state on fetch

---------

Co-authored-by: Bjørge Næss <bjoerge@gmail.com>
Co-authored-by: Ash <ash@sanity.io>
Co-authored-by: RitaDias <anarita151@gmail.com>
Co-authored-by: Pedro Bonamin <46196328+pedrobonamin@users.noreply.github.com>
Co-authored-by: RitaDias <rita@sanity.io>
Co-authored-by: Pedro Bonamin <pedrobonamin@gmail.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Espen Hovlandsdal <espen@hovlandsdal.com>

* feat(corel): Add review changes screen  (#7155)

* fix(corel): add prepareForPreview in useDocumentPreviewValues

* feat(corel): add review changes screen

* fix(corel): update ReleaseReview to use new documents history data

* feat(corel): add published document listener to review changes screen

* feat(core): add new useObserveDocument hook

* feat(corel): move active screen state to query params

* chore(corel): make documentDiff component agnostic to releases

* fix(corel): update document diff is changed check

* fix(corel): update useObserveDocument hook, export it as unstable

* chore(corel): add tests to release review screen

* test(sanity): add tests

* chore(corel): rename bundle.name to bundle.slug (#7171)

* chore(corel): rename bundle.name to bundle.slug

* chore(corel): add migration script and handlers

* fix(corel): update BundleDocument interface definition

* refactor(COREL): refactor version context & renaming (#7071)

* feat(sanity): update types, add icon and hue picker to bundles, update uis

* feat(sanity): add date picker to bundleform

* refactor(sanity): update publishAt fields in menus

* chore(sanity): update LATEST type to Partial

* refactor(sanity): make single bundle menu + clean up

* chore(sanity): remove warnings comments

* refactor(sanity): move version provider to its own file + organise + add useVersion

* refactor(sanity): remove provider + context, move logic to hook

* chore(sanity): remove comments + change name from setCurrentVersion to setGlobalBundle

* chore(sanity): rename useVersion to useBundle

* chore(sanity): update comments

* chore(sanity): Rename currentVersion

* refactor(sanity): rename currentBudnle and setGlobalBundle

* chore(sanity): rename versions to bundles in core directory

* chore(sanity): rename to GlobalPerspectiveMenu and move to navbar directory

* chore(sanity): rename to DocumentPerspectiveMenu and move to navbar directory

* chore(sanity): remove isDraft from usePerspective, add new util

* refactor(sanity): remove isDraft

* refactor(sanity): use current global in the bundle badge

* fix(corel): update uses of collate, add typeguard for bundles and add release tag to addonDatasetProvider (#7074)

* fix(corel): update uses of collate, add typeguard for bundles and add release tag to addonDatasetProvider

* fix(corel): update imports for bundleRow test

* chore(corel): disable publish tests

* fix(corel): update failing tests

* fix(corel): update bundle actions definition

* fix(corel): remove not used file

* fix(corel): update DocumentHeaderTitle test

* fix(corel): fix lint issues

* feat(releases): archive and unarchive releases (#7072)

* refactor(sanity): update types to bundle

* feat(sanity): add ability to create releases from dialog + update types

* feat(sanity): update list on global and document to use store

* feat(sanity): update types, add icon and hue picker to bundles, update uis

* feat(sanity): add date picker to bundleform

* refactor(sanity): update publishAt fields in menus

* refactor(sanity): update type in dummyGetter

* chore(sanity): remove BUNDLES const

* chore(sanity): update LATEST type to Partial

* chore(sanity): update validation for bundle date creation

* chore(sanity): clean up code

* refactor(sanity): add archived filter

* refactor(sanity): make single bundle menu + clean up

* chore(sanity): add missing properties

* feat(sanity): add loading & remove unused code

* feat(sanity): add loading to document version, update filter

* chore(sanity): rename VersionBadge to BundleBadge

* chore(sanity): clean up methods and style

* chore(sanity): remove unused import

* refactor(sanity): use Bundle provider instead of store

* chore(sanity): update bundleRow to use the new name for badge

* chore(sanity): clean up code

* refactor(sanity): re-add oncancel and oncreate props in dialog

* refactor(sanity): add scroll to bundle menu

* refactor(sanity): move from archived to archivedAt

* refactor(sanity): move version provider to its own file + organise + add useVersion

* refactor(sanity): remove provider + context, move logic to hook

* chore(sanity): remove comments + change name from setCurrentVersion to setGlobalBundle

* chore(sanity): rename useVersion to useBundle

* chore(sanity): update comments

* chore(sanity): Rename currentVersion

* refactor(sanity): rename currentBudnle and setGlobalBundle

* chore(sanity): rename versions to bundles in core directory

* chore(sanity): rename to GlobalPerspectiveMenu and move to navbar directory

* chore(sanity): rename to DocumentPerspectiveMenu and move to navbar directory

* feat(releases): support for (un)archive

* chore(releases): updating testing for BundlesOverview

* chore(releases): new tests for BundleMenuButton and (un)archive

* fix(releases): disabling bundle menu btn when action is performed

---------

Co-authored-by: RitaDias <anarita151@gmail.com>
Co-authored-by: RitaDias <rita@sanity.io>

* refactor(sanity): move bundle metadata store to resource cache

Co-authored-by: Pedro Bonamin <pedrobonamin@gmail.com>

* feat(corel): remove version documents when deleting bundle (#7107)

* feat(corel): releases details screen. (#7092)

* fix(corel): update releases router to use bundle name

* feat(corel): add bundle details screen

* chore: update @sanity/icons package

* feat(corel): releases DocumentRow updates

* fix(corel): update BundleIconEditorPicker types

* fix(corel): update bundles table test

* fix(corel): add filter in documents table

* chore(corel): update file location and naming

* feat(corel): add document actions to document row

* fix(core): remove references to bundles in useListener hook

* fix(corel): add search params to IntentLink

* chore(corel): remove router type change and restore previous pnpm-lock file

* fix(corel): update bundlesTable tests

* test(COREL): add core tests (#7119)

* test(sanity): try to find solution for test

* wip: add theme provider to test

* test(sanity): add test to bundleForm & add createWrapper in core

* test(sanity): add test to BundleIconEditorPicker

* chore(sanity): update createWrapper

* test(sanity): update bundleForm test

* test(sanity) add createBundleDialog tests

* test(sanity) add BundleMenu tests

* refactor(sanity): add prop to createWrapper to access TestProviderOptions

---------

Co-authored-by: Ash <ash@sanity.io>

* feat(sanity): #TEMPORARY #DELETE handle versions in `DocumentPaneProvider`

* fix(sanity): avoid fetching in a loop

* fix(corel): refactor version history to fetch all release documents (#7150)

* refactor(COREL): update title & date validation (#7148)

* refactor(sanity): refactor error setting

* refactor(sanity): refactor title error setting

* refactor(sanity): refactor date error setting

* docs(sanity): update comments

* chore(sanity): clean up

* test(sanity): update bundleiconeditorpicker test

* test(sanity): update bundleForm test

* test(sanity): update bundleForm & createBundleDialog test

* test: update form and update tests

* chore: hide publish date (#7162)

* feat(releases): last edited and document count in bundle (#7124)

* feat(sanity): add support for sticky query params

* feat(sanity): add 'perspective' dropdown

* feat(sanity): include `_version` field in search results

* feat(types): add `_version` field to `SanityDocument` and `SanityDocumentLike`

* fix(sanity): global perspective state restoration

* feat(sanity): hardcode `summerDrop` and `autumnDrop` bundles

* wip: allow pairs to include multiple drafts

* feat(sanity): support versioned document ids in `getPublishedId` function

* feat(sanity): add `_version` field to preview observation

* feat(sanity): reflect checked out bundle in document lists and list previews

* debug(sanity): add version debug output to list previews

* feat(sanity): add action to create new version based on an doc id

* feat(sanity): update document title + version popover - add new and from existing versions

* chore(sanity): move versions menu to versions folder

* chore(sanity): update check for checking version

* fix(sanity): ability to add new versions to doc

* feat(sanity): add dumb bundle and version data, add icons and hues

* feat(sanity): update styles and don't rely on random

* update isVersion

* docs(sanity): update comments

* feat(sanity): add "latest version" menu button

* refactor(sanity): update comments

* chore(sanity): remove import from format date. will use something else

* fix(sanity): allow uppercase characters in version identifiers

* feat(sanity): add tag to list document versions request

* feat(corel): integrate bundles store (#7040)

* feat(corel): add bundles store

* feat(corel): doc and structure updates (#7039)

* docs(sanity): update comment on getAllVersionsOfDocument

* fix(sanity): listing existing versions didn't account for published

* chore(sanity): move latest version up (temp)

* feat(sanity): update navigation of perspective + add "current badge"

* feat(sanity): add global version navigation

* refactor(sanity): hide document version picker, update the document icon

* feat(sanity): update studio nav bar (reduce create button + spacing)

* chore(sanity): general cleanup

* feat(sanity): add version provider, hide only the version picker in document

* chore(sanity): clean up version context

* chore(sanity): clean up, move components & files to single folder

* chore(sanity): clean up, move components & files to single folder

* chore(sanity): add ready button to document footer

* refactor(sanity): remove isVersion and add frontend guardrails

* chore(sanity): clean duplicate component

* chore(sanity): clean up missing dependencies

* refactor(sanity): update button

* refactor(sanity): clear up naming

* chore(sanity): hide ready

* chore(sanity): ready todos

* feat(sanity): add bundle modal + update colours + remove add new version from doc

* refactor(sanity): rename from release to bundle

* refactor(sanity): clean up code for types (bundleform)

* refactor(sanity): update method

* refactor(sanity): update drafts name (draft -> drafts) in LATEST & context

* refactor(sanity): use handleBundleChange instead of two separate methods

* refactor(sanity): update title to use LATEST const

* refactor(sanity): update draft filtering and checks (global and document level)

* refactor(sanity): update context to rely on router & update query to match existing bundles (MOCK)

* refactor(sanity): update handle methods to have callback

* feat(sanity): add guardrails for title naming on bundle create

* docs(sanity): update comments to potentially move things to plugin

* refactor(sanity): merge version badges & icons

* refactor(sanity): use speakingurl instead of toSlug

* feat(releases): initialising releases plugin (#7048)

* docs(sanity): update comment on getAllVersionsOfDocument

* fix(sanity): listing existing versions didn't account for published

* chore(sanity): move latest version up (temp)

* feat(sanity): update navigation of perspective + add "current badge"

* feat(sanity): add global version navigation

* refactor(sanity): hide document version picker, update the document icon

* feat(sanity): update studio nav bar (reduce create button + spacing)

* chore(sanity): general cleanup

* feat(sanity): add version provider, hide only the version picker in document

* feat(releases): create releases tool as default plugin

* feat(releases): styling and components for basic releases overview

* feat(releases): adding release detail page and routing

* feat(releases): uri decoding releaseID

* chore(sanity): clean up version context

* chore(sanity): clean up, move components & files to single folder

* chore(sanity): clean up, move components & files to single folder

* feat(corel): add bundles store

* chore(sanity): add ready button to document footer

* refactor(sanity): remove isVersion and add frontend guardrails

* chore(sanity): clean duplicate component

* chore(sanity): clean up missing dependencies

* refactor(sanity): update button

* chore(corel): use rxjs in bundlesStore listener

* refactor(sanity): clear up naming

* chore(sanity): hide ready

* chore(sanity): ready todos

* feat(corel): add retry to initialFetch

* feat(releases): remove the ready concepts

* feat(corel): include useBundleOperations and story

* fix(corel): update imports paths

* feat(sanity): add bundle modal + update colours + remove add new version from doc

* refactor(sanity): rename from release to bundle

* refactor(sanity): clean up code for types (bundleform)

* refactor(releases): refactor releases to bundles

* feat(releases): using bundle ops to fetch and create add-on bundles

* refactor(releases): type guard for at least one bundle returned

* fix(releases): fixing issue where overview header not hidden when no bundles

* feat(releases): search filters list of releases

* refactor(releases): minor refactor of hooks in BundlesOverview

* refactor(sanity): update method

* feat(releases): addijg concept loosely of bundle documents

* feat(releases): testing for BundlesTable

* feat(releases): testing for BundlesTable

* feat(releases): testing for releases overview page

* refactor(release): fixing types on the custom queries

* refactor(releases): Creating BundleIcon

* refactor(releases): minor refactor and tidy to component logic

* refactor(releases): minor format changes

* refactor(releases): create bundle dialog creates itself and then returns

* refactor(releases): create bundle dialog creates itself and then returns

* feat(releases): minor style update to match prototype on the mode picker

* feat(releases): minor style update to match prototype on the mode picker

* refactor(releases): moving search into table header as per prototype

* chore(corel): add eslintrc change, remove progress icon and update types (#7050)

---------

Co-authored-by: RitaDias <anarita151@gmail.com>
Co-authored-by: Pedro Bonamin <pedrobonamin@gmail.com>
Co-authored-by: Pedro Bonamin <46196328+pedrobonamin@users.noreply.github.com>

* refactor(releases): removing shortRelativeDate (#7051)

* chore(corel): add bundles provider (#7054)

* chore(corel): add bundles provider

* fix(corel): update bundles overview tests

* feat(COREL): update types to bundle + add create bundle functionality (#7047)

* refactor(sanity): update types to bundle

* feat(sanity): add ability to create releases from dialog + update types

* feat(sanity): update list on global and document to use store

* feat(sanity): update types, add icon and hue picker to bundles, update uis

* feat(sanity): add date picker to bundleform

* refactor(sanity): update publishAt fields in menus

* refactor(sanity): update type in dummyGetter

* chore(sanity): remove BUNDLES const

* chore(sanity): update LATEST type to Partial

* chore(sanity): update validation for bundle date creation

* chore(sanity): clean up code

* refactor(sanity): add archived filter

* refactor(sanity): make single bundle menu + clean up

* chore(sanity): add missing properties

* feat(sanity): add loading & remove unused code

* feat(sanity): add loading to document version, update filter

* chore(sanity): rename VersionBadge to BundleBadge

* chore(sanity): clean up methods and style

* chore(sanity): remove unused import

* refactor(sanity): use Bundle provider instead of store

* chore(sanity): update bundleRow to use the new name for badge

* chore(sanity): clean up code

* refactor(sanity): re-add oncancel and oncreate props in dialog

* refactor(sanity): add scroll to bundle menu

* refactor(sanity): move from archived to archivedAt

* refactor(sanity): only show the list of bundles if it has more than published / drafts

* chore(sanity): remove warnings comments

* refactor(COREL): refactor version context & renaming (#7071)

* feat(sanity): update types, add icon and hue picker to bundles, update uis

* feat(sanity): add date picker to bundleform

* refactor(sanity): update publishAt fields in menus

* chore(sanity): update LATEST type to Partial

* refactor(sanity): make single bundle menu + clean up

* chore(sanity): remove warnings comments

* refactor(sanity): move version provider to its own file + organise + add useVersion

* refactor(sanity): remove provider + context, move logic to hook

* chore(sanity): remove comments + change name from setCurrentVersion to setGlobalBundle

* chore(sanity): rename useVersion to useBundle

* chore(sanity): update comments

* chore(sanity): Rename currentVersion

* refactor(sanity): rename currentBudnle and setGlobalBundle

* chore(sanity): rename versions to bundles in core directory

* chore(sanity): rename to GlobalPerspectiveMenu and move to navbar directory

* chore(sanity): rename to DocumentPerspectiveMenu and move to navbar directory

* chore(sanity): remove isDraft from usePerspective, add new util

* refactor(sanity): remove isDraft

* refactor(sanity): use current global in the bundle badge

* fix(corel): update uses of collate, add typeguard for bundles and add release tag to addonDatasetProvider (#7074)

* fix(corel): update uses of collate, add typeguard for bundles and add release tag to addonDatasetProvider

* fix(corel): update imports for bundleRow test

* chore(corel): disable publish tests

* fix(corel): update failing tests

* fix(corel): update bundle actions definition

* fix(corel): remove not used file

* fix(corel): update DocumentHeaderTitle test

* fix(corel): fix lint issues

* feat(releases): archive and unarchive releases (#7072)

* refactor(sanity): update types to bundle

* feat(sanity): add ability to create releases from dialog + update types

* feat(sanity): update list on global and document to use store

* feat(sanity): update types, add icon and hue picker to bundles, update uis

* feat(sanity): add date picker to bundleform

* refactor(sanity): update publishAt fields in menus

* refactor(sanity): update type in dummyGetter

* chore(sanity): remove BUNDLES const

* chore(sanity): update LATEST type to Partial

* chore(sanity): update validation for bundle date creation

* chore(sanity): clean up code

* refactor(sanity): add archived filter

* refactor(sanity): make single bundle menu + clean up

* chore(sanity): add missing properties

* feat(sanity): add loading & remove unused code

* feat(sanity): add loading to document version, update filter

* chore(sanity): rename VersionBadge to BundleBadge

* chore(sanity): clean up methods and style

* chore(sanity): remove unused import

* refactor(sanity): use Bundle provider instead of store

* chore(sanity): update bundleRow to use the new name for badge

* chore(sanity): clean up code

* refactor(sanity): re-add oncancel and oncreate props in dialog

* refactor(sanity): add scroll to bundle menu

* refactor(sanity): move from archived to archivedAt

* refactor(sanity): move version provider to its own file + organise + add useVersion

* refactor(sanity): remove provider + context, move logic to hook

* chore(sanity): remove comments + change name from setCurrentVersion to setGlobalBundle

* chore(sanity): rename useVersion to useBundle

* chore(sanity): update comments

* chore(sanity): Rename currentVersion

* refactor(sanity): rename currentBudnle and setGlobalBundle

* chore(sanity): rename versions to bundles in core directory

* chore(sanity): rename to GlobalPerspectiveMenu and move to navbar directory

* chore(sanity): rename to DocumentPerspectiveMenu and move to navbar directory

* feat(releases): support for (un)archive

* chore(releases): updating testing for BundlesOverview

* chore(releases): new tests for BundleMenuButton and (un)archive

* fix(releases): disabling bundle menu btn when action is performed

---------

Co-authored-by: RitaDias <anarita151@gmail.com>
Co-authored-by: RitaDias <rita@sanity.io>

* refactor(sanity): move bundle metadata store to resource cache

Co-authored-by: Pedro Bonamin <pedrobonamin@gmail.com>

* feat(releases): bundle store starts to support bundle metadata

* feat(releases): loading state only on initial fetch of metadata

* feat(releases): added created at col

* feat(releases): patching mutated bundle slugs

* feat(releases): aggregate all metadata listening calls

* fix(releases): fixing empty observed result state

* refactor(releases): move to slugs; split agg from createBundleStore

* fix(deps): Update dev-non-major (#7100)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency get-it to ^8.6.3 (#7108)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency @sanity/client to ^6.20.2 (#7111)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* refactor(sanity): remove "features" (#7097)

* fix(deps): update dependency @sanity/client to ^6.20.2 (#7110)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency @sanity/bifur-client to ^0.4.1 (#7102)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency @sanity/ui to ^2.6.3 (#7104)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency react-rx to ^3.1.1 (#7113)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @sanity/tsdoc to v1.0.83 (#7080)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency esbuild to ^0.23.0 (#7106)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* test(cli): use separate tarball location for cursor export test (#7118)

* fix(core): minor typo fix in i18n comment (#7115)

* fix(core): minor typo fix in i18n comment

* refactor(structure): add missing space to tsdoc

* feat(router): update router to support query params in intent links (#7095)

* feat(router): update router to support query params in intent links

* fix(core): update RouterStateEvent interface

* chore(core): add tests for query param intents

* feat(sanity): add 'perspective' dropdown

* fix(sanity): global perspective state restoration

* feat(sanity): hardcode `summerDrop` and `autumnDrop` bundles

* feat(sanity): reflect checked out bundle in document lists and list previews

* debug(sanity): add version debug output to list previews

* feat(sanity): add action to create new version based on an doc id

* feat(sanity): update document title + version popover - add new and from existing versions

* chore(sanity): move versions menu to versions folder

* chore(sanity): update check for checking version

* fix(sanity): ability to add new versions to doc

* feat(sanity): add dumb bundle and version data, add icons and hues

* feat(sanity): update styles and don't rely on random

* update isVersion

* docs(sanity): update comments

* feat(sanity): add "latest version" menu button

* refactor(sanity): update comments

* chore(sanity): remove import from format date. will use something else

* fix(sanity): allow uppercase characters in version identifiers

* feat(sanity): add tag to list document versions request

* feat(corel): integrate bundles store (#7040)

* feat(corel): add bundles store

* feat(corel): doc and structure updates (#7039)

* docs(sanity): update comment on getAllVersionsOfDocument

* fix(sanity): listing existing versions didn't account for published

* chore(sanity): move latest version up (temp)

* feat(sanity): update navigation of perspective + add "current badge"

* feat(sanity): add global version navigation

* refactor(sanity): hide document version picker, update the document icon

* feat(sanity): update studio nav bar (reduce create button + spacing)

* chore(sanity): general cleanup

* feat(sanity): add version provider, hide only the version picker in document

* chore(sanity): clean up version context

* chore(sanity): clean up, move components & files to single folder

* chore(sanity): clean up, move components & files to single folder

* chore(sanity): add ready button to document footer

* refactor(sanity): remove isVersion and add frontend guardrails

* chore(sanity): clean duplicate component

* chore(sanity): clean up missing dependencies

* refactor(sanity): update button

* refactor(sanity): clear up naming

* chore(sanity): hide ready

* chore(sanity): ready todos

* feat(sanity): add bundle modal + update colours + remove add new version from doc

* refactor(sanity): rename from release to bundle

* refactor(sanity): clean up code for types (bundleform)

* refactor(sanity): update method

* refactor(sanity): update drafts name (draft -> drafts) in LATEST & context

* refactor(sanity): use handleBundleChange instead of two separate methods

* refactor(sanity): update title to use LATEST const

* refactor(sanity): update draft filtering and checks (global and document level)

* refactor(sanity): update context to rely on router & update query to match existing bundles (MOCK)

* refactor(sanity): update handle methods to have callback

* feat(sanity): add guardrails for title naming on bundle create

* docs(sanity): update comments to potentially move things to plugin

* refactor(sanity): merge version badges & icons

* refactor(sanity): use speakingurl instead of toSlug

* feat(releases): initialising releases plugin (#7048)

* docs(sanity): update comment on getAllVersionsOfDocument

* fix(sanity): listing existing versions didn't account for published

* chore(sanity): move latest version up (temp)

* feat(sanity): update navigation of perspective + add "current badge"

* feat(sanity): add global version navigation

* refactor(sanity): hide document version picker, update the document icon

* feat(sanity): update studio nav bar (reduce create button + spacing)

* chore(sanity): general cleanup

* feat(sanity): add version provider, hide only the version picker in document

* feat(releases): create releases tool as default plugin

* feat(releases): styling and components for basic releases overview

* feat(releases): adding release detail page and routing

* feat(releases): uri decoding releaseID

* chore(sanity): clean up version context

* chore(sanity): clean up, move components & files to single folder

* chore(sanity): clean up, move components & files to single folder

* feat(corel): add bundles store

* chore(sanity): add ready button to document footer

* refactor(sanity): remove isVersion and add frontend guardrails

* chore(sanity): clean duplicate component

* chore(sanity): clean up missing dependencies

* refactor(sanity): update button

* chore(corel): use rxjs in bundlesStore listener

* refactor(sanity): clear up naming

* chore(sanity): hide ready

* chore(sanity): ready todos

* feat(corel): add retry to initialFetch

* feat(releases): remove the ready concepts

* feat(corel): include useBundleOperations and story

* fix(corel): update imports paths

* feat(sanity): add bundle modal + update colours + remove add new version from doc

* refactor(sanity): rename from release to bundle

* refactor(sanity): clean up code for types (bundleform)

* refactor(releases): refactor releases to bundles

* feat(releases): using bundle ops to fetch and create add-on bundles

* refactor(releases): type guard for at least one bundle returned

* fix(releases): fixing issue where overview header not hidden when no bundles

* feat(releases): search filters list of releases

* refactor(releases): minor refactor of hooks in BundlesOverview

* refactor(sanity): update method

* feat(releases): addijg concept loosely of bundle documents

* feat(releases): testing for BundlesTable

* feat(releases): testing for BundlesTable

* feat(releases): testing for releases overview page

* refactor(release): fixing types on the custom queries

* refactor(releases): Creating BundleIcon

* refactor(releases): minor refactor and tidy to component logic

* refactor(releases): minor format changes

* refactor(releases): create bundle dialog creates itself and then returns

* refactor(releases): create bundle dialog creates itself and then returns

* feat(releases): minor style update to match prototype on the mode picker

* feat(releases): minor style update to match prototype on the mode picker

* refactor(releases): moving search into table header as per prototype

* chore(corel): add eslintrc change, remove progress icon and update types (#7050)

---------

Co-authored-by: RitaDias <anarita151@gmail.com>
Co-authored-by: Pedro Bonamin <pedrobonamin@gmail.com>
Co-authored-by: Pedro Bonamin <46196328+pedrobonamin@users.noreply.github.com>

* refactor(releases): removing shortRelativeDate (#7051)

* chore(corel): add bundles provider (#7054)

* chore(corel): add bundles provider

* fix(corel): update bundles overview tests

* feat(COREL): update types to bundle + add create bundle functionality (#7047)

* refactor(sanity): update types to bundle

* feat(sanity): add ability to create releases from dialog + update types

* feat(sanity): update list on global and document to use store

* feat(sanity): update types, add icon and hue picker to bundles, update uis

* feat(sanity): add date picker to bundleform

* refactor(sanity): update publishAt fields in menus

* refactor(sanity): update type in dummyGetter

* chore(sanity): remove BUNDLES const

* chore(sanity): update LATEST type to Partial

* chore(sanity): update validation for bundle date creation

* chore(sanity): clean up code

* refactor(sanity): add archived filter

* refactor(sanity): make single bundle menu + clean up

* chore(sanity): add missing properties

* feat(sanity): add loading & remove unused code

* feat(sanity): add loading to document version, update filter

* chore(sanity): rename VersionBadge to BundleBadge

* chore(sanity): clean up methods and style

* chore(sanity): remove unused import

* refactor(sanity): use Bundle provider instead of store

* chore(sanity): update bundleRow to use the new name for badge

* chore(sanity): clean up code

* refactor(sanity): re-add oncancel and oncreate props in dialog

* refactor(sanity): add scroll to bundle menu

* refactor(sanity): move from archived to archivedAt

* refactor(sanity): only show the list of bundles if it has more than published / drafts

* chore(sanity): remove warnings comments

* refactor(COREL): refactor version context & renaming (#7071)

* feat(sanity): update types, add icon and hue picker to bundles, update uis

* feat(sanity): add date picker to bundleform

* refactor(sanity): update publishAt fields in menus

* chore(sanity): update LATEST type to Partial

* refactor(sanity): make single bundle menu + clean up

* chore(sanity): remove warnings comments

* refactor(sanity): move version provider to its own file + organise + add useVersion

* refactor(sanity): remove provider + context, move logic to hook

* chore(sanity): remove comments + change name from setCurrentVersion to setGlobalBundle

* chore(sanity): rename useVersion to useBundle

* chore(sanity): update comments

* chore(sanity): Rename currentVersion

* refactor(sanity): rename currentBudnle and setGlobalBundle

* chore(sanity): rename versions to bundles in core directory

* chore(sanity): rename to GlobalPerspectiveMenu and move to navbar directory

* chore(sanity): rename to DocumentPerspectiveMenu and move to navbar directory

* chore(sanity): remove isDraft from usePerspective, add new util

* refactor(sanity): remove isDraft

* refactor(sanity): use current global in the bundle badge

* fix(corel): update uses of collate, add typeguard for bundles and add release tag to addonDatasetProvider (#7074)

* fix(corel): update uses of collate, add typeguard for bundles and add release tag to addonDatasetProvider

* fix(corel): update imports for bundleRow test

* chore(corel): disable publish tests

* fix(corel): update failing tests

* fix(corel): update bundle actions definition

* fix(corel): remove not used file

* fix(corel): update DocumentHeaderTitle test

* fix(corel): fix lint issues

* feat(releases): archive and unarchive releases (#7072)

* refactor(sanity): update types to bundle

* feat(sanity): add ability to create releases from dialog + update types

* feat(sanity): update list on global and document to use store

* feat(sanity): update types, add icon and hue picker to bundles, update uis

* feat(sanity): add date picker to bundleform

* refactor(sanity): update publishAt fields in menus

* refactor(sanity): update type in dummyGetter

* chore(sanity): remove BUNDLES const

* chore(sanity): update LATEST type to Partial

* chore(sanity): update validation for bundle date creation

* chore(sanity): clean up code

* refactor(sanity): add archived filter

* refactor(sanity): make single bundle menu + clean up

* chore(sanity): add missing properties

* feat(sanity): add loading & remove unused code

* feat(sanity): add loading to document version, update filter

* chore(sanity): rename VersionBadge to BundleBadge

* chore(sanity): clean up methods and style

* chore(sanity): remove unused import

* refactor(sanity): use Bundle provider instead of store

* chore(sanity): update bundleRow to use the new name for badge

* chore(sanity): clean up code

* refactor(sanity): re-add oncancel and oncreate props in dialog

* refactor(sanity): add scroll to bundle menu

* refactor(sanity): move from archived to archivedAt

* refactor(sanity): move version provider to its own file + organise + add useVersion

* refactor(sanity): remove provider + context, move logic to hook

* chore(sanity): remove comments + change name from setCurrentVersion to setGlobalBundle

* chore(sanity): rename useVersion to useBundle

* chore(sanity): update comments

* chore(sanity): Rename currentVersion

* refactor(sanity): rename currentBudnle and setGlobalBundle

* chore(sanity): rename versions to bundles in core directory

* chore(sanity): rename to GlobalPerspectiveMenu and move to navbar directory

* chore(sanity): rename to DocumentPerspectiveMenu and move to navbar directory

* feat(releases): support for (un)archive

* chore(releases): updating testing for BundlesOverview

* chore(releases): new tests for BundleMenuButton and (un)archive

* fix(releases): disabling bundle menu btn when action is performed

---------

Co-authored-by: RitaDias <anarita151@gmail.com>
Co-authored-by: RitaDias <rita@sanity.io>

* refactor(sanity): move bundle metadata store to resource cache

Co-authored-by: Pedro Bonamin <pedrobonamin@gmail.com>

* refactor(releases): only adding metadata context when not already existing

* refactor(releases): only adding metadata context when not already existing

* refactor(releases): creating tableBundles in BundlesOverview

* refactor(releases): renaming projection of query for metadata

* chore(releases): code comments

* fix(releases): fixing issue with removing bundles from aggregator listener

* refactor(releases): nesting bundle doc metadata in TableBunde

* fix(corel): update releases router to use bundle name

* feat(corel): add bundle details screen

* chore: update @sanity/icons package

* feat(corel): releases DocumentRow updates

* fix(corel): update BundleIconEditorPicker types

* fix(corel): update bundles table test

* fix(corel): add filter in documents table

* chore(corel): update file location and naming

* feat(corel): add document actions to document row

* fix(core): remove references to bundles in useListener hook

* fix(corel): add search params to IntentLink

* chore(corel): remove router type change and restore previous pnpm-lock file

* fix(releases): fixing tests for BundlesTable

* fix(releases):adding tests for doc count and updated time to bundles table

* fix(corel): update bundlesTable tests

* fix(releases): fixing BundlesOverview tests

* feat(releases): delete bundle confirm lists document count in bundle

* refactor(releases): update BundlesMetadataContext to export interface

* fix(releases): fix BundlesTable tests

* refactor(releases): rename components and files to releases rather than bundles

* feat(releases): assigning authorId on release creation

* fix(releases): update BundleMenuButton test with hue and icon properties

* feat(releases): release detail delete uses documents count in bundle

* fix(releases): using short and temporal version of relative time

* refactor(releases): startWith to handle initial loading state on fetch

---------

Co-authored-by: Bjørge Næss <bjoerge@gmail.com>
Co-authored-by: Ash <ash@sanity.io>
Co-authored-by: RitaDias <anarita151@gmail.com>
Co-authored-by: Pedro Bonamin <46196328+pedrobonamin@users.noreply.github.com>
Co-authored-by: RitaDias <rita@sanity.io>
Co-authored-by: Pedro Bonamin <pedrobonamin@gmail.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Espen Hovlandsdal <espen@hovlandsdal.com>

* feat(corel): Add review changes screen  (#7155)

* fix(corel): add prepareForPreview in useDocumentPreviewValues

* feat(corel): add review changes screen

* fix(corel): update ReleaseReview to use new documents history data

* feat(corel): add published document listener to review changes screen

* feat(core): add new useObserveDocument hook

* feat(corel): move active screen state to query params

* chore(corel): make documentDiff component agnostic to releases

* fix(corel): update document diff is changed check

* fix(corel): update useObserveDocument hook, export it as unstable

* chore(corel): add tests to release review screen

* chore(corel): rename bundle.name to bundle.slug (#7171)

* chore(corel): rename bundle.name to bundle.slug

* chore(corel): add migration script and handlers

* fix(corel): update BundleDocument interface definition

* refactor: update from name to slug

* chore: update pnpm

* refactor: add missing bundleSlug

* refactor(COREL): refactor version context & renaming (#7071)

* feat(sanity): update types, add icon and hue picker to bundles, update uis

* feat(sanity): add date picker to bundleform

* refactor(sanity): update publishAt fields in menus

* chore(sanity): update LATEST type to Partial

* refactor(sanity): make single bundle menu + clean up

* chore(sanity): remove warnings comments

* refactor(sanity): move version provider to its own file + organise + add useVersion

* refactor(sanity): remove provider + context, move logic to hook

* chore(sanity): remove comments + change name from setCurrentVersion to setGlobalBundle

* chore(sanity): rename useVersion to useBundle

* chore(sanity): update comments

* chore(sanity): Rename currentVersion

* refactor(sanity): rename currentBudnle and setGlobalBundle

* chore(sanity): rename versions to bundles in core directory

* chore(sanity): rename to GlobalPerspectiveMenu and move to navbar directory

* chore(sanity): rename to DocumentPerspectiveMenu and move to navbar directory

* chore(sanity): remove isDraft from usePerspective, add new util

* refactor(sanity): remove isDraft

* refactor(sanity): use current global in the bundle badge

* fix(corel): update uses of collate, add typeguard for bundles and add release tag to addonDatasetProvider (#7074)

* fix(corel): update uses of collate, add typeguard for bundles and add release tag to addonDatasetProvider

* fix(corel): update imports for bundleRow test

* chore(corel): disable publish tests

* fix(corel): update failing tests

* fix(corel): update bundle actions definition

* fix(corel): remove not used file

* fix(corel): update DocumentHeaderTitle test

* fix(corel): fix lint issues

* feat(releases): archive and unarchive releases (#7072)

* refactor(sanity): update types to bundle

* feat(sanity): add ability to create releases from dialog + update types

* feat(sanity): update list on global and document to use store

* feat(sanity): update types, add icon and hue picker to bundles, update uis

* feat(sanity): add date picker to bundleform

* refactor(sanity): update publishAt fields in menus

* refactor(sanity): update type in dummyGetter

* chore(sanity): remove BUNDLES const

* chore(sanity): update LATEST type to Partial

* chore(sanity): update validation for bundle date creation

* chore(sanity): clean up code

* refactor(sanity): add archived filter

* refactor(sanity): make single bundle menu + clean up

* chore(sanity): add missing properties

* feat(sanity): add loading & remove unused code

* feat(sanity): add loading to document version, update filter

* chore(sanity): rename VersionBadge to BundleBadge

* chore(sanity): clean up methods and style

* chore(sanity): remove unused import

* refactor(sanity): use Bundle provider instead of store

* chore(sanity): update bundleRow to use the new name for badge

* chore(sanity): clean up code

* refactor(sanity): re-add oncancel and oncreate props in dialog

* refactor(sanity): add scroll to bundle menu

* refactor(sanity): move from archived to archivedAt

* refactor(sanity): move version provider to its own file + organise + add useVersion

* refactor(sanity): remove provider + context, move logic to hook

* chore(sanity): remove comments + change name from setCurrentVersion to setGlobalBundle

* chore(sanity): rename useVersion to useBundle

* chore(sanity): update comments

* chore(sanity): Rename currentVersion

* refactor(sanity): rename currentBudnle and setGlobalBundle

* chore(sanity): rename versions to bundles in core directory

* chore(sanity): rename to GlobalPerspectiveMenu and move to navbar directory

* chore(sanity): rename to DocumentPerspectiveMenu and move to navbar directory

* feat(releases): support for (un)archive

* chore(releases): updating testing for BundlesOverview

* chore(releases): new tests for BundleMenuButton and (un)archive

* fix(releases): disabling bundle menu btn when action is performed

---------

Co-authored-by: RitaDias <anarita151@gmail.com>
Co-authored-by: RitaDias <rita@sanity.io>

* refactor(sanity): move bundle metadata store to resource cache

Co-authored-by: Pedro Bonamin <pedrobonamin@gmail.com>

* feat(corel): remove version documents when deleting bundle (#7107)

* feat(corel): releases details screen. (#7092)

* fix(corel): update releases router to use bundle name

* feat(corel): add bundle details screen

* chore: update @sanity/icons package

* feat(corel): releases DocumentRow updates

* fix(corel): update BundleIconEditorPicker types

* fix(corel): update bundles table test

* fix(corel): add filter in documents table

* chore(corel): update file location and naming

* feat(corel): add document actions to document row

* fix(core): remove references to bundles in useListener hook

* fix(corel): add search params to IntentLink

* chore(corel): remove router type change and restore previous pnpm-lock file

* fix(corel): update bundlesTable tests

* test(COREL): add core tests (#7119)

* test(sanity): try to find solution for test

* wip: add theme provider to test

* test(sanity): add test to bundleForm & add createWrapper in core

* test(sanity): add test to BundleIconEditorPicker

* chore(sanity): update createWrapper

* test(sanity): update bundleForm test

* test(sanity) add createBundleDialog tests

* test(sanity) add BundleMenu tests

* refactor(sanity): add prop to createWrapper to access TestProviderOptions

---------

Co-authored-by: Ash <ash@sanity.io>

* feat(sanity): #TEMPORARY #DELETE handle versions in `DocumentPaneProvider`

* fix(sanity): avoid fetching in a loop

* fix(corel): refactor version history to fetch all release documents (#7150)

* refactor(COREL): update title & date validation (#7148)

* refactor(sanity): refactor error setting

* refactor(sanity): refactor title error setting

* refactor(sanity): refactor date error setting

* docs(sanity): update comments

* chore(sanity): clean up

* test(sanity): update bundleiconeditorpicker test

* test(sanity): update bundleForm test

* test(sanity): update bundleForm & createBundleDialog test

* test: update form and update tests

* chore: hide publish date (#7162)

* feat(releases): last edited and document count in bundle (#7124)

* feat(sanity): add support for sticky query params

* feat(sanity): add 'perspective' dropdown

* feat(sanity): include `_version` field in search results

* feat(types): add `_version` field to `SanityDocument` and `SanityDocumentLike`

* fix(sanity): global perspective state restoration

* feat(sanity): hardcode `summerDrop` and `autumnDrop` bundles

* wip: allow pairs to include multiple drafts

* feat(sanity): support versioned document ids in `getPublishedId` function

* feat(sanity): add `_version` field to preview observation

* feat(sanity): reflect checked out bundle in document lists and list previews

* debug(sanity): add version debug output to list previews

* feat(sanity): add action to create new version based on an doc id

* feat(sanity): update document title + version popover - add new and from existing versions

* chore(sanity): move versions menu to versions folder

* chore(sanity): update check for checking version

* fix(sanity): ability to add new versions to doc

* feat(sanity): add dumb bundle and version data, add icons and hues

* feat(sanity): update styles and don't rely on random

* update isVersion

* docs(sanity): update comments

* feat(sanity): add "latest version" menu button

* refactor(sanity): update comments

* chore(sanity): remove import from format date. will use something else

* fix(sanity): allow uppercase characters in version identifiers

* feat(sanity): add tag to list document versions request

* feat(corel): integrate bundles store (#7040)

* feat(corel): add bundles store

* feat(corel): doc and structure updates (#7039)

* docs(sanity): update comment on getAllVersionsOfDocument

* fix(sanity): listing existing versions didn't account for published

* chore(sanity): move latest version up (temp)

* feat(sanity): update navigation of perspective + add "current badge"

* feat(sanity): add global version navigation

* refactor(sanity): hide document version picker, update the document icon

* feat(sanity): update studio nav bar (reduce create button + spacing)

* chore(sanity): general cleanup

* feat(sanity): add version provider, hide only the version picker in document

* chore(sanity): clean up version context

* chore(sanity): clean up, move components & files to single folder

* chore(sanity): clean up, move components & files to single folder

* chore(sanity): add ready button to document footer

* refactor(sanity): remove isVersion and add frontend guardrails

* chore(sanity): clean duplicate component

* chore(sanity): clean up missing dependencies

* refactor(sanity): update button

* refactor(sanity): clear up naming

* chore(sanity): hide ready

* chore(sanity): ready todos

* feat(sanity): add bundle modal + update colours + remove add new version from doc

* refactor(sanity): rename from release to bundle

* refactor(sanity): clean up code for types (bundleform)

* refactor(sanity): update method

* refactor(sanity): update drafts name (draft -> drafts) in LATEST & context

* refactor(sanity): use handleBundleChange instead of two separate methods

* refactor(sanity): update title to use LATEST const

* refactor(sanity): update draft filtering and checks (global and document level)

* refactor(sanity): update context to rely on router & update query to match existing bundles (MOCK)

* refactor(sanity): update handle methods to have callback

* feat(sanity): add guardrails for title naming on bundle create

* docs(sanity): update comments to potentially move things to plugin

* refactor(sanity): merge version badges & icons

* refactor(sanity): use speakingurl instead of toSlug

* feat(releases): initialising releases plugin (#7048)

* docs(sanity): update comment on getAllVersionsOfDocument

* fix(sanity): listing existing versions didn't account for published

* chore(sanity): move latest version up (temp)

* feat(sanity): update navigation of perspective + add "current badge"

* feat(sanity): add global version navigation

* refactor(sanity): hide document version picker, update the document icon

* feat(sanity): update studio nav bar (reduce create button + spacing)

* chore(sanity): general cleanup

* feat(sanity): add version provider, hide only the version picker in document

* feat(releases): create releases tool as default plugin

* feat(releases): styling and components for basic releases overview

* feat(releases): adding release detail page and routing

* feat(releases): uri decoding releaseID

* chore(sanity): clean up version context

* chore(sanity): clean up, move components & files to single folder

* chore(sanity): clean up, move components & files to single folder

* feat(corel): add bundles store

* chore(sanity): add ready button to document footer

* refactor(sanity): remove isVersion and add frontend guardrails

* chore(sanity): clean duplicate component

* chore(sanity): clean up missing dependencies

* refactor(sanity): update button

* chore(corel): use rxjs in bundlesStore listener

* refactor(sanity): clear up naming

* chore(sanity): hide ready

* chore(sanity): ready todos

* feat(corel): add retry to initialFetch

* feat(releases): remove the ready concepts

* feat(corel): include useBundleOperations and story

* fix(corel): update imports paths

* feat(sanity): add bundle modal + update colours + remove add new version from doc

* refactor(sanity): rename from release to bundle

* refactor(sanity): clean up code for types (bundleform)

* refactor(releases): refactor releases to bundles

* feat(releases): using bundle ops to fetch and create add-on bundles

* refactor(releases): type guard for at least one bundle returned

* fix(releases): fixing issue where overview header not hidden when no bundles

* feat(releases): search filters list of releases

* refactor(releases): minor refactor of hooks in BundlesOverview

* refactor(sanity): update method

* feat(releases): addijg concept loosely of bundle documents

* feat(releases): testing for BundlesTable

* feat(releases): testing for BundlesTable

* feat(releases): testing for releases overview page

* refactor(release): fixing types on the custom queries

* refactor(releases): Creating BundleIcon

* refactor(releases): minor refactor and tidy to component logic

* refactor(releases): minor format changes

* refactor(releases): create bundle dialog creates itself and then returns

* refactor(releases): create bundle dialog creates itself and then returns

* feat(releases): minor style update to match prototype on the mode picker

* feat(releases): minor style update to match prototype on the mode picker

* refactor(releases): moving search into table header as per prototype

* chore(corel): add eslintrc change, remove progress icon and update types (#7050)

---------

Co-authored-by: RitaDias <anarita151@gmail.com>
Co-authored-by: Pedro Bonamin <pedrobonamin@gmail.com>
Co-authored-by: Pedro Bonamin <46196328+pedrobonamin@users.noreply.github.com>

* refactor(releases): removing shortRelativeDate (#7051)

* chore(corel): add bundles provider (#7054)

* chore(corel): add bundles provider

* fix(corel): update bundles overview tests

* feat(COREL): update types to bundle + add create bundle functionality (#7047)

* refactor(sanity): update types to bundle

* feat(sanity): add ability to create releases from dialog + update types

* feat(sanity): update list on global and document to use store

* feat(sanity): update types, add icon and hue picker to bundles, update uis

* feat(sanity): add date picker to bundleform

* refactor(sanity): update publishAt fields in menus

* refactor(sanity): update type in dummyGetter

* chore(sanity): remove BUNDLES const

* chore(sanity): update LATEST type to Partial

* chore(sanity): update validation for bundle date creation

* chore(sanity): clean up code

* refactor(sanity): add archived filter

* refactor(sanity): make single bundle menu + clean up

* chore(sanity): add missing properties

* feat(sanity): add loading & remove unused code

* feat(sanity): add loading to document version, update filter

* chore(sanity): rename VersionBadge to BundleBadge

* chore(sanity): clean up methods and style

* chore(sanity): remove unused import

* refactor(sanity): use Bundle provider instead of store

* chore(sanity): update bundleRow to use the new name for badge

* chore(sanity): clean up code

* refactor(sanity): re-add oncancel and oncreate props in dialog

* refactor(sanity): add scroll to bundle menu

* refactor(sanity): move from archived to archivedAt

* refactor(sanity): only show the list of bundles if it has more than published / drafts

* chore(sanity): remove warnings comments

* refactor(COREL): refactor version context & renaming (#7071)

* feat(sanity): update types, add icon and hue picker to bundles, update uis

* feat(sanity): add date picker to bundleform

* refactor(sanity): update publishAt fields in menus

* chore(sanity): update LATEST type to Partial

* refactor(sanity): make single bundle menu + clean up

* chore(sanity): remove warnings comments

* refactor(sanity): move version provider to its own file + organise + add useVersion

* refactor(sanity): remove provider + context, move logic to hook

* chore(sanity): remove comments + change name from setCurrentVersion to setGlobalBundle

* chore(sanity): rename useVersion to useBundle

* chore(sanity): update comments

* chore(sanity): Rename currentVersion

* refactor(sanity): rename currentBudnle and setGlobalBundle

* chore(sanity): rename versions to bundles in core directory

* chore(sanity): rename to GlobalPerspectiveMenu and move to navbar directory

* chore(sanity): rename to DocumentPerspectiveMenu and move to navbar directory

* chore(sanity): remove isDraft from usePerspective, add new util

* refactor(sanity): remove isDraft

* refactor(sanity): use current global in the bundle badge

* fix(corel): update uses of collate, add typeguard for bundles and add release tag to addonDatasetProvider (#7074)

* fix(corel): update uses of collate, add typeguard for bundles and add release tag to addonDatasetProvider

* fix(corel): update imports for bundleRow test

* chore(corel): disable publish tests

* fix(corel): update failing tests

* fix(corel): update bundle actions definition

* fix(corel): remove not used file

* fix(corel): update DocumentHeaderTitle test

* fix(corel): fix lint issues

* feat(releases): archive and unarchive releases (#7072)

* refactor(sanity): update types to bundle

* feat(sanity): add ability to create releases from dialog + update types

* feat(sanity): update list on global and document to use store

* feat(sanity): update types, add icon and hue picker to bundles, update uis

* feat(sanity): add date picker to bundleform

* refactor(sanity): update publishAt fields in menus

* refactor(sanity): update type in dummyGetter

* chore(sanity): remove BUNDLES const

* chore(sanity): update LATEST type to Partial

* chore(sanity): update validation for bundle date creation

* chore(sanity): clean up code

* refactor(sanity): add archived filter

* refactor(sanity): make single bundle menu + clean up

* chore(sanity): add missing properties

* feat(sanity): add loading & remove unused code

* feat(sanity): add loading to document version, update filter

* chore(sanity): rename VersionBadge to BundleBadge

* chore(sanity): clean up methods and style

* chore(sanity): remove unused import

* refactor(sanity): use Bundle provider instead of store

* chore(sanity): update bundleRow to use the new name for badge

* chore(sanity): clean up code

* refactor(sanity): re-add oncancel and oncreate props in dialog

* refactor(sanity): add scroll to bundle menu

* refactor(sanity): move from archived to archivedAt

* refactor(sanity): move version provider to its own file + organise + add useVersion

* refactor(sanity): remove provider + context, move logic to hook

* chore(sanity): remove comments + change name from setCurrentVersion to setGlobalBundle

* chore(sanity): rename useVersion to useBundle

* chore(sanity): update comments

* chore(sanity): Rename currentVersion

* refactor(sanity): rename currentBudnle and setGlobalBundle

* chore(sanity): rename versions to bundles in core directory

* chore(sanity): rename to GlobalPerspectiveMenu and move to navbar directory

* chore(sanity): rename to DocumentPerspectiveMenu and move to navbar directory

* feat(releases): support for (un)archive

* chore(releases): updating testing for BundlesOverview

* chore(releases): new tests for BundleMenuButton and (un)archive

* fix(releases): disabling bundle menu btn when action is performed

---------

Co-authored-by: RitaDias <anarita151@gmail.com>
Co-authored-by: RitaDias <rita@sanity.io>

* refactor(sanity): move bundle metadata store to resource cache

Co-authored-by: Pedro Bonamin <pedrobonamin@gmail.com>

* feat(releases): bundle store starts to support bundle metadata

* feat(releases): loading state only on initial fetch of metadata

* feat(releases): added created at col

* feat(releases): patching mutated bundle slugs

* feat(releases): aggregate all metadata listening calls

* fix(releases): fixing empty observed result state

* refactor(releases): move to slugs; split agg from createBundleStore

* fix(deps): Update dev-non-major (#7100)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency get-it to ^8.6.3 (#7108)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency @sanity/client to ^6.20.2 (#7111)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* refactor(sanity): remove "features" (#7097)

* fix(deps): update dependency @sanity/client to ^6.20.2 (#7110)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency @sanity/bifur-client to ^0.4.1 (#7102)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency @sanity/ui to ^2.6.3 (#7104)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency react-rx to ^3.1.1 (#7113)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @sanity/tsdoc to v1.0.83 (#7080)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency esbuild to ^0.23.0 (#7106)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* test(cli): use separate tarball location for cursor export test (#7118)

* fix(core): minor typo fix in i18n comment (#7115)

* fix(core): minor typo fix in i18n comment

* refactor(structure): add missing space to tsdoc

* feat(router): update router to support query params in intent links (#7095)

* feat(router): update router to support query params in intent links

* fix(core): update RouterStateEvent interface

* chore(core): add tests for query param intents

* feat(sanity): add 'perspective' dropdown

* fix(sanity): global perspective state restoration

* feat(sanity): hardcode `summerDrop` and `autumnDrop` bundles

* feat(sanity): reflect checked out bundle in document lists and list previews

* debug(sanity): add version debug output to list previews

* feat(sanity): add action to create new version based on an doc id

* feat(sanity): update document title + version popover - add new and from existing versions

* chore(sanity): move versions menu to versions folder

* chore(sanity): update check for checking version

* fix(sanity): ability to add new versions to doc

* feat(sanity): add dumb bundle and version data, add icons and hues

* feat(sanity): update styles and don't rely on random

* update isVersion

* docs(sanity): update comments

* feat(sanity): add "latest version" menu button

* refactor(sanity): update comments

* chore(sanity): remove import from format date. will use something else

* fix(sanity): allow uppercase characters in version identifiers

* feat(sanity): add tag to list document versions request

* feat(corel): integrate bundles store (#7040)

* feat(corel): add bundles store

* feat(corel): doc and structure updates (#7039)

* docs(sanity): update comment on getAllVersionsOfDocument

* fix(sanity): listing existing versions didn't account for published

* chore(sanity): move latest version up (temp)

* feat(sanity): update navigation of perspective + add "current badge"

* feat(sanity): add global version navigation

* refactor(sanity): hide document version picker, update the document icon

* feat(sanity): update studio nav bar (reduce create button + spacing)

* chore(sanity): general cleanup

* feat(sanity): add version provider, hide only the version picker in document

* chore(sanity): clean up version context

* chore(sanity): clean up, move components & files to single folder

* chore(sanity): clean up, move components & files to single folder

* chore(sanity): add ready button to document footer

* refactor(sanity): remove isVersion and add frontend guardrails

* chore(sanity): clean duplicate component

* chore(sanity): clean up missing dependencies

* refactor(sanity): update button

* refactor(sanity): clear up naming

* chore(sanity): hide ready

* chore(sanity): ready todos

* feat(sanity): add bundle modal + update colours + remove add new version from doc

* refactor(sanity): rename from release to bundle

* refactor(sanity): clean up code for types (bundleform)

* refactor(sanity): update method

* refactor(sanity): update drafts name (draft -> drafts) in LATEST & context

* refactor(sanity): use handleBundleChange instead of two separate methods

* refactor(sanity): update title to use LATEST const

* refactor(sanity): update draft filtering and checks (global and document level)

* refactor(sanity): update context to rely on router & update query to match existing bundles (MOCK)

* refactor(sanity): update handle methods to have callback

* feat(sanity): add guardrails for title naming on bundle create

* docs(sanity): update comments to potentially move things to plugin

* refactor(sanity): merge version badges & icons

* refactor(sanity): use speakingurl instead of toSlug

* feat(releases): initialising releases plugin (#7048)

* docs(sanity): update comment on getAllVersionsOfDocument

* fix(sanity): listing existing versions didn't account for published

* chore(sanity): move latest version up (temp)

* feat(sanity): update navigation of perspective + add "current badge"

* feat(sanity): add global version navigation

* refactor(sanity): hide document version picker, update the document icon

* feat(sanity): update studio nav bar (reduce create button + spacing)

* chore(sanity): general cleanup

* feat(sanity): add version provider, hide only the version picker in document

* feat(releases): create releases tool as default plugin

* feat(releases): styling and components for basic releases overview

* feat(releases): adding release detail page and routing

* feat(releases): uri decoding releaseID

* chore(sanity): clean up version context

* chore(sanity): clean up, move components & files to single folder

* chore(sanity): clean up, move components & files to single folder

* feat(corel): add bundles store

* chore(sanity): add ready button to document footer

* refactor(sanity): remove isVersion and add frontend guardrails

* chore(sanity): clean duplicate component

* chore(sanity): clean up missing dependencies

* refactor(sanity): update button

* chore(corel): use rxjs in bundlesStore listener

* refactor(sanity): clear up naming

* chore(sanity): hide ready

* chore(sanity): ready todos

* feat(corel): add retry to initialFetch

* feat(releases): remove the ready concepts

* feat(corel): include useBundleOperations and story

* fix(corel): update imports paths

* feat(sanity): add bundle modal + update colours + remove add new version from doc

* refactor(sanity): rename from release to bundle

* refactor(sanity): clean up code for types (bundleform)

* refactor(releases): refactor releases to bundles

* feat(releases): using bundle ops to fetch and create add-on bundles

* refactor(releases): type guard for at least one bundle returned

* fix(releases): fixing issue where overview header not hidden when no bundles

* feat(releases): search filters list of releases

* refactor(releases): minor refactor of hooks in BundlesOverview

* refactor(sanity): update method

* feat(releases): addijg concept loosely of bundle documents

* feat(releases): testing for BundlesTable

* feat(releases): testing for BundlesTable

* feat(releases): testing for releases overview page

* refactor(release): fixing types on the custom queries

* refactor(releases): Creating BundleIcon

* refactor(releases): minor refactor and tidy to component logic

* refactor(releases): minor format changes

* refactor(releases): create bundle dialog creates itself and then returns

* refactor(releases): create bundle dialog creates itself and then returns

* feat(releases): minor style update to match prototype on the mode picker

* feat(releases): minor style update to match prototype on the mode picker

* refactor(releases): moving search into table header as per prototype

* chore(corel): add eslintrc change, remove progress icon and update types (#7050)

---------

Co-authored-by: RitaDias <anarita151@gmail.com>
Co-authored-by: Pedro Bonamin <pedrobonamin@gmail.com>
Co-authored-by: Pedro Bonamin <46196328+pedrobonamin@users.noreply.github.com>

* refactor(releases): removing shortRelativeDate (#7051)

* chore(corel): add bundles provider (#7054)

* chore(corel): add bundles provider

* fix(corel): update bundles overview tests

* feat(COREL): update types to bundle + add create bundle functionality (#7047)

* refactor(sanity): update types to bundle

* feat(sanity): add ability to create releases from dialog + update types

* feat(sanity): update list on global and document to use store

* feat(sanity): update types, add icon and hue picker to bundles, update uis

* feat(sanity): add date picker to bundleform

* refactor(sanity): update publishAt fields in menus

* refactor(sanity): update type in dummyGetter

* chore(sanity): remove BUNDLES const

* chore(sanity): update LATEST type to Partial

* chore(sanity): update validation for bundle date creation

* chore(sanity): clean up code

* refactor(sanity): add archived filter

* refactor(sanity): make single bundle menu + clean up

* chore(sanity): add missing properties

* feat(sanity): add loading & remove unused code

* feat(sanity): add loading to document version, update filter

* chore(sanity): rename VersionBadge to BundleBadge

* chore(sanity): clean up methods and style

* chore(sanity): remove unused import

* refactor(sanity): use Bundle provider instead of store

* chore(sanity): update bundleRow to use the new name for badge

* chore(sanity): clean up code

* refactor(sanity): re-add oncancel and oncreate props in dialog

* refactor(sanity): add scroll to bundle menu

* refactor(sanity): move from archived to archivedAt

* refactor(sanity): only show the list of bundles if it has more than published / drafts

* chore(sanity): remove warnings comments

* refactor(COREL): refactor version context & renaming (#7071)

* feat(sanity): update types, add icon and hue picker to bundles, update uis

* feat(sanity): add date picker to bundleform

* refactor(sanity): update publishAt fields in menus

* chore(sanity): update LATEST type to Partial

* refactor(sanity): make single bundle menu + clean up

* chore(sanity): remove warnings comments

* refactor(sanity): move version provider to its own file + organise + add useVersion

* refactor(sanity): remove provider + context, move logic to hook

* chore(sanity): remove comments + change name from setCurrentVersion to setGlobalBundle

* chore(sanity): rename useVersion to useBundle

* chore(sanity): update comments

* chore(sanity): Rename currentVersion

* refactor(sanity): rename currentBudnle and setGlobalBundle

* chore(sanity): rename versions to bundles in core directory

* chore(sanity): rename to GlobalPerspectiveMenu and move to navbar directory

* chore(sanity): rename to DocumentPerspectiveMenu and move to navbar directory

* chore(sanity): remove isDraft from usePerspective, add new util

* refactor(sanity): remove isDraft

* refactor(sanity): use current global in the bundle badge

* fix(corel): update uses of collate, add typeguard for bundles and add release tag to addonDatasetProvider (#7074)

* fix(corel): update uses of collate, add typeguard for bundles and add release tag to addonDatasetProvider

* fix(corel): update imports for bundleRow test

* chore(corel): disable publish tests

* fix(corel): update failing tests

* fix(corel): update bundle actions definition

* fix(corel): remove not used file

* fix(corel): update DocumentHeaderTitle test

* fix(corel): fix lint issues

* feat(releases): archive and unarchive releases (#7072)

* refactor(sanity): update types to bundle

* feat(sanity): add ability to create releases from dialog + update types

* feat(sanity): update list on global and document to use store

* feat(sanity): update types, add icon and hue picker to bundles, update uis

* feat(sanity): add date picker to bundleform

* refactor(sanity): update publishAt fields in menus

* refactor(sanity): update type in dummyGetter

* chore(sanity): remove BUNDLES const

* chore(sanity): update LATEST type to Partial

* chore(sanity): update validation for bundle date creation

* chore(sanity): clean up code

* refactor(sanity): add archived filter

* refactor(sanity): make single bundle menu + clean up

* chore(sanity): add missing properties

* feat(sanity): add loading & remove unused code

* feat(sanity): add loading to document version, update filter

* chore(sanity): rename VersionBadge to BundleBadge

* chore(sanity): clean up methods and style

* chore(sanity): remove unused import

* refactor(sanity): use Bundle provider instead of store

* chore(sanity): update bundleRow to use the new name for badge

* chore(sanity): clean up code

* refactor(sanity): re-add oncancel and oncreate props in dialog

* refactor(sanity): add scroll to bundle menu

* refactor(sanity): move from archived to archivedAt

* refactor(sanity): move version provider to its own file + organise + add useVersion

* refactor(sanity): remove provider + context, move logic to hook

* chore(sanity): remove comments + change name from setCurrentVersion to setGlobalBundle

* chore(sanity): rename useVersion to useBundle

* chore(sanity): update comments

* chore(sanity): Rename currentVersion

* refactor(sanity): rename currentBudnle and setGlobalBundle

* chore(sanity): rename versions to bundles in core directory

* chore(sanity): rename to GlobalPerspectiveMenu and move to navbar directory

* chore(sanity): rename to DocumentPerspectiveMenu and move to navbar directory

* feat(releases): support for (un)archive

* chore(releases): updating testing for BundlesOverview

* chore(releases): new tests for BundleMenuButton and (un)archive

* fix(releases): disabling bundle menu btn when action is performed

---------

Co-authored-by: RitaDias <anarita151@gmail.com>
Co-authored-by: RitaDias <rita@sanity.io>

* refactor(sanity): move bundle metadata store to resource cache

Co-authored-by: Pedro Bonamin <pedrobonamin@gmail.com>

* refactor(releases): only adding metadata context when not already existing

* refactor(releases): only adding metadata context when not already existing

* refactor(releases): creating tableBundles in BundlesOverview

* refactor(releases): renaming projection of query for metadata

* chore(releases): code comments

* fix(releases): fixing issue with removing bundles from aggregator listener

* refactor(releases): nesting bundle doc metadata in TableBunde

* fix(corel): update releases router to use bundle name

* feat(corel): add bundle details screen

* chore: update @sanity/icons package

* feat(corel): releases DocumentRow updates

* fix(corel): update BundleIconEditorPicker types

* fix(corel): update bundles table test

* fix(corel): add filter in documents table

* chore(corel): update file location and naming

* feat(corel): add document actions to document row

* fix(core): remove references to bundles in useListener hook

* fix(corel): add search params to IntentLink

* chore(corel): remove router type change and restore previous pnpm-lock file

* fix(releases): fixing tests for BundlesTable

* fix(releases):adding tests for doc count and updated time to bundles table

* fix(corel): update bundlesTable tests

* fix(releases): fixing BundlesOverview tests

* feat(releases): delete bundle confirm lists document count in bundle

* refactor(releases): update BundlesMetadataContext to export interface

* fix(releases): fix BundlesTable tests

* refactor(releases): rename components and files to releases rather than bundles

* feat(releases): assigning authorId on release creation

* fix(releases): update BundleMenuButton test with hue and icon properties

* feat(releases): release detail delete uses documents count in bundle

* fix(releases): using short and temporal version of relative time

* refactor(releases): startWith to handle initial loading state on fetch

---------

Co-authored-by: Bjørge Næss <bjoerge@gmail.com>
Co-authored-by: Ash <ash@sanity.io>
Co-authored-by: RitaDias <anarita151@gmail.com>
Co-authored-by: Pedro Bonamin <46196328+pedrobonamin@users.noreply.github.com>
Co-authored-by: RitaDias <rita@sanity.io>
Co-authored-by: Pedro Bonamin <pedrobonamin@gmail.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Espen Hovlandsdal <espen@hovlandsdal.com>

* feat(corel): Add review changes screen  (#7155)

* fix(corel): add prepareForPreview in useDocumentPreviewValues

* feat(corel): add review changes screen

* fix(corel): update ReleaseReview to use new documents history data

* feat(corel): add published document listener to review changes screen

* feat(core): add new useObserveDocument hook

* feat(corel): move active screen state to query params

* chore(corel): make documentDiff component agnostic to releases

* fix(corel): update document diff is changed check

* fix(corel): update useObserveDocument hook, export it as unstable

* chore(corel): add tests to release review screen

* chore(corel): rename bundle.name to bundle.slug (#7171)

* chore(corel): rename bundle.name to bundle.slug

* chore(corel): add migration script and handlers

* fix(corel): update BundleDocument interface definition

* chore: use corel pnpm lock file

* chore: update styling

* refactor(COREL): refactor version context & renaming (#7071)

* feat(sanity): update types, add icon and hue picker to bundles, update uis

* feat(sanity): add date picker to bundleform

* refactor(sanity): update publishAt fields in menus

* chore(sanity): update LATEST type to Partial

* refactor(sanity): make single bundle menu + clean up

* chore(sanity): remove warnings comments

* refactor(sanity): move version provider to its own file + organise + add useVersion

* refactor(sanity): remove provider + context, move logic to hook

* chore(sanity): remove comments + change name from setCurrentVersion to setGlobalBundle

* chore(sanity): rename useVersion to useBundle

* chore(sanity): update comments

* chore(sanity): Rename currentVersion

* refactor(sanity): rename currentBudnle and setGlobalBundle

* chore(sanity): rename versions to bundles in core directory

* chore(sanity): rename to GlobalPerspectiveMenu and move to navbar directory

* chore(sanity): rename to DocumentPerspectiveMenu and move to navbar directory

* chore(sanity): remove isDraft from usePerspective, add new util

* refactor(sanity): remove isDraft

* refactor(sanity): use current global in the bundle badge

* fix(corel): update uses of collate, add typeguard for bundles and add release tag to addonDatasetProvider (#7074)

* fix(corel): update uses of collate, add typeguard for bundles and add release tag to addonDatasetProvider

* fix(corel): update imports for bundleRow test

* chore(corel): disable publish tests

* fix(corel): update failing tests

* fix(corel): update bundle actions definition

* fix(corel): remove not used file

* fix(corel): update DocumentHeaderTitle test

* fix(corel): fix lint issues

* feat(releases): archive and unarchive releases (#7072)

* refactor(sanity): update types to bundle

* feat(sanity): add ability to create releases from dialog + update types

* feat(sanity): update list on global and document to use store

* feat(sanity): update types, add icon and hue picker to bundles, update uis

* feat(sanity): add date picker to bundleform

* refactor(sanity): update publishAt fields in menus

* refactor(sanity): update type in dummyGetter

* chore(sanity): remove BUNDLES const

* chore(sanity): update LATEST type to Partial

* chore(sanity): update validation for bundle date creation

* chore(sanity): clean up code

* refactor(sanity): add archived filter

* refactor(sanity): make single bundle menu + clean up

* chore(sanity): add missing properties

* feat(sanity): add loading & remove unused code

* feat(sanity): add loading to document version, update filter

* chore(sanity): rename VersionBadge to BundleBadge

* chore(sanity): clean up methods and style

* chore(sanity): remove unused import

* refactor(sanity): use Bundle provider instead of store

* chore(sanity): update bundleRow to use the new name for badge

* chore(sanity): clean up code

* refactor(sanity): re-add oncancel and oncreate props in dialog

* refactor(sanity): add scroll to bundle menu

* refactor(sanity): move from archived to archivedAt

* refactor(sanity): move version provider to its own file + organise + add useVersion

* refactor(sanity): remove provider + context, move logic to hook

* chore(sanity): remove comments + change name from setCurrentVersion to setGlobalBundle

* chore(sanity): rename useVersion to useBundle

* chore(sanity): update comments

* chore(sanity): Rename currentVersion

* refactor(sanity): rename currentBudnle and setGlobalBundle

* chore(sanity): rename versions to bundles in core directory

* chore(sanity): rename to GlobalPerspectiveMenu and move to navbar directory

* chore(sanity): rename to DocumentPerspectiveMenu and move to navbar directory

* feat(releases): support for (un)archive

* chore(releases): updating testing for BundlesOverview

* chore(releases): new tests for BundleMenuButton and (un)archive

* fix(releases): disabling bundle menu btn when action is performed

---------

Co-authored-by: RitaDias <anarita151@gmail.com>
Co-authored-by: RitaDias <rita@sanity.io>

* refactor(sanity): move bundle metadata store to resource cache

Co-authored-by: Pedro Bonamin <pedrobonamin@gmail.com>

* feat(corel): remove version documents when deleting bundle (#7107)

* feat(corel): releases details screen. (#7092)

* fix(corel): update releases router to use bundle name

* feat(corel): add bundle details screen

* chore: update @sanity/icons package

* feat(corel): releases DocumentRow updates

* fix(corel): update BundleIconEditorPicker types

* fix(corel): update bundles table test

* fix(corel): add filter in documents table

* chore(corel): update file location and naming

* feat(corel): add document actions to document row

* fix(core): remove references to bundles in useListener hook

* fix(corel): add search params to IntentLink

* chore(corel): remove router type change and restore previous pnpm-lock file

* fix(corel): update bundlesTable tests

* test(COREL): add core tests (#7119)

* test(sanity): try to find solution for test

* wip: add theme provider to test

* test(sanity): add test to bundleForm & add createWrapper in core

* test(sanity): add test to BundleIconEditorPicker

* chore(sanity): update createWrapper

* test(sanity): update bundleForm test

* test(sanity) add createBundleDialog tests

* test(sanity) add BundleMenu tests

* refactor(sanity): add prop to createWrapper to access TestProviderOptions

---------

Co-authored-by: Ash <ash@sanity.io>

* feat(sanity): #TEMPORARY #DELETE handle versions in `DocumentPaneProvider`

* fix(sanity): avoid fetching in a loop

* fix(corel): refactor version history to fetch all release documents (#7150)

* refactor(COREL): update title & date validation (#7148)

* refactor(sanity): refactor error setting

* refactor(sanity): refactor title error setting

* refactor(sanity): refactor date error setting

* docs(sanity): update comments

* chore(sanity): clean up

* test(sanity): update bundleiconeditorpicker test

* test(sanity): update bundleForm test

* test(sanity): update bundleForm & createBundleDialog test

* test: update form and update tests

* chore: hide publish date (#7162)

* feat(releases): last edited and document count in bundle (#7124)

* feat(sanity): add support for sticky query params

* feat(sanity): add 'perspective' dropdown

* feat(sanity): include `_version` field in search results

* feat(types): add `_version` field to `SanityDocument` and `SanityDocumentLike`

* fix(sanity): global perspective state restoration

* feat(sanity): hardcode `summerDrop` and `autumnDrop` bundles

* wip: allow pairs to include multiple drafts

* feat(sanity): support versioned document ids in `getPublishedId` function

* feat(sanity): add `_version` field to preview observation

* feat(sanity): reflect checked out bundle in document lists and list previews

* debug(sanity): add version debug output to list previews

* feat(sanity): add action to create new version based on an doc id

* feat(sanity): update document title + version popover - add new and from existing versions

* chore(sanity): move versions menu to versions folder

* chore(sanity): update check for checking version

* fix(sanity): ability to add new versions to doc

* feat(sanity): add dumb bundle and version data, add icons and hues

* feat(sanity): update styles and don't rely on random

* update isVersion

* docs(sanity): update comments

* feat(sanity): add "latest version" menu button

* refactor(sanity): update comments

* chore(sanity): remove import from format date. will use something else

* fix(sanity): allow uppercase characters in version identifiers

* feat(sanity): add tag to list document versions request

* feat(corel): integrate bundles store (#7040)

* feat(corel): add bundles store

* feat(corel): doc and structure updates (#7039)

* docs(sanity): update comment on getAllVersionsOfDocument

* fix(sanity): listing existing versions didn't account for published

* chore(sanity): move latest version up (temp)

* feat(sanity): update navigation of perspective + add "current badge"

* feat(sanity): add global version navigation

* refactor(sanity): hide document version picker, update the document icon

* feat(sanity): update studio nav bar (reduce create button + spacing)

* chore(sanity): general cleanup

* feat(sanity): add version provider, hide only the version picker in document

* chore(sanity): clean up version context

* chore(sanity): clean up, move components & files to single folder

* chore(sanity): clean up, move components & files to single folder

* chore(sanity): add ready button to document footer

* refactor(sanity): remove isVersion and add frontend guardrails

* chore(sanity): clean duplicate component

* chore(sanity): clean up missing dependencies

* refactor(sanity): update button

* refactor(sanity): clear up naming

* chore(sanity): hide ready

* chore(sanity): ready todos

* feat(sanity): add bundle modal + update colours + remove add new version from doc

* refactor(sanity): rename from release to bundle

* refactor(sanity): clean up code for types (bundleform)

* refactor(sanity): update method

* refactor(sanity): update drafts name (draft -> drafts) in LATEST & context

* refactor(sanity): use handleBundleChange instead of two separate methods

* refactor(sanity): update title to use LATEST const

* refactor(sanity): update draft filtering and checks (global and document level)

* refactor(sanity): update context to rely on router & update query to match existing bundles (MOCK)

* refactor(sanity): update handle methods to have callback

* feat(sanity): add guardrails for title naming on bundle create

* docs(sanity): update comments to potentially move things to plugin

* refactor(sanity): merge version badges & icons

* refactor(sanity): use speakingurl instead of toSlug

* feat(releases): initialising releases plugin (#7048)

* docs(sanity): update comment on getAllVersionsOfDocument

* fix(sanity): listing existing versions didn't account for published

* chore(sanity): move latest version up (temp)

* feat(sanity): update navigation of perspective + add "current badge"

* feat(sanity): add global version navigation

* refactor(sanity): hide document version picker, update the document icon

* feat(sanity): update studio nav bar (reduce create button + spacing)

* chore(sanity): general cleanup

* feat(sanity): add version provider, hide only the version picker in document

* feat(releases): create releases tool as default plugin

* feat(releases): styling and components for basic releases overview

* feat(releases): adding release detail page and routing

* feat(releases): uri decoding releaseID

* chore(sanity): clean up version context

* chore(sanity): clean up, move components & files to single folder

* chore(sanity): clean up, move components & files to single folder

* feat(corel): add bundles store

* chore(sanity): add ready button to document footer

* refactor(sanity): remove isVersion and add frontend guardrails

* chore(sanity): clean duplicate component

* chore(sanity): clean up missing dependencies

* refactor(sanity): update button

* chore(corel): use rxjs in bundlesStore listener

* refactor(sanity): clear up naming

* chore(sanity): hide ready

* chore(sanity): ready todos

* feat(corel): add retry to initialFetch

* feat(releases): remove the ready concepts

* feat(corel): include useBundleOperations and story

* fix(corel): update imports paths

* feat(sanity): add bundle modal + update colours + remove add new version from doc

* refactor(sanity): rename from release to bundle

* refactor(sanity): clean up code for types (bundleform)

* refactor(releases): refactor releases to bundles

* feat(releases): using bundle ops to fetch and create add-on bundles

* refactor(releases): type guard for at least one bundle returned

* fix(releases): fixing issue where overview header not hidden when no bundles

* feat(releases): search filters list of releases

* refactor(releases): minor refactor of hooks in BundlesOverview

* refactor(sanity): update method

* feat(releases): addijg concept loosely of bundle documents

* feat(releases): testing for BundlesTable

* feat(releases): testing for BundlesTable

* feat(releases): testing for releases overview page

* refactor(release): fixing types on the custom queries

* refactor(releases): Creating BundleIcon

* refactor(releases): minor refactor and tidy to component logic

* refactor(releases): minor format changes

* refactor(releases): create bundle dialog creates itself and then returns

* refactor(releases): create bundle dialog creates itself and then returns

* feat(releases): minor style update to match prototype on the mode picker

* feat(releases): minor style update to match prototype on the mode picker

* refactor(releases): moving search into table header as per prototype

* chore(corel): add eslintrc change, remove progress icon and update types (#7050)

---------

Co-authored-by: RitaDias <anarita151@gmail.com>
Co-authored-by: Pedro Bonamin <pedrobonamin@gmail.com>
Co-authored-by: Pedro Bonamin <46196328+pedrobonamin@users.noreply.github.com>

* refactor(releases): removing shortRelativeDate (#7051)

* chore(corel): add bundles provider (#7054)

* chore(corel): add bundles provider

* fix(corel): update bundles overview tests

* feat(COREL): update types to bundle + add create bundle functionality (#7047)

* refactor(sanity): update types to bundle

* feat(sanity): add ability to create releases from dialog + update types

* feat(sanity): update list on global and document to use store

* feat(sanity): update types, add icon and hue picker to bundles, update uis

* feat(sanity): add date picker to bundleform

* refactor(sanity): update publishAt fields in menus

* refactor(sanity): update type in dummyGetter

* chore(sanity): remove BUNDLES const

* chore(sanity): update LATEST type to Partial

* chore(sanity): update validation for bundle date creation

* chore(sanity): clean up code

* refactor(sanity): add archived filter

* refactor(sanity): make single bundle menu + clean up

* chore(sanity): add missing properties

* feat(sanity): add loading & remove unused code

* feat(sanity): add loading to document version, update filter

* chore(sanity): rename VersionBadge to BundleBadge

* chore(sanity): clean up methods and style

* chore(sanity): remove unused import

* refactor(sanity): use Bundle provider instead of store

* chore(sanity): update bundleRow to use the new name for badge

* chore(sanity): clean up code

* refactor(sanity): re-add oncancel and oncreate props in dialog

* refactor(sanity): add scroll to bundle menu

* refactor(sanity): move from archived to archivedAt

* refactor(sanity): only show the list of bundles if it has more than published / drafts

* chore(sanity): remove warnings comments

* refactor(COREL): refactor version context & renaming (#7071)

* feat(sanity): update types, add icon and hue picker to bundles, update uis

* feat(sanity): add date picker to bundleform

* refactor(sanity): update publishAt fields in menus

* chore(sanity): update LATEST type to Partial

* refactor(sanity): make single bundle menu + clean up

* chore(sanity): remove warnings comments

* refactor(sanity): move version provider to its own file + organise + add useVersion

* refactor(sanity): remove provider + context, move logic to hook

* chore(sanity): remove comments + change name from setCurrentVersion to setGlobalBundle

* chore(sanity): rename useVersion to useBundle

* chore(sanity): update comments

* chore(sanity): Rename currentVersion

* refactor(sanity): rename currentBudnle and setGlobalBundle

* chore(sanity): rename versions to bundles in core directory

* chore(sanity): rename to GlobalPerspectiveMenu and move to navbar directory

* chore(sanity): rename to DocumentPerspectiveMenu and move to navbar directory

* chore(sanity): remove isDraft from usePerspective, add new util

* refactor(sanity): remove isDraft

* refactor(sanity): use current global in the bundle badge

* fix(corel): update uses of collate, add typeguard for bundles and add release tag to addonDatasetProvider (#7074)

* fix(corel): update uses of collate, add typeguard for bundles and add release tag to addonDatasetProvider

* fix(corel): update imports for bundleRow test

* chore(corel): disable publish tests

* fix(corel): update failing tests

* fix(corel): update bundle actions definition

* fix(corel): remove not used file

* fix(corel): update DocumentHeaderTitle test

* fix(corel): fix lint issues

* feat(releases): archive and unarchive releases (#7072)

* refactor(sanity): update types to bundle

* feat(sanity): add ability to create releases from dialog + update types

* feat(sanity): update list on global and document to use store

* feat(sanity): update types, add icon and hue picker to bundles, update uis

* feat(sanity): add date picker to bundleform

* refactor(sanity): update publishAt fields in menus

* refactor(sanity): update type in dummyGetter

* chore(sanity): remove BUNDLES const

* chore(sanity): update LATEST type to Partial

* chore(sanity): update validation for bundle date creation

* chore(sanity): clean up code

* refactor(sanity): add archived filter

* refactor(sanity): make single bundle menu + clean up

* chore(sanity): add missing properties

* feat(sanity): add loading & remove unused code

* feat(sanity): add loading to document version, update filter

* chore(sanity): rename VersionBadge to BundleBadge

* chore(sanity): clean up methods and style

* chore(sanity): remove unused import

* refactor(sanity): use Bundle provider instead of store

* chore(sanity): update bundleRow to use the new name for badge

* chore(sanity): clean up code

* refactor(sanity): re-add oncancel and oncreate props in dialog

* refactor(sanity): add scroll to bundle menu

* refactor(sanity): move from archived to archivedAt

* refactor(sanity): move version provider to its own file + organise + add useVersion

* refactor(sanity): remove provider + context, move logic to hook

* chore(sanity): remove comments + change name from setCurrentVersion to setGlobalBundle

* chore(sanity): rename useVersion to useBundle

* chore(sanity): update comments

* chore(sanity): Rename currentVersion

* refactor(sanity): rename currentBudnle and setGlobalBundle

* chore(sanity): rename versions to bundles in core directory

* chore(sanity): rename to GlobalPerspectiveMenu and move to navbar directory

* chore(sanity): rename to DocumentPerspectiveMenu and move to navbar directory

* feat(releases): support for (un)archive

* chore(releases): updating testing for BundlesOverview

* chore(releases): new tests for BundleMenuButton and (un)archive

* fix(releases): disabling bundle menu btn when action is performed

---------

Co-authored-by: RitaDias <anarita151@gmail.com>
Co-authored-by: RitaDias <rita@sanity.io>

* refactor(sanity): move bundle metadata store to resource cache

Co-authored-by: Pedro Bonamin <pedrobonamin@gmail.com>

* feat(releases): bundle store starts to support bundle metadata

* feat(releases): loading state only on initial fetch of metadata

* feat(releases): added created at col

* feat(releases): patching mutated bundle slugs

* feat(releases): aggregate all metadata listening calls

* fix(releases): fixing empty observed result state

* refactor(releases): move to slugs; split agg from createBundleStore

* fix(deps): Update dev-non-major (#7100)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency get-it to ^8.6.3 (#7108)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency @sanity/client to ^6.20.2 (#7111)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* refactor(sanity): remove "features" (#7097)

* fix(deps): update dependency @sanity/client to ^6.20.2 (#7110)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency @sanity/bifur-client to ^0.4.1 (#7102)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency @sanity/ui to ^2.6.3 (#7104)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(deps): update dependency react-rx to ^3.1.1 (#7113)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency @sanity/tsdoc to v1.0.83 (#7080)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update dependency esbuild to ^0.23.0 (#7106)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* test(cli): use separate tarball location for cursor export test (#7118)

* fix(core): minor typo fix in i18n comment (#7115)

* fix(core): minor typo fix in i18n comment

* refactor(structure): add missing space to tsdoc

* feat(router): update router to support query params in intent links (#7095)

* feat(router): update router to support query params in intent links

* fix(core): update RouterStateEvent interface

* chore(core): add tests for query param intents

* feat(sanity): add 'perspective' dropdown

* fix(sanity): global perspective state restoration

* feat(sanity): hardcode `summerDrop` and `autumnDrop` bundles

* feat(sanity): reflect checked out bundle in document lists and list previews

* debug(sanity): add version debug output to list previews

* feat(sanity): add action to create new version based on an doc id

* feat(sanity): update document title + version popover - add new and from existing versions

* chore(sanity): move versions menu to versions folder

* chore(sanity): update check for checking version

* fix(sanity): ability to add new versions to doc

* feat(sanity): add dumb bundle and version data, add icons and hues

* feat(sanity): update styles and don't rely on random

* update isVersion

* docs(sanity): update comments

* feat(sanity): add "latest version" menu button

* refactor(sanity): update comments

* chore(sanity): remove import from format date. will use something else

* fix(sanity): allow uppercase characters in version identifiers

* feat(sanity): add tag to list document versions request

* feat(corel): integrate bundles store (#7040)

* feat(corel): add bundles store

* feat(corel): doc and structure updates (#7039)

* docs(sanity): update comment on getAllVersionsOfDocument

* fix(sanity): listing existing versions didn't account for published

* chore(sanity): move latest version up (temp)

* feat(sanity): update navigation of perspective + add "current badge"

* feat(sanity): add global version navigation

* refactor(sanity): hide document version picker, update the document icon

* feat(sanity): update studio nav bar (reduce create button + spacing)

* chore(sanity): general cleanup

* feat(sanity): add version provider, hide only the version picker in document

* chore(sanity): clean up version context

* chore(sanity): clean up, move components & files to single folder

* chore(sanity): clean up, move components & files to single folder

* chore(sanity): add ready button to document footer

* refactor(sanity): remove isVersion and add frontend guardrails

* chore(sanity): clean duplicate component

* chore(sanity): clean up missing dependencies

* refactor(sanity): update button

* refactor(sanity): clear up naming

* chore(sanity): hide ready

* chore(sanity): ready todos

* feat(sanity): add bundle modal + update colours + remove add new version from doc

* refactor(sanity): rename from release to bundle

* refactor(sanity): clean up code for types (bundleform)

* refactor(sanity): update method

* refactor(sanity): update drafts name (draft -> drafts) in LATEST & context

* refactor(sanity): use handleBundleChange instead of two separate methods

* refactor(sanity): update title to use LATEST const

* refactor(sanity): update draft filtering and checks (global and document level)

* refactor(sanity): update context to rely on router & update query to match existing bundles (MOCK)

* refactor(sanity): update handle methods to have callback

* feat(sanity): add guardrails for title naming on bundle create

* docs(sanity): update comments to potentially move things to plugin

* refactor(sanity): merge version badges & icons

* refactor(sanity): use speakingurl instead of toSlug

* feat(releases): initialising releases plugin (#7048)

* docs(sanity): update comment on getAllVersionsOfDocument

* fix(sanity): listing existing versions didn't account for published

* chore(sanity): move latest version up (temp)

* feat(sanity): update navigation of perspective + add "current badge"

* feat(sanity): add global version navigation

* refactor(sanity): hide document version picker, update the document icon

* feat(sanity): update studio nav bar (reduce create button + spacing)

* chore(sanity): general cleanup

* feat(sanity): add version provider, hide only the version picker in document

* feat(releases): create releases tool as default plugin

* feat(releases): styling and components for basic releases overview

* feat(releases): adding release detail page and routing

* feat(releases): uri decoding releaseID

* chore(sanity): clean up version context

* chore(sanity): clean up, move components & files to single folder

* chore(sanity): clean up, move components & files to single folder

* feat(corel): add bundles store

* chore(sanity): add ready button to document footer

* refactor(sanity): remove isVersion and add frontend guardrails

* chore(sanity): clean duplicate component

* chore(sanity): clean up missing dependencies

* refactor(sanity): update button

* chore(corel): use rxjs in bundlesStore listener

* refactor(sanity): clear up naming

* chore(sanity): hide ready

* chore(sanity): ready todos

* feat(corel): add retry to initialFetch

* feat(releases): remove the ready concepts

* feat(corel): include useBundleOperations and story

* fix(corel): update imports paths

* feat(sanity): add bundle modal + update colours + remove add new version from doc

* refactor(sanity): rename from release to bundle

* refactor(sanity): clean up code for types (bundleform)

* refactor(releases): refactor releases to bundles

* feat(releases): using bundle ops to fetch and create add-on bundles

* refactor(releases): type guard for at least one bundle returned

* fix(releases): fixing issue where overview header not hidden when no bundles

* feat(releases): search filters list of releases

* refactor(releases): minor refactor of hooks in BundlesOverview

* refactor(sanity): update method

* feat(releases): addijg concept loosely of bundle documents

* feat(releases): testing for BundlesTable

* feat(releases): testing for BundlesTable

* feat(releases): testing for releases overview page

* refactor(release): fixing types on the custom queries

* refactor(releases): Creating BundleIcon

* refactor(releases): minor refactor and tidy to component logic

* refactor(releases): minor format changes

* refactor(releases): create bundle dialog creates itself and then returns

* refactor(releases): create bundle dialog creates itself and then returns

* feat(releases): minor style update to match prototype on the mode picker

* feat(releases): minor style update to match prototype on the mode picker

* refactor(releases): moving search into table header as per prototype

* chore(corel): add eslintrc change, remove progress icon and update types (#7050)

---------

Co-authored-by: RitaDias <anarita151@gmail.com>
Co-authored-by: Pedro Bonamin <pedrobonamin@gmail.com>
Co-authored-by: Pedro Bonamin <46196328+pedrobonamin@users.noreply.github.com>

* refactor(releases): removing shortRelativeDate (#7051)

* chore(corel): add bundles provider (#7054)

* chore(corel): add bundles provider

* fix(corel): update bundles overview tests

* feat(COREL): update types to bundle + add create bundle functionality (#7047)

* refactor(sanity): update types to bundle

* feat(sanity): add ability to create releases from dialog + update types

* feat(sanity): update list on global and document to use store

* feat(sanity): update types, add icon and hue picker to bundles, update uis

* feat(sanity): add date picker to bundleform

* refactor(sanity): update publishAt fields in menus

* refactor(sanity): update type in dummyGetter

* chore(sanity): remove BUNDLES const

* chore(sanity): update LATEST type to Partial

* chore(sanity): update validation for bundle date creation

* chore(sanity): clean up code

* refactor(sanity): add archived filter

* refactor(sanity): make single bundle menu + clean up

* chore(sanity): add missing properties

* feat(sanity): add loading & remove unused code

* feat(sanity): add loading to document version, update filter

* chore(sanity): rename VersionBadge to BundleBadge

* chore(sanity): clean up methods and style

* chore(sanity): remove unused import

* refactor(sanity): use Bundle provider instead of store

* chore(sanity): update bundleRow to use the new name for badge

* chore(sanity): clean up code

* refactor(sanity): re-add oncancel and oncreate props in dialog

* refactor(sanity): add scroll to bundle menu

* refactor(sanity): move from archived to archivedAt

* refactor(sanity): only show the list of bundles if it has more than published / drafts

* chore(sanity): remove warnings comments

* refactor(COREL): refactor version context & renaming (#7071)

* feat(sanity): update types, add icon and hue picker to bundles, update uis

* feat(sanity): add date picker to bundleform

* refactor(sanity): update publishAt fields in menus

* chore(sanity): update LATEST type to Partial

* refactor(sanity): make single bundle menu + clean up

* chore(sanity): remove warnings comments

* refactor(sanity): move version provider to its own file + organise + add useVersion

* refactor(sanity): remove provider + context, move logic to hook

* chore(sanity): remove comments + change name from setCurrentVersion to setGlobalBundle

* chore(sanity): rename useVersion to useBundle

* chore(sanity): update comments

* chore(sanity): Rename currentVersion

* refactor(sanity): rename currentBudnle and setGlobalBundle

* chore(sanity): rename versions to bundles in core directory

* chore(sanity): rename to GlobalPerspectiveMenu and move to navbar directory

* chore(sanity): rename to DocumentPerspectiveMenu and move to navbar directory

* chore(sanity): remove isDraft from usePerspective, add new util

* refactor(sanity): remove isDraft

* refactor(sanity): use current global in the bundle badge

* fix(corel): update uses of collate, add typeguard for bundles and add release tag to addonDatasetProvider (#7074)

* fix(corel): update uses of collate, add typeguard for bundles and add release tag to addonDatasetProvider

* fix(corel): update imports for bundleRow test

* chore(corel): disable publish tests

* fix(corel): update failing tests

* fix(corel): update bundle actions definition

* fix(corel): remove not used file

* fix(corel): update DocumentHeaderTitle test

* fix(corel): fix lint issues

* feat(releases): archive and unarchive releases (#7072)

* refactor(sanity): update types to bundle

* feat(sanity): add ability to create releases from dialog + update types

* feat(sanity): update list on global and document to use store

* feat(sanity): update types, add icon and hue picker to bundles, update uis

* feat(sanity): add date picker to bundleform

* refactor(sanity): update publishAt fields in menus

* refactor(sanity): update type in dummyGetter

* chore(sanity): remove BUNDLES const

* chore(sanity): update LATEST type to Partial

* chore(sanity): update validation for bundle date creation

* chore(sanity): clean up code

* refactor(sanity): add archived filter

* refactor(sanity): make single bundle menu + clean up

* chore(sanity): add missing properties

* feat(sanity): add loading & remove unused code

* feat(sanity): add loading to document version, update filter

* chore(sanity): rename VersionBadge to BundleBadge

* chore(sanity): clean up methods and style

* chore(sanity): remove unused import

* refactor(sanity): use Bundle provider instead of store

* chore(sanity): update bundleRow to use the new name for badge

* chore(sanity): clean up code

* refactor(sanity): re-add oncancel and oncreate props in dialog

* refactor(sanity): add scroll to bundle menu

* refactor(sanity): move from archived to archivedAt

* refactor(sanity): move version provider to its own file + organise + add useVersion

* refactor(sanity): remove provider + context, move logic to hook

* chore(sanity): remove comments + change name from setCurrentVersion to setGlobalBundle

* chore(sanity): rename useVersion to useBundle

* chore(sanity): update comments

* chore(sanity): Rename currentVersion

* refactor(sanity): rename currentBudnle and setGlobalBundle

* chore(sanity): rename versions to bundles in core directory

* chore(sanity): rename to GlobalPerspectiveMenu and move to navbar directory

* chore(sanity): rename to DocumentPerspectiveMenu and move to navbar directory

* feat(releases): support for (un)archive

* chore(releases): updating testing for BundlesOverview

* chore(releases): new tests for BundleMenuButton and (un)archive

* fix(releases): disabling bundle menu btn when action is performed

---------

Co-authored-by: RitaDias <anarita151@gmail.com>
Co-authored-by: RitaDias <rita@sanity.io>

* refactor(sanity): move bundle metadata store to resource cache

Co-authored-by: Pedro Bonamin <pedrobonamin@gmail.com>

* refactor(releases): only adding metadata context when not already existing

* refactor(releases): only adding metadata context when not already existing

* refactor(releases): creating tableBundles in BundlesOverview

* refactor(releases): renaming projection of query for metadata

* chore(releases): code comments

* fix(releases): fixing issue with removing bundles from aggregator listener

* refactor(releases): nesting bundle doc metadata in TableBunde

* fix(corel): update releases router to use bundle name

* feat(corel): add bundle details screen

* chore: update @sanity/icons package

* feat(corel): releases DocumentRow updates

* fix(corel): update BundleIconEditorPicker types

* fix(corel): update bundles table test

* fix(corel): add filter in documents table

* chore(corel): update file location and naming

* feat(corel): add document actions to document row

* fix(core): remove references to bundles in useListener hook

* fix(corel): add search params to IntentLink

* chore(corel): remove router type change and restore previous pnpm-lock file

* fix(releases): fixing tests for BundlesTable

* fix(releases):adding tests for doc count and updated time to bundles table

* fix(corel): update bundlesTable tests

* fix(releases): fixing BundlesOverview tests

* feat(releases): delete bundle confirm lists document count in bundle

* refactor(releases): update BundlesMetadataContext to export interface

* fix(releases): fix BundlesTable tests

* refactor(releases): rename components and files to releases rather than bundles

* feat(releases): assigning authorId on release creation

* fix(releases): update BundleMenuButton test with hue and icon properties

* feat(releases): release detail delete uses documents count in bundle

* fix(releases): using short and temporal version of relative time

* refactor(releases): startWith to handle initial loading state on fetch

---------

Co-authored-by: Bjørge Næss <bjoerge@gmail.com>
Co-authored-by: Ash <ash@sanity.io>
Co-authored-by: RitaDias <anarita151@gmail.com>
Co-authored-by: Pedro Bonamin <46196328+pedrobonamin@users.noreply.github.com>
Co-authored-by: RitaDias <rita@sanity.io>
Co-authored-by: Pedro Bonamin <pedrobonamin@gmail.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Espen Hovlandsdal <espen@hovlandsdal.com>

* feat(corel): Add review changes screen  (#7155)

* fix(corel): add prepareForPreview in useDocumentPreviewValues

* feat(corel): add review changes screen

* fix(corel): update ReleaseReview to use new documents history data

* feat(corel): add published document listener to review changes screen

* feat(core): add new useObserveDocument hook

* feat(corel): move active screen state to query params

* chore(corel): make documentDiff component agnostic to releases

* fix(corel): update document diff is changed check

* fix(corel): update useObserveDocument hook, export it as unstable

* chore(corel): add tests to release review screen

* chore(corel): rename bundle.name to bundle.slug (#7171)

* chore(corel): rename bundle.name to bundle.slug

* chore(corel): add migration script and handlers

* fix(corel): update BundleDocument interface definition

* chore: update styling

* docs: update tags

* chore: update linting

* test: update DocumentHeaderTitle test & add guardrails

---------

Co-authored-by: Bjørge Næss <bjoerge@gmail.com>
Co-authored-by: Ash <ash@sanity.io>
Co-authored-by: Pedro Bonamin <46196328+pedrobonamin@users.noreply.github.com>
Co-authored-by: Jordan Lawrence <jordanl17@me.com>
Co-authored-by: Pedro Bonamin <pedrobonamin@gmail.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Espen Hovlandsdal <espen@hovlandsdal.com>
---
 .../src/core/bundles/util/dummyGetters.ts     |   8 +-
 .../core/bundles/util/tests/createWrapper.tsx |   4 +
 packages/sanity/src/core/index.ts             |   2 +
 .../sanity/src/core/releases/plugin/index.ts  |   9 +
 .../header/DocumentHeaderTitle.test.tsx       |  16 +-
 .../DocumentPerspectiveMenu.test.tsx          | 164 ++++++++++++++++++
 .../perspective/DocumentPerspectiveMenu.tsx   |  55 ++++--
 7 files changed, 236 insertions(+), 22 deletions(-)
 create mode 100644 packages/sanity/src/structure/panes/document/documentPanel/header/perspective/DocumentPerspectiveMenu.test.tsx

diff --git a/packages/sanity/src/core/bundles/util/dummyGetters.ts b/packages/sanity/src/core/bundles/util/dummyGetters.ts
index b12cf2d436bc..e6aee37afdb6 100644
--- a/packages/sanity/src/core/bundles/util/dummyGetters.ts
+++ b/packages/sanity/src/core/bundles/util/dummyGetters.ts
@@ -25,7 +25,7 @@ export async function getAllVersionsOfDocument(
 
   return await client.fetch(query, {}, {tag: 'document.list-versions'}).then((documents) => {
     return documents.map((doc: SanityDocument) => {
-      const sluggedName = getVersionName(doc._id)
+      const sluggedName = getBundleSlug(doc._id)
       const bundle = bundles?.find((b) => b.slug === sluggedName)
       return {
         name: speakingurl(sluggedName),
@@ -38,7 +38,11 @@ export async function getAllVersionsOfDocument(
   })
 }
 
-export function getVersionName(documentId: string): string {
+/**
+ * @internal
+ * @hidden
+ */
+export function getBundleSlug(documentId: string): string {
   if (documentId.indexOf('.') === -1) return 'Published'
   const version = documentId.slice(0, documentId.indexOf('.'))
   return version
diff --git a/packages/sanity/src/core/bundles/util/tests/createWrapper.tsx b/packages/sanity/src/core/bundles/util/tests/createWrapper.tsx
index 120caff9290b..f190aee7cb20 100644
--- a/packages/sanity/src/core/bundles/util/tests/createWrapper.tsx
+++ b/packages/sanity/src/core/bundles/util/tests/createWrapper.tsx
@@ -6,6 +6,10 @@ import {
   type TestProviderOptions,
 } from '../../../../../test/testUtils/TestProvider'
 
+/**
+ * @internal
+ * @hidden
+ */
 export const createWrapper = async (options?: TestProviderOptions) => {
   const TestProvider = await createTestProvider(options)
   return function Wrapper({children}: {children: ReactNode}): JSX.Element {
diff --git a/packages/sanity/src/core/index.ts b/packages/sanity/src/core/index.ts
index 341df7781cda..06cc369f1b08 100644
--- a/packages/sanity/src/core/index.ts
+++ b/packages/sanity/src/core/index.ts
@@ -2,7 +2,9 @@ export {
   BundleActions,
   BundleBadge,
   BundleMenu,
+  createWrapper,
   getAllVersionsOfDocument,
+  getBundleSlug,
   LATEST,
   usePerspective,
 } from './bundles'
diff --git a/packages/sanity/src/core/releases/plugin/index.ts b/packages/sanity/src/core/releases/plugin/index.ts
index 6fb23ab6b6c0..09b5fe5be986 100644
--- a/packages/sanity/src/core/releases/plugin/index.ts
+++ b/packages/sanity/src/core/releases/plugin/index.ts
@@ -25,6 +25,15 @@ export const releases = definePlugin({
       title: 'Releases',
       component: ReleasesTool,
       router: route.create('/', [route.create('/:bundleSlug')]),
+      canHandleIntent: (intent, params) => {
+        return Boolean(intent === 'release' && params.slug)
+      },
+      getIntentState(intent, params) {
+        if (intent === 'release') {
+          return {bundleSlug: params.slug}
+        }
+        return null
+      },
     },
   ],
 })
diff --git a/packages/sanity/src/structure/panes/document/documentPanel/header/DocumentHeaderTitle.test.tsx b/packages/sanity/src/structure/panes/document/documentPanel/header/DocumentHeaderTitle.test.tsx
index e6f489789d16..de78fa0d9d99 100644
--- a/packages/sanity/src/structure/panes/document/documentPanel/header/DocumentHeaderTitle.test.tsx
+++ b/packages/sanity/src/structure/panes/document/documentPanel/header/DocumentHeaderTitle.test.tsx
@@ -1,6 +1,11 @@
 import {afterEach, beforeEach, describe, expect, it, jest} from '@jest/globals'
 import {render, waitFor} from '@testing-library/react'
-import {defineConfig, type SanityClient, unstable_useValuePreview as useValuePreview} from 'sanity'
+import {
+  defineConfig,
+  type SanityClient,
+  unstable_useValuePreview as useValuePreview,
+  useBundles,
+} from 'sanity'
 import {useRouter} from 'sanity/router'
 
 import {createMockSanityClient} from '../../../../../../test/mocks/mockSanityClient'
@@ -31,6 +36,8 @@ jest.mock('sanity', () => {
   return {
     ...actual,
     unstable_useValuePreview: jest.fn(),
+    useBundles: jest.fn(),
+    getBundleSlug: jest.fn(() => ''),
   }
 })
 
@@ -39,6 +46,8 @@ jest.mock('../../../../../core/bundles/util/dummyGetters', () => ({
   getAllVersionsOfDocument: jest.fn(() => []),
 }))
 
+const mockUseBundles = useBundles as jest.Mock<typeof useBundles>
+
 describe('DocumentHeaderTitle', () => {
   const mockUseDocumentPane = useDocumentPane as jest.MockedFunction<typeof useDocumentPane>
   const mockUseValuePreview = useValuePreview as jest.MockedFunction<typeof useValuePreview>
@@ -59,6 +68,11 @@ describe('DocumentHeaderTitle', () => {
     // eslint-disable-next-line @typescript-eslint/ban-ts-comment
     // @ts-ignore
     mockUseRouter.mockReturnValue({stickyParams: {}, state: {}, navigate: jest.fn()})
+    mockUseBundles.mockReturnValue({
+      data: [],
+      loading: false,
+      dispatch: jest.fn(),
+    })
   })
 
   afterEach(() => {
diff --git a/packages/sanity/src/structure/panes/document/documentPanel/header/perspective/DocumentPerspectiveMenu.test.tsx b/packages/sanity/src/structure/panes/document/documentPanel/header/perspective/DocumentPerspectiveMenu.test.tsx
new file mode 100644
index 000000000000..875ab948b337
--- /dev/null
+++ b/packages/sanity/src/structure/panes/document/documentPanel/header/perspective/DocumentPerspectiveMenu.test.tsx
@@ -0,0 +1,164 @@
+import {beforeEach, describe, expect, it, jest} from '@jest/globals'
+import {fireEvent, render, screen} from '@testing-library/react'
+import {
+  BundleBadge,
+  type BundleDocument,
+  createWrapper,
+  getAllVersionsOfDocument,
+  getBundleSlug,
+  type SanityClient,
+  useBundles,
+  useClient,
+  usePerspective,
+} from 'sanity'
+import {useRouter} from 'sanity/router'
+
+import {DocumentPerspectiveMenu} from './DocumentPerspectiveMenu'
+
+type getBundleSlugType = (documentId: string) => string
+type GetAllVersionsOfDocumentType = (
+  bundles: BundleDocument[] | null,
+  client: SanityClient,
+  documentId: string,
+) => Promise<Partial<BundleDocument>[]>
+
+jest.mock('sanity', () => ({
+  useClient: jest.fn(),
+  usePerspective: jest.fn().mockReturnValue({
+    currentGlobalBundle: {},
+    setPerspective: jest.fn(),
+  }),
+  getAllVersionsOfDocument: jest.fn(() =>
+    Promise.resolve([
+      {
+        name: 'spring-drop',
+        title: 'Spring Drop',
+        hue: 'magenta',
+        icon: 'heart-filled',
+      },
+    ]),
+  ),
+  BundleBadge: jest.fn(),
+  useBundles: jest.fn(),
+  getBundleSlug: jest.fn(() => ''),
+}))
+
+jest.mock('sanity/router', () => ({
+  useRouter: jest.fn().mockReturnValue({
+    navigateIntent: jest.fn(),
+  }),
+  route: {
+    create: jest.fn(),
+  },
+  IntentLink: jest.fn(),
+}))
+
+const mockUseClient = useClient as jest.Mock
+const mockUseRouter = useRouter as jest.MockedFunction<typeof useRouter>
+const navigateIntent = mockUseRouter().navigateIntent as jest.Mock
+
+const mockUseBundles = useBundles as jest.Mock<typeof useBundles>
+const mockUsePerspective = usePerspective as jest.Mock
+const mockGetBundleSlug = getBundleSlug as jest.MockedFunction<getBundleSlugType>
+const mockGetAllVersionsOfDocument =
+  getAllVersionsOfDocument as jest.MockedFunction<GetAllVersionsOfDocumentType>
+const mockBundleBadge = BundleBadge as jest.Mock
+
+describe('DocumentPerspectiveMenu', () => {
+  const mockCurrent: BundleDocument = {
+    description: 'What a spring drop, allergies galore 🌸',
+    _updatedAt: '2024-07-12T10:39:32Z',
+    _rev: 'HdJONGqRccLIid3oECLjYZ',
+    authorId: 'pzAhBTkNX',
+    title: 'Spring Drop',
+    icon: 'heart-filled',
+    _id: 'db76c50e-358b-445c-a57c-8344c588a5d5',
+    _type: 'bundle',
+    slug: 'spring-drop',
+    hue: 'magenta',
+    _createdAt: '2024-07-02T11:37:51Z',
+  }
+
+  beforeEach(() => {
+    jest.clearAllMocks()
+
+    mockUseClient.mockReturnValue({})
+
+    // eslint-disable-next-line @typescript-eslint/ban-ts-comment
+    // @ts-ignore
+
+    mockBundleBadge.mockImplementation(() => <div>"test"</div>)
+
+    // Mock the data returned by useBundles hook
+    const mockData: BundleDocument[] = [mockCurrent]
+
+    mockUseBundles.mockReturnValue({
+      data: mockData,
+      loading: false,
+      dispatch: jest.fn(),
+    })
+
+    mockUsePerspective.mockReturnValue({
+      currentGlobalBundle: mockCurrent,
+      setPerspective: jest.fn(),
+    })
+  })
+
+  it('should render the bundle badge if the document exists in the global bundle', async () => {
+    // Dummy Getters
+    mockGetBundleSlug.mockReturnValue('spring-drop')
+
+    mockGetAllVersionsOfDocument.mockImplementationOnce(
+      (): Promise<any> =>
+        Promise.resolve([
+          {
+            name: 'spring-drop',
+            title: 'Spring Drop',
+            hue: 'magenta',
+            icon: 'heart-filled',
+          },
+        ]),
+    )
+
+    const wrapper = await createWrapper()
+    render(<DocumentPerspectiveMenu documentId="spring-drop.document-id" />, {wrapper})
+
+    expect(screen.getByTestId('button-document-release')).toBeInTheDocument()
+  })
+
+  it('should not render the bundle badge if the document does not exist in the bundle', async () => {
+    // Dummy Getters
+    mockGetBundleSlug.mockReturnValue('no-bundle')
+
+    const wrapper = await createWrapper()
+    render(<DocumentPerspectiveMenu documentId="document-id" />, {wrapper})
+
+    expect(screen.queryByTestId('button-document-release')).toBeNull()
+  })
+
+  it('should navigate to the release intent when the bundle badge is clicked', async () => {
+    // Dummy Getters
+    mockGetBundleSlug.mockReturnValue('spring-drop')
+
+    mockGetAllVersionsOfDocument.mockImplementationOnce(
+      (): Promise<any> =>
+        Promise.resolve([
+          {
+            name: 'spring-drop',
+            title: 'Spring Drop',
+            hue: 'magenta',
+            icon: 'heart-filled',
+          },
+        ]),
+    )
+
+    const wrapper = await createWrapper()
+    render(<DocumentPerspectiveMenu documentId="spring-drop.document-1" />, {wrapper})
+
+    expect(screen.queryByTestId('button-document-release')).toBeInTheDocument()
+    fireEvent.click(screen.getByTestId('button-document-release'))
+
+    expect(navigateIntent).toHaveBeenCalledTimes(1)
+    expect(navigateIntent).toHaveBeenCalledWith('release', {slug: 'spring-drop'})
+  })
+})
diff --git a/packages/sanity/src/structure/panes/document/documentPanel/header/perspective/DocumentPerspectiveMenu.tsx b/packages/sanity/src/structure/panes/document/documentPanel/header/perspective/DocumentPerspectiveMenu.tsx
index 05cb4d571fd0..53bdee5527c3 100644
--- a/packages/sanity/src/structure/panes/document/documentPanel/header/perspective/DocumentPerspectiveMenu.tsx
+++ b/packages/sanity/src/structure/panes/document/documentPanel/header/perspective/DocumentPerspectiveMenu.tsx
@@ -1,30 +1,35 @@
 import {ChevronDownIcon} from '@sanity/icons'
 import {Box, Button} from '@sanity/ui'
-import {useCallback, useEffect, useState} from 'react'
+import {useCallback, useEffect, useMemo, useState} from 'react'
 import {
   BundleBadge,
   type BundleDocument,
   BundleMenu,
   DEFAULT_STUDIO_CLIENT_OPTIONS,
   getAllVersionsOfDocument,
-  LATEST,
+  getBundleSlug,
+  useBundles,
   useClient,
   usePerspective,
 } from 'sanity'
+import {useRouter} from 'sanity/router'
+import {styled} from 'styled-components'
 
-// FIXME
-// eslint-disable-next-line boundaries/element-types
-import {useBundles} from '../../../../../../core/store/bundles/useBundles'
+const BadgeButton = styled(Button)({
+  cursor: 'pointer',
+})
 
 export function DocumentPerspectiveMenu(props: {documentId: string}): JSX.Element {
   const {documentId} = props
   const client = useClient(DEFAULT_STUDIO_CLIENT_OPTIONS)
-
+  const {data} = useBundles()
   const {currentGlobalBundle} = usePerspective()
+  const bundles = useMemo(() => data ?? [], [data])
 
-  const {title, hue, icon} = currentGlobalBundle
+  const existsInBundle = bundles.some((bundle) => bundle.slug === getBundleSlug(documentId))
+  const {title, hue, icon, slug} = currentGlobalBundle
 
-  const {data: bundles} = useBundles()
+  const router = useRouter()
 
   // TODO MAKE SURE THIS IS HOW WE WANT TO DO THIS
   const [documentVersions, setDocumentVersions] = useState<BundleDocument[]>([])
@@ -43,21 +48,33 @@ export function DocumentPerspectiveMenu(props: {documentId: string}): JSX.Elemen
     fetchVersionsInner()
   }, [fetchVersions])
 
+  const handleBundleClick = useCallback(() => {
+    router.navigateIntent('release', {slug})
+  }, [router, slug])
+
   return (
     <>
-      {/* FIXME Version Badge should only show when the current opened document is in a version, RIGHT
-      NOW IT'S USING THE GLOBAL */}
-      {currentGlobalBundle && currentGlobalBundle.slug === LATEST.slug && (
-        <BundleBadge hue={hue} title={title} icon={icon} padding={2} />
+      {currentGlobalBundle && existsInBundle && (
+        <BadgeButton
+          onClick={handleBundleClick}
+          mode="bleed"
+          padding={0}
+          radius="full"
+          data-testid="button-document-release"
+        >
+          <BundleBadge hue={hue} title={title} icon={icon} padding={2} />
+        </BadgeButton>
       )}
       {/** TODO IS THIS STILL NEEDED? VS THE PICKER IN STUDIO NAVBAR? */}
-      <Box flex="none">
-        <BundleMenu
-          button={<Button icon={ChevronDownIcon} mode="bleed" padding={2} space={2} />}
-          bundles={documentVersions}
-          loading={!documentVersions}
-        />
-      </Box>
+      {documentVersions.length > 0 && (
+        <Box flex="none">
+          <BundleMenu
+            button={<Button icon={ChevronDownIcon} mode="bleed" padding={2} space={2} />}
+            bundles={documentVersions}
+            loading={!documentVersions}
+          />
+        </Box>
+      )}
     </>
   )
 }