Skip to content

Commit

Permalink
refactor: update document badge logic and navigation (#7175)
Browse files Browse the repository at this point in the history
* 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 …
  • Loading branch information
8 people committed Aug 16, 2024
1 parent 213a8d8 commit 7e2a3a8
Show file tree
Hide file tree
Showing 7 changed files with 236 additions and 22 deletions.
8 changes: 6 additions & 2 deletions packages/sanity/src/core/bundles/util/dummyGetters.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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),
Expand All @@ -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
Expand Down
4 changes: 4 additions & 0 deletions packages/sanity/src/core/bundles/util/tests/createWrapper.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
2 changes: 2 additions & 0 deletions packages/sanity/src/core/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@ export {
BundleActions,
BundleBadge,
BundleMenu,
createWrapper,
getAllVersionsOfDocument,
getBundleSlug,
LATEST,
usePerspective,
} from './bundles'
Expand Down
9 changes: 9 additions & 0 deletions packages/sanity/src/core/releases/plugin/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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
},
},
],
})
Original file line number Diff line number Diff line change
@@ -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'
Expand Down Expand Up @@ -31,6 +36,8 @@ jest.mock('sanity', () => {
return {
...actual,
unstable_useValuePreview: jest.fn(),
useBundles: jest.fn(),
getBundleSlug: jest.fn(() => ''),
}
})

Expand All @@ -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>
Expand All @@ -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(() => {
Expand Down
Original file line number Diff line number Diff line change
@@ -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'})
})
})
Original file line number Diff line number Diff line change
@@ -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[]>([])
Expand All @@ -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>
)}
</>
)
}

0 comments on commit 7e2a3a8

Please sign in to comment.