sanity 6.9.2-next.21 → 6.9.2-next.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/lib/{AddonDatasetProvider-B5npf4J4.js → AddonDatasetProvider-CfAw3oMr.js} +2 -2
  2. package/lib/{AddonDatasetProvider-B5npf4J4.js.map → AddonDatasetProvider-CfAw3oMr.js.map} +1 -1
  3. package/lib/{CalendarFilter-DYJEZDCP.js → CalendarFilter-OHGevGRx.js} +3 -3
  4. package/lib/{CalendarFilter-DYJEZDCP.js.map → CalendarFilter-OHGevGRx.js.map} +1 -1
  5. package/lib/{CommentsDocumentLayout-CTL7lt6a.js → CommentsDocumentLayout-p8p-oNuH.js} +2 -2
  6. package/lib/{CommentsDocumentLayout-CTL7lt6a.js.map → CommentsDocumentLayout-p8p-oNuH.js.map} +1 -1
  7. package/lib/{CommentsField-BE_CI2SY.js → CommentsField-CqXs722Y.js} +3 -3
  8. package/lib/{CommentsField-BE_CI2SY.js.map → CommentsField-CqXs722Y.js.map} +1 -1
  9. package/lib/{CommentsInput-D_EM-t5a.js → CommentsInput-B3rd8HlF.js} +5 -5
  10. package/lib/{CommentsInput-D_EM-t5a.js.map → CommentsInput-B3rd8HlF.js.map} +1 -1
  11. package/lib/{CommentsInspector-DtBIUadl.js → CommentsInspector-DTHmjTFc.js} +5 -5
  12. package/lib/{CommentsInspector-DtBIUadl.js.map → CommentsInspector-DTHmjTFc.js.map} +1 -1
  13. package/lib/{CommentsListItem-BFRqZMJ6.js → CommentsListItem-C2Ac0esL.js} +3 -3
  14. package/lib/{CommentsListItem-BFRqZMJ6.js.map → CommentsListItem-C2Ac0esL.js.map} +1 -1
  15. package/lib/{CommentsSelectedPathProvider-CIKpHpK3.js → CommentsSelectedPathProvider-DwDw8s-s.js} +3 -3
  16. package/lib/{CommentsSelectedPathProvider-CIKpHpK3.js.map → CommentsSelectedPathProvider-DwDw8s-s.js.map} +1 -1
  17. package/lib/{CommentsStudioLayout-Dx0jIDle.js → CommentsStudioLayout-e2hCA_5z.js} +4 -4
  18. package/lib/{CommentsStudioLayout-Dx0jIDle.js.map → CommentsStudioLayout-e2hCA_5z.js.map} +1 -1
  19. package/lib/{ReleasesMetadataProvider-hILX90V4.js → ReleasesMetadataProvider-BWsmHWkh.js} +2 -2
  20. package/lib/{ReleasesMetadataProvider-hILX90V4.js.map → ReleasesMetadataProvider-BWsmHWkh.js.map} +1 -1
  21. package/lib/{ReleasesNav-DIv-1iR7.js → ReleasesNav-DPSjEs29.js} +14 -14
  22. package/lib/{ReleasesNav-DIv-1iR7.js.map → ReleasesNav-DPSjEs29.js.map} +1 -1
  23. package/lib/{ReleasesStudioLayout-DW7fJSfG.js → ReleasesStudioLayout-CtyE88nI.js} +8 -8
  24. package/lib/{ReleasesStudioLayout-DW7fJSfG.js.map → ReleasesStudioLayout-CtyE88nI.js.map} +1 -1
  25. package/lib/{ReleasesTool-BQjO7osC.js → ReleasesTool-BjbRMZlc.js} +15 -15
  26. package/lib/{ReleasesTool-BQjO7osC.js.map → ReleasesTool-BjbRMZlc.js.map} +1 -1
  27. package/lib/{SchedulePublishingStudioLayout-Cwmdz7HZ.js → SchedulePublishingStudioLayout-gZWH97ZL.js} +3 -3
  28. package/lib/{SchedulePublishingStudioLayout-Cwmdz7HZ.js.map → SchedulePublishingStudioLayout-gZWH97ZL.js.map} +1 -1
  29. package/lib/{SchedulePublishingUpsellProvider-C5B21VDh.js → SchedulePublishingUpsellProvider-DsI8OUg-.js} +2 -2
  30. package/lib/{SchedulePublishingUpsellProvider-C5B21VDh.js.map → SchedulePublishingUpsellProvider-DsI8OUg-.js.map} +1 -1
  31. package/lib/{ScheduledPublishingEnabledProvider-BNMAVqrS.js → ScheduledPublishingEnabledProvider-BDRtV8OB.js} +3 -3
  32. package/lib/{ScheduledPublishingEnabledProvider-BNMAVqrS.js.map → ScheduledPublishingEnabledProvider-BDRtV8OB.js.map} +1 -1
  33. package/lib/{SearchProvider-DkGUk8a6.js → SearchProvider-Hk7IMQqR.js} +4 -4
  34. package/lib/{SearchProvider-DkGUk8a6.js.map → SearchProvider-Hk7IMQqR.js.map} +1 -1
  35. package/lib/{SingleDocReleaseLayout-fW8U-ktp.js → SingleDocReleaseLayout-evCp37zs.js} +2 -2
  36. package/lib/{SingleDocReleaseLayout-fW8U-ktp.js.map → SingleDocReleaseLayout-evCp37zs.js.map} +1 -1
  37. package/lib/{SingleDocReleaseUpsellProvider-BNF2Rj3j.js → SingleDocReleaseUpsellProvider-BOe2BACb.js} +4 -4
  38. package/lib/{SingleDocReleaseUpsellProvider-BNF2Rj3j.js.map → SingleDocReleaseUpsellProvider-BOe2BACb.js.map} +1 -1
  39. package/lib/{TasksStudioActiveToolLayout-CHazNA61.js → TasksStudioActiveToolLayout-Dbs-1GX6.js} +11 -11
  40. package/lib/{TasksStudioActiveToolLayout-CHazNA61.js.map → TasksStudioActiveToolLayout-Dbs-1GX6.js.map} +1 -1
  41. package/lib/{TasksStudioLayout-B7bCL28Q.js → TasksStudioLayout-Pn-RwtPi.js} +5 -5
  42. package/lib/{TasksStudioLayout-B7bCL28Q.js.map → TasksStudioLayout-Pn-RwtPi.js.map} +1 -1
  43. package/lib/{Tool-rkq_tjXo.js → Tool-D4-WLZtb.js} +12 -12
  44. package/lib/{Tool-rkq_tjXo.js.map → Tool-D4-WLZtb.js.map} +1 -1
  45. package/lib/{UnpublishVersionDialog-DWYCXGkz.js → UnpublishVersionDialog-DmFHVqhI.js} +4 -4
  46. package/lib/{UnpublishVersionDialog-DWYCXGkz.js.map → UnpublishVersionDialog-DmFHVqhI.js.map} +1 -1
  47. package/lib/{UpsellDialog-BiDSVmne.js → UpsellDialog-DRhOCOce.js} +2 -2
  48. package/lib/{UpsellDialog-BiDSVmne.js.map → UpsellDialog-DRhOCOce.js.map} +1 -1
  49. package/lib/{VariantsStudioNavbar-Bae9LOIN.js → VariantsStudioNavbar-CXpr7UUl.js} +7 -7
  50. package/lib/{VariantsStudioNavbar-Bae9LOIN.js.map → VariantsStudioNavbar-CXpr7UUl.js.map} +1 -1
  51. package/lib/{VariantsTool-E4ptTHik.js → VariantsTool-BCtrSWfP.js} +7 -7
  52. package/lib/{VariantsTool-E4ptTHik.js.map → VariantsTool-BCtrSWfP.js.map} +1 -1
  53. package/lib/{WorkspaceLoader-sdFQ9rkh.js → WorkspaceLoader-_w6NnbDb.js} +21 -21
  54. package/lib/{WorkspaceLoader-sdFQ9rkh.js.map → WorkspaceLoader-_w6NnbDb.js.map} +1 -1
  55. package/lib/_createContext.js +1 -1
  56. package/lib/{buildTextSelectionFromFragment-CuXpitEZ.js → buildTextSelectionFromFragment-Egmw5rNs.js} +3 -3
  57. package/lib/{buildTextSelectionFromFragment-CuXpitEZ.js.map → buildTextSelectionFromFragment-Egmw5rNs.js.map} +1 -1
  58. package/lib/{datastores-XTDIa3jc.js → datastores-DpJ5Y313.js} +2 -2
  59. package/lib/{datastores-XTDIa3jc.js.map → datastores-DpJ5Y313.js.map} +1 -1
  60. package/lib/index.js +28 -28
  61. package/lib/{inputResolver-DLP8YZcM.js → inputResolver-BX-VuloN.js} +4 -4
  62. package/lib/{inputResolver-DLP8YZcM.js.map → inputResolver-BX-VuloN.js.map} +1 -1
  63. package/lib/{navigation.telemetry-4pppJENG.js → navigation.telemetry-VbqjOek0.js} +7 -7
  64. package/lib/{navigation.telemetry-4pppJENG.js.map → navigation.telemetry-VbqjOek0.js.map} +1 -1
  65. package/lib/{plugin-BmARoHKH.js → plugin-DGOEvpWT.js} +4 -4
  66. package/lib/{plugin-BmARoHKH.js.map → plugin-DGOEvpWT.js.map} +1 -1
  67. package/lib/{plugin-BUox1zeI.js → plugin-Da_fKb0U.js} +3 -3
  68. package/lib/{plugin-BUox1zeI.js.map → plugin-Da_fKb0U.js.map} +1 -1
  69. package/lib/{plugin-CjN39wwt.js → plugin-DqqaZdOH.js} +5 -5
  70. package/lib/{plugin-CjN39wwt.js.map → plugin-DqqaZdOH.js.map} +1 -1
  71. package/lib/{plugin-BRnqEpCl.js → plugin-qHXYpO99.js} +6 -6
  72. package/lib/{plugin-BRnqEpCl.js.map → plugin-qHXYpO99.js.map} +1 -1
  73. package/lib/{scheduleItem-Dtb26ejO.js → scheduleItem-DcC1HE9G.js} +8 -8
  74. package/lib/{scheduleItem-Dtb26ejO.js.map → scheduleItem-DcC1HE9G.js.map} +1 -1
  75. package/lib/{schedules-6qsR7E_I.js → schedules-CbnXaXM9.js} +3 -3
  76. package/lib/{schedules-6qsR7E_I.js.map → schedules-CbnXaXM9.js.map} +1 -1
  77. package/lib/{searchDocumentRelease-CUk7BiST.js → searchDocumentRelease-C5sClmGF.js} +4 -4
  78. package/lib/{searchDocumentRelease-CUk7BiST.js.map → searchDocumentRelease-C5sClmGF.js.map} +1 -1
  79. package/lib/{studioClient-D1Z2zK3C.js → studioClient-CwMJwOTd.js} +2 -2
  80. package/lib/{studioClient-D1Z2zK3C.js.map → studioClient-CwMJwOTd.js.map} +1 -1
  81. package/lib/{useBundleDocuments-BnCBcbdJ.js → useBundleDocuments-DvVAF6cf.js} +7 -7
  82. package/lib/{useBundleDocuments-BnCBcbdJ.js.map → useBundleDocuments-DvVAF6cf.js.map} +1 -1
  83. package/lib/{useComments-Bm-0CwNH.js → useComments-DuEOnDkA.js} +2 -2
  84. package/lib/{useComments-Bm-0CwNH.js.map → useComments-DuEOnDkA.js.map} +1 -1
  85. package/lib/{useCommentsTelemetry-D1kYRuPU.js → useCommentsTelemetry-BgNdQdz5.js} +3 -3
  86. package/lib/{useCommentsTelemetry-D1kYRuPU.js.map → useCommentsTelemetry-BgNdQdz5.js.map} +1 -1
  87. package/lib/{useDocumentPreviewValues-DJvES8Wi.js → useDocumentPreviewValues-B1zNjl_D.js} +3 -3
  88. package/lib/{useDocumentPreviewValues-DJvES8Wi.js.map → useDocumentPreviewValues-B1zNjl_D.js.map} +1 -1
  89. package/lib/{useFeatureEnabled-g8eZoiLM.js → useFeatureEnabled-4qCpV_mX.js} +2 -2
  90. package/lib/{useFeatureEnabled-g8eZoiLM.js.map → useFeatureEnabled-4qCpV_mX.js.map} +1 -1
  91. package/lib/{useFieldActions-BV_qfe65.js → useFieldActions-uDe2qh98.js} +2 -2
  92. package/lib/{useFieldActions-BV_qfe65.js.map → useFieldActions-uDe2qh98.js.map} +1 -1
  93. package/lib/{useReleasesToolAvailable-Duu10qV0.js → useReleasesToolAvailable-DDuNc6HV.js} +3 -3
  94. package/lib/{useReleasesToolAvailable-Duu10qV0.js.map → useReleasesToolAvailable-DDuNc6HV.js.map} +1 -1
  95. package/lib/{useScheduledDraftMenuActions-Byiy3-k3.js → useScheduledDraftMenuActions-DqkHlC0c.js} +5 -5
  96. package/lib/{useScheduledDraftMenuActions-Byiy3-k3.js.map → useScheduledDraftMenuActions-DqkHlC0c.js.map} +1 -1
  97. package/lib/{useStudioUrl-BEb30_UK.js → useStudioUrl-B4w58A2i.js} +5 -5
  98. package/lib/{useStudioUrl-BEb30_UK.js.map → useStudioUrl-B4w58A2i.js.map} +1 -1
  99. package/lib/{useTimeZone-zs0ybzXu.js → useTimeZone-8Wd1UR4j.js} +2 -2
  100. package/lib/{useTimeZone-zs0ybzXu.js.map → useTimeZone-8Wd1UR4j.js.map} +1 -1
  101. package/lib/{validationUtils-LdwtMTh5.js → validationUtils-Cuk0jhWJ.js} +4 -4
  102. package/lib/{validationUtils-LdwtMTh5.js.map → validationUtils-Cuk0jhWJ.js.map} +1 -1
  103. package/lib/{version-XEmBTnIh.js → version-BVcB_xWL.js} +2 -2
  104. package/lib/{version-XEmBTnIh.js.map → version-BVcB_xWL.js.map} +1 -1
  105. package/package.json +10 -10
@@ -1 +1 @@
1
- {"version":3,"file":"ReleasesTool-BQjO7osC.js","names":["format","RouterContextValue","SearchParam","Mode","CardinalityView","GROUP_SEARCH_PARAM_KEY","RELEASE_NOT_FOUND_SEARCH_PARAM_KEY","DATE_SEARCH_PARAM_KEY","VIEW_SEARCH_PARAM_KEY","DATE_SEARCH_PARAM_VALUE_FORMAT","getInitialReleaseNotFound","router","URLSearchParams","state","_searchParams","get","getInitialFilterDate","activeFilterDate","Date","undefined","getInitialReleaseGroupMode","activeGroupMode","getInitialCardinalityView","isScheduledDraftsEnabled","isReleasesEnabled","cardinalityView","buildReleasesSearchParams","releaseFilterDate","releaseGroupMode","params","push","SanityClient","BehaviorSubject","Observable","catchError","map","scan","shareReplay","startWith","switchMap","tap","getReleaseIdFromReleaseDocumentId","ReleaseEvent","ReleaseEventsObservableValue","events","nextCursor","loading","error","Error","INITIAL_VALUE","removeDupes","prev","next","noDupes","reduce","acc","event","has","id","set","Map","Array","from","values","addEventData","Omit","timestamp","type","origin","InitialFetchEventsOptions","client","releaseId","getReleaseActivityEvents","events$","reloadEvents","loadMore","refetchEventsTrigger$","cursor","fetchEvents","limit","params","URLSearchParams","toString","append","observable","request","url","config","dataset","tag","pipe","response","console","sort","a","b","Date","getTime","lastCursorUsed","getValue","ReleaseDocument","ReleaseType","TransactionLogEventWithEffects","applyMendozaPatch","getReleaseIdFromReleaseDocumentId","ReleaseEvent","buildReleaseEditEvents","transactions","release","_rev","id","console","error","releaseEditEvents","currentDocument","transaction","effect","effects","_id","before","revert","changed","releaseType","intendedPublishDate","state","push","type","timestamp","author","releaseName","origin","metadata","intendedPublishAt","Object","values","length","change","ReleaseDocument","SanityClient","TransactionLogEventWithEffects","catchError","distinctUntilChanged","expand","filter","from","map","Observable","of","reduce","scan","shareReplay","startWith","switchMap","tap","getTransactionsLogs","buildReleaseEditEvents","ReleaseEvent","TRANSLOG_ENTRY_LIMIT","documentTransactionsCache","Record","Object","create","removeDupes","newTransactions","oldTransactions","seen","Set","concat","transaction","has","id","add","getReleaseTransactions","documentId","client","toTransaction","cacheKey","cachedTransactions","length","fetchLogs","options","fromTransaction","tag","effectFormat","limit","reverse","pipe","response","undefined","allTransactions","batch","transactions","EditEventsObservableValue","editEvents","loading","error","Error","INITIAL_VALUE","getReleaseActivityEventsOpts","observeDocument$","getReleaseEditEvents","Boolean","prev","next","_rev","release","_id","console","acc","current","ReleaseType","ReleaseEvent","CreateReleaseEvent","ScheduleReleaseEvent","UnscheduleReleaseEvent","PublishReleaseEvent","ArchiveReleaseEvent","UnarchiveReleaseEvent","AddDocumentToReleaseEvent","DiscardDocumentFromReleaseEvent","EditReleaseEvent","BaseEvent","timestamp","author","releaseName","id","origin","type","change","Change","publishAt","documentId","documentType","versionId","revisionId","versionRevisionId","intendedPublishDate","releaseType","isCreationEvent","isCreateReleaseEvent","event","isScheduleReleaseEvent","isPublishReleaseEvent","isArchiveReleaseEvent","isUnarchiveReleaseEvent","isAddDocumentToReleaseEvent","isDiscardDocumentFromReleaseEvent","isEditReleaseEvent","isTranslogEvent","isEventsAPIEvent","Exclude","ReleaseDocument","SanityClient","combineLatest","distinctUntilChanged","filter","map","merge","Observable","of","skip","startWith","tap","DocumentPreviewStore","ReleasesReducerState","getReleaseIdFromReleaseDocumentId","RELEASES_STUDIO_CLIENT_OPTIONS","getReleaseActivityEvents","getReleaseEditEvents","isCreateReleaseEvent","isEventsAPIEvent","isTranslogEvent","ReleaseEvent","getReleaseEventsOpts","client","releaseId","releasesState$","documentPreviewStore","eventsAPIEnabled","EVENTS_INITIAL_VALUE","events","hasMore","error","loading","notEnabledActivityEvents","ReturnType","events$","nextCursor","reloadEvents","loadMore","getReleaseEvents","observeDocument$","unstable_observeDocument","apiVersion","editEvents$","releaseRev$","pipe","state","releases","get","_rev","Boolean","activityEvents","groqFilter","documentsCount$","unstable_observeDocumentIdSet","status","documentIds","length","sideEffects$","activity","edit","editEvents","sort","a","b","Date","parse","timestamp","reduce","acc","event","creationEvent","find","push","indexOf","deduplicateEvents","index","nextEvent","type","areTheSameDate","date1","date2","time1","getTime","time2","Math","abs","useMemo","useObservable","useClient","useDocumentPreviewStore","useSource","useReleasesStore","getReleaseDocumentIdFromReleaseId","RELEASES_STUDIO_CLIENT_OPTIONS","EVENTS_INITIAL_VALUE","getReleaseEvents","ReleaseEvent","ReleaseEvents","events","loading","error","Error","loadMore","hasMore","useReleaseEvents","releaseId","$","_c","client","documentPreviewStore","state$","releasesState$","source","eventsAPIEnabled","Boolean","beta","eventsAPI","releases","t0","releaseEvents","events$","t1","ReleaseState","getPublishedId","getReleaseIdFromReleaseDocumentId","isArchivedRelease","releaseState","ReleaseDocumentIntentOptions","documentId","documentTypeName","releaseId","documentRevision","isCardinalityOneRelease","variantId","path","getReleaseDocumentIntent","params","Record","searchParams","releaseName","intentParams","scheduledDraft","rev","inspect","historyEvent","historyVersion","archivedRelease","undefined","id","type","ReleaseState","Card","useMemo","RefAttributes","IntentLink","PreviewLayoutKey","DocumentPreviewPresence","SanityDefaultPreview","useDocumentPresence","useDocumentPreviewValues","getPublishedId","getReleaseIdFromReleaseDocumentId","getReleaseDocumentIntent","ReleaseDocumentPreviewProps","documentId","documentTypeName","releaseId","releaseState","documentRevision","hasValidationError","layout","isGoingToBePublished","isCardinalityOneRelease","variantId","ReleaseDocumentPreview","t0","$","_c","t1","undefined","documentPresence","t2","params","searchParams","t3","LinkComponent","linkProps","ref","rest","t4","length","previewPresence","t5","t6","t7","documentType","perspectiveStack","isLoading","previewLoading","value","resolvedPreview","t8","t9","t10","Card","Flex","Stack","Text","motion","memo","ReactNode","useMemo","styled","UserAvatar","useDateTimeFormat","useRelativeTime","useTranslation","Translate","releasesLocaleNamespace","ReleaseDocumentPreview","AddDocumentToReleaseEvent","DiscardDocumentFromReleaseEvent","isAddDocumentToReleaseEvent","isCreateReleaseEvent","isDiscardDocumentFromReleaseEvent","isEditReleaseEvent","isScheduleReleaseEvent","ReleaseEvent","StatusText","ACTIVITY_TEXT_118N","Record","addDocumentToRelease","archiveRelease","createRelease","discardDocumentFromRelease","publishRelease","scheduleRelease","unarchiveRelease","unscheduleRelease","editRelease","ReleaseEventDocumentPreview","t0","$","_c","event","releaseId","t1","documentId","documentType","ScheduleTarget","children","Symbol","for","dateStyle","timeStyle","dateTimeFormat","t","t2","bb0","change","releaseType","t3","dateString","publishAt","intendedPublishDate","format","Date","formattedDate","t4","t5","FadeInCard","create","ActivityTimestamp","timestamp","date","useTemporalPhrase","minimal","relativeTime","toISOString","t6","ReleaseActivityListItem","releaseTitle","opacity","type","bounce","duration","author","t7","t8","t9","t10","t11","t12","t13","prevProps","nextProps","id","displayName","Box","useVirtualizer","AnimatePresence","useEffect","useMemo","useRef","styled","LoadingBlock","isAddDocumentToReleaseEvent","isDiscardDocumentFromReleaseEvent","isEventsAPIEvent","isTranslogEvent","ReleaseEvent","ReleaseActivityListItem","estimateSize","event","VirtualContainer","ReleaseActivityListProps","events","releaseTitle","releaseId","hasMore","loadMore","isLoading","ReleaseActivityList","virtualizerContainerRef","HTMLDivElement","listEvents","lastEventFromEventsAPI","reverse","find","lastEventDate","Date","timestamp","filter","virtualizer","count","length","getScrollElement","current","i","overscan","paddingEnd","virtualItems","getVirtualItems","lastItem","at","index","height","getTotalSize","width","position","map","virtualRow","isLoaderRow","key","measureElement","top","left","transform","start","ReleaseDocument","CloseIcon","Box","Card","Flex","Layer","Text","useLayer","AnimatePresence","motion","useEffect","TrapFocus","styled","Button","LoadingBlock","Resizable","useTranslation","releasesLocaleNamespace","ReleaseEvents","ReleaseActivityList","ReleaseDashboardActivityPanelProps","events","release","show","overlay","onClose","MotionFlex","create","MotionCard","FillHeight","div","OverlayEscapeHandler","t0","$","_c","isTopLayer","t1","t2","handleKeyDown","event","key","window","addEventListener","removeEventListener","ReleaseDashboardActivityPanel","undefined","t","tCore","t3","t4","content","t5","t6","error","length","t7","loading","t8","metadata","title","t9","hasMore","loadMore","_id","t10","t11","t12","opacity","duration","position","inset","zIndex","background","t13","x","type","bounce","top","right","bottom","display","flexDirection","preventScroll","flex","height","t14","t15","width","maxHeight","DocumentInRelease","isGoingToUnpublish","getDocumentValidationLoading","documents","hasError","isValidating","validatedCount","forEach","doc","document","isValidated","validation","ReleaseDocument","InfoOutlineIcon","Card","Flex","Stack","Text","addDays","format","useMemo","useProjectSubscriptions","useTimeZone","useTranslation","Translate","CONTENT_RELEASES_TIME_ZONE_SCOPE","releasesLocaleNamespace","ArchivedReleaseBanner","t0","$","_c","release","state","t","tRelease","projectSubscriptions","retentionDays","featureTypes","retention","features","attributes","maxRetentionDays","utcToCurrentZoneDate","t1","bb0","_updatedAt","t2","_removalDate","Date","removalDate","Symbol","for","t3","t4","t5","Link","_temp","t6","children","EditableReleaseDocument","ReleaseDocument","useCallback","useEffect","useRef","useState","DetailIdentity","useTranslation","useWorkspace","getIsReleaseOpen","TitleDescriptionForm","useReleaseOperations","useReleasePermissions","ReleaseDetailsEditorProduction","t0","$","_c","release","updateRelease","timer","setTimer","undefined","checkWithPermissionGuard","hasUpdatePermission","setHasUpdatePermission","t1","changedValue","clearTimeout","newTimer","setTimeout","handleOnChange","isMounted","t2","t3","current","then","hasPermission","_id","t4","t5","Boolean","t6","ReleaseDetailsEditorVariants","t","metadata","title","description","ReleaseDetailsEditor","variantsEnabled","beta","variants","enabled","format","useCallback","useTimeZone","TableRelease","getPublishDateFromRelease","useReleaseTime","$","_c","t0","Symbol","for","type","timeZone","utcToCurrentZoneDate","getLocalTimeZone","const","t1","abbreviation","localeTimeZoneAbbreviation","t2","getTimezoneAbbreviation","t3","release","opts","publishDate","zoned","compact","LockIcon","Box","Flex","Text","useTranslation","useReleaseTime","releasesLocaleNamespace","ARCHIVED_RELEASE_STATES","isReleaseScheduledOrScheduling","TableRelease","ReleaseTime","React","FC","release","t0","$","_c","t","tRelease","getReleaseTime","metadata","releaseType","t1","t2","Symbol","for","opacity","t3","isScheduledOrScheduling","state","includes","isInArchivedView","t4","t5","t6","t7","format","isBefore","isValid","parse","startOfMinute","useCallback","LazyTextInput","useTimeZone","CONTENT_RELEASES_TIME_ZONE_SCOPE","dateInputFormat","ReleaseDateInput","props","$","_c","setIsIntendedScheduleDateInPast","intendedPublishAt","setIntendedPublishAt","utcToCurrentZoneDate","zoneDateToUtc","t0","intendedPublishAtTimezoneAdjusted","t1","event","parsedDate","currentTarget","value","Date","handlePublishAtInputChange","t2","undefined","t3","ReleaseType","PublishIcon","Card","Flex","Spinner","Stack","TabList","Text","useClickOutsideEvent","useToast","isBefore","startOfMinute","isEqual","useCallback","useMemo","useRef","useState","styled","Button","Popover","Tab","Tooltip","MONTH_PICKER_VARIANT","CalendarLabels","DatePicker","getCalendarLabels","useTranslation","CONTENT_RELEASES_TIME_ZONE_SCOPE","useWorkspace","ReleaseAvatar","useReleaseTime","releasesLocaleNamespace","useReleaseOperations","getIsScheduledDateInPast","getReleaseTone","getPublishDateFromRelease","isReleaseScheduledOrScheduling","NotArchivedRelease","ReleaseTime","ReleaseDateInput","ScheduleTrigger","button","ReleaseTypePicker","props","$","_c","release","variantsEnabled","Boolean","beta","variants","enabled","popoverRef","buttonRef","inputRef","datePickerRef","t","tRelease","updateRelease","toast","getReleaseTime","open","setOpen","releaseType","setReleaseType","metadata","t0","publishDate","isUpdating","setIsUpdating","t1","Date","isIntendedScheduleDateInPast","setIsIntendedScheduleDateInPast","t2","undefined","intendedPublishAt","setIntendedPublishAt","t3","toISOString","updatedDate","t4","calendarLabels","t5","dialog","document","querySelector","newRelease","push","closable","status","title","finally","close","t6","Symbol","for","current","t7","isPublishDateInPast","t8","isReleaseScheduled","t9","bb0","state","t10","date","publishDateLabel","bb1","t11","compact","compactLabel","pickedReleaseType","nextPublishAt","handleButtonReleaseTypeChange","t12","cleanDate","handlePublishAtCalendarChange","t13","handleOnPickerClick","t14","tone","t15","bb2","t16","releaseTypeIcon","t17","productionLabelContent","t18","t19","t20","t21","t22","t23","t24","t25","t26","t27","t28","t29","t30","t31","carousel","t32","popoverContent","t33","borderRadius","placement","content","t34","opacity","t35","valueText","t36","background","t37","Card","Text","useTranslation","releasesLocaleNamespace","getDocumentValidationLoading","DocumentInRelease","TRANSPARENT_BG","background","const","ReleaseValidationBadge","t0","$","_c","documents","t","totalCount","length","t1","t2","hasError","validatedCount","isValidating","tone","label","t3","t4","degreesToRadians","degrees","Math","PI","ProgressIcon","props","$","_c","progress","rest","t0","circlePath","partialCircle","length","map","_temp","join","undefined","d","t1","t2","Symbol","for","t3","vs","cx","cy","r","start","end","fromX","cos","fromY","sin","toX","toY","large","abs","sweep","CheckmarkCircleIcon","ErrorOutlineIcon","Card","CardTone","Flex","Text","useEffect","useMemo","useState","ProgressIcon","Tooltip","useTranslation","releasesLocaleNamespace","getDocumentValidationLoading","DocumentInRelease","ValidationProgressIndicator","t0","$","_c","documents","layout","t1","undefined","totalCount","length","t2","validatedCount","isValidating","hasError","showCheckmark","setShowCheckmark","hasFinishedOnce","setHasFinishedOnce","t","isFinished","isMinimal","t3","timer","setTimeout","clearTimeout","t4","t5","t6","tone","cardBackground","t7","t8","background","t9","t10","t11","t12","ReleaseDocument","CheckmarkCircleIcon","ClockIcon","DocumentsIcon","ErrorOutlineIcon","PinIcon","PinFilledIcon","UserIcon","WarningOutlineIcon","Box","Card","Container","Flex","Skeleton","Stack","Text","useCallback","useEffect","useRef","useState","Button","ToneIcon","DetailPropertiesPanel","DetailPropertiesSection","RelativeTime","TextWithTone","UserAvatar","Details","useTranslation","usePerspective","useSetPerspective","useWorkspace","ReleaseAvatar","releasesLocaleNamespace","useReleaseOperations","useReleasePermissions","getDocumentValidationLoading","getReleaseIdFromReleaseDocumentId","isNotArchivedRelease","ArchivedReleaseBanner","isCreateReleaseEvent","ReleaseEvent","ReleaseDetailsEditor","ReleaseTypePicker","ReleaseValidationBadge","DocumentInRelease","ValidationProgressIndicator","ReleaseDashboardDetailsProduction","t0","$","_c","release","documents","shouldDisplayError","shouldDisplayWarnings","isAtTimeRelease","isReleaseOpen","t","tRelease","tCore","t1","_id","releaseId","selectedReleaseId","setPerspective","document","drafts","t2","enabled","isDraftModelEnabled","isSelected","t3","metadata","title","releaseFullTitle","t4","handlePinRelease","t5","Symbol","for","t6","placement","content","t7","t8","t9","t10","t11","t12","t13","error","message","t14","t15","t16","ReleaseDashboardDetails","events","loading","undefined","state","checkWithPermissionGuard","publishRelease","schedule","variantsEnabled","Boolean","beta","variants","createAuthor","find","author","validation","isFullyValidated","length","validatedCount","statusTone","hasError","statusGlyphIcon","background","statusGlyph","releaseType","isActive","shouldDisplayPermissionWarning","setShouldDisplayPermissionWarning","isMounted","intendedPublishAt","current","then","hasPermission","Date","hasPermission_0","minWidth","icon","label","value","width","height","String","t17","t18","t19","_createdAt","t20","t21","rows","t22","t23","t24","t25","t26","t27","t28","ReleaseDocument","memo","ReactNode","useEffect","GetHookCollectionState","ReleaseActionComponent","ReleaseActionDescription","DocumentInRelease","ReleaseActionsResolverProps","actions","release","documents","onActions","children","props","states","ReleaseActionsStateHandler","t0","$","_c","renderChildren","t1","t2","t3","ReleaseActionsResolver","actionProps","ReleaseDocument","useMemo","ReleaseActionComponent","useSource","DocumentInRelease","useCustomReleaseActions","release","t0","$","_c","t1","undefined","documents","source","t2","bb0","releases","actions","t3","Symbol","for","customReleaseActions","Text","useCallback","useRouter","useTranslation","releasesLocaleNamespace","getReleaseIdFromReleaseDocumentId","ActionResult","DuplicateReleaseToastLink","t0","$","_c","actionResult","router","t","t1","navigate","releaseId","navigateToDuplicateRelease","t2","Symbol","for","cursor","marginBottom","display","t3","t4","DefinedTelemetryLog","ButtonTone","ArchivedRelease","DeletedRelease","DuplicatedRelease","UnarchivedRelease","UnscheduledRelease","ReleaseAction","BaseReleaseActionsMap","toastSuccessI18nKey","toastFailureI18nKey","telemetry","DialogActionsMap","confirmDialog","dialogId","dialogHeaderI18nKey","dialogDescriptionI18nKey","dialogConfirmButtonI18nKey","confirmButtonTone","RELEASE_ACTION_MAP","Record","Exclude","delete","archive","unarchive","unschedule","duplicate","ReleaseDocument","ErrorOutlineIcon","PublishIcon","useTelemetry","Checkbox","Flex","Stack","Text","useToast","ChangeEvent","useCallback","useEffect","useMemo","useRef","useState","Button","Dialog","MenuItem","ToneIcon","TooltipProps","useTranslation","Translate","usePerspective","useSetPerspective","useWorkspace","PublishedRelease","releasesLocaleNamespace","isReleaseDocument","useReleaseOperations","useReleasePermissions","isGoingToUnpublish","DocumentInRelease","ReleasePublishAllButtonProps","release","documents","disabled","isMenuItem","onConfirmDialogOpen","onConfirmDialogClose","ReleasePublishAllButton","t0","$","_c","t1","undefined","toast","publishRelease","discardDrafts","checkWithPermissionGuard","t","tCore","perspective","setPerspective","telemetry","document","drafts","t2","enabled","isDraftModelEnabled","publishBundleStatus","setPublishBundleStatus","shouldUpdateDrafts","setShouldUpdateDrafts","publishPermission","setPublishPermission","t3","filter","_temp","map","_temp2","draftDocumentIds","draftDocumentsCount","length","showUpdateDraftsOption","t4","some","_temp3","isValidatingDocuments","t5","_temp4","hasDocumentValidationErrors","isPublishButtonDisabled","isMounted","t6","_id","current","then","hasPermission","t7","metadata","intendedPublishAt","t8","selectedPerspective","run","log","catch","updateDraftsError","push","status","title","error","message","console","t9","publishingError","handleConfirmPublishAll","bb0","t10","t11","t12","t13","t14","t15","confirmButton","text","tone","onClick","loading","t16","t17","releaseDocumentsLength","count","t18","t19","event","currentTarget","checked","draftDocumentsLength","t20","t21","confirmPublishDialog","bb1","tooltipText","publishTooltipContent","handleInitialPublish","content","placement","Partial","icon","handleOnClick","tooltipProps","sharedProps","releaseDocument","draftDocumentExists","releaseDocument_0","validation","isValidating","validation_0","hasError","ReleaseDocument","ClockIcon","ErrorOutlineIcon","useTelemetry","Card","Flex","Stack","Text","useToast","format","isBefore","isValid","parse","startOfMinute","isEqual","useCallback","useEffect","useMemo","useRef","useState","Button","Dialog","MenuItem","ToneIcon","TooltipProps","MONTH_PICKER_VARIANT","CalendarLabels","DateTimeInput","TimeZoneButton","TimeZoneButtonElementQuery","getCalendarLabels","useTimeZone","useTranslation","Translate","CONTENT_RELEASES_TIME_ZONE_SCOPE","ScheduledRelease","releasesLocaleNamespace","useReleaseOperations","useReleasePermissions","isReleaseScheduledOrScheduling","DocumentInRelease","ReleaseScheduleButtonProps","release","documents","disabled","isMenuItem","onConfirmDialogOpen","onConfirmDialogClose","ReleaseScheduleButton","t0","$","_c","t1","undefined","toast","schedule","updateRelease","checkWithPermissionGuard","schedulePermission","setSchedulePermission","t","tCore","telemetry","utcToCurrentZoneDate","zoneDateToUtc","timeZone","status","setStatus","publishAt","setPublishAt","rerenderDialog","setRerenderDialog","t2","timeZoneAdjustedPublishAt","t3","some","_temp","isValidatingDocuments","t4","_temp2","hasDocumentValidationErrors","isScheduleButtonDisabled","isMounted","t5","_id","current","Date","then","hasPermission","t6","metadata","intendedPublishAt","t7","isScheduledDateInPast","t8","newRelease","releaseType","const","toISOString","_temp3","run","log","push","closable","title","t9","schedulingError","error","message","console","handleConfirmSchedule","calendarLabels","t10","Symbol","for","date","handleBundlePublishAtCalendarChange","t11","event","date_0","currentTarget","value","parsedDate","handleBundleInputChange","t12","handleOnDialogClose","t13","bb0","t14","_isScheduledDateInPast","t15","length","documentsLength","count","t16","t17","t18","t19","text","tone","onClick","loading","t20","t21","t22","confirmButton","cancelButton","t23","t24","t25","t26","t27","alternativeName","offset","t28","t29","t30","t31","carousel","t32","t33","t34","t35","t36","t37","confirmScheduleDialog","handleOnInitialSchedule","bb1","tooltipText","scheduleTooltipContent","content","placement","Partial","icon","handleOnClick","tooltipProps","sharedProps","validation","isValidating","validation_0","hasError","cur","ArchiveIcon","CloseCircleIcon","CopyIcon","TrashIcon","UnarchiveIcon","Dispatch","MouseEventHandler","SetStateAction","useCallback","useEffect","useMemo","useRef","useState","MenuItem","useTranslation","releasesLocaleNamespace","useReleaseOperations","useReleasePermissions","getReleaseDefaults","DocumentInRelease","ReleasePublishAllButton","ReleaseScheduleButton","ReleaseAction","ReleaseMenuButtonProps","ReleaseMenuProps","Omit","disabled","setSelectedAction","documents","ReleaseMenu","t0","$","_c","ignoreCTA","release","releaseMenuDisabled","t","archive","unarchive","deleteRelease","publishRelease","schedule","createRelease","checkWithPermissionGuard","hasArchivePermission","setHasArchivePermission","hasUnarchivePermission","setHasUnarchivePermission","hasDeletePermission","setHasDeletePermission","hasPublishPermission","setHasPublishPermission","hasSchedulePermission","setHasSchedulePermission","hasDuplicatePermission","setHasDuplicatePermission","isMounted","t1","_id","state","current","then","hasPermission","hasPermission_0","hasPermission_1","Date","hasPermission_2","hasPermission_3","hasPermission_4","t2","metadata","releaseType","t3","event","action","currentTarget","getAttribute","handleOnInitiateAction","t4","bb0","t5","t6","t7","t8","content","t9","includes","t10","archiveUnarchiveMenuItem","bb1","deleteMenuItem","bb2","unscheduleMenuItem","bb3","undefined","t11","scheduleMenuItem","bb4","t12","publishMenuItem","bb5","t13","t14","duplicateMenuItem","bb6","ActionsOrder","ReleaseDocument","Card","Flex","Stack","Text","useTranslation","ReleaseAvatar","ReleaseTitle","ReleaseTime","ReleasePreviewCard","t0","$","_c","release","t","t1","t2","metadata","title","t3","t4","Symbol","for","weight","size","t5","t6","t7","t8","ReleaseDocument","SingleActionResult","EllipsisHorizontalIcon","useTelemetry","Menu","MenuDivider","Spinner","Stack","Text","useClickOutsideEvent","useToast","SetStateAction","useCallback","useEffect","useMemo","useRef","useState","RouterContext","useRouter","Button","Dialog","MenuItem","Popover","ReleaseActionDescription","useTranslation","Translate","TranslateComponentMap","usePerspective","useSetPerspective","useWorkspace","ReleaseActionsResolver","useReleasesUpsell","useCustomReleaseActions","releasesLocaleNamespace","isReleaseLimitError","useReleaseOperations","createReleaseId","getReleaseIdFromReleaseDocumentId","DocumentInRelease","DuplicateReleaseToastLink","RELEASE_ACTION_MAP","ReleaseAction","ReleaseMenu","ReleasePreviewCard","ActionResult","releaseId","toastActionComponents","Partial","Record","actionResult","duplicate","Link","ReleaseMenuButtonProps","ignoreCTA","release","documentsCount","documents","ReleaseMenuButton","t0","$","_c","toast","router","archive","unarchive","deleteRelease","unschedule","duplicateRelease","isPerformingOperation","setIsPerformingOperation","selectedAction","setSelectedAction","selectedReleaseId","setPerspective","popoverRef","releaseMenuRef","openPopover","setOpenPopover","t1","customActions","t2","Symbol","for","customActionDescriptions","setCustomActionDescriptions","t3","actions","filter","Boolean","handleCustomActionsUpdate","releaseMenuDisabled","t","tCore","telemetry","guardWithReleaseLimitUpsell","t4","metadata","title","releaseTitle","isActionPublishOrSchedule","document","drafts","t5","enabled","isDraftModelEnabled","t6","_id","navigate","handleDelete","t7","handleUnarchive","t8","duplicateReleaseId","releaseDocuments","map","_temp","duplicatedMetadata","handleDuplicate","t9","action","actionLookup","delete","actionValues","run","log","toastSuccessI18nKey","toastComponents","push","closable","status","catch","actionError","toastFailureI18nKey","error","toString","console","finally","undefined","handleAction","t10","confirmDialog","t11","t12","bb0","t13","dialogId","t14","t15","dialogHeaderI18nKey","t16","t17","dialogConfirmButtonI18nKey","t18","t19","confirmButtonTone","text","tone","onClick","loading","disabled","t20","t21","confirmButton","cancelButton","t22","t23","dialogDescriptionI18nKey","count","t24","t25","confirmActionDialog","closePopover","handleOnButtonClick","current","action_0","handleSetSelectedAction","action_1","onHandle","handleOnActionClick","action_2","index","icon","label","content","customActionMenuItems","hasCustomActions","length","t26","t27","t28","t29","t30","t31","t32","t33","doc","promiseWithResolvers","resolve","value","T","PromiseLike","reject","reason","promise","Promise","res","rej","SanityDocument","useCallback","useEffect","useMemo","useRef","useSyncObservable","catchError","forkJoin","from","map","Observable","of","switchMap","useClient","getTransactionsLogs","getPublishedId","promiseWithResolvers","RELEASES_STUDIO_CLIENT_OPTIONS","DocumentInRelease","RevertDocument","_system","delete","RevertDocuments","DocumentRevertStates","useDocumentRevertStates","releaseDocuments","$","_c","client","observableClient","observable","transactionId","document","_rev","t0","config","dataset","resultPromiseRef","resolvedDocumentRevertStatesPromiseRef","resolvedDocumentRevertStatesResultRef","t1","t2","Symbol","for","current","promise","resolve","t3","bb0","length","t4","undefined","publishedDocuments","_temp","_temp2","toTransaction","reverse","pipe","transactions","getDocumentTransaction","docId","find","t5","documentIDs","includes","id","document_1","_id","revisionId","docRevisionPairs","t6","docId_0","publishedDocumentExists","unpublishDocument","document_2","request","url","_temp3","err","console","error","_temp5","_temp6","documentRevertStates$","memoDocumentRevertStates","documentRevertStatesResult","Promise","document_0","documents","revertDocument","_temp4","result","results","filter","err_0","useMemo","useObservable","catchError","from","map","of","useClient","getTransactionsLogs","getPublishedId","RELEASES_STUDIO_CLIENT_OPTIONS","DocumentInRelease","usePostPublishTransactions","documents","$","_c","client","transactionId","document","_rev","t0","bb0","length","t1","Symbol","for","_temp","fromTransaction","limit","pipe","_temp2","_temp3","memoHasPostPublishTransactions","_id","transactions","ReleaseDocument","RestoreIcon","useTelemetry","Box","Card","Checkbox","Flex","Text","useToast","useCallback","useEffect","useRef","useState","useRouter","Button","Dialog","useTranslation","Translate","RevertRelease","useReleasesUpsell","releasesLocaleNamespace","isReleaseLimitError","useReleaseOperations","useReleasePermissions","createReleaseId","getReleaseIdFromReleaseDocumentId","getReleaseDefaults","DocumentInRelease","useDocumentRevertStates","usePostPublishTransactions","ReleasePublishAllButtonProps","release","documents","disabled","RevertReleaseStatus","ConfirmReleaseDialog","t0","$","_c","revertReleaseStatus","setRevertReleaseStatus","t","tCore","t1","metadata","title","releaseDisplayTitle","hasPostPublishTransactions","getDocumentRevertStates","stageNewRevertRelease","setStageNewRevertRelease","toast","telemetry","revertRelease","router","t2","revertReleaseId","navigate","releaseId","navigateToRevertRelease","t3","documentRevertStates","revertReleaseId_0","run","Error","description","releaseType","log","revertType","push","closable","status","Link","cursor","marginBottom","display","catch","revertError","error","message","console","finally","handleRevertRelease","length","t4","t5","t6","t7","t8","t9","t10","confirmButton","text","tone","onClick","loading","t11","releaseDocumentsLength","t12","t13","Symbol","for","_temp","t14","t15","t16","t17","t18","t19","t20","t21","ReleaseRevertButton","guardWithReleaseLimitUpsell","isPendingGuardResponse","setIsPendingGuardResponse","createRelease","checkWithPermissionGuard","hasCreatePermission","setHasCreatePermission","handleMoveToConfirmStatus","isMounted","current","then","hasPermissions","content","ReleaseDocument","CloseCircleIcon","useTelemetry","Text","useToast","useCallback","useMemo","useState","Button","Dialog","useTranslation","Translate","UnscheduledRelease","releasesLocaleNamespace","useReleaseOperations","DocumentInRelease","ReleaseScheduleButtonProps","release","documents","disabled","ReleaseUnscheduleButton","t0","$","_c","toast","unschedule","t","tCore","telemetry","status","setStatus","t1","_id","metadata","title","run","log","catch","schedulingError","push","error","message","console","finally","handleConfirmSchedule","t2","bb0","t3","t4","t5","t6","t7","t8","text","tone","onClick","loading","t9","t10","t11","confirmButton","cancelButton","t12","t13","length","documentsLength","count","t14","t15","confirmScheduleDialog","Symbol","for","ReleaseDocument","isReleaseScheduledOrScheduling","ReleasePublishAllButton","ReleaseRevertButton","ReleaseScheduleButton","ReleaseUnscheduleButton","DocumentInRelease","ReleaseActionButton","t0","$","_c","release","documents","state","t1","length","t2","metadata","releaseType","Box","Card","Flex","Text","ReactNode","StatusItem","props","$","_c","avatar","text","testId","t0","margin","t1","undefined","t2","t3","t4","t5","ReleaseDocument","Flex","useMemo","RelativeTime","AvatarSkeleton","UserAvatar","useTranslation","isNonNullable","releasesLocaleNamespace","StatusItem","isArchiveReleaseEvent","isCreateReleaseEvent","isPublishReleaseEvent","isUnarchiveReleaseEvent","ReleaseEvent","STATUS_TITLE_I18N","createRelease","publishRelease","archiveRelease","unarchiveRelease","ReleaseStatusItems","t0","$","_c","events","release","t","t1","createEvent","find","extraEvent","_temp","filter","footerEvents","length","t2","Symbol","for","t3","t4","_createdAt","t5","map","event_0","event","id","type","author","timestamp","ReleaseDocument","Card","Flex","ReleaseMenuButton","ReleaseEvent","ReleaseActionButton","ReleaseStatusItems","DocumentInRelease","ReleaseDashboardFooter","props","$","_c","documents","release","events","t0","Symbol","for","opacity","t1","t2","t3","metadata","releaseType","t4","length","t5","t6","ReleaseDocument","LinkIcon","ShareIcon","TargetIcon","TextIcon","DefinedTelemetryLog","useTelemetry","Menu","useToast","ComponentType","useCallback","useRouter","Button","MenuButton","MenuItem","useStudioUrl","useTranslation","ReleaseIdCopied","ReleaseLinkCopied","ReleaseTitleCopied","releasesLocaleNamespace","getReleaseIdFromReleaseDocumentId","CopyReleaseActionsProps","release","icon","CopyReleaseActions","props","$","_c","t0","undefined","t","tCore","telemetry","toast","resolvePathFromState","buildIntentUrl","t1","_id","releaseId","t2","metadata","title","t3","text","event","toastKey","navigator","clipboard","writeText","log","push","id","status","copyToClipboard","t4","releasePath","url","handleCopyReleaseLink","t5","handleCopyReleaseId","t6","handleCopyReleaseTitle","t7","t8","content","t9","t10","t11","t12","t13","t14","t15","t16","t17","Symbol","for","placement","t18","EditableReleaseDocument","ReleaseDocument","Card","Flex","Stack","Text","TextArea","TextInput","useToast","ChangeEvent","useCallback","useId","useRef","useState","Button","Dialog","useTranslation","useReleaseOperations","EditReleaseDialog","release","onClose","React","JSX","Element","updateRelease","t","toast","titleId","descriptionId","title","setTitle","metadata","description","setDescription","isSaving","setIsSaving","isSavingRef","handleSave","current","next","err","console","error","push","closable","status","handleClose","event","HTMLInputElement","currentTarget","value","HTMLTextAreaElement","ReleaseDocument","useEffect","useRef","useState","getIsReleaseOpen","useReleaseOperations","useReleasePermissions","useCanEditRelease","release","$","_c","updateRelease","checkWithPermissionGuard","hasUpdatePermission","setHasUpdatePermission","t0","isReleaseOpen","isMounted","t1","t2","current","then","hasPermission","Boolean","ReleaseDocument","EditIcon","useState","Button","DetailActionRail","useTranslation","EditReleaseDialog","ReleaseMenuButton","ReleaseActionButton","DocumentInRelease","useCanEditRelease","ReleaseActionRail","t0","$","_c","release","documents","t","editOpen","setEditOpen","canEdit","t1","content","undefined","t2","t3","metadata","releaseType","t4","length","t5","t6","t7","ReleaseDocument","ChevronRightIcon","RestoreIcon","Box","Button","Container","Flex","Text","Dispatch","SetStateAction","useCallback","useRouter","DetailBackButton","useTranslation","useWorkspace","releasesLocaleNamespace","GROUP_SEARCH_PARAM_KEY","CopyReleaseActions","ReleaseActionRail","ReleaseInspector","DocumentInRelease","ReleaseDashboardHeader","props","$","_c","documents","inspector","release","setInspector","t","tCore","t0","metadata","title","router","beta","variantsEnabled","Boolean","variants","enabled","t1","state","isReleaseOpen","navigate","_searchParams","undefined","handleNavigateToReleasesList","t2","_temp","handleActivityClick","t3","Symbol","for","minWidth","t4","maxWidth","opacity","t5","t6","headerContent","t7","prev","SanityDocument","LayerProvider","PortalProvider","SearchPopover","SearchProvider","AddedDocument","Pick","Partial","AddDocumentSearch","t0","$","_c","open","onClose","releaseId","idsInRelease","t1","t2","t3","isGoingToUnpublish","BundleDocumentRow","DocumentInRelease","DocumentFilterType","DocumentActionConfig","key","tone","labelKey","FilterTabConfig","DOCUMENT_ACTION_CONFIGS","FILTER_TAB_CONFIGS","ActionCounts","Record","countDocumentsByAction","documents","reduce","acc","doc","actionType","getDocumentActionType","validation","hasError","isPending","errors","added","changed","unpublished","documentMatchesFilter","filter","document","willBeUnpublished","publishedDocumentExists","getReleaseDocumentActionConfig","find","ReleaseState","Box","Container","Flex","Skeleton","TabList","useMemo","Tab","useTranslation","releasesLocaleNamespace","countDocumentsByAction","DocumentFilterType","FILTER_TAB_CONFIGS","FilterTabConfig","DocumentInRelease","ReleaseDocumentFilterTabsProps","documents","releaseState","isLoading","activeFilter","onFilterChange","filter","inline","ReleaseDocumentFilterTabs","t0","$","_c","t1","t2","undefined","t","t3","Symbol","for","_temp","map","_temp2","skeletons","t4","length","config_0","config","key","width","height","ReleaseDocumentFilterTabsInnerProps","ReturnType","ReleaseDocumentFilterTabsInner","counts","label","labelKey","count","getTabLabel","tone","getTabTone","config_1","isSelected","t5","tabList","t6","CloseIcon","UnpublishIcon","Box","Card","Label","Menu","MenuDivider","memo","useMemo","useState","MenuButton","MenuItem","ContextMenuButton","useSchema","useTranslation","useDocumentPairPermissions","getPublishedId","getVersionFromId","DiscardVersionDialog","UnpublishVersionDialog","releasesLocaleNamespace","isGoingToUnpublish","BundleDocumentRow","DocumentActionsInner","t0","$","_c","document","releaseTitle","showDiscardDialog","setShowDiscardDialog","showUnpublishDialog","setShowUnpublishDialog","t","coreT","t1","isAlreadyUnpublished","t2","_id","publishedId","type","_type","t3","version","t4","id","permission","discardVersionPermission","isDiscardVersionPermissionsLoading","t5","unpublishPermission","isUnpublishPermissionsLoading","isDiscardVersionActionDisabled","granted","noPermissionToUnpublish","t6","bb0","t7","publishedDocumentExists","unPublishTooltipContent","isUnpublishActionDisabled","Symbol","for","t8","t9","t10","t11","t12","disabled","content","t13","t14","t15","t16","t17","t18","t19","t20","t21","t22","t23","t24","t25","prev","next","memoKey","DocumentActions","GuardedDocumentActions","props","schema","get","TransactionLogEventWithEffects","useCallback","useEffect","useMemo","useRef","useState","useClient","getTransactionsLogs","getVersionId","RELEASES_STUDIO_CLIENT_OPTIONS","historyCache","Record","transactions","Object","create","DocumentHistory","history","createdBy","lastEditedBy","editors","activeHistoryStreams","pendingHistoryResolvers","Array","acquireHistorySlot","maxConcurrent","Promise","resolve","push","releaseHistorySlot","Math","max","next","shift","useReleaseHistory","releaseDocumentId","releaseId","documentRevision","$","_c","client","setHistory","t0","bb0","t1","versionId","resetKey","prevResetKey","setPrevResetKey","cancelledRef","cacheKey","cached","run","tag","effectFormat","excludeContent","includeIdentifiedDocumentsOnly","limit","reverse","current","catch","error","console","finally","_temp","fetchAndParse","t2","t3","t4","bb1","collaborators","documentHistory","undefined","loading","length","aggregated","forEach","item","author","includes","isCreate","mutations","some","_temp2","t5","mutation","ReleaseState","CheckmarkCircleIcon","ClockIcon","ErrorOutlineIcon","Badge","Box","Card","Flex","Skeleton","Text","toString","pathToString","TFunction","CSSProperties","memo","useCallback","useEffect","useRef","useState","IntentLink","styled","ToneIcon","Tooltip","EditedByAvatar","RelativeTime","AvatarSkeleton","UserAvatar","useSchema","SanityDefaultPreview","RhombusIcon","getVariantConditionsText","getVariantIdFromDocument","getVariantTitle","SystemVariant","getReleaseIdFromReleaseDocumentId","isGoingToUnpublish","getReleaseDocumentIntent","ReleaseDocumentPreview","Headers","Column","InjectedTableProps","getDocumentActionType","getReleaseDocumentActionConfig","BundleDocumentRow","DocumentInRelease","useReleaseHistory","MemoReleaseDocumentPreview","t0","$","_c","item","releaseId","releaseState","documentRevision","t1","document","isGoingToBePublished","t2","variantId","t3","_id","_type","prev","next","memoKey","TruncatedSpan","span","DocumentType","type","schema","get","title","elementRef","isTruncated","setIsTruncated","Symbol","for","element","current","scrollWidth","clientWidth","checkTruncation","element_0","observer","ResizeObserver","observe","cancelled","fonts","ready","then","disconnect","measureRef","t4","t5","t6","textElement","t7","t8","MemoDocumentType","documentActionColumn","t","variantsEnabled","id","width","style","minWidth","sorting","sortTransform","value","undefined","header","props","headerProps","cell","cellProps","datum","actionBadge","actionType","documentActionConfig","tone","labelKey","VARIANT_ICON_CARD_STYLE","backgroundColor","VARIANT_ICON_STYLE","color","resolveDocumentVariant","variantsById","Map","variantRef","_system","variant","_ref","VariantCell","T0","T1","T2","t10","t11","t12","t13","t14","t9","bb0","conditions","flex","t15","t16","t17","getDocumentTableColumnDefs","options","searchInCommandLane","variantsLoading","Boolean","isLoading","maxWidth","toLowerCase","height","String","name","isPending","_rev","_updatedAt","errors","validation","filter","level","validationErrorCount","length","firstError","find","error","path","focusPath","intent","documentId","documentTypeName","errorLabel","count","hasError","params","searchParams","isValidating","UpdatedAtCell","releaseDocumentId","bundleId","historyDocumentId","endsWith","documentHistory","loading","lastEditedBy","EditedByReleaseCell","ReleaseDocument","SanityDocument","AddIcon","useTelemetry","Card","Container","Flex","Stack","Text","useToast","CSSProperties","useCallback","useEffect","useMemo","useState","Button","useTranslation","useWorkspace","getVersionId","getDocumentVariantType","isCardinalityOneRelease","useAllVariants","AddedVersion","releasesLocaleNamespace","useReleaseOperations","getReleaseIdFromReleaseDocumentId","DocumentTable","Table","AddDocumentSearch","AddedDocument","ReleaseDocumentFilterTabs","DocumentActions","getDocumentTableColumnDefs","searchDocumentRelease","DocumentFilterType","documentMatchesFilter","DocumentInRelease","DocumentInReleaseDetail","isAdded","BundleDocumentRow","ReleaseSummaryProps","documents","release","isLoading","FULL_HEIGHT_STYLE","height","SCROLL_CONTAINER_STYLE","overflow","scrollbarWidth","msOverflowStyle","FIT_CONTENT_STYLE","minWidth","isBundleDocumentRow","maybeBundleDocumentRow","ReleaseSummary","props","$","_c","t0","undefined","scrollContainerRef","setScrollContainerRef","toast","createVersion","telemetry","openAddDocumentDialog","setAddDocumentDialog","t1","Symbol","for","pendingAddedDocument","setPendingAddedDocument","activeFilter","setActiveFilter","t","beta","variantsEnabled","Boolean","variants","enabled","byId","variantsById","loading","variantsLoading","t2","_id","releaseId","t3","metadata","title","state","rowProps","datum","isPending","renderRowActions","t4","t5","t6","searchInCommandLane","documentTableColumnDefs","t7","handleAddDocumentClick","t8","data","searchTerm","filter","doc","matchesSearch","document","filterRows","t9","documentToAdd","versionDocumentId","pendingAddedDocumentId","pendingDocumentRow","memoKey","validation","isValidating","hasError","publishedDocumentExists","prev","origin","log","documentOrigin","t10","error","prev_0","t11","push","id","closable","status","message","closeAddDialog","documentsNoLongerPending","forEach","pendingDocument","find","document_0","length","prev_1","t12","document_1","includes","tableData","t13","t14","doc_0","filterTabRows","isCardinalityOne","hasNoDocuments","textAlign","maxWidth","t15","t16","t17","t18","t19","addDocumentFooter","addDocumentButton","commandLaneActions","showFilterTabs","column","direction","_temp","_temp2","map","_temp3","document_2","row_0","searchTerm_0","row","ErrorOutlineIcon","Box","Card","Flex","Stack","Text","motion","useEffect","useMemo","useState","useRouter","LoadingBlock","useTranslation","useWorkspace","releasesLocaleNamespace","useActiveReleases","useArchivedReleases","ReleasesRouterState","getReleaseIdFromReleaseDocumentId","RELEASE_NOT_FOUND_SEARCH_PARAM_KEY","useReleaseEvents","ReleaseDashboardActivityPanel","ReleaseDashboardDetails","ReleaseDashboardFooter","ReleaseDashboardHeader","ReleaseSummary","useReleaseDocuments","ReleaseInspector","MotionCard","create","ReleaseDetail","$","_c","router","inspector","setInspector","undefined","t","variantsEnabled","Boolean","beta","variants","enabled","releaseId","releaseIdRaw","state","decodeURIComponent","data","loading","archivedReleases","documentsLoading","results","error","bundleDocumentsError","releaseEvents","t0","t1","candidate","_id","concat","find","releaseInDetail","isNotFound","t2","navigate","_searchParams","replace","t3","bb0","t4","t5","Symbol","for","opacity","t6","t7","t8","t9","t10","t11","detailContent","position","events","t12","t13","useEffect","useReleasesMetadataProvider","ReleasesMetadata","documentCount","updatedAt","useReleasesMetadata","releaseIds","$","_c","addReleaseIdsToListener","addBundleIdsToListener","removeReleaseIdsFromListener","removeBundleIdsFromListener","state","t0","t1","length","Set","data","loading","responseData","hasUpdatedMetadata","Object","entries","some","t2","key","value","t3","t4","releaseId","fromEntries","map","error","FilterIcon","Button","useClickOutsideEvent","ReactNode","useRef","useState","Dialog","Popover","Tooltip","useTranslation","releasesLocaleNamespace","CalendarPopover","t0","$","_c","content","asDialog","buttonRef","popoverRef","isCalendarOpen","setIsCalendarOpen","t","t1","t2","Symbol","for","current","t3","t4","_temp","t5","t6","triggerButton","t7","t8","prev","ReleaseDocument","CalendarIcon","ChevronDownIcon","useTelemetry","Flex","Menu","Text","useCallback","useMemo","Button","MenuButton","MenuItem","useTranslation","isCardinalityOneRelease","NavigatedToReleasesOverview","NavigatedToScheduledDrafts","releasesLocaleNamespace","CardinalityView","CardinalityViewPickerProps","cardinalityView","loading","isScheduledDraftsEnabled","isDraftModelEnabled","isReleasesEnabled","allReleases","onCardinalityViewChange","view","getPickerView","hasSingleDocRelease","CardinalityViewPicker","t0","$","_c","t","telemetry","t1","some","t2","pickerView","t3","telemetryEvent","log","source","handleViewChange","t4","Symbol","for","t5","t6","fontWeight","t7","t8","t9","t10","t11","t12","t13","t14","t15","t16","ReleaseDocument","ScheduleReleaseAction","Stack","Text","useToast","isPast","useCallback","useMemo","useState","Dialog","useClient","useTranslation","releasesLocaleNamespace","getReleaseIdFromReleaseDocumentId","RELEASES_STUDIO_CLIENT_OPTIONS","ConfirmScheduledDraftsDialogProps","activeScheduledDrafts","onClose","useScheduleActiveDrafts","$","_c","client","t0","releases","scheduleActions","flatMap","_temp","action","scheduleActiveDrafts","t1","release","metadata","intendedPublishAt","actionType","releaseId","_id","publishAt","Date","toISOString","ConfirmScheduledDraftsDialog","t","toast","isScheduling","setIsScheduling","some","_temp2","hasPastDates","t2","t3","error","push","status","title","message","handleConfirmSchedules","t4","t5","confirmButton","text","tone","onClick","loading","disabled","t6","t7","t8","t9","t10","ReleaseDocument","WarningOutlineIcon","Box","Card","Flex","Text","useCallback","useMemo","useState","Button","useTranslation","Translate","isCardinalityOneRelease","releasesLocaleNamespace","ConfirmScheduledDraftsDialog","Mode","ConfirmActiveScheduledDraftsBannerProps","releases","releaseGroupMode","hasDateFilter","onNavigateToPaused","ConfirmActiveScheduledDraftsBanner","t0","$","_c","t","isDialogOpen","setIsDialogOpen","t1","filter","_temp","activeScheduledDrafts","shouldOpenDialog","t2","Symbol","for","handleCloseDialog","t3","handleClick","length","t4","buttonText","t5","t6","count","t7","t8","t9","t10","t11","release","state","ReleaseDocument","WarningOutlineIcon","Box","Card","Flex","Text","useMemo","useTranslation","isCardinalityOneRelease","releasesLocaleNamespace","DraftsDisabledBannerProps","isDraftModelEnabled","isScheduledDraftsEnabled","allReleases","DraftsDisabledBanner","t0","$","_c","t","hasSingleDocRelease","some","shouldShowBanner","t1","getBannerMessage","t2","Symbol","for","t3","t4","endOfDay","startOfDay","useCallback","useTimeZone","CONTENT_RELEASES_TIME_ZONE_SCOPE","useTimezoneAdjustedDateTimeRange","$","_c","zoneDateToUtc","t0","date","map","Date","CloseIcon","format","AnimatePresence","motion","useMemo","useState","Button","CalendarDay","CalendarDayProps","CalendarProps","useActiveReleases","shouldShowReleaseInView","CardinalityView","useTimezoneAdjustedDateTimeRange","ReleaseCalendarFilterDayWithCardinality","props","$","_c","data","allReleases","getTimezoneAdjustedDateTimeRange","calendarDayProps","cardinalityView","date","t0","startOfDayForTimeZone","endOfDayForTimeZone","t1","releases","filter","some","release","releasePublishAt","publishAt","metadata","intendedPublishAt","publishDateUTC","Date","releaseType","dayHasReleases","t2","fontWeight","t3","createReleaseCalendarFilterDay","ReleaseCalendarFilterDayComponent","displayName","MotionButton","create","DateFilterButton","filterDate","onClear","isExiting","setIsExiting","handleOnExitComplete","width","opacity","duration","ease","ReleaseDocument","getReleaseIdFromReleaseDocumentId","ReleaseMenuButton","useReleaseDocuments","ReleaseMenuButtonWrapper","t0","$","_c","release","documentsCount","t1","_id","results","documents","t2","CloseIcon","WarningOutlineIcon","Box","Card","Flex","Text","Button","useTranslation","releasesLocaleNamespace","ReleaseNotFoundBannerProps","onDismiss","ReleaseNotFoundBanner","t0","$","_c","t","t1","Symbol","for","t2","t3","t4","t5","content","t6","t7","ReleaseIllustration","$","_c","t0","Symbol","for","Flex","Inline","Text","Button","useTranslation","useReleasesUpsell","releasesLocaleNamespace","ReleaseIllustration","ReleasesEmptyStateProps","createReleaseButton","React","ReactNode","ReleasesEmptyState","t0","$","_c","t","mode","t1","t2","Symbol","for","maxWidth","t3","t4","t5","textAlign","t6","t7","t8","t9","t10","t11","Spinner","getReleaseIdFromReleaseDocumentId","useReleaseDocuments","ValidationProgressIndicator","ReleaseColumnValidationLoading","t0","$","_c","releaseId","t1","rId","results","documents","loading","t2","Text","Props","documentCount","ReleaseDocumentsCounter","t0","$","_c","t1","t2","PinIcon","PinFilledIcon","Box","Card","Flex","Skeleton","Stack","Text","useCallback","useRouter","Button","Tooltip","PREVIEW_SIZES","TitleSkeleton","useTranslation","Translate","usePerspective","useSetPerspective","useWorkspace","ReleaseAvatar","ReleaseTitle","releasesLocaleNamespace","getReleaseIdFromReleaseDocumentId","TableRowProps","VisibleColumn","TableRelease","ReleaseNameCell","t0","$","_c","cellProps","datum","release","router","t","tCore","selectedReleaseId","setPerspective","state","t1","_id","isLoading","releaseId","isArchived","isReleasePinned","document","drafts","t2","enabled","isDraftModelEnabled","t3","handlePinRelease","t4","Symbol","for","default","media","t5","isDeleted","tone","as","onClick","navigate","cardProps","pinButtonIcon","metadata","title","releaseTitle","t6","t7","t8","t9","t10","t11","disabled","content","t12","t13","t14","t15","t16","minWidth","t17","t18","t19","size","weight","style","t20","t21","t22","t23","t24","t25","CheckmarkCircleIcon","ErrorOutlineIcon","WarningOutlineIcon","Card","Flex","Text","TFunction","ToneIcon","Tooltip","RelativeTime","getIsScheduledDateInPast","getPublishDateFromRelease","ReleaseTime","Headers","Column","ReleaseColumnValidationLoading","ReleaseDocumentsCounter","ReleaseNameCell","Mode","TableRelease","enableColumnFormMode","currentMode","column","expectedMode","Error","undefined","releasesOverviewColumnDefs","t","releaseGroupMode","checkColumnMode","id","sorting","width","style","minWidth","maxWidth","header","props","headerProps","cell","sortTransform","release","metadata","releaseType","Infinity","publishDate","Date","getTime","cellProps","datum","isLoading","hidden","publishedAt","_updatedAt","lastActivity","direction","state","documentsMetadata","updatedAtDate","updatedAt","error","hasError","hasWarning","isDeleted","finalDocumentStates","_id","background","length","documentCount","filter","filterNull","value","T","Boolean","ReleaseDocument","EllipsisHorizontalIcon","Menu","Spinner","useClickOutsideEvent","useCallback","useMemo","useRef","useState","useRouter","Button","MenuItem","Popover","useTranslation","useScheduledDraftDocument","useScheduledDraftMenuActions","getPublishedId","isPausedCardinalityOneRelease","getReleaseIdFromReleaseDocumentId","ScheduledDraftMenuButtonWrapper","t0","$","_c","release","t","router","popoverRef","scheduledDraftMenuRef","openPopover","setOpenPopover","firstDocument","scheduledDraftDocument","_id","t1","navigateIntent","id","type","_type","scheduledDraft","handleActionComplete","t2","t3","t4","t5","documentType","documentId","disabled","onActionComplete","actions","dialogs","isPerformingOperation","t6","bb0","state","t7","deleteSchedule","publishNow","t8","schedulePublish","t9","t10","editSchedule","displayedMenuItems","canPerformActions","Boolean","Symbol","for","_temp","handleOnButtonClick","current","t11","t12","t13","t14","t15","content","t16","t17","t18","t19","prev","Flex","Text","Button","useTranslation","useSingleDocReleaseEnabled","singleDocReleaseNamespace","ReleaseIllustration","ScheduledDraftsEmptyState","$","_c","t","mode","t0","t1","Symbol","for","maxWidth","t2","t3","t4","textAlign","t5","t6","t7","t8","t9","ErrorOutlineIcon","Box","Card","Flex","Skeleton","Text","ToneIcon","Tooltip","useTranslation","useScheduledDraftDocument","releasesLocaleNamespace","ReleaseDocumentPreview","VisibleColumn","TableRelease","ScheduledDraftDocumentPreview","t0","$","_c","datum","release","cellProps","t","firstDocument","firstDocumentValidation","loading","documentsLoading","_id","isLoading","undefined","t1","Symbol","for","height","width","t2","T0","T1","T2","t10","t11","t12","t3","t4","t5","t6","t7","t8","t9","_rev","_type","state","validationErrorCount","filter","_temp","length","count","t13","t14","t15","validation","level","useScheduledDraftDocument","getReleaseIdFromReleaseDocumentId","useReleaseHistory","useReleaseCreator","releaseDocumentId","t0","$","_c","isLoading","undefined","t1","releaseId","firstDocument","loading","documentsLoading","documentHistory","historyLoading","_id","t2","Symbol","for","createdBy","t3","Flex","Skeleton","Stack","AvatarSkeleton","UserAvatar","ReleaseTime","VisibleColumn","useReleaseCreator","TableRelease","ScheduledDraftMetadataCell","t0","$","_c","datum","cellProps","createdBy","loading","creatorLoading","isLoading","undefined","_id","metadata","t1","Symbol","for","height","width","t2","t3","t4","t5","WarningOutlineIcon","Flex","Text","ToneIcon","Tooltip","useTranslation","releasesLocaleNamespace","getIsScheduledDateInPast","VisibleColumn","TableRelease","ScheduledDraftWarningCell","t0","$","_c","datum","cellProps","t","t1","state","hasWarning","t2","t3","Flex","TFunction","Headers","Column","ScheduledDraftDocumentPreview","ScheduledDraftMetadataCell","ScheduledDraftWarningCell","Mode","TableRelease","scheduledDraftsOverviewColumnDefs","t","releaseGroupMode","id","sorting","width","style","flex","header","props","headerProps","cell","Box","Container","Flex","motion","useCallback","styled","useSingleDocReleaseEnabled","useSingleDocReleaseUpsell","UpsellPanel","useReleasesUpsell","ReleaseIllustration","CardinalityView","Panel","SingleDocReleasesUpsell","$","_c","mode","upsellData","telemetryLogs","t0","panelPrimaryClicked","handlePrimaryClick","t1","panelSecondaryClicked","handleSecondaryClick","t2","t3","t4","Symbol","for","opacity","duration","ease","t5","t6","image","t7","ReleasesUpsell","SchedulesUpsell","cardinalityView","ReleaseDocument","AddIcon","ChevronDownIcon","EarthGlobeIcon","Box","ButtonMode","Card","Flex","Inline","useMediaIndex","isSameDay","AnimatePresence","motion","CSSProperties","MouseEventHandler","useCallback","useEffect","useMemo","useRef","useState","useRouter","Button","Tooltip","CalendarFilter","useDialogTimeZone","useTimeZone","useTranslation","usePerspective","useSingleDocReleaseEnabled","useScheduledDraftsEnabled","CONTENT_RELEASES_TIME_ZONE_SCOPE","useWorkspace","isCardinalityOneRelease","isPausedCardinalityOneRelease","CreateReleaseDialog","useReleasesUpsell","releasesLocaleNamespace","isReleaseDocument","useActiveReleases","useArchivedReleases","useReleaseOperations","useReleasePermissions","ReleasesMetadata","useReleasesMetadata","getIsScheduledDateInPast","getReleaseTone","filterReleasesForOverview","getReleaseDefaults","shouldShowReleaseInView","Table","TableRowProps","TableSort","CalendarPopover","CardinalityViewPicker","ConfirmActiveScheduledDraftsBanner","DraftsDisabledBanner","buildReleasesSearchParams","CardinalityView","getInitialCardinalityView","getInitialFilterDate","getInitialReleaseGroupMode","getInitialReleaseNotFound","Mode","createReleaseCalendarFilterDay","DateFilterButton","ReleaseMenuButtonWrapper","ReleaseNotFoundBanner","ReleasesEmptyState","releasesOverviewColumnDefs","ScheduledDraftMenuButtonWrapper","ScheduledDraftsEmptyState","scheduledDraftsOverviewColumnDefs","SchedulesUpsell","useTimezoneAdjustedDateTimeRange","MotionButton","create","TableRelease","documentsMetadata","isDeleted","DEFAULT_RELEASES_OVERVIEW_SORT","column","direction","DEFAULT_ARCHIVED_RELEASES_OVERVIEW_SORT","toLocalDateComponents","utcDate","Date","utcToZoneDate","date","tz","getFullYear","getMonth","getDate","ReleasesOverview","$","_c","data","allReleases","loading","loadingReleases","allArchivedReleases","mode","releasesUpsellMode","handleOpenDialog","handleOpenReleasesUpsellDialog","scheduledDraftsMode","isScheduledDraftsEnabled","document","releases","releasesConfig","isReleasesEnabled","Boolean","enabled","isDraftModelEnabled","drafts","router","navigateRef","navigate","t0","releaseGroupMode","setReleaseGroupMode","t1","cardinalityView","t2","releaseFilterDate","setReleaseFilterDate","t3","showReleaseNotFound","setShowReleaseNotFound","isCreateReleaseDialogOpen","setIsCreateReleaseDialogOpen","t4","filter","t5","archivedReleases","t6","_temp","pausedReleases","t7","map","_temp2","releaseIds","releasesMetadata","loadingReleasesMetadata","loadingTableData","length","t","tCore","timeZone","utcToCurrentZoneDate","selectedPerspective","DialogTimeZone","dialogProps","dialogTimeZoneShow","getTimezoneAdjustedDateTimeRange","createRelease","checkWithPermissionGuard","hasCreatePermission","setHasCreatePermission","mediaIndex","isNarrowViewport","t8","minWidth","order","undefined","narrowFilterStyle","t9","marginLeft","narrowTimezoneStyle","timeZoneLabel","abbreviation","namePretty","t10","tooltipProps","content","iconRight","text","timeZoneButtonProps","t11","datum","tone","_id","state","getRowProps","scrollContainerRef","setScrollContainerRef","hasReleases","showDraftsDisabledBanner","loadingOrHasReleases","hasNoReleases","t12","bb0","t13","Symbol","for","t14","release_1","release","publishAt","metadata","intendedPublishAt","tableReleases","isMounted","current","then","hasPermissions","t15","handleDismissReleaseNotFound","t16","t17","currentTarget","t18","value","groupMode","handleReleaseGroupModeChange","view","_searchParams","handleCardinalityViewChange","prevFilterDate","normalized","handleSelectFilterDate","t19","clearFilterDate","t20","handleNavigateToPaused","t21","t22","t23","replace","hasMounted","setHasMounted","t24","t25","showCalendar","t26","t27","initial","opacity","animate","transition","duration","ease","const","t28","disabled","padding","groupModeButtonBaseProps","t29","t30","t31","t32","t33","t34","t35","t36","t37","t38","t39","t40","currentArchivedPicker","t41","handleOnClickCreateRelease","t42","bb1","t43","t44","t45","t46","t47","t48","createReleaseButton","createdReleaseId","releaseId","stickyParams","excludedPerspectives","perspective","handleOnCreateRelease","datum_0","release_2","isLoading","documentsCount","documentCount","finalDocumentStates","renderRowActions","dateFilter","filterDate","filteredReleases","some","_temp3","showConfirmActiveScheduledDraftsBanner","t49","calendarFilterContent","t50","renderCalendarFilter","t51","bb2","t52","tableColumns","hasBannerAboveTable","isArchivedReleasesView","defaultTableSort","releasesEmptyStateComponent","t53","bb3","t54","tableEmptyState","renderNoReleasesEmptyState","isUpsell","t55","height","t56","t57","position","t58","t59","t60","t61","t62","t63","t64","t65","t66","t67","t68","t69","t70","t71","t72","t73","t74","t75","release_3","release_0","useRouter","ReleaseDetail","ReleasesOverview","ReleasesTool","$","_c","router","releaseId","state","t0","Symbol","for"],"sources":["../src/core/releases/tool/overview/queryParamUtils.ts","../src/core/releases/tool/detail/events/getReleaseActivityEvents.ts","../src/core/releases/tool/detail/events/buildReleaseEditEvents.ts","../src/core/releases/tool/detail/events/getReleaseEditEvents.ts","../src/core/releases/tool/detail/events/types.ts","../src/core/releases/tool/detail/events/getReleaseEvents.ts","../src/core/releases/tool/detail/events/useReleaseEvents.ts","../src/core/releases/tool/components/getReleaseDocumentIntent.ts","../src/core/releases/tool/components/ReleaseDocumentPreview.tsx","../src/core/releases/tool/detail/ReleaseActivityListItem.tsx","../src/core/releases/tool/detail/ReleaseActivityList.tsx","../src/core/releases/tool/detail/ReleaseDashboardActivityPanel.tsx","../src/core/releases/util/getDocumentValidationLoading.ts","../src/core/releases/tool/detail/ArchivedReleaseBanner.tsx","../src/core/releases/tool/detail/ReleaseDetailsEditor.tsx","../src/core/releases/hooks/useReleaseTime.ts","../src/core/releases/tool/components/ReleaseTime.tsx","../src/core/releases/tool/detail/ReleaseDateInput.tsx","../src/core/releases/tool/detail/ReleaseTypePicker.tsx","../src/core/releases/tool/detail/ReleaseValidationBadge.tsx","../src/ui-components/progressIcon/ProgressIcon.tsx","../src/core/releases/tool/detail/ValidationProgressIndicator.tsx","../src/core/releases/tool/detail/ReleaseDashboardDetails.tsx","../src/core/releases/components/ReleaseActionsResolver.tsx","../src/core/releases/hooks/useCustomReleaseActions.ts","../src/core/releases/tool/components/ReleaseMenuButton/DuplicateReleaseToastLink.tsx","../src/core/releases/tool/components/ReleaseMenuButton/releaseActions.ts","../src/core/releases/tool/components/releaseCTAButtons/ReleasePublishAllButton.tsx","../src/core/releases/tool/components/releaseCTAButtons/ReleaseScheduleButton.tsx","../src/core/releases/tool/components/ReleaseMenuButton/ReleaseMenu.tsx","../src/core/releases/tool/components/ReleaseMenuButton/ReleasePreviewCard.tsx","../src/core/releases/tool/components/ReleaseMenuButton/ReleaseMenuButton.tsx","../src/core/util/promiseWithResolvers.ts","../src/core/releases/tool/components/releaseCTAButtons/ReleaseRevertButton/useDocumentRevertStates.ts","../src/core/releases/tool/components/releaseCTAButtons/ReleaseRevertButton/usePostPublishTransactions.ts","../src/core/releases/tool/components/releaseCTAButtons/ReleaseRevertButton/ReleaseRevertButton.tsx","../src/core/releases/tool/components/releaseCTAButtons/ReleaseUnscheduleButton.tsx","../src/core/releases/tool/detail/ReleaseActionButton.tsx","../src/core/releases/tool/components/StatusItem.tsx","../src/core/releases/tool/detail/ReleaseStatusItems.tsx","../src/core/releases/tool/detail/ReleaseDashboardFooter.tsx","../src/core/releases/tool/detail/CopyReleaseActions.tsx","../src/core/releases/components/dialog/EditReleaseDialog.tsx","../src/core/releases/tool/detail/useCanEditRelease.ts","../src/core/releases/tool/detail/ReleaseActionRail.tsx","../src/core/releases/tool/detail/ReleaseDashboardHeader.tsx","../src/core/releases/tool/detail/AddDocumentSearch.tsx","../src/core/releases/tool/detail/releaseDocumentActions.ts","../src/core/releases/tool/detail/components/ReleaseDocumentFilterTabs.tsx","../src/core/releases/tool/detail/documentTable/DocumentActions.tsx","../src/core/releases/tool/detail/documentTable/useReleaseHistory.ts","../src/core/releases/tool/detail/documentTable/DocumentTableColumnDefs.tsx","../src/core/releases/tool/detail/ReleaseSummary.tsx","../src/core/releases/tool/detail/ReleaseDetail.tsx","../src/core/releases/store/useReleasesMetadata.ts","../src/core/releases/tool/overview/CalendarPopover.tsx","../src/core/releases/tool/overview/CardinalityViewPicker.tsx","../src/core/releases/tool/overview/ConfirmScheduledDraftsDialog.tsx","../src/core/releases/tool/overview/ConfirmActiveScheduledDraftsBanner.tsx","../src/core/releases/tool/overview/DraftsDisabledBanner.tsx","../src/core/releases/tool/overview/useTimezoneAdjustedDateTimeRange.ts","../src/core/releases/tool/overview/ReleaseCalendarFilter.tsx","../src/core/releases/tool/overview/ReleaseMenuButtonWrapper.tsx","../src/core/releases/tool/overview/ReleaseNotFoundBanner.tsx","../src/core/releases/tool/resources/ReleaseIllustration.tsx","../src/core/releases/tool/overview/ReleasesEmptyState.tsx","../src/core/releases/tool/overview/columnCells/ReleaseColumnValidationLoading.tsx","../src/core/releases/tool/overview/columnCells/ReleaseDocumentsCounter.tsx","../src/core/releases/tool/overview/columnCells/ReleaseName.tsx","../src/core/releases/tool/overview/ReleasesOverviewColumnDefs.tsx","../src/core/releases/tool/overview/ScheduledDraftMenuButtonWrapper.tsx","../src/core/releases/tool/overview/ScheduledDraftsEmptyState.tsx","../src/core/releases/tool/overview/columnCells/ScheduledDraftDocumentPreview.tsx","../src/core/releases/tool/overview/hooks/useReleaseCreator.ts","../src/core/releases/tool/overview/columnCells/ScheduledDraftMetadataCell.tsx","../src/core/releases/tool/overview/columnCells/ScheduledDraftWarningCell.tsx","../src/core/releases/tool/overview/ScheduledDraftsOverviewColumnDefs.tsx","../src/core/releases/tool/overview/SchedulesUpsell.tsx","../src/core/releases/tool/overview/ReleasesOverview.tsx","../src/core/releases/tool/ReleasesTool.tsx"],"sourcesContent":["import {format} from 'date-fns/format'\nimport {type RouterContextValue, type SearchParam} from 'sanity/router'\n\nexport type Mode = 'active' | 'paused' | 'archived'\nexport type CardinalityView = 'releases' | 'drafts'\n\nexport const GROUP_SEARCH_PARAM_KEY = 'group'\nexport const RELEASE_NOT_FOUND_SEARCH_PARAM_KEY = 'releaseNotFound'\nconst DATE_SEARCH_PARAM_KEY = 'date'\nconst VIEW_SEARCH_PARAM_KEY = 'view'\n\nconst DATE_SEARCH_PARAM_VALUE_FORMAT = 'yyyy-MM-dd'\n\nexport function getInitialReleaseNotFound(router: RouterContextValue): boolean {\n return (\n new URLSearchParams(router.state._searchParams).get(RELEASE_NOT_FOUND_SEARCH_PARAM_KEY) ===\n 'true'\n )\n}\n\nexport const getInitialFilterDate = (router: RouterContextValue) => () => {\n const activeFilterDate = new URLSearchParams(router.state._searchParams).get(\n DATE_SEARCH_PARAM_KEY,\n )\n\n return activeFilterDate ? new Date(activeFilterDate) : undefined\n}\n\nexport const getInitialReleaseGroupMode = (router: RouterContextValue) => (): Mode => {\n const activeGroupMode = new URLSearchParams(router.state._searchParams).get(\n GROUP_SEARCH_PARAM_KEY,\n )\n\n if (activeGroupMode === 'archived') return 'archived'\n if (activeGroupMode === 'paused') return 'paused'\n return 'active'\n}\n\nexport const getInitialCardinalityView =\n ({\n router,\n isScheduledDraftsEnabled,\n isReleasesEnabled,\n }: {\n router: RouterContextValue\n isScheduledDraftsEnabled: boolean\n isReleasesEnabled: boolean\n }) =>\n (): CardinalityView => {\n if (!isScheduledDraftsEnabled) {\n return 'releases'\n }\n\n if (!isReleasesEnabled) {\n return 'drafts'\n }\n\n // Both are enabled, use the query param\n const cardinalityView = new URLSearchParams(router.state._searchParams).get(\n VIEW_SEARCH_PARAM_KEY,\n )\n\n // 'drafts' is the only value we store in the query param\n // absence of the param means 'releases' (default)\n return cardinalityView === 'drafts' ? 'drafts' : 'releases'\n }\n\nexport const buildReleasesSearchParams = (\n releaseFilterDate: Date | undefined,\n releaseGroupMode: Mode,\n cardinalityView: CardinalityView,\n): SearchParam[] => {\n const params: SearchParam[] = []\n\n if (releaseFilterDate) {\n params.push([DATE_SEARCH_PARAM_KEY, format(releaseFilterDate, DATE_SEARCH_PARAM_VALUE_FORMAT)])\n } else if (releaseGroupMode !== 'active') {\n // Add group param when there's no date filter and it's not 'active' (default)\n params.push([GROUP_SEARCH_PARAM_KEY, releaseGroupMode])\n }\n\n // Only add view param when it's 'drafts' (releases is default, no param needed)\n if (cardinalityView === 'drafts') {\n params.push([VIEW_SEARCH_PARAM_KEY, 'drafts'])\n }\n\n return params\n}\n","import {type SanityClient} from '@sanity/client'\nimport {BehaviorSubject, type Observable} from 'rxjs'\nimport {catchError, map, scan, shareReplay, startWith, switchMap, tap} from 'rxjs/operators'\n\nimport {getReleaseIdFromReleaseDocumentId} from '../../../util/getReleaseIdFromReleaseDocumentId'\nimport {type ReleaseEvent} from './types'\n\nexport interface ReleaseEventsObservableValue {\n events: ReleaseEvent[]\n nextCursor: string\n loading: boolean\n error: null | Error\n}\nexport const INITIAL_VALUE: ReleaseEventsObservableValue = {\n events: [],\n nextCursor: '',\n loading: true,\n error: null,\n}\n\nfunction removeDupes(prev: ReleaseEvent[], next: ReleaseEvent[]): ReleaseEvent[] {\n const noDupes = [...prev, ...next].reduce((acc, event) => {\n if (acc.has(event.id)) {\n return acc\n }\n return acc.set(event.id, event)\n }, new Map<string, ReleaseEvent>())\n return Array.from(noDupes.values())\n}\n\nexport function addEventData(event: Omit<ReleaseEvent, 'id' | 'origin'>): ReleaseEvent {\n return {...event, id: `${event.timestamp}-${event.type}`, origin: 'events'} as ReleaseEvent\n}\n\ninterface InitialFetchEventsOptions {\n client: SanityClient\n releaseId: string\n}\nexport function getReleaseActivityEvents({client, releaseId}: InitialFetchEventsOptions): {\n events$: Observable<ReleaseEventsObservableValue>\n reloadEvents: () => void\n loadMore: () => void\n} {\n const refetchEventsTrigger$ = new BehaviorSubject<{\n cursor: string | null\n origin: 'loadMore' | 'reload' | 'initial'\n }>({\n cursor: null,\n origin: 'initial',\n })\n\n const fetchEvents = ({limit, nextCursor}: {limit: number; nextCursor: string | null}) => {\n const params = new URLSearchParams({limit: limit.toString()})\n if (nextCursor) {\n params.append('nextCursor', nextCursor)\n }\n return client.observable\n .request<{\n events: Omit<ReleaseEvent, 'id' | 'origin'>[]\n nextCursor: string\n }>({\n url: `/data/history/${client.config().dataset}/events/releases/${getReleaseIdFromReleaseDocumentId(releaseId)}?${params.toString()}`,\n tag: 'get-release-events',\n })\n .pipe(\n map((response) => {\n return {\n events: response.events.map(addEventData),\n nextCursor: response.nextCursor,\n loading: false,\n error: null,\n }\n }),\n catchError((error) => {\n console.error(error)\n return [{events: [], nextCursor: '', loading: false, error}]\n }),\n )\n }\n\n let nextCursor: string = ''\n return {\n events$: refetchEventsTrigger$.pipe(\n switchMap(({cursor, origin}) => {\n return fetchEvents({\n nextCursor: cursor,\n limit: origin === 'reload' ? 10 : 100,\n }).pipe(\n map((response) => {\n return {...response, origin}\n }),\n startWith({events: [], nextCursor: '', loading: true, error: null, origin}),\n )\n }),\n scan((prev, next) => {\n const events = removeDupes(prev.events, next.events).sort(\n (a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime(),\n )\n return {\n events: events,\n // If we are reloading, we should keep the cursor as it was before.\n nextCursor: next.origin === 'reload' ? prev.nextCursor : next.nextCursor,\n loading: next.loading,\n error: next.error,\n }\n }, INITIAL_VALUE),\n tap((response) => {\n nextCursor = response.nextCursor\n }),\n shareReplay(1),\n ),\n /**\n * Loads new events for the release, fetching the latest events from the API.\n */\n reloadEvents: () => refetchEventsTrigger$.next({cursor: null, origin: 'reload'}),\n /**\n * Loads more events for the release, fetching the next batch of events from the API.\n */\n loadMore: () => {\n const lastCursorUsed = refetchEventsTrigger$.getValue().cursor\n if (nextCursor && lastCursorUsed !== nextCursor) {\n refetchEventsTrigger$.next({origin: 'loadMore', cursor: nextCursor})\n }\n },\n }\n}\n","import {type ReleaseDocument, type ReleaseType} from '@sanity/client'\nimport {type TransactionLogEventWithEffects} from '@sanity/types'\n\nimport {applyMendozaPatch} from '../../../../preview/utils/applyMendozaPatch'\nimport {getReleaseIdFromReleaseDocumentId} from '../../../util/getReleaseIdFromReleaseDocumentId'\nimport {type ReleaseEvent} from './types'\n\nexport function buildReleaseEditEvents(\n transactions: TransactionLogEventWithEffects[],\n release: ReleaseDocument,\n): ReleaseEvent[] {\n // Confirm we have all the events by checking the first transaction id and the release._rev, the should match.\n if (release._rev !== transactions[0]?.id) {\n console.error('Some transactions are missing, cannot calculate the edit events')\n return []\n }\n\n const releaseEditEvents: ReleaseEvent[] = []\n // We start from the last release document and apply changes in reverse order\n // Compare for each transaction what changed, if metadata.releaseType or metadata.intendedPublishAt changed build an event.\n let currentDocument = release\n for (const transaction of transactions) {\n const effect = transaction.effects[release._id]\n if (!effect) continue\n // This will apply the revert effect to the document, so we will get the document from before this change.\n const before = applyMendozaPatch(currentDocument, effect.revert, currentDocument._rev)\n const changed: {\n releaseType?: ReleaseType\n intendedPublishDate?: string\n } = {}\n\n if (before?.state !== currentDocument.state && currentDocument.state === 'archived') {\n releaseEditEvents.push({\n type: 'archiveRelease',\n timestamp: transaction.timestamp,\n author: transaction.author,\n releaseName: getReleaseIdFromReleaseDocumentId(release._id),\n id: transaction.id,\n origin: 'translog',\n })\n }\n if (before?.state !== currentDocument.state && currentDocument.state === 'published') {\n releaseEditEvents.push({\n type: 'publishRelease',\n timestamp: transaction.timestamp,\n author: transaction.author,\n releaseName: getReleaseIdFromReleaseDocumentId(release._id),\n id: transaction.id,\n origin: 'translog',\n })\n }\n\n if (before?.state === 'unarchiving' && currentDocument.state === 'active') {\n releaseEditEvents.push({\n type: 'unarchiveRelease',\n timestamp: transaction.timestamp,\n author: transaction.author,\n releaseName: getReleaseIdFromReleaseDocumentId(release._id),\n id: transaction.id,\n origin: 'translog',\n })\n }\n if (before?.metadata.releaseType !== currentDocument.metadata.releaseType) {\n changed.releaseType = currentDocument.metadata.releaseType\n }\n if (before?.metadata.intendedPublishAt !== currentDocument.metadata.intendedPublishAt) {\n changed.intendedPublishDate = currentDocument.metadata.intendedPublishAt\n }\n // If the \"changed\" object has more than one key identify it as a change event\n if (Object.values(changed).length >= 1) {\n releaseEditEvents.push({\n type: before ? 'editRelease' : 'createRelease',\n origin: 'translog',\n author: transaction.author,\n change: changed,\n id: transaction.id,\n timestamp: transaction.timestamp,\n releaseName: getReleaseIdFromReleaseDocumentId(release._id),\n })\n }\n\n if (before) {\n currentDocument = before\n }\n }\n return releaseEditEvents\n}\n","import {type ReleaseDocument, type SanityClient} from '@sanity/client'\nimport {type TransactionLogEventWithEffects} from '@sanity/types'\nimport {\n catchError,\n distinctUntilChanged,\n expand,\n filter,\n from,\n map,\n type Observable,\n of,\n reduce,\n scan,\n shareReplay,\n startWith,\n switchMap,\n tap,\n} from 'rxjs'\n\nimport {getTransactionsLogs} from '../../../../store/translog/getTransactionsLogs'\nimport {buildReleaseEditEvents} from './buildReleaseEditEvents'\nimport {type ReleaseEvent} from './types'\n\nconst TRANSLOG_ENTRY_LIMIT = 100\n\nconst documentTransactionsCache: Record<string, TransactionLogEventWithEffects[]> =\n Object.create(null)\n\nfunction removeDupes(\n newTransactions: TransactionLogEventWithEffects[],\n oldTransactions: TransactionLogEventWithEffects[],\n) {\n const seen = new Set()\n return newTransactions.concat(oldTransactions).filter((transaction) => {\n if (seen.has(transaction.id)) {\n return false\n }\n seen.add(transaction.id)\n return true\n })\n}\n\n/**\n * This will fetch all the transactions for a given release.\n * I anticipate this would be a rather small number of transactions, given the release document is \"small\" and shouldn't change much.\n *\n * We need to fetch all of them to create the correct pagination of events in the activity feed, given we need to combine this with the\n * releaseActivityEvents that will be fetched from the events api.\n */\nfunction getReleaseTransactions({\n documentId,\n client,\n toTransaction,\n}: {\n documentId: string\n client: SanityClient\n toTransaction: string\n}): Observable<TransactionLogEventWithEffects[]> {\n const cacheKey = `${documentId}`\n const cachedTransactions = documentTransactionsCache[cacheKey] || []\n if (cachedTransactions.length > 0 && cachedTransactions[0].id === toTransaction) {\n return of(cachedTransactions)\n }\n\n function fetchLogs(options: {\n fromTransaction?: string\n toTransaction: string\n }): Observable<TransactionLogEventWithEffects[]> {\n return from(\n getTransactionsLogs(client, documentId, {\n tag: 'sanity.studio.release.history',\n effectFormat: 'mendoza',\n limit: TRANSLOG_ENTRY_LIMIT,\n reverse: true,\n fromTransaction: options.fromTransaction,\n toTransaction: options.toTransaction,\n }),\n )\n }\n\n return fetchLogs({fromTransaction: cachedTransactions[0]?.id, toTransaction: toTransaction})\n .pipe(\n expand((response) => {\n // Fetch more if the transactions length is equal to the limit\n if (response.length === TRANSLOG_ENTRY_LIMIT) {\n // Continue fetching if nextCursor exists, we use the last transaction received as the cursor.\n return fetchLogs({\n fromTransaction: undefined,\n toTransaction: response[response.length - 1].id,\n })\n }\n // End recursion by emitting an empty observable\n return of()\n }),\n // Combine all batches of transactions into a single array\n reduce(\n (allTransactions, batch) => allTransactions.concat(batch),\n [] as TransactionLogEventWithEffects[],\n ),\n )\n .pipe(\n map((transactions) => removeDupes(transactions, cachedTransactions)),\n tap((transactions) => {\n documentTransactionsCache[cacheKey] = transactions\n }),\n )\n}\n\ninterface EditEventsObservableValue {\n editEvents: ReleaseEvent[]\n loading: boolean\n error: null | Error\n}\nexport const INITIAL_VALUE: EditEventsObservableValue = {\n editEvents: [],\n loading: true,\n error: null,\n}\n\ninterface getReleaseActivityEventsOpts {\n client: SanityClient\n observeDocument$: Observable<ReleaseDocument | undefined>\n}\n\nexport function getReleaseEditEvents({\n client,\n observeDocument$,\n}: getReleaseActivityEventsOpts): Observable<EditEventsObservableValue> {\n return observeDocument$.pipe(\n filter(Boolean),\n distinctUntilChanged((prev, next) => prev._rev === next._rev),\n switchMap((release) => {\n return getReleaseTransactions({\n client,\n documentId: release._id,\n toTransaction: release._rev,\n }).pipe(\n map((transactions) => {\n return {\n editEvents: buildReleaseEditEvents(transactions, release),\n loading: false,\n error: null,\n }\n }),\n catchError((error) => {\n console.error(error)\n return of({editEvents: [], loading: false, error})\n }),\n )\n }),\n startWith(INITIAL_VALUE),\n scan((acc, current) => {\n // Accumulate edit events from previous state\n const editEvents = current.loading\n ? acc.editEvents // Preserve previous events while loading\n : current.editEvents // Update with new events when available\n\n return {...current, editEvents}\n }, INITIAL_VALUE),\n shareReplay(1),\n )\n}\n","import {type ReleaseType} from '@sanity/client'\n\nexport type ReleaseEvent =\n | CreateReleaseEvent\n | ScheduleReleaseEvent\n | UnscheduleReleaseEvent\n | PublishReleaseEvent\n | ArchiveReleaseEvent\n | UnarchiveReleaseEvent\n | AddDocumentToReleaseEvent\n | DiscardDocumentFromReleaseEvent\n | EditReleaseEvent\n\nexport interface BaseEvent {\n timestamp: string\n author: string\n releaseName: string\n id: string // Added client side ${event.timestamp}-${event.type}\n origin: 'translog' | 'events' // Added client side to identify from where the event was received\n}\n\nexport interface CreateReleaseEvent extends BaseEvent {\n type: 'createRelease'\n change?: Change\n}\n\nexport interface ScheduleReleaseEvent extends BaseEvent {\n type: 'scheduleRelease'\n publishAt: string\n}\n\nexport interface UnscheduleReleaseEvent extends BaseEvent {\n type: 'unscheduleRelease'\n}\n\nexport interface PublishReleaseEvent extends BaseEvent {\n type: 'publishRelease'\n}\n\nexport interface ArchiveReleaseEvent extends BaseEvent {\n type: 'archiveRelease'\n}\n\nexport interface UnarchiveReleaseEvent extends BaseEvent {\n type: 'unarchiveRelease'\n}\n\nexport interface AddDocumentToReleaseEvent extends BaseEvent {\n type: 'addDocumentToRelease'\n documentId: string\n documentType: string\n versionId: string\n revisionId: string\n versionRevisionId: string\n}\n\nexport interface DiscardDocumentFromReleaseEvent extends BaseEvent {\n type: 'discardDocumentFromRelease'\n documentId: string\n documentType: string\n versionId: string\n versionRevisionId: string\n}\n\ninterface Change {\n intendedPublishDate?: string\n releaseType?: ReleaseType\n}\nexport interface EditReleaseEvent extends BaseEvent {\n type: 'editRelease'\n isCreationEvent?: boolean\n change: Change\n}\n\n// Type guards\nexport const isCreateReleaseEvent = (event: ReleaseEvent): event is CreateReleaseEvent =>\n event.type === 'createRelease'\nexport const isScheduleReleaseEvent = (event: ReleaseEvent): event is ScheduleReleaseEvent =>\n event.type === 'scheduleRelease'\nexport const isPublishReleaseEvent = (event: ReleaseEvent): event is PublishReleaseEvent =>\n event.type === 'publishRelease'\nexport const isArchiveReleaseEvent = (event: ReleaseEvent): event is ArchiveReleaseEvent =>\n event.type === 'archiveRelease'\nexport const isUnarchiveReleaseEvent = (event: ReleaseEvent): event is UnarchiveReleaseEvent =>\n event.type === 'unarchiveRelease'\nexport const isAddDocumentToReleaseEvent = (\n event: ReleaseEvent,\n): event is AddDocumentToReleaseEvent => event.type === 'addDocumentToRelease'\nexport const isDiscardDocumentFromReleaseEvent = (\n event: ReleaseEvent,\n): event is DiscardDocumentFromReleaseEvent => event.type === 'discardDocumentFromRelease'\nexport const isEditReleaseEvent = (event: ReleaseEvent): event is EditReleaseEvent =>\n event.type === 'editRelease'\n\nexport const isTranslogEvent = (\n event: ReleaseEvent,\n): event is EditReleaseEvent | CreateReleaseEvent => event.origin === 'translog'\n\nexport const isEventsAPIEvent = (\n event: ReleaseEvent,\n): event is Exclude<ReleaseEvent, EditReleaseEvent> => event.origin === 'events'\n","import {type ReleaseDocument, type SanityClient} from '@sanity/client'\nimport {\n combineLatest,\n distinctUntilChanged,\n filter,\n map,\n merge,\n type Observable,\n of,\n skip,\n startWith,\n tap,\n} from 'rxjs'\n\nimport {type DocumentPreviewStore} from '../../../../preview/documentPreviewStore'\nimport {type ReleasesReducerState} from '../../../store/reducer'\nimport {getReleaseIdFromReleaseDocumentId} from '../../../util/getReleaseIdFromReleaseDocumentId'\nimport {RELEASES_STUDIO_CLIENT_OPTIONS} from '../../../util/releasesClient'\nimport {getReleaseActivityEvents} from './getReleaseActivityEvents'\nimport {getReleaseEditEvents} from './getReleaseEditEvents'\nimport {isCreateReleaseEvent, isEventsAPIEvent, isTranslogEvent, type ReleaseEvent} from './types'\n\ninterface getReleaseEventsOpts {\n client: SanityClient\n releaseId: string\n releasesState$: Observable<ReleasesReducerState>\n documentPreviewStore: DocumentPreviewStore\n eventsAPIEnabled: boolean\n}\n\nexport const EVENTS_INITIAL_VALUE = {\n events: [],\n hasMore: false,\n error: null,\n loading: true,\n}\n\nconst notEnabledActivityEvents: ReturnType<typeof getReleaseActivityEvents> = {\n events$: of({\n events: [],\n nextCursor: '',\n loading: false,\n error: null,\n }),\n reloadEvents: () => {},\n loadMore: () => {},\n}\n\n/**\n * Combines activity and edit events for a release, and adds side effects for reloading events when the release or the document changes.\n */\nexport function getReleaseEvents({\n client,\n releaseId,\n releasesState$,\n documentPreviewStore,\n eventsAPIEnabled,\n}: getReleaseEventsOpts) {\n const observeDocument$ = documentPreviewStore.unstable_observeDocument(releaseId, {\n apiVersion: RELEASES_STUDIO_CLIENT_OPTIONS.apiVersion,\n }) as Observable<ReleaseDocument | undefined>\n\n const editEvents$ = getReleaseEditEvents({client, observeDocument$})\n\n const releaseRev$ = releasesState$.pipe(\n map((state) => state.releases.get(releaseId)?._rev),\n filter(Boolean),\n distinctUntilChanged(),\n // Emit only when rev changes, after first non null value.\n skip(1),\n )\n\n // Turn off activity events if eventsAPI is not enabled.\n const activityEvents = eventsAPIEnabled\n ? getReleaseActivityEvents({client, releaseId})\n : notEnabledActivityEvents\n\n const groqFilter = `sanity::partOfRelease($releaseId)`\n\n // Turn off document counts listener if eventsAPI is not enabled.\n const documentsCount$ = eventsAPIEnabled\n ? of(0)\n : documentPreviewStore\n .unstable_observeDocumentIdSet(\n groqFilter,\n {releaseId: getReleaseIdFromReleaseDocumentId(releaseId)},\n {\n apiVersion: RELEASES_STUDIO_CLIENT_OPTIONS.apiVersion,\n },\n )\n .pipe(\n filter(({status}) => status === 'connected'),\n map(({documentIds}) => documentIds.length),\n distinctUntilChanged(),\n // Emit only when count changes, after first non null value.\n skip(1),\n )\n\n const sideEffects$ = merge(releaseRev$, documentsCount$).pipe(\n tap(() => {\n activityEvents.reloadEvents()\n }),\n startWith(null),\n )\n\n const events$ = combineLatest([activityEvents.events$, editEvents$, sideEffects$]).pipe(\n map(([activity, edit]) => {\n const events = [...activity.events, ...edit.editEvents]\n .sort((a, b) => Date.parse(b.timestamp) - Date.parse(a.timestamp))\n .reduce((acc: ReleaseEvent[], event) => {\n if (isCreateReleaseEvent(event)) {\n const creationEvent = acc.find(isCreateReleaseEvent)\n if (!creationEvent) acc.push(event)\n // Prefer the translog event for the creation given it has extra information.\n else if (isEventsAPIEvent(creationEvent) && isTranslogEvent(event)) {\n acc[acc.indexOf(creationEvent)] = event\n }\n } else acc.push(event)\n return acc\n }, [])\n\n return {\n events: deduplicateEvents(events),\n hasMore: Boolean(activity.nextCursor),\n error: activity.error || edit.error,\n loading: activity.loading || edit.loading,\n }\n }),\n )\n\n return {\n events$,\n loadMore: activityEvents.loadMore,\n }\n}\n\nconst deduplicateEvents = (events: ReleaseEvent[]) => {\n // Events are sorted by timestamp, compare this event with the next one, if they are the same type and timestamp, remove it.\n return events.filter((event, index) => {\n const nextEvent = events[index + 1]\n if (!nextEvent) return true\n return !(event.type === nextEvent.type && areTheSameDate(event.timestamp, nextEvent.timestamp))\n })\n}\n\n/**\n * Checks if two dates are the same date, without contemplating miliseconds.\n * The translog has miliseconds but the events api does not.\n */\nfunction areTheSameDate(date1: string, date2: string) {\n const time1 = new Date(date1).getTime()\n const time2 = new Date(date2).getTime()\n return Math.abs(time1 - time2) <= 1000\n}\n","import {useMemo} from 'react'\nimport {useObservable} from 'react-rx'\n\nimport {useClient} from '../../../../hooks/useClient'\nimport {useDocumentPreviewStore} from '../../../../store/datastores'\nimport {useSource} from '../../../../studio/source'\nimport {useReleasesStore} from '../../../store/useReleasesStore'\nimport {getReleaseDocumentIdFromReleaseId} from '../../../util/getReleaseDocumentIdFromReleaseId'\nimport {RELEASES_STUDIO_CLIENT_OPTIONS} from '../../../util/releasesClient'\nimport {EVENTS_INITIAL_VALUE, getReleaseEvents} from './getReleaseEvents'\nimport {type ReleaseEvent} from './types'\n\nexport interface ReleaseEvents {\n events: ReleaseEvent[]\n loading: boolean\n error: null | Error\n loadMore: () => void\n hasMore: boolean\n}\n\nexport function useReleaseEvents(releaseId: string): ReleaseEvents {\n const client = useClient(RELEASES_STUDIO_CLIENT_OPTIONS)\n const documentPreviewStore = useDocumentPreviewStore()\n const {state$: releasesState$} = useReleasesStore()\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n const source = useSource()\n const eventsAPIEnabled = Boolean(source.beta?.eventsAPI?.releases)\n\n const releaseEvents = useMemo(\n () =>\n getReleaseEvents({\n client,\n releaseId: getReleaseDocumentIdFromReleaseId(releaseId),\n releasesState$,\n documentPreviewStore,\n eventsAPIEnabled,\n }),\n [releaseId, client, releasesState$, documentPreviewStore, eventsAPIEnabled],\n )\n const events = useObservable(releaseEvents.events$, EVENTS_INITIAL_VALUE)\n\n return {\n events: events.events,\n hasMore: events.hasMore,\n loading: events.loading,\n error: events.error,\n loadMore: releaseEvents.loadMore,\n }\n}\n","import {type ReleaseState} from '@sanity/client'\n\nimport {getPublishedId} from '../../../util/draftUtils'\nimport {getReleaseIdFromReleaseDocumentId} from '../../util/getReleaseIdFromReleaseDocumentId'\n\nconst isArchivedRelease = (releaseState: ReleaseState | undefined) =>\n releaseState === 'archived' || releaseState === 'archiving' || releaseState === 'unarchiving'\n\ninterface ReleaseDocumentIntentOptions {\n documentId: string\n documentTypeName: string\n releaseId: string\n releaseState?: ReleaseState\n documentRevision?: string\n isCardinalityOneRelease?: boolean\n /** Short variant id for the sticky `variant` search param. */\n variantId?: string\n /** Optional field path (stringified) to focus when the document opens. */\n path?: string\n}\n\n/**\n * Builds the `edit` intent params and search params used to open a document version\n * within a release perspective. Shared so that both the document preview link and the\n * validation deep-link resolve to the exact same document/perspective.\n *\n * @internal\n */\nexport function getReleaseDocumentIntent({\n documentId,\n documentTypeName,\n releaseId,\n releaseState,\n documentRevision,\n isCardinalityOneRelease,\n variantId,\n path,\n}: ReleaseDocumentIntentOptions): {\n params: Record<string, string | undefined>\n searchParams: [string, string][] | undefined\n} {\n const releaseName = getReleaseIdFromReleaseDocumentId(releaseId)\n\n let intentParams: Record<string, string | undefined> = {}\n if (isCardinalityOneRelease) {\n intentParams = {scheduledDraft: releaseName}\n } else if (releaseState === 'published') {\n // We are inspecting this document through the published view of the doc.\n intentParams = {\n rev: `@release:${releaseName}`,\n inspect: 'sanity/structure/history',\n }\n } else if (releaseState === 'archived') {\n // We are \"faking\" the release as if it is still valid only to render the document\n intentParams = {\n rev: '@lastEdited',\n inspect: 'sanity/structure/history',\n historyEvent: documentRevision,\n historyVersion: releaseName,\n archivedRelease: 'true',\n }\n }\n\n const searchParams: [string, string][] | undefined =\n isCardinalityOneRelease || isArchivedRelease(releaseState)\n ? undefined\n : [\n ...(variantId ? [['variant', variantId] as [string, string]] : []),\n ['perspective', releaseState === 'published' ? 'published' : releaseName],\n ]\n\n return {\n params: {\n id: getPublishedId(documentId),\n type: documentTypeName,\n ...intentParams,\n ...(path ? {path} : {}),\n },\n searchParams,\n }\n}\n","import {type ReleaseState} from '@sanity/client'\nimport {Card} from '@sanity/ui'\nimport {useMemo, type RefAttributes} from 'react'\nimport {IntentLink} from 'sanity/router'\n\nimport {type PreviewLayoutKey} from '../../../components/previews/types'\nimport {DocumentPreviewPresence} from '../../../presence/DocumentPreviewPresence'\nimport {SanityDefaultPreview} from '../../../preview/components/SanityDefaultPreview'\nimport {useDocumentPresence} from '../../../store/presence/useDocumentPresence'\nimport {useDocumentPreviewValues} from '../../../tasks/hooks/useDocumentPreviewValues'\nimport {getPublishedId} from '../../../util/draftUtils'\nimport {getReleaseIdFromReleaseDocumentId} from '../../util/getReleaseIdFromReleaseDocumentId'\nimport {getReleaseDocumentIntent} from './getReleaseDocumentIntent'\n\ninterface ReleaseDocumentPreviewProps {\n documentId: string\n documentTypeName: string\n releaseId: string\n releaseState?: ReleaseState\n documentRevision?: string\n hasValidationError?: boolean\n layout?: PreviewLayoutKey\n isGoingToBePublished?: boolean\n isCardinalityOneRelease?: boolean\n variantId?: string\n}\n\nexport function ReleaseDocumentPreview({\n documentId,\n documentTypeName,\n releaseId,\n releaseState,\n isCardinalityOneRelease,\n documentRevision,\n layout,\n isGoingToBePublished = false,\n variantId,\n}: ReleaseDocumentPreviewProps) {\n const documentPresence = useDocumentPresence(documentId)\n\n const {params, searchParams} = useMemo(\n () =>\n getReleaseDocumentIntent({\n documentId,\n documentTypeName,\n releaseId,\n releaseState,\n documentRevision,\n isCardinalityOneRelease,\n variantId,\n }),\n [\n documentId,\n documentTypeName,\n releaseId,\n releaseState,\n documentRevision,\n isCardinalityOneRelease,\n variantId,\n ],\n )\n\n const LinkComponent = useMemo(\n () =>\n function LinkComponent(\n linkProps: React.ComponentPropsWithoutRef<'a'> & RefAttributes<HTMLAnchorElement>,\n ) {\n const {ref, ...rest} = linkProps\n return (\n <IntentLink\n {...rest}\n intent=\"edit\"\n params={params}\n searchParams={searchParams}\n ref={ref}\n />\n )\n },\n [params, searchParams],\n )\n\n const previewPresence = useMemo(\n () => documentPresence?.length > 0 && <DocumentPreviewPresence presence={documentPresence} />,\n [documentPresence],\n )\n\n const {isLoading: previewLoading, value: resolvedPreview} = useDocumentPreviewValues({\n documentId: isGoingToBePublished ? getPublishedId(documentId) : documentId,\n documentType: documentTypeName,\n perspectiveStack: isGoingToBePublished ? [] : [getReleaseIdFromReleaseDocumentId(releaseId)],\n })\n\n return (\n <Card tone=\"inherit\" as={LinkComponent} radius={2} data-as=\"a\">\n <SanityDefaultPreview\n {...(resolvedPreview || {})}\n status={previewPresence}\n isPlaceholder={previewLoading}\n layout={layout}\n />\n </Card>\n )\n}\n","import {Card, Flex, Stack, Text} from '@sanity/ui'\nimport {motion} from 'motion/react'\nimport {memo, type ReactNode, useMemo} from 'react'\nimport {styled} from 'styled-components'\n\nimport {UserAvatar} from '../../../components/userAvatar/UserAvatar'\nimport {useDateTimeFormat} from '../../../hooks/useDateTimeFormat'\nimport {useRelativeTime} from '../../../hooks/useRelativeTime'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {Translate} from '../../../i18n/Translate'\nimport {releasesLocaleNamespace} from '../../i18n'\nimport {ReleaseDocumentPreview} from '../components/ReleaseDocumentPreview'\nimport {\n type AddDocumentToReleaseEvent,\n type DiscardDocumentFromReleaseEvent,\n isAddDocumentToReleaseEvent,\n isCreateReleaseEvent,\n isDiscardDocumentFromReleaseEvent,\n isEditReleaseEvent,\n isScheduleReleaseEvent,\n type ReleaseEvent,\n} from './events/types'\n\nconst StatusText = styled(Text)`\n strong {\n font-weight: 500;\n color: var(--card-fg-color);\n }\n time {\n white-space: nowrap;\n }\n`\nconst ACTIVITY_TEXT_118N: Record<ReleaseEvent['type'], string> = {\n addDocumentToRelease: 'activity.event.add-document',\n archiveRelease: 'activity.event.archive',\n createRelease: 'activity.event.create',\n discardDocumentFromRelease: 'activity.event.discard-document',\n publishRelease: 'activity.event.publish',\n scheduleRelease: 'activity.event.schedule',\n unarchiveRelease: 'activity.event.unarchive',\n unscheduleRelease: 'activity.event.unschedule',\n editRelease: 'activity.event.edit',\n}\n\nconst ReleaseEventDocumentPreview = ({\n event,\n releaseId,\n}: {\n releaseId: string\n event: AddDocumentToReleaseEvent | DiscardDocumentFromReleaseEvent\n}) => {\n return (\n <Stack gap={2}>\n <ReleaseDocumentPreview\n releaseId={releaseId}\n documentId={event.documentId}\n documentTypeName={event.documentType}\n layout=\"block\"\n />\n </Stack>\n )\n}\n\nconst ScheduleTarget = ({children, event}: {children: ReactNode; event: ReleaseEvent}) => {\n const dateTimeFormat = useDateTimeFormat({dateStyle: 'full', timeStyle: 'medium'})\n const {t} = useTranslation(releasesLocaleNamespace)\n\n const formattedDate = useMemo(() => {\n if (isEditReleaseEvent(event)) {\n if (event.change.releaseType === 'asap') return t('activity.event.edit-time-asap')\n if (event.change.releaseType === 'undecided') return t('activity.event.edit-time-undecided')\n }\n\n let dateString: string | undefined\n if (isScheduleReleaseEvent(event)) {\n dateString = event.publishAt\n } else if (isCreateReleaseEvent(event)) {\n dateString = event.change?.intendedPublishDate\n } else if (isEditReleaseEvent(event)) {\n dateString = event.change.intendedPublishDate\n }\n\n if (!dateString) return null\n return dateTimeFormat.format(new Date(dateString))\n }, [dateTimeFormat, event, t])\n\n if (!formattedDate && isCreateReleaseEvent(event)) return null\n return (\n <span>\n {children} <strong>{formattedDate || '---'}</strong>\n </span>\n )\n}\n\nconst FadeInCard = motion.create(Card)\n\nfunction ActivityTimestamp({timestamp}: {timestamp: string}) {\n const dateTimeFormat = useDateTimeFormat({\n dateStyle: 'medium',\n timeStyle: 'short',\n })\n const date = useMemo(() => new Date(timestamp), [timestamp])\n const formattedDate = useMemo(() => dateTimeFormat.format(date), [dateTimeFormat, date])\n const relativeTime = useRelativeTime(date, {useTemporalPhrase: true, minimal: true})\n\n return (\n <time dateTime={date.toISOString()} title={relativeTime}>\n {formattedDate}\n </time>\n )\n}\n\nexport const ReleaseActivityListItem = memo(\n ({\n event,\n releaseId,\n releaseTitle,\n }: {\n event: ReleaseEvent\n releaseId: string\n releaseTitle: string\n }) => {\n const {t} = useTranslation(releasesLocaleNamespace)\n\n return (\n <FadeInCard\n paddingX={1}\n paddingTop={1}\n paddingBottom={2}\n overflow=\"hidden\"\n // This card animates on entrance when a new event is added, not for every event that is rendered.\n // So if the user is seeing the list and a new event lands, the list will animate the new event. (That is by the <AnimatePresence initial=false> component wrapping the list)\n initial={{opacity: 0}}\n animate={{opacity: 1}}\n transition={{type: 'spring', bounce: 0, duration: 0.4}}\n >\n <Flex align=\"center\" gap={2}>\n <UserAvatar user={event.author} />\n <Stack flex={1}>\n <Flex gap={2} align=\"center\">\n <StatusText muted size={1}>\n <Translate\n t={t}\n components={{\n ScheduleTarget: ({children}) => (\n <ScheduleTarget event={event}>{children}</ScheduleTarget>\n ),\n }}\n values={{releaseTitle}}\n i18nKey={ACTIVITY_TEXT_118N[event.type]}\n />{' '}\n &middot; <ActivityTimestamp timestamp={event.timestamp} />\n </StatusText>\n </Flex>\n {isAddDocumentToReleaseEvent(event) || isDiscardDocumentFromReleaseEvent(event) ? (\n <ReleaseEventDocumentPreview event={event} releaseId={releaseId} />\n ) : null}\n </Stack>\n </Flex>\n </FadeInCard>\n )\n },\n (prevProps, nextProps) => {\n return prevProps.event.id === nextProps.event.id && prevProps.releaseId === nextProps.releaseId\n },\n)\n\nReleaseActivityListItem.displayName = 'ReleaseActivityListItem'\n","import {Box} from '@sanity/ui'\nimport {useVirtualizer} from '@tanstack/react-virtual'\nimport {AnimatePresence} from 'motion/react'\nimport {useEffect, useMemo, useRef} from 'react'\nimport {styled} from 'styled-components'\n\nimport {LoadingBlock} from '../../../components/loadingBlock/LoadingBlock'\nimport {\n isAddDocumentToReleaseEvent,\n isDiscardDocumentFromReleaseEvent,\n isEventsAPIEvent,\n isTranslogEvent,\n type ReleaseEvent,\n} from './events/types'\nimport {ReleaseActivityListItem} from './ReleaseActivityListItem'\n\nconst estimateSize = (event: ReleaseEvent | undefined) => {\n if (!event) {\n return 40 // Is the loader row\n }\n if (isAddDocumentToReleaseEvent(event) || isDiscardDocumentFromReleaseEvent(event)) {\n return 70\n }\n return 56\n}\nconst VirtualContainer = styled(Box)`\n height: 100%;\n overflow: scroll;\n`\n\ninterface ReleaseActivityListProps {\n events: ReleaseEvent[]\n releaseTitle: string\n releaseId: string\n hasMore: boolean\n loadMore: () => void\n isLoading: boolean\n}\nexport const ReleaseActivityList = ({\n events,\n releaseTitle,\n releaseId,\n hasMore,\n loadMore,\n isLoading,\n}: ReleaseActivityListProps) => {\n const virtualizerContainerRef = useRef<HTMLDivElement | null>(null)\n\n const listEvents: ReleaseEvent[] = useMemo(() => {\n /**\n * This list combines:\n * - API events, which are loaded incrementally (paginated)\n * - Translog events, which are fully available (non-paginated)\n *\n * We want to display all events up to the oldest API event and include any translog events\n * that occurred before that API event. By doing so, as we load older batches of API events,\n * they will show at the bottom of the list\n */\n\n // If all events are loaded (no more pages) and we’re not loading, just return all events.\n if (!hasMore && !isLoading) return events\n\n const lastEventFromEventsAPI = [...events].reverse().find(isEventsAPIEvent)\n // If no API events are found (e.g., events api is not enabled) and we're not loading, return all translog events.\n if (!lastEventFromEventsAPI && !isLoading) return events\n\n // If we haven’t found any API events yet and are still loading, show nothing for now.\n if (!lastEventFromEventsAPI) return []\n\n // Include only those translog events that occur before the newest API event.\n const lastEventDate = new Date(lastEventFromEventsAPI.timestamp)\n return events.filter((event) => {\n if (isTranslogEvent(event)) {\n return new Date(event.timestamp) > lastEventDate\n }\n return true\n })\n }, [events, hasMore, isLoading])\n\n const virtualizer = useVirtualizer({\n // If we have more events, or the events are loading, we add a loader row at the end\n count: hasMore || isLoading ? listEvents.length + 1 : listEvents.length,\n getScrollElement: () => virtualizerContainerRef.current,\n estimateSize: (i) => estimateSize(events[i]),\n overscan: 10,\n paddingEnd: 24,\n })\n\n const virtualItems = virtualizer.getVirtualItems()\n\n useEffect(() => {\n const lastItem = virtualItems.at(-1)\n if (!lastItem) return\n if (lastItem.index >= listEvents.length - 1 && hasMore) {\n loadMore()\n }\n }, [listEvents.length, hasMore, loadMore, virtualItems])\n\n return (\n <VirtualContainer id=\"virtualizer-container\" ref={virtualizerContainerRef} paddingX={3}>\n <div\n style={{\n height: `${virtualizer.getTotalSize()}px`,\n width: '100%',\n position: 'relative',\n }}\n >\n <AnimatePresence initial={false}>\n {virtualizer.getVirtualItems().map((virtualRow) => {\n const event = listEvents[virtualRow.index]\n const isLoaderRow = !event\n\n return (\n <div\n key={virtualRow.key}\n data-index={virtualRow.index}\n ref={virtualizer.measureElement}\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n transform: `translateY(${virtualRow.start}px)`,\n }}\n >\n {isLoaderRow ? (\n <Box paddingY={4}>\n <LoadingBlock fill />\n </Box>\n ) : (\n <ReleaseActivityListItem\n event={event}\n releaseId={releaseId}\n releaseTitle={releaseTitle}\n />\n )}\n </div>\n )\n })}\n </AnimatePresence>\n </div>\n </VirtualContainer>\n )\n}\n","import {type ReleaseDocument} from '@sanity/client'\nimport {CloseIcon} from '@sanity/icons/Close'\nimport {Box, Card, Flex, Layer, Text, useLayer} from '@sanity/ui'\nimport {AnimatePresence, motion} from 'motion/react'\nimport {useEffect} from 'react'\nimport TrapFocus from 'react-focus-lock'\nimport {styled} from 'styled-components'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {LoadingBlock} from '../../../components/loadingBlock/LoadingBlock'\nimport {Resizable} from '../../../components/resizer/Resizable'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {releasesLocaleNamespace} from '../../i18n'\nimport {type ReleaseEvents} from './events/useReleaseEvents'\nimport {ReleaseActivityList} from './ReleaseActivityList'\n\ninterface ReleaseDashboardActivityPanelProps {\n events: ReleaseEvents\n release: ReleaseDocument\n show: boolean\n /**\n * When true, the panel floats over the content as a right-anchored overlay (dismissed via the\n * header close button or Escape) instead of pushing the layout aside. Activity is transient\n * reference, not a co-editing surface, so it should not reflow the rail and table beneath it.\n */\n overlay?: boolean\n onClose?: () => void\n}\nconst MotionFlex = motion.create(Flex)\nconst MotionCard = motion.create(Card)\nconst FillHeight = styled.div`\n --card-border-color: transparent;\n height: 100%;\n display: flex;\n flex-direction: column;\n`\n// In overlay mode the panel is not part of the layout, so Escape is the keyboard escape hatch (in\n// addition to the header close button and the Activity toggle). It sits in its own Layer so it only\n// claims Escape when it is the top layer — when a dialog or popover (e.g. EditReleaseDialog or a\n// bulk-action dialog) is open above the overlay, Escape dismisses only that topmost surface, not\n// both at once. Mirrors the useLayer/isTopLayer guard used by CommentsInspector.\nfunction OverlayEscapeHandler({onClose}: {onClose?: () => void}) {\n const {isTopLayer} = useLayer()\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape' && isTopLayer) onClose?.()\n }\n window.addEventListener('keydown', handleKeyDown)\n return () => window.removeEventListener('keydown', handleKeyDown)\n }, [isTopLayer, onClose])\n return null\n}\n\nexport function ReleaseDashboardActivityPanel({\n events,\n release,\n show,\n overlay = false,\n onClose,\n}: ReleaseDashboardActivityPanelProps) {\n const {t} = useTranslation(releasesLocaleNamespace)\n const {t: tCore} = useTranslation()\n\n const content = (\n <MotionFlex flex=\"none\" height=\"fill\" direction=\"column\">\n <Flex align=\"center\" gap={2} justify=\"space-between\" padding={4}>\n <Text size={1} weight=\"medium\">\n {t('activity.panel.title')}\n </Text>\n {overlay && onClose && (\n <Button\n icon={CloseIcon}\n mode=\"bleed\"\n onClick={onClose}\n tooltipProps={{content: t('activity.panel.close')}}\n />\n )}\n </Flex>\n {events.error && !events.events.length && (\n <Card padding={3} tone=\"caution\">\n <Box padding={2}>\n <Text size={0}>{t('activity.panel.error')}</Text>\n </Box>\n </Card>\n )}\n {events.loading && !events.events.length && (\n <LoadingBlock title={t('activity.panel.loading')} />\n )}\n <ReleaseActivityList\n releaseTitle={release.metadata.title || tCore('release.placeholder-untitled-release')}\n releaseId={release._id}\n events={events.events}\n hasMore={events.hasMore}\n loadMore={events.loadMore}\n isLoading={events.loading}\n />\n </MotionFlex>\n )\n\n if (overlay) {\n // Floats over the content (position:absolute against the relatively-positioned parent in\n // ReleaseDetail), sliding in from the right; the rail and table beneath it do not move. A light\n // scrim recedes everything behind the drawer (the rail, the properties block) so partial\n // coverage reads as \"behind the drawer\" rather than clipped, and clicking it dismisses.\n return (\n <>\n {/* An empty Layer purely to participate in the layer stack, so the Escape handler can tell\n when a dialog/popover is open above the overlay. Kept outside AnimatePresence (it is not\n animated) and as a sibling of the scrim/drawer so their absolute positioning is untouched. */}\n {show && (\n <Layer>\n <OverlayEscapeHandler onClose={onClose} />\n </Layer>\n )}\n {/* The scrim and drawer are direct, keyed children of AnimatePresence — not wrapped in a\n fragment — so their exit animations actually run on close (AnimatePresence only tracks\n direct keyed motion children). */}\n <AnimatePresence>\n {show && (\n <motion.div\n key=\"activity-overlay-scrim\"\n onClick={onClose}\n initial={{opacity: 0}}\n animate={{opacity: 1}}\n exit={{opacity: 0}}\n transition={{duration: 0.2}}\n style={{\n position: 'absolute',\n inset: 0,\n zIndex: 199,\n background: 'rgba(0, 0, 0, 0.45)',\n }}\n />\n )}\n {show && (\n <MotionCard\n key=\"activity-overlay-drawer\"\n // Modal drawer: announce it as a modal dialog to assistive tech (aria-modal), and trap\n // focus inside it (TrapFocus below) so keyboard users can't Tab to the covered rail/\n // table behind the scrim, with focus restored to the trigger on close.\n role=\"dialog\"\n aria-modal\n aria-label={t('activity.panel.title')}\n borderLeft\n shadow={4}\n initial={{x: '100%'}}\n animate={{x: 0}}\n exit={{x: '100%'}}\n transition={{type: 'spring', bounce: 0, duration: 0.2}}\n style={{\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n zIndex: 200,\n display: 'flex',\n flexDirection: 'column',\n }}\n >\n {/* preventScroll on both the open (focusOptions) and close (returnFocus) focus moves:\n the drawer mounts translated off-screen (translateX(100%)) and then slides in, so a\n default focus() would scroll the off-screen target into view and jerk the whole\n layout left→right before the animation settles. preventScroll keeps the focus move\n (a11y) without the scroll (the flash). */}\n <TrapFocus\n returnFocus={{preventScroll: true}}\n autoFocus\n // react-focus-lock's own docs use focusOptions={{preventScroll: true}} as the\n // canonical pattern for this exact case; no non-deprecated alternative exists.\n // oxlint-disable-next-line no-deprecated -- see comment above\n focusOptions={{preventScroll: true}}\n >\n <Resizable\n as={FillHeight}\n minWidth={320}\n maxWidth={800}\n initialWidth={360}\n resizerPosition=\"left\"\n style={{display: 'flex', flexDirection: 'column', flex: 'none', height: '100%'}}\n >\n {content}\n </Resizable>\n </TrapFocus>\n </MotionCard>\n )}\n </AnimatePresence>\n </>\n )\n }\n\n return (\n <AnimatePresence>\n {show && (\n <motion.div\n animate={{width: 'auto', opacity: 1}}\n initial={{width: 0, opacity: 0}}\n exit={{width: 0, opacity: 0}}\n transition={{type: 'spring', bounce: 0, duration: 0.2}}\n >\n <Resizable\n as={FillHeight}\n minWidth={320}\n maxWidth={800}\n initialWidth={320}\n resizerPosition=\"left\"\n style={{display: 'flex', flexDirection: 'column', flex: 'none', maxHeight: '100%'}}\n >\n {content}\n </Resizable>\n </motion.div>\n )}\n </AnimatePresence>\n )\n}\n","import {type DocumentInRelease} from '../tool/detail/types'\nimport {isGoingToUnpublish} from './isGoingToUnpublish'\n\n/**\n * This function is used to get a cleaner and quicker validation loading state and error status for a list of documents\n * @param documents - The list of documents to get the validation loading state for\n * @returns\n */\nexport const getDocumentValidationLoading = (documents: DocumentInRelease[]) => {\n let hasError = false\n let isValidating = false\n let validatedCount = 0\n documents.forEach((doc) => {\n if (isGoingToUnpublish(doc.document)) {\n validatedCount += 1\n } else {\n const isValidated = !doc.validation.isValidating\n hasError = hasError || doc.validation.hasError\n isValidating = isValidating || doc.validation.isValidating\n if (isValidated) {\n validatedCount += 1\n }\n }\n })\n return {\n hasError,\n isValidating,\n validatedCount,\n }\n}\n","import {type ReleaseDocument} from '@sanity/client'\nimport {InfoOutlineIcon} from '@sanity/icons/InfoOutline'\nimport {Card, Flex, Stack, Text} from '@sanity/ui'\nimport {addDays} from 'date-fns/addDays'\nimport {format} from 'date-fns/format'\nimport {useMemo} from 'react'\n\nimport {useProjectSubscriptions} from '../../../hooks/useProjectSubscriptions'\nimport {useTimeZone} from '../../../hooks/useTimeZone'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {Translate} from '../../../i18n/Translate'\nimport {CONTENT_RELEASES_TIME_ZONE_SCOPE} from '../../../studio/constants'\nimport {releasesLocaleNamespace} from '../../i18n'\n\nexport function ArchivedReleaseBanner({release}: {release: ReleaseDocument}) {\n const {state} = release\n const {t: tRelease} = useTranslation(releasesLocaleNamespace)\n const {projectSubscriptions} = useProjectSubscriptions()\n\n const retentionDays = projectSubscriptions?.featureTypes.retention.features[0].attributes\n .maxRetentionDays as number | undefined\n\n const {utcToCurrentZoneDate} = useTimeZone(CONTENT_RELEASES_TIME_ZONE_SCOPE)\n const removalDate = useMemo(() => {\n if (!retentionDays || !release?._updatedAt) return ''\n const _removalDate = addDays(new Date(release._updatedAt), retentionDays)\n\n return format(utcToCurrentZoneDate(_removalDate), 'PP')\n }, [retentionDays, release, utcToCurrentZoneDate])\n\n return (\n <Card padding={4} radius={4} tone=\"primary\" data-testid=\"retention-policy-card\">\n <Flex gap={3}>\n <Text size={1}>\n <InfoOutlineIcon />\n </Text>\n <Stack gap={4}>\n <Text size={1} weight=\"semibold\">\n {state === 'archived' ? tRelease('archive-info.title') : tRelease('publish-info.title')}\n </Text>\n {retentionDays && (\n <Text size={1} accent>\n <Translate\n t={tRelease}\n i18nKey=\"archive-info.description\"\n values={{retentionDays, removalDate: removalDate || ''}}\n components={{\n Link: ({children}) => (\n <a\n href=\"https://www.sanity.io/docs/user-guides/history-experience\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n {children}\n </a>\n ),\n }}\n />\n </Text>\n )}\n </Stack>\n </Flex>\n </Card>\n )\n}\n","import {type EditableReleaseDocument, type ReleaseDocument} from '@sanity/client'\nimport {useCallback, useEffect, useRef, useState} from 'react'\n\nimport {DetailIdentity} from '../../../components/detailLayout'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {useWorkspace} from '../../../studio/workspace'\nimport {getIsReleaseOpen, TitleDescriptionForm} from '../../components/dialog/TitleDescriptionForm'\nimport {useReleaseOperations} from '../../store/useReleaseOperations'\nimport {useReleasePermissions} from '../../store/useReleasePermissions'\n\nfunction ReleaseDetailsEditorProduction({release}: {release: ReleaseDocument}): React.JSX.Element {\n const {updateRelease} = useReleaseOperations()\n const [timer, setTimer] = useState<NodeJS.Timeout | undefined>(undefined)\n\n const {checkWithPermissionGuard} = useReleasePermissions()\n const [hasUpdatePermission, setHasUpdatePermission] = useState<boolean | null>(null)\n\n const handleOnChange = useCallback(\n (changedValue: EditableReleaseDocument) => {\n clearTimeout(timer)\n\n /** @todo I wasn't able to get this working with the debouncer that we use in other parts */\n const newTimer = setTimeout(() => {\n if (hasUpdatePermission) {\n void updateRelease(changedValue)\n }\n }, 200)\n\n setTimer(newTimer)\n },\n [hasUpdatePermission, timer, updateRelease],\n )\n\n const isMounted = useRef(false)\n useEffect(() => {\n isMounted.current = true\n\n if (getIsReleaseOpen(release)) {\n // title and description will be readOnly if release is not 'open'\n // so only need to check permission to edit if release is 'open'\n void checkWithPermissionGuard(updateRelease, release).then((hasPermission) => {\n if (isMounted.current) setHasUpdatePermission(hasPermission)\n })\n }\n\n return () => {\n isMounted.current = false\n }\n }, [checkWithPermissionGuard, release, release._id, updateRelease])\n\n return (\n <TitleDescriptionForm\n key={release._id}\n release={release}\n onChange={handleOnChange}\n disabled={Boolean(!hasUpdatePermission)}\n />\n )\n}\n\n/**\n * The release identity (title + description) as a read-only display surface built on the shared\n * `DetailIdentity` spine.\n *\n * Editing is an explicit action, never inline. Behind `beta.variants` the pencil is dropped in\n * favour of a defined \"Edit details\" action in the top action rail (a defined button is discoverable\n * and keyboard/screen-reader accessible in a way a hover-only affordance is not).\n */\nfunction ReleaseDetailsEditorVariants({release}: {release: ReleaseDocument}): React.JSX.Element {\n const {t} = useTranslation()\n\n return (\n <DetailIdentity\n title={release.metadata.title}\n titleAs=\"h1\"\n titlePlaceholder={t('release.placeholder-untitled-release')}\n description={release.metadata.description}\n titleTestId=\"release-title-display\"\n descriptionTestId=\"release-description-display\"\n />\n )\n}\n\nexport function ReleaseDetailsEditor({release}: {release: ReleaseDocument}): React.JSX.Element {\n const variantsEnabled = Boolean(useWorkspace().beta?.variants?.enabled)\n\n if (variantsEnabled) {\n return <ReleaseDetailsEditorVariants release={release} />\n }\n\n return <ReleaseDetailsEditorProduction release={release} />\n}\n","import {format} from 'date-fns/format'\nimport {useCallback} from 'react'\n\nimport {useTimeZone} from '../../hooks/useTimeZone'\nimport {type TableRelease} from '../tool/overview/ReleasesOverview'\nimport {getPublishDateFromRelease} from '../util/util'\n\nexport const useReleaseTime = (): ((\n release: TableRelease,\n opts?: {compact?: boolean},\n) => string | null) => {\n const {timeZone, utcToCurrentZoneDate, getLocalTimeZone} = useTimeZone({\n type: 'contentReleases',\n } as const)\n const {abbreviation: localeTimeZoneAbbreviation} = getLocalTimeZone()\n\n const getTimezoneAbbreviation = useCallback(\n () =>\n timeZone.abbreviation === localeTimeZoneAbbreviation ? '' : `(${timeZone.abbreviation})`,\n [localeTimeZoneAbbreviation, timeZone.abbreviation],\n )\n\n return useCallback(\n (release: TableRelease, opts?: {compact?: boolean}) => {\n const publishDate = getPublishDateFromRelease(release)\n if (!publishDate) return null\n\n const zoned = utcToCurrentZoneDate(publishDate)\n // Compact: no seconds and no timezone suffix — for dense surfaces (e.g. the properties panel)\n // where the value must stay on a single line. `PPp` → \"Jul 30, 2026, 12:27 AM\".\n if (opts?.compact) return format(zoned, 'PPp')\n\n return `${format(zoned, 'PPpp')} ${getTimezoneAbbreviation()}`\n },\n [getTimezoneAbbreviation, utcToCurrentZoneDate],\n )\n}\n","import {LockIcon} from '@sanity/icons/Lock'\nimport {Box, Flex, Text} from '@sanity/ui'\n\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {useReleaseTime} from '../../hooks/useReleaseTime'\nimport {releasesLocaleNamespace} from '../../i18n'\nimport {ARCHIVED_RELEASE_STATES} from '../../util/const'\nimport {isReleaseScheduledOrScheduling} from '../../util/util'\nimport {type TableRelease} from '../overview/ReleasesOverview'\n\nexport const ReleaseTime: React.FC<{release: TableRelease}> = ({release}) => {\n const {t} = useTranslation()\n const {t: tRelease} = useTranslation(releasesLocaleNamespace)\n const getReleaseTime = useReleaseTime()\n\n const {metadata} = release\n\n if (metadata.releaseType === 'asap') {\n return (\n <Text size={1} muted weight=\"medium\">\n {t('release.type.asap')}\n </Text>\n )\n }\n if (metadata.releaseType === 'undecided') {\n return (\n <Text size={1} muted weight=\"medium\" style={{opacity: 0.5}}>\n {t('release.type.undecided')}\n </Text>\n )\n }\n\n // For scheduled releases:\n\n const isScheduledOrScheduling = isReleaseScheduledOrScheduling(release)\n const isInArchivedView = ARCHIVED_RELEASE_STATES.includes(release.state)\n\n return (\n <Flex gap={1} align=\"center\" wrap=\"wrap\">\n {isScheduledOrScheduling && (\n <Box paddingY={1}>\n <Text size={1} muted>\n <LockIcon data-testid=\"release-lock-icon\" />\n </Text>\n </Box>\n )}\n {!isInArchivedView && (\n <>\n <Box paddingY={1}>\n <Text size={1} muted>\n {isScheduledOrScheduling ? tRelease('time.scheduled') : tRelease('time.estimated')}\n </Text>\n </Box>\n <Box paddingY={1}>\n <Text size={1} muted>\n {'·'}\n </Text>\n </Box>\n </>\n )}\n <Box paddingY={1}>\n <Text size={1} weight=\"medium\">\n {getReleaseTime(release)}\n </Text>\n </Box>\n </Flex>\n )\n}\n","import {format} from 'date-fns/format'\nimport {isBefore} from 'date-fns/isBefore'\nimport {isValid} from 'date-fns/isValid'\nimport {parse} from 'date-fns/parse'\nimport {startOfMinute} from 'date-fns/startOfMinute'\nimport {useCallback} from 'react'\n\nimport {LazyTextInput} from '../../../components/inputs/DateInputs/LazyTextInput'\nimport {useTimeZone} from '../../../hooks/useTimeZone'\nimport {CONTENT_RELEASES_TIME_ZONE_SCOPE} from '../../../studio/constants'\n\nconst dateInputFormat = 'PP HH:mm'\n\nexport function ReleaseDateInput(props: {\n setIsIntendedScheduleDateInPast: (isIntendedScheduleDateInPast: boolean) => void\n setIntendedPublishAt: (intendedPublishAt: Date) => void\n intendedPublishAt: Date | undefined\n}): React.JSX.Element {\n const {setIsIntendedScheduleDateInPast, intendedPublishAt, setIntendedPublishAt} = props\n\n const {utcToCurrentZoneDate, zoneDateToUtc} = useTimeZone(CONTENT_RELEASES_TIME_ZONE_SCOPE)\n\n const intendedPublishAtTimezoneAdjusted = intendedPublishAt\n ? utcToCurrentZoneDate(intendedPublishAt)\n : intendedPublishAt\n\n const handlePublishAtInputChange = useCallback(\n (event: React.FocusEvent<HTMLInputElement>) => {\n const parsedDate = zoneDateToUtc(\n parse(event.currentTarget.value, dateInputFormat, new Date()),\n )\n\n if (isValid(parsedDate)) {\n setIsIntendedScheduleDateInPast(isBefore(parsedDate, new Date()))\n\n setIntendedPublishAt(startOfMinute(parsedDate))\n }\n },\n [zoneDateToUtc, setIsIntendedScheduleDateInPast, setIntendedPublishAt],\n )\n\n return (\n <LazyTextInput\n data-testid=\"date-input\"\n value={\n intendedPublishAtTimezoneAdjusted\n ? format(intendedPublishAtTimezoneAdjusted, dateInputFormat)\n : undefined\n }\n onChange={handlePublishAtInputChange}\n />\n )\n}\n","import {type ReleaseType} from '@sanity/client'\nimport {PublishIcon} from '@sanity/icons/Publish'\nimport {Card, Flex, Spinner, Stack, TabList, Text, useClickOutsideEvent, useToast} from '@sanity/ui'\nimport {isBefore} from 'date-fns/isBefore'\nimport {startOfMinute} from 'date-fns/startOfMinute'\nimport isEqual from 'lodash-es/isEqual.js'\nimport {useCallback, useMemo, useRef, useState} from 'react'\nimport {styled} from 'styled-components'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {Popover} from '../../../../ui-components/popover/Popover'\nimport {Tab} from '../../../../ui-components/tab/Tab'\nimport {Tooltip} from '../../../../ui-components/tooltip/Tooltip'\nimport {MONTH_PICKER_VARIANT} from '../../../components/inputs/DateInputs/calendar/Calendar'\nimport {type CalendarLabels} from '../../../components/inputs/DateInputs/calendar/types'\nimport {DatePicker} from '../../../components/inputs/DateInputs/DatePicker'\nimport {getCalendarLabels} from '../../../form/inputs/DateInputs/utils'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {CONTENT_RELEASES_TIME_ZONE_SCOPE} from '../../../studio/constants'\nimport {useWorkspace} from '../../../studio/workspace'\nimport {ReleaseAvatar} from '../../components/ReleaseAvatar'\nimport {useReleaseTime} from '../../hooks/useReleaseTime'\nimport {releasesLocaleNamespace} from '../../i18n'\nimport {useReleaseOperations} from '../../store/useReleaseOperations'\nimport {getIsScheduledDateInPast} from '../../util/getIsScheduledDateInPast'\nimport {getReleaseTone} from '../../util/getReleaseTone'\nimport {\n getPublishDateFromRelease,\n isReleaseScheduledOrScheduling,\n type NotArchivedRelease,\n} from '../../util/util'\nimport {ReleaseTime} from '../components/ReleaseTime'\nimport {ReleaseDateInput} from './ReleaseDateInput'\n\n// The Schedule value reads as plain text (matching the other property values), but stays clickable\n// to open the picker: a flush, chrome-free button that only underlines on hover — no pill, and its\n// text sits on the same left edge as every other value.\nconst ScheduleTrigger = styled.button`\n appearance: none;\n background: none;\n border: 0;\n margin: 0;\n padding: 0;\n display: block;\n width: 100%;\n min-width: 0;\n text-align: left;\n color: inherit;\n font: inherit;\n cursor: pointer;\n &:hover {\n text-decoration: underline;\n }\n`\n\nexport function ReleaseTypePicker(props: {release: NotArchivedRelease}): React.JSX.Element {\n const {release} = props\n const variantsEnabled = Boolean(useWorkspace().beta?.variants?.enabled)\n const popoverRef = useRef<HTMLDivElement | null>(null)\n const buttonRef = useRef<HTMLButtonElement | null>(null)\n const inputRef = useRef<HTMLInputElement | null>(null)\n const datePickerRef = useRef<HTMLDivElement | null>(null)\n\n const {t: tRelease} = useTranslation(releasesLocaleNamespace)\n const {t} = useTranslation()\n const {updateRelease} = useReleaseOperations()\n const toast = useToast()\n const getReleaseTime = useReleaseTime()\n\n const [open, setOpen] = useState(false)\n const [releaseType, setReleaseType] = useState<ReleaseType>(release.metadata.releaseType)\n const publishDate = useMemo(() => getPublishDateFromRelease(release), [release])\n const [isUpdating, setIsUpdating] = useState(false)\n const [isIntendedScheduleDateInPast, setIsIntendedScheduleDateInPast] = useState(\n publishDate && isBefore(new Date(publishDate), new Date()),\n )\n\n const [intendedPublishAt, setIntendedPublishAt] = useState<Date | undefined>(\n publishDate ? new Date(publishDate) : undefined,\n )\n const updatedDate = intendedPublishAt?.toISOString()\n\n const calendarLabels: CalendarLabels = useMemo(() => getCalendarLabels(t), [t])\n\n const close = useCallback(() => {\n // a bit of a hack to make sure the timezone dialog is not immediately closed on out\n // the dialog itself is in the Calendar component who is basically unrealted to this one\n const dialog = document.querySelector('#time-zone')\n\n if (open && !dialog) {\n const newRelease = {\n ...release,\n metadata: {\n ...release.metadata,\n releaseType,\n ...(typeof updatedDate === 'undefined' || releaseType !== 'scheduled'\n ? {}\n : {\n intendedPublishAt: updatedDate,\n }),\n },\n }\n\n if (!isEqual(newRelease, release)) {\n /**\n * If in past, the reset type and intendedPublish to the actual release values\n * and discard the changes made\n */\n if (getIsScheduledDateInPast(newRelease)) {\n setReleaseType(release.metadata.releaseType)\n setIntendedPublishAt(\n release.metadata.intendedPublishAt\n ? new Date(release.metadata.intendedPublishAt)\n : undefined,\n )\n\n toast.push({\n closable: true,\n status: 'warning',\n title: t('release.schedule-dialog.publish-date-in-past-warning'),\n })\n } else {\n setIsUpdating(true)\n void updateRelease(newRelease).finally(() => {\n setIsUpdating(false)\n })\n }\n }\n\n setOpen(false)\n }\n }, [open, release, updatedDate, releaseType, toast, t, updateRelease])\n\n useClickOutsideEvent(close, () => [\n popoverRef.current,\n buttonRef.current,\n inputRef.current,\n datePickerRef.current,\n ])\n\n const isPublishDateInPast = !!publishDate && isBefore(new Date(publishDate), new Date())\n const isReleaseScheduled = isReleaseScheduledOrScheduling(release)\n\n const publishDateLabel = useMemo(() => {\n if (release.state === 'published') {\n if (isPublishDateInPast && publishDate)\n return tRelease('dashboard.details.published-on', {\n date: getReleaseTime(release),\n })\n\n return tRelease('dashboard.details.published-asap')\n }\n\n return <ReleaseTime release={release} />\n }, [getReleaseTime, isPublishDateInPast, publishDate, release, tRelease])\n\n // A compact, single-line label for the properties-panel value: no seconds, and no\n // \"Estimated ·\"/\"Scheduled ·\" prefix (the row's leading glyph + label already convey the type).\n const compactLabel = useMemo(() => {\n if (release.state === 'published') {\n return isPublishDateInPast && publishDate\n ? tRelease('dashboard.details.published-on', {\n date: getReleaseTime(release, {compact: true}),\n })\n : tRelease('dashboard.details.published-asap')\n }\n if (release.metadata.releaseType === 'asap') return t('release.type.asap')\n if (release.metadata.releaseType === 'undecided') return t('release.type.undecided')\n return getReleaseTime(release, {compact: true}) ?? t('release.type.scheduled')\n }, [getReleaseTime, isPublishDateInPast, publishDate, release, t, tRelease])\n\n const handleButtonReleaseTypeChange = useCallback(\n (pickedReleaseType: ReleaseType) => {\n setReleaseType(pickedReleaseType)\n const nextPublishAt =\n pickedReleaseType === 'scheduled'\n ? (publishDate ?? startOfMinute(new Date()))\n : (publishDate ?? undefined)\n setIntendedPublishAt(nextPublishAt)\n setIsIntendedScheduleDateInPast(true)\n },\n [publishDate],\n )\n\n const handlePublishAtCalendarChange = useCallback((date: Date | null) => {\n if (!date) return\n\n const cleanDate = startOfMinute(new Date(date))\n setIsIntendedScheduleDateInPast(isBefore(cleanDate, new Date()))\n setIntendedPublishAt(cleanDate)\n }, [])\n\n const handleOnPickerClick = () => {\n if (open) close()\n else setOpen(true)\n }\n\n const tone = release.state === 'published' ? 'positive' : getReleaseTone(release)\n\n const releaseTypeIcon = useMemo(() => {\n if (isUpdating) return <Spinner size={1} data-testid=\"updating-release-spinner\" />\n if (release.state === 'published') return <PublishIcon />\n\n return <ReleaseAvatar release={release} padding={0} />\n }, [isUpdating, release])\n\n const productionLabelContent = useMemo(\n () => (\n <Flex flex={1} gap={2} align={'center'}>\n {releaseTypeIcon}\n <span data-testid=\"release-type-label\">{publishDateLabel}</span>\n </Flex>\n ),\n [publishDateLabel, releaseTypeIcon],\n )\n\n const popoverContent = (\n <Stack gap={1}>\n <TabList gap={0.5}>\n <Tab\n aria-controls=\"release-timing-asap\"\n id=\"release-timing-asap-tab\"\n onClick={() => handleButtonReleaseTypeChange('asap')}\n label={t('release.type.asap')}\n selected={releaseType === 'asap'}\n />\n <Tab\n aria-controls=\"release-timing-at-time\"\n id=\"release-timing-at-time-tab\"\n onClick={() => handleButtonReleaseTypeChange('scheduled')}\n selected={releaseType === 'scheduled'}\n label={t('release.type.scheduled')}\n />\n <Tab\n aria-controls=\"release-timing-undecided\"\n id=\"release-timing-undecided-tab\"\n onClick={() => handleButtonReleaseTypeChange('undecided')}\n selected={releaseType === 'undecided'}\n label={t('release.type.undecided')}\n />\n </TabList>\n {releaseType === 'scheduled' && (\n <>\n {isIntendedScheduleDateInPast && (\n <Card margin={1} padding={2} radius={2} shadow={1} tone=\"critical\">\n <Text size={1}>{t('release.schedule-dialog.publish-date-in-past-warning')}</Text>\n </Card>\n )}\n <ReleaseDateInput\n setIsIntendedScheduleDateInPast={setIsIntendedScheduleDateInPast}\n setIntendedPublishAt={setIntendedPublishAt}\n intendedPublishAt={intendedPublishAt}\n />\n <DatePicker\n ref={datePickerRef}\n monthPickerVariant={MONTH_PICKER_VARIANT.carousel}\n calendarLabels={calendarLabels}\n selectTime\n padding={0}\n value={intendedPublishAt}\n onChange={handlePublishAtCalendarChange}\n isPastDisabled\n showTimeZone\n timeZoneScope={CONTENT_RELEASES_TIME_ZONE_SCOPE}\n />\n </>\n )}\n </Stack>\n )\n\n if (!variantsEnabled) {\n return (\n <Popover\n content={popoverContent}\n open={open}\n padding={1}\n placement=\"bottom-start\"\n ref={popoverRef}\n >\n {release.state === 'published' ? (\n <Card\n tone=\"default\"\n data-testid=\"published-release-type-label\"\n padding={2}\n style={{borderRadius: '999px'}}\n >\n {productionLabelContent}\n </Card>\n ) : (\n <Button\n disabled={isReleaseScheduled}\n mode=\"bleed\"\n onClick={handleOnPickerClick}\n ref={buttonRef}\n tooltipProps={{\n placement: 'bottom',\n content: isReleaseScheduled && tRelease('type-picker.tooltip.scheduled'),\n }}\n selected={open}\n tone={tone}\n style={{borderRadius: '999px'}}\n data-testid=\"release-type-picker\"\n >\n {productionLabelContent}\n </Button>\n )}\n </Popover>\n )\n }\n\n const valueText = (\n <Text\n data-testid=\"release-type-label\"\n size={1}\n weight=\"medium\"\n textOverflow=\"ellipsis\"\n title={compactLabel}\n style={{opacity: isUpdating ? 0.5 : 1}}\n >\n {compactLabel}\n </Text>\n )\n\n return (\n <Popover\n content={popoverContent}\n open={open}\n padding={1}\n placement=\"bottom-start\"\n ref={popoverRef}\n >\n {/* The tone-scoped Card (transparent bg) colours the value text; no filled pill. When the\n schedule is editable it's a flush, chrome-free clickable trigger; when locked/published\n it's static text. Either way it reads as plain text aligned with the other values. */}\n {release.state === 'published' || isReleaseScheduled ? (\n // When the schedule is locked because the release is scheduled, keep the same explanation the\n // production disabled control shows. Disabled for published releases (no scheduled tooltip).\n <Tooltip content={tRelease('type-picker.tooltip.scheduled')} disabled={!isReleaseScheduled}>\n <Card\n tone={tone}\n padding={0}\n style={{background: 'transparent'}}\n data-testid={\n release.state === 'published' ? 'published-release-type-label' : 'release-type-picker'\n }\n >\n {valueText}\n </Card>\n </Tooltip>\n ) : (\n <Card tone={tone} padding={0} style={{background: 'transparent'}}>\n <ScheduleTrigger\n ref={buttonRef}\n onClick={handleOnPickerClick}\n data-testid=\"release-type-picker\"\n >\n {valueText}\n </ScheduleTrigger>\n </Card>\n )}\n </Popover>\n )\n}\n","import {Card, Text} from '@sanity/ui'\n\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {releasesLocaleNamespace} from '../../i18n'\nimport {getDocumentValidationLoading} from '../../util/getDocumentValidationLoading'\nimport {type DocumentInRelease} from './types'\n\n// Transparent background so the tone only colours the text (green/red), not a filled chip — the\n// properties block uses one value idiom (semantic-coloured text), not a mix of pills and badges.\nconst TRANSPARENT_BG = {background: 'transparent'} as const\n\n/**\n * The persistent validation status shown in the release properties panel, as semantic-coloured\n * text: green \"Valid\" when every document validates, red \"Errors\" when any fail, plain \"Validating\"\n * while in progress, and muted \"No documents\" when the release is empty. Unlike the shared\n * ValidationProgressIndicator (whose green fades to a bare checkmark after a beat), this holds its\n * state so the panel can clearly signal whether the release is good to go — and it reads as text,\n * matching the other property values rather than sitting in a box.\n *\n * @internal\n */\nexport function ReleaseValidationBadge({\n documents,\n}: {\n documents: DocumentInRelease[]\n}): React.JSX.Element {\n const {t} = useTranslation(releasesLocaleNamespace)\n const totalCount = documents.length\n\n if (totalCount === 0) {\n return (\n <Text muted size={1}>\n {t('dashboard.details.metadata.status-empty')}\n </Text>\n )\n }\n\n const {hasError, validatedCount} = getDocumentValidationLoading(documents)\n const isValidating = validatedCount !== totalCount\n\n const tone = hasError ? 'critical' : isValidating ? 'default' : 'positive'\n const label = hasError\n ? t('dashboard.details.metadata.status-errors')\n : isValidating\n ? t('dashboard.details.metadata.status-validating')\n : t('dashboard.details.metadata.status-valid')\n\n // A tone-scoped Card sets the foreground colour var; with a transparent background the Text simply\n // renders in the tone colour (green/red), no filled chip.\n return (\n <Card tone={tone} style={TRANSPARENT_BG}>\n <Text size={1} weight=\"medium\">\n {label}\n </Text>\n </Card>\n )\n}\n","const degreesToRadians = (degrees: number) => (degrees * Math.PI) / 180\n\n/**\n * This is a component that renders a progress icon based on the progress percentage\n * @param progress - The progress percentage (0-100)\n * @returns The progress icon based on the progress percentage\n */\nexport function ProgressIcon(props: {progress: number}) {\n const {progress, ...rest} = props\n\n const circlePath = partialCircle(\n 12.5,\n 12.5,\n 4.5,\n degreesToRadians(-90),\n degreesToRadians(progress * 360 - 90),\n )\n\n const d =\n circlePath.length > 0\n ? `${circlePath.map((vs) => vs.join(' ')).join(' ')} L 12.5 12.5 Z`\n : undefined\n\n return (\n <svg\n data-sanity-icon=\"progress-50\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 25 25\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n {d && (\n <path\n d={d}\n fill=\"currentColor\"\n stroke=\"currentColor\"\n strokeWidth={1.2}\n strokeLinejoin=\"round\"\n />\n )}\n <path\n d=\"M12.5 20.5C16.9183 20.5 20.5 16.9183 20.5 12.5C20.5 8.08172 16.9183 4.5 12.5 4.5C8.08172 4.5 4.5 8.08172 4.5 12.5C4.5 16.9183 8.08172 20.5 12.5 20.5Z\"\n stroke=\"currentColor\"\n strokeWidth={1.2}\n strokeLinejoin=\"round\"\n />\n </svg>\n )\n}\n\nfunction partialCircle(cx: number, cy: number, r: number, start: number, end: number) {\n const length = end - start\n if (length === 0) return []\n\n const fromX = r * Math.cos(start) + cx\n const fromY = r * Math.sin(start) + cy\n const toX = r * Math.cos(end) + cx\n const toY = r * Math.sin(end) + cy\n const large = Math.abs(length) <= Math.PI ? '0' : '1'\n const sweep = length < 0 ? '0' : '1'\n\n return [\n ['M', fromX, fromY],\n ['A', r, r, 0, large, sweep, toX, toY],\n ]\n}\n","import {CheckmarkCircleIcon} from '@sanity/icons/CheckmarkCircle'\nimport {ErrorOutlineIcon} from '@sanity/icons/ErrorOutline'\nimport {Card, type CardTone, Flex, Text} from '@sanity/ui'\nimport {useEffect, useMemo, useState} from 'react'\n\nimport {ProgressIcon} from '../../../../ui-components/progressIcon/ProgressIcon'\nimport {Tooltip} from '../../../../ui-components/tooltip/Tooltip'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {releasesLocaleNamespace} from '../../i18n'\nimport {getDocumentValidationLoading} from '../../util/getDocumentValidationLoading'\nimport {type DocumentInRelease} from './types'\n\nexport function ValidationProgressIndicator({\n documents,\n layout = 'default',\n}: {\n documents: DocumentInRelease[]\n layout?: 'default' | 'minimal'\n}) {\n const totalCount = documents.length\n const {validatedCount, isValidating, hasError} = getDocumentValidationLoading(documents)\n const [showCheckmark, setShowCheckmark] = useState(false)\n // in order if the caching has already happened once and the object is already at minimal,\n // We don't want to show the whole thing again - instead we want to keep the minimal layout\n const [hasFinishedOnce, setHasFinishedOnce] = useState(false)\n const {t} = useTranslation(releasesLocaleNamespace)\n\n const isFinished = useMemo(\n () => validatedCount === totalCount && validatedCount !== 0,\n [validatedCount, totalCount],\n )\n\n // Use minimal layout if explicitly set OR if validation has finished once\n const isMinimal = layout === 'minimal' || hasFinishedOnce\n\n // Add delay when validation is finished\n // so that we can show that it's finished but then show the checkmark\n // without the text\n useEffect(() => {\n if (isFinished) {\n const timer = setTimeout(() => {\n setShowCheckmark(true)\n setHasFinishedOnce(true)\n }, 2500)\n\n return () => clearTimeout(timer)\n }\n return undefined\n }, [isFinished, showCheckmark])\n\n useEffect(() => {\n // If it's not validating, we should not be showing the checkmark\n // it is only shown after a delay set by the previous useEffect\n if (isValidating) {\n // oxlint-disable-next-line react/react-compiler\n setShowCheckmark(false)\n }\n }, [isValidating])\n\n // If it's not finished and not validating, we should not be showing anything\n // usually this happens when the release detail is first opened\n if (!isFinished && !isValidating) {\n return null\n }\n\n const tone: CardTone = isValidating\n ? 'neutral'\n : isFinished && showCheckmark && !hasError\n ? 'transparent'\n : hasError\n ? 'critical'\n : 'positive'\n\n const cardBackground = isFinished && showCheckmark && !hasError ? 'transparent' : undefined\n\n return (\n <Card\n padding={isMinimal ? 0 : 2}\n radius=\"full\"\n tone={tone}\n style={{\n background: cardBackground,\n }}\n >\n <Flex gap={2}>\n <Text size={1}>\n {isValidating ? (\n <ProgressIcon progress={validatedCount / totalCount} />\n ) : (\n <Tooltip\n content={hasError ? t('summary.errors-found') : t('summary.all-documents-validated')}\n >\n {hasError ? <ErrorOutlineIcon /> : <CheckmarkCircleIcon />}\n </Tooltip>\n )}\n </Text>\n {!showCheckmark && !isMinimal && (\n <Text muted size={1}>\n {isValidating\n ? t('summary.validating-documents', {validatedCount, totalCount})\n : hasError\n ? t('summary.all-documents-errors-found')\n : t('summary.all-documents-validated')}\n </Text>\n )}\n </Flex>\n </Card>\n )\n}\n","import {type ReleaseDocument} from '@sanity/client'\nimport {CheckmarkCircleIcon} from '@sanity/icons/CheckmarkCircle'\nimport {ClockIcon} from '@sanity/icons/Clock'\nimport {DocumentsIcon} from '@sanity/icons/Documents'\nimport {ErrorOutlineIcon} from '@sanity/icons/ErrorOutline'\nimport {PinIcon} from '@sanity/icons/Pin'\nimport {PinFilledIcon} from '@sanity/icons/PinFilled'\nimport {UserIcon} from '@sanity/icons/User'\nimport {WarningOutlineIcon} from '@sanity/icons/WarningOutline'\nimport {Box, Card, Container, Flex, Skeleton, Stack, Text} from '@sanity/ui'\nimport {useCallback, useEffect, useRef, useState} from 'react'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {ToneIcon} from '../../../../ui-components/toneIcon/ToneIcon'\nimport {DetailPropertiesPanel, type DetailPropertiesSection} from '../../../components/detailLayout'\nimport {RelativeTime} from '../../../components/RelativeTime'\nimport {TextWithTone} from '../../../components/textWithTone/TextWithTone'\nimport {UserAvatar} from '../../../components/userAvatar/UserAvatar'\nimport {Details} from '../../../form/components/Details'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {usePerspective} from '../../../perspective/usePerspective'\nimport {useSetPerspective} from '../../../perspective/useSetPerspective'\nimport {useWorkspace} from '../../../studio/workspace'\nimport {ReleaseAvatar} from '../../components/ReleaseAvatar'\nimport {releasesLocaleNamespace} from '../../i18n'\nimport {useReleaseOperations} from '../../store/useReleaseOperations'\nimport {useReleasePermissions} from '../../store/useReleasePermissions'\nimport {getDocumentValidationLoading} from '../../util/getDocumentValidationLoading'\nimport {getReleaseIdFromReleaseDocumentId} from '../../util/getReleaseIdFromReleaseDocumentId'\nimport {isNotArchivedRelease} from '../../util/util'\nimport {ArchivedReleaseBanner} from './ArchivedReleaseBanner'\nimport {isCreateReleaseEvent, type ReleaseEvent} from './events/types'\nimport {ReleaseDetailsEditor} from './ReleaseDetailsEditor'\nimport {ReleaseTypePicker} from './ReleaseTypePicker'\nimport {ReleaseValidationBadge} from './ReleaseValidationBadge'\nimport {type DocumentInRelease} from './types'\nimport {ValidationProgressIndicator} from './ValidationProgressIndicator'\n\nfunction ReleaseDashboardDetailsProduction({\n release,\n documents,\n shouldDisplayError,\n shouldDisplayWarnings,\n isAtTimeRelease,\n isReleaseOpen,\n}: {\n release: ReleaseDocument\n documents: DocumentInRelease[]\n shouldDisplayError: boolean\n shouldDisplayWarnings: boolean\n isAtTimeRelease: boolean\n isReleaseOpen: boolean\n}) {\n const {t: tRelease} = useTranslation(releasesLocaleNamespace)\n const {t: tCore} = useTranslation()\n const releaseId = getReleaseIdFromReleaseDocumentId(release._id)\n const {selectedReleaseId} = usePerspective()\n const setPerspective = useSetPerspective()\n const {document} = useWorkspace()\n const {\n drafts: {enabled: isDraftModelEnabled},\n } = document\n\n const isSelected = releaseId === selectedReleaseId\n const releaseFullTitle = release.metadata.title || tCore('release.placeholder-untitled-release')\n\n const handlePinRelease = useCallback(() => {\n if (isSelected) {\n setPerspective(isDraftModelEnabled ? 'drafts' : 'published')\n } else {\n setPerspective(releaseId)\n }\n }, [isDraftModelEnabled, isSelected, releaseId, setPerspective])\n\n return (\n <Container width={3}>\n <Stack padding={3} paddingY={[3, 3, 4, 5]}>\n <Flex gap={1} align=\"center\">\n {isReleaseOpen && (\n <Button\n icon={isSelected ? PinFilledIcon : PinIcon}\n tooltipProps={{\n placement: 'top',\n content: isSelected\n ? tRelease('dashboard.details.unpin-release')\n : tRelease('dashboard.details.pin-release'),\n }}\n mode=\"bleed\"\n onClick={handlePinRelease}\n radius=\"full\"\n selected={isSelected}\n aria-label={\n isSelected\n ? `${tRelease('dashboard.details.unpin-release')}: \"${releaseFullTitle}\"`\n : `${tRelease('dashboard.details.pin-release')}: \"${releaseFullTitle}\"`\n }\n aria-live=\"assertive\"\n />\n )}\n {isNotArchivedRelease(release) && <ReleaseTypePicker release={release} />}\n <ValidationProgressIndicator documents={documents} />\n {shouldDisplayError && (\n <Flex gap={2} padding={2} data-testid=\"release-error-details\">\n <Text size={1}>\n <ToneIcon icon={ErrorOutlineIcon} tone=\"critical\" />\n </Text>\n <TextWithTone size={1} tone=\"critical\">\n {isAtTimeRelease\n ? tRelease('failed-schedule-title')\n : tRelease('failed-publish-title')}\n </TextWithTone>\n </Flex>\n )}\n {shouldDisplayWarnings && (\n <Flex gap={2} padding={2} data-testid=\"release-permission-error-details\">\n <Text size={1}>\n <ToneIcon icon={WarningOutlineIcon} tone=\"caution\" />\n </Text>\n <TextWithTone size={1} tone=\"caution\">\n {tRelease('permission-missing-title')}\n </TextWithTone>\n </Flex>\n )}\n </Flex>\n <Box padding={2}>\n <ReleaseDetailsEditor release={release} />\n </Box>\n {shouldDisplayError && (\n <Card padding={4} radius={4} tone=\"critical\">\n <Flex gap={3}>\n <Text size={1}>\n <ErrorOutlineIcon />\n </Text>\n <Stack gap={4}>\n <Text size={1} weight=\"semibold\">\n {isAtTimeRelease\n ? tRelease('failed-schedule-title')\n : tRelease('failed-publish-title')}\n </Text>\n <Details title={tRelease('error-details-title')}>\n <Text size={1} accent>\n <code>{release.error?.message}</code>\n </Text>\n </Details>\n </Stack>\n </Flex>\n </Card>\n )}\n\n {shouldDisplayWarnings && (\n <Card padding={4} radius={4} tone=\"caution\">\n <Flex gap={3}>\n <Text size={1}>\n <WarningOutlineIcon />\n </Text>\n <Stack gap={3}>\n <Text size={1}>{tRelease('permission-missing-title')}</Text>\n <Text size={1} muted>\n {tRelease('permission-missing-description')}\n </Text>\n </Stack>\n </Flex>\n </Card>\n )}\n\n {!isReleaseOpen && <ArchivedReleaseBanner release={release} />}\n </Stack>\n </Container>\n )\n}\n\nexport function ReleaseDashboardDetails({\n release,\n documents,\n events,\n loading = false,\n}: {\n release: ReleaseDocument\n documents: DocumentInRelease[]\n events: ReleaseEvent[]\n /** True while the release documents are still loading — skeleton the count/status instead of\n * rendering an empty (\"No documents\" / \"0\") state prematurely. */\n loading?: boolean\n}) {\n const {state} = release\n\n const {checkWithPermissionGuard} = useReleasePermissions()\n const {publishRelease, schedule} = useReleaseOperations()\n\n const {t: tRelease} = useTranslation(releasesLocaleNamespace)\n const variantsEnabled = Boolean(useWorkspace().beta?.variants?.enabled)\n const createAuthor = events.find(isCreateReleaseEvent)?.author\n\n const validation = getDocumentValidationLoading(documents)\n const isFullyValidated = documents.length > 0 && validation.validatedCount === documents.length\n const statusTone = validation.hasError ? 'critical' : isFullyValidated ? 'positive' : 'default'\n const statusGlyphIcon = validation.hasError ? (\n <ErrorOutlineIcon />\n ) : isFullyValidated ? (\n <CheckmarkCircleIcon />\n ) : (\n <ClockIcon />\n )\n const statusGlyph =\n documents.length === 0 ? undefined : (\n <Card tone={statusTone} style={{background: 'transparent'}}>\n <Text size={1}>{statusGlyphIcon}</Text>\n </Card>\n )\n\n const isAtTimeRelease = release?.metadata?.releaseType === 'scheduled'\n const isReleaseOpen = state !== 'archived' && state !== 'published'\n const isActive = release.state === 'active'\n const shouldDisplayError = isActive && typeof release.error !== 'undefined'\n const [shouldDisplayPermissionWarning, setShouldDisplayPermissionWarning] = useState(false)\n const shouldDisplayWarnings = isActive && shouldDisplayPermissionWarning\n const isMounted = useRef(false)\n useEffect(() => {\n isMounted.current = true\n\n // only run if the release is active\n if (isActive) {\n void checkWithPermissionGuard(publishRelease, release._id).then((hasPermission) => {\n if (isMounted.current) setShouldDisplayPermissionWarning(!hasPermission)\n return null\n })\n\n // if it's a release that can be scheduled, check if it can be scheduled\n if (release.metadata.intendedPublishAt && isAtTimeRelease) {\n void checkWithPermissionGuard(schedule, release._id, new Date()).then((hasPermission) => {\n if (isMounted.current) setShouldDisplayPermissionWarning(!hasPermission)\n return null\n })\n }\n }\n return () => {\n isMounted.current = false\n }\n }, [\n checkWithPermissionGuard,\n isActive,\n isAtTimeRelease,\n publishRelease,\n release._id,\n release.metadata.intendedPublishAt,\n schedule,\n ])\n\n if (!variantsEnabled) {\n return (\n <ReleaseDashboardDetailsProduction\n release={release}\n documents={documents}\n shouldDisplayError={shouldDisplayError}\n shouldDisplayWarnings={shouldDisplayWarnings}\n isAtTimeRelease={isAtTimeRelease}\n isReleaseOpen={isReleaseOpen}\n />\n )\n }\n\n return (\n <Container width={3}>\n {/* Tight top padding: the header above already pads its bottom, so the title sits close under\n the breadcrumb instead of floating in a doubled gap. */}\n <Stack paddingX={3} paddingBottom={3} paddingTop={1} gap={4}>\n {/* Clear zones: identity (title + description) on the left; a label -> value metadata panel\n on the right. Wraps to a single column on narrow widths (metadata stacks under the\n description). The pin control was removed (it's a global-perspective mode that belongs in\n the perspective bar, matching the Variants pin removal). */}\n <Flex align=\"flex-start\" gap={4} wrap=\"wrap\">\n <Box flex={1} style={{minWidth: 280}}>\n <ReleaseDetailsEditor release={release} />\n </Box>\n <DetailPropertiesPanel\n testId=\"release-detail-metadata\"\n sections={\n [\n {\n rows: [\n isNotArchivedRelease(release) && {\n icon: <ReleaseAvatar release={release} padding={0} />,\n label: tRelease('dashboard.details.metadata.schedule'),\n value: <ReleaseTypePicker release={release} />,\n },\n {\n icon: statusGlyph,\n label: tRelease('dashboard.details.metadata.status'),\n value: loading ? (\n <Skeleton animated radius={1} style={{width: 48, height: 11}} />\n ) : (\n <ReleaseValidationBadge documents={documents} />\n ),\n },\n {\n icon: (\n <Text size={1} muted>\n <DocumentsIcon />\n </Text>\n ),\n label: tRelease('dashboard.details.metadata.documents'),\n value: loading ? (\n <Skeleton animated radius={1} style={{width: 24, height: 11}} />\n ) : (\n String(documents.length)\n ),\n },\n {\n icon: createAuthor ? (\n <UserAvatar size={0} user={createAuthor} />\n ) : (\n <Text size={1} muted>\n <UserIcon />\n </Text>\n ),\n label: tRelease('dashboard.details.metadata.created'),\n value: (\n <Text size={1}>\n <RelativeTime time={release._createdAt} useTemporalPhrase minimal />\n </Text>\n ),\n },\n ],\n },\n ] satisfies DetailPropertiesSection[]\n }\n />\n </Flex>\n {shouldDisplayError && (\n <Card data-testid=\"release-error-details\" padding={4} radius={4} tone=\"critical\">\n <Flex gap={3}>\n <Text size={1}>\n <ErrorOutlineIcon />\n </Text>\n <Stack gap={4}>\n <Text size={1} weight=\"semibold\">\n {isAtTimeRelease\n ? tRelease('failed-schedule-title')\n : tRelease('failed-publish-title')}\n </Text>\n <Details title={tRelease('error-details-title')}>\n <Text size={1} accent>\n <code>{release.error?.message}</code>\n </Text>\n </Details>\n </Stack>\n </Flex>\n </Card>\n )}\n\n {shouldDisplayWarnings && (\n <Card\n data-testid=\"release-permission-error-details\"\n padding={4}\n radius={4}\n tone=\"caution\"\n >\n <Flex gap={3}>\n <Text size={1}>\n <WarningOutlineIcon />\n </Text>\n <Stack gap={3}>\n <Text size={1}>{tRelease('permission-missing-title')}</Text>\n <Text size={1} muted>\n {tRelease('permission-missing-description')}\n </Text>\n </Stack>\n </Flex>\n </Card>\n )}\n\n {!isReleaseOpen && <ArchivedReleaseBanner release={release} />}\n </Stack>\n </Container>\n )\n}\n","import {type ReleaseDocument} from '@sanity/client'\nimport {memo, type ReactNode, useEffect} from 'react'\n\nimport {GetHookCollectionState} from '../../components/hookCollection/GetHookCollectionState'\nimport {\n type ReleaseActionComponent,\n type ReleaseActionDescription,\n} from '../../config/releases/actions'\nimport {type DocumentInRelease} from '../tool/detail/types'\n\nexport interface ReleaseActionsResolverProps {\n actions: ReleaseActionComponent[]\n release: ReleaseDocument\n documents: DocumentInRelease[]\n onActions: (actions: ReleaseActionDescription[]) => void\n children?: (props: {states: ReleaseActionDescription[]}) => ReactNode\n}\n\nconst ReleaseActionsStateHandler = memo(function ReleaseActionsStateHandler({\n states,\n onActions,\n renderChildren,\n}: {\n states: ReleaseActionDescription[]\n onActions: (actions: ReleaseActionDescription[]) => void\n renderChildren?: (props: {states: ReleaseActionDescription[]}) => ReactNode\n}) {\n useEffect(() => {\n onActions(states)\n }, [states, onActions])\n\n return renderChildren ? renderChildren({states}) : null\n})\n\n/**\n * The `ReleaseActionsResolver` component is responsible for resolving the actions for a given release.\n *\n * This component uses the `GetHookCollectionState` pattern to efficiently manage action hook states,\n * providing performance optimizations and consistent behaviour with document actions.\n *\n * @internal\n */\nexport const ReleaseActionsResolver = memo(function ReleaseActionsResolver(\n props: ReleaseActionsResolverProps,\n) {\n const {actions, release, documents, onActions, children} = props\n\n const actionProps = {\n release,\n documents,\n }\n\n return (\n <GetHookCollectionState<typeof actionProps, ReleaseActionDescription>\n hooks={actions}\n args={actionProps}\n >\n {({states}) => (\n <ReleaseActionsStateHandler\n states={states}\n onActions={onActions}\n renderChildren={children}\n />\n )}\n </GetHookCollectionState>\n )\n})\n","import {type ReleaseDocument} from '@sanity/client'\nimport {useMemo} from 'react'\n\nimport {type ReleaseActionComponent} from '../../config/releases/actions'\nimport {useSource} from '../../studio/source'\nimport {type DocumentInRelease} from '../tool/detail/types'\n\n/**\n * Hook to get custom/configured release actions for a release\n *\n * @internal\n */\nexport function useCustomReleaseActions(\n release: ReleaseDocument,\n documents: DocumentInRelease[] = [],\n): ReleaseActionComponent[] {\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n const source = useSource()\n\n const customReleaseActions = useMemo(() => {\n if (!source.releases?.actions) {\n return []\n }\n\n return source.releases.actions({\n release,\n documents,\n })\n }, [source, release, documents])\n\n return customReleaseActions\n}\n","import {Text} from '@sanity/ui'\nimport {useCallback} from 'react'\nimport {useRouter} from 'sanity/router'\n\nimport {useTranslation} from '../../../../i18n/hooks/useTranslation'\nimport {releasesLocaleNamespace} from '../../../i18n'\nimport {getReleaseIdFromReleaseDocumentId} from '../../../util/getReleaseIdFromReleaseDocumentId'\nimport {type ActionResult} from './ReleaseMenuButton'\n\nexport const DuplicateReleaseToastLink = ({actionResult}: {actionResult: ActionResult}) => {\n const router = useRouter()\n const {t} = useTranslation(releasesLocaleNamespace)\n\n const navigateToDuplicateRelease = useCallback(() => {\n if (!actionResult || !('releaseId' in actionResult)) return\n\n router.navigate({releaseId: getReleaseIdFromReleaseDocumentId(actionResult.releaseId)})\n }, [actionResult, router])\n\n return (\n <Text\n size={1}\n weight=\"medium\"\n data-as=\"a\"\n onClick={navigateToDuplicateRelease}\n style={{\n cursor: 'pointer',\n marginBottom: '0.5rem',\n display: 'flex',\n }}\n data-testid=\"duplicate-release-success-link\"\n >\n {t('toast.duplicate.success-link')}\n </Text>\n )\n}\n","import {type DefinedTelemetryLog} from '@sanity/telemetry/react'\nimport {type ButtonTone} from '@sanity/ui'\n\nimport {\n ArchivedRelease,\n DeletedRelease,\n DuplicatedRelease,\n UnarchivedRelease,\n UnscheduledRelease,\n} from '../../../__telemetry__/releases.telemetry'\n\nexport type ReleaseAction =\n | 'archive'\n | 'unarchive'\n | 'delete'\n | 'unschedule'\n | 'publish'\n | 'schedule'\n | 'duplicate'\n\ninterface BaseReleaseActionsMap {\n toastSuccessI18nKey?: string\n toastFailureI18nKey?: string\n telemetry: DefinedTelemetryLog<void>\n}\n\ninterface DialogActionsMap extends BaseReleaseActionsMap {\n confirmDialog: {\n dialogId: string\n dialogHeaderI18nKey: string\n dialogDescriptionI18nKey: string\n dialogConfirmButtonI18nKey: string\n confirmButtonTone: ButtonTone\n }\n}\n\nexport const RELEASE_ACTION_MAP: Record<\n Exclude<ReleaseAction, 'schedule' | 'publish'>,\n DialogActionsMap | (BaseReleaseActionsMap & {confirmDialog: false})\n> = {\n delete: {\n confirmDialog: {\n dialogId: 'confirm-delete-dialog',\n dialogHeaderI18nKey: 'delete-dialog.confirm-delete.header',\n dialogDescriptionI18nKey: 'delete-dialog.confirm-delete-description',\n dialogConfirmButtonI18nKey: 'delete-dialog.confirm-delete-button',\n confirmButtonTone: 'critical',\n },\n toastSuccessI18nKey: 'toast.delete.success',\n toastFailureI18nKey: 'toast.delete.error',\n telemetry: DeletedRelease,\n },\n archive: {\n confirmDialog: {\n dialogId: 'confirm-archive-dialog',\n dialogHeaderI18nKey: 'archive-dialog.confirm-archive-header',\n dialogDescriptionI18nKey: 'archive-dialog.confirm-archive-description',\n dialogConfirmButtonI18nKey: 'archive-dialog.confirm-archive-button',\n confirmButtonTone: 'critical',\n },\n toastFailureI18nKey: 'toast.archive.error',\n telemetry: ArchivedRelease,\n },\n unarchive: {\n confirmDialog: false,\n toastFailureI18nKey: 'toast.unarchive.error',\n telemetry: UnarchivedRelease,\n },\n unschedule: {\n confirmDialog: false,\n toastFailureI18nKey: 'toast.unschedule.error',\n telemetry: UnscheduledRelease,\n },\n duplicate: {\n confirmDialog: {\n dialogId: 'confirm-duplicate-dialog',\n dialogHeaderI18nKey: 'duplicate-dialog.confirm-duplicate-header',\n dialogDescriptionI18nKey: 'duplicate-dialog.confirm-duplicate-description',\n dialogConfirmButtonI18nKey: 'duplicate-dialog.confirm-duplicate-button',\n confirmButtonTone: 'primary',\n },\n toastSuccessI18nKey: 'toast.duplicate.success',\n toastFailureI18nKey: 'toast.duplicate.error',\n telemetry: DuplicatedRelease,\n },\n}\n","import {type ReleaseDocument} from '@sanity/client'\nimport {ErrorOutlineIcon} from '@sanity/icons/ErrorOutline'\nimport {PublishIcon} from '@sanity/icons/Publish'\nimport {useTelemetry} from '@sanity/telemetry/react'\nimport {Checkbox, Flex, Stack, Text, useToast} from '@sanity/ui'\nimport {type ChangeEvent, useCallback, useEffect, useMemo, useRef, useState} from 'react'\n\nimport {Button} from '../../../../../ui-components/button/Button'\nimport {Dialog} from '../../../../../ui-components/dialog/Dialog'\nimport {MenuItem} from '../../../../../ui-components/menuItem/MenuItem'\nimport {ToneIcon} from '../../../../../ui-components/toneIcon/ToneIcon'\nimport {type TooltipProps} from '../../../../../ui-components/tooltip/Tooltip'\nimport {useTranslation} from '../../../../i18n/hooks/useTranslation'\nimport {Translate} from '../../../../i18n/Translate'\nimport {usePerspective} from '../../../../perspective/usePerspective'\nimport {useSetPerspective} from '../../../../perspective/useSetPerspective'\nimport {useWorkspace} from '../../../../studio/workspace'\nimport {PublishedRelease} from '../../../__telemetry__/releases.telemetry'\nimport {releasesLocaleNamespace} from '../../../i18n'\nimport {isReleaseDocument} from '../../../store/types'\nimport {useReleaseOperations} from '../../../store/useReleaseOperations'\nimport {useReleasePermissions} from '../../../store/useReleasePermissions'\nimport {isGoingToUnpublish} from '../../../util/isGoingToUnpublish'\nimport {type DocumentInRelease} from '../../detail/types'\n\ninterface ReleasePublishAllButtonProps {\n release: ReleaseDocument\n documents: DocumentInRelease[]\n disabled?: boolean\n isMenuItem?: boolean\n onConfirmDialogOpen?: () => void\n onConfirmDialogClose?: () => void\n}\n\nexport const ReleasePublishAllButton = ({\n release,\n documents,\n disabled,\n isMenuItem = false,\n onConfirmDialogOpen,\n onConfirmDialogClose,\n}: ReleasePublishAllButtonProps) => {\n const toast = useToast()\n const {publishRelease, discardDrafts} = useReleaseOperations()\n const {checkWithPermissionGuard} = useReleasePermissions()\n const {t} = useTranslation(releasesLocaleNamespace)\n const {t: tCore} = useTranslation()\n const perspective = usePerspective()\n const setPerspective = useSetPerspective()\n const telemetry = useTelemetry()\n const {document} = useWorkspace()\n const {\n drafts: {enabled: isDraftModelEnabled},\n } = document\n\n const [publishBundleStatus, setPublishBundleStatus] = useState<'idle' | 'confirm' | 'publishing'>(\n 'idle',\n )\n const [shouldUpdateDrafts, setShouldUpdateDrafts] = useState(false)\n\n const [publishPermission, setPublishPermission] = useState<boolean>(false)\n\n // documents that also have an existing draft, which would become outdated once the release\n // is published (documents set to be unpublished are excluded, since publishing intentionally\n // keeps or creates a draft for them so that their content is not lost)\n const draftDocumentIds = useMemo(\n () =>\n documents\n .filter(\n (releaseDocument) =>\n releaseDocument.document.draftDocumentExists &&\n !isGoingToUnpublish(releaseDocument.document),\n )\n .map((releaseDocument) => releaseDocument.document._id),\n [documents],\n )\n const draftDocumentsCount = draftDocumentIds.length\n const showUpdateDraftsOption = isDraftModelEnabled && draftDocumentsCount > 0\n\n const isValidatingDocuments = documents.some(({validation}) => validation.isValidating)\n const hasDocumentValidationErrors = documents.some(({validation}) => validation.hasError)\n\n const isPublishButtonDisabled =\n disabled || isValidatingDocuments || hasDocumentValidationErrors || !publishPermission\n\n const isMounted = useRef(false)\n useEffect(() => {\n isMounted.current = true\n\n void checkWithPermissionGuard(publishRelease, release._id).then((hasPermission) => {\n if (isMounted.current) setPublishPermission(hasPermission)\n })\n\n return () => {\n isMounted.current = false\n }\n }, [checkWithPermissionGuard, publishRelease, release._id, release.metadata.intendedPublishAt])\n\n const handleConfirmPublishAll = useCallback(async () => {\n if (!release) return\n\n // Workaround for React Compiler not yet fully supporting try/catch/finally syntax\n const run = async () => {\n setPublishBundleStatus('publishing')\n await publishRelease(release._id)\n telemetry.log(PublishedRelease)\n if (showUpdateDraftsOption && shouldUpdateDrafts) {\n // the release has been published at this point, so a failure to update the drafts should\n // not surface as a failure to publish the release\n await discardDrafts(draftDocumentIds).catch((updateDraftsError) => {\n toast.push({\n status: 'warning',\n title: (\n <Text muted size={1}>\n <Translate\n t={t}\n i18nKey=\"toast.publish.update-drafts-error\"\n values={{error: updateDraftsError.message}}\n />\n </Text>\n ),\n })\n console.error(updateDraftsError)\n })\n }\n if (\n isReleaseDocument(perspective.selectedPerspective) &&\n perspective.selectedPerspective?._id === release._id\n ) {\n setPerspective(isDraftModelEnabled ? 'drafts' : 'published')\n }\n }\n try {\n await run()\n } catch (publishingError) {\n toast.push({\n status: 'error',\n title: (\n <Text muted size={1}>\n <Translate\n t={t}\n i18nKey=\"toast.publish.error\"\n values={{\n title: release.metadata.title || tCore('release.placeholder-untitled-release'),\n error: publishingError.message,\n }}\n />\n </Text>\n ),\n })\n console.error(publishingError)\n }\n onConfirmDialogClose?.()\n setPublishBundleStatus('idle')\n }, [\n release,\n publishRelease,\n telemetry,\n showUpdateDraftsOption,\n shouldUpdateDrafts,\n discardDrafts,\n draftDocumentIds,\n perspective.selectedPerspective,\n setPerspective,\n isDraftModelEnabled,\n toast,\n t,\n tCore,\n onConfirmDialogClose,\n ])\n\n const confirmPublishDialog = useMemo(() => {\n if (publishBundleStatus === 'idle') return null\n\n return (\n <Dialog\n id=\"confirm-publish-dialog\"\n data-testid=\"confirm-publish-dialog\"\n header={t('publish-dialog.confirm-publish.title')}\n onClose={() => {\n onConfirmDialogClose?.()\n setPublishBundleStatus('idle')\n }}\n footer={{\n confirmButton: {\n text: t('action.publish-all-documents'),\n tone: 'positive',\n onClick: handleConfirmPublishAll,\n loading: publishBundleStatus === 'publishing',\n disabled: publishBundleStatus === 'publishing',\n },\n }}\n >\n <Stack gap={4}>\n <Text muted size={1}>\n {\n <Translate\n t={t}\n i18nKey=\"publish-dialog.confirm-publish-description\"\n values={{\n title: release.metadata.title || tCore('release.placeholder-untitled-release'),\n releaseDocumentsLength: documents.length,\n count: documents.length,\n }}\n />\n }\n </Text>\n {showUpdateDraftsOption && (\n <Stack gap={3}>\n <Flex align=\"center\" gap={3} as=\"label\">\n <Checkbox\n checked={shouldUpdateDrafts}\n onChange={(event: ChangeEvent<HTMLInputElement>) =>\n setShouldUpdateDrafts(event.currentTarget.checked)\n }\n data-testid=\"update-drafts-checkbox\"\n />\n <Text size={1}>{t('publish-dialog.confirm-publish.update-drafts-checkbox')}</Text>\n </Flex>\n <Text muted size={1}>\n {t('publish-dialog.confirm-publish.update-drafts-description', {\n count: draftDocumentsCount,\n draftDocumentsLength: draftDocumentsCount,\n })}\n </Text>\n </Stack>\n )}\n </Stack>\n </Dialog>\n )\n }, [\n publishBundleStatus,\n t,\n handleConfirmPublishAll,\n release.metadata.title,\n tCore,\n documents.length,\n showUpdateDraftsOption,\n shouldUpdateDrafts,\n draftDocumentsCount,\n onConfirmDialogClose,\n ])\n\n const publishTooltipContent = useMemo(() => {\n if (!hasDocumentValidationErrors && !isValidatingDocuments && publishPermission) return null\n\n const tooltipText = () => {\n if (documents.length === 0) {\n return t('publish-action.validation.no-documents')\n }\n\n if (!publishPermission) {\n return t('publish-dialog.validation.no-permission')\n }\n\n if (isValidatingDocuments) {\n return t('publish-dialog.validation.loading')\n }\n\n if (hasDocumentValidationErrors) {\n return t('publish-dialog.validation.error')\n }\n\n return null\n }\n\n // TODO: this is a duplicate of logic in ReleaseScheduleButton\n return (\n <Text muted size={1}>\n <Flex align=\"center\" gap={3} padding={1}>\n <ToneIcon icon={ErrorOutlineIcon} tone={isValidatingDocuments ? 'default' : 'critical'} />\n {tooltipText()}\n </Flex>\n </Text>\n )\n }, [documents.length, hasDocumentValidationErrors, isValidatingDocuments, publishPermission, t])\n\n const handleInitialPublish = useCallback(() => {\n setShouldUpdateDrafts(false)\n setPublishBundleStatus('confirm')\n onConfirmDialogOpen?.()\n }, [onConfirmDialogOpen])\n\n const sharedProps = useMemo(\n () => ({\n icon: PublishIcon,\n disabled:\n isPublishButtonDisabled || publishBundleStatus === 'publishing' || documents.length === 0,\n text: t('action.publish-all-documents'),\n handleOnClick: handleInitialPublish,\n tooltipProps: {\n disabled: !isPublishButtonDisabled,\n content: publishTooltipContent,\n placement: 'bottom',\n } as Partial<TooltipProps>,\n }),\n [\n documents.length,\n handleInitialPublish,\n isPublishButtonDisabled,\n publishBundleStatus,\n publishTooltipContent,\n t,\n ],\n )\n\n return (\n <>\n {isMenuItem ? (\n <MenuItem\n tooltipProps={sharedProps.tooltipProps}\n icon={sharedProps.icon}\n disabled={sharedProps.disabled}\n text={sharedProps.text}\n onClick={sharedProps.handleOnClick}\n data-testid=\"publish-all-button-menu-item\"\n />\n ) : (\n <Button\n tooltipProps={sharedProps.tooltipProps}\n icon={sharedProps.icon}\n disabled={sharedProps.disabled}\n text={sharedProps.text}\n onClick={sharedProps.handleOnClick}\n loading={publishBundleStatus === 'publishing'}\n data-testid=\"publish-all-button\"\n tone=\"positive\"\n />\n )}\n {confirmPublishDialog}\n </>\n )\n}\n","import {type ReleaseDocument} from '@sanity/client'\nimport {ClockIcon} from '@sanity/icons/Clock'\nimport {ErrorOutlineIcon} from '@sanity/icons/ErrorOutline'\nimport {useTelemetry} from '@sanity/telemetry/react'\nimport {Card, Flex, Stack, Text, useToast} from '@sanity/ui'\nimport {format} from 'date-fns/format'\nimport {isBefore} from 'date-fns/isBefore'\nimport {isValid} from 'date-fns/isValid'\nimport {parse} from 'date-fns/parse'\nimport {startOfMinute} from 'date-fns/startOfMinute'\nimport isEqual from 'lodash-es/isEqual.js'\nimport {useCallback, useEffect, useMemo, useRef, useState} from 'react'\n\nimport {Button} from '../../../../../ui-components/button/Button'\nimport {Dialog} from '../../../../../ui-components/dialog/Dialog'\nimport {MenuItem} from '../../../../../ui-components/menuItem/MenuItem'\nimport {ToneIcon} from '../../../../../ui-components/toneIcon/ToneIcon'\nimport {type TooltipProps} from '../../../../../ui-components/tooltip/Tooltip'\nimport {MONTH_PICKER_VARIANT} from '../../../../components/inputs/DateInputs/calendar/Calendar'\nimport {type CalendarLabels} from '../../../../components/inputs/DateInputs/calendar/types'\nimport {DateTimeInput} from '../../../../components/inputs/DateInputs/DateTimeInput'\nimport {TimeZoneButton} from '../../../../components/timeZone/timeZoneButton/TimeZoneButton'\nimport TimeZoneButtonElementQuery from '../../../../components/timeZone/timeZoneButton/TimeZoneButtonElementQuery'\nimport {getCalendarLabels} from '../../../../form/inputs/DateInputs/utils'\nimport {useTimeZone} from '../../../../hooks/useTimeZone'\nimport {useTranslation} from '../../../../i18n/hooks/useTranslation'\nimport {Translate} from '../../../../i18n/Translate'\nimport {CONTENT_RELEASES_TIME_ZONE_SCOPE} from '../../../../studio/constants'\nimport {ScheduledRelease} from '../../../__telemetry__/releases.telemetry'\nimport {releasesLocaleNamespace} from '../../../i18n'\nimport {useReleaseOperations} from '../../../store/useReleaseOperations'\nimport {useReleasePermissions} from '../../../store/useReleasePermissions'\nimport {isReleaseScheduledOrScheduling} from '../../../util/util'\nimport {type DocumentInRelease} from '../../detail/types'\n\ninterface ReleaseScheduleButtonProps {\n release: ReleaseDocument\n documents: DocumentInRelease[]\n disabled?: boolean\n isMenuItem?: boolean\n onConfirmDialogOpen?: () => void\n onConfirmDialogClose?: () => void\n}\n\nexport const ReleaseScheduleButton = ({\n release,\n disabled,\n documents,\n isMenuItem = false,\n onConfirmDialogOpen,\n onConfirmDialogClose,\n}: ReleaseScheduleButtonProps) => {\n const toast = useToast()\n const {schedule, updateRelease} = useReleaseOperations()\n const {checkWithPermissionGuard} = useReleasePermissions()\n\n const [schedulePermission, setSchedulePermission] = useState<boolean>(false)\n\n const {t} = useTranslation(releasesLocaleNamespace)\n const {t: tCore} = useTranslation()\n const telemetry = useTelemetry()\n // in the releases tool we want timezone to be saved for releases\n const {utcToCurrentZoneDate, zoneDateToUtc, timeZone} = useTimeZone(\n CONTENT_RELEASES_TIME_ZONE_SCOPE,\n )\n const [status, setStatus] = useState<'idle' | 'confirm' | 'scheduling'>('idle')\n const [publishAt, setPublishAt] = useState<Date | undefined>()\n /**\n * This state supports the scenario of:\n * publishAt is set to a valid future date; but at time of submit it is in the past\n * Without an update on this state, ReleaseScheduledButton would not rerender\n * and so date in past warning ui elements wouldn't show\n */\n const [rerenderDialog, setRerenderDialog] = useState(0)\n\n const timeZoneAdjustedPublishAt = publishAt ? utcToCurrentZoneDate(publishAt) : undefined\n\n const isValidatingDocuments = documents.some(({validation}) => validation.isValidating)\n const hasDocumentValidationErrors = documents.some(({validation}) => validation.hasError)\n const isScheduleButtonDisabled =\n disabled || isValidatingDocuments || !schedulePermission || hasDocumentValidationErrors\n\n const isMounted = useRef(false)\n useEffect(() => {\n isMounted.current = true\n\n void checkWithPermissionGuard(schedule, release._id, new Date()).then((hasPermission) => {\n if (isMounted.current) setSchedulePermission(hasPermission)\n })\n\n return () => {\n isMounted.current = false\n }\n }, [checkWithPermissionGuard, release._id, release.metadata.intendedPublishAt, schedule])\n\n const isScheduledDateInPast = useCallback(() => {\n return isBefore(zoneDateToUtc(publishAt || new Date()), new Date())\n }, [publishAt, zoneDateToUtc])\n\n const handleConfirmSchedule = useCallback(async () => {\n if (!publishAt) return\n\n // this means that it will linely need to change the releaseType to scheduled\n if (isMenuItem) {\n const newRelease = {\n ...release,\n metadata: {\n ...release.metadata,\n releaseType: 'scheduled' as const,\n\n intendedPublishAt: publishAt.toISOString(),\n },\n }\n\n if (!isEqual(newRelease, release)) {\n void updateRelease(newRelease)\n }\n }\n\n if (isScheduledDateInPast()) {\n // rerender dialog to recalculate isScheduledDateInPast\n setRerenderDialog((cur) => cur + 1)\n return\n }\n\n // Workaround for React Compiler not yet fully supporting try/catch/finally syntax\n const run = async () => {\n setStatus('scheduling')\n await schedule(release._id, publishAt)\n telemetry.log(ScheduledRelease)\n toast.push({\n closable: true,\n status: 'info',\n title: (\n <Text muted size={1}>\n <Translate\n t={t}\n i18nKey=\"toast.schedule.success\"\n values={{\n title: release.metadata.title || tCore('release.placeholder-untitled-release'),\n }}\n />\n </Text>\n ),\n })\n }\n try {\n await run()\n } catch (schedulingError) {\n toast.push({\n status: 'error',\n title: (\n <Text muted size={1}>\n <Translate\n t={t}\n i18nKey=\"toast.schedule.error\"\n values={{\n title: release.metadata.title || tCore('release.placeholder-untitled-release'),\n error: schedulingError.message,\n }}\n />\n </Text>\n ),\n })\n console.error(schedulingError)\n }\n onConfirmDialogClose?.()\n setStatus('idle')\n }, [\n publishAt,\n isMenuItem,\n isScheduledDateInPast,\n release,\n updateRelease,\n schedule,\n telemetry,\n toast,\n t,\n tCore,\n onConfirmDialogClose,\n ])\n\n const calendarLabels: CalendarLabels = useMemo(() => getCalendarLabels(tCore), [tCore])\n\n const handleBundlePublishAtCalendarChange = useCallback((date: Date | null) => {\n if (!date) return\n\n setPublishAt(startOfMinute(date))\n }, [])\n\n const handleBundleInputChange = useCallback(\n (event: React.FocusEvent<HTMLInputElement>) => {\n const date = event.currentTarget.value\n const parsedDate = zoneDateToUtc(parse(date, 'PP HH:mm', new Date()))\n\n if (isValid(parsedDate)) {\n setPublishAt(parsedDate)\n }\n },\n [zoneDateToUtc],\n )\n\n const handleOnDialogClose = useCallback(() => {\n onConfirmDialogClose?.()\n if (status !== 'scheduling') {\n setStatus('idle')\n }\n }, [onConfirmDialogClose, status])\n\n const confirmScheduleDialog = useMemo(() => {\n if (status === 'idle') return null\n\n const _isScheduledDateInPast = isScheduledDateInPast()\n\n return (\n <Dialog\n /**\n * rerenderDialog should force this function to rerun\n * since the selected scheduled date was in the future when selected\n * but at time of submit it is in the past\n */\n key={rerenderDialog}\n id=\"confirm-schedule-dialog\"\n data-testid=\"confirm-schedule-dialog\"\n header={t('schedule-dialog.confirm-title', {\n documentsLength: documents.length,\n count: documents.length,\n })}\n onClose={handleOnDialogClose}\n footer={{\n confirmButton: {\n text: t('schedule-dialog.confirm-button'),\n tone: 'default',\n onClick: handleConfirmSchedule,\n loading: status === 'scheduling',\n disabled: _isScheduledDateInPast || status === 'scheduling',\n },\n cancelButton: {\n disabled: status === 'scheduling',\n },\n }}\n >\n <Stack gap={3}>\n {_isScheduledDateInPast && (\n <Card marginBottom={1} padding={2} radius={2} shadow={1} tone=\"critical\">\n <Text size={1}>{tCore('release.schedule-dialog.publish-date-in-past-warning')}</Text>\n </Card>\n )}\n <Stack gap={3}>\n <Flex align=\"center\" justify=\"space-between\" gap={2}>\n <label>\n <Text size={1} weight=\"semibold\">\n {tCore('release.schedule-dialog.select-publish-date-label')}\n </Text>\n </label>\n <TimeZoneButtonElementQuery>\n <TimeZoneButton\n tooltipContent={\n <Translate\n t={tCore}\n i18nKey={'time-zone.time-zone-tooltip-input'}\n values={{\n title: tCore('release.schedule-dialog.select-publish-date-label'),\n alternativeName: timeZone.alternativeName,\n offset: timeZone.offset,\n }}\n />\n }\n allowTimeZoneSwitch\n useElementQueries\n timeZoneScope={CONTENT_RELEASES_TIME_ZONE_SCOPE}\n />\n </TimeZoneButtonElementQuery>\n </Flex>\n <DateTimeInput\n selectTime\n monthPickerVariant={MONTH_PICKER_VARIANT.carousel}\n onChange={handleBundlePublishAtCalendarChange}\n onInputChange={handleBundleInputChange}\n value={publishAt}\n calendarLabels={calendarLabels}\n inputValue={\n timeZoneAdjustedPublishAt ? format(timeZoneAdjustedPublishAt, 'PP HH:mm') : ''\n }\n constrainSize={false}\n isPastDisabled\n timeZoneScope={CONTENT_RELEASES_TIME_ZONE_SCOPE}\n />\n </Stack>\n <Text muted size={1}>\n <Translate\n t={t}\n i18nKey=\"schedule-dialog.confirm-description\"\n values={{\n title: release.metadata.title || tCore('release.placeholder-untitled-release'),\n count: documents.length,\n }}\n />\n </Text>\n </Stack>\n </Dialog>\n )\n }, [\n status,\n isScheduledDateInPast,\n rerenderDialog,\n t,\n publishAt,\n documents.length,\n handleOnDialogClose,\n handleConfirmSchedule,\n handleBundlePublishAtCalendarChange,\n handleBundleInputChange,\n timeZoneAdjustedPublishAt,\n calendarLabels,\n release.metadata.title,\n tCore,\n timeZone,\n ])\n\n const handleOnInitialSchedule = useCallback(() => {\n setPublishAt(\n release.metadata.intendedPublishAt\n ? new Date(release.metadata.intendedPublishAt)\n : new Date(),\n )\n setStatus('confirm')\n onConfirmDialogOpen?.()\n }, [onConfirmDialogOpen, release.metadata.intendedPublishAt])\n\n const tooltipText = useMemo(() => {\n if (documents.length === 0) {\n return t('schedule-action.validation.no-documents')\n }\n\n if (!schedulePermission) {\n return t('schedule-button-tooltip.validation.no-permission')\n }\n\n if (isValidatingDocuments) {\n return t('schedule-button-tooltip.validation.loading')\n }\n\n if (hasDocumentValidationErrors) {\n return t('schedule-button-tooltip.validation.error')\n }\n\n if (isReleaseScheduledOrScheduling(release)) {\n return t('schedule-button-tooltip.already-scheduled')\n }\n return null\n }, [\n documents.length,\n hasDocumentValidationErrors,\n isValidatingDocuments,\n release,\n schedulePermission,\n t,\n ])\n\n // TODO: this is a duplicate of logic in ReleasePublishAllButton\n const scheduleTooltipContent = useMemo(() => {\n return (\n <Text muted size={1}>\n <Flex align=\"center\" gap={3} padding={1}>\n <ToneIcon icon={ErrorOutlineIcon} tone={isValidatingDocuments ? 'default' : 'critical'} />\n {tooltipText}\n </Flex>\n </Text>\n )\n }, [isValidatingDocuments, tooltipText])\n\n const sharedProps = useMemo(\n () => ({\n icon: ClockIcon,\n disabled: isScheduleButtonDisabled || status === 'scheduling' || documents.length === 0,\n text: t('action.schedule'),\n handleOnClick: handleOnInitialSchedule,\n tooltipProps: {\n disabled: !tooltipText,\n content: scheduleTooltipContent,\n placement: 'bottom',\n } as Partial<TooltipProps>,\n }),\n [\n documents.length,\n handleOnInitialSchedule,\n isScheduleButtonDisabled,\n scheduleTooltipContent,\n status,\n t,\n tooltipText,\n ],\n )\n\n return (\n <>\n {isMenuItem ? (\n <MenuItem\n tooltipProps={sharedProps.tooltipProps}\n icon={sharedProps.icon}\n disabled={sharedProps.disabled}\n text={sharedProps.text}\n onClick={sharedProps.handleOnClick}\n data-testid=\"schedule-button-menu-item\"\n />\n ) : (\n <Button\n tooltipProps={sharedProps.tooltipProps}\n tone=\"primary\"\n icon={sharedProps.icon}\n disabled={sharedProps.disabled}\n text={sharedProps.text}\n onClick={sharedProps.handleOnClick}\n loading={status === 'scheduling'}\n data-testid=\"schedule-button\"\n />\n )}\n {confirmScheduleDialog}\n </>\n )\n}\n","import {ArchiveIcon} from '@sanity/icons/Archive'\nimport {CloseCircleIcon} from '@sanity/icons/CloseCircle'\nimport {CopyIcon} from '@sanity/icons/Copy'\nimport {TrashIcon} from '@sanity/icons/Trash'\nimport {UnarchiveIcon} from '@sanity/icons/Unarchive'\nimport {\n type Dispatch,\n type MouseEventHandler,\n type SetStateAction,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react'\n\nimport {MenuItem} from '../../../../../ui-components/menuItem/MenuItem'\nimport {useTranslation} from '../../../../i18n/hooks/useTranslation'\nimport {releasesLocaleNamespace} from '../../../i18n'\nimport {useReleaseOperations} from '../../../store/useReleaseOperations'\nimport {useReleasePermissions} from '../../../store/useReleasePermissions'\nimport {getReleaseDefaults} from '../../../util/util'\nimport {type DocumentInRelease} from '../../detail/types'\nimport {ReleasePublishAllButton} from '../releaseCTAButtons/ReleasePublishAllButton'\nimport {ReleaseScheduleButton} from '../releaseCTAButtons/ReleaseScheduleButton'\nimport {type ReleaseAction} from './releaseActions'\nimport {type ReleaseMenuButtonProps} from './ReleaseMenuButton'\n\nexport type ReleaseMenuProps = Omit<ReleaseMenuButtonProps, 'documentsCount'> & {\n disabled: boolean\n setSelectedAction: Dispatch<SetStateAction<ReleaseAction | undefined>>\n documents: DocumentInRelease[]\n}\n\nexport const ReleaseMenu = ({\n ignoreCTA,\n disabled,\n release,\n setSelectedAction,\n documents,\n}: ReleaseMenuProps) => {\n const releaseMenuDisabled = !release || disabled\n const {t} = useTranslation(releasesLocaleNamespace)\n const {archive, unarchive, deleteRelease, publishRelease, schedule, createRelease} =\n useReleaseOperations()\n const {checkWithPermissionGuard} = useReleasePermissions()\n const [hasArchivePermission, setHasArchivePermission] = useState<boolean | null>(null)\n const [hasUnarchivePermission, setHasUnarchivePermission] = useState<boolean | null>(null)\n const [hasDeletePermission, setHasDeletePermission] = useState<boolean | null>(null)\n const [hasPublishPermission, setHasPublishPermission] = useState<boolean | null>(null)\n const [hasSchedulePermission, setHasSchedulePermission] = useState<boolean | null>(null)\n const [hasDuplicatePermission, setHasDuplicatePermission] = useState<boolean | null>(null)\n\n const isMounted = useRef(false)\n useEffect(() => {\n isMounted.current = true\n\n if (!releaseMenuDisabled) {\n if (release.state !== 'published') {\n if (release.state === 'archived') {\n void checkWithPermissionGuard(unarchive, release._id).then((hasPermission) => {\n if (isMounted.current) setHasUnarchivePermission(hasPermission)\n })\n } else {\n void checkWithPermissionGuard(archive, release._id).then((hasPermission) => {\n if (isMounted.current) setHasArchivePermission(hasPermission)\n })\n\n void checkWithPermissionGuard(publishRelease, release._id).then((hasPermission) => {\n if (isMounted.current) setHasPublishPermission(hasPermission)\n })\n void checkWithPermissionGuard(schedule, release._id, new Date()).then((hasPermission) => {\n if (isMounted.current) setHasSchedulePermission(hasPermission)\n })\n }\n void checkWithPermissionGuard(createRelease, getReleaseDefaults()).then((hasPermission) => {\n if (isMounted.current) setHasDuplicatePermission(hasPermission)\n })\n }\n\n if (release.state === 'archived' || release.state == 'published') {\n void checkWithPermissionGuard(deleteRelease, release._id).then((hasPermission) => {\n if (isMounted.current) setHasDeletePermission(hasPermission)\n })\n }\n }\n\n return () => {\n isMounted.current = false\n }\n }, [\n release._id,\n releaseMenuDisabled,\n release.state,\n checkWithPermissionGuard,\n unarchive,\n archive,\n deleteRelease,\n release.metadata.releaseType,\n publishRelease,\n schedule,\n createRelease,\n ])\n\n const handleOnInitiateAction = useCallback<MouseEventHandler<HTMLDivElement>>(\n (event) => {\n const action = event.currentTarget.getAttribute('data-value') as ReleaseAction\n\n setSelectedAction(action)\n },\n [setSelectedAction],\n )\n\n const archiveUnarchiveMenuItem = useMemo(() => {\n if (release.state === 'published') return null\n\n if (release.state === 'archived')\n return (\n <MenuItem\n key=\"unarchive\"\n data-value=\"unarchive\"\n disabled={releaseMenuDisabled || !hasUnarchivePermission}\n onClick={handleOnInitiateAction}\n icon={UnarchiveIcon}\n text={t('action.unarchive')}\n data-testid=\"unarchive-release-menu-item\"\n tooltipProps={{\n content: !hasUnarchivePermission && t('permissions.error.unarchive'),\n }}\n />\n )\n\n return (\n <MenuItem\n key=\"archive\"\n tooltipProps={{\n disabled: hasArchivePermission\n ? !['scheduled', 'scheduling'].includes(release.state) || disabled\n : false,\n content: hasArchivePermission\n ? t('action.archive.tooltip')\n : t('permissions.error.archive'),\n }}\n data-value=\"archive\"\n onClick={handleOnInitiateAction}\n icon={ArchiveIcon}\n text={t('action.archive')}\n data-testid=\"archive-release-menu-item\"\n tone=\"caution\"\n disabled={\n releaseMenuDisabled ||\n ['scheduled', 'scheduling'].includes(release.state) ||\n !hasArchivePermission\n }\n />\n )\n }, [\n release.state,\n releaseMenuDisabled,\n hasUnarchivePermission,\n handleOnInitiateAction,\n t,\n hasArchivePermission,\n disabled,\n ])\n\n const deleteMenuItem = useMemo(() => {\n if (release.state !== 'archived' && release.state !== 'published') return null\n\n return (\n <MenuItem\n key=\"delete\"\n data-value=\"delete\"\n onClick={handleOnInitiateAction}\n disabled={releaseMenuDisabled || !hasDeletePermission}\n icon={TrashIcon}\n text={t('action.delete-release')}\n data-testid=\"delete-release-menu-item\"\n tone=\"critical\"\n tooltipProps={{\n content: !hasDeletePermission && t('permissions.error.delete'),\n }}\n />\n )\n }, [handleOnInitiateAction, hasDeletePermission, release.state, releaseMenuDisabled, t])\n\n const unscheduleMenuItem = useMemo(() => {\n if (ignoreCTA || (release.state !== 'scheduled' && release.state !== 'scheduling')) return null\n\n return (\n <MenuItem\n key=\"unschedule\"\n data-value=\"unschedule\"\n onClick={handleOnInitiateAction}\n disabled={releaseMenuDisabled}\n icon={CloseCircleIcon}\n text={t('action.unschedule')}\n data-testid=\"unschedule-release-menu-item\"\n />\n )\n }, [handleOnInitiateAction, ignoreCTA, release.state, releaseMenuDisabled, t])\n\n const scheduleMenuItem = useMemo(() => {\n // will not return the action for scheduled releases since the main action is already schedule\n if (release.state !== 'active' || (ignoreCTA && release.metadata.releaseType === 'scheduled'))\n return null\n\n return (\n <ReleaseScheduleButton\n key=\"schedule\"\n disabled={releaseMenuDisabled || !hasSchedulePermission}\n release={release}\n documents={documents}\n isMenuItem\n onConfirmDialogClose={() => setSelectedAction(undefined)}\n onConfirmDialogOpen={() => setSelectedAction('schedule')}\n />\n )\n }, [documents, hasSchedulePermission, ignoreCTA, release, releaseMenuDisabled, setSelectedAction])\n\n const publishMenuItem = useMemo(() => {\n if (release.state !== 'active' || (ignoreCTA && release.metadata.releaseType !== 'scheduled'))\n return null\n\n return (\n <ReleasePublishAllButton\n key=\"publish\"\n release={release}\n documents={documents}\n disabled={releaseMenuDisabled || !hasPublishPermission}\n isMenuItem\n onConfirmDialogClose={() => setSelectedAction(undefined)}\n onConfirmDialogOpen={() => setSelectedAction('publish')}\n />\n )\n }, [documents, hasPublishPermission, ignoreCTA, release, releaseMenuDisabled, setSelectedAction])\n\n const duplicateMenuItem = useMemo(() => {\n if (release.state === 'published' || release.state === 'archived') {\n return null\n }\n\n return (\n <MenuItem\n key=\"duplicate\"\n data-value=\"duplicate\"\n onClick={handleOnInitiateAction}\n disabled={releaseMenuDisabled || !hasDuplicatePermission}\n icon={CopyIcon}\n text={t('action.duplicate-release')}\n data-testid=\"duplicate-release-menu-item\"\n tooltipProps={{\n content: !hasDuplicatePermission && t('permissions.error.duplicate'),\n }}\n />\n )\n }, [handleOnInitiateAction, hasDuplicatePermission, release.state, releaseMenuDisabled, t])\n\n const ActionsOrder = useMemo(() => {\n if (release.metadata.releaseType === 'scheduled') {\n return [scheduleMenuItem, publishMenuItem]\n }\n\n return [publishMenuItem, scheduleMenuItem]\n }, [release.metadata.releaseType, publishMenuItem, scheduleMenuItem])\n\n return [\n unscheduleMenuItem,\n ...ActionsOrder,\n duplicateMenuItem,\n archiveUnarchiveMenuItem,\n deleteMenuItem,\n ]\n}\n","import {type ReleaseDocument} from '@sanity/client'\nimport {Card, Flex, Stack, Text} from '@sanity/ui'\n\nimport {useTranslation} from '../../../../i18n/hooks/useTranslation'\nimport {ReleaseAvatar} from '../../../components/ReleaseAvatar'\nimport {ReleaseTitle} from '../../../components/ReleaseTitle'\nimport {ReleaseTime} from '../ReleaseTime'\n\nexport function ReleasePreviewCard({release}: {release: ReleaseDocument}) {\n const {t} = useTranslation()\n\n return (\n <Card border padding={1} radius={2}>\n <Flex gap={3} padding={3}>\n <ReleaseAvatar release={release} padding={0} />\n <Stack gap={2}>\n <ReleaseTitle\n title={release.metadata.title}\n fallback={t('release.placeholder-untitled-release')}\n textProps={{weight: 'medium', size: 1}}\n />\n <Text muted size={1}>\n <ReleaseTime release={release} />\n </Text>\n </Stack>\n </Flex>\n </Card>\n )\n}\n","import {type ReleaseDocument, type SingleActionResult} from '@sanity/client'\nimport {EllipsisHorizontalIcon} from '@sanity/icons/EllipsisHorizontal'\nimport {useTelemetry} from '@sanity/telemetry/react'\nimport {Menu, MenuDivider, Spinner, Stack, Text, useClickOutsideEvent, useToast} from '@sanity/ui'\nimport {type SetStateAction, useCallback, useEffect, useMemo, useRef, useState} from 'react'\nimport {RouterContext, useRouter} from 'sanity/router'\n\nimport {Button} from '../../../../../ui-components/button/Button'\nimport {Dialog} from '../../../../../ui-components/dialog/Dialog'\nimport {MenuItem} from '../../../../../ui-components/menuItem/MenuItem'\nimport {Popover} from '../../../../../ui-components/popover/Popover'\nimport {type ReleaseActionDescription} from '../../../../config/releases/actions'\nimport {useTranslation} from '../../../../i18n/hooks/useTranslation'\nimport {Translate, type TranslateComponentMap} from '../../../../i18n/Translate'\nimport {usePerspective} from '../../../../perspective/usePerspective'\nimport {useSetPerspective} from '../../../../perspective/useSetPerspective'\nimport {useWorkspace} from '../../../../studio/workspace'\nimport {ReleaseActionsResolver} from '../../../components/ReleaseActionsResolver'\nimport {useReleasesUpsell} from '../../../contexts/upsell/useReleasesUpsell'\nimport {useCustomReleaseActions} from '../../../hooks/useCustomReleaseActions'\nimport {releasesLocaleNamespace} from '../../../i18n'\nimport {isReleaseLimitError} from '../../../store/isReleaseLimitError'\nimport {useReleaseOperations} from '../../../store/useReleaseOperations'\nimport {createReleaseId} from '../../../util/createReleaseId'\nimport {getReleaseIdFromReleaseDocumentId} from '../../../util/getReleaseIdFromReleaseDocumentId'\nimport {type DocumentInRelease} from '../../detail/types'\nimport {DuplicateReleaseToastLink} from './DuplicateReleaseToastLink'\nimport {RELEASE_ACTION_MAP, type ReleaseAction} from './releaseActions'\nimport {ReleaseMenu} from './ReleaseMenu'\nimport {ReleasePreviewCard} from './ReleasePreviewCard'\n\nexport type ActionResult =\n | false\n | void\n | SingleActionResult\n | {\n releaseId: string\n }\n\nconst toastActionComponents: Partial<\n Record<ReleaseAction, (actionResult: ActionResult) => TranslateComponentMap>\n> = {\n duplicate: (actionResult) => ({\n Link: () => <DuplicateReleaseToastLink actionResult={actionResult} />,\n }),\n}\n\nexport type ReleaseMenuButtonProps = {\n /** defaults to false\n * set true if release primary CTA options should not\n * be shown in the menu eg. unschedule, publish\n */\n ignoreCTA?: boolean\n release: ReleaseDocument\n documentsCount: number\n documents?: DocumentInRelease[]\n}\n\nexport const ReleaseMenuButton = ({\n ignoreCTA,\n release,\n documentsCount,\n documents,\n}: ReleaseMenuButtonProps) => {\n const toast = useToast()\n const router = useRouter()\n const {archive, unarchive, deleteRelease, unschedule, duplicateRelease} = useReleaseOperations()\n\n const [isPerformingOperation, setIsPerformingOperation] = useState(false)\n const [selectedAction, setSelectedAction] = useState<ReleaseAction>()\n const {selectedReleaseId} = usePerspective()\n const setPerspective = useSetPerspective()\n\n const popoverRef = useRef<HTMLDivElement | null>(null)\n const releaseMenuRef = useRef<HTMLDivElement | null>(null)\n const [openPopover, setOpenPopover] = useState(false)\n\n const customActions = useCustomReleaseActions(release, documents ?? [])\n const [customActionDescriptions, setCustomActionDescriptions] = useState<\n ReleaseActionDescription[]\n >([])\n\n const handleCustomActionsUpdate = useCallback(\n (actions: Array<ReleaseActionDescription | null>) => {\n setCustomActionDescriptions(actions.filter(Boolean) as ReleaseActionDescription[])\n },\n [],\n )\n\n const releaseMenuDisabled = !release\n const {t} = useTranslation(releasesLocaleNamespace)\n const {t: tCore} = useTranslation()\n const telemetry = useTelemetry()\n const {guardWithReleaseLimitUpsell} = useReleasesUpsell()\n const releaseTitle = release.metadata.title || tCore('release.placeholder-untitled-release')\n const isActionPublishOrSchedule = selectedAction === 'publish' || selectedAction === 'schedule'\n const {document} = useWorkspace()\n const {\n drafts: {enabled: isDraftModelEnabled},\n } = document\n\n const handleDelete = useCallback(async () => {\n await deleteRelease(release._id)\n\n // return to release overview list now that release is deleted\n router.navigate({})\n }, [deleteRelease, release._id, router])\n\n const handleUnarchive = useCallback(async () => {\n return guardWithReleaseLimitUpsell(() => unarchive(release._id), true)\n }, [guardWithReleaseLimitUpsell, release._id, unarchive])\n\n const handleDuplicate = useCallback(async () => {\n const duplicateReleaseId = createReleaseId()\n\n await guardWithReleaseLimitUpsell(async () => {\n const releaseDocuments = documents?.map((doc) => doc.document)\n const duplicatedMetadata = {\n ...release.metadata,\n title: `${release.metadata.title} (${t('copy-suffix')})`,\n }\n return duplicateRelease(duplicateReleaseId, duplicatedMetadata, releaseDocuments)\n }, true)\n\n return {releaseId: duplicateReleaseId}\n }, [guardWithReleaseLimitUpsell, duplicateRelease, documents, release.metadata, t])\n\n const handleAction = useCallback(\n async (action: ReleaseAction) => {\n if (action === 'publish' || action === 'schedule') return\n if (releaseMenuDisabled) return\n\n const actionLookup = {\n delete: handleDelete,\n archive,\n unarchive: handleUnarchive,\n unschedule,\n duplicate: handleDuplicate,\n }\n const actionValues = RELEASE_ACTION_MAP[action]\n\n // The .catch/.finally syntax instead of try/catch/finally is because of the React Compiler not fully supporting the syntax yet\n const run = async () => {\n if (\n (action === 'archive' || action === 'delete') &&\n selectedReleaseId === getReleaseIdFromReleaseDocumentId(release._id)\n ) {\n // Reset the perspective to drafts when the release is archived or deleted\n // To avoid showing the release archived / deleted toast.\n setPerspective(isDraftModelEnabled ? 'drafts' : 'published')\n }\n setIsPerformingOperation(true)\n const actionResult = await actionLookup[action](release._id)\n\n telemetry.log(actionValues.telemetry)\n\n if (typeof actionValues.toastSuccessI18nKey !== 'undefined') {\n const toastComponents = toastActionComponents[action]?.(actionResult)\n\n toast.push({\n closable: true,\n status: 'success',\n title: (\n // toast children need access to the router\n <RouterContext.Provider value={router}>\n <Text muted size={1}>\n <Translate\n t={t}\n components={toastComponents}\n i18nKey={actionValues.toastSuccessI18nKey}\n values={{title: releaseTitle}}\n />\n </Text>\n </RouterContext.Provider>\n ),\n })\n }\n }\n await run()\n .catch((actionError) => {\n if (isReleaseLimitError(actionError)) return\n\n if (typeof actionValues.toastFailureI18nKey !== 'undefined') {\n toast.push({\n status: 'error',\n title: (\n <Text muted size={1}>\n <Translate\n t={t}\n i18nKey={actionValues.toastFailureI18nKey}\n values={{title: releaseTitle, error: actionError.toString()}}\n />\n </Text>\n ),\n })\n }\n console.error(actionError)\n })\n .finally(() => {\n setIsPerformingOperation(false)\n setSelectedAction(undefined)\n })\n },\n [\n releaseMenuDisabled,\n handleDelete,\n archive,\n handleUnarchive,\n unschedule,\n handleDuplicate,\n selectedReleaseId,\n release._id,\n telemetry,\n setPerspective,\n isDraftModelEnabled,\n toast,\n router,\n t,\n releaseTitle,\n ],\n )\n\n /** in some instances, immediately execute the action without requiring confirmation */\n useEffect(() => {\n if (!selectedAction || isActionPublishOrSchedule) return\n\n if (!RELEASE_ACTION_MAP[selectedAction].confirmDialog) void handleAction(selectedAction)\n }, [documentsCount, handleAction, isActionPublishOrSchedule, selectedAction])\n\n const confirmActionDialog = useMemo(() => {\n if (!selectedAction || isActionPublishOrSchedule) return null\n\n const {confirmDialog} = RELEASE_ACTION_MAP[selectedAction]\n\n if (!confirmDialog) return null\n\n return (\n <Dialog\n id={confirmDialog.dialogId}\n data-testid={confirmDialog.dialogId}\n header={t(confirmDialog.dialogHeaderI18nKey)}\n onClose={() => !isPerformingOperation && setSelectedAction(undefined)}\n padding={false}\n footer={{\n confirmButton: {\n text: t(confirmDialog.dialogConfirmButtonI18nKey),\n tone: confirmDialog.confirmButtonTone,\n onClick: () => handleAction(selectedAction),\n loading: isPerformingOperation,\n disabled: isPerformingOperation,\n },\n cancelButton: {\n disabled: isPerformingOperation,\n },\n }}\n >\n <Stack gap={4} paddingX={4} paddingBottom={4}>\n <ReleasePreviewCard release={release} />\n {!!documentsCount && (\n <Text muted size={1}>\n <Translate\n t={t}\n i18nKey={confirmDialog.dialogDescriptionI18nKey}\n values={{\n count: documentsCount,\n }}\n />\n </Text>\n )}\n </Stack>\n </Dialog>\n )\n }, [\n selectedAction,\n isActionPublishOrSchedule,\n t,\n isPerformingOperation,\n release,\n documentsCount,\n handleAction,\n ])\n\n const closePopover = useCallback(() => {\n setOpenPopover(false)\n }, [])\n\n const handleOnButtonClick = useCallback(() => {\n if (openPopover) closePopover()\n else setOpenPopover(true)\n }, [closePopover, openPopover])\n\n useClickOutsideEvent(\n () => {\n if (!isActionPublishOrSchedule) {\n closePopover()\n }\n },\n () => [popoverRef.current, releaseMenuRef.current],\n )\n\n const handleSetSelectedAction = useCallback(\n (action: SetStateAction<ReleaseAction | undefined>) => {\n if (!action) closePopover()\n setSelectedAction(action)\n },\n [closePopover],\n )\n\n // Create menu items for custom actions\n const customActionMenuItems = useMemo(() => {\n const handleOnActionClick = (action: ReleaseActionDescription) => () => {\n if (action.onHandle) {\n action.onHandle()\n closePopover()\n }\n }\n\n return customActionDescriptions.map((action, index) => (\n <MenuItem\n key={`custom-action-${index}`}\n icon={action.icon}\n text={action.label}\n tone={action.tone}\n disabled={action.disabled || isPerformingOperation}\n onClick={handleOnActionClick(action)}\n tooltipProps={action.title ? {content: action.title} : undefined}\n />\n ))\n }, [customActionDescriptions, isPerformingOperation, closePopover])\n\n const hasCustomActions = customActions.length > 0\n\n return (\n <>\n {hasCustomActions && (\n <ReleaseActionsResolver\n actions={customActions}\n release={release}\n documents={documents ?? []}\n onActions={handleCustomActionsUpdate}\n />\n )}\n <Popover\n content={\n <Menu ref={releaseMenuRef}>\n <ReleaseMenu\n ignoreCTA={ignoreCTA}\n release={release}\n setSelectedAction={handleSetSelectedAction}\n disabled={isPerformingOperation}\n documents={documents ?? []}\n />\n {hasCustomActions && (\n <>\n <MenuDivider />\n {customActionMenuItems}\n </>\n )}\n </Menu>\n }\n open={openPopover}\n ref={popoverRef}\n constrainSize={false}\n fallbackPlacements={['top-end']}\n portal\n tone=\"default\"\n placement=\"bottom\"\n >\n <Button\n disabled={releaseMenuDisabled || isPerformingOperation}\n icon={isPerformingOperation ? Spinner : EllipsisHorizontalIcon}\n mode=\"bleed\"\n tooltipProps={{content: t('menu.tooltip')}}\n aria-label={t('menu.label')}\n data-testid=\"release-menu-button\"\n onClick={handleOnButtonClick}\n />\n </Popover>\n {confirmActionDialog}\n </>\n )\n}\n","/**\n * Polyfill for `Promise.withResolvers()`, which is not yet widely supported.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/withResolvers\n * @returns An object containing the promise, resolve, and reject functions.\n * @internal\n */\nexport function promiseWithResolvers<T>() {\n let resolve!: (value: T | PromiseLike<T>) => void\n let reject!: (reason?: unknown) => void\n const promise = new Promise<T>((res, rej) => {\n resolve = res\n reject = rej\n })\n return {promise, resolve, reject}\n}\n","import {type SanityDocument} from '@sanity/types'\nimport {useCallback, useEffect, useMemo, useRef} from 'react'\nimport {useSyncObservable} from 'react-rx'\nimport {catchError, forkJoin, from, map, type Observable, of, switchMap} from 'rxjs'\n\nimport {useClient} from '../../../../../hooks/useClient'\nimport {getTransactionsLogs} from '../../../../../store/translog/getTransactionsLogs'\nimport {getPublishedId} from '../../../../../util/draftUtils'\nimport {promiseWithResolvers} from '../../../../../util/promiseWithResolvers'\nimport {RELEASES_STUDIO_CLIENT_OPTIONS} from '../../../../util/releasesClient'\nimport {type DocumentInRelease} from '../../../detail/types'\n\nexport type RevertDocument = SanityDocument & {\n _system?: {\n delete: true\n }\n}\n\ntype RevertDocuments = RevertDocument[]\n\ntype DocumentRevertStates = RevertDocuments | null | undefined\n\nexport const useDocumentRevertStates = (releaseDocuments: DocumentInRelease[]) => {\n const client = useClient(RELEASES_STUDIO_CLIENT_OPTIONS)\n const observableClient = client.observable\n const transactionId = releaseDocuments[0]?.document._rev\n const {dataset} = client.config()\n\n const resultPromiseRef = useRef<Promise<DocumentRevertStates> | null>(null)\n const resolvedDocumentRevertStatesPromiseRef = useRef<\n ((value: DocumentRevertStates) => void) | null\n >(null)\n const resolvedDocumentRevertStatesResultRef = useRef<DocumentRevertStates | null>(null)\n\n useEffect(() => {\n if (!resultPromiseRef.current) {\n const {promise, resolve} = promiseWithResolvers<DocumentRevertStates>()\n\n resultPromiseRef.current = promise\n resolvedDocumentRevertStatesPromiseRef.current = resolve\n }\n }, [])\n\n const memoDocumentRevertStates = useMemo(() => {\n if (!releaseDocuments.length) return of(undefined)\n\n const publishedDocuments = releaseDocuments.map(({document}) => ({\n ...document,\n _id: getPublishedId(document._id),\n }))\n\n const documentRevertStates$: Observable<RevertDocuments | null | undefined> = from(\n getTransactionsLogs(\n client,\n publishedDocuments.map((document) => document._id),\n {\n toTransaction: transactionId,\n // reverse order so most recent publish before release is second element\n // (first is the release publish itself)\n reverse: true,\n },\n ),\n ).pipe(\n map((transactions) => {\n const getDocumentTransaction = (docId: string) =>\n transactions.find(({documentIDs}) => documentIDs.includes(docId))?.id\n\n return publishedDocuments.map((document) => ({\n docId: document._id,\n revisionId: getDocumentTransaction(document._id),\n }))\n }),\n switchMap((docRevisionPairs) => {\n if (!docRevisionPairs) return of(undefined)\n\n return forkJoin(\n docRevisionPairs.map(({docId, revisionId}) => {\n if (!revisionId) {\n const {publishedDocumentExists, ...unpublishDocument} =\n publishedDocuments.find((document) => document._id === docId) || {}\n\n return of({\n ...unpublishDocument,\n _system: {delete: true},\n } as RevertDocument)\n }\n\n return observableClient\n .request<{\n documents: RevertDocuments\n }>({\n url: `/data/history/${dataset}/documents/${docId}?revision=${revisionId}`,\n })\n .pipe(\n map(({documents: [revertDocument]}) => revertDocument),\n catchError((err) => {\n console.error(`Error fetching document ${docId}:`, err)\n return of(undefined)\n }),\n )\n }),\n )\n }),\n map((results) => results?.filter((result) => result !== undefined)),\n catchError((err) => {\n console.error('Error in document revert states pipeline:', err)\n return of(undefined)\n }),\n )\n\n return documentRevertStates$\n }, [client, releaseDocuments, transactionId, observableClient, dataset])\n\n // Kept synchronous: the effect below resolves an imperative promise/ref with\n // this value for the revert action, so a deferred snapshot could delay the\n // resolution or hand the action a stale revert state.\n const documentRevertStatesResult = useSyncObservable(memoDocumentRevertStates, null)\n\n useEffect(() => {\n if (documentRevertStatesResult !== null) {\n resolvedDocumentRevertStatesResultRef.current = documentRevertStatesResult\n\n // Resolve promise if it exists\n if (resolvedDocumentRevertStatesPromiseRef.current) {\n resolvedDocumentRevertStatesPromiseRef.current(documentRevertStatesResult)\n resolvedDocumentRevertStatesPromiseRef.current = null\n resultPromiseRef.current = null // Reset resultPromiseRef for future fetches\n }\n }\n }, [documentRevertStatesResult])\n\n return useCallback(() => {\n if (resolvedDocumentRevertStatesResultRef.current) {\n // Return resolved value immediately if available\n return Promise.resolve(resolvedDocumentRevertStatesResultRef.current)\n }\n\n return resultPromiseRef.current\n }, [])\n}\n","import {useMemo} from 'react'\nimport {useObservable} from 'react-rx'\nimport {catchError, from, map, of} from 'rxjs'\n\nimport {useClient} from '../../../../../hooks/useClient'\nimport {getTransactionsLogs} from '../../../../../store/translog/getTransactionsLogs'\nimport {getPublishedId} from '../../../../../util/draftUtils'\nimport {RELEASES_STUDIO_CLIENT_OPTIONS} from '../../../../util/releasesClient'\nimport {type DocumentInRelease} from '../../../detail/types'\n\nexport const usePostPublishTransactions = (documents: DocumentInRelease[]) => {\n const client = useClient(RELEASES_STUDIO_CLIENT_OPTIONS)\n const transactionId = documents[0]?.document._rev\n\n const memoHasPostPublishTransactions = useMemo(() => {\n if (!documents.length) return of(false)\n\n return from(\n getTransactionsLogs(\n client,\n documents.map(({document}) => getPublishedId(document._id)),\n {\n fromTransaction: transactionId,\n // publish transaction + at least one post publish transaction\n limit: 2,\n },\n ),\n ).pipe(\n // the transaction of published is also returned\n // so post publish transactions will result in more than 1 transaction\n map((transactions) => transactions.length > 1),\n catchError(() => of(null)),\n )\n }, [client, documents, transactionId])\n\n return useObservable(memoHasPostPublishTransactions, null)\n}\n","import {type ReleaseDocument} from '@sanity/client'\nimport {RestoreIcon} from '@sanity/icons/Restore'\nimport {useTelemetry} from '@sanity/telemetry/react'\nimport {Box, Card, Checkbox, Flex, Text, useToast} from '@sanity/ui'\nimport {useCallback, useEffect, useRef, useState} from 'react'\nimport {useRouter} from 'sanity/router'\n\nimport {Button} from '../../../../../../ui-components/button/Button'\nimport {Dialog} from '../../../../../../ui-components/dialog/Dialog'\nimport {useTranslation} from '../../../../../i18n/hooks/useTranslation'\nimport {Translate} from '../../../../../i18n/Translate'\nimport {RevertRelease} from '../../../../__telemetry__/releases.telemetry'\nimport {useReleasesUpsell} from '../../../../contexts/upsell/useReleasesUpsell'\nimport {releasesLocaleNamespace} from '../../../../i18n'\nimport {isReleaseLimitError} from '../../../../store/isReleaseLimitError'\nimport {useReleaseOperations} from '../../../../store/useReleaseOperations'\nimport {useReleasePermissions} from '../../../../store/useReleasePermissions'\nimport {createReleaseId} from '../../../../util/createReleaseId'\nimport {getReleaseIdFromReleaseDocumentId} from '../../../../util/getReleaseIdFromReleaseDocumentId'\nimport {getReleaseDefaults} from '../../../../util/util'\nimport {type DocumentInRelease} from '../../../detail/types'\nimport {useDocumentRevertStates} from './useDocumentRevertStates'\nimport {usePostPublishTransactions} from './usePostPublishTransactions'\n\ninterface ReleasePublishAllButtonProps {\n release: ReleaseDocument\n documents: DocumentInRelease[]\n disabled?: boolean\n}\n\ntype RevertReleaseStatus = 'idle' | 'confirm' | 'reverting'\n\nconst ConfirmReleaseDialog = ({\n revertReleaseStatus,\n documents,\n setRevertReleaseStatus,\n release,\n}: {\n revertReleaseStatus: RevertReleaseStatus\n documents: DocumentInRelease[]\n setRevertReleaseStatus: (status: RevertReleaseStatus) => void\n release: ReleaseDocument\n}) => {\n const {t} = useTranslation(releasesLocaleNamespace)\n const {t: tCore} = useTranslation()\n const releaseDisplayTitle =\n release.metadata.title || tCore('release.placeholder-untitled-release')\n const hasPostPublishTransactions = usePostPublishTransactions(documents)\n const getDocumentRevertStates = useDocumentRevertStates(documents)\n const [stageNewRevertRelease, setStageNewRevertRelease] = useState(true)\n const toast = useToast()\n const telemetry = useTelemetry()\n const {revertRelease} = useReleaseOperations()\n const router = useRouter()\n\n const navigateToRevertRelease = useCallback(\n (revertReleaseId: string) => () =>\n router.navigate({releaseId: getReleaseIdFromReleaseDocumentId(revertReleaseId)}),\n [router],\n )\n\n const handleRevertRelease = useCallback(async () => {\n setRevertReleaseStatus('reverting')\n const documentRevertStates = await getDocumentRevertStates()\n\n const revertReleaseId = createReleaseId()\n\n // The run().catch().finally() syntax instead of try/catch/finally is because of the React Compiler not fully supporting the syntax yet\n const run = async () => {\n if (!documentRevertStates) {\n throw new Error('Unable to find documents to revert')\n }\n\n await revertRelease(\n revertReleaseId,\n documentRevertStates,\n {\n title: t('revert-release.title', {\n title: releaseDisplayTitle,\n }),\n description: t('revert-release.description', {\n title: releaseDisplayTitle,\n }),\n releaseType: 'asap',\n },\n stageNewRevertRelease ? 'staged' : 'immediate',\n )\n\n if (stageNewRevertRelease) {\n telemetry.log(RevertRelease, {revertType: 'staged'})\n toast.push({\n closable: true,\n status: 'success',\n title: (\n <Text muted size={1}>\n <Translate\n components={{\n Link: () => (\n <Text\n size={1}\n weight=\"medium\"\n data-as=\"a\"\n onClick={navigateToRevertRelease(revertReleaseId)}\n style={{\n cursor: 'pointer',\n marginBottom: '0.5rem',\n display: 'flex',\n }}\n data-testid=\"revert-stage-success-link\"\n >\n {t('toast.revert-stage.success-link')}\n </Text>\n ),\n }}\n t={t}\n i18nKey=\"toast.revert-stage.success\"\n values={{\n title: releaseDisplayTitle,\n }}\n />\n </Text>\n ),\n })\n } else {\n telemetry.log(RevertRelease, {revertType: 'immediate'})\n\n toast.push({\n closable: true,\n status: 'success',\n title: (\n <Text muted size={1}>\n <Translate\n t={t}\n i18nKey=\"toast.immediate-revert.success\"\n values={{\n title: releaseDisplayTitle,\n }}\n />\n </Text>\n ),\n })\n }\n }\n await run()\n .catch((revertError) => {\n if (isReleaseLimitError(revertError)) return\n\n toast.push({\n status: 'error',\n title: (\n <Text muted size={1}>\n <Translate t={t} i18nKey=\"toast.revert.error\" values={{error: revertError.message}} />\n </Text>\n ),\n })\n console.error(revertError)\n })\n .finally(() => {\n setRevertReleaseStatus('idle')\n })\n }, [\n setRevertReleaseStatus,\n getDocumentRevertStates,\n revertRelease,\n t,\n releaseDisplayTitle,\n stageNewRevertRelease,\n telemetry,\n toast,\n navigateToRevertRelease,\n ])\n\n const description =\n documents.length > 1\n ? 'revert-dialog.confirm-revert-description_other'\n : 'revert-dialog.confirm-revert-description_one'\n\n return (\n <Dialog\n id=\"confirm-revert-dialog\"\n header={t('revert-dialog.confirm-revert.title', {\n title: releaseDisplayTitle,\n })}\n onClose={() => setRevertReleaseStatus('idle')}\n footer={{\n confirmButton: {\n text: t(\n stageNewRevertRelease\n ? 'action.create-revert-release'\n : 'action.immediate-revert-release',\n ),\n tone: 'positive',\n onClick: handleRevertRelease,\n loading: revertReleaseStatus === 'reverting',\n disabled: revertReleaseStatus === 'reverting',\n },\n }}\n >\n <Text muted size={1}>\n {\n <Translate\n t={t}\n i18nKey={description}\n values={{\n releaseDocumentsLength: documents.length,\n }}\n />\n }\n </Text>\n <Flex align=\"center\" paddingTop={4}>\n <Checkbox\n onChange={() => setStageNewRevertRelease((current) => !current)}\n id=\"immediate-revert-release\"\n style={{display: 'block'}}\n checked={!stageNewRevertRelease}\n />\n <Box flex={1} paddingLeft={3}>\n <Text muted size={1}>\n <label htmlFor=\"immediate-revert-release\">\n {t('revert-dialog.confirm-revert.stage-revert-checkbox-label')}\n </label>\n </Text>\n </Box>\n </Flex>\n {hasPostPublishTransactions && !stageNewRevertRelease && (\n <Card marginTop={4} padding={3} radius={2} shadow={1} tone=\"critical\">\n <Text muted size={1}>\n {t('revert-dialog.confirm-revert.warning-card')}\n </Text>\n </Card>\n )}\n </Dialog>\n )\n}\n\nexport const ReleaseRevertButton = ({\n release,\n documents,\n disabled,\n}: ReleasePublishAllButtonProps) => {\n const {t} = useTranslation(releasesLocaleNamespace)\n const {t: tCore} = useTranslation()\n const {guardWithReleaseLimitUpsell} = useReleasesUpsell()\n const [revertReleaseStatus, setRevertReleaseStatus] = useState<RevertReleaseStatus>('idle')\n const [isPendingGuardResponse, setIsPendingGuardResponse] = useState<boolean>(false)\n const {createRelease} = useReleaseOperations()\n const {checkWithPermissionGuard} = useReleasePermissions()\n const [hasCreatePermission, setHasCreatePermission] = useState<boolean | null>(null)\n\n const handleMoveToConfirmStatus = useCallback(async () => {\n setIsPendingGuardResponse(true)\n await guardWithReleaseLimitUpsell(() => setRevertReleaseStatus('confirm'))\n setIsPendingGuardResponse(false)\n }, [guardWithReleaseLimitUpsell])\n\n const isMounted = useRef(false)\n useEffect(() => {\n isMounted.current = true\n void checkWithPermissionGuard(createRelease, getReleaseDefaults()).then((hasPermissions) => {\n if (isMounted.current) setHasCreatePermission(hasPermissions)\n })\n\n return () => {\n isMounted.current = false\n }\n }, [checkWithPermissionGuard, createRelease])\n\n return (\n <>\n <Button\n icon={RestoreIcon}\n onClick={handleMoveToConfirmStatus}\n text={t('action.revert')}\n tone=\"critical\"\n tooltipProps={{\n disabled: hasCreatePermission === true,\n content: tCore('release.action.permission.error'),\n }}\n /**\n * This is an immature assertion of permissions\n * The permissions needed to revert are:\n * Permissions to create a request (implemented)\n * @todo Permissions to create each schema type within the release (not implemented)\n */\n disabled={isPendingGuardResponse || !hasCreatePermission || disabled}\n data-testid=\"revert-button\"\n />\n {revertReleaseStatus !== 'idle' && (\n <ConfirmReleaseDialog\n release={release}\n documents={documents}\n revertReleaseStatus={revertReleaseStatus}\n setRevertReleaseStatus={setRevertReleaseStatus}\n />\n )}\n </>\n )\n}\n","import {type ReleaseDocument} from '@sanity/client'\nimport {CloseCircleIcon} from '@sanity/icons/CloseCircle'\nimport {useTelemetry} from '@sanity/telemetry/react'\nimport {Text, useToast} from '@sanity/ui'\nimport {useCallback, useMemo, useState} from 'react'\n\nimport {Button} from '../../../../../ui-components/button/Button'\nimport {Dialog} from '../../../../../ui-components/dialog/Dialog'\nimport {useTranslation} from '../../../../i18n/hooks/useTranslation'\nimport {Translate} from '../../../../i18n/Translate'\nimport {UnscheduledRelease} from '../../../__telemetry__/releases.telemetry'\nimport {releasesLocaleNamespace} from '../../../i18n'\nimport {useReleaseOperations} from '../../../store/useReleaseOperations'\nimport {type DocumentInRelease} from '../../detail/types'\n\ninterface ReleaseScheduleButtonProps {\n release: ReleaseDocument\n documents: DocumentInRelease[]\n disabled?: boolean\n}\n\nexport const ReleaseUnscheduleButton = ({\n release,\n disabled,\n documents,\n}: ReleaseScheduleButtonProps) => {\n const toast = useToast()\n const {unschedule} = useReleaseOperations()\n const {t} = useTranslation(releasesLocaleNamespace)\n const {t: tCore} = useTranslation()\n const telemetry = useTelemetry()\n const [status, setStatus] = useState<'idle' | 'confirm' | 'unscheduling'>('idle')\n\n const handleConfirmSchedule = useCallback(async () => {\n // The run().catch().finally() syntax instead of try/catch/finally is because of the React Compiler not fully supporting the syntax yet\n const run = async () => {\n setStatus('unscheduling')\n await unschedule(release._id)\n telemetry.log(UnscheduledRelease)\n }\n await run()\n .catch((schedulingError) => {\n toast.push({\n status: 'error',\n title: (\n <Text muted size={1}>\n <Translate\n t={t}\n i18nKey=\"toast.unschedule.error\"\n values={{\n title: release.metadata.title || tCore('release.placeholder-untitled-release'),\n error: schedulingError.message,\n }}\n />\n </Text>\n ),\n })\n console.error(schedulingError)\n })\n .finally(() => {\n setStatus('idle')\n })\n }, [unschedule, release._id, release.metadata.title, telemetry, toast, t, tCore])\n\n const confirmScheduleDialog = useMemo(() => {\n if (status === 'idle') return null\n\n return (\n <Dialog\n id=\"confirm-unschedule-dialog\"\n header={t('unschedule-dialog.confirm-title')}\n onClose={() => status !== 'unscheduling' && setStatus('idle')}\n footer={{\n confirmButton: {\n text: t('action.unschedule'),\n tone: 'default',\n onClick: handleConfirmSchedule,\n loading: status === 'unscheduling',\n disabled: status === 'unscheduling',\n },\n cancelButton: {\n disabled: status === 'unscheduling',\n },\n }}\n >\n <Text muted size={1}>\n {\n <Translate\n t={t}\n i18nKey=\"unschedule-dialog.confirm-description\"\n values={{\n title: release.metadata.title || tCore('release.placeholder-untitled-release'),\n documentsLength: documents.length,\n count: documents.length,\n }}\n />\n }\n </Text>\n </Dialog>\n )\n }, [release.metadata.title, documents.length, handleConfirmSchedule, status, t, tCore])\n\n return (\n <>\n <Button\n icon={CloseCircleIcon}\n disabled={disabled || status === 'unscheduling'}\n text={t('action.unschedule')}\n onClick={() => setStatus('confirm')}\n loading={status === 'unscheduling'}\n data-testid=\"schedule-button\"\n />\n {confirmScheduleDialog}\n </>\n )\n}\n","import {type ReleaseDocument} from '@sanity/client'\n\nimport {isReleaseScheduledOrScheduling} from '../../util/util'\nimport {ReleasePublishAllButton} from '../components/releaseCTAButtons/ReleasePublishAllButton'\nimport {ReleaseRevertButton} from '../components/releaseCTAButtons/ReleaseRevertButton/ReleaseRevertButton'\nimport {ReleaseScheduleButton} from '../components/releaseCTAButtons/ReleaseScheduleButton'\nimport {ReleaseUnscheduleButton} from '../components/releaseCTAButtons/ReleaseUnscheduleButton'\nimport {type DocumentInRelease} from './types'\n\n/**\n * The state-driven primary release action — publish-all / schedule / unschedule / revert, depending\n * on the release's state and type. Extracted so it can render in both the footer (its original home)\n * and the top action rail; each instance manages its own local dialog state, so having two is safe.\n *\n * @internal\n */\nexport function ReleaseActionButton({\n release,\n documents,\n}: {\n release: ReleaseDocument\n documents: DocumentInRelease[]\n}): React.JSX.Element | null {\n if (release.state === 'archived') return null\n\n if (isReleaseScheduledOrScheduling(release)) {\n return (\n <ReleaseUnscheduleButton\n release={release}\n documents={documents}\n disabled={!documents.length}\n />\n )\n }\n\n if (release.state === 'active') {\n if (release.metadata.releaseType === 'scheduled') {\n return (\n <ReleaseScheduleButton\n release={release}\n documents={documents}\n disabled={!documents.length}\n />\n )\n }\n\n if (release.metadata.releaseType === 'asap') {\n return (\n <ReleasePublishAllButton\n release={release}\n documents={documents}\n disabled={!documents.length}\n />\n )\n }\n }\n\n if (release.state === 'published') {\n return (\n <ReleaseRevertButton release={release} documents={documents} disabled={!documents.length} />\n )\n }\n\n return null\n}\n","import {Box, Card, Flex, Text} from '@sanity/ui'\nimport {type ReactNode} from 'react'\n\nexport function StatusItem(props: {avatar?: ReactNode; text: ReactNode; testId?: string}) {\n const {avatar, text, testId} = props\n\n return (\n <Card data-testid={testId}>\n <Flex>\n {avatar && (\n <Box padding={1}>\n <div style={{margin: -1}}>{avatar}</div>\n </Box>\n )}\n <Box padding={2} paddingLeft={avatar ? 1 : undefined}>\n <Text muted size={1}>\n {text}\n </Text>\n </Box>\n </Flex>\n </Card>\n )\n}\n","import {type ReleaseDocument} from '@sanity/client'\nimport {Flex} from '@sanity/ui'\nimport {useMemo} from 'react'\n\nimport {RelativeTime} from '../../../components/RelativeTime'\nimport {AvatarSkeleton, UserAvatar} from '../../../components/userAvatar/UserAvatar'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {isNonNullable} from '../../../util/isNonNullable'\nimport {releasesLocaleNamespace} from '../../i18n'\nimport {StatusItem} from '../components/StatusItem'\nimport {\n isArchiveReleaseEvent,\n isCreateReleaseEvent,\n isPublishReleaseEvent,\n isUnarchiveReleaseEvent,\n type ReleaseEvent,\n} from './events/types'\n\nconst STATUS_TITLE_I18N = {\n createRelease: 'footer.status.created',\n publishRelease: 'footer.status.published',\n archiveRelease: 'footer.status.archived',\n unarchiveRelease: 'footer.status.unarchived',\n}\nexport function ReleaseStatusItems({\n events,\n release,\n}: {\n events: ReleaseEvent[]\n release: ReleaseDocument\n}) {\n const {t} = useTranslation(releasesLocaleNamespace)\n const footerEvents = useMemo(() => {\n const createEvent = events.find(isCreateReleaseEvent)\n const extraEvent = events.find(\n (event) =>\n isPublishReleaseEvent(event) ||\n isArchiveReleaseEvent(event) ||\n isUnarchiveReleaseEvent(event),\n )\n return [createEvent, extraEvent].filter(isNonNullable)\n }, [events])\n\n if (!footerEvents.length) {\n return (\n <Flex flex={1} gap={1}>\n <StatusItem\n avatar={<AvatarSkeleton $size={0} />}\n text={\n <>\n {t(STATUS_TITLE_I18N.createRelease)}{' '}\n <RelativeTime time={release._createdAt} useTemporalPhrase minimal />\n </>\n }\n />\n </Flex>\n )\n }\n return (\n <Flex flex={1} gap={1}>\n {footerEvents.map((event) => (\n <StatusItem\n key={event.id}\n testId={`status-${event.type}`}\n avatar={event.author && <UserAvatar size={0} user={event.author} />}\n text={\n <>\n {t(STATUS_TITLE_I18N[event.type])}{' '}\n <RelativeTime time={event.timestamp} useTemporalPhrase minimal />\n </>\n }\n />\n ))}\n </Flex>\n )\n}\n","import {type ReleaseDocument} from '@sanity/client'\nimport {Card, Flex} from '@sanity/ui'\n\nimport {ReleaseMenuButton} from '../components/ReleaseMenuButton/ReleaseMenuButton'\nimport {type ReleaseEvent} from './events/types'\nimport {ReleaseActionButton} from './ReleaseActionButton'\nimport {ReleaseStatusItems} from './ReleaseStatusItems'\nimport {type DocumentInRelease} from './types'\n\nexport function ReleaseDashboardFooter(props: {\n documents: DocumentInRelease[]\n release: ReleaseDocument\n events: ReleaseEvent[]\n}) {\n const {documents, release, events} = props\n\n return (\n <Card flex=\"none\">\n <Card borderTop marginX={2} style={{opacity: 0.6}} />\n\n <Flex padding={3}>\n <Flex flex={1} gap={1}>\n <ReleaseStatusItems events={events} release={release} />\n </Flex>\n\n <Flex flex=\"none\" gap={1} data-testid=\"release-dashboard-footer-actions\">\n <ReleaseActionButton release={release} documents={documents} />\n <ReleaseMenuButton\n release={release}\n documentsCount={documents.length}\n documents={documents}\n ignoreCTA={release.metadata.releaseType !== 'undecided'}\n />\n </Flex>\n </Flex>\n </Card>\n )\n}\n","import {type ReleaseDocument} from '@sanity/client'\nimport {LinkIcon} from '@sanity/icons/Link'\nimport {ShareIcon} from '@sanity/icons/Share'\nimport {TargetIcon} from '@sanity/icons/Target'\nimport {TextIcon} from '@sanity/icons/Text'\nimport {type DefinedTelemetryLog, useTelemetry} from '@sanity/telemetry/react'\nimport {Menu, useToast} from '@sanity/ui'\nimport {type ComponentType, useCallback} from 'react'\nimport {useRouter} from 'sanity/router'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {MenuButton} from '../../../../ui-components/menuButton/MenuButton'\nimport {MenuItem} from '../../../../ui-components/menuItem/MenuItem'\nimport {useStudioUrl} from '../../../hooks/useStudioUrl'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {\n ReleaseIdCopied,\n ReleaseLinkCopied,\n ReleaseTitleCopied,\n} from '../../__telemetry__/releases.telemetry'\nimport {releasesLocaleNamespace} from '../../i18n'\nimport {getReleaseIdFromReleaseDocumentId} from '../../util/getReleaseIdFromReleaseDocumentId'\n\ninterface CopyReleaseActionsProps {\n release: ReleaseDocument\n /**\n * Button icon. Defaults to ShareIcon (the current header). The menu only copies things (link / id\n * / title) to the clipboard, so callers that want the icon to match that — rather than imply\n * sharing — can pass CopyIcon.\n */\n icon?: ComponentType\n}\n\nexport function CopyReleaseActions(props: CopyReleaseActionsProps) {\n const {release, icon = ShareIcon} = props\n const {t} = useTranslation(releasesLocaleNamespace)\n const {t: tCore} = useTranslation()\n const telemetry = useTelemetry()\n const toast = useToast()\n const {resolvePathFromState} = useRouter()\n const {buildIntentUrl} = useStudioUrl()\n\n const releaseId = getReleaseIdFromReleaseDocumentId(release._id)\n const title = release.metadata.title || tCore('release.placeholder-untitled-release')\n\n const copyToClipboard = useCallback(\n async (text: string, event: DefinedTelemetryLog<void>, toastKey: string) => {\n await navigator.clipboard.writeText(text)\n telemetry.log(event)\n toast.push({\n id: toastKey,\n status: 'info',\n title: t(`toast.${toastKey}.success`),\n })\n },\n [t, telemetry, toast],\n )\n\n const handleCopyReleaseLink = useCallback(async () => {\n const releasePath = resolvePathFromState({releaseId})\n const url = buildIntentUrl(releasePath)\n\n await copyToClipboard(url, ReleaseLinkCopied, 'copy-release-link')\n }, [buildIntentUrl, copyToClipboard, releaseId, resolvePathFromState])\n\n const handleCopyReleaseId = useCallback(async () => {\n await copyToClipboard(releaseId, ReleaseIdCopied, 'copy-release-id')\n }, [copyToClipboard, releaseId])\n\n const handleCopyReleaseTitle = useCallback(async () => {\n await copyToClipboard(title, ReleaseTitleCopied, 'copy-release-title')\n }, [copyToClipboard, title])\n\n return (\n <MenuButton\n id=\"copy-release-actions\"\n button={\n <Button\n data-testid=\"copy-release-actions-button\"\n icon={icon}\n mode=\"bleed\"\n tooltipProps={{content: t('action.copy-release.label')}}\n />\n }\n menu={\n <Menu>\n <MenuItem\n icon={LinkIcon}\n onClick={handleCopyReleaseLink}\n text={t('action.copy-release-link.label')}\n />\n <MenuItem\n icon={TargetIcon}\n onClick={handleCopyReleaseId}\n text={t('action.copy-release-id.label')}\n />\n <MenuItem\n icon={TextIcon}\n onClick={handleCopyReleaseTitle}\n text={t('action.copy-release-title.label')}\n />\n </Menu>\n }\n popover={{placement: 'bottom-end'}}\n />\n )\n}\n","import {type EditableReleaseDocument, type ReleaseDocument} from '@sanity/client'\nimport {Card, Flex, Stack, Text, TextArea, TextInput, useToast} from '@sanity/ui'\nimport {type ChangeEvent, useCallback, useId, useRef, useState} from 'react'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {Dialog} from '../../../../ui-components/dialog/Dialog'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {useReleaseOperations} from '../../store/useReleaseOperations'\n\n/**\n * Explicit edit surface for a release's title + description. The detail page is a read-only display\n * surface; editing is a deliberate action that opens this dialog, so editing a release — a document\n * — is intentional rather than an accidental inline edit.\n *\n * The fields are explicitly labelled (\"Title\" / \"Description\") so it reads as a form for changing\n * those properties, not as free-floating text.\n *\n * @internal\n */\nexport function EditReleaseDialog({\n release,\n onClose,\n}: {\n release: ReleaseDocument\n onClose: () => void\n}): React.JSX.Element {\n const {updateRelease} = useReleaseOperations()\n const {t} = useTranslation()\n const toast = useToast()\n const titleId = useId()\n const descriptionId = useId()\n\n const [title, setTitle] = useState(release.metadata.title ?? '')\n const [description, setDescription] = useState(release.metadata.description ?? '')\n const [isSaving, setIsSaving] = useState(false)\n // Synchronous re-entry guard. `loading={isSaving}` only disables the button after a re-render, so\n // two clicks in the same tick would both reach updateRelease. This ref blocks the second call\n // immediately.\n const isSavingRef = useRef(false)\n\n const handleSave = useCallback(async () => {\n if (isSavingRef.current) return\n isSavingRef.current = true\n setIsSaving(true)\n try {\n const next: EditableReleaseDocument = {\n ...release,\n metadata: {...release.metadata, title, description},\n }\n await updateRelease(next)\n onClose()\n } catch (err) {\n console.error(err)\n toast.push({\n closable: true,\n status: 'error',\n title: t('release.toast.edit-release-error.title'),\n })\n } finally {\n isSavingRef.current = false\n setIsSaving(false)\n }\n }, [description, onClose, release, t, title, toast, updateRelease])\n\n // Ignore click-outside / Escape / close while a save is in flight: dismissing mid-mutation would\n // unmount the dialog while updateRelease continues, letting the user reopen and edit against a\n // stale in-flight save. The success path calls onClose directly, so it is unaffected.\n const handleClose = useCallback(() => {\n if (isSaving) return\n onClose()\n }, [isSaving, onClose])\n\n return (\n <Dialog\n header={t('release.dialog.edit.title')}\n id=\"edit-release-dialog\"\n onClickOutside={handleClose}\n onClose={handleClose}\n padding={false}\n width={1}\n >\n <Card padding={4} borderTop>\n <Stack gap={5}>\n <Stack gap={3}>\n <Text as=\"label\" htmlFor={titleId} size={1} weight=\"medium\">\n {t('release.dialog.edit.title-label')}\n </Text>\n <TextInput\n data-testid=\"release-form-title\"\n id={titleId}\n onChange={(event: ChangeEvent<HTMLInputElement>) =>\n setTitle(event.currentTarget.value)\n }\n value={title}\n />\n </Stack>\n <Stack gap={3}>\n <Text as=\"label\" htmlFor={descriptionId} size={1} weight=\"medium\">\n {t('release.dialog.edit.description-label')}\n </Text>\n <TextArea\n data-testid=\"release-form-description\"\n id={descriptionId}\n onChange={(event: ChangeEvent<HTMLTextAreaElement>) =>\n setDescription(event.currentTarget.value)\n }\n rows={6}\n value={description}\n />\n </Stack>\n </Stack>\n <Flex justify=\"flex-end\" paddingTop={5}>\n <Button\n data-testid=\"save-release-details-button\"\n loading={isSaving}\n onClick={handleSave}\n size=\"large\"\n text={t('release.dialog.edit.confirm')}\n />\n </Flex>\n </Card>\n </Dialog>\n )\n}\n","import {type ReleaseDocument} from '@sanity/client'\nimport {useEffect, useRef, useState} from 'react'\n\nimport {getIsReleaseOpen} from '../../components/dialog/TitleDescriptionForm'\nimport {useReleaseOperations} from '../../store/useReleaseOperations'\nimport {useReleasePermissions} from '../../store/useReleasePermissions'\n\n/**\n * Whether the current user may edit a release's details (title/description). True only when the\n * release is open (editing a published/archived release is not possible) and the permission guard\n * on `updateRelease` passes. Shared by the display-surface edit affordance and the action rail so\n * both gate on exactly the same condition.\n *\n * @internal\n */\nexport function useCanEditRelease(release: ReleaseDocument): boolean {\n const {updateRelease} = useReleaseOperations()\n const {checkWithPermissionGuard} = useReleasePermissions()\n const [hasUpdatePermission, setHasUpdatePermission] = useState<boolean | null>(null)\n\n const isReleaseOpen = getIsReleaseOpen(release)\n const isMounted = useRef(false)\n\n useEffect(() => {\n isMounted.current = true\n\n if (isReleaseOpen) {\n // Editing is only possible on an open release, so only check permission when it's open.\n void checkWithPermissionGuard(updateRelease, release).then((hasPermission) => {\n if (isMounted.current) setHasUpdatePermission(hasPermission)\n })\n }\n\n return () => {\n isMounted.current = false\n }\n }, [checkWithPermissionGuard, isReleaseOpen, release, updateRelease])\n\n return isReleaseOpen && Boolean(hasUpdatePermission)\n}\n","import {type ReleaseDocument} from '@sanity/client'\nimport {EditIcon} from '@sanity/icons/Edit'\nimport {useState} from 'react'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {DetailActionRail} from '../../../components/detailLayout'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {EditReleaseDialog} from '../../components/dialog/EditReleaseDialog'\nimport {ReleaseMenuButton} from '../components/ReleaseMenuButton/ReleaseMenuButton'\nimport {ReleaseActionButton} from './ReleaseActionButton'\nimport {type DocumentInRelease} from './types'\nimport {useCanEditRelease} from './useCanEditRelease'\n\n/**\n * The Releases top action rail (behind `beta.variants`): an icon-only \"Edit details\" secondary, the\n * state-driven primary — Run release / Publish / Schedule / Unschedule / Revert — and the overflow\n * `⋯` menu. Edit details is a defined, always-visible affordance (not an inline hover pencil, not\n * buried in the overflow), which is more discoverable and keyboard-accessible, and mirrors the\n * Variant-definition detail page's top-of-page edit. Replaces the bottom footer's action cluster,\n * which is dropped in beta.\n *\n * @internal\n */\nexport function ReleaseActionRail({\n release,\n documents,\n}: {\n release: ReleaseDocument\n documents: DocumentInRelease[]\n}): React.JSX.Element {\n const {t} = useTranslation()\n const [editOpen, setEditOpen] = useState(false)\n const canEdit = useCanEditRelease(release)\n\n return (\n <>\n <DetailActionRail\n secondary={\n canEdit ? (\n <Button\n data-testid=\"edit-release-details-button\"\n icon={EditIcon}\n mode=\"bleed\"\n onClick={() => setEditOpen(true)}\n tooltipProps={{content: t('release.action.edit-details')}}\n />\n ) : undefined\n }\n primary={<ReleaseActionButton release={release} documents={documents} />}\n menu={\n <ReleaseMenuButton\n release={release}\n documentsCount={documents.length}\n documents={documents}\n ignoreCTA={release.metadata.releaseType !== 'undecided'}\n />\n }\n />\n {editOpen && <EditReleaseDialog release={release} onClose={() => setEditOpen(false)} />}\n </>\n )\n}\n","import {type ReleaseDocument} from '@sanity/client'\nimport {ChevronRightIcon} from '@sanity/icons/ChevronRight'\nimport {RestoreIcon} from '@sanity/icons/Restore'\nimport {\n Box,\n // oxlint-disable-next-line no-restricted-imports\n Button, // Custom button with a different textWeight, consider adding textWeight to the shared\n Container,\n Flex,\n Text,\n} from '@sanity/ui'\nimport {type Dispatch, type SetStateAction, useCallback} from 'react'\nimport {useRouter} from 'sanity/router'\n\nimport {DetailBackButton} from '../../../components/detailLayout'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {useWorkspace} from '../../../studio/workspace'\nimport {releasesLocaleNamespace} from '../../i18n'\nimport {GROUP_SEARCH_PARAM_KEY} from '../overview/queryParamUtils'\nimport {CopyReleaseActions} from './CopyReleaseActions'\nimport {ReleaseActionRail} from './ReleaseActionRail'\nimport {type ReleaseInspector} from './ReleaseDetail'\nimport {type DocumentInRelease} from './types'\n\nexport function ReleaseDashboardHeader(props: {\n documents: DocumentInRelease[]\n inspector: ReleaseInspector | undefined\n release: ReleaseDocument\n setInspector: Dispatch<SetStateAction<ReleaseInspector | undefined>>\n}) {\n const {documents, inspector, release, setInspector} = props\n const {t} = useTranslation(releasesLocaleNamespace)\n const {t: tCore} = useTranslation()\n const title = release.metadata.title || tCore('release.placeholder-untitled-release')\n const router = useRouter()\n\n // Behind beta.variants the Share/Activity actions move into the table's command lane (one action\n // lane). Production keeps them in the header until the flag flips.\n const {beta} = useWorkspace()\n const variantsEnabled = Boolean(beta?.variants?.enabled)\n\n const handleNavigateToReleasesList = useCallback(() => {\n const isReleaseOpen = release.state !== 'archived' && release.state !== 'published'\n\n router.navigate({\n _searchParams: isReleaseOpen ? undefined : [[GROUP_SEARCH_PARAM_KEY, 'archived']],\n })\n }, [release.state, router])\n\n const handleActivityClick = useCallback(() => {\n setInspector((prev) => (prev === 'activity' ? undefined : 'activity'))\n }, [setInspector])\n\n const headerContent = (\n <Box padding={3}>\n <Flex align=\"flex-start\">\n <Flex flex={1} align=\"center\" style={{minWidth: 0}}>\n {variantsEnabled ? (\n // A single back affordance — the release title already headlines the pane below, so\n // the breadcrumb's repeat of it is dropped. Mirrors the Variants detail's back arrow.\n <DetailBackButton\n text={t('overview.back-to-all-releases')}\n onClick={handleNavigateToReleasesList}\n testId=\"back-to-releases-button\"\n />\n ) : (\n <>\n <Flex flex=\"none\">\n <Button\n mode=\"bleed\"\n onClick={handleNavigateToReleasesList}\n text={t('overview.title')}\n textWeight=\"regular\"\n padding={2}\n data-testid=\"back-to-releases-button\"\n />\n </Flex>\n <Box paddingY={2} flex=\"none\">\n <Text size={1}>\n <ChevronRightIcon />\n </Text>\n </Box>\n <Box padding={2} style={{minWidth: 0, maxWidth: '300px'}}>\n <Text\n size={1}\n weight=\"semibold\"\n textOverflow=\"ellipsis\"\n style={release.metadata.title ? undefined : {opacity: 0.5}}\n >\n {title}\n </Text>\n </Box>\n </>\n )}\n </Flex>\n\n {variantsEnabled ? (\n // The F-pattern action rail: the release's primary action (Run release / Publish /\n // Schedule / …) and its overflow menu sit top-right, where the eye lands first, instead\n // of in a bottom footer. The footer is dropped in beta (see ReleaseDetail). Copy + Activity\n // sit alongside it here rather than in the table's command lane: the header always renders,\n // so they stay reachable even when the table is loading, errored, or an empty\n // cardinality-one release (where the command lane is not mounted).\n <Flex flex=\"none\" gap={2} align=\"center\">\n <CopyReleaseActions release={release} />\n <Button\n data-testid=\"activity-button\"\n icon={RestoreIcon}\n mode=\"bleed\"\n onClick={handleActivityClick}\n padding={2}\n selected={inspector === 'activity'}\n gap={2}\n text={t('dashboard.details.activity')}\n />\n <ReleaseActionRail release={release} documents={documents} />\n </Flex>\n ) : (\n <Flex flex=\"none\" gap={2}>\n <CopyReleaseActions release={release} />\n <Button\n icon={RestoreIcon}\n mode=\"bleed\"\n onClick={handleActivityClick}\n padding={2}\n selected={inspector === 'activity'}\n gap={2}\n text={t('dashboard.details.activity')}\n />\n </Flex>\n )}\n </Flex>\n </Box>\n )\n\n // Only the beta layout constrains the header to the width={3} gutter shared with the new\n // details/table panes below. With variants off the details and table stay on the old full-bleed\n // path, so the header must too — otherwise a centered/constrained header sits over a full-width\n // table, the hybrid layout flagged in review. Production padding is preserved by the inner Box\n // (on main the parent Card supplied padding={3}; the redesign moved it here).\n return variantsEnabled ? <Container width={3}>{headerContent}</Container> : headerContent\n}\n","import {type SanityDocument} from '@sanity/client'\nimport {LayerProvider, PortalProvider} from '@sanity/ui'\n\nimport {SearchPopover} from '../../../studio/components/navbar/search/components/SearchPopover'\nimport {SearchProvider} from '../../../studio/components/navbar/search/contexts/search/SearchProvider'\n\nexport type AddedDocument = Pick<SanityDocument, '_id' | '_type' | 'title'> &\n Partial<SanityDocument>\n\nexport function AddDocumentSearch({\n open,\n onClose,\n releaseId,\n idsInRelease,\n}: {\n open: boolean\n onClose: (document?: AddedDocument) => void\n releaseId: string\n idsInRelease: string[]\n}): React.JSX.Element {\n return (\n <LayerProvider zOffset={1}>\n <SearchProvider disabledDocumentIds={idsInRelease} canDisableAction>\n <PortalProvider>\n <SearchPopover\n onClose={onClose}\n onItemSelect={onClose}\n open={open}\n previewPerspective={[releaseId]}\n disableIntentLink\n />\n </PortalProvider>\n </SearchProvider>\n </LayerProvider>\n )\n}\n","import {isGoingToUnpublish} from '../../util/isGoingToUnpublish'\nimport {type BundleDocumentRow} from './ReleaseSummary'\nimport {type DocumentInRelease} from './types'\n\nexport type DocumentFilterType = 'all' | 'added' | 'changed' | 'unpublished' | 'errors'\n\nexport interface DocumentActionConfig {\n key: 'added' | 'changed' | 'unpublished'\n tone: 'positive' | 'caution' | 'critical'\n labelKey: string\n}\n\nexport interface FilterTabConfig {\n key: DocumentFilterType\n labelKey: string\n tone: 'default' | 'positive' | 'caution' | 'critical'\n}\n\nconst DOCUMENT_ACTION_CONFIGS: DocumentActionConfig[] = [\n {\n key: 'added',\n tone: 'positive',\n labelKey: 'table-body.action.add',\n },\n {\n key: 'changed',\n tone: 'caution',\n labelKey: 'table-body.action.change',\n },\n {\n key: 'unpublished',\n tone: 'critical',\n labelKey: 'table-body.action.unpublish',\n },\n]\n\nexport const FILTER_TAB_CONFIGS: FilterTabConfig[] = [\n {key: 'all', labelKey: 'filter-tab.all', tone: 'default'},\n ...DOCUMENT_ACTION_CONFIGS,\n {key: 'errors', labelKey: 'filter-tab.errors', tone: 'critical'},\n]\n\nexport type ActionCounts = Record<'added' | 'changed' | 'unpublished' | 'errors', number>\n\n/**\n * Counts documents by their action type and validation errors\n */\nexport function countDocumentsByAction(\n documents: (DocumentInRelease | BundleDocumentRow)[],\n): ActionCounts {\n return documents.reduce<ActionCounts>(\n (acc, doc) => {\n const actionType = getDocumentActionType(doc)\n if (actionType) {\n acc[actionType]++\n }\n if (doc.validation.hasError && !doc.isPending) {\n acc.errors++\n }\n return acc\n },\n {added: 0, changed: 0, unpublished: 0, errors: 0},\n )\n}\n\n/**\n * Checks if a document matches the given filter type\n */\nexport function documentMatchesFilter(\n doc: DocumentInRelease | BundleDocumentRow,\n filter: DocumentFilterType,\n): boolean {\n if (filter === 'all') return true\n if (filter === 'errors') return doc.validation.hasError && !doc.isPending\n return getDocumentActionType(doc) === filter\n}\n\n/**\n * Determines the action type for a document based on its state\n */\nexport function getDocumentActionType(\n document: DocumentInRelease | BundleDocumentRow,\n): DocumentActionConfig['key'] | null {\n if (!document.document || document.isPending) {\n return null\n }\n\n const willBeUnpublished = isGoingToUnpublish(document.document)\n if (willBeUnpublished) {\n return 'unpublished'\n }\n\n if (document.document.publishedDocumentExists) {\n return 'changed'\n }\n\n return 'added'\n}\n\nexport function getReleaseDocumentActionConfig(\n actionType: DocumentActionConfig['key'],\n): DocumentActionConfig | undefined {\n return DOCUMENT_ACTION_CONFIGS.find(({key}) => key === actionType)\n}\n","import {type ReleaseState} from '@sanity/client'\nimport {Box, Container, Flex, Skeleton, TabList} from '@sanity/ui'\nimport {useMemo} from 'react'\n\nimport {Tab} from '../../../../../ui-components/tab/Tab'\nimport {useTranslation} from '../../../../i18n/hooks/useTranslation'\nimport {releasesLocaleNamespace} from '../../../i18n'\nimport {\n countDocumentsByAction,\n type DocumentFilterType,\n FILTER_TAB_CONFIGS,\n type FilterTabConfig,\n} from '../releaseDocumentActions'\nimport {type DocumentInRelease} from '../types'\n\ninterface ReleaseDocumentFilterTabsProps {\n documents: DocumentInRelease[]\n releaseState: ReleaseState\n isLoading?: boolean\n activeFilter: DocumentFilterType\n onFilterChange: (filter: DocumentFilterType) => void\n /** Render just the tabs (no Container/padding) for hosting inside the shared table command lane. */\n inline?: boolean\n}\n\nexport function ReleaseDocumentFilterTabs({\n documents,\n releaseState,\n isLoading = false,\n activeFilter,\n onFilterChange,\n inline = false,\n}: ReleaseDocumentFilterTabsProps) {\n const {t} = useTranslation(releasesLocaleNamespace)\n\n // Hide filter tabs for archived and published releases (early return for perf)\n if (releaseState === 'archived' || releaseState === 'published') {\n return null\n }\n\n if (isLoading) {\n const skeletons = (\n <Flex align=\"center\" gap={2}>\n {FILTER_TAB_CONFIGS.filter((config) => config.key !== 'errors').map((config) => (\n <Skeleton\n key={`loading-skeleton-${config.key}`}\n animated\n style={{width: '70px', height: '32px'}}\n radius={2}\n />\n ))}\n </Flex>\n )\n if (inline) return skeletons\n return (\n <Container width={3}>\n <Box padding={3}>{skeletons}</Box>\n </Container>\n )\n }\n\n if (documents.length === 0) {\n return null\n }\n\n return (\n <ReleaseDocumentFilterTabsInner\n documents={documents}\n activeFilter={activeFilter}\n inline={inline}\n onFilterChange={onFilterChange}\n t={t}\n />\n )\n}\n\ninterface ReleaseDocumentFilterTabsInnerProps {\n documents: DocumentInRelease[]\n activeFilter: DocumentFilterType\n onFilterChange: (filter: DocumentFilterType) => void\n inline: boolean\n t: ReturnType<typeof useTranslation>['t']\n}\n\nfunction ReleaseDocumentFilterTabsInner({\n documents,\n activeFilter,\n onFilterChange,\n inline,\n t,\n}: ReleaseDocumentFilterTabsInnerProps) {\n const counts = useMemo(() => countDocumentsByAction(documents), [documents])\n\n const getTabLabel = (config: FilterTabConfig): string => {\n const label = t(config.labelKey)\n if (config.key === 'all') {\n return label\n }\n const count = counts[config.key]\n return `${label} (${count})`\n }\n\n const getTabTone = (config: FilterTabConfig): 'default' | 'positive' | 'caution' | 'critical' => {\n // Errors tab always uses critical tone for visibility (both selected and unselected)\n if (config.key === 'errors') {\n return 'critical'\n }\n // Only apply action-specific tones when selected\n if (activeFilter === config.key) {\n return config.tone\n }\n return 'default'\n }\n\n const tabList = (\n <TabList gap={1}>\n {FILTER_TAB_CONFIGS.map((config) => {\n const isSelected = activeFilter === config.key\n\n // Hide tabs with zero counts (except \"All\")\n if (config.key !== 'all' && counts[config.key] === 0) {\n return null\n }\n\n return (\n <Tab\n key={config.key}\n id={`filter-tab-${config.key}`}\n aria-controls=\"document-table-card\"\n label={getTabLabel(config)}\n onClick={() => onFilterChange(config.key)}\n selected={isSelected}\n tone={getTabTone(config)}\n />\n )\n })}\n </TabList>\n )\n\n // Inline: bare tabs for the shared table's command lane (the lane supplies container + padding).\n if (inline) return tabList\n\n return (\n <Container width={3}>\n <Box padding={3}>{tabList}</Box>\n </Container>\n )\n}\n","import {CloseIcon} from '@sanity/icons/Close'\nimport {UnpublishIcon} from '@sanity/icons/Unpublish'\nimport {Box, Card, Label, Menu, MenuDivider} from '@sanity/ui'\nimport {memo, useMemo, useState} from 'react'\n\nimport {MenuButton} from '../../../../../ui-components/menuButton/MenuButton'\nimport {MenuItem} from '../../../../../ui-components/menuItem/MenuItem'\nimport {ContextMenuButton} from '../../../../components/contextMenuButton/ContextMenuButton'\nimport {useSchema} from '../../../../hooks/useSchema'\nimport {useTranslation} from '../../../../i18n/hooks/useTranslation'\nimport {useDocumentPairPermissions} from '../../../../store/grants/documentPairPermissions'\nimport {getPublishedId, getVersionFromId} from '../../../../util/draftUtils'\nimport {DiscardVersionDialog} from '../../../components/dialog/DiscardVersionDialog'\nimport {UnpublishVersionDialog} from '../../../components/dialog/UnpublishVersionDialog'\nimport {releasesLocaleNamespace} from '../../../i18n'\nimport {isGoingToUnpublish} from '../../../util/isGoingToUnpublish'\nimport {type BundleDocumentRow} from '../ReleaseSummary'\n\nconst DocumentActionsInner = memo(\n function DocumentActionsInner({\n document,\n releaseTitle,\n }: {\n document: BundleDocumentRow\n releaseTitle: string | undefined\n }) {\n const [showDiscardDialog, setShowDiscardDialog] = useState(false)\n const [showUnpublishDialog, setShowUnpublishDialog] = useState(false)\n const {t: coreT} = useTranslation()\n const {t} = useTranslation(releasesLocaleNamespace)\n const isAlreadyUnpublished = isGoingToUnpublish(document.document)\n\n const publishedId = getPublishedId(document.document._id)\n const type = document.document._type\n // No `getTargetScopeId(useTargetDocumentState())` here: the version is derived from the table row's own\n // document id (the release being viewed), in a variant release version this will also work because the scopeId\n // is the same as the version from id.\n const version = getVersionFromId(document.document._id)\n\n const [discardVersionPermission, isDiscardVersionPermissionsLoading] =\n useDocumentPairPermissions({\n id: publishedId,\n type,\n version,\n permission: 'discardVersion',\n })\n const [unpublishPermission, isUnpublishPermissionsLoading] = useDocumentPairPermissions({\n id: publishedId,\n type,\n version,\n permission: 'unpublish',\n })\n\n const isDiscardVersionActionDisabled =\n !discardVersionPermission?.granted || isDiscardVersionPermissionsLoading\n const noPermissionToUnpublish = !unpublishPermission?.granted || isUnpublishPermissionsLoading\n\n const unPublishTooltipContent = useMemo(() => {\n if (noPermissionToUnpublish) {\n return t('permissions.error.unpublish')\n }\n if (!document.document.publishedDocumentExists) {\n return t('unpublish.no-published-version')\n }\n if (isAlreadyUnpublished) {\n return t('unpublish.already-unpublished')\n }\n\n return null\n }, [\n document.document.publishedDocumentExists,\n isAlreadyUnpublished,\n noPermissionToUnpublish,\n t,\n ])\n\n const isUnpublishActionDisabled =\n noPermissionToUnpublish || !document.document.publishedDocumentExists || isAlreadyUnpublished\n\n return (\n <>\n <Card tone=\"default\" display=\"flex\">\n <MenuButton\n id=\"document-actions\"\n button={<ContextMenuButton />}\n menu={\n <Menu>\n <MenuItem\n text={coreT('release.action.discard-version')}\n icon={CloseIcon}\n onClick={() => setShowDiscardDialog(true)}\n disabled={isDiscardVersionActionDisabled}\n tooltipProps={{\n disabled: !isDiscardVersionActionDisabled,\n content: t('permissions.error.discard-version'),\n }}\n />\n <MenuDivider />\n <Box padding={3} paddingBottom={2}>\n <Label size={1}>{t('menu.group.when-releasing')}</Label>\n </Box>\n <MenuItem\n text={t('action.unpublish')}\n icon={UnpublishIcon}\n disabled={isUnpublishActionDisabled}\n tooltipProps={{\n disabled: !isUnpublishActionDisabled,\n content: unPublishTooltipContent,\n }}\n onClick={() => setShowUnpublishDialog(true)}\n />\n </Menu>\n }\n />\n </Card>\n {showDiscardDialog && (\n <DiscardVersionDialog\n isGoingToUnpublish={isGoingToUnpublish(document.document)}\n onClose={() => setShowDiscardDialog(false)}\n versionId={document.document._id}\n documentType={document.document._type}\n fromPerspective={releaseTitle || t('release-placeholder.title')}\n />\n )}\n {showUnpublishDialog && (\n <UnpublishVersionDialog\n onClose={() => setShowUnpublishDialog(false)}\n documentVersionId={document.document._id}\n documentType={document.document._type}\n />\n )}\n </>\n )\n },\n (prev, next) => prev.document.memoKey === next.document.memoKey,\n)\n\nexport const DocumentActions = memo(function GuardedDocumentActions(props: {\n document: BundleDocumentRow\n releaseTitle: string | undefined\n}) {\n const schema = useSchema()\n const type = schema.get(props.document.document._type)\n const {t} = useTranslation()\n if (!type) {\n return (\n <ContextMenuButton\n disabled\n tooltipProps={{\n content: t('document.type.not-found', {type: props.document.document._type}),\n }}\n />\n )\n }\n\n return <DocumentActionsInner {...props} />\n})\n","import {type TransactionLogEventWithEffects} from '@sanity/types'\nimport {useCallback, useEffect, useMemo, useRef, useState} from 'react'\n\nimport {useClient} from '../../../../hooks/useClient'\nimport {getTransactionsLogs} from '../../../../store/translog/getTransactionsLogs'\nimport {getVersionId} from '../../../../util/draftUtils'\nimport {RELEASES_STUDIO_CLIENT_OPTIONS} from '../../../util/releasesClient'\n\nconst historyCache: Record<string, {transactions: TransactionLogEventWithEffects[]}> =\n Object.create(null)\n\nexport type DocumentHistory = {\n history: TransactionLogEventWithEffects[]\n createdBy: string\n lastEditedBy: string\n editors: string[]\n}\n\n// Add as a concurrency limiter to avoid 429s when many rows mount at once\n// This happens in incredibly large releases with many documents\n// 10 was the highest number I was able to run before getting consistent 429s\nlet activeHistoryStreams = 0\nconst pendingHistoryResolvers: Array<() => void> = []\nasync function acquireHistorySlot(maxConcurrent = 10): Promise<void> {\n if (activeHistoryStreams >= maxConcurrent) {\n await new Promise<void>((resolve) => pendingHistoryResolvers.push(resolve))\n }\n activeHistoryStreams += 1\n}\nfunction releaseHistorySlot(): void {\n activeHistoryStreams = Math.max(0, activeHistoryStreams - 1)\n const next = pendingHistoryResolvers.shift()\n if (next) next()\n}\n\n// Fetch history for a single document version within a release\nexport function useReleaseHistory(\n releaseDocumentId: string | undefined,\n releaseId: string,\n documentRevision?: string,\n): {\n documentHistory?: DocumentHistory\n collaborators: string[]\n loading: boolean\n} {\n const client = useClient(RELEASES_STUDIO_CLIENT_OPTIONS)\n const [history, setHistory] = useState<TransactionLogEventWithEffects[] | null>(null)\n\n const versionId = useMemo(() => {\n if (!releaseDocumentId || !releaseId) return ''\n return getVersionId(releaseDocumentId, releaseId)\n }, [releaseDocumentId, releaseId])\n\n // Reset to the loading state during render when the (versionId, documentRevision) identity\n // changes, before the new fetch settles — React's recommended \"adjusting state when a prop\n // changes\" pattern (setState during render bails out and re-renders immediately, without the\n // extra commit an effect-based reset would cause). Keying on documentRevision too (not just\n // versionId) matches the sibling useDocumentLastEditedBy hook's full cache key: without it, a\n // revision change on the same version would keep showing the previous history with\n // `loading: false` while the new fetch runs — the same false-settled flash, just triggered by an\n // edit instead of a version switch. A cache hit or the `!versionId` short-circuit in\n // `fetchAndParse` still settles synchronously within the same effect tick, so there's no visible\n // flicker for those.\n const resetKey = `${versionId}-${documentRevision ?? ''}`\n const [prevResetKey, setPrevResetKey] = useState(resetKey)\n if (resetKey !== prevResetKey) {\n setPrevResetKey(resetKey)\n setHistory(null)\n }\n\n const cancelledRef = useRef(false)\n\n const fetchAndParse = useCallback(async (): Promise<void> => {\n if (!versionId) {\n // No document to fetch history for (e.g. a pending / just-added placeholder row passes an\n // undefined id). Settle to an empty history so `loading` reports false instead of hanging\n // true — otherwise the Edited / Edited-by cells keep an endless skeleton on rows that will\n // never resolve a history.\n setHistory([])\n return\n }\n\n const cacheKey = `${releaseDocumentId}-${documentRevision}`\n\n const cached = historyCache[cacheKey]\n if (cached) {\n setHistory(cached.transactions)\n return\n }\n\n await acquireHistorySlot()\n // The run().catch().finally() syntax instead of try/catch/finally is because of the React Compiler not fully supporting the syntax yet\n const run = async () => {\n const transactions = await getTransactionsLogs(client, versionId, {\n tag: 'sanity.studio.releases.documents.history',\n effectFormat: 'mendoza',\n excludeContent: true,\n includeIdentifiedDocumentsOnly: true,\n limit: 1,\n reverse: true,\n })\n\n if (!cancelledRef.current) {\n setHistory(transactions)\n\n historyCache[cacheKey] = {\n transactions,\n }\n }\n }\n await run()\n .catch((error) => {\n console.error('Failed to fetch or parse document history:', error)\n if (!cancelledRef.current) setHistory([])\n })\n .finally(() => {\n releaseHistorySlot()\n })\n }, [versionId, releaseDocumentId, documentRevision, client])\n\n useEffect(() => {\n cancelledRef.current = false\n // oxlint-disable-next-line react/react-compiler\n void fetchAndParse()\n return () => {\n cancelledRef.current = true\n }\n }, [fetchAndParse])\n\n return useMemo(() => {\n const collaborators: string[] = []\n // `null` = not yet fetched → genuinely loading. `[]` = settled with no history (a legitimately\n // empty log, or a failed fetch that set `[]` on line 93) → NOT loading, just nothing to show.\n // Keying `loading` off length would leave those rows on a permanent skeleton.\n if (history === null) {\n return {documentHistory: undefined, collaborators, loading: true}\n }\n if (history.length === 0) {\n return {documentHistory: undefined, collaborators, loading: false}\n }\n\n const aggregated: DocumentHistory = {\n history: [],\n createdBy: '',\n lastEditedBy: '',\n editors: [],\n }\n\n history.forEach((item) => {\n const author = item.author\n if (!collaborators.includes(author)) collaborators.push(author)\n\n if (aggregated.history.length === 0) {\n aggregated.createdBy = author\n }\n\n // @ts-expect-error TransactionLogEventWithEffects has no property 'mutations' but it's returned from the API\n const isCreate = item.mutations?.some((mutation) => 'create' in mutation)\n if (isCreate) aggregated.createdBy = author\n\n if (!aggregated.editors.includes(author)) aggregated.editors.push(author)\n aggregated.lastEditedBy = author\n aggregated.history.push(item)\n })\n\n return {documentHistory: aggregated, collaborators, loading: false}\n }, [history])\n}\n","import {type ReleaseState} from '@sanity/client'\nimport {CheckmarkCircleIcon} from '@sanity/icons/CheckmarkCircle'\nimport {ClockIcon} from '@sanity/icons/Clock'\nimport {ErrorOutlineIcon} from '@sanity/icons/ErrorOutline'\nimport {Badge, Box, Card, Flex, Skeleton, Text} from '@sanity/ui'\nimport {toString as pathToString} from '@sanity/util/paths'\n// oxlint-disable-next-line @sanity/i18n/no-i18next-import -- figure out how to have the linter be fine with importing types-only\nimport {type TFunction} from 'i18next'\nimport {type CSSProperties, memo, useCallback, useEffect, useRef, useState} from 'react'\nimport {IntentLink} from 'sanity/router'\nimport {styled} from 'styled-components'\n\nimport {ToneIcon} from '../../../../../ui-components/toneIcon/ToneIcon'\nimport {Tooltip} from '../../../../../ui-components/tooltip/Tooltip'\nimport {EditedByAvatar} from '../../../../components/documentTable/EditedByCell'\nimport {RelativeTime} from '../../../../components/RelativeTime'\nimport {AvatarSkeleton, UserAvatar} from '../../../../components/userAvatar/UserAvatar'\nimport {useSchema} from '../../../../hooks/useSchema'\nimport {SanityDefaultPreview} from '../../../../preview/components/SanityDefaultPreview'\nimport {RhombusIcon} from '../../../../variants/plugin/components/PersonalizationIcons'\nimport {\n getVariantConditionsText,\n getVariantIdFromDocument,\n getVariantTitle,\n} from '../../../../variants/tool/util'\nimport {type SystemVariant} from '../../../../variants/types'\nimport {getReleaseIdFromReleaseDocumentId} from '../../../util/getReleaseIdFromReleaseDocumentId'\nimport {isGoingToUnpublish} from '../../../util/isGoingToUnpublish'\nimport {getReleaseDocumentIntent} from '../../components/getReleaseDocumentIntent'\nimport {ReleaseDocumentPreview} from '../../components/ReleaseDocumentPreview'\nimport {Headers} from '../../components/Table/TableHeader'\nimport {type Column, type InjectedTableProps} from '../../components/Table/types'\nimport {getDocumentActionType, getReleaseDocumentActionConfig} from '../releaseDocumentActions'\nimport {type BundleDocumentRow} from '../ReleaseSummary'\nimport {type DocumentInRelease} from '../types'\nimport {useReleaseHistory} from './useReleaseHistory'\n\nconst MemoReleaseDocumentPreview = memo(\n function MemoReleaseDocumentPreview({\n item,\n releaseId,\n releaseState,\n documentRevision,\n }: {\n item: DocumentInRelease\n releaseId: string\n releaseState?: ReleaseState\n documentRevision?: string\n }) {\n const isGoingToBePublished = isGoingToUnpublish(item.document)\n const variantId = getVariantIdFromDocument(item.document)\n\n return (\n <ReleaseDocumentPreview\n documentId={item.document._id}\n documentTypeName={item.document._type}\n releaseId={releaseId}\n releaseState={releaseState}\n documentRevision={documentRevision}\n isGoingToBePublished={isGoingToBePublished}\n variantId={variantId}\n />\n )\n },\n (prev, next) => prev.item.memoKey === next.item.memoKey && prev.releaseId === next.releaseId,\n)\n\n// Carries its own overflow CSS because @sanity/ui's `textOverflow` prop is inert here.\nconst TruncatedSpan = styled.span`\n display: block;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n`\n\n/** @internal - exported for unit testing only */\nexport function DocumentType({type}: {type: string}) {\n const schema = useSchema()\n const title = schema.get(type)?.title || 'Not found'\n\n const elementRef = useRef<HTMLSpanElement | null>(null)\n const [isTruncated, setIsTruncated] = useState(false)\n\n const checkTruncation = useCallback(() => {\n const element = elementRef.current\n if (element) setIsTruncated(element.scrollWidth > element.clientWidth)\n }, [])\n\n // A callback ref measures on attach, avoiding the race where a useEffect fires before the\n // ref is populated. The returned cleanup runs when the node detaches.\n const measureRef = useCallback(\n (element: HTMLSpanElement | null) => {\n elementRef.current = element\n if (!element) return undefined\n\n checkTruncation()\n\n const observer = new ResizeObserver(checkTruncation)\n observer.observe(element)\n\n // The late font swap widens the text but not the column-locked box, so the\n // ResizeObserver never fires - re-measure once fonts settle.\n let cancelled = false\n void document.fonts?.ready?.then(() => {\n if (!cancelled) checkTruncation()\n })\n\n return () => {\n cancelled = true\n observer.disconnect()\n elementRef.current = null\n }\n },\n [checkTruncation],\n )\n\n // A title change rewrites the text without resizing the box, so re-measure on title change.\n useEffect(() => {\n checkTruncation()\n }, [title, checkTruncation])\n\n const textElement = (\n <Text size={1}>\n <TruncatedSpan ref={measureRef}>{title}</TruncatedSpan>\n </Text>\n )\n\n if (isTruncated) {\n return (\n <Tooltip portal content={<Text size={1}>{title}</Text>}>\n {textElement}\n </Tooltip>\n )\n }\n\n return textElement\n}\n\nconst MemoDocumentType = memo(DocumentType, (prev, next) => prev.type === next.type)\n\nconst documentActionColumn: (\n t: TFunction<'releases'>,\n variantsEnabled: boolean,\n) => Column<BundleDocumentRow> = (t, variantsEnabled) => ({\n id: 'action',\n width: null,\n style: {minWidth: 100},\n // Sortable only in the beta layout. Production kept a plain, non-sortable header — gating this\n // keeps the non-beta releases table unchanged.\n sorting: variantsEnabled,\n // Sort by the action type (Add / Change / Unpublish) so like actions group together.\n sortTransform: variantsEnabled ? (value) => getDocumentActionType(value) || '' : undefined,\n header: (props) =>\n variantsEnabled ? (\n <Flex {...props.headerProps} paddingY={3} sizing=\"border\">\n <Headers.SortHeaderButton text={t('table-header.action')} {...props} />\n </Flex>\n ) : (\n <Flex {...props.headerProps} paddingY={3} sizing=\"border\">\n <Headers.BasicHeader text={t('table-header.action')} />\n </Flex>\n ),\n cell: ({cellProps, datum}) => {\n const actionBadge = () => {\n const actionType = getDocumentActionType(datum)\n if (!actionType) return null\n\n const documentActionConfig = getReleaseDocumentActionConfig(actionType)\n if (!documentActionConfig) return null\n\n return (\n <Badge\n radius={2}\n tone={documentActionConfig.tone}\n data-testid={`${actionType}-badge-${datum.document._id}`}\n >\n {t(documentActionConfig.labelKey)}\n </Badge>\n )\n }\n\n return (\n <Flex align=\"center\" {...cellProps}>\n <Box paddingX={2}>{actionBadge()}</Box>\n </Flex>\n )\n },\n})\n\n// Purple, matching the perspective bar's variant motif. The perspective bar gets its purple from a\n// `tone=\"suggest\"` Card context (which defines --card-icon-color as the suggest purple); the\n// --card-badge-* vars only exist inside a Badge, so we replicate the Card approach: a transparent\n// suggest-toned wrapper, with the RhombusIcon (stroke=currentColor) picking up --card-icon-color.\nconst VARIANT_ICON_CARD_STYLE: CSSProperties = {backgroundColor: 'transparent'}\nconst VARIANT_ICON_STYLE: CSSProperties = {color: 'var(--card-icon-color)'}\n\n/** Resolves a document's variant definition from its `_system.variant._ref` (full variant id). */\nfunction resolveDocumentVariant(\n document: BundleDocumentRow['document'],\n variantsById: Map<string, SystemVariant>,\n): SystemVariant | undefined {\n const variantRef = (document as {_system?: {variant?: {_ref?: string}}})._system?.variant?._ref\n return variantRef ? variantsById.get(variantRef) : undefined\n}\n\n// Which variant a release document targets: ◆ diamond + the variant title, with the full\n// conditions (\"flags\") on hover. Empty for base (non-variant) documents.\nconst VariantCell = memo(\n function VariantCell({\n document,\n variantsById,\n }: {\n document: BundleDocumentRow['document']\n variantsById: Map<string, SystemVariant>\n }) {\n const variant = resolveDocumentVariant(document, variantsById)\n if (!variant) return null\n\n const conditions = getVariantConditionsText(variant.conditions)\n\n return (\n <Tooltip\n portal\n placement=\"bottom-start\"\n disabled={!conditions}\n content={\n conditions ? (\n <Box padding={2}>\n <Text size={1}>{conditions}</Text>\n </Box>\n ) : undefined\n }\n >\n <Flex align=\"center\" gap={2} style={{minWidth: 0}}>\n <Card tone=\"suggest\" padding={0} style={VARIANT_ICON_CARD_STYLE}>\n <Text size={1} style={VARIANT_ICON_STYLE}>\n <RhombusIcon />\n </Text>\n </Card>\n {/* flex + min-width:0 lets the label shrink below its content width so a long variant name\n truncates with an ellipsis instead of overflowing the column. */}\n <Text size={1} textOverflow=\"ellipsis\" weight=\"medium\" style={{flex: 1, minWidth: 0}}>\n {getVariantTitle(variant)}\n </Text>\n </Flex>\n </Tooltip>\n )\n },\n (prev, next) => prev.document === next.document && prev.variantsById === next.variantsById,\n)\n\nexport const getDocumentTableColumnDefs: (\n releaseId: string,\n releaseState: ReleaseState,\n t: TFunction<'releases'>,\n options?: {\n searchInCommandLane?: boolean\n variantsById?: Map<string, SystemVariant>\n /** True while the variant definitions map is still loading — skeleton the Variant cell instead\n * of rendering a blank that pops in when definitions arrive. */\n variantsLoading?: boolean\n /**\n * Beta (variants) column layout. When false/omitted the column set must match production\n * exactly — these columns feed the non-beta releases-detail table too, so any change here\n * behind the flag-off path would leak into production Releases detail + scheduled drafts.\n */\n variantsEnabled?: boolean\n },\n) => Column<BundleDocumentRow>[] = (releaseId, releaseState, t, options) => {\n // Beta layout gate. Off (production) = the exact column set from before this redesign, since\n // these defs also drive the non-beta releases-detail table.\n const variantsEnabled = Boolean(options?.variantsEnabled)\n const variantsLoading = Boolean(options?.variantsLoading)\n\n return [\n /**\n * Hiding action for archived and published releases of v1.0\n * This will be added once Events API has reverse order lookup supported\n */\n ...(releaseState === 'archived' || releaseState === 'published'\n ? []\n : [documentActionColumn(t, variantsEnabled)]),\n {\n id: 'document._type',\n // Header and body rows are independent flexboxes, so a content-sized column (width: null)\n // settles at different widths in each and misaligns. A fixed width keeps them in sync.\n // Type only ever holds short schema titles (Book / Author / demoBlogPost), and DocumentType\n // truncates + shows a tooltip on overflow, so a tighter width reclaims space for Document.\n // The tighter width is beta-only: production (flag off) must keep its existing 150 so Releases\n // detail and scheduled drafts don't shift layout.\n width: variantsEnabled ? 120 : 150,\n sorting: true,\n header: (props) => (\n <Flex {...props.headerProps} paddingY={3} sizing=\"border\">\n <Headers.SortHeaderButton text={t('table-header.type')} {...props} />\n </Flex>\n ),\n cell: ({cellProps, datum}) => (\n <Flex align=\"center\" {...cellProps}>\n <Box paddingX={2} style={{minWidth: 0}}>\n {!datum.isLoading && <MemoDocumentType type={datum.document._type} />}\n </Box>\n </Flex>\n ),\n },\n // \"Variant\" column — shows which variant each document targets. Only present when the caller\n // passes a resolved variants map (i.e. variants enabled). This is the functional point of the\n // release-detail reconciliation: the inverse of the Variants table's \"Appears in\" column.\n ...(options?.variantsById\n ? [\n {\n id: 'variant',\n width: 180,\n style: {minWidth: 120, maxWidth: 180},\n sorting: true,\n sortTransform(value) {\n const variant = resolveDocumentVariant(value.document, options.variantsById!)\n return variant ? getVariantTitle(variant).toLowerCase() : ''\n },\n header: (props) => (\n <Flex {...props.headerProps} paddingY={3} sizing=\"border\">\n <Headers.SortHeaderButton text={t('table-header.variant')} {...props} />\n </Flex>\n ),\n cell: ({cellProps, datum}) => (\n <Flex align=\"center\" {...cellProps}>\n <Box paddingX={2} style={{minWidth: 0}}>\n {!datum.isLoading &&\n (variantsLoading ? (\n <Skeleton animated radius={1} style={{width: 60, height: 11}} />\n ) : (\n <VariantCell document={datum.document} variantsById={options.variantsById!} />\n ))}\n </Box>\n </Flex>\n ),\n } satisfies Column<BundleDocumentRow>,\n ]\n : []),\n {\n id: 'search',\n width: null,\n // When search lives in the command lane, this column grows to fill (like Variants) so \"Edited\"\n // pins to the right edge; otherwise it holds the header search input at a capped width.\n style: options?.searchInCommandLane\n ? {minWidth: 240}\n : {minWidth: 'min(50%, calc(100vw - 80px))', maxWidth: 'min(50%, calc(100vw - 80px))'},\n sorting: options?.searchInCommandLane ? true : undefined,\n sortTransform(value) {\n return (\n String(\n value.document?.title || value.document?.name || value.document?._id,\n ).toLowerCase() || 0\n )\n },\n header: (props) =>\n options?.searchInCommandLane ? (\n // Search moved to the command lane; the header is a plain sortable \"Document\" label that\n // grows to fill (flex) in both header and body.\n <Flex {...props.headerProps} flex={1} paddingY={3} sizing=\"border\">\n <Headers.SortHeaderButton text={t('table-header.document')} {...props} />\n </Flex>\n ) : (\n <Headers.TableHeaderSearch {...props} placeholder={t('search-documents-placeholder')} />\n ),\n cell: ({cellProps, datum}) => (\n <Box {...cellProps} flex={1} padding={1} paddingRight={2} sizing=\"border\">\n {datum.isPending || datum.isLoading ? (\n <SanityDefaultPreview isPlaceholder />\n ) : (\n <MemoReleaseDocumentPreview\n item={datum}\n releaseId={releaseId}\n releaseState={releaseState}\n documentRevision={datum.document._rev}\n />\n )}\n </Box>\n ),\n },\n // Beta splits authorship into two columns (\"Last edited\" time + \"Edited by\" person). Production\n // (flag off) keeps the single combined \"Edited\" column (time + last-editor avatar) it had before\n // the redesign, so the non-beta releases table is unchanged.\n ...(variantsEnabled\n ? ([\n {\n // \"Last edited\" (relative time) comes BEFORE \"Edited by\" so this text column sits between\n // the document preview's live-presence avatar and the edited-by avatar — otherwise the two\n // round avatars would neighbour across the column boundary and read as one crowded cluster.\n id: 'document._updatedAt',\n sorting: true,\n width: 130,\n header: (props) => (\n <Flex {...props.headerProps} paddingY={3} sizing=\"border\">\n <Headers.SortHeaderButton\n paddingLeft={2}\n text={t('table-header.last-edited')}\n {...props}\n />\n </Flex>\n ),\n cell: ({cellProps, datum}) => (\n <Flex\n {...cellProps}\n align=\"center\"\n paddingX={2}\n paddingY={3}\n style={{minWidth: 130}}\n sizing=\"border\"\n >\n {!datum.isLoading && datum.document._updatedAt && (\n <Text muted size={1}>\n <RelativeTime time={datum.document._updatedAt} useTemporalPhrase minimal />\n </Text>\n )}\n </Flex>\n ),\n },\n {\n // Edited by — the last editor (person), its own named column so authorship reads distinctly\n // from live presence. Plain-text header so it aligns with the avatar at the content edge (a\n // sort button never lands its label on the same edge).\n id: 'editedBy',\n sorting: false,\n width: 170,\n style: {minWidth: 44, maxWidth: 170},\n header: ({headerProps}) => (\n <Flex {...headerProps} align=\"center\" paddingX={2} paddingY={3} sizing=\"border\">\n <Text muted size={1} textOverflow=\"ellipsis\" weight=\"medium\">\n {t('table-header.edited-by')}\n </Text>\n </Flex>\n ),\n cell: (props) => <EditedByReleaseCell {...props} releaseDocumentId={releaseId} />,\n },\n ] satisfies Column<BundleDocumentRow>[])\n : ([\n {\n id: 'document._updatedAt',\n sorting: true,\n width: 130,\n header: (props) => (\n <Flex {...props.headerProps} paddingY={3} sizing=\"border\">\n <Headers.SortHeaderButton text={t('table-header.edited')} {...props} />\n </Flex>\n ),\n cell: (props) => <UpdatedAtCell {...props} releaseDocumentId={releaseId} />,\n },\n ] satisfies Column<BundleDocumentRow>[])),\n\n {\n id: 'validation',\n sorting: false,\n width: 50,\n header: ({headerProps}) => (\n <Flex {...headerProps} paddingY={3} sizing=\"border\">\n <Headers.BasicHeader text={''} />\n </Flex>\n ),\n cell: ({cellProps, datum}) => {\n if (datum.isLoading) return null\n\n const errors = datum.validation.validation.filter(\n (validation) => validation.level === 'error',\n )\n const validationErrorCount = errors.length\n\n // Deep-link to the first field-level error (fall back to the first error). The\n // existing params.path -> field-focus plumbing in DocumentPaneProvider scrolls to\n // and focuses the field when the document opens.\n const firstError = errors.find((error) => error.path.length > 0) ?? errors[0]\n const focusPath = firstError ? pathToString(firstError.path) : undefined\n const intent = getReleaseDocumentIntent({\n documentId: datum.document._id,\n documentTypeName: datum.document._type,\n releaseId,\n releaseState,\n documentRevision: datum.document._rev,\n variantId: getVariantIdFromDocument(datum.document),\n path: focusPath,\n })\n const errorLabel = t(\n validationErrorCount === 1\n ? 'document-validation.error_one'\n : 'document-validation.error_other',\n {count: validationErrorCount},\n )\n\n return (\n // In the command-lane layout only the Document column grows; keep validation fixed at its\n // width (flex:1 here would split the free space with Document and misalign the header/body).\n <Flex\n {...cellProps}\n flex={options?.searchInCommandLane ? undefined : 1}\n padding={1}\n justify=\"center\"\n align=\"center\"\n sizing=\"border\"\n >\n {datum.validation.hasError && (\n <Tooltip\n portal\n placement=\"bottom-end\"\n content={\n <Text muted size={1}>\n <Flex align={'center'} gap={3} padding={1}>\n <ToneIcon icon={ErrorOutlineIcon} tone=\"critical\" />\n {errorLabel}\n </Flex>\n </Text>\n }\n >\n <Text size={1}>\n <IntentLink\n intent=\"edit\"\n params={intent.params}\n searchParams={intent.searchParams}\n aria-label={errorLabel}\n data-testid={`validation-error-link-${datum.document._id}`}\n >\n <ToneIcon icon={ErrorOutlineIcon} tone=\"critical\" />\n </IntentLink>\n </Text>\n </Tooltip>\n )}\n {/* Positive \"ready\" / \"validating\" states are beta-only: production kept an error-only\n column, so gating them here keeps the non-beta releases table unchanged. */}\n {variantsEnabled && datum.validation.isValidating && !datum.validation.hasError && (\n <Tooltip\n portal\n placement=\"bottom-end\"\n content={\n <Text muted size={1}>\n <Box padding={1}>{t('dashboard.details.metadata.status-validating')}</Box>\n </Text>\n }\n >\n <Text muted size={1} data-testid={`validation-validating-${datum.document._id}`}>\n <ToneIcon icon={ClockIcon} tone=\"default\" />\n </Text>\n </Tooltip>\n )}\n {variantsEnabled && !datum.validation.hasError && !datum.validation.isValidating && (\n <Tooltip\n portal\n placement=\"bottom-end\"\n content={\n <Text muted size={1}>\n <Box padding={1}>{t('document-validation.valid')}</Box>\n </Text>\n }\n >\n <Text muted size={1} data-testid={`validation-valid-${datum.document._id}`}>\n <ToneIcon icon={CheckmarkCircleIcon} tone=\"positive\" />\n </Text>\n </Tooltip>\n )}\n </Flex>\n )\n },\n },\n ]\n}\n\n// Production (non-beta) combined \"Edited\" cell: last-editor avatar + relative time in one column.\n// The beta layout splits this into separate \"Last edited\" and \"Edited by\" columns; this restores the\n// pre-redesign single column for the flag-off releases table.\nfunction UpdatedAtCell({\n cellProps,\n datum,\n releaseDocumentId,\n}: {\n cellProps: InjectedTableProps\n datum: BundleDocumentRow & {isLoading?: boolean}\n releaseDocumentId: string\n}) {\n const {document, isLoading} = datum\n const bundleId = getReleaseIdFromReleaseDocumentId(releaseDocumentId)\n const historyDocumentId =\n datum.isPending || document?._id?.endsWith('-pending') ? undefined : document?._id\n const {documentHistory, loading} = useReleaseHistory(historyDocumentId, bundleId, document?._rev)\n\n return (\n <Flex\n {...cellProps}\n align=\"center\"\n paddingX={2}\n paddingY={3}\n style={{minWidth: 130}}\n sizing=\"border\"\n >\n <Flex align=\"center\" gap={2}>\n {/* Skeleton only while the history is actually loading — NOT whenever there is no editor.\n A settled-but-empty or failed history has loading:false and no lastEditedBy, and must\n render just the timestamp (or nothing) rather than an endless skeleton. */}\n {(isLoading || loading) && <AvatarSkeleton $size={0} animated />}\n {!isLoading && document._updatedAt && (\n <>\n {documentHistory?.lastEditedBy && (\n <UserAvatar size={0} user={documentHistory.lastEditedBy} />\n )}\n <Text muted size={1}>\n <RelativeTime time={document._updatedAt} useTemporalPhrase minimal />\n </Text>\n </>\n )}\n </Flex>\n </Flex>\n )\n}\n\n// \"Edited by\" cell: the last editor's avatar + name, resolved from the release document history.\n// Shares the EditedByAvatar presentation with the variant table so both read the same; presence\n// (who's viewing now) stays separate in the document preview.\nfunction EditedByReleaseCell({\n cellProps,\n datum,\n releaseDocumentId,\n}: {\n cellProps: InjectedTableProps\n datum: BundleDocumentRow & {isLoading?: boolean}\n releaseDocumentId: string\n}) {\n const {document, isLoading} = datum\n const bundleId = getReleaseIdFromReleaseDocumentId(releaseDocumentId)\n const historyDocumentId =\n datum.isPending || document?._id?.endsWith('-pending') ? undefined : document?._id\n const {documentHistory, loading} = useReleaseHistory(historyDocumentId, bundleId, document?._rev)\n\n return (\n <Flex {...cellProps} align=\"center\" paddingX={2} paddingY={3} sizing=\"border\">\n <EditedByAvatar loading={isLoading || loading} userId={documentHistory?.lastEditedBy} />\n </Flex>\n )\n}\n","import {type ReleaseDocument, type SanityDocument} from '@sanity/client'\nimport {AddIcon} from '@sanity/icons/Add'\nimport {useTelemetry} from '@sanity/telemetry/react'\nimport {Card, Container, Flex, Stack, Text, useToast} from '@sanity/ui'\nimport {type CSSProperties, useCallback, useEffect, useMemo, useState} from 'react'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {useWorkspace} from '../../../studio/workspace'\nimport {getVersionId} from '../../../util/draftUtils'\nimport {getDocumentVariantType} from '../../../util/getDocumentVariantType'\nimport {isCardinalityOneRelease} from '../../../util/releaseUtils'\nimport {useAllVariants} from '../../../variants/store/useAllVariants'\nimport {AddedVersion} from '../../__telemetry__/releases.telemetry'\nimport {releasesLocaleNamespace} from '../../i18n'\nimport {useReleaseOperations} from '../../store/useReleaseOperations'\nimport {getReleaseIdFromReleaseDocumentId} from '../../util/getReleaseIdFromReleaseDocumentId'\nimport {DocumentTable} from '../components/Table/DocumentTable'\nimport {Table} from '../components/Table/Table'\nimport {AddDocumentSearch, type AddedDocument} from './AddDocumentSearch'\nimport {ReleaseDocumentFilterTabs} from './components/ReleaseDocumentFilterTabs'\nimport {DocumentActions} from './documentTable/DocumentActions'\nimport {getDocumentTableColumnDefs} from './documentTable/DocumentTableColumnDefs'\nimport {searchDocumentRelease} from './documentTable/searchDocumentRelease'\nimport {type DocumentFilterType, documentMatchesFilter} from './releaseDocumentActions'\nimport {type DocumentInRelease} from './types'\n\nexport type DocumentInReleaseDetail = DocumentInRelease & {\n // TODO: Get this value from the document, it can be calculated by checking if there is a corresponding document with no version attached\n isAdded?: boolean\n}\nexport type BundleDocumentRow = DocumentInReleaseDetail\n\nexport interface ReleaseSummaryProps {\n documents: DocumentInRelease[]\n release: ReleaseDocument\n isLoading?: boolean\n}\n\nconst FULL_HEIGHT_STYLE: CSSProperties = {height: '100%'}\n\nconst SCROLL_CONTAINER_STYLE: CSSProperties = {\n overflow: 'auto',\n scrollbarWidth: 'none',\n msOverflowStyle: 'none',\n}\n\nconst FIT_CONTENT_STYLE: CSSProperties = {minWidth: 'fit-content', height: '100%'}\n\nconst isBundleDocumentRow = (\n maybeBundleDocumentRow: unknown,\n): maybeBundleDocumentRow is BundleDocumentRow =>\n !!maybeBundleDocumentRow &&\n typeof maybeBundleDocumentRow === 'object' &&\n 'memoKey' in maybeBundleDocumentRow &&\n 'document' in maybeBundleDocumentRow &&\n 'validation' in maybeBundleDocumentRow\n\nexport function ReleaseSummary(props: ReleaseSummaryProps) {\n const {documents, isLoading = false, release} = props\n const [scrollContainerRef, setScrollContainerRef] = useState<HTMLDivElement | null>(null)\n const toast = useToast()\n const {createVersion} = useReleaseOperations()\n const telemetry = useTelemetry()\n\n const [openAddDocumentDialog, setAddDocumentDialog] = useState(false)\n const [pendingAddedDocument, setPendingAddedDocument] = useState<BundleDocumentRow[]>([])\n const [activeFilter, setActiveFilter] = useState<DocumentFilterType>('all')\n\n const {t} = useTranslation(releasesLocaleNamespace)\n\n // Behind beta.variants: adopt the shared three-zone DocumentTable (command-lane search + filter\n // tabs). Otherwise keep the current table (search in the column header). No user-facing change to\n // production Releases until the flag is on.\n const {beta} = useWorkspace()\n const variantsEnabled = Boolean(beta?.variants?.enabled)\n // Resolves each document's variant (via `_system.variant._ref`) to its definition for the\n // \"Variant\" column. Provider-free + cached; returns empty when variants are disabled.\n const {byId: variantsById, loading: variantsLoading} = useAllVariants()\n\n const releaseId = getReleaseIdFromReleaseDocumentId(release._id)\n\n const renderRowActions = useCallback(\n (rowProps: {datum: BundleDocumentRow | unknown}) => {\n if (release.state !== 'active') return null\n if (!isBundleDocumentRow(rowProps.datum)) return null\n if (rowProps.datum.isPending) return null\n\n return <DocumentActions document={rowProps.datum} releaseTitle={release.metadata.title} />\n },\n [release.metadata.title, release.state],\n )\n\n const documentTableColumnDefs = useMemo(\n () =>\n getDocumentTableColumnDefs(release._id, release.state, t, {\n searchInCommandLane: variantsEnabled,\n variantsById: variantsEnabled ? variantsById : undefined,\n variantsLoading: variantsEnabled ? variantsLoading : false,\n variantsEnabled,\n }),\n [release._id, release.state, t, variantsEnabled, variantsById, variantsLoading],\n )\n\n const handleAddDocumentClick = useCallback(() => setAddDocumentDialog(true), [])\n\n const filterRows = useCallback(\n (data: DocumentInRelease[], searchTerm: string) => {\n // this is a temporary way of doing the search without the previews\n // until we have it moved to the server side\n return data.filter((doc) => {\n const matchesSearch = searchTerm ? searchDocumentRelease(doc.document, searchTerm) : true\n return matchesSearch && documentMatchesFilter(doc, activeFilter)\n })\n },\n [activeFilter],\n )\n\n const closeAddDialog = useCallback(\n async (documentToAdd?: AddedDocument) => {\n setAddDocumentDialog(false)\n if (!documentToAdd) return\n\n const versionDocumentId = getVersionId(documentToAdd._id, releaseId)\n const pendingAddedDocumentId = `${versionDocumentId}-pending`\n\n const pendingDocumentRow: DocumentInReleaseDetail = {\n memoKey: versionDocumentId,\n validation: {\n isValidating: false,\n validation: [],\n hasError: false,\n },\n document: {\n ...(documentToAdd as SanityDocument),\n _id: pendingAddedDocumentId,\n publishedDocumentExists: false,\n },\n isPending: true,\n }\n\n setPendingAddedDocument((prev) => [...prev, pendingDocumentRow])\n\n try {\n await createVersion(releaseId, documentToAdd._id)\n\n const origin = getDocumentVariantType(documentToAdd._id)\n\n telemetry.log(AddedVersion, {\n documentOrigin: origin,\n })\n } catch (error) {\n setPendingAddedDocument((prev) =>\n prev.filter(({document}) => document._id !== pendingAddedDocumentId),\n )\n\n toast.push({\n id: `add-version-to-release-${versionDocumentId}`,\n closable: true,\n status: 'error',\n title: t('toast.create-version.error', {error: error.message}),\n })\n }\n },\n [createVersion, releaseId, t, telemetry, toast],\n )\n\n useEffect(() => {\n const documentsNoLongerPending: string[] = []\n\n pendingAddedDocument?.forEach((pendingDocument) => {\n // once pending added document has been received by bundle store\n if (\n documents.find(({document}) => `${document._id}-pending` === pendingDocument.document._id)\n ) {\n documentsNoLongerPending.push(pendingDocument.document._id)\n }\n })\n\n if (documentsNoLongerPending.length)\n // cleanup all resolved added documents\n // oxlint-disable-next-line react/react-compiler\n setPendingAddedDocument((prev) =>\n prev.filter(({document}) => !documentsNoLongerPending.includes(document._id)),\n )\n }, [documents, pendingAddedDocument, t, toast])\n\n const tableData = useMemo(\n () => (pendingAddedDocument.length ? [...documents, ...pendingAddedDocument] : documents),\n [documents, pendingAddedDocument],\n )\n\n // In the DocumentTable (variants-enabled) shape, free-text search is owned by the table; the\n // caller pre-filters by the active tab and passes those rows in.\n const filterTabRows = useMemo(\n () => tableData.filter((doc) => documentMatchesFilter(doc, activeFilter)),\n [tableData, activeFilter],\n )\n\n const isCardinalityOne = isCardinalityOneRelease(release)\n const hasNoDocuments = !isLoading && documents.length === 0\n\n if (isCardinalityOne && hasNoDocuments) {\n return (\n <Flex\n direction=\"column\"\n align=\"center\"\n justify=\"center\"\n padding={5}\n style={FULL_HEIGHT_STYLE}\n data-testid=\"cardinality-one-empty-state\"\n >\n <Stack gap={3} style={{textAlign: 'center', maxWidth: '300px'}}>\n <Text size={1} weight=\"semibold\">\n {t('summary.no-documents-cardinality-one.title')}\n </Text>\n <Text size={1} muted>\n {t('summary.no-documents-cardinality-one.description')}\n </Text>\n </Stack>\n </Flex>\n )\n }\n\n // Old (non-variant) path: Add-document lives at the end of the list.\n const addDocumentFooter = release.state === 'active' && (\n <Container width={3}>\n <Card padding={3}>\n <Button\n icon={AddIcon}\n disabled={isLoading}\n mode=\"bleed\"\n onClick={handleAddDocumentClick}\n text={t('action.add-document')}\n />\n </Card>\n </Container>\n )\n\n // New (DocumentTable) path: one action lane. Activity + Share (icons) sit alongside Add document\n // (the labeled primary), so every \"do something\" control lives together at the right of the lane\n // instead of being scattered into the header.\n const addDocumentButton = release.state === 'active' && (\n <Button\n disabled={isLoading}\n icon={AddIcon}\n mode=\"ghost\"\n onClick={handleAddDocumentClick}\n text={t('action.add-document')}\n />\n )\n // The command lane hosts table operations only (Add document + search). Release-level actions\n // (Copy, Activity) live in the always-rendered header so they stay reachable when the table is\n // loading, errored, or an empty cardinality-one release and this lane is not mounted.\n const commandLaneActions = addDocumentButton || undefined\n\n // ReleaseDocumentFilterTabs renders nothing for archived/published releases or an empty\n // (non-loading) document set. Passing the element unconditionally would still read as \"tabs\n // present\" to DocumentTable, pinning search to a fixed width and stranding an empty left gutter.\n // Gate it here so the table falls back to a full-width search lane when there are no tabs to show.\n const showFilterTabs =\n release.state !== 'archived' &&\n release.state !== 'published' &&\n (isLoading || tableData.length > 0)\n\n return (\n <Flex direction=\"column\" style={FULL_HEIGHT_STYLE}>\n {variantsEnabled ? (\n <DocumentTable<DocumentInReleaseDetail>\n alwaysShowCommandLane\n columnDefs={documentTableColumnDefs}\n defaultSort={{column: 'search', direction: 'asc'}}\n emptyState={t('summary.no-documents')}\n commandLaneActions={commandLaneActions}\n filterTabs={\n showFilterTabs ? (\n <ReleaseDocumentFilterTabs\n activeFilter={activeFilter}\n documents={tableData}\n inline\n isLoading={isLoading}\n onFilterChange={setActiveFilter}\n releaseState={release.state}\n />\n ) : undefined\n }\n getRowKey={(row) => row.document._id}\n id=\"document-table-card\"\n loading={isLoading}\n rowActions={renderRowActions}\n rows={filterTabRows}\n // oxlint-disable-next-line @sanity/i18n/no-attribute-string-literals\n rowId=\"document._id\"\n searchPlaceholder={t('search-documents-placeholder')}\n searchPredicate={(row, searchTerm) => searchDocumentRelease(row.document, searchTerm)}\n searchTestId=\"release-documents-search\"\n />\n ) : (\n <>\n <ReleaseDocumentFilterTabs\n documents={tableData}\n releaseState={release.state}\n isLoading={isLoading}\n activeFilter={activeFilter}\n onFilterChange={setActiveFilter}\n />\n <Card\n ref={setScrollContainerRef}\n data-testid=\"document-table-card\"\n flex={1}\n borderTop\n style={SCROLL_CONTAINER_STYLE}\n >\n <div style={FIT_CONTENT_STYLE}>\n <Table<DocumentInReleaseDetail>\n loading={isLoading}\n data={tableData}\n emptyState={t('summary.no-documents')}\n // oxlint-disable-next-line @sanity/i18n/no-attribute-string-literals\n rowId=\"document._id\"\n columnDefs={documentTableColumnDefs}\n rowActions={renderRowActions}\n searchFilter={filterRows}\n scrollContainerRef={scrollContainerRef}\n defaultSort={{column: 'search', direction: 'asc'}}\n />\n </div>\n </Card>\n {addDocumentFooter}\n </>\n )}\n <AddDocumentSearch\n open={openAddDocumentDialog}\n onClose={closeAddDialog}\n releaseId={releaseId}\n idsInRelease={documents.map(({document}) => document._id)}\n />\n </Flex>\n )\n}\n","import {ErrorOutlineIcon} from '@sanity/icons/ErrorOutline'\nimport {Box, Card, Flex, Stack, Text} from '@sanity/ui'\nimport {motion} from 'motion/react'\nimport {useEffect, useMemo, useState} from 'react'\nimport {useRouter} from 'sanity/router'\n\nimport {LoadingBlock} from '../../../components/loadingBlock/LoadingBlock'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {useWorkspace} from '../../../studio/workspace'\nimport {releasesLocaleNamespace} from '../../i18n'\nimport {useActiveReleases} from '../../store/useActiveReleases'\nimport {useArchivedReleases} from '../../store/useArchivedReleases'\nimport {type ReleasesRouterState} from '../../types/router'\nimport {getReleaseIdFromReleaseDocumentId} from '../../util/getReleaseIdFromReleaseDocumentId'\nimport {RELEASE_NOT_FOUND_SEARCH_PARAM_KEY} from '../overview/queryParamUtils'\nimport {useReleaseEvents} from './events/useReleaseEvents'\nimport {ReleaseDashboardActivityPanel} from './ReleaseDashboardActivityPanel'\nimport {ReleaseDashboardDetails} from './ReleaseDashboardDetails'\nimport {ReleaseDashboardFooter} from './ReleaseDashboardFooter'\nimport {ReleaseDashboardHeader} from './ReleaseDashboardHeader'\nimport {ReleaseSummary} from './ReleaseSummary'\nimport {useReleaseDocuments} from './useReleaseDocuments'\n\nexport type ReleaseInspector = 'activity'\nconst MotionCard = motion.create(Card)\n\nexport function ReleaseDetail() {\n const router = useRouter()\n const [inspector, setInspector] = useState<ReleaseInspector | undefined>(undefined)\n const {t} = useTranslation(releasesLocaleNamespace)\n // Behind beta.variants the action cluster moves to the top rail and the footer is dropped.\n const variantsEnabled = Boolean(useWorkspace().beta?.variants?.enabled)\n const {releaseId: releaseIdRaw}: ReleasesRouterState = router.state\n const releaseId = decodeURIComponent(releaseIdRaw || '')\n const {data, loading} = useActiveReleases()\n const {data: archivedReleases} = useArchivedReleases()\n\n const {\n loading: documentsLoading,\n results,\n error: bundleDocumentsError,\n } = useReleaseDocuments(releaseId)\n const releaseEvents = useReleaseEvents(releaseId)\n\n const releaseInDetail = data\n .concat(archivedReleases)\n .find((candidate) => getReleaseIdFromReleaseDocumentId(candidate._id) === releaseId)\n\n const isNotFound = !loading && !releaseInDetail\n\n useEffect(() => {\n if (isNotFound) {\n router.navigate(\n {\n _searchParams: [[RELEASE_NOT_FOUND_SEARCH_PARAM_KEY, 'true']],\n },\n {replace: true},\n )\n }\n }, [isNotFound, router])\n\n const detailContent = useMemo(() => {\n if (bundleDocumentsError) {\n return (\n <Box padding={3}>\n <MotionCard\n initial={{opacity: 0}}\n animate={{opacity: 1}}\n tone=\"critical\"\n padding={4}\n radius={4}\n >\n <Flex gap={3}>\n <Text size={1}>\n <ErrorOutlineIcon />\n </Text>\n <Stack gap={4}>\n <Text size={1} weight=\"semibold\">\n {t('loading-release-documents.error.title')}\n </Text>\n <Text size={1}>{t('loading-release-documents.error.description')}</Text>\n </Stack>\n </Flex>\n </MotionCard>\n </Box>\n )\n }\n if (!releaseInDetail) return null\n\n return (\n <ReleaseSummary isLoading={documentsLoading} documents={results} release={releaseInDetail} />\n )\n }, [bundleDocumentsError, documentsLoading, releaseInDetail, results, t])\n\n if (loading) {\n return (\n <LoadingBlock\n title={t('loading-release')}\n fill\n data-testid=\"release-documents-table-loader\"\n />\n )\n }\n\n if (releaseInDetail) {\n return (\n // position:relative anchors the beta activity overlay to the whole detail pane, so the\n // right-anchored drawer covers the top action rail (Run release + menu) too — not just the\n // content below it.\n <Flex\n direction=\"column\"\n flex={1}\n height=\"fill\"\n overflow=\"hidden\"\n style={{position: 'relative'}}\n >\n <Card flex=\"none\">\n <ReleaseDashboardHeader\n documents={results}\n release={releaseInDetail}\n inspector={inspector}\n setInspector={setInspector}\n />\n </Card>\n\n <Flex flex={1}>\n <Flex direction=\"column\" flex={1} height=\"fill\">\n <Card flex={1} overflow=\"auto\">\n <ReleaseDashboardDetails\n release={releaseInDetail}\n documents={results}\n events={releaseEvents.events}\n loading={documentsLoading}\n />\n {detailContent}\n </Card>\n\n {/* In beta the footer's action cluster moved to the top rail and its Created status\n moved into the properties panel, so the footer is dropped entirely. */}\n {!variantsEnabled && (\n <ReleaseDashboardFooter\n documents={results}\n release={releaseInDetail}\n events={releaseEvents.events}\n />\n )}\n </Flex>\n\n {/* Production: activity is an in-flow panel that pushes the content column aside. */}\n {!variantsEnabled && (\n <ReleaseDashboardActivityPanel\n events={releaseEvents}\n release={releaseInDetail}\n show={inspector === 'activity'}\n />\n )}\n </Flex>\n\n {/* Beta: activity floats as a right-anchored drawer over the entire pane (covering the\n rail), rather than pushing the layout. */}\n {variantsEnabled && (\n <ReleaseDashboardActivityPanel\n events={releaseEvents}\n release={releaseInDetail}\n show={inspector === 'activity'}\n overlay\n onClose={() => setInspector(undefined)}\n />\n )}\n </Flex>\n )\n }\n\n return null\n}\n","import {useEffect} from 'react'\n\nimport {useReleasesMetadataProvider} from '../contexts/ReleasesMetadataProvider'\n\nexport interface ReleasesMetadata {\n /**\n * The number of documents with the release version as a prefix\n */\n documentCount: number\n /**\n * The last time a document in the release was edited\n */\n updatedAt: string | null\n}\n\nexport const useReleasesMetadata = (releaseIds: string[]) => {\n const {\n addReleaseIdsToListener: addBundleIdsToListener,\n removeReleaseIdsFromListener: removeBundleIdsFromListener,\n state,\n } = useReleasesMetadataProvider()\n\n useEffect(() => {\n if (releaseIds.length) addBundleIdsToListener([...new Set(releaseIds)])\n\n return () => removeBundleIdsFromListener([...new Set(releaseIds)])\n }, [addBundleIdsToListener, releaseIds, removeBundleIdsFromListener])\n\n const {data, loading} = state\n\n let responseData = null\n\n if (data) {\n const hasUpdatedMetadata =\n !responseData || Object.entries(responseData).some(([key, value]) => value !== data[key])\n\n if (hasUpdatedMetadata) {\n responseData = Object.fromEntries(releaseIds.map((releaseId) => [releaseId, data[releaseId]]))\n }\n }\n\n return {\n error: state.error,\n // loading is only for initial load\n // changing listened to release IDs will not cause a re-load\n loading,\n data: responseData,\n }\n}\n","import {FilterIcon} from '@sanity/icons/Filter'\n// oxlint-disable-next-line no-restricted-imports\nimport {Button, useClickOutsideEvent} from '@sanity/ui'\nimport {type ReactNode, useRef, useState} from 'react'\n\nimport {Dialog} from '../../../../ui-components/dialog/Dialog'\nimport {Popover} from '../../../../ui-components/popover/Popover'\nimport {Tooltip} from '../../../../ui-components/tooltip/Tooltip'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {releasesLocaleNamespace} from '../../i18n'\n\nexport function CalendarPopover({content, asDialog}: {content: ReactNode; asDialog?: boolean}) {\n const buttonRef = useRef<HTMLButtonElement | null>(null)\n const popoverRef = useRef<HTMLDivElement | null>(null)\n const [isCalendarOpen, setIsCalendarOpen] = useState(false)\n const {t} = useTranslation(releasesLocaleNamespace)\n\n useClickOutsideEvent(\n () => {\n if (!asDialog) setIsCalendarOpen(false)\n },\n () => [buttonRef.current, popoverRef.current],\n )\n\n const triggerButton = (\n <Tooltip content={t('overview.calendar.tooltip')}>\n <Button\n name=\"calendar\"\n data-as=\"a\"\n icon={FilterIcon}\n mode=\"bleed\"\n padding={2}\n radius=\"full\"\n selected={isCalendarOpen}\n onClick={() => setIsCalendarOpen((prev) => !prev)}\n ref={buttonRef}\n gap={2}\n />\n </Tooltip>\n )\n\n if (asDialog) {\n return (\n <>\n {triggerButton}\n {isCalendarOpen && (\n <Dialog\n id=\"calendar-filter-dialog\"\n header={t('overview.calendar.tooltip')}\n onClose={() => setIsCalendarOpen(false)}\n onClickOutside={() => setIsCalendarOpen(false)}\n width={1}\n padding={false}\n >\n {content}\n </Dialog>\n )}\n </>\n )\n }\n\n return (\n <Popover content={content} placement=\"bottom\" open={isCalendarOpen} ref={popoverRef}>\n {triggerButton}\n </Popover>\n )\n}\n","import {type ReleaseDocument} from '@sanity/client'\nimport {CalendarIcon} from '@sanity/icons/Calendar'\nimport {ChevronDownIcon} from '@sanity/icons/ChevronDown'\nimport {useTelemetry} from '@sanity/telemetry/react'\nimport {Flex, Menu, Text} from '@sanity/ui'\nimport {useCallback, useMemo} from 'react'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {MenuButton} from '../../../../ui-components/menuButton/MenuButton'\nimport {MenuItem} from '../../../../ui-components/menuItem/MenuItem'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {isCardinalityOneRelease} from '../../../util/releaseUtils'\nimport {\n NavigatedToReleasesOverview,\n NavigatedToScheduledDrafts,\n} from '../../__telemetry__/navigation.telemetry'\nimport {releasesLocaleNamespace} from '../../i18n'\nimport {type CardinalityView} from './queryParamUtils'\n\ninterface CardinalityViewPickerProps {\n cardinalityView: CardinalityView\n loading: boolean\n isScheduledDraftsEnabled: boolean\n isDraftModelEnabled: boolean\n isReleasesEnabled: boolean\n allReleases: ReleaseDocument[]\n onCardinalityViewChange: (view: CardinalityView) => () => void\n}\n\nconst getPickerView = ({\n hasSingleDocRelease,\n isScheduledDraftsEnabled,\n isReleasesEnabled,\n cardinalityView,\n isDraftModelEnabled,\n}: {\n hasSingleDocRelease: boolean\n isScheduledDraftsEnabled: boolean\n isReleasesEnabled: boolean\n cardinalityView: CardinalityView\n isDraftModelEnabled: boolean\n}): 'contentReleases' | 'singleDocReleases' | 'both' => {\n if (isReleasesEnabled) {\n if (hasSingleDocRelease || (isScheduledDraftsEnabled && isDraftModelEnabled)) return 'both'\n return cardinalityView === 'drafts' ? 'both' : 'contentReleases'\n }\n\n return cardinalityView === 'releases' ? 'both' : 'singleDocReleases'\n}\n\nexport const CardinalityViewPicker = ({\n cardinalityView,\n loading,\n isScheduledDraftsEnabled,\n isReleasesEnabled,\n isDraftModelEnabled,\n allReleases,\n onCardinalityViewChange,\n}: CardinalityViewPickerProps) => {\n const {t} = useTranslation(releasesLocaleNamespace)\n const telemetry = useTelemetry()\n\n const hasSingleDocRelease = useMemo(\n () => allReleases.some(isCardinalityOneRelease),\n [allReleases],\n )\n\n const pickerView = getPickerView({\n hasSingleDocRelease,\n isScheduledDraftsEnabled,\n isReleasesEnabled,\n cardinalityView,\n isDraftModelEnabled,\n })\n\n const handleViewChange = useCallback(\n (view: CardinalityView) => () => {\n const telemetryEvent =\n view === 'releases' ? NavigatedToReleasesOverview : NavigatedToScheduledDrafts\n telemetry.log(telemetryEvent, {source: 'view-picker'})\n\n onCardinalityViewChange(view)()\n },\n [telemetry, onCardinalityViewChange],\n )\n\n // If only one is enabled, show the label\n if (pickerView === 'contentReleases' || pickerView === 'singleDocReleases') {\n return (\n <Flex align=\"center\" gap={2}>\n <CalendarIcon />\n <Text size={1} weight=\"semibold\">\n {pickerView === 'contentReleases' ? t('action.releases') : t('action.drafts')}\n </Text>\n </Flex>\n )\n }\n\n // If both are enabled, show the menu button\n return (\n <MenuButton\n id=\"cardinality-view-menu\"\n button={\n <Button\n mode=\"bleed\"\n paddingY={2}\n text={cardinalityView === 'releases' ? t('action.releases') : t('action.drafts')}\n icon={CalendarIcon}\n iconRight={ChevronDownIcon}\n disabled={loading}\n style={{fontWeight: 600}}\n />\n }\n menu={\n <Menu>\n <MenuItem\n text={t('action.releases')}\n selected={cardinalityView === 'releases'}\n onClick={handleViewChange('releases')}\n />\n <MenuItem\n text={t('action.drafts')}\n selected={cardinalityView === 'drafts'}\n onClick={handleViewChange('drafts')}\n />\n </Menu>\n }\n />\n )\n}\n","import {type ReleaseDocument, type ScheduleReleaseAction} from '@sanity/client'\nimport {Stack, Text, useToast} from '@sanity/ui'\nimport {isPast} from 'date-fns/isPast'\nimport {useCallback, useMemo, useState} from 'react'\n\nimport {Dialog} from '../../../../ui-components/dialog/Dialog'\nimport {useClient} from '../../../hooks/useClient'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {releasesLocaleNamespace} from '../../i18n'\nimport {getReleaseIdFromReleaseDocumentId} from '../../util/getReleaseIdFromReleaseDocumentId'\nimport {RELEASES_STUDIO_CLIENT_OPTIONS} from '../../util/releasesClient'\n\ninterface ConfirmScheduledDraftsDialogProps {\n activeScheduledDrafts: ReleaseDocument[]\n onClose: () => void\n}\n\n/**\n * Batches all schedule actions into a single server action\n */\nfunction useScheduleActiveDrafts() {\n const client = useClient(RELEASES_STUDIO_CLIENT_OPTIONS)\n\n const scheduleActiveDrafts = useCallback(\n async (releases: ReleaseDocument[]) => {\n const scheduleActions: ScheduleReleaseAction[] = releases.flatMap((release) => {\n if (!release.metadata.intendedPublishAt) return []\n\n return [\n {\n actionType: 'sanity.action.release.schedule',\n releaseId: getReleaseIdFromReleaseDocumentId(release._id),\n publishAt: new Date(release.metadata.intendedPublishAt).toISOString(),\n },\n ]\n })\n\n await client.action(scheduleActions)\n },\n [client],\n )\n\n return {scheduleActiveDrafts}\n}\n\nexport function ConfirmScheduledDraftsDialog({\n activeScheduledDrafts,\n onClose,\n}: ConfirmScheduledDraftsDialogProps) {\n const {t} = useTranslation(releasesLocaleNamespace)\n const toast = useToast()\n const {scheduleActiveDrafts} = useScheduleActiveDrafts()\n const [isScheduling, setIsScheduling] = useState(false)\n\n const hasPastDates = useMemo(\n () =>\n activeScheduledDrafts.some(\n (release) =>\n release.metadata.intendedPublishAt &&\n isPast(new Date(release.metadata.intendedPublishAt)),\n ),\n [activeScheduledDrafts],\n )\n\n const handleConfirmSchedules = useCallback(async () => {\n setIsScheduling(true)\n\n try {\n await scheduleActiveDrafts(activeScheduledDrafts)\n onClose()\n } catch (error) {\n toast.push({\n status: 'error',\n title: t('toast.confirm-active-scheduled-drafts.error', {error: error.message}),\n })\n }\n setIsScheduling(false)\n }, [activeScheduledDrafts, scheduleActiveDrafts, onClose, toast, t])\n\n return (\n <Dialog\n id=\"confirm-active-scheduled-drafts-dialog\"\n header={t('confirm-active-scheduled-drafts-dialog.title')}\n onClose={onClose}\n width={0}\n footer={{\n confirmButton: {\n text: t('confirm-active-scheduled-drafts-dialog.confirm-button'),\n tone: 'primary',\n onClick: handleConfirmSchedules,\n loading: isScheduling,\n disabled: isScheduling,\n },\n }}\n >\n <Stack gap={3}>\n <Text size={1} muted>\n {t('confirm-active-scheduled-drafts-dialog.description')}\n </Text>\n {hasPastDates && (\n <Text size={1} muted>\n {t('confirm-active-scheduled-drafts-dialog.past-dates-warning')}\n </Text>\n )}\n </Stack>\n </Dialog>\n )\n}\n","import {type ReleaseDocument} from '@sanity/client'\nimport {WarningOutlineIcon} from '@sanity/icons/WarningOutline'\nimport {Box, Card, Flex, Text} from '@sanity/ui'\nimport {useCallback, useMemo, useState} from 'react'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {Translate} from '../../../i18n/Translate'\nimport {isCardinalityOneRelease} from '../../../util/releaseUtils'\nimport {releasesLocaleNamespace} from '../../i18n'\nimport {ConfirmScheduledDraftsDialog} from './ConfirmScheduledDraftsDialog'\nimport {type Mode} from './queryParamUtils'\n\ninterface ConfirmActiveScheduledDraftsBannerProps {\n releases: ReleaseDocument[]\n releaseGroupMode: Mode\n hasDateFilter: boolean\n onNavigateToPaused: () => void\n}\n\n/**\n * Active drafts are those with state='active' and cardinality='one'\n */\nexport function ConfirmActiveScheduledDraftsBanner({\n releases,\n releaseGroupMode,\n hasDateFilter,\n onNavigateToPaused,\n}: ConfirmActiveScheduledDraftsBannerProps) {\n const {t} = useTranslation(releasesLocaleNamespace)\n const [isDialogOpen, setIsDialogOpen] = useState(false)\n\n const activeScheduledDrafts = useMemo(\n () =>\n releases.filter((release) => release.state === 'active' && isCardinalityOneRelease(release)),\n [releases],\n )\n\n const shouldOpenDialog = releaseGroupMode === 'paused' && !hasDateFilter\n\n const handleCloseDialog = useCallback(() => {\n setIsDialogOpen(false)\n }, [])\n\n const handleClick = useCallback(\n () => (shouldOpenDialog ? setIsDialogOpen(true) : onNavigateToPaused()),\n [shouldOpenDialog, onNavigateToPaused],\n )\n\n if (activeScheduledDrafts.length === 0) {\n return null\n }\n\n const buttonText = shouldOpenDialog\n ? t('banner.confirm-active-scheduled-drafts.button-paused')\n : t('banner.confirm-active-scheduled-drafts.button')\n\n return (\n <>\n <Box flex=\"none\" padding={1} marginBottom={4}>\n <Card radius={3} paddingX={2} paddingY={2} tone=\"caution\">\n <Flex align=\"center\" gap={3} paddingX={2}>\n <Text size={0}>\n <WarningOutlineIcon />\n </Text>\n <Flex align=\"center\" flex={1} gap={2} paddingY={2}>\n <Text size={1} weight=\"medium\">\n <Translate\n t={t}\n i18nKey=\"banner.confirm-active-scheduled-drafts\"\n values={{count: activeScheduledDrafts.length}}\n />\n </Text>\n </Flex>\n <Flex flex=\"none\">\n <Button text={buttonText} mode=\"bleed\" tone=\"caution\" onClick={handleClick} />\n </Flex>\n </Flex>\n </Card>\n </Box>\n\n {isDialogOpen && (\n <ConfirmScheduledDraftsDialog\n activeScheduledDrafts={activeScheduledDrafts}\n onClose={handleCloseDialog}\n />\n )}\n </>\n )\n}\n","import {type ReleaseDocument} from '@sanity/client'\nimport {WarningOutlineIcon} from '@sanity/icons/WarningOutline'\nimport {Box, Card, Flex, Text} from '@sanity/ui'\nimport {useMemo} from 'react'\n\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {isCardinalityOneRelease} from '../../../util/releaseUtils'\nimport {releasesLocaleNamespace} from '../../i18n'\n\ninterface DraftsDisabledBannerProps {\n isDraftModelEnabled: boolean\n isScheduledDraftsEnabled: boolean\n allReleases: ReleaseDocument[]\n}\n\n/**\n * Banner that shows when viewing drafts but either drafts mode or scheduled drafts are disabled\n */\nexport const DraftsDisabledBanner = ({\n isDraftModelEnabled,\n isScheduledDraftsEnabled,\n allReleases,\n}: DraftsDisabledBannerProps) => {\n const {t} = useTranslation(releasesLocaleNamespace)\n const hasSingleDocRelease = useMemo(\n () => allReleases.some(isCardinalityOneRelease),\n [allReleases],\n )\n const shouldShowBanner =\n (!isDraftModelEnabled || !isScheduledDraftsEnabled) && hasSingleDocRelease\n\n if (!shouldShowBanner) return null\n\n const getBannerMessage = () =>\n isScheduledDraftsEnabled\n ? t('banner.drafts-mode-disabled')\n : t('banner.scheduled-drafts-disabled')\n\n return (\n <Box padding={1} marginBottom={4}>\n <Card radius={3} paddingX={2} paddingY={2} tone=\"caution\">\n <Flex align=\"center\" gap={3} paddingX={2}>\n <Text size={0}>\n <WarningOutlineIcon />\n </Text>\n <Flex align=\"center\" flex={1} gap={2} paddingY={2}>\n <Text size={1} weight=\"medium\">\n {getBannerMessage()}\n </Text>\n </Flex>\n </Flex>\n </Card>\n </Box>\n )\n}\n","import {endOfDay} from 'date-fns/endOfDay'\nimport {startOfDay} from 'date-fns/startOfDay'\nimport {useCallback} from 'react'\n\nimport {useTimeZone} from '../../../hooks/useTimeZone'\nimport {CONTENT_RELEASES_TIME_ZONE_SCOPE} from '../../../studio/constants'\n\nexport const useTimezoneAdjustedDateTimeRange = (): ((date: Date) => [Date, Date]) => {\n const {zoneDateToUtc} = useTimeZone(CONTENT_RELEASES_TIME_ZONE_SCOPE)\n\n return useCallback(\n (date: Date) => [startOfDay(date), endOfDay(date)].map(zoneDateToUtc) as [Date, Date],\n [zoneDateToUtc],\n )\n}\n","import {CloseIcon} from '@sanity/icons/Close'\nimport {format} from 'date-fns/format'\nimport {AnimatePresence, motion} from 'motion/react'\nimport {useMemo, useState} from 'react'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {\n CalendarDay,\n type CalendarDayProps,\n} from '../../../components/inputs/DateFilters/calendar/CalendarDay'\nimport {type CalendarProps} from '../../../components/inputs/DateFilters/calendar/CalendarFilter'\nimport {useActiveReleases} from '../../store/useActiveReleases'\nimport {shouldShowReleaseInView} from '../../util/util'\nimport {type CardinalityView} from './queryParamUtils'\nimport {useTimezoneAdjustedDateTimeRange} from './useTimezoneAdjustedDateTimeRange'\n\nconst ReleaseCalendarFilterDayWithCardinality = (\n props: CalendarDayProps & {\n cardinalityView: CardinalityView\n },\n): React.ReactNode => {\n const {data: allReleases} = useActiveReleases()\n const getTimezoneAdjustedDateTimeRange = useTimezoneAdjustedDateTimeRange()\n\n const {date, cardinalityView, ...calendarDayProps} = props\n\n const [startOfDayForTimeZone, endOfDayForTimeZone] = getTimezoneAdjustedDateTimeRange(date)\n\n const releases = allReleases?.filter(shouldShowReleaseInView(cardinalityView))\n\n const dayHasReleases = releases?.some((release) => {\n const releasePublishAt = release.publishAt || release.metadata.intendedPublishAt\n if (!releasePublishAt) return false\n\n const publishDateUTC = new Date(releasePublishAt)\n\n return (\n release.metadata.releaseType === 'scheduled' &&\n publishDateUTC >= startOfDayForTimeZone &&\n publishDateUTC <= endOfDayForTimeZone\n )\n })\n\n return (\n <CalendarDay\n {...calendarDayProps}\n date={date}\n dateStyles={dayHasReleases ? {fontWeight: 700} : {}}\n />\n )\n}\n\nexport const createReleaseCalendarFilterDay = (\n cardinalityView: CardinalityView,\n): CalendarProps['renderCalendarDay'] => {\n const ReleaseCalendarFilterDayComponent = (props: CalendarDayProps) => (\n <ReleaseCalendarFilterDayWithCardinality {...props} cardinalityView={cardinalityView} />\n )\n ReleaseCalendarFilterDayComponent.displayName = 'ReleaseCalendarFilterDayComponent'\n return ReleaseCalendarFilterDayComponent\n}\n\nconst MotionButton = motion.create(Button)\n\nexport const DateFilterButton = ({\n filterDate,\n onClear,\n}: {\n filterDate: Date\n onClear: () => void\n}) => {\n const [isExiting, setIsExiting] = useState(false)\n\n const handleOnExitComplete = useMemo(\n () => () => {\n setIsExiting(false)\n onClear()\n },\n [onClear],\n )\n\n if (!filterDate) return null\n\n return (\n <AnimatePresence onExitComplete={handleOnExitComplete}>\n {!isExiting && (\n <MotionButton\n data-testid=\"selected-date-filter\"\n initial={{width: 0, opacity: 0}}\n animate={{width: 'auto', opacity: 1}}\n exit={{width: 0, opacity: 0}}\n transition={{duration: 0.35, ease: 'easeInOut'}}\n iconRight={CloseIcon}\n mode=\"bleed\"\n onClick={() => setIsExiting(true)}\n selected\n text={format(filterDate, 'PPP')}\n />\n )}\n </AnimatePresence>\n )\n}\n","import {type ReleaseDocument} from '@sanity/client'\n\nimport {getReleaseIdFromReleaseDocumentId} from '../../util/getReleaseIdFromReleaseDocumentId'\nimport {ReleaseMenuButton} from '../components/ReleaseMenuButton/ReleaseMenuButton'\nimport {useReleaseDocuments} from '../detail/useReleaseDocuments'\n\nexport const ReleaseMenuButtonWrapper = ({\n release,\n documentsCount,\n}: {\n release: ReleaseDocument\n documentsCount: number\n}) => {\n const {results: documents} = useReleaseDocuments(getReleaseIdFromReleaseDocumentId(release._id))\n\n return (\n <ReleaseMenuButton release={release} documentsCount={documentsCount} documents={documents} />\n )\n}\n","import {CloseIcon} from '@sanity/icons/Close'\nimport {WarningOutlineIcon} from '@sanity/icons/WarningOutline'\nimport {Box, Card, Flex, Text} from '@sanity/ui'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {releasesLocaleNamespace} from '../../i18n'\n\ninterface ReleaseNotFoundBannerProps {\n onDismiss: () => void\n}\n\nexport function ReleaseNotFoundBanner({onDismiss}: ReleaseNotFoundBannerProps) {\n const {t} = useTranslation(releasesLocaleNamespace)\n\n return (\n <Box flex=\"none\" padding={1} marginBottom={4}>\n <Card radius={3} paddingX={2} paddingY={2} tone=\"caution\">\n <Flex align=\"center\" gap={3} paddingX={2}>\n <Text size={0}>\n <WarningOutlineIcon />\n </Text>\n <Box flex={1} paddingY={2}>\n <Text size={1} weight=\"medium\">\n {t('banner.release-not-found')}\n </Text>\n </Box>\n <Button\n icon={CloseIcon}\n mode=\"bleed\"\n onClick={onDismiss}\n tooltipProps={{content: t('banner.release-not-found.dismiss')}}\n />\n </Flex>\n </Card>\n </Box>\n )\n}\n","export const ReleaseIllustration = () => {\n return (\n <svg\n data-testid=\"release-illustration\"\n width=\"248\"\n height=\"201\"\n viewBox=\"0 0 248 201\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n opacity=\"0.2\"\n d=\"M175.4 29.8262V98.1738C175.4 103.823 181.346 107.498 186.399 104.971L222.399 86.9714C224.974 85.684 226.6 83.0524 226.6 80.1738V11.8262C226.6 6.17654 220.654 2.50197 215.601 5.02859L179.601 23.0286C177.026 24.316 175.4 26.9476 175.4 29.8262Z\"\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth=\"1.2\"\n />\n <path\n opacity=\"0.2\"\n d=\"M183.4 33.8262V102.174C183.4 107.823 189.346 111.498 194.399 108.971L230.399 90.9714C232.974 89.684 234.6 87.0524 234.6 84.1738V15.8262C234.6 10.1765 228.654 6.50197 223.601 9.02859L187.601 27.0286C185.026 28.316 183.4 30.9476 183.4 33.8262Z\"\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth=\"1.2\"\n />\n <path\n opacity=\"0.2\"\n d=\"M195.4 39.8262V108.174C195.4 113.823 201.346 117.498 206.399 114.971L242.399 96.9714C244.974 95.684 246.6 93.0524 246.6 90.1738V21.8262C246.6 16.1765 240.654 12.502 235.601 15.0286L199.601 33.0286C197.026 34.316 195.4 36.9476 195.4 39.8262Z\"\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth=\"1.2\"\n />\n <path\n opacity=\"0.6\"\n d=\"M109.4 50.8262V119.174C109.4 124.823 115.346 128.498 120.399 125.971L156.399 107.971C158.974 106.684 160.6 104.052 160.6 101.174V32.8262C160.6 27.1765 154.654 23.502 149.601 26.0286L113.601 44.0286C111.026 45.316 109.4 47.9476 109.4 50.8262Z\"\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth=\"1.2\"\n />\n <path\n opacity=\"0.9\"\n d=\"M118 123.174V54.8262C118 52.1748 119.498 49.751 121.87 48.5653L157.87 30.5652C162.524 28.2381 168 31.6226 168 36.8262V105.174C168 107.825 166.502 110.249 164.131 111.435L128.13 129.435C123.476 131.762 118 128.377 118 123.174Z\"\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth=\"1.2\"\n />\n <path\n opacity=\"0.2\"\n d=\"M121.4 56.8262V125.174C121.4 130.823 127.346 134.498 132.399 131.971L168.399 113.971C170.974 112.684 172.6 110.052 172.6 107.174V38.8262C172.6 33.1765 166.654 29.502 161.601 32.0286L125.601 50.0286C123.026 51.316 121.4 53.9476 121.4 56.8262Z\"\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth=\"1.2\"\n />\n <path\n opacity=\"0.2\"\n d=\"M125.4 58.8262V127.174C125.4 132.823 131.346 136.498 136.399 133.971L172.399 115.971C174.974 114.684 176.6 112.052 176.6 109.174V40.8262C176.6 35.1765 170.654 31.502 165.601 34.0286L129.601 52.0286C127.026 53.316 125.4 55.9476 125.4 58.8262Z\"\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth=\"1.2\"\n />\n <path\n opacity=\"0.2\"\n d=\"M137.4 64.8262V133.174C137.4 138.823 143.346 142.498 148.399 139.971L184.399 121.971C186.974 120.684 188.6 118.052 188.6 115.174V46.8262C188.6 41.1765 182.654 37.502 177.601 40.0286L141.601 58.0286C139.026 59.316 137.4 61.9476 137.4 64.8262Z\"\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth=\"1.2\"\n />\n <path\n opacity=\"0.2\"\n d=\"M145.4 68.8262V137.174C145.4 142.823 151.346 146.498 156.399 143.971L192.399 125.971C194.974 124.684 196.6 122.052 196.6 119.174V50.8262C196.6 45.1765 190.654 41.502 185.601 44.0286L149.601 62.0286C147.026 63.316 145.4 65.9476 145.4 68.8262Z\"\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth=\"1.2\"\n />\n <path\n opacity=\"0.6\"\n d=\"M1.4 104.826V173.174C1.4 178.823 7.34557 182.498 12.3988 179.971L48.3988 161.971C50.9736 160.684 52.6 158.052 52.6 155.174V86.8262C52.6 81.1765 46.6544 77.502 41.6012 80.0286L5.60117 98.0286C3.02641 99.316 1.4 101.948 1.4 104.826Z\"\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth=\"1.2\"\n />\n <path\n opacity=\"0.6\"\n d=\"M56.6 146.174V77.8262C56.6 75.4021 57.9696 73.186 60.1378 72.1019L96.1378 54.1019C100.393 51.9742 105.4 55.0686 105.4 59.8262V128.174C105.4 130.598 104.03 132.814 101.862 133.898L65.8622 151.898C61.6068 154.026 56.6 150.931 56.6 146.174Z\"\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth=\"1.2\"\n />\n <path\n opacity=\"0.8\"\n d=\"M60.6 148.174V79.8262C60.6 77.4021 61.9696 75.186 64.1378 74.1019L100.138 56.1019C104.393 53.9742 109.4 57.0686 109.4 61.8262V130.174C109.4 132.598 108.03 134.814 105.862 135.898L69.8622 153.898C65.6068 156.026 60.6 152.931 60.6 148.174Z\"\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth=\"1.2\"\n />\n <path\n opacity=\"0.9\"\n d=\"M64 150.174V81.8262C64 79.1748 65.498 76.751 67.8695 75.5653L103.87 57.5652C108.524 55.2381 114 58.6226 114 63.8262V132.174C114 134.825 112.502 137.249 110.131 138.435L74.1305 156.435C69.4762 158.762 64 155.377 64 150.174Z\"\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth=\"1.2\"\n />\n <path\n opacity=\"0.2\"\n d=\"M72.6 154.174V85.8262C72.6 83.4021 73.9696 81.186 76.1378 80.1019L112.138 62.1019C116.393 59.9742 121.4 63.0686 121.4 67.8262V136.174C121.4 138.598 120.03 140.814 117.862 141.898L81.8622 159.898C77.6068 162.026 72.6 158.931 72.6 154.174Z\"\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth=\"1.2\"\n />\n <path\n opacity=\"0.2\"\n d=\"M76.6 156.174V87.8262C76.6 85.4021 77.9696 83.186 80.1378 82.1019L116.138 64.1019C120.393 61.9742 125.4 65.0686 125.4 69.8262V138.174C125.4 140.598 124.03 142.814 121.862 143.898L85.8622 161.898C81.6068 164.026 76.6 160.931 76.6 156.174Z\"\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth=\"1.2\"\n />\n <path\n opacity=\"0.2\"\n d=\"M84.6 160.174V91.8262C84.6 89.4021 85.9696 87.186 88.1378 86.1019L124.138 68.1019C128.393 65.9742 133.4 69.0686 133.4 73.8262V142.174C133.4 144.598 132.03 146.814 129.862 147.898L93.8622 165.898C89.6068 168.026 84.6 164.931 84.6 160.174Z\"\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth=\"1.2\"\n />\n <path\n opacity=\"0.2\"\n d=\"M88.6 162.174V93.8262C88.6 91.4021 89.9696 89.186 92.1378 88.1019L128.138 70.1019C132.393 67.9742 137.4 71.0686 137.4 75.8262V144.174C137.4 146.598 136.03 148.814 133.862 149.898L97.8622 167.898C93.6068 170.026 88.6 166.931 88.6 162.174Z\"\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth=\"1.2\"\n />\n <path\n opacity=\"0.2\"\n d=\"M92.6 164.174V95.8262C92.6 93.4021 93.9696 91.186 96.1378 90.1019L132.138 72.1019C136.393 69.9742 141.4 73.0686 141.4 77.8262V146.174C141.4 148.598 140.03 150.814 137.862 151.898L101.862 169.898C97.6068 172.026 92.6 168.931 92.6 164.174Z\"\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth=\"1.2\"\n />\n <path\n opacity=\"0.2\"\n d=\"M96.6 166.174V97.8262C96.6 95.4021 97.9696 93.186 100.138 92.1019L136.138 74.1019C140.393 71.9742 145.4 75.0686 145.4 79.8262V148.174C145.4 150.598 144.03 152.814 141.862 153.898L105.862 171.898C101.607 174.026 96.6 170.931 96.6 166.174Z\"\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth=\"1.2\"\n />\n <path\n opacity=\"0.2\"\n d=\"M104.6 170.174V101.826C104.6 99.4021 105.97 97.186 108.138 96.1019L144.138 78.1019C148.393 75.9742 153.4 79.0686 153.4 83.8262V152.174C153.4 154.598 152.03 156.814 149.862 157.898L113.862 175.898C109.607 178.026 104.6 174.931 104.6 170.174Z\"\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth=\"1.2\"\n />\n <path\n opacity=\"0.8\"\n d=\"M5.4 106.826V175.174C5.4 180.823 11.3456 184.498 16.3988 181.971L52.3988 163.971C54.9736 162.684 56.6 160.052 56.6 157.174V88.8262C56.6 83.1765 50.6544 79.502 45.6012 82.0286L9.60117 100.029C7.02641 101.316 5.4 103.948 5.4 106.826Z\"\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth=\"1.2\"\n />\n <path\n opacity=\"0.9\"\n d=\"M10 177.174V108.826C10 106.175 11.498 103.751 13.8695 102.565L49.8695 84.5652C54.5238 82.2381 60 85.6226 60 90.8262V159.174C60 161.825 58.502 164.249 56.1305 165.435L20.1305 183.435C15.4762 185.762 10 182.377 10 177.174Z\"\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth=\"1.2\"\n />\n <path\n opacity=\"0.2\"\n d=\"M13.4 110.826V179.174C13.4 184.823 19.3456 188.498 24.3988 185.971L60.3988 167.971C62.9736 166.684 64.6 164.052 64.6 161.174V92.8262C64.6 87.1765 58.6544 83.502 53.6012 86.0286L17.6012 104.029C15.0264 105.316 13.4 107.948 13.4 110.826Z\"\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth=\"1.2\"\n />\n <path\n opacity=\"0.2\"\n d=\"M29.4 118.826V187.174C29.4 192.823 35.3456 196.498 40.3988 193.971L76.3988 175.971C78.9736 174.684 80.6 172.052 80.6 169.174V100.826C80.6 95.1765 74.6544 91.502 69.6012 94.0286L33.6012 112.029C31.0264 113.316 29.4 115.948 29.4 118.826Z\"\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth=\"1.2\"\n />\n <path\n opacity=\"0.2\"\n d=\"M33.4 120.826V189.174C33.4 194.823 39.3456 198.498 44.3988 195.971L80.3988 177.971C82.9736 176.684 84.6 174.052 84.6 171.174V102.826C84.6 97.1765 78.6544 93.502 73.6012 96.0286L37.6012 114.029C35.0264 115.316 33.4 117.948 33.4 120.826Z\"\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth=\"1.2\"\n />\n </svg>\n )\n}\n","import {Flex, Inline, Text} from '@sanity/ui'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {useReleasesUpsell} from '../../contexts/upsell/useReleasesUpsell'\nimport {releasesLocaleNamespace} from '../../i18n'\nimport {ReleaseIllustration} from '../resources/ReleaseIllustration'\n\ninterface ReleasesEmptyStateProps {\n createReleaseButton?: React.ReactNode\n}\n\nexport const ReleasesEmptyState = ({createReleaseButton}: ReleasesEmptyStateProps) => {\n const {t} = useTranslation(releasesLocaleNamespace)\n const {mode} = useReleasesUpsell()\n\n if (mode === 'upsell') {\n return null\n }\n\n return (\n <Flex direction=\"column\" flex={1} justify={'center'} align={'center'}>\n <Flex gap={3} direction=\"column\" align=\"center\" style={{maxWidth: '300px'}}>\n <ReleaseIllustration />\n <Text as=\"h1\" size={1} weight=\"semibold\" data-testid=\"no-releases-info-text\">\n {t('overview.title')}\n </Text>\n <Text size={1} muted style={{textAlign: 'center'}}>\n {t('overview.description')}\n </Text>\n <Inline gap={2}>\n {createReleaseButton}\n <Button\n as=\"a\"\n href=\"https://www.sanity.io/docs/content-releases\"\n target=\"_blank\"\n mode=\"ghost\"\n text={t('overview.action.documentation')}\n />\n </Inline>\n </Flex>\n </Flex>\n )\n}\n","import {Spinner} from '@sanity/ui'\n\nimport {getReleaseIdFromReleaseDocumentId} from '../../../util/getReleaseIdFromReleaseDocumentId'\nimport {useReleaseDocuments} from '../../detail/useReleaseDocuments'\nimport {ValidationProgressIndicator} from '../../detail/ValidationProgressIndicator'\n\nexport function ReleaseColumnValidationLoading({releaseId}: {releaseId: string}) {\n const rId = getReleaseIdFromReleaseDocumentId(releaseId)\n const {results: documents, loading} = useReleaseDocuments(rId)\n\n return loading ? (\n <Spinner size={1} muted />\n ) : (\n <ValidationProgressIndicator layout=\"minimal\" documents={documents} />\n )\n}\n","import {Text} from '@sanity/ui'\n\ntype Props = {\n documentCount: number | undefined\n}\n\nexport const ReleaseDocumentsCounter = ({documentCount}: Props) => (\n <Text muted size={1}>\n {documentCount || '-'}\n </Text>\n)\n","import {PinIcon} from '@sanity/icons/Pin'\nimport {PinFilledIcon} from '@sanity/icons/PinFilled'\nimport {Box, Card, Flex, Skeleton, Stack, Text} from '@sanity/ui'\nimport {useCallback} from 'react'\nimport {useRouter} from 'sanity/router'\n\nimport {Button} from '../../../../../ui-components/button/Button'\nimport {Tooltip} from '../../../../../ui-components/tooltip/Tooltip'\nimport {PREVIEW_SIZES} from '../../../../components/previews/constants'\nimport {TitleSkeleton} from '../../../../components/previews/general/DetailPreview.styled'\nimport {useTranslation} from '../../../../i18n/hooks/useTranslation'\nimport {Translate} from '../../../../i18n/Translate'\nimport {usePerspective} from '../../../../perspective/usePerspective'\nimport {useSetPerspective} from '../../../../perspective/useSetPerspective'\nimport {useWorkspace} from '../../../../studio/workspace'\nimport {ReleaseAvatar} from '../../../components/ReleaseAvatar'\nimport {ReleaseTitle} from '../../../components/ReleaseTitle'\nimport {releasesLocaleNamespace} from '../../../i18n'\nimport {getReleaseIdFromReleaseDocumentId} from '../../../util/getReleaseIdFromReleaseDocumentId'\nimport {type TableRowProps} from '../../components/Table/Table'\nimport {type VisibleColumn} from '../../components/Table/types'\nimport {type TableRelease} from '../ReleasesOverview'\n\nexport const ReleaseNameCell: VisibleColumn<TableRelease>['cell'] = ({\n cellProps,\n datum: release,\n}) => {\n const router = useRouter()\n const {t} = useTranslation(releasesLocaleNamespace)\n const {t: tCore} = useTranslation()\n const {selectedReleaseId} = usePerspective()\n const setPerspective = useSetPerspective()\n const {state} = release\n const releaseId = release.isLoading ? 'loading' : getReleaseIdFromReleaseDocumentId(release._id)\n const isArchived = state === 'archived'\n const isReleasePinned = releaseId === selectedReleaseId\n const {document} = useWorkspace()\n const {\n drafts: {enabled: isDraftModelEnabled},\n } = document\n\n const handlePinRelease = useCallback(() => {\n if (isReleasePinned) {\n setPerspective(isDraftModelEnabled ? 'drafts' : 'published')\n } else {\n setPerspective(releaseId)\n }\n }, [isDraftModelEnabled, isReleasePinned, releaseId, setPerspective])\n\n if (release.isLoading) {\n return (\n <Box {...cellProps} paddingLeft={3} flex={1} paddingY={1} paddingRight={2} sizing=\"border\">\n <Flex align=\"center\" gap={2}>\n <Skeleton animated radius={1} style={PREVIEW_SIZES.default.media} />\n <TitleSkeleton />\n </Flex>\n </Box>\n )\n }\n\n const cardProps: TableRowProps = release.isDeleted\n ? {tone: 'transparent'}\n : {\n as: 'a',\n // navigate to release detail\n onClick: () => router.navigate({releaseId: releaseId}),\n tone: 'inherit',\n }\n\n const pinButtonIcon = isReleasePinned ? PinFilledIcon : PinIcon\n const releaseTitle = release.metadata.title || tCore('release.placeholder-untitled-release')\n\n return (\n <Box {...cellProps} paddingLeft={3} flex={1} paddingY={1} paddingRight={2} sizing=\"border\">\n <Tooltip\n disabled={!release.isDeleted}\n content={\n <Text size={1}>\n <Translate t={t} i18nKey=\"deleted-release\" values={{title: releaseTitle}} />\n </Text>\n }\n >\n <Flex align=\"center\" gap={3}>\n <Button\n tooltipProps={{\n disabled: isArchived || release.state === 'published',\n content: isReleasePinned\n ? t('dashboard.details.unpin-release')\n : t('dashboard.details.pin-release'),\n }}\n disabled={isArchived || release.state === 'published'}\n icon={pinButtonIcon}\n mode=\"bleed\"\n data-testid=\"pin-release-button\"\n onClick={handlePinRelease}\n radius=\"full\"\n selected={isReleasePinned}\n aria-label={\n isReleasePinned\n ? `${t('dashboard.details.unpin-release')}: \"${releaseTitle}\"`\n : `${t('dashboard.details.pin-release')}: \"${releaseTitle}\"`\n }\n aria-live=\"assertive\"\n />\n <Card {...cardProps} padding={2} radius={2} flex={1}>\n <Flex align=\"center\" gap={2}>\n <Box flex=\"none\">\n <ReleaseAvatar release={release} />\n </Box>\n <Stack flex={1} gap={2}>\n <Flex align=\"center\" gap={2} style={{minWidth: 0}}>\n <ReleaseTitle\n title={release.metadata.title}\n fallback={tCore('release.placeholder-untitled-release')}\n textProps={{size: 1, weight: 'medium', style: {minWidth: 0}}}\n />\n </Flex>\n </Stack>\n </Flex>\n </Card>\n </Flex>\n </Tooltip>\n </Box>\n )\n}\n","import {CheckmarkCircleIcon} from '@sanity/icons/CheckmarkCircle'\nimport {ErrorOutlineIcon} from '@sanity/icons/ErrorOutline'\nimport {WarningOutlineIcon} from '@sanity/icons/WarningOutline'\nimport {Card, Flex, Text} from '@sanity/ui'\n// oxlint-disable-next-line @sanity/i18n/no-i18next-import -- figure out how to have the linter be fine with importing types-only\nimport {type TFunction} from 'i18next'\n\nimport {ToneIcon} from '../../../../ui-components/toneIcon/ToneIcon'\nimport {Tooltip} from '../../../../ui-components/tooltip/Tooltip'\nimport {RelativeTime} from '../../../components/RelativeTime'\nimport {getIsScheduledDateInPast} from '../../util/getIsScheduledDateInPast'\nimport {getPublishDateFromRelease} from '../../util/util'\nimport {ReleaseTime} from '../components/ReleaseTime'\nimport {Headers} from '../components/Table/TableHeader'\nimport {type Column} from '../components/Table/types'\nimport {ReleaseColumnValidationLoading} from './columnCells/ReleaseColumnValidationLoading'\nimport {ReleaseDocumentsCounter} from './columnCells/ReleaseDocumentsCounter'\nimport {ReleaseNameCell} from './columnCells/ReleaseName'\nimport {type Mode} from './queryParamUtils'\nimport {type TableRelease} from './ReleasesOverview'\n\nconst enableColumnFormMode =\n (currentMode: Mode) => (column: Column<TableRelease>, expectedMode: Mode | 'all') => {\n if (!currentMode) throw new Error('currentMode is required')\n if (expectedMode === 'all' || expectedMode === currentMode) {\n return column\n }\n return undefined\n }\n\nexport const releasesOverviewColumnDefs: (\n t: TFunction<'releases'>,\n releaseGroupMode: Mode,\n) => Column<TableRelease>[] = (t, releaseGroupMode) => {\n const checkColumnMode = enableColumnFormMode(releaseGroupMode)\n return [\n checkColumnMode(\n {\n id: 'metadata.title',\n sorting: true,\n width: null,\n style: {minWidth: 'min(50%, calc(100vw - 80px))', maxWidth: 'min(50%, calc(100vw - 80px))'},\n header: (props) => (\n <Flex\n {...props.headerProps}\n flex={1}\n paddingLeft={6}\n width={3}\n paddingRight={2}\n paddingY={3}\n sizing=\"border\"\n >\n <Headers.SortHeaderButton {...props} text={t('table-header.title')} />\n </Flex>\n ),\n cell: ReleaseNameCell,\n },\n 'all',\n ),\n checkColumnMode(\n {\n id: 'publishAt',\n sorting: true,\n sortTransform: (release) => {\n if (release.metadata.releaseType === 'undecided') return Infinity\n\n const publishDate = getPublishDateFromRelease(release)\n\n if (release.metadata.releaseType === 'asap' || !publishDate) return 0\n return new Date(publishDate).getTime()\n },\n width: 280,\n header: (props) => (\n <Flex {...props.headerProps} paddingY={3} sizing=\"border\">\n <Headers.SortHeaderButton text={t('table-header.when')} {...props} />\n </Flex>\n ),\n cell: ({cellProps, datum: release}) => {\n if (release.isLoading) return null\n\n return (\n <Flex {...cellProps} align=\"center\" paddingX={2} paddingY={3} gap={2} sizing=\"border\">\n <ReleaseTime release={release} />\n </Flex>\n )\n },\n },\n 'active',\n ),\n // This is a hidden column only used for sorting when\n // no other sort column is selected (the default state)\n checkColumnMode(\n {\n id: 'lastActivity',\n hidden: true,\n sorting: true,\n width: 100,\n sortTransform: ({publishedAt, _updatedAt}) => {\n // the default sort is always descending, so -Infinity pushes missing values to end\n const lastActivity = publishedAt ?? _updatedAt\n\n return lastActivity ? new Date(lastActivity).getTime() : -Infinity\n },\n },\n 'archived',\n ),\n checkColumnMode(\n {\n id: 'publishedAt',\n sorting: true,\n sortTransform: (release, direction) => {\n if (release.state !== 'published') {\n if (direction === 'asc') return Infinity\n return -Infinity\n }\n if (!release.publishedAt) return release._updatedAt\n return new Date(release.publishedAt).getTime()\n },\n width: 250,\n header: (props) => (\n <Flex {...props.headerProps} paddingY={3} sizing=\"border\">\n <Headers.SortHeaderButton text={t('table-header.published-at')} {...props} />\n </Flex>\n ),\n cell: ({cellProps, datum: release}) => (\n <Flex {...cellProps} align=\"center\" paddingX={2} paddingY={3} gap={2} sizing=\"border\">\n <Text muted size={1}>\n {release.publishedAt ? (\n // Assuming releases are not updated after archiving.\n // If we realize this is miss leading for customers and they have edited the release after archiving\n // we can use the history endpoint to get the archived change.\n <RelativeTime time={release.publishedAt} useTemporalPhrase minimal />\n ) : (\n '-'\n )}\n </Text>\n </Flex>\n ),\n },\n 'archived',\n ),\n checkColumnMode(\n {\n id: '_updatedAt',\n sorting: true,\n sortTransform: (release, direction) => {\n if (release.state !== 'archived') {\n if (direction === 'asc') return Infinity\n return -Infinity\n }\n\n return new Date(release._updatedAt).getTime()\n },\n width: 250,\n header: (props) => (\n <Flex {...props.headerProps} paddingY={3} sizing=\"border\">\n <Headers.SortHeaderButton text={t('table-header.archivedAt')} {...props} />\n </Flex>\n ),\n cell: ({cellProps, datum: release}) => (\n <Flex {...cellProps} align=\"center\" paddingX={2} paddingY={3} gap={2} sizing=\"border\">\n <Text muted size={1}>\n {release.state === 'archived' ? (\n // Assuming releases are not updated after archiving.\n // If we later realize this is miss leading for customers and they have edited the release after archiving\n // we can use the history endpoint to get the archived change.\n <RelativeTime time={release._updatedAt} useTemporalPhrase minimal />\n ) : (\n '-'\n )}\n </Text>\n </Flex>\n ),\n },\n 'archived',\n ),\n checkColumnMode(\n {\n id: 'documentsMetadata.updatedAt',\n sorting: true,\n width: 150,\n header: (props) => (\n <Flex {...props.headerProps} paddingY={3} sizing=\"border\">\n <Headers.SortHeaderButton text={t('table-header.edited')} {...props} />\n </Flex>\n ),\n cell: ({datum: {documentsMetadata, _updatedAt}, cellProps}) => {\n const updatedAtDate = documentsMetadata?.updatedAt ?? _updatedAt\n return (\n <Flex {...cellProps} align=\"center\" gap={2} paddingX={2} paddingY={3} sizing=\"border\">\n <Text muted size={1}>\n {updatedAtDate ? (\n <RelativeTime time={updatedAtDate} useTemporalPhrase minimal />\n ) : (\n '-'\n )}\n </Text>\n </Flex>\n )\n },\n },\n 'active',\n ),\n checkColumnMode(\n {\n id: 'error',\n sorting: false,\n width: 40,\n header: ({headerProps}) => <Flex {...headerProps} paddingY={3} sizing=\"border\" />,\n cell: ({datum, cellProps}) => {\n const {error, state} = datum\n const hasError = typeof error !== 'undefined' && state === 'active'\n const hasWarning = state === 'active' && getIsScheduledDateInPast(datum)\n\n return (\n <Flex\n {...cellProps}\n align=\"center\"\n gap={2}\n paddingX={2}\n paddingY={3}\n sizing=\"border\"\n data-testid=\"error-indicator\"\n >\n {hasError && (\n <Tooltip content={<Text size={1}>{t('failed-publish-title')}</Text>} portal>\n <Text size={1}>\n <ToneIcon icon={ErrorOutlineIcon} tone=\"critical\" />\n </Text>\n </Tooltip>\n )}\n {hasWarning && (\n <Tooltip content={<Text size={1}>{t('passed-intended-publish-date')}</Text>} portal>\n <Text size={1}>\n <ToneIcon icon={WarningOutlineIcon} tone=\"caution\" />\n </Text>\n </Tooltip>\n )}\n </Flex>\n )\n },\n },\n 'all',\n ),\n checkColumnMode(\n {\n id: 'documentCount',\n sorting: false,\n width: 120,\n header: ({headerProps}) => (\n <Flex {...headerProps} paddingY={3} sizing=\"border\">\n <Headers.BasicHeader text={t('table-header.documents')} />\n </Flex>\n ),\n cell: ({\n datum: {isDeleted, state, finalDocumentStates, documentsMetadata, _id},\n cellProps,\n }) => {\n return (\n <Flex {...cellProps} align=\"center\" paddingX={2} paddingY={3} sizing=\"border\" gap={2}>\n {state === 'active' && <ReleaseColumnValidationLoading releaseId={_id} />}\n\n {/**\n * Show a checkmark for scheduled releases\n * A scheduled release can't be anything other than valid\n * Since it can't be edited via the API or the UI\n * However we should still gives a visual indicator of that instead of showing nothing\n */}\n {state === 'scheduled' && (\n <Card\n padding={0}\n radius=\"full\"\n tone=\"neutral\"\n style={{\n background: 'transparent',\n }}\n >\n <Flex gap={2}>\n <Text size={1}>\n <Tooltip content={t('summary.all-documents-validated')}>\n <CheckmarkCircleIcon />\n </Tooltip>\n </Text>\n </Flex>\n </Card>\n )}\n\n {!isDeleted && (\n <>\n <ReleaseDocumentsCounter\n documentCount={\n state === 'archived' || state === 'published'\n ? finalDocumentStates?.length\n : documentsMetadata?.documentCount\n }\n />\n </>\n )}\n </Flex>\n )\n },\n },\n 'all',\n ),\n ].filter(filterNull)\n}\n\n// type guard to filter out undefined and null values\nfunction filterNull<T>(value: T | undefined | null): value is T {\n return Boolean(value)\n}\n","import {type ReleaseDocument} from '@sanity/client'\nimport {EllipsisHorizontalIcon} from '@sanity/icons/EllipsisHorizontal'\nimport {Menu, Spinner, useClickOutsideEvent} from '@sanity/ui'\nimport {useCallback, useMemo, useRef, useState} from 'react'\nimport {useRouter} from 'sanity/router'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {MenuItem} from '../../../../ui-components/menuItem/MenuItem'\nimport {Popover} from '../../../../ui-components/popover/Popover'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {useScheduledDraftDocument} from '../../../singleDocRelease/hooks/useScheduledDraftDocument'\nimport {useScheduledDraftMenuActions} from '../../../singleDocRelease/hooks/useScheduledDraftMenuActions'\nimport {getPublishedId} from '../../../util/draftUtils'\nimport {isPausedCardinalityOneRelease} from '../../../util/releaseUtils'\nimport {getReleaseIdFromReleaseDocumentId} from '../../util/getReleaseIdFromReleaseDocumentId'\n\nexport const ScheduledDraftMenuButtonWrapper = ({release}: {release: ReleaseDocument}) => {\n const {t} = useTranslation()\n const router = useRouter()\n const popoverRef = useRef<HTMLDivElement>(null)\n const scheduledDraftMenuRef = useRef<HTMLDivElement>(null)\n const [openPopover, setOpenPopover] = useState(false)\n\n const {firstDocument: scheduledDraftDocument} = useScheduledDraftDocument(release._id)\n\n const handleActionComplete = useCallback(() => {\n if (!scheduledDraftDocument) return\n\n router.navigateIntent('edit', {\n id: getPublishedId(scheduledDraftDocument._id),\n type: scheduledDraftDocument._type,\n scheduledDraft: getReleaseIdFromReleaseDocumentId(release._id),\n })\n }, [router, scheduledDraftDocument, release._id])\n\n const {actions, dialogs, isPerformingOperation} = useScheduledDraftMenuActions({\n release,\n documentType: scheduledDraftDocument?._type,\n documentId: scheduledDraftDocument?._id,\n disabled: !scheduledDraftDocument,\n onActionComplete: handleActionComplete,\n })\n\n const displayedMenuItems = useMemo(() => {\n if (release.state === 'archived' || release.state === 'published') {\n return [<MenuItem key={'delete-schedule'} {...actions.deleteSchedule} />]\n }\n\n if (isPausedCardinalityOneRelease(release)) {\n return [\n <MenuItem key={'publish-now'} {...actions.publishNow} />,\n <MenuItem key={'schedule-publish'} {...actions.schedulePublish} />,\n <MenuItem key={'delete-schedule'} {...actions.deleteSchedule} />,\n ]\n }\n\n return [\n <MenuItem key={'publish-now'} {...actions.publishNow} />,\n <MenuItem key={'edit-schedule'} {...actions.editSchedule} />,\n <MenuItem key={'delete-schedule'} {...actions.deleteSchedule} />,\n ]\n }, [release, actions])\n\n const canPerformActions = Boolean(scheduledDraftDocument)\n\n const handleOnButtonClick = useCallback(() => {\n setOpenPopover((prev) => !prev)\n }, [])\n\n useClickOutsideEvent(\n () => setOpenPopover(false),\n () => [popoverRef.current, scheduledDraftMenuRef.current],\n )\n\n if (!canPerformActions) {\n return null\n }\n\n return (\n <>\n <Popover\n content={<Menu ref={scheduledDraftMenuRef}>{displayedMenuItems}</Menu>}\n open={openPopover}\n ref={popoverRef}\n constrainSize={false}\n fallbackPlacements={['top-end']}\n portal\n tone=\"default\"\n placement=\"bottom\"\n >\n <Button\n disabled={!canPerformActions || isPerformingOperation}\n icon={isPerformingOperation ? Spinner : EllipsisHorizontalIcon}\n mode=\"bleed\"\n tooltipProps={{content: t('release.menu.tooltip')}}\n aria-label={t('release.menu.label')}\n data-testid=\"scheduled-draft-menu-button\"\n onClick={handleOnButtonClick}\n />\n </Popover>\n {dialogs}\n </>\n )\n}\n","import {Flex, Text} from '@sanity/ui'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {useSingleDocReleaseEnabled} from '../../../singleDocRelease/context/SingleDocReleaseEnabledProvider'\nimport {singleDocReleaseNamespace} from '../../../singleDocRelease/i18n'\nimport {ReleaseIllustration} from '../resources/ReleaseIllustration'\n\nexport const ScheduledDraftsEmptyState = () => {\n const {t} = useTranslation(singleDocReleaseNamespace)\n const {mode} = useSingleDocReleaseEnabled()\n if (mode === 'upsell') {\n return null\n }\n return (\n <Flex direction=\"column\" flex={1} justify={'center'} align={'center'}>\n <Flex gap={3} direction=\"column\" align=\"center\" style={{maxWidth: '300px'}}>\n <ReleaseIllustration />\n <Text as=\"h1\" size={1} weight=\"semibold\" data-testid=\"no-releases-info-text\">\n {t('empty-state.title')}\n </Text>\n <Text size={1} muted style={{textAlign: 'center'}}>\n {t('empty-state.description')}\n </Text>\n\n <Button\n as=\"a\"\n href=\"https://www.sanity.io/docs/studio/scheduled-drafts-user-guide\"\n target=\"_blank\"\n mode=\"ghost\"\n text={t('empty-state.action.documentation')}\n />\n </Flex>\n </Flex>\n )\n}\n","import {ErrorOutlineIcon} from '@sanity/icons/ErrorOutline'\nimport {Box, Card, Flex, Skeleton, Text} from '@sanity/ui'\n\nimport {ToneIcon} from '../../../../../ui-components/toneIcon/ToneIcon'\nimport {Tooltip} from '../../../../../ui-components/tooltip/Tooltip'\nimport {useTranslation} from '../../../../i18n/hooks/useTranslation'\nimport {useScheduledDraftDocument} from '../../../../singleDocRelease/hooks/useScheduledDraftDocument'\nimport {releasesLocaleNamespace} from '../../../i18n'\nimport {ReleaseDocumentPreview} from '../../components/ReleaseDocumentPreview'\nimport {type VisibleColumn} from '../../components/Table/types'\nimport {type TableRelease} from '../ReleasesOverview'\n\nexport const ScheduledDraftDocumentPreview: VisibleColumn<TableRelease>['cell'] = ({\n datum: release,\n cellProps,\n}) => {\n const {t} = useTranslation(releasesLocaleNamespace)\n const {\n firstDocument,\n firstDocumentValidation,\n loading: documentsLoading,\n } = useScheduledDraftDocument(release._id && !release.isLoading ? release._id : undefined)\n\n const isLoading = release.isLoading || documentsLoading || !firstDocument\n\n if (isLoading) {\n return (\n <Flex {...cellProps} align=\"center\" paddingX={2} paddingY={3} sizing=\"border\">\n <Skeleton animated radius={2} style={{height: '32px', width: '100%'}} />\n </Flex>\n )\n }\n\n const validationErrorCount =\n firstDocumentValidation?.filter((validation) => validation.level === 'error').length || 0\n\n return (\n <Box {...cellProps} flex={1} padding={1} paddingLeft={2} paddingRight={2} sizing=\"border\">\n <Card tone={validationErrorCount ? 'critical' : 'inherit'} radius={2}>\n <Flex align=\"center\" gap={2}>\n <Box flex={1}>\n <ReleaseDocumentPreview\n documentId={firstDocument._id}\n documentTypeName={firstDocument._type}\n releaseId={release._id}\n releaseState={release.state}\n isCardinalityOneRelease\n documentRevision={firstDocument._rev}\n layout=\"default\"\n />\n </Box>\n {validationErrorCount > 0 && (\n <Box paddingRight={3}>\n <Tooltip\n portal\n placement=\"bottom-end\"\n content={\n <Text muted size={1}>\n <Flex align=\"center\" gap={3} padding={1}>\n <ToneIcon icon={ErrorOutlineIcon} tone=\"critical\" />\n {t('document-validation.error', {count: validationErrorCount})}\n </Flex>\n </Text>\n }\n >\n <Text size={1}>\n <ToneIcon icon={ErrorOutlineIcon} tone=\"critical\" />\n </Text>\n </Tooltip>\n </Box>\n )}\n </Flex>\n </Card>\n </Box>\n )\n}\n","import {useScheduledDraftDocument} from '../../../../singleDocRelease/hooks/useScheduledDraftDocument'\nimport {getReleaseIdFromReleaseDocumentId} from '../../../util/getReleaseIdFromReleaseDocumentId'\nimport {useReleaseHistory} from '../../detail/documentTable/useReleaseHistory'\n\n/**\n * @internal\n */\nexport function useReleaseCreator(\n releaseDocumentId: string | undefined,\n isLoading: boolean = false,\n): {\n createdBy: string | undefined\n loading: boolean\n} {\n const releaseId =\n releaseDocumentId && !isLoading ? getReleaseIdFromReleaseDocumentId(releaseDocumentId) : ''\n\n const {firstDocument, loading: documentsLoading} = useScheduledDraftDocument(releaseDocumentId)\n const {documentHistory, loading: historyLoading} = useReleaseHistory(\n firstDocument?._id,\n releaseId,\n )\n\n if (!releaseDocumentId || isLoading) {\n return {createdBy: undefined, loading: false}\n }\n\n if (documentsLoading || historyLoading) {\n return {createdBy: undefined, loading: true}\n }\n\n return {\n createdBy: documentHistory?.createdBy,\n loading: false,\n }\n}\n","import {Flex, Skeleton, Stack} from '@sanity/ui'\n\nimport {AvatarSkeleton, UserAvatar} from '../../../../components/userAvatar/UserAvatar'\nimport {ReleaseTime} from '../../components/ReleaseTime'\nimport {type VisibleColumn} from '../../components/Table/types'\nimport {useReleaseCreator} from '../hooks/useReleaseCreator'\nimport {type TableRelease} from '../ReleasesOverview'\n\nexport const ScheduledDraftMetadataCell: VisibleColumn<TableRelease>['cell'] = ({\n datum,\n cellProps,\n}) => {\n // Skeleton IDs don't start with _.releases\n // so pass undefined in loading cases\n const {createdBy, loading: creatorLoading} = useReleaseCreator(\n datum.isLoading ? undefined : datum._id,\n datum.isLoading,\n )\n\n if (datum.isLoading || !datum.metadata) {\n return (\n <Flex {...cellProps} align=\"center\" paddingX={2} paddingY={3} sizing=\"border\">\n <Skeleton animated radius={2} style={{height: '40px', width: '150px'}} />\n </Flex>\n )\n }\n\n return (\n <Flex {...cellProps} align=\"center\" paddingX={2} paddingY={3} sizing=\"border\">\n <Flex align=\"center\" gap={3}>\n {creatorLoading && <AvatarSkeleton $size={1} animated />}\n {!creatorLoading && createdBy && <UserAvatar user={createdBy} size={1} />}\n <Stack gap={1}>\n <ReleaseTime release={datum} />\n </Stack>\n </Flex>\n </Flex>\n )\n}\n","import {WarningOutlineIcon} from '@sanity/icons/WarningOutline'\nimport {Flex, Text} from '@sanity/ui'\n\nimport {ToneIcon} from '../../../../../ui-components/toneIcon/ToneIcon'\nimport {Tooltip} from '../../../../../ui-components/tooltip/Tooltip'\nimport {useTranslation} from '../../../../i18n/hooks/useTranslation'\nimport {releasesLocaleNamespace} from '../../../i18n'\nimport {getIsScheduledDateInPast} from '../../../util/getIsScheduledDateInPast'\nimport {type VisibleColumn} from '../../components/Table/types'\nimport {type TableRelease} from '../ReleasesOverview'\n\nexport const ScheduledDraftWarningCell: VisibleColumn<TableRelease>['cell'] = ({\n datum,\n cellProps,\n}) => {\n const {t} = useTranslation(releasesLocaleNamespace)\n const hasWarning = datum.state === 'active' && getIsScheduledDateInPast(datum)\n\n return (\n <Flex\n {...cellProps}\n align=\"center\"\n gap={2}\n paddingX={2}\n paddingY={3}\n sizing=\"border\"\n data-testid=\"warning-indicator\"\n >\n {hasWarning && (\n <Tooltip content={<Text size={1}>{t('passed-intended-publish-date-draft')}</Text>} portal>\n <Text size={1}>\n <ToneIcon icon={WarningOutlineIcon} tone=\"caution\" />\n </Text>\n </Tooltip>\n )}\n </Flex>\n )\n}\n","import {Flex} from '@sanity/ui'\n// oxlint-disable-next-line @sanity/i18n/no-i18next-import -- figure out how to have the linter be fine with importing types-only\nimport {type TFunction} from 'i18next'\n\nimport {Headers} from '../components/Table/TableHeader'\nimport {type Column} from '../components/Table/types'\nimport {ScheduledDraftDocumentPreview} from './columnCells/ScheduledDraftDocumentPreview'\nimport {ScheduledDraftMetadataCell} from './columnCells/ScheduledDraftMetadataCell'\nimport {ScheduledDraftWarningCell} from './columnCells/ScheduledDraftWarningCell'\nimport {type Mode} from './queryParamUtils'\nimport {type TableRelease} from './ReleasesOverview'\n\nexport const scheduledDraftsOverviewColumnDefs: (\n t: TFunction<'releases'>,\n releaseGroupMode: Mode,\n) => Column<TableRelease>[] = (t, releaseGroupMode) => {\n return [\n {\n id: 'documentPreview',\n sorting: false,\n width: null,\n style: {flex: 1},\n header: (props) => (\n <Flex {...props.headerProps} paddingLeft={2} paddingRight={2} paddingY={3} sizing=\"border\">\n <Headers.BasicHeader text={t('table-header.document')} />\n </Flex>\n ),\n cell: ScheduledDraftDocumentPreview,\n },\n {\n id: 'publishAt',\n sorting: true,\n width: 300,\n header: (props) => (\n <Flex {...props.headerProps} paddingY={3} paddingX={2} sizing=\"border\">\n <Headers.SortHeaderButton\n {...props}\n text={\n releaseGroupMode === 'archived'\n ? t('table-header.scheduled-draft.published-at')\n : releaseGroupMode === 'paused'\n ? t('table-header.intended-for')\n : t('table-header.scheduled-for')\n }\n />\n </Flex>\n ),\n cell: ScheduledDraftMetadataCell,\n },\n {\n id: 'warning',\n sorting: false,\n width: 40,\n header: ({headerProps}) => <Flex {...headerProps} paddingY={3} sizing=\"border\" />,\n cell: ScheduledDraftWarningCell,\n },\n ]\n}\n","import {Box, Container, Flex} from '@sanity/ui'\nimport {motion} from 'motion/react'\nimport {useCallback} from 'react'\nimport {styled} from 'styled-components'\n\nimport {useSingleDocReleaseEnabled} from '../../../singleDocRelease/context/SingleDocReleaseEnabledProvider'\nimport {useSingleDocReleaseUpsell} from '../../../singleDocRelease/context/SingleDocReleaseUpsellProvider'\nimport {UpsellPanel} from '../../../studio/upsell/UpsellPanel'\nimport {useReleasesUpsell} from '../../contexts/upsell/useReleasesUpsell'\nimport {ReleaseIllustration} from '../resources/ReleaseIllustration'\nimport {type CardinalityView} from './queryParamUtils'\n\nconst Panel = styled(Container)`\n width: auto;\n flex-shrink: 0;\n`\n\nconst SingleDocReleasesUpsell = () => {\n const {mode} = useSingleDocReleaseEnabled()\n const {upsellData, telemetryLogs} = useSingleDocReleaseUpsell()\n const handlePrimaryClick = useCallback(() => {\n telemetryLogs.panelPrimaryClicked()\n }, [telemetryLogs])\n\n const handleSecondaryClick = useCallback(() => {\n telemetryLogs.panelSecondaryClicked()\n }, [telemetryLogs])\n\n if (mode !== 'upsell' || !upsellData) {\n return null\n }\n return (\n <Flex direction=\"column\" flex={1} justify={'center'} align={'center'}>\n <motion.div\n initial={{opacity: 0}}\n animate={{opacity: 1}}\n transition={{duration: 0.3, ease: 'easeInOut'}}\n >\n <Panel width={0} padding={4} paddingY={1}>\n <Flex align={'center'} direction=\"column\">\n <ReleaseIllustration />\n <Box paddingTop={2}>\n <UpsellPanel\n align=\"center\"\n layout=\"vertical\"\n data={{...upsellData, image: null}}\n border={false}\n onPrimaryClick={handlePrimaryClick}\n onSecondaryClick={handleSecondaryClick}\n />\n </Box>\n </Flex>\n </Panel>\n </motion.div>\n </Flex>\n )\n}\n\nconst ReleasesUpsell = () => {\n const {upsellData, telemetryLogs, mode} = useReleasesUpsell()\n const handlePrimaryClick = useCallback(() => {\n telemetryLogs.panelPrimaryClicked()\n }, [telemetryLogs])\n\n const handleSecondaryClick = useCallback(() => {\n telemetryLogs.panelSecondaryClicked()\n }, [telemetryLogs])\n\n if (!upsellData || mode === 'default') {\n return null\n }\n return (\n <Flex direction=\"column\" flex={1} justify={'center'} align={'center'}>\n <motion.div\n initial={{opacity: 0}}\n animate={{opacity: 1}}\n transition={{duration: 0.3, ease: 'easeInOut'}}\n >\n <Panel width={0} padding={4} paddingY={1}>\n <Flex align={'center'} direction=\"column\">\n <ReleaseIllustration />\n <Box paddingTop={2}>\n <UpsellPanel\n align=\"center\"\n layout=\"vertical\"\n data={{...upsellData, image: null}}\n border={false}\n onPrimaryClick={handlePrimaryClick}\n onSecondaryClick={handleSecondaryClick}\n />\n </Box>\n </Flex>\n </Panel>\n </motion.div>\n </Flex>\n )\n}\n\nexport function SchedulesUpsell({cardinalityView}: {cardinalityView: CardinalityView}) {\n if (cardinalityView === 'drafts') {\n return <SingleDocReleasesUpsell />\n }\n if (cardinalityView === 'releases') {\n return <ReleasesUpsell />\n }\n return null\n}\n","import {type ReleaseDocument} from '@sanity/client'\nimport {AddIcon} from '@sanity/icons/Add'\nimport {ChevronDownIcon} from '@sanity/icons/ChevronDown'\nimport {EarthGlobeIcon} from '@sanity/icons/EarthGlobe'\nimport {Box, type ButtonMode, Card, Flex, Inline, useMediaIndex} from '@sanity/ui'\nimport {isSameDay} from 'date-fns/isSameDay'\nimport {AnimatePresence, motion} from 'motion/react'\nimport {\n type CSSProperties,\n type MouseEventHandler,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport {useRouter} from 'sanity/router'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {Tooltip} from '../../../../ui-components/tooltip/Tooltip'\nimport {CalendarFilter} from '../../../components/inputs/DateFilters/calendar/CalendarFilter'\nimport useDialogTimeZone from '../../../hooks/useDialogTimeZone'\nimport {useTimeZone} from '../../../hooks/useTimeZone'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {usePerspective} from '../../../perspective/usePerspective'\nimport {useSingleDocReleaseEnabled} from '../../../singleDocRelease/context/SingleDocReleaseEnabledProvider'\nimport {useScheduledDraftsEnabled} from '../../../singleDocRelease/hooks/useScheduledDraftsEnabled'\nimport {CONTENT_RELEASES_TIME_ZONE_SCOPE} from '../../../studio/constants'\nimport {useWorkspace} from '../../../studio/workspace'\nimport {isCardinalityOneRelease, isPausedCardinalityOneRelease} from '../../../util/releaseUtils'\nimport {CreateReleaseDialog} from '../../components/dialog/CreateReleaseDialog'\nimport {useReleasesUpsell} from '../../contexts/upsell/useReleasesUpsell'\nimport {releasesLocaleNamespace} from '../../i18n'\nimport {isReleaseDocument} from '../../store/types'\nimport {useActiveReleases} from '../../store/useActiveReleases'\nimport {useArchivedReleases} from '../../store/useArchivedReleases'\nimport {useReleaseOperations} from '../../store/useReleaseOperations'\nimport {useReleasePermissions} from '../../store/useReleasePermissions'\nimport {type ReleasesMetadata, useReleasesMetadata} from '../../store/useReleasesMetadata'\nimport {getIsScheduledDateInPast} from '../../util/getIsScheduledDateInPast'\nimport {getReleaseTone} from '../../util/getReleaseTone'\nimport {\n filterReleasesForOverview,\n getReleaseDefaults,\n shouldShowReleaseInView,\n} from '../../util/util'\nimport {Table, type TableRowProps} from '../components/Table/Table'\nimport {type TableSort} from '../components/Table/TableProvider'\nimport {CalendarPopover} from './CalendarPopover'\nimport {CardinalityViewPicker} from './CardinalityViewPicker'\nimport {ConfirmActiveScheduledDraftsBanner} from './ConfirmActiveScheduledDraftsBanner'\nimport {DraftsDisabledBanner} from './DraftsDisabledBanner'\nimport {\n buildReleasesSearchParams,\n type CardinalityView,\n getInitialCardinalityView,\n getInitialFilterDate,\n getInitialReleaseGroupMode,\n getInitialReleaseNotFound,\n type Mode,\n} from './queryParamUtils'\nimport {createReleaseCalendarFilterDay, DateFilterButton} from './ReleaseCalendarFilter'\nimport {ReleaseMenuButtonWrapper} from './ReleaseMenuButtonWrapper'\nimport {ReleaseNotFoundBanner} from './ReleaseNotFoundBanner'\nimport {ReleasesEmptyState} from './ReleasesEmptyState'\nimport {releasesOverviewColumnDefs} from './ReleasesOverviewColumnDefs'\nimport {ScheduledDraftMenuButtonWrapper} from './ScheduledDraftMenuButtonWrapper'\nimport {ScheduledDraftsEmptyState} from './ScheduledDraftsEmptyState'\nimport {scheduledDraftsOverviewColumnDefs} from './ScheduledDraftsOverviewColumnDefs'\nimport {SchedulesUpsell} from './SchedulesUpsell'\nimport {useTimezoneAdjustedDateTimeRange} from './useTimezoneAdjustedDateTimeRange'\n\nconst MotionButton = motion.create(Button)\n\nexport interface TableRelease extends ReleaseDocument {\n documentsMetadata?: ReleasesMetadata\n isDeleted?: boolean\n}\n\nconst DEFAULT_RELEASES_OVERVIEW_SORT: TableSort = {column: 'publishAt', direction: 'asc'}\nconst DEFAULT_ARCHIVED_RELEASES_OVERVIEW_SORT: TableSort = {\n column: 'lastActivity',\n direction: 'desc',\n}\n\nfunction toLocalDateComponents(utcDate: Date, utcToZoneDate: (date: Date) => Date): Date {\n const tz = utcToZoneDate(utcDate)\n return new Date(tz.getFullYear(), tz.getMonth(), tz.getDate())\n}\n\nexport function ReleasesOverview() {\n const {data: allReleases, loading: loadingReleases} = useActiveReleases()\n const {data: allArchivedReleases} = useArchivedReleases()\n const {mode: releasesUpsellMode, handleOpenDialog: handleOpenReleasesUpsellDialog} =\n useReleasesUpsell()\n const {mode: scheduledDraftsMode} = useSingleDocReleaseEnabled()\n const isScheduledDraftsEnabled = useScheduledDraftsEnabled()\n const {document, releases: releasesConfig} = useWorkspace()\n const isReleasesEnabled = Boolean(releasesConfig?.enabled)\n const isDraftModelEnabled = document?.drafts?.enabled\n\n const router = useRouter()\n const navigateRef = useRef(router.navigate)\n const [releaseGroupMode, setReleaseGroupMode] = useState<Mode>(getInitialReleaseGroupMode(router))\n\n const cardinalityView = useMemo(\n () => getInitialCardinalityView({router, isScheduledDraftsEnabled, isReleasesEnabled})(),\n [router, isScheduledDraftsEnabled, isReleasesEnabled],\n )\n\n const [releaseFilterDate, setReleaseFilterDate] = useState<Date | undefined>(\n getInitialFilterDate(router),\n )\n const [showReleaseNotFound, setShowReleaseNotFound] = useState<boolean>(() =>\n getInitialReleaseNotFound(router),\n )\n const [isCreateReleaseDialogOpen, setIsCreateReleaseDialogOpen] = useState(false)\n\n // Filter releases based on cardinality view\n // 'releases' view shows releases with cardinality 'many' or undefined\n // 'drafts' view shows releases with cardinality 'one'\n const releases = useMemo(\n () => allReleases.filter(shouldShowReleaseInView(cardinalityView)),\n [allReleases, cardinalityView],\n )\n\n const archivedReleases = useMemo(\n () => allArchivedReleases.filter(shouldShowReleaseInView(cardinalityView)),\n [allArchivedReleases, cardinalityView],\n )\n\n const pausedReleases = useMemo(\n () =>\n cardinalityView === 'drafts'\n ? releases.filter((release) => isPausedCardinalityOneRelease(release))\n : [],\n [releases, cardinalityView],\n )\n\n const releaseIds = useMemo(() => releases.map((release) => release._id), [releases])\n const {data: releasesMetadata, loading: loadingReleasesMetadata} = useReleasesMetadata(releaseIds)\n const loading = loadingReleases || (loadingReleasesMetadata && !releasesMetadata)\n const loadingTableData = loading || (!releasesMetadata && Boolean(releaseIds.length))\n const {t} = useTranslation(releasesLocaleNamespace)\n const {t: tCore} = useTranslation()\n const timeZoneScope = CONTENT_RELEASES_TIME_ZONE_SCOPE\n const {timeZone, utcToCurrentZoneDate} = useTimeZone(timeZoneScope)\n const {selectedPerspective} = usePerspective()\n const {DialogTimeZone, dialogProps, dialogTimeZoneShow} = useDialogTimeZone(timeZoneScope)\n const getTimezoneAdjustedDateTimeRange = useTimezoneAdjustedDateTimeRange()\n\n const {createRelease} = useReleaseOperations()\n const {checkWithPermissionGuard} = useReleasePermissions()\n const [hasCreatePermission, setHasCreatePermission] = useState<boolean | null>(null)\n\n const mediaIndex = useMediaIndex()\n const isNarrowViewport = mediaIndex < 2\n\n const narrowFilterStyle: CSSProperties | undefined = isNarrowViewport\n ? {minWidth: '100%', order: 3}\n : undefined\n const narrowTimezoneStyle: CSSProperties | undefined = isNarrowViewport\n ? {marginLeft: 'auto'}\n : undefined\n const timeZoneLabel = `${timeZone.abbreviation} (${timeZone.namePretty})`\n const timeZoneButtonProps = isNarrowViewport\n ? {tooltipProps: {content: timeZoneLabel}}\n : {iconRight: ChevronDownIcon, text: timeZoneLabel}\n\n const getRowProps = useCallback(\n (datum: TableRelease): Partial<TableRowProps> => {\n if (datum.isDeleted) {\n return {tone: 'transparent'}\n }\n\n if (isReleaseDocument(selectedPerspective) && selectedPerspective._id === datum._id) {\n return {tone: getReleaseTone(datum)}\n }\n\n if (datum.state === 'active' && getIsScheduledDateInPast(datum)) {\n return {tone: 'caution'}\n }\n\n return {tone: 'default'}\n },\n [selectedPerspective],\n )\n\n const [scrollContainerRef, setScrollContainerRef] = useState<HTMLDivElement | null>(null)\n\n const hasReleases = releases.length > 0 || archivedReleases.length > 0\n // banner that shows when drafts mode is disabled, or scheduled drafts are disabled\n // but there are still scheduled drafts\n const showDraftsDisabledBanner =\n cardinalityView === 'drafts' && (!isDraftModelEnabled || !isScheduledDraftsEnabled)\n const loadingOrHasReleases = loading || hasReleases\n const hasNoReleases = !loading && !hasReleases\n\n const tableReleases = useMemo<TableRelease[]>(() => {\n if (!hasReleases || !releasesMetadata) return []\n return releases.map((release) => ({\n ...release,\n publishAt: release.publishAt || release.metadata.intendedPublishAt,\n documentsMetadata: releasesMetadata[release._id] || {},\n }))\n }, [hasReleases, releasesMetadata, releases])\n\n const isMounted = useRef(false)\n useEffect(() => {\n isMounted.current = true\n void checkWithPermissionGuard(createRelease, getReleaseDefaults()).then((hasPermissions) => {\n if (isMounted.current) setHasCreatePermission(hasPermissions)\n })\n\n return () => {\n isMounted.current = false\n }\n }, [checkWithPermissionGuard, createRelease])\n\n // switch to open mode if on archived mode and there are no archived releases\n if (releaseGroupMode === 'archived' && !loadingReleases && !archivedReleases.length) {\n setReleaseGroupMode('active')\n }\n\n // switch to open mode if on paused mode and there are no paused releases\n if (releaseGroupMode === 'paused' && !loadingReleases && !pausedReleases.length) {\n setReleaseGroupMode('active')\n }\n\n const handleDismissReleaseNotFound = useCallback(() => {\n setShowReleaseNotFound(false)\n }, [])\n\n const handleReleaseGroupModeChange = useCallback<MouseEventHandler<HTMLButtonElement>>(\n ({currentTarget: {value: groupMode}}) => {\n setReleaseGroupMode(groupMode as Mode)\n },\n [],\n )\n\n const handleCardinalityViewChange = useCallback(\n (view: CardinalityView) => () => {\n router.navigate({\n _searchParams: buildReleasesSearchParams(releaseFilterDate, releaseGroupMode, view),\n })\n },\n [router, releaseFilterDate, releaseGroupMode],\n )\n\n const handleSelectFilterDate = useCallback(\n (date?: Date) =>\n setReleaseFilterDate((prevFilterDate) => {\n if (!date) return undefined\n const normalized = toLocalDateComponents(date, utcToCurrentZoneDate)\n return prevFilterDate && isSameDay(prevFilterDate, normalized) ? undefined : normalized\n }),\n [utcToCurrentZoneDate],\n )\n\n const clearFilterDate = useCallback(() => {\n setReleaseFilterDate(undefined)\n setReleaseGroupMode('active')\n }, [])\n\n const handleNavigateToPaused = useCallback(() => {\n setReleaseFilterDate(undefined)\n setReleaseGroupMode('paused')\n }, [])\n\n useEffect(() => {\n navigateRef.current = router.navigate\n })\n\n // replace avoids a duplicate history entry alongside the user's navigation, which would swallow back clicks.\n useEffect(() => {\n navigateRef.current(\n {\n _searchParams: buildReleasesSearchParams(\n releaseFilterDate,\n releaseGroupMode,\n isScheduledDraftsEnabled ? cardinalityView : 'releases',\n ),\n },\n {replace: true},\n )\n }, [releaseFilterDate, releaseGroupMode, cardinalityView, isScheduledDraftsEnabled])\n\n const [hasMounted, setHasMounted] = useState(false)\n\n useEffect(() => {\n // oxlint-disable-next-line react/react-compiler\n setHasMounted(true)\n }, [])\n\n const showCalendar = mediaIndex > 2\n\n const currentArchivedPicker = useMemo(() => {\n const groupModeButtonBaseProps = {\n disabled: loading || !hasReleases,\n mode: 'bleed' as ButtonMode,\n padding: 2,\n ...(hasMounted\n ? {\n initial: {opacity: 0},\n animate: {opacity: 1},\n transition: {duration: 0.4, ease: 'easeInOut' as const},\n }\n : {}),\n }\n return (\n <AnimatePresence>\n <MotionButton\n key=\"open-group\"\n {...groupModeButtonBaseProps}\n onClick={handleReleaseGroupModeChange}\n selected={releaseGroupMode === 'active'}\n text={t('action.open')}\n value=\"active\"\n />\n {cardinalityView === 'drafts' && (\n <Tooltip\n disabled={pausedReleases.length !== 0}\n content={t('no-paused-release')}\n placement=\"bottom\"\n >\n <div>\n <MotionButton\n key=\"paused-group\"\n {...groupModeButtonBaseProps}\n disabled={groupModeButtonBaseProps.disabled || !pausedReleases.length}\n onClick={handleReleaseGroupModeChange}\n selected={releaseGroupMode === 'paused'}\n text={t('action.paused')}\n value=\"paused\"\n />\n </div>\n </Tooltip>\n )}\n <Tooltip\n disabled={archivedReleases.length !== 0}\n content={t('no-archived-release')}\n placement=\"bottom\"\n >\n <div>\n <MotionButton\n key=\"archived-group\"\n {...groupModeButtonBaseProps}\n disabled={groupModeButtonBaseProps.disabled || !archivedReleases.length}\n onClick={handleReleaseGroupModeChange}\n selected={releaseGroupMode === 'archived'}\n text={t('action.archived')}\n value=\"archived\"\n />\n </div>\n </Tooltip>\n </AnimatePresence>\n )\n }, [\n loading,\n hasReleases,\n hasMounted,\n handleReleaseGroupModeChange,\n releaseGroupMode,\n t,\n archivedReleases.length,\n pausedReleases.length,\n cardinalityView,\n ])\n\n const handleOnClickCreateRelease = useCallback(() => {\n if (releasesUpsellMode === 'upsell') {\n handleOpenReleasesUpsellDialog()\n return\n }\n setIsCreateReleaseDialogOpen(true)\n }, [releasesUpsellMode, handleOpenReleasesUpsellDialog])\n\n const createReleaseButton = useMemo(() => {\n if (isScheduledDraftsEnabled && cardinalityView === 'drafts') return null\n\n return (\n <Button\n icon={AddIcon}\n disabled={!hasCreatePermission || isCreateReleaseDialogOpen}\n onClick={handleOnClickCreateRelease}\n text={tCore('release.action.create-new')}\n tooltipProps={{\n disabled: hasCreatePermission === true,\n content: tCore('release.action.permission.error'),\n }}\n />\n )\n }, [\n cardinalityView,\n hasCreatePermission,\n isCreateReleaseDialogOpen,\n handleOnClickCreateRelease,\n tCore,\n isScheduledDraftsEnabled,\n ])\n\n const handleOnCreateRelease = useCallback(\n (createdReleaseId: string) => {\n setIsCreateReleaseDialogOpen(false)\n\n router.navigate(\n {releaseId: createdReleaseId},\n {\n stickyParams: {\n excludedPerspectives: null,\n perspective: createdReleaseId,\n },\n },\n )\n },\n [router],\n )\n\n const renderRowActions = useCallback(\n ({datum}: {datum: TableRelease | unknown}) => {\n const release = datum as TableRelease\n\n if (release.isDeleted || release.isLoading) return null\n\n if (cardinalityView === 'drafts') {\n return <ScheduledDraftMenuButtonWrapper release={release} />\n }\n\n const documentsCount =\n (releaseGroupMode === 'active'\n ? release.documentsMetadata?.documentCount\n : release.finalDocumentStates?.length) ?? 0\n\n return <ReleaseMenuButtonWrapper release={release} documentsCount={documentsCount} />\n },\n [releaseGroupMode, cardinalityView],\n )\n\n const filteredReleases = useMemo(() => {\n const dateFilter = releaseFilterDate\n ? {\n filterDate: releaseFilterDate,\n getTimezoneAdjustedDateTimeRange,\n }\n : undefined\n\n return filterReleasesForOverview({\n releases: tableReleases,\n archivedReleases,\n cardinalityView,\n releaseGroupMode,\n dateFilter,\n })\n }, [\n tableReleases,\n archivedReleases,\n cardinalityView,\n releaseGroupMode,\n releaseFilterDate,\n getTimezoneAdjustedDateTimeRange,\n ])\n\n const showConfirmActiveScheduledDraftsBanner =\n cardinalityView === 'drafts' &&\n releases.some((release) => release.state === 'active' && isCardinalityOneRelease(release))\n\n const calendarFilterContent = useMemo(\n () => (\n <CalendarFilter\n disabled={loading || releases.length === 0}\n renderCalendarDay={createReleaseCalendarFilterDay(cardinalityView)}\n selectedDate={releaseFilterDate}\n onSelect={handleSelectFilterDate}\n timeZoneScope={CONTENT_RELEASES_TIME_ZONE_SCOPE}\n />\n ),\n [loading, releases, releaseFilterDate, handleSelectFilterDate, cardinalityView],\n )\n\n const renderCalendarFilter = useMemo(\n () => (\n <Flex flex=\"none\">\n <Card borderRight flex=\"none\" disabled>\n {calendarFilterContent}\n </Card>\n </Flex>\n ),\n [calendarFilterContent],\n )\n\n const tableColumns = useMemo(() => {\n if (cardinalityView === 'drafts') {\n return scheduledDraftsOverviewColumnDefs(t, releaseGroupMode)\n }\n return releasesOverviewColumnDefs(t, releaseGroupMode)\n }, [cardinalityView, releaseGroupMode, t])\n\n const hasBannerAboveTable =\n showReleaseNotFound || showDraftsDisabledBanner || showConfirmActiveScheduledDraftsBanner\n\n const isArchivedReleasesView = releaseGroupMode === 'archived' && cardinalityView === 'releases'\n const defaultTableSort = isArchivedReleasesView\n ? DEFAULT_ARCHIVED_RELEASES_OVERVIEW_SORT\n : DEFAULT_RELEASES_OVERVIEW_SORT\n\n const releasesEmptyStateComponent = useCallback(\n () => <ReleasesEmptyState createReleaseButton={createReleaseButton} />,\n [createReleaseButton],\n )\n\n const tableEmptyState = useMemo(() => {\n if (cardinalityView === 'releases' && releaseGroupMode === 'active') {\n return releasesEmptyStateComponent\n }\n // Use specific text for drafts view\n if (cardinalityView === 'drafts') {\n return t('no-scheduled-drafts')\n }\n // Use default text empty state for other cases (archived, etc.)\n return t('no-releases')\n }, [cardinalityView, releaseGroupMode, releasesEmptyStateComponent, t])\n\n function renderNoReleasesEmptyState() {\n const isUpsell =\n (cardinalityView === 'releases' && releasesUpsellMode === 'upsell') ||\n (cardinalityView === 'drafts' && scheduledDraftsMode === 'upsell')\n\n if (isUpsell) {\n return <SchedulesUpsell cardinalityView={cardinalityView} />\n }\n\n if (cardinalityView === 'drafts') {\n return <ScheduledDraftsEmptyState />\n }\n\n return <ReleasesEmptyState createReleaseButton={createReleaseButton} />\n }\n\n return (\n <Flex direction=\"row\" flex={1} style={{height: '100%'}}>\n <Flex flex={1}>\n {showCalendar && renderCalendarFilter}\n\n <Flex direction=\"column\" flex={1} style={{position: 'relative'}}>\n <Card flex=\"none\" padding={3}>\n <Flex align=\"center\" flex={1} gap={3} wrap=\"wrap\">\n <Inline>\n {!showCalendar && (\n <CalendarPopover content={calendarFilterContent} asDialog={isNarrowViewport} />\n )}\n <CardinalityViewPicker\n cardinalityView={cardinalityView}\n loading={loading}\n onCardinalityViewChange={handleCardinalityViewChange}\n isScheduledDraftsEnabled={isScheduledDraftsEnabled}\n allReleases={allReleases}\n isReleasesEnabled={isReleasesEnabled}\n isDraftModelEnabled={isDraftModelEnabled}\n />\n </Inline>\n\n <Flex flex={1} gap={1} style={narrowFilterStyle}>\n {loadingOrHasReleases &&\n (releaseFilterDate ? (\n <DateFilterButton filterDate={releaseFilterDate} onClear={clearFilterDate} />\n ) : (\n currentArchivedPicker\n ))}\n </Flex>\n <Flex flex=\"none\" gap={2} style={narrowTimezoneStyle}>\n <Button\n icon={EarthGlobeIcon}\n mode=\"bleed\"\n onClick={dialogTimeZoneShow}\n {...timeZoneButtonProps}\n />\n {DialogTimeZone && <DialogTimeZone {...dialogProps} />}\n {loadingOrHasReleases && createReleaseButton}\n </Flex>\n </Flex>\n </Card>\n {showReleaseNotFound && (\n <ReleaseNotFoundBanner onDismiss={handleDismissReleaseNotFound} />\n )}\n {showDraftsDisabledBanner && (\n <DraftsDisabledBanner\n isDraftModelEnabled={isDraftModelEnabled}\n isScheduledDraftsEnabled={isScheduledDraftsEnabled}\n allReleases={allReleases}\n />\n )}\n {showConfirmActiveScheduledDraftsBanner && (\n <ConfirmActiveScheduledDraftsBanner\n releases={releases}\n releaseGroupMode={releaseGroupMode}\n hasDateFilter={Boolean(releaseFilterDate)}\n onNavigateToPaused={handleNavigateToPaused}\n />\n )}\n\n {hasNoReleases ? (\n renderNoReleasesEmptyState()\n ) : (\n <Box\n ref={setScrollContainerRef}\n marginTop={hasBannerAboveTable ? 0 : 3}\n overflow=\"auto\"\n >\n <Table<TableRelease>\n // for resetting filter and sort on table when filer changed\n key={releaseFilterDate ? 'by_date' : releaseGroupMode}\n defaultSort={defaultTableSort}\n loading={loadingTableData}\n data={filteredReleases}\n columnDefs={tableColumns}\n emptyState={tableEmptyState}\n // oxlint-disable-next-line @sanity/i18n/no-attribute-string-literals\n rowId=\"_id\"\n rowActions={renderRowActions}\n rowProps={getRowProps}\n scrollContainerRef={scrollContainerRef}\n hideTableInlinePadding\n />\n </Box>\n )}\n </Flex>\n </Flex>\n {isCreateReleaseDialogOpen && (\n <CreateReleaseDialog\n onCancel={() => setIsCreateReleaseDialogOpen(false)}\n onSubmit={handleOnCreateRelease}\n origin=\"release-plugin\"\n />\n )}\n </Flex>\n )\n}\n","import {useRouter} from 'sanity/router'\n\nimport {ReleaseDetail} from './detail/ReleaseDetail'\nimport {ReleasesOverview} from './overview/ReleasesOverview'\n\nexport function ReleasesTool() {\n const router = useRouter()\n\n const {releaseId} = router.state as {releaseId?: string}\n if (releaseId) return <ReleaseDetail key={releaseId} />\n\n return <ReleasesOverview />\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ReleasesTool-BjbRMZlc.js","names":["format","RouterContextValue","SearchParam","Mode","CardinalityView","GROUP_SEARCH_PARAM_KEY","RELEASE_NOT_FOUND_SEARCH_PARAM_KEY","DATE_SEARCH_PARAM_KEY","VIEW_SEARCH_PARAM_KEY","DATE_SEARCH_PARAM_VALUE_FORMAT","getInitialReleaseNotFound","router","URLSearchParams","state","_searchParams","get","getInitialFilterDate","activeFilterDate","Date","undefined","getInitialReleaseGroupMode","activeGroupMode","getInitialCardinalityView","isScheduledDraftsEnabled","isReleasesEnabled","cardinalityView","buildReleasesSearchParams","releaseFilterDate","releaseGroupMode","params","push","SanityClient","BehaviorSubject","Observable","catchError","map","scan","shareReplay","startWith","switchMap","tap","getReleaseIdFromReleaseDocumentId","ReleaseEvent","ReleaseEventsObservableValue","events","nextCursor","loading","error","Error","INITIAL_VALUE","removeDupes","prev","next","noDupes","reduce","acc","event","has","id","set","Map","Array","from","values","addEventData","Omit","timestamp","type","origin","InitialFetchEventsOptions","client","releaseId","getReleaseActivityEvents","events$","reloadEvents","loadMore","refetchEventsTrigger$","cursor","fetchEvents","limit","params","URLSearchParams","toString","append","observable","request","url","config","dataset","tag","pipe","response","console","sort","a","b","Date","getTime","lastCursorUsed","getValue","ReleaseDocument","ReleaseType","TransactionLogEventWithEffects","applyMendozaPatch","getReleaseIdFromReleaseDocumentId","ReleaseEvent","buildReleaseEditEvents","transactions","release","_rev","id","console","error","releaseEditEvents","currentDocument","transaction","effect","effects","_id","before","revert","changed","releaseType","intendedPublishDate","state","push","type","timestamp","author","releaseName","origin","metadata","intendedPublishAt","Object","values","length","change","ReleaseDocument","SanityClient","TransactionLogEventWithEffects","catchError","distinctUntilChanged","expand","filter","from","map","Observable","of","reduce","scan","shareReplay","startWith","switchMap","tap","getTransactionsLogs","buildReleaseEditEvents","ReleaseEvent","TRANSLOG_ENTRY_LIMIT","documentTransactionsCache","Record","Object","create","removeDupes","newTransactions","oldTransactions","seen","Set","concat","transaction","has","id","add","getReleaseTransactions","documentId","client","toTransaction","cacheKey","cachedTransactions","length","fetchLogs","options","fromTransaction","tag","effectFormat","limit","reverse","pipe","response","undefined","allTransactions","batch","transactions","EditEventsObservableValue","editEvents","loading","error","Error","INITIAL_VALUE","getReleaseActivityEventsOpts","observeDocument$","getReleaseEditEvents","Boolean","prev","next","_rev","release","_id","console","acc","current","ReleaseType","ReleaseEvent","CreateReleaseEvent","ScheduleReleaseEvent","UnscheduleReleaseEvent","PublishReleaseEvent","ArchiveReleaseEvent","UnarchiveReleaseEvent","AddDocumentToReleaseEvent","DiscardDocumentFromReleaseEvent","EditReleaseEvent","BaseEvent","timestamp","author","releaseName","id","origin","type","change","Change","publishAt","documentId","documentType","versionId","revisionId","versionRevisionId","intendedPublishDate","releaseType","isCreationEvent","isCreateReleaseEvent","event","isScheduleReleaseEvent","isPublishReleaseEvent","isArchiveReleaseEvent","isUnarchiveReleaseEvent","isAddDocumentToReleaseEvent","isDiscardDocumentFromReleaseEvent","isEditReleaseEvent","isTranslogEvent","isEventsAPIEvent","Exclude","ReleaseDocument","SanityClient","combineLatest","distinctUntilChanged","filter","map","merge","Observable","of","skip","startWith","tap","DocumentPreviewStore","ReleasesReducerState","getReleaseIdFromReleaseDocumentId","RELEASES_STUDIO_CLIENT_OPTIONS","getReleaseActivityEvents","getReleaseEditEvents","isCreateReleaseEvent","isEventsAPIEvent","isTranslogEvent","ReleaseEvent","getReleaseEventsOpts","client","releaseId","releasesState$","documentPreviewStore","eventsAPIEnabled","EVENTS_INITIAL_VALUE","events","hasMore","error","loading","notEnabledActivityEvents","ReturnType","events$","nextCursor","reloadEvents","loadMore","getReleaseEvents","observeDocument$","unstable_observeDocument","apiVersion","editEvents$","releaseRev$","pipe","state","releases","get","_rev","Boolean","activityEvents","groqFilter","documentsCount$","unstable_observeDocumentIdSet","status","documentIds","length","sideEffects$","activity","edit","editEvents","sort","a","b","Date","parse","timestamp","reduce","acc","event","creationEvent","find","push","indexOf","deduplicateEvents","index","nextEvent","type","areTheSameDate","date1","date2","time1","getTime","time2","Math","abs","useMemo","useObservable","useClient","useDocumentPreviewStore","useSource","useReleasesStore","getReleaseDocumentIdFromReleaseId","RELEASES_STUDIO_CLIENT_OPTIONS","EVENTS_INITIAL_VALUE","getReleaseEvents","ReleaseEvent","ReleaseEvents","events","loading","error","Error","loadMore","hasMore","useReleaseEvents","releaseId","$","_c","client","documentPreviewStore","state$","releasesState$","source","eventsAPIEnabled","Boolean","beta","eventsAPI","releases","t0","releaseEvents","events$","t1","ReleaseState","getPublishedId","getReleaseIdFromReleaseDocumentId","isArchivedRelease","releaseState","ReleaseDocumentIntentOptions","documentId","documentTypeName","releaseId","documentRevision","isCardinalityOneRelease","variantId","path","getReleaseDocumentIntent","params","Record","searchParams","releaseName","intentParams","scheduledDraft","rev","inspect","historyEvent","historyVersion","archivedRelease","undefined","id","type","ReleaseState","Card","useMemo","RefAttributes","IntentLink","PreviewLayoutKey","DocumentPreviewPresence","SanityDefaultPreview","useDocumentPresence","useDocumentPreviewValues","getPublishedId","getReleaseIdFromReleaseDocumentId","getReleaseDocumentIntent","ReleaseDocumentPreviewProps","documentId","documentTypeName","releaseId","releaseState","documentRevision","hasValidationError","layout","isGoingToBePublished","isCardinalityOneRelease","variantId","ReleaseDocumentPreview","t0","$","_c","t1","undefined","documentPresence","t2","params","searchParams","t3","LinkComponent","linkProps","ref","rest","t4","length","previewPresence","t5","t6","t7","documentType","perspectiveStack","isLoading","previewLoading","value","resolvedPreview","t8","t9","t10","Card","Flex","Stack","Text","motion","memo","ReactNode","useMemo","styled","UserAvatar","useDateTimeFormat","useRelativeTime","useTranslation","Translate","releasesLocaleNamespace","ReleaseDocumentPreview","AddDocumentToReleaseEvent","DiscardDocumentFromReleaseEvent","isAddDocumentToReleaseEvent","isCreateReleaseEvent","isDiscardDocumentFromReleaseEvent","isEditReleaseEvent","isScheduleReleaseEvent","ReleaseEvent","StatusText","ACTIVITY_TEXT_118N","Record","addDocumentToRelease","archiveRelease","createRelease","discardDocumentFromRelease","publishRelease","scheduleRelease","unarchiveRelease","unscheduleRelease","editRelease","ReleaseEventDocumentPreview","t0","$","_c","event","releaseId","t1","documentId","documentType","ScheduleTarget","children","Symbol","for","dateStyle","timeStyle","dateTimeFormat","t","t2","bb0","change","releaseType","t3","dateString","publishAt","intendedPublishDate","format","Date","formattedDate","t4","t5","FadeInCard","create","ActivityTimestamp","timestamp","date","useTemporalPhrase","minimal","relativeTime","toISOString","t6","ReleaseActivityListItem","releaseTitle","opacity","type","bounce","duration","author","t7","t8","t9","t10","t11","t12","t13","prevProps","nextProps","id","displayName","Box","useVirtualizer","AnimatePresence","useEffect","useMemo","useRef","styled","LoadingBlock","isAddDocumentToReleaseEvent","isDiscardDocumentFromReleaseEvent","isEventsAPIEvent","isTranslogEvent","ReleaseEvent","ReleaseActivityListItem","estimateSize","event","VirtualContainer","ReleaseActivityListProps","events","releaseTitle","releaseId","hasMore","loadMore","isLoading","ReleaseActivityList","virtualizerContainerRef","HTMLDivElement","listEvents","lastEventFromEventsAPI","reverse","find","lastEventDate","Date","timestamp","filter","virtualizer","count","length","getScrollElement","current","i","overscan","paddingEnd","virtualItems","getVirtualItems","lastItem","at","index","height","getTotalSize","width","position","map","virtualRow","isLoaderRow","key","measureElement","top","left","transform","start","ReleaseDocument","CloseIcon","Box","Card","Flex","Layer","Text","useLayer","AnimatePresence","motion","useEffect","TrapFocus","styled","Button","LoadingBlock","Resizable","useTranslation","releasesLocaleNamespace","ReleaseEvents","ReleaseActivityList","ReleaseDashboardActivityPanelProps","events","release","show","overlay","onClose","MotionFlex","create","MotionCard","FillHeight","div","OverlayEscapeHandler","t0","$","_c","isTopLayer","t1","t2","handleKeyDown","event","key","window","addEventListener","removeEventListener","ReleaseDashboardActivityPanel","undefined","t","tCore","t3","t4","content","t5","t6","error","length","t7","loading","t8","metadata","title","t9","hasMore","loadMore","_id","t10","t11","t12","opacity","duration","position","inset","zIndex","background","t13","x","type","bounce","top","right","bottom","display","flexDirection","preventScroll","flex","height","t14","t15","width","maxHeight","DocumentInRelease","isGoingToUnpublish","getDocumentValidationLoading","documents","hasError","isValidating","validatedCount","forEach","doc","document","isValidated","validation","ReleaseDocument","InfoOutlineIcon","Card","Flex","Stack","Text","addDays","format","useMemo","useProjectSubscriptions","useTimeZone","useTranslation","Translate","CONTENT_RELEASES_TIME_ZONE_SCOPE","releasesLocaleNamespace","ArchivedReleaseBanner","t0","$","_c","release","state","t","tRelease","projectSubscriptions","retentionDays","featureTypes","retention","features","attributes","maxRetentionDays","utcToCurrentZoneDate","t1","bb0","_updatedAt","t2","_removalDate","Date","removalDate","Symbol","for","t3","t4","t5","Link","_temp","t6","children","EditableReleaseDocument","ReleaseDocument","useCallback","useEffect","useRef","useState","DetailIdentity","useTranslation","useWorkspace","getIsReleaseOpen","TitleDescriptionForm","useReleaseOperations","useReleasePermissions","ReleaseDetailsEditorProduction","t0","$","_c","release","updateRelease","timer","setTimer","undefined","checkWithPermissionGuard","hasUpdatePermission","setHasUpdatePermission","t1","changedValue","clearTimeout","newTimer","setTimeout","handleOnChange","isMounted","t2","t3","current","then","hasPermission","_id","t4","t5","Boolean","t6","ReleaseDetailsEditorVariants","t","metadata","title","description","ReleaseDetailsEditor","variantsEnabled","beta","variants","enabled","format","useCallback","useTimeZone","TableRelease","getPublishDateFromRelease","useReleaseTime","$","_c","t0","Symbol","for","type","timeZone","utcToCurrentZoneDate","getLocalTimeZone","const","t1","abbreviation","localeTimeZoneAbbreviation","t2","getTimezoneAbbreviation","t3","release","opts","publishDate","zoned","compact","LockIcon","Box","Flex","Text","useTranslation","useReleaseTime","releasesLocaleNamespace","ARCHIVED_RELEASE_STATES","isReleaseScheduledOrScheduling","TableRelease","ReleaseTime","React","FC","release","t0","$","_c","t","tRelease","getReleaseTime","metadata","releaseType","t1","t2","Symbol","for","opacity","t3","isScheduledOrScheduling","state","includes","isInArchivedView","t4","t5","t6","t7","format","isBefore","isValid","parse","startOfMinute","useCallback","LazyTextInput","useTimeZone","CONTENT_RELEASES_TIME_ZONE_SCOPE","dateInputFormat","ReleaseDateInput","props","$","_c","setIsIntendedScheduleDateInPast","intendedPublishAt","setIntendedPublishAt","utcToCurrentZoneDate","zoneDateToUtc","t0","intendedPublishAtTimezoneAdjusted","t1","event","parsedDate","currentTarget","value","Date","handlePublishAtInputChange","t2","undefined","t3","ReleaseType","PublishIcon","Card","Flex","Spinner","Stack","TabList","Text","useClickOutsideEvent","useToast","isBefore","startOfMinute","isEqual","useCallback","useMemo","useRef","useState","styled","Button","Popover","Tab","Tooltip","MONTH_PICKER_VARIANT","CalendarLabels","DatePicker","getCalendarLabels","useTranslation","CONTENT_RELEASES_TIME_ZONE_SCOPE","useWorkspace","ReleaseAvatar","useReleaseTime","releasesLocaleNamespace","useReleaseOperations","getIsScheduledDateInPast","getReleaseTone","getPublishDateFromRelease","isReleaseScheduledOrScheduling","NotArchivedRelease","ReleaseTime","ReleaseDateInput","ScheduleTrigger","button","ReleaseTypePicker","props","$","_c","release","variantsEnabled","Boolean","beta","variants","enabled","popoverRef","buttonRef","inputRef","datePickerRef","t","tRelease","updateRelease","toast","getReleaseTime","open","setOpen","releaseType","setReleaseType","metadata","t0","publishDate","isUpdating","setIsUpdating","t1","Date","isIntendedScheduleDateInPast","setIsIntendedScheduleDateInPast","t2","undefined","intendedPublishAt","setIntendedPublishAt","t3","toISOString","updatedDate","t4","calendarLabels","t5","dialog","document","querySelector","newRelease","push","closable","status","title","finally","close","t6","Symbol","for","current","t7","isPublishDateInPast","t8","isReleaseScheduled","t9","bb0","state","t10","date","publishDateLabel","bb1","t11","compact","compactLabel","pickedReleaseType","nextPublishAt","handleButtonReleaseTypeChange","t12","cleanDate","handlePublishAtCalendarChange","t13","handleOnPickerClick","t14","tone","t15","bb2","t16","releaseTypeIcon","t17","productionLabelContent","t18","t19","t20","t21","t22","t23","t24","t25","t26","t27","t28","t29","t30","t31","carousel","t32","popoverContent","t33","borderRadius","placement","content","t34","opacity","t35","valueText","t36","background","t37","Card","Text","useTranslation","releasesLocaleNamespace","getDocumentValidationLoading","DocumentInRelease","TRANSPARENT_BG","background","const","ReleaseValidationBadge","t0","$","_c","documents","t","totalCount","length","t1","t2","hasError","validatedCount","isValidating","tone","label","t3","t4","degreesToRadians","degrees","Math","PI","ProgressIcon","props","$","_c","progress","rest","t0","circlePath","partialCircle","length","map","_temp","join","undefined","d","t1","t2","Symbol","for","t3","vs","cx","cy","r","start","end","fromX","cos","fromY","sin","toX","toY","large","abs","sweep","CheckmarkCircleIcon","ErrorOutlineIcon","Card","CardTone","Flex","Text","useEffect","useMemo","useState","ProgressIcon","Tooltip","useTranslation","releasesLocaleNamespace","getDocumentValidationLoading","DocumentInRelease","ValidationProgressIndicator","t0","$","_c","documents","layout","t1","undefined","totalCount","length","t2","validatedCount","isValidating","hasError","showCheckmark","setShowCheckmark","hasFinishedOnce","setHasFinishedOnce","t","isFinished","isMinimal","t3","timer","setTimeout","clearTimeout","t4","t5","t6","tone","cardBackground","t7","t8","background","t9","t10","t11","t12","ReleaseDocument","CheckmarkCircleIcon","ClockIcon","DocumentsIcon","ErrorOutlineIcon","PinIcon","PinFilledIcon","UserIcon","WarningOutlineIcon","Box","Card","Container","Flex","Skeleton","Stack","Text","useCallback","useEffect","useRef","useState","Button","ToneIcon","DetailPropertiesPanel","DetailPropertiesSection","RelativeTime","TextWithTone","UserAvatar","Details","useTranslation","usePerspective","useSetPerspective","useWorkspace","ReleaseAvatar","releasesLocaleNamespace","useReleaseOperations","useReleasePermissions","getDocumentValidationLoading","getReleaseIdFromReleaseDocumentId","isNotArchivedRelease","ArchivedReleaseBanner","isCreateReleaseEvent","ReleaseEvent","ReleaseDetailsEditor","ReleaseTypePicker","ReleaseValidationBadge","DocumentInRelease","ValidationProgressIndicator","ReleaseDashboardDetailsProduction","t0","$","_c","release","documents","shouldDisplayError","shouldDisplayWarnings","isAtTimeRelease","isReleaseOpen","t","tRelease","tCore","t1","_id","releaseId","selectedReleaseId","setPerspective","document","drafts","t2","enabled","isDraftModelEnabled","isSelected","t3","metadata","title","releaseFullTitle","t4","handlePinRelease","t5","Symbol","for","t6","placement","content","t7","t8","t9","t10","t11","t12","t13","error","message","t14","t15","t16","ReleaseDashboardDetails","events","loading","undefined","state","checkWithPermissionGuard","publishRelease","schedule","variantsEnabled","Boolean","beta","variants","createAuthor","find","author","validation","isFullyValidated","length","validatedCount","statusTone","hasError","statusGlyphIcon","background","statusGlyph","releaseType","isActive","shouldDisplayPermissionWarning","setShouldDisplayPermissionWarning","isMounted","intendedPublishAt","current","then","hasPermission","Date","hasPermission_0","minWidth","icon","label","value","width","height","String","t17","t18","t19","_createdAt","t20","t21","rows","t22","t23","t24","t25","t26","t27","t28","ReleaseDocument","memo","ReactNode","useEffect","GetHookCollectionState","ReleaseActionComponent","ReleaseActionDescription","DocumentInRelease","ReleaseActionsResolverProps","actions","release","documents","onActions","children","props","states","ReleaseActionsStateHandler","t0","$","_c","renderChildren","t1","t2","t3","ReleaseActionsResolver","actionProps","ReleaseDocument","useMemo","ReleaseActionComponent","useSource","DocumentInRelease","useCustomReleaseActions","release","t0","$","_c","t1","undefined","documents","source","t2","bb0","releases","actions","t3","Symbol","for","customReleaseActions","Text","useCallback","useRouter","useTranslation","releasesLocaleNamespace","getReleaseIdFromReleaseDocumentId","ActionResult","DuplicateReleaseToastLink","t0","$","_c","actionResult","router","t","t1","navigate","releaseId","navigateToDuplicateRelease","t2","Symbol","for","cursor","marginBottom","display","t3","t4","DefinedTelemetryLog","ButtonTone","ArchivedRelease","DeletedRelease","DuplicatedRelease","UnarchivedRelease","UnscheduledRelease","ReleaseAction","BaseReleaseActionsMap","toastSuccessI18nKey","toastFailureI18nKey","telemetry","DialogActionsMap","confirmDialog","dialogId","dialogHeaderI18nKey","dialogDescriptionI18nKey","dialogConfirmButtonI18nKey","confirmButtonTone","RELEASE_ACTION_MAP","Record","Exclude","delete","archive","unarchive","unschedule","duplicate","ReleaseDocument","ErrorOutlineIcon","PublishIcon","useTelemetry","Checkbox","Flex","Stack","Text","useToast","ChangeEvent","useCallback","useEffect","useMemo","useRef","useState","Button","Dialog","MenuItem","ToneIcon","TooltipProps","useTranslation","Translate","usePerspective","useSetPerspective","useWorkspace","PublishedRelease","releasesLocaleNamespace","isReleaseDocument","useReleaseOperations","useReleasePermissions","isGoingToUnpublish","DocumentInRelease","ReleasePublishAllButtonProps","release","documents","disabled","isMenuItem","onConfirmDialogOpen","onConfirmDialogClose","ReleasePublishAllButton","t0","$","_c","t1","undefined","toast","publishRelease","discardDrafts","checkWithPermissionGuard","t","tCore","perspective","setPerspective","telemetry","document","drafts","t2","enabled","isDraftModelEnabled","publishBundleStatus","setPublishBundleStatus","shouldUpdateDrafts","setShouldUpdateDrafts","publishPermission","setPublishPermission","t3","filter","_temp","map","_temp2","draftDocumentIds","draftDocumentsCount","length","showUpdateDraftsOption","t4","some","_temp3","isValidatingDocuments","t5","_temp4","hasDocumentValidationErrors","isPublishButtonDisabled","isMounted","t6","_id","current","then","hasPermission","t7","metadata","intendedPublishAt","t8","selectedPerspective","run","log","catch","updateDraftsError","push","status","title","error","message","console","t9","publishingError","handleConfirmPublishAll","bb0","t10","t11","t12","t13","t14","t15","confirmButton","text","tone","onClick","loading","t16","t17","releaseDocumentsLength","count","t18","t19","event","currentTarget","checked","draftDocumentsLength","t20","t21","confirmPublishDialog","bb1","tooltipText","publishTooltipContent","handleInitialPublish","content","placement","Partial","icon","handleOnClick","tooltipProps","sharedProps","releaseDocument","draftDocumentExists","releaseDocument_0","validation","isValidating","validation_0","hasError","ReleaseDocument","ClockIcon","ErrorOutlineIcon","useTelemetry","Card","Flex","Stack","Text","useToast","format","isBefore","isValid","parse","startOfMinute","isEqual","useCallback","useEffect","useMemo","useRef","useState","Button","Dialog","MenuItem","ToneIcon","TooltipProps","MONTH_PICKER_VARIANT","CalendarLabels","DateTimeInput","TimeZoneButton","TimeZoneButtonElementQuery","getCalendarLabels","useTimeZone","useTranslation","Translate","CONTENT_RELEASES_TIME_ZONE_SCOPE","ScheduledRelease","releasesLocaleNamespace","useReleaseOperations","useReleasePermissions","isReleaseScheduledOrScheduling","DocumentInRelease","ReleaseScheduleButtonProps","release","documents","disabled","isMenuItem","onConfirmDialogOpen","onConfirmDialogClose","ReleaseScheduleButton","t0","$","_c","t1","undefined","toast","schedule","updateRelease","checkWithPermissionGuard","schedulePermission","setSchedulePermission","t","tCore","telemetry","utcToCurrentZoneDate","zoneDateToUtc","timeZone","status","setStatus","publishAt","setPublishAt","rerenderDialog","setRerenderDialog","t2","timeZoneAdjustedPublishAt","t3","some","_temp","isValidatingDocuments","t4","_temp2","hasDocumentValidationErrors","isScheduleButtonDisabled","isMounted","t5","_id","current","Date","then","hasPermission","t6","metadata","intendedPublishAt","t7","isScheduledDateInPast","t8","newRelease","releaseType","const","toISOString","_temp3","run","log","push","closable","title","t9","schedulingError","error","message","console","handleConfirmSchedule","calendarLabels","t10","Symbol","for","date","handleBundlePublishAtCalendarChange","t11","event","date_0","currentTarget","value","parsedDate","handleBundleInputChange","t12","handleOnDialogClose","t13","bb0","t14","_isScheduledDateInPast","t15","length","documentsLength","count","t16","t17","t18","t19","text","tone","onClick","loading","t20","t21","t22","confirmButton","cancelButton","t23","t24","t25","t26","t27","alternativeName","offset","t28","t29","t30","t31","carousel","t32","t33","t34","t35","t36","t37","confirmScheduleDialog","handleOnInitialSchedule","bb1","tooltipText","scheduleTooltipContent","content","placement","Partial","icon","handleOnClick","tooltipProps","sharedProps","validation","isValidating","validation_0","hasError","cur","ArchiveIcon","CloseCircleIcon","CopyIcon","TrashIcon","UnarchiveIcon","Dispatch","MouseEventHandler","SetStateAction","useCallback","useEffect","useMemo","useRef","useState","MenuItem","useTranslation","releasesLocaleNamespace","useReleaseOperations","useReleasePermissions","getReleaseDefaults","DocumentInRelease","ReleasePublishAllButton","ReleaseScheduleButton","ReleaseAction","ReleaseMenuButtonProps","ReleaseMenuProps","Omit","disabled","setSelectedAction","documents","ReleaseMenu","t0","$","_c","ignoreCTA","release","releaseMenuDisabled","t","archive","unarchive","deleteRelease","publishRelease","schedule","createRelease","checkWithPermissionGuard","hasArchivePermission","setHasArchivePermission","hasUnarchivePermission","setHasUnarchivePermission","hasDeletePermission","setHasDeletePermission","hasPublishPermission","setHasPublishPermission","hasSchedulePermission","setHasSchedulePermission","hasDuplicatePermission","setHasDuplicatePermission","isMounted","t1","_id","state","current","then","hasPermission","hasPermission_0","hasPermission_1","Date","hasPermission_2","hasPermission_3","hasPermission_4","t2","metadata","releaseType","t3","event","action","currentTarget","getAttribute","handleOnInitiateAction","t4","bb0","t5","t6","t7","t8","content","t9","includes","t10","archiveUnarchiveMenuItem","bb1","deleteMenuItem","bb2","unscheduleMenuItem","bb3","undefined","t11","scheduleMenuItem","bb4","t12","publishMenuItem","bb5","t13","t14","duplicateMenuItem","bb6","ActionsOrder","ReleaseDocument","Card","Flex","Stack","Text","useTranslation","ReleaseAvatar","ReleaseTitle","ReleaseTime","ReleasePreviewCard","t0","$","_c","release","t","t1","t2","metadata","title","t3","t4","Symbol","for","weight","size","t5","t6","t7","t8","ReleaseDocument","SingleActionResult","EllipsisHorizontalIcon","useTelemetry","Menu","MenuDivider","Spinner","Stack","Text","useClickOutsideEvent","useToast","SetStateAction","useCallback","useEffect","useMemo","useRef","useState","RouterContext","useRouter","Button","Dialog","MenuItem","Popover","ReleaseActionDescription","useTranslation","Translate","TranslateComponentMap","usePerspective","useSetPerspective","useWorkspace","ReleaseActionsResolver","useReleasesUpsell","useCustomReleaseActions","releasesLocaleNamespace","isReleaseLimitError","useReleaseOperations","createReleaseId","getReleaseIdFromReleaseDocumentId","DocumentInRelease","DuplicateReleaseToastLink","RELEASE_ACTION_MAP","ReleaseAction","ReleaseMenu","ReleasePreviewCard","ActionResult","releaseId","toastActionComponents","Partial","Record","actionResult","duplicate","Link","ReleaseMenuButtonProps","ignoreCTA","release","documentsCount","documents","ReleaseMenuButton","t0","$","_c","toast","router","archive","unarchive","deleteRelease","unschedule","duplicateRelease","isPerformingOperation","setIsPerformingOperation","selectedAction","setSelectedAction","selectedReleaseId","setPerspective","popoverRef","releaseMenuRef","openPopover","setOpenPopover","t1","customActions","t2","Symbol","for","customActionDescriptions","setCustomActionDescriptions","t3","actions","filter","Boolean","handleCustomActionsUpdate","releaseMenuDisabled","t","tCore","telemetry","guardWithReleaseLimitUpsell","t4","metadata","title","releaseTitle","isActionPublishOrSchedule","document","drafts","t5","enabled","isDraftModelEnabled","t6","_id","navigate","handleDelete","t7","handleUnarchive","t8","duplicateReleaseId","releaseDocuments","map","_temp","duplicatedMetadata","handleDuplicate","t9","action","actionLookup","delete","actionValues","run","log","toastSuccessI18nKey","toastComponents","push","closable","status","catch","actionError","toastFailureI18nKey","error","toString","console","finally","undefined","handleAction","t10","confirmDialog","t11","t12","bb0","t13","dialogId","t14","t15","dialogHeaderI18nKey","t16","t17","dialogConfirmButtonI18nKey","t18","t19","confirmButtonTone","text","tone","onClick","loading","disabled","t20","t21","confirmButton","cancelButton","t22","t23","dialogDescriptionI18nKey","count","t24","t25","confirmActionDialog","closePopover","handleOnButtonClick","current","action_0","handleSetSelectedAction","action_1","onHandle","handleOnActionClick","action_2","index","icon","label","content","customActionMenuItems","hasCustomActions","length","t26","t27","t28","t29","t30","t31","t32","t33","doc","promiseWithResolvers","resolve","value","T","PromiseLike","reject","reason","promise","Promise","res","rej","SanityDocument","useCallback","useEffect","useMemo","useRef","useSyncObservable","catchError","forkJoin","from","map","Observable","of","switchMap","useClient","getTransactionsLogs","getPublishedId","promiseWithResolvers","RELEASES_STUDIO_CLIENT_OPTIONS","DocumentInRelease","RevertDocument","_system","delete","RevertDocuments","DocumentRevertStates","useDocumentRevertStates","releaseDocuments","$","_c","client","observableClient","observable","transactionId","document","_rev","t0","config","dataset","resultPromiseRef","resolvedDocumentRevertStatesPromiseRef","resolvedDocumentRevertStatesResultRef","t1","t2","Symbol","for","current","promise","resolve","t3","bb0","length","t4","undefined","publishedDocuments","_temp","_temp2","toTransaction","reverse","pipe","transactions","getDocumentTransaction","docId","find","t5","documentIDs","includes","id","document_1","_id","revisionId","docRevisionPairs","t6","docId_0","publishedDocumentExists","unpublishDocument","document_2","request","url","_temp3","err","console","error","_temp5","_temp6","documentRevertStates$","memoDocumentRevertStates","documentRevertStatesResult","Promise","document_0","documents","revertDocument","_temp4","result","results","filter","err_0","useMemo","useObservable","catchError","from","map","of","useClient","getTransactionsLogs","getPublishedId","RELEASES_STUDIO_CLIENT_OPTIONS","DocumentInRelease","usePostPublishTransactions","documents","$","_c","client","transactionId","document","_rev","t0","bb0","length","t1","Symbol","for","_temp","fromTransaction","limit","pipe","_temp2","_temp3","memoHasPostPublishTransactions","_id","transactions","ReleaseDocument","RestoreIcon","useTelemetry","Box","Card","Checkbox","Flex","Text","useToast","useCallback","useEffect","useRef","useState","useRouter","Button","Dialog","useTranslation","Translate","RevertRelease","useReleasesUpsell","releasesLocaleNamespace","isReleaseLimitError","useReleaseOperations","useReleasePermissions","createReleaseId","getReleaseIdFromReleaseDocumentId","getReleaseDefaults","DocumentInRelease","useDocumentRevertStates","usePostPublishTransactions","ReleasePublishAllButtonProps","release","documents","disabled","RevertReleaseStatus","ConfirmReleaseDialog","t0","$","_c","revertReleaseStatus","setRevertReleaseStatus","t","tCore","t1","metadata","title","releaseDisplayTitle","hasPostPublishTransactions","getDocumentRevertStates","stageNewRevertRelease","setStageNewRevertRelease","toast","telemetry","revertRelease","router","t2","revertReleaseId","navigate","releaseId","navigateToRevertRelease","t3","documentRevertStates","revertReleaseId_0","run","Error","description","releaseType","log","revertType","push","closable","status","Link","cursor","marginBottom","display","catch","revertError","error","message","console","finally","handleRevertRelease","length","t4","t5","t6","t7","t8","t9","t10","confirmButton","text","tone","onClick","loading","t11","releaseDocumentsLength","t12","t13","Symbol","for","_temp","t14","t15","t16","t17","t18","t19","t20","t21","ReleaseRevertButton","guardWithReleaseLimitUpsell","isPendingGuardResponse","setIsPendingGuardResponse","createRelease","checkWithPermissionGuard","hasCreatePermission","setHasCreatePermission","handleMoveToConfirmStatus","isMounted","current","then","hasPermissions","content","ReleaseDocument","CloseCircleIcon","useTelemetry","Text","useToast","useCallback","useMemo","useState","Button","Dialog","useTranslation","Translate","UnscheduledRelease","releasesLocaleNamespace","useReleaseOperations","DocumentInRelease","ReleaseScheduleButtonProps","release","documents","disabled","ReleaseUnscheduleButton","t0","$","_c","toast","unschedule","t","tCore","telemetry","status","setStatus","t1","_id","metadata","title","run","log","catch","schedulingError","push","error","message","console","finally","handleConfirmSchedule","t2","bb0","t3","t4","t5","t6","t7","t8","text","tone","onClick","loading","t9","t10","t11","confirmButton","cancelButton","t12","t13","length","documentsLength","count","t14","t15","confirmScheduleDialog","Symbol","for","ReleaseDocument","isReleaseScheduledOrScheduling","ReleasePublishAllButton","ReleaseRevertButton","ReleaseScheduleButton","ReleaseUnscheduleButton","DocumentInRelease","ReleaseActionButton","t0","$","_c","release","documents","state","t1","length","t2","metadata","releaseType","Box","Card","Flex","Text","ReactNode","StatusItem","props","$","_c","avatar","text","testId","t0","margin","t1","undefined","t2","t3","t4","t5","ReleaseDocument","Flex","useMemo","RelativeTime","AvatarSkeleton","UserAvatar","useTranslation","isNonNullable","releasesLocaleNamespace","StatusItem","isArchiveReleaseEvent","isCreateReleaseEvent","isPublishReleaseEvent","isUnarchiveReleaseEvent","ReleaseEvent","STATUS_TITLE_I18N","createRelease","publishRelease","archiveRelease","unarchiveRelease","ReleaseStatusItems","t0","$","_c","events","release","t","t1","createEvent","find","extraEvent","_temp","filter","footerEvents","length","t2","Symbol","for","t3","t4","_createdAt","t5","map","event_0","event","id","type","author","timestamp","ReleaseDocument","Card","Flex","ReleaseMenuButton","ReleaseEvent","ReleaseActionButton","ReleaseStatusItems","DocumentInRelease","ReleaseDashboardFooter","props","$","_c","documents","release","events","t0","Symbol","for","opacity","t1","t2","t3","metadata","releaseType","t4","length","t5","t6","ReleaseDocument","LinkIcon","ShareIcon","TargetIcon","TextIcon","DefinedTelemetryLog","useTelemetry","Menu","useToast","ComponentType","useCallback","useRouter","Button","MenuButton","MenuItem","useStudioUrl","useTranslation","ReleaseIdCopied","ReleaseLinkCopied","ReleaseTitleCopied","releasesLocaleNamespace","getReleaseIdFromReleaseDocumentId","CopyReleaseActionsProps","release","icon","CopyReleaseActions","props","$","_c","t0","undefined","t","tCore","telemetry","toast","resolvePathFromState","buildIntentUrl","t1","_id","releaseId","t2","metadata","title","t3","text","event","toastKey","navigator","clipboard","writeText","log","push","id","status","copyToClipboard","t4","releasePath","url","handleCopyReleaseLink","t5","handleCopyReleaseId","t6","handleCopyReleaseTitle","t7","t8","content","t9","t10","t11","t12","t13","t14","t15","t16","t17","Symbol","for","placement","t18","EditableReleaseDocument","ReleaseDocument","Card","Flex","Stack","Text","TextArea","TextInput","useToast","ChangeEvent","useCallback","useId","useRef","useState","Button","Dialog","useTranslation","useReleaseOperations","EditReleaseDialog","release","onClose","React","JSX","Element","updateRelease","t","toast","titleId","descriptionId","title","setTitle","metadata","description","setDescription","isSaving","setIsSaving","isSavingRef","handleSave","current","next","err","console","error","push","closable","status","handleClose","event","HTMLInputElement","currentTarget","value","HTMLTextAreaElement","ReleaseDocument","useEffect","useRef","useState","getIsReleaseOpen","useReleaseOperations","useReleasePermissions","useCanEditRelease","release","$","_c","updateRelease","checkWithPermissionGuard","hasUpdatePermission","setHasUpdatePermission","t0","isReleaseOpen","isMounted","t1","t2","current","then","hasPermission","Boolean","ReleaseDocument","EditIcon","useState","Button","DetailActionRail","useTranslation","EditReleaseDialog","ReleaseMenuButton","ReleaseActionButton","DocumentInRelease","useCanEditRelease","ReleaseActionRail","t0","$","_c","release","documents","t","editOpen","setEditOpen","canEdit","t1","content","undefined","t2","t3","metadata","releaseType","t4","length","t5","t6","t7","ReleaseDocument","ChevronRightIcon","RestoreIcon","Box","Button","Container","Flex","Text","Dispatch","SetStateAction","useCallback","useRouter","DetailBackButton","useTranslation","useWorkspace","releasesLocaleNamespace","GROUP_SEARCH_PARAM_KEY","CopyReleaseActions","ReleaseActionRail","ReleaseInspector","DocumentInRelease","ReleaseDashboardHeader","props","$","_c","documents","inspector","release","setInspector","t","tCore","t0","metadata","title","router","beta","variantsEnabled","Boolean","variants","enabled","t1","state","isReleaseOpen","navigate","_searchParams","undefined","handleNavigateToReleasesList","t2","_temp","handleActivityClick","t3","Symbol","for","minWidth","t4","maxWidth","opacity","t5","t6","headerContent","t7","prev","SanityDocument","LayerProvider","PortalProvider","SearchPopover","SearchProvider","AddedDocument","Pick","Partial","AddDocumentSearch","t0","$","_c","open","onClose","releaseId","idsInRelease","t1","t2","t3","isGoingToUnpublish","BundleDocumentRow","DocumentInRelease","DocumentFilterType","DocumentActionConfig","key","tone","labelKey","FilterTabConfig","DOCUMENT_ACTION_CONFIGS","FILTER_TAB_CONFIGS","ActionCounts","Record","countDocumentsByAction","documents","reduce","acc","doc","actionType","getDocumentActionType","validation","hasError","isPending","errors","added","changed","unpublished","documentMatchesFilter","filter","document","willBeUnpublished","publishedDocumentExists","getReleaseDocumentActionConfig","find","ReleaseState","Box","Container","Flex","Skeleton","TabList","useMemo","Tab","useTranslation","releasesLocaleNamespace","countDocumentsByAction","DocumentFilterType","FILTER_TAB_CONFIGS","FilterTabConfig","DocumentInRelease","ReleaseDocumentFilterTabsProps","documents","releaseState","isLoading","activeFilter","onFilterChange","filter","inline","ReleaseDocumentFilterTabs","t0","$","_c","t1","t2","undefined","t","t3","Symbol","for","_temp","map","_temp2","skeletons","t4","length","config_0","config","key","width","height","ReleaseDocumentFilterTabsInnerProps","ReturnType","ReleaseDocumentFilterTabsInner","counts","label","labelKey","count","getTabLabel","tone","getTabTone","config_1","isSelected","t5","tabList","t6","CloseIcon","UnpublishIcon","Box","Card","Label","Menu","MenuDivider","memo","useMemo","useState","MenuButton","MenuItem","ContextMenuButton","useSchema","useTranslation","useDocumentPairPermissions","getPublishedId","getVersionFromId","DiscardVersionDialog","UnpublishVersionDialog","releasesLocaleNamespace","isGoingToUnpublish","BundleDocumentRow","DocumentActionsInner","t0","$","_c","document","releaseTitle","showDiscardDialog","setShowDiscardDialog","showUnpublishDialog","setShowUnpublishDialog","t","coreT","t1","isAlreadyUnpublished","t2","_id","publishedId","type","_type","t3","version","t4","id","permission","discardVersionPermission","isDiscardVersionPermissionsLoading","t5","unpublishPermission","isUnpublishPermissionsLoading","isDiscardVersionActionDisabled","granted","noPermissionToUnpublish","t6","bb0","t7","publishedDocumentExists","unPublishTooltipContent","isUnpublishActionDisabled","Symbol","for","t8","t9","t10","t11","t12","disabled","content","t13","t14","t15","t16","t17","t18","t19","t20","t21","t22","t23","t24","t25","prev","next","memoKey","DocumentActions","GuardedDocumentActions","props","schema","get","TransactionLogEventWithEffects","useCallback","useEffect","useMemo","useRef","useState","useClient","getTransactionsLogs","getVersionId","RELEASES_STUDIO_CLIENT_OPTIONS","historyCache","Record","transactions","Object","create","DocumentHistory","history","createdBy","lastEditedBy","editors","activeHistoryStreams","pendingHistoryResolvers","Array","acquireHistorySlot","maxConcurrent","Promise","resolve","push","releaseHistorySlot","Math","max","next","shift","useReleaseHistory","releaseDocumentId","releaseId","documentRevision","$","_c","client","setHistory","t0","bb0","t1","versionId","resetKey","prevResetKey","setPrevResetKey","cancelledRef","cacheKey","cached","run","tag","effectFormat","excludeContent","includeIdentifiedDocumentsOnly","limit","reverse","current","catch","error","console","finally","_temp","fetchAndParse","t2","t3","t4","bb1","collaborators","documentHistory","undefined","loading","length","aggregated","forEach","item","author","includes","isCreate","mutations","some","_temp2","t5","mutation","ReleaseState","CheckmarkCircleIcon","ClockIcon","ErrorOutlineIcon","Badge","Box","Card","Flex","Skeleton","Text","toString","pathToString","TFunction","CSSProperties","memo","useCallback","useEffect","useRef","useState","IntentLink","styled","ToneIcon","Tooltip","EditedByAvatar","RelativeTime","AvatarSkeleton","UserAvatar","useSchema","SanityDefaultPreview","RhombusIcon","getVariantConditionsText","getVariantIdFromDocument","getVariantTitle","SystemVariant","getReleaseIdFromReleaseDocumentId","isGoingToUnpublish","getReleaseDocumentIntent","ReleaseDocumentPreview","Headers","Column","InjectedTableProps","getDocumentActionType","getReleaseDocumentActionConfig","BundleDocumentRow","DocumentInRelease","useReleaseHistory","MemoReleaseDocumentPreview","t0","$","_c","item","releaseId","releaseState","documentRevision","t1","document","isGoingToBePublished","t2","variantId","t3","_id","_type","prev","next","memoKey","TruncatedSpan","span","DocumentType","type","schema","get","title","elementRef","isTruncated","setIsTruncated","Symbol","for","element","current","scrollWidth","clientWidth","checkTruncation","element_0","observer","ResizeObserver","observe","cancelled","fonts","ready","then","disconnect","measureRef","t4","t5","t6","textElement","t7","t8","MemoDocumentType","documentActionColumn","t","variantsEnabled","id","width","style","minWidth","sorting","sortTransform","value","undefined","header","props","headerProps","cell","cellProps","datum","actionBadge","actionType","documentActionConfig","tone","labelKey","VARIANT_ICON_CARD_STYLE","backgroundColor","VARIANT_ICON_STYLE","color","resolveDocumentVariant","variantsById","Map","variantRef","_system","variant","_ref","VariantCell","T0","T1","T2","t10","t11","t12","t13","t14","t9","bb0","conditions","flex","t15","t16","t17","getDocumentTableColumnDefs","options","searchInCommandLane","variantsLoading","Boolean","isLoading","maxWidth","toLowerCase","height","String","name","isPending","_rev","_updatedAt","errors","validation","filter","level","validationErrorCount","length","firstError","find","error","path","focusPath","intent","documentId","documentTypeName","errorLabel","count","hasError","params","searchParams","isValidating","UpdatedAtCell","releaseDocumentId","bundleId","historyDocumentId","endsWith","documentHistory","loading","lastEditedBy","EditedByReleaseCell","ReleaseDocument","SanityDocument","AddIcon","useTelemetry","Card","Container","Flex","Stack","Text","useToast","CSSProperties","useCallback","useEffect","useMemo","useState","Button","useTranslation","useWorkspace","getVersionId","getDocumentVariantType","isCardinalityOneRelease","useAllVariants","AddedVersion","releasesLocaleNamespace","useReleaseOperations","getReleaseIdFromReleaseDocumentId","DocumentTable","Table","AddDocumentSearch","AddedDocument","ReleaseDocumentFilterTabs","DocumentActions","getDocumentTableColumnDefs","searchDocumentRelease","DocumentFilterType","documentMatchesFilter","DocumentInRelease","DocumentInReleaseDetail","isAdded","BundleDocumentRow","ReleaseSummaryProps","documents","release","isLoading","FULL_HEIGHT_STYLE","height","SCROLL_CONTAINER_STYLE","overflow","scrollbarWidth","msOverflowStyle","FIT_CONTENT_STYLE","minWidth","isBundleDocumentRow","maybeBundleDocumentRow","ReleaseSummary","props","$","_c","t0","undefined","scrollContainerRef","setScrollContainerRef","toast","createVersion","telemetry","openAddDocumentDialog","setAddDocumentDialog","t1","Symbol","for","pendingAddedDocument","setPendingAddedDocument","activeFilter","setActiveFilter","t","beta","variantsEnabled","Boolean","variants","enabled","byId","variantsById","loading","variantsLoading","t2","_id","releaseId","t3","metadata","title","state","rowProps","datum","isPending","renderRowActions","t4","t5","t6","searchInCommandLane","documentTableColumnDefs","t7","handleAddDocumentClick","t8","data","searchTerm","filter","doc","matchesSearch","document","filterRows","t9","documentToAdd","versionDocumentId","pendingAddedDocumentId","pendingDocumentRow","memoKey","validation","isValidating","hasError","publishedDocumentExists","prev","origin","log","documentOrigin","t10","error","prev_0","t11","push","id","closable","status","message","closeAddDialog","documentsNoLongerPending","forEach","pendingDocument","find","document_0","length","prev_1","t12","document_1","includes","tableData","t13","t14","doc_0","filterTabRows","isCardinalityOne","hasNoDocuments","textAlign","maxWidth","t15","t16","t17","t18","t19","addDocumentFooter","addDocumentButton","commandLaneActions","showFilterTabs","column","direction","_temp","_temp2","map","_temp3","document_2","row_0","searchTerm_0","row","ErrorOutlineIcon","Box","Card","Flex","Stack","Text","motion","useEffect","useMemo","useState","useRouter","LoadingBlock","useTranslation","useWorkspace","releasesLocaleNamespace","useActiveReleases","useArchivedReleases","ReleasesRouterState","getReleaseIdFromReleaseDocumentId","RELEASE_NOT_FOUND_SEARCH_PARAM_KEY","useReleaseEvents","ReleaseDashboardActivityPanel","ReleaseDashboardDetails","ReleaseDashboardFooter","ReleaseDashboardHeader","ReleaseSummary","useReleaseDocuments","ReleaseInspector","MotionCard","create","ReleaseDetail","$","_c","router","inspector","setInspector","undefined","t","variantsEnabled","Boolean","beta","variants","enabled","releaseId","releaseIdRaw","state","decodeURIComponent","data","loading","archivedReleases","documentsLoading","results","error","bundleDocumentsError","releaseEvents","t0","t1","candidate","_id","concat","find","releaseInDetail","isNotFound","t2","navigate","_searchParams","replace","t3","bb0","t4","t5","Symbol","for","opacity","t6","t7","t8","t9","t10","t11","detailContent","position","events","t12","t13","useEffect","useReleasesMetadataProvider","ReleasesMetadata","documentCount","updatedAt","useReleasesMetadata","releaseIds","$","_c","addReleaseIdsToListener","addBundleIdsToListener","removeReleaseIdsFromListener","removeBundleIdsFromListener","state","t0","t1","length","Set","data","loading","responseData","hasUpdatedMetadata","Object","entries","some","t2","key","value","t3","t4","releaseId","fromEntries","map","error","FilterIcon","Button","useClickOutsideEvent","ReactNode","useRef","useState","Dialog","Popover","Tooltip","useTranslation","releasesLocaleNamespace","CalendarPopover","t0","$","_c","content","asDialog","buttonRef","popoverRef","isCalendarOpen","setIsCalendarOpen","t","t1","t2","Symbol","for","current","t3","t4","_temp","t5","t6","triggerButton","t7","t8","prev","ReleaseDocument","CalendarIcon","ChevronDownIcon","useTelemetry","Flex","Menu","Text","useCallback","useMemo","Button","MenuButton","MenuItem","useTranslation","isCardinalityOneRelease","NavigatedToReleasesOverview","NavigatedToScheduledDrafts","releasesLocaleNamespace","CardinalityView","CardinalityViewPickerProps","cardinalityView","loading","isScheduledDraftsEnabled","isDraftModelEnabled","isReleasesEnabled","allReleases","onCardinalityViewChange","view","getPickerView","hasSingleDocRelease","CardinalityViewPicker","t0","$","_c","t","telemetry","t1","some","t2","pickerView","t3","telemetryEvent","log","source","handleViewChange","t4","Symbol","for","t5","t6","fontWeight","t7","t8","t9","t10","t11","t12","t13","t14","t15","t16","ReleaseDocument","ScheduleReleaseAction","Stack","Text","useToast","isPast","useCallback","useMemo","useState","Dialog","useClient","useTranslation","releasesLocaleNamespace","getReleaseIdFromReleaseDocumentId","RELEASES_STUDIO_CLIENT_OPTIONS","ConfirmScheduledDraftsDialogProps","activeScheduledDrafts","onClose","useScheduleActiveDrafts","$","_c","client","t0","releases","scheduleActions","flatMap","_temp","action","scheduleActiveDrafts","t1","release","metadata","intendedPublishAt","actionType","releaseId","_id","publishAt","Date","toISOString","ConfirmScheduledDraftsDialog","t","toast","isScheduling","setIsScheduling","some","_temp2","hasPastDates","t2","t3","error","push","status","title","message","handleConfirmSchedules","t4","t5","confirmButton","text","tone","onClick","loading","disabled","t6","t7","t8","t9","t10","ReleaseDocument","WarningOutlineIcon","Box","Card","Flex","Text","useCallback","useMemo","useState","Button","useTranslation","Translate","isCardinalityOneRelease","releasesLocaleNamespace","ConfirmScheduledDraftsDialog","Mode","ConfirmActiveScheduledDraftsBannerProps","releases","releaseGroupMode","hasDateFilter","onNavigateToPaused","ConfirmActiveScheduledDraftsBanner","t0","$","_c","t","isDialogOpen","setIsDialogOpen","t1","filter","_temp","activeScheduledDrafts","shouldOpenDialog","t2","Symbol","for","handleCloseDialog","t3","handleClick","length","t4","buttonText","t5","t6","count","t7","t8","t9","t10","t11","release","state","ReleaseDocument","WarningOutlineIcon","Box","Card","Flex","Text","useMemo","useTranslation","isCardinalityOneRelease","releasesLocaleNamespace","DraftsDisabledBannerProps","isDraftModelEnabled","isScheduledDraftsEnabled","allReleases","DraftsDisabledBanner","t0","$","_c","t","hasSingleDocRelease","some","shouldShowBanner","t1","getBannerMessage","t2","Symbol","for","t3","t4","endOfDay","startOfDay","useCallback","useTimeZone","CONTENT_RELEASES_TIME_ZONE_SCOPE","useTimezoneAdjustedDateTimeRange","$","_c","zoneDateToUtc","t0","date","map","Date","CloseIcon","format","AnimatePresence","motion","useMemo","useState","Button","CalendarDay","CalendarDayProps","CalendarProps","useActiveReleases","shouldShowReleaseInView","CardinalityView","useTimezoneAdjustedDateTimeRange","ReleaseCalendarFilterDayWithCardinality","props","$","_c","data","allReleases","getTimezoneAdjustedDateTimeRange","calendarDayProps","cardinalityView","date","t0","startOfDayForTimeZone","endOfDayForTimeZone","t1","releases","filter","some","release","releasePublishAt","publishAt","metadata","intendedPublishAt","publishDateUTC","Date","releaseType","dayHasReleases","t2","fontWeight","t3","createReleaseCalendarFilterDay","ReleaseCalendarFilterDayComponent","displayName","MotionButton","create","DateFilterButton","filterDate","onClear","isExiting","setIsExiting","handleOnExitComplete","width","opacity","duration","ease","ReleaseDocument","getReleaseIdFromReleaseDocumentId","ReleaseMenuButton","useReleaseDocuments","ReleaseMenuButtonWrapper","t0","$","_c","release","documentsCount","t1","_id","results","documents","t2","CloseIcon","WarningOutlineIcon","Box","Card","Flex","Text","Button","useTranslation","releasesLocaleNamespace","ReleaseNotFoundBannerProps","onDismiss","ReleaseNotFoundBanner","t0","$","_c","t","t1","Symbol","for","t2","t3","t4","t5","content","t6","t7","ReleaseIllustration","$","_c","t0","Symbol","for","Flex","Inline","Text","Button","useTranslation","useReleasesUpsell","releasesLocaleNamespace","ReleaseIllustration","ReleasesEmptyStateProps","createReleaseButton","React","ReactNode","ReleasesEmptyState","t0","$","_c","t","mode","t1","t2","Symbol","for","maxWidth","t3","t4","t5","textAlign","t6","t7","t8","t9","t10","t11","Spinner","getReleaseIdFromReleaseDocumentId","useReleaseDocuments","ValidationProgressIndicator","ReleaseColumnValidationLoading","t0","$","_c","releaseId","t1","rId","results","documents","loading","t2","Text","Props","documentCount","ReleaseDocumentsCounter","t0","$","_c","t1","t2","PinIcon","PinFilledIcon","Box","Card","Flex","Skeleton","Stack","Text","useCallback","useRouter","Button","Tooltip","PREVIEW_SIZES","TitleSkeleton","useTranslation","Translate","usePerspective","useSetPerspective","useWorkspace","ReleaseAvatar","ReleaseTitle","releasesLocaleNamespace","getReleaseIdFromReleaseDocumentId","TableRowProps","VisibleColumn","TableRelease","ReleaseNameCell","t0","$","_c","cellProps","datum","release","router","t","tCore","selectedReleaseId","setPerspective","state","t1","_id","isLoading","releaseId","isArchived","isReleasePinned","document","drafts","t2","enabled","isDraftModelEnabled","t3","handlePinRelease","t4","Symbol","for","default","media","t5","isDeleted","tone","as","onClick","navigate","cardProps","pinButtonIcon","metadata","title","releaseTitle","t6","t7","t8","t9","t10","t11","disabled","content","t12","t13","t14","t15","t16","minWidth","t17","t18","t19","size","weight","style","t20","t21","t22","t23","t24","t25","CheckmarkCircleIcon","ErrorOutlineIcon","WarningOutlineIcon","Card","Flex","Text","TFunction","ToneIcon","Tooltip","RelativeTime","getIsScheduledDateInPast","getPublishDateFromRelease","ReleaseTime","Headers","Column","ReleaseColumnValidationLoading","ReleaseDocumentsCounter","ReleaseNameCell","Mode","TableRelease","enableColumnFormMode","currentMode","column","expectedMode","Error","undefined","releasesOverviewColumnDefs","t","releaseGroupMode","checkColumnMode","id","sorting","width","style","minWidth","maxWidth","header","props","headerProps","cell","sortTransform","release","metadata","releaseType","Infinity","publishDate","Date","getTime","cellProps","datum","isLoading","hidden","publishedAt","_updatedAt","lastActivity","direction","state","documentsMetadata","updatedAtDate","updatedAt","error","hasError","hasWarning","isDeleted","finalDocumentStates","_id","background","length","documentCount","filter","filterNull","value","T","Boolean","ReleaseDocument","EllipsisHorizontalIcon","Menu","Spinner","useClickOutsideEvent","useCallback","useMemo","useRef","useState","useRouter","Button","MenuItem","Popover","useTranslation","useScheduledDraftDocument","useScheduledDraftMenuActions","getPublishedId","isPausedCardinalityOneRelease","getReleaseIdFromReleaseDocumentId","ScheduledDraftMenuButtonWrapper","t0","$","_c","release","t","router","popoverRef","scheduledDraftMenuRef","openPopover","setOpenPopover","firstDocument","scheduledDraftDocument","_id","t1","navigateIntent","id","type","_type","scheduledDraft","handleActionComplete","t2","t3","t4","t5","documentType","documentId","disabled","onActionComplete","actions","dialogs","isPerformingOperation","t6","bb0","state","t7","deleteSchedule","publishNow","t8","schedulePublish","t9","t10","editSchedule","displayedMenuItems","canPerformActions","Boolean","Symbol","for","_temp","handleOnButtonClick","current","t11","t12","t13","t14","t15","content","t16","t17","t18","t19","prev","Flex","Text","Button","useTranslation","useSingleDocReleaseEnabled","singleDocReleaseNamespace","ReleaseIllustration","ScheduledDraftsEmptyState","$","_c","t","mode","t0","t1","Symbol","for","maxWidth","t2","t3","t4","textAlign","t5","t6","t7","t8","t9","ErrorOutlineIcon","Box","Card","Flex","Skeleton","Text","ToneIcon","Tooltip","useTranslation","useScheduledDraftDocument","releasesLocaleNamespace","ReleaseDocumentPreview","VisibleColumn","TableRelease","ScheduledDraftDocumentPreview","t0","$","_c","datum","release","cellProps","t","firstDocument","firstDocumentValidation","loading","documentsLoading","_id","isLoading","undefined","t1","Symbol","for","height","width","t2","T0","T1","T2","t10","t11","t12","t3","t4","t5","t6","t7","t8","t9","_rev","_type","state","validationErrorCount","filter","_temp","length","count","t13","t14","t15","validation","level","useScheduledDraftDocument","getReleaseIdFromReleaseDocumentId","useReleaseHistory","useReleaseCreator","releaseDocumentId","t0","$","_c","isLoading","undefined","t1","releaseId","firstDocument","loading","documentsLoading","documentHistory","historyLoading","_id","t2","Symbol","for","createdBy","t3","Flex","Skeleton","Stack","AvatarSkeleton","UserAvatar","ReleaseTime","VisibleColumn","useReleaseCreator","TableRelease","ScheduledDraftMetadataCell","t0","$","_c","datum","cellProps","createdBy","loading","creatorLoading","isLoading","undefined","_id","metadata","t1","Symbol","for","height","width","t2","t3","t4","t5","WarningOutlineIcon","Flex","Text","ToneIcon","Tooltip","useTranslation","releasesLocaleNamespace","getIsScheduledDateInPast","VisibleColumn","TableRelease","ScheduledDraftWarningCell","t0","$","_c","datum","cellProps","t","t1","state","hasWarning","t2","t3","Flex","TFunction","Headers","Column","ScheduledDraftDocumentPreview","ScheduledDraftMetadataCell","ScheduledDraftWarningCell","Mode","TableRelease","scheduledDraftsOverviewColumnDefs","t","releaseGroupMode","id","sorting","width","style","flex","header","props","headerProps","cell","Box","Container","Flex","motion","useCallback","styled","useSingleDocReleaseEnabled","useSingleDocReleaseUpsell","UpsellPanel","useReleasesUpsell","ReleaseIllustration","CardinalityView","Panel","SingleDocReleasesUpsell","$","_c","mode","upsellData","telemetryLogs","t0","panelPrimaryClicked","handlePrimaryClick","t1","panelSecondaryClicked","handleSecondaryClick","t2","t3","t4","Symbol","for","opacity","duration","ease","t5","t6","image","t7","ReleasesUpsell","SchedulesUpsell","cardinalityView","ReleaseDocument","AddIcon","ChevronDownIcon","EarthGlobeIcon","Box","ButtonMode","Card","Flex","Inline","useMediaIndex","isSameDay","AnimatePresence","motion","CSSProperties","MouseEventHandler","useCallback","useEffect","useMemo","useRef","useState","useRouter","Button","Tooltip","CalendarFilter","useDialogTimeZone","useTimeZone","useTranslation","usePerspective","useSingleDocReleaseEnabled","useScheduledDraftsEnabled","CONTENT_RELEASES_TIME_ZONE_SCOPE","useWorkspace","isCardinalityOneRelease","isPausedCardinalityOneRelease","CreateReleaseDialog","useReleasesUpsell","releasesLocaleNamespace","isReleaseDocument","useActiveReleases","useArchivedReleases","useReleaseOperations","useReleasePermissions","ReleasesMetadata","useReleasesMetadata","getIsScheduledDateInPast","getReleaseTone","filterReleasesForOverview","getReleaseDefaults","shouldShowReleaseInView","Table","TableRowProps","TableSort","CalendarPopover","CardinalityViewPicker","ConfirmActiveScheduledDraftsBanner","DraftsDisabledBanner","buildReleasesSearchParams","CardinalityView","getInitialCardinalityView","getInitialFilterDate","getInitialReleaseGroupMode","getInitialReleaseNotFound","Mode","createReleaseCalendarFilterDay","DateFilterButton","ReleaseMenuButtonWrapper","ReleaseNotFoundBanner","ReleasesEmptyState","releasesOverviewColumnDefs","ScheduledDraftMenuButtonWrapper","ScheduledDraftsEmptyState","scheduledDraftsOverviewColumnDefs","SchedulesUpsell","useTimezoneAdjustedDateTimeRange","MotionButton","create","TableRelease","documentsMetadata","isDeleted","DEFAULT_RELEASES_OVERVIEW_SORT","column","direction","DEFAULT_ARCHIVED_RELEASES_OVERVIEW_SORT","toLocalDateComponents","utcDate","Date","utcToZoneDate","date","tz","getFullYear","getMonth","getDate","ReleasesOverview","$","_c","data","allReleases","loading","loadingReleases","allArchivedReleases","mode","releasesUpsellMode","handleOpenDialog","handleOpenReleasesUpsellDialog","scheduledDraftsMode","isScheduledDraftsEnabled","document","releases","releasesConfig","isReleasesEnabled","Boolean","enabled","isDraftModelEnabled","drafts","router","navigateRef","navigate","t0","releaseGroupMode","setReleaseGroupMode","t1","cardinalityView","t2","releaseFilterDate","setReleaseFilterDate","t3","showReleaseNotFound","setShowReleaseNotFound","isCreateReleaseDialogOpen","setIsCreateReleaseDialogOpen","t4","filter","t5","archivedReleases","t6","_temp","pausedReleases","t7","map","_temp2","releaseIds","releasesMetadata","loadingReleasesMetadata","loadingTableData","length","t","tCore","timeZone","utcToCurrentZoneDate","selectedPerspective","DialogTimeZone","dialogProps","dialogTimeZoneShow","getTimezoneAdjustedDateTimeRange","createRelease","checkWithPermissionGuard","hasCreatePermission","setHasCreatePermission","mediaIndex","isNarrowViewport","t8","minWidth","order","undefined","narrowFilterStyle","t9","marginLeft","narrowTimezoneStyle","timeZoneLabel","abbreviation","namePretty","t10","tooltipProps","content","iconRight","text","timeZoneButtonProps","t11","datum","tone","_id","state","getRowProps","scrollContainerRef","setScrollContainerRef","hasReleases","showDraftsDisabledBanner","loadingOrHasReleases","hasNoReleases","t12","bb0","t13","Symbol","for","t14","release_1","release","publishAt","metadata","intendedPublishAt","tableReleases","isMounted","current","then","hasPermissions","t15","handleDismissReleaseNotFound","t16","t17","currentTarget","t18","value","groupMode","handleReleaseGroupModeChange","view","_searchParams","handleCardinalityViewChange","prevFilterDate","normalized","handleSelectFilterDate","t19","clearFilterDate","t20","handleNavigateToPaused","t21","t22","t23","replace","hasMounted","setHasMounted","t24","t25","showCalendar","t26","t27","initial","opacity","animate","transition","duration","ease","const","t28","disabled","padding","groupModeButtonBaseProps","t29","t30","t31","t32","t33","t34","t35","t36","t37","t38","t39","t40","currentArchivedPicker","t41","handleOnClickCreateRelease","t42","bb1","t43","t44","t45","t46","t47","t48","createReleaseButton","createdReleaseId","releaseId","stickyParams","excludedPerspectives","perspective","handleOnCreateRelease","datum_0","release_2","isLoading","documentsCount","documentCount","finalDocumentStates","renderRowActions","dateFilter","filterDate","filteredReleases","some","_temp3","showConfirmActiveScheduledDraftsBanner","t49","calendarFilterContent","t50","renderCalendarFilter","t51","bb2","t52","tableColumns","hasBannerAboveTable","isArchivedReleasesView","defaultTableSort","releasesEmptyStateComponent","t53","bb3","t54","tableEmptyState","renderNoReleasesEmptyState","isUpsell","t55","height","t56","t57","position","t58","t59","t60","t61","t62","t63","t64","t65","t66","t67","t68","t69","t70","t71","t72","t73","t74","t75","release_3","release_0","useRouter","ReleaseDetail","ReleasesOverview","ReleasesTool","$","_c","router","releaseId","state","t0","Symbol","for"],"sources":["../src/core/releases/tool/overview/queryParamUtils.ts","../src/core/releases/tool/detail/events/getReleaseActivityEvents.ts","../src/core/releases/tool/detail/events/buildReleaseEditEvents.ts","../src/core/releases/tool/detail/events/getReleaseEditEvents.ts","../src/core/releases/tool/detail/events/types.ts","../src/core/releases/tool/detail/events/getReleaseEvents.ts","../src/core/releases/tool/detail/events/useReleaseEvents.ts","../src/core/releases/tool/components/getReleaseDocumentIntent.ts","../src/core/releases/tool/components/ReleaseDocumentPreview.tsx","../src/core/releases/tool/detail/ReleaseActivityListItem.tsx","../src/core/releases/tool/detail/ReleaseActivityList.tsx","../src/core/releases/tool/detail/ReleaseDashboardActivityPanel.tsx","../src/core/releases/util/getDocumentValidationLoading.ts","../src/core/releases/tool/detail/ArchivedReleaseBanner.tsx","../src/core/releases/tool/detail/ReleaseDetailsEditor.tsx","../src/core/releases/hooks/useReleaseTime.ts","../src/core/releases/tool/components/ReleaseTime.tsx","../src/core/releases/tool/detail/ReleaseDateInput.tsx","../src/core/releases/tool/detail/ReleaseTypePicker.tsx","../src/core/releases/tool/detail/ReleaseValidationBadge.tsx","../src/ui-components/progressIcon/ProgressIcon.tsx","../src/core/releases/tool/detail/ValidationProgressIndicator.tsx","../src/core/releases/tool/detail/ReleaseDashboardDetails.tsx","../src/core/releases/components/ReleaseActionsResolver.tsx","../src/core/releases/hooks/useCustomReleaseActions.ts","../src/core/releases/tool/components/ReleaseMenuButton/DuplicateReleaseToastLink.tsx","../src/core/releases/tool/components/ReleaseMenuButton/releaseActions.ts","../src/core/releases/tool/components/releaseCTAButtons/ReleasePublishAllButton.tsx","../src/core/releases/tool/components/releaseCTAButtons/ReleaseScheduleButton.tsx","../src/core/releases/tool/components/ReleaseMenuButton/ReleaseMenu.tsx","../src/core/releases/tool/components/ReleaseMenuButton/ReleasePreviewCard.tsx","../src/core/releases/tool/components/ReleaseMenuButton/ReleaseMenuButton.tsx","../src/core/util/promiseWithResolvers.ts","../src/core/releases/tool/components/releaseCTAButtons/ReleaseRevertButton/useDocumentRevertStates.ts","../src/core/releases/tool/components/releaseCTAButtons/ReleaseRevertButton/usePostPublishTransactions.ts","../src/core/releases/tool/components/releaseCTAButtons/ReleaseRevertButton/ReleaseRevertButton.tsx","../src/core/releases/tool/components/releaseCTAButtons/ReleaseUnscheduleButton.tsx","../src/core/releases/tool/detail/ReleaseActionButton.tsx","../src/core/releases/tool/components/StatusItem.tsx","../src/core/releases/tool/detail/ReleaseStatusItems.tsx","../src/core/releases/tool/detail/ReleaseDashboardFooter.tsx","../src/core/releases/tool/detail/CopyReleaseActions.tsx","../src/core/releases/components/dialog/EditReleaseDialog.tsx","../src/core/releases/tool/detail/useCanEditRelease.ts","../src/core/releases/tool/detail/ReleaseActionRail.tsx","../src/core/releases/tool/detail/ReleaseDashboardHeader.tsx","../src/core/releases/tool/detail/AddDocumentSearch.tsx","../src/core/releases/tool/detail/releaseDocumentActions.ts","../src/core/releases/tool/detail/components/ReleaseDocumentFilterTabs.tsx","../src/core/releases/tool/detail/documentTable/DocumentActions.tsx","../src/core/releases/tool/detail/documentTable/useReleaseHistory.ts","../src/core/releases/tool/detail/documentTable/DocumentTableColumnDefs.tsx","../src/core/releases/tool/detail/ReleaseSummary.tsx","../src/core/releases/tool/detail/ReleaseDetail.tsx","../src/core/releases/store/useReleasesMetadata.ts","../src/core/releases/tool/overview/CalendarPopover.tsx","../src/core/releases/tool/overview/CardinalityViewPicker.tsx","../src/core/releases/tool/overview/ConfirmScheduledDraftsDialog.tsx","../src/core/releases/tool/overview/ConfirmActiveScheduledDraftsBanner.tsx","../src/core/releases/tool/overview/DraftsDisabledBanner.tsx","../src/core/releases/tool/overview/useTimezoneAdjustedDateTimeRange.ts","../src/core/releases/tool/overview/ReleaseCalendarFilter.tsx","../src/core/releases/tool/overview/ReleaseMenuButtonWrapper.tsx","../src/core/releases/tool/overview/ReleaseNotFoundBanner.tsx","../src/core/releases/tool/resources/ReleaseIllustration.tsx","../src/core/releases/tool/overview/ReleasesEmptyState.tsx","../src/core/releases/tool/overview/columnCells/ReleaseColumnValidationLoading.tsx","../src/core/releases/tool/overview/columnCells/ReleaseDocumentsCounter.tsx","../src/core/releases/tool/overview/columnCells/ReleaseName.tsx","../src/core/releases/tool/overview/ReleasesOverviewColumnDefs.tsx","../src/core/releases/tool/overview/ScheduledDraftMenuButtonWrapper.tsx","../src/core/releases/tool/overview/ScheduledDraftsEmptyState.tsx","../src/core/releases/tool/overview/columnCells/ScheduledDraftDocumentPreview.tsx","../src/core/releases/tool/overview/hooks/useReleaseCreator.ts","../src/core/releases/tool/overview/columnCells/ScheduledDraftMetadataCell.tsx","../src/core/releases/tool/overview/columnCells/ScheduledDraftWarningCell.tsx","../src/core/releases/tool/overview/ScheduledDraftsOverviewColumnDefs.tsx","../src/core/releases/tool/overview/SchedulesUpsell.tsx","../src/core/releases/tool/overview/ReleasesOverview.tsx","../src/core/releases/tool/ReleasesTool.tsx"],"sourcesContent":["import {format} from 'date-fns/format'\nimport {type RouterContextValue, type SearchParam} from 'sanity/router'\n\nexport type Mode = 'active' | 'paused' | 'archived'\nexport type CardinalityView = 'releases' | 'drafts'\n\nexport const GROUP_SEARCH_PARAM_KEY = 'group'\nexport const RELEASE_NOT_FOUND_SEARCH_PARAM_KEY = 'releaseNotFound'\nconst DATE_SEARCH_PARAM_KEY = 'date'\nconst VIEW_SEARCH_PARAM_KEY = 'view'\n\nconst DATE_SEARCH_PARAM_VALUE_FORMAT = 'yyyy-MM-dd'\n\nexport function getInitialReleaseNotFound(router: RouterContextValue): boolean {\n return (\n new URLSearchParams(router.state._searchParams).get(RELEASE_NOT_FOUND_SEARCH_PARAM_KEY) ===\n 'true'\n )\n}\n\nexport const getInitialFilterDate = (router: RouterContextValue) => () => {\n const activeFilterDate = new URLSearchParams(router.state._searchParams).get(\n DATE_SEARCH_PARAM_KEY,\n )\n\n return activeFilterDate ? new Date(activeFilterDate) : undefined\n}\n\nexport const getInitialReleaseGroupMode = (router: RouterContextValue) => (): Mode => {\n const activeGroupMode = new URLSearchParams(router.state._searchParams).get(\n GROUP_SEARCH_PARAM_KEY,\n )\n\n if (activeGroupMode === 'archived') return 'archived'\n if (activeGroupMode === 'paused') return 'paused'\n return 'active'\n}\n\nexport const getInitialCardinalityView =\n ({\n router,\n isScheduledDraftsEnabled,\n isReleasesEnabled,\n }: {\n router: RouterContextValue\n isScheduledDraftsEnabled: boolean\n isReleasesEnabled: boolean\n }) =>\n (): CardinalityView => {\n if (!isScheduledDraftsEnabled) {\n return 'releases'\n }\n\n if (!isReleasesEnabled) {\n return 'drafts'\n }\n\n // Both are enabled, use the query param\n const cardinalityView = new URLSearchParams(router.state._searchParams).get(\n VIEW_SEARCH_PARAM_KEY,\n )\n\n // 'drafts' is the only value we store in the query param\n // absence of the param means 'releases' (default)\n return cardinalityView === 'drafts' ? 'drafts' : 'releases'\n }\n\nexport const buildReleasesSearchParams = (\n releaseFilterDate: Date | undefined,\n releaseGroupMode: Mode,\n cardinalityView: CardinalityView,\n): SearchParam[] => {\n const params: SearchParam[] = []\n\n if (releaseFilterDate) {\n params.push([DATE_SEARCH_PARAM_KEY, format(releaseFilterDate, DATE_SEARCH_PARAM_VALUE_FORMAT)])\n } else if (releaseGroupMode !== 'active') {\n // Add group param when there's no date filter and it's not 'active' (default)\n params.push([GROUP_SEARCH_PARAM_KEY, releaseGroupMode])\n }\n\n // Only add view param when it's 'drafts' (releases is default, no param needed)\n if (cardinalityView === 'drafts') {\n params.push([VIEW_SEARCH_PARAM_KEY, 'drafts'])\n }\n\n return params\n}\n","import {type SanityClient} from '@sanity/client'\nimport {BehaviorSubject, type Observable} from 'rxjs'\nimport {catchError, map, scan, shareReplay, startWith, switchMap, tap} from 'rxjs/operators'\n\nimport {getReleaseIdFromReleaseDocumentId} from '../../../util/getReleaseIdFromReleaseDocumentId'\nimport {type ReleaseEvent} from './types'\n\nexport interface ReleaseEventsObservableValue {\n events: ReleaseEvent[]\n nextCursor: string\n loading: boolean\n error: null | Error\n}\nexport const INITIAL_VALUE: ReleaseEventsObservableValue = {\n events: [],\n nextCursor: '',\n loading: true,\n error: null,\n}\n\nfunction removeDupes(prev: ReleaseEvent[], next: ReleaseEvent[]): ReleaseEvent[] {\n const noDupes = [...prev, ...next].reduce((acc, event) => {\n if (acc.has(event.id)) {\n return acc\n }\n return acc.set(event.id, event)\n }, new Map<string, ReleaseEvent>())\n return Array.from(noDupes.values())\n}\n\nexport function addEventData(event: Omit<ReleaseEvent, 'id' | 'origin'>): ReleaseEvent {\n return {...event, id: `${event.timestamp}-${event.type}`, origin: 'events'} as ReleaseEvent\n}\n\ninterface InitialFetchEventsOptions {\n client: SanityClient\n releaseId: string\n}\nexport function getReleaseActivityEvents({client, releaseId}: InitialFetchEventsOptions): {\n events$: Observable<ReleaseEventsObservableValue>\n reloadEvents: () => void\n loadMore: () => void\n} {\n const refetchEventsTrigger$ = new BehaviorSubject<{\n cursor: string | null\n origin: 'loadMore' | 'reload' | 'initial'\n }>({\n cursor: null,\n origin: 'initial',\n })\n\n const fetchEvents = ({limit, nextCursor}: {limit: number; nextCursor: string | null}) => {\n const params = new URLSearchParams({limit: limit.toString()})\n if (nextCursor) {\n params.append('nextCursor', nextCursor)\n }\n return client.observable\n .request<{\n events: Omit<ReleaseEvent, 'id' | 'origin'>[]\n nextCursor: string\n }>({\n url: `/data/history/${client.config().dataset}/events/releases/${getReleaseIdFromReleaseDocumentId(releaseId)}?${params.toString()}`,\n tag: 'get-release-events',\n })\n .pipe(\n map((response) => {\n return {\n events: response.events.map(addEventData),\n nextCursor: response.nextCursor,\n loading: false,\n error: null,\n }\n }),\n catchError((error) => {\n console.error(error)\n return [{events: [], nextCursor: '', loading: false, error}]\n }),\n )\n }\n\n let nextCursor: string = ''\n return {\n events$: refetchEventsTrigger$.pipe(\n switchMap(({cursor, origin}) => {\n return fetchEvents({\n nextCursor: cursor,\n limit: origin === 'reload' ? 10 : 100,\n }).pipe(\n map((response) => {\n return {...response, origin}\n }),\n startWith({events: [], nextCursor: '', loading: true, error: null, origin}),\n )\n }),\n scan((prev, next) => {\n const events = removeDupes(prev.events, next.events).sort(\n (a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime(),\n )\n return {\n events: events,\n // If we are reloading, we should keep the cursor as it was before.\n nextCursor: next.origin === 'reload' ? prev.nextCursor : next.nextCursor,\n loading: next.loading,\n error: next.error,\n }\n }, INITIAL_VALUE),\n tap((response) => {\n nextCursor = response.nextCursor\n }),\n shareReplay(1),\n ),\n /**\n * Loads new events for the release, fetching the latest events from the API.\n */\n reloadEvents: () => refetchEventsTrigger$.next({cursor: null, origin: 'reload'}),\n /**\n * Loads more events for the release, fetching the next batch of events from the API.\n */\n loadMore: () => {\n const lastCursorUsed = refetchEventsTrigger$.getValue().cursor\n if (nextCursor && lastCursorUsed !== nextCursor) {\n refetchEventsTrigger$.next({origin: 'loadMore', cursor: nextCursor})\n }\n },\n }\n}\n","import {type ReleaseDocument, type ReleaseType} from '@sanity/client'\nimport {type TransactionLogEventWithEffects} from '@sanity/types'\n\nimport {applyMendozaPatch} from '../../../../preview/utils/applyMendozaPatch'\nimport {getReleaseIdFromReleaseDocumentId} from '../../../util/getReleaseIdFromReleaseDocumentId'\nimport {type ReleaseEvent} from './types'\n\nexport function buildReleaseEditEvents(\n transactions: TransactionLogEventWithEffects[],\n release: ReleaseDocument,\n): ReleaseEvent[] {\n // Confirm we have all the events by checking the first transaction id and the release._rev, the should match.\n if (release._rev !== transactions[0]?.id) {\n console.error('Some transactions are missing, cannot calculate the edit events')\n return []\n }\n\n const releaseEditEvents: ReleaseEvent[] = []\n // We start from the last release document and apply changes in reverse order\n // Compare for each transaction what changed, if metadata.releaseType or metadata.intendedPublishAt changed build an event.\n let currentDocument = release\n for (const transaction of transactions) {\n const effect = transaction.effects[release._id]\n if (!effect) continue\n // This will apply the revert effect to the document, so we will get the document from before this change.\n const before = applyMendozaPatch(currentDocument, effect.revert, currentDocument._rev)\n const changed: {\n releaseType?: ReleaseType\n intendedPublishDate?: string\n } = {}\n\n if (before?.state !== currentDocument.state && currentDocument.state === 'archived') {\n releaseEditEvents.push({\n type: 'archiveRelease',\n timestamp: transaction.timestamp,\n author: transaction.author,\n releaseName: getReleaseIdFromReleaseDocumentId(release._id),\n id: transaction.id,\n origin: 'translog',\n })\n }\n if (before?.state !== currentDocument.state && currentDocument.state === 'published') {\n releaseEditEvents.push({\n type: 'publishRelease',\n timestamp: transaction.timestamp,\n author: transaction.author,\n releaseName: getReleaseIdFromReleaseDocumentId(release._id),\n id: transaction.id,\n origin: 'translog',\n })\n }\n\n if (before?.state === 'unarchiving' && currentDocument.state === 'active') {\n releaseEditEvents.push({\n type: 'unarchiveRelease',\n timestamp: transaction.timestamp,\n author: transaction.author,\n releaseName: getReleaseIdFromReleaseDocumentId(release._id),\n id: transaction.id,\n origin: 'translog',\n })\n }\n if (before?.metadata.releaseType !== currentDocument.metadata.releaseType) {\n changed.releaseType = currentDocument.metadata.releaseType\n }\n if (before?.metadata.intendedPublishAt !== currentDocument.metadata.intendedPublishAt) {\n changed.intendedPublishDate = currentDocument.metadata.intendedPublishAt\n }\n // If the \"changed\" object has more than one key identify it as a change event\n if (Object.values(changed).length >= 1) {\n releaseEditEvents.push({\n type: before ? 'editRelease' : 'createRelease',\n origin: 'translog',\n author: transaction.author,\n change: changed,\n id: transaction.id,\n timestamp: transaction.timestamp,\n releaseName: getReleaseIdFromReleaseDocumentId(release._id),\n })\n }\n\n if (before) {\n currentDocument = before\n }\n }\n return releaseEditEvents\n}\n","import {type ReleaseDocument, type SanityClient} from '@sanity/client'\nimport {type TransactionLogEventWithEffects} from '@sanity/types'\nimport {\n catchError,\n distinctUntilChanged,\n expand,\n filter,\n from,\n map,\n type Observable,\n of,\n reduce,\n scan,\n shareReplay,\n startWith,\n switchMap,\n tap,\n} from 'rxjs'\n\nimport {getTransactionsLogs} from '../../../../store/translog/getTransactionsLogs'\nimport {buildReleaseEditEvents} from './buildReleaseEditEvents'\nimport {type ReleaseEvent} from './types'\n\nconst TRANSLOG_ENTRY_LIMIT = 100\n\nconst documentTransactionsCache: Record<string, TransactionLogEventWithEffects[]> =\n Object.create(null)\n\nfunction removeDupes(\n newTransactions: TransactionLogEventWithEffects[],\n oldTransactions: TransactionLogEventWithEffects[],\n) {\n const seen = new Set()\n return newTransactions.concat(oldTransactions).filter((transaction) => {\n if (seen.has(transaction.id)) {\n return false\n }\n seen.add(transaction.id)\n return true\n })\n}\n\n/**\n * This will fetch all the transactions for a given release.\n * I anticipate this would be a rather small number of transactions, given the release document is \"small\" and shouldn't change much.\n *\n * We need to fetch all of them to create the correct pagination of events in the activity feed, given we need to combine this with the\n * releaseActivityEvents that will be fetched from the events api.\n */\nfunction getReleaseTransactions({\n documentId,\n client,\n toTransaction,\n}: {\n documentId: string\n client: SanityClient\n toTransaction: string\n}): Observable<TransactionLogEventWithEffects[]> {\n const cacheKey = `${documentId}`\n const cachedTransactions = documentTransactionsCache[cacheKey] || []\n if (cachedTransactions.length > 0 && cachedTransactions[0].id === toTransaction) {\n return of(cachedTransactions)\n }\n\n function fetchLogs(options: {\n fromTransaction?: string\n toTransaction: string\n }): Observable<TransactionLogEventWithEffects[]> {\n return from(\n getTransactionsLogs(client, documentId, {\n tag: 'sanity.studio.release.history',\n effectFormat: 'mendoza',\n limit: TRANSLOG_ENTRY_LIMIT,\n reverse: true,\n fromTransaction: options.fromTransaction,\n toTransaction: options.toTransaction,\n }),\n )\n }\n\n return fetchLogs({fromTransaction: cachedTransactions[0]?.id, toTransaction: toTransaction})\n .pipe(\n expand((response) => {\n // Fetch more if the transactions length is equal to the limit\n if (response.length === TRANSLOG_ENTRY_LIMIT) {\n // Continue fetching if nextCursor exists, we use the last transaction received as the cursor.\n return fetchLogs({\n fromTransaction: undefined,\n toTransaction: response[response.length - 1].id,\n })\n }\n // End recursion by emitting an empty observable\n return of()\n }),\n // Combine all batches of transactions into a single array\n reduce(\n (allTransactions, batch) => allTransactions.concat(batch),\n [] as TransactionLogEventWithEffects[],\n ),\n )\n .pipe(\n map((transactions) => removeDupes(transactions, cachedTransactions)),\n tap((transactions) => {\n documentTransactionsCache[cacheKey] = transactions\n }),\n )\n}\n\ninterface EditEventsObservableValue {\n editEvents: ReleaseEvent[]\n loading: boolean\n error: null | Error\n}\nexport const INITIAL_VALUE: EditEventsObservableValue = {\n editEvents: [],\n loading: true,\n error: null,\n}\n\ninterface getReleaseActivityEventsOpts {\n client: SanityClient\n observeDocument$: Observable<ReleaseDocument | undefined>\n}\n\nexport function getReleaseEditEvents({\n client,\n observeDocument$,\n}: getReleaseActivityEventsOpts): Observable<EditEventsObservableValue> {\n return observeDocument$.pipe(\n filter(Boolean),\n distinctUntilChanged((prev, next) => prev._rev === next._rev),\n switchMap((release) => {\n return getReleaseTransactions({\n client,\n documentId: release._id,\n toTransaction: release._rev,\n }).pipe(\n map((transactions) => {\n return {\n editEvents: buildReleaseEditEvents(transactions, release),\n loading: false,\n error: null,\n }\n }),\n catchError((error) => {\n console.error(error)\n return of({editEvents: [], loading: false, error})\n }),\n )\n }),\n startWith(INITIAL_VALUE),\n scan((acc, current) => {\n // Accumulate edit events from previous state\n const editEvents = current.loading\n ? acc.editEvents // Preserve previous events while loading\n : current.editEvents // Update with new events when available\n\n return {...current, editEvents}\n }, INITIAL_VALUE),\n shareReplay(1),\n )\n}\n","import {type ReleaseType} from '@sanity/client'\n\nexport type ReleaseEvent =\n | CreateReleaseEvent\n | ScheduleReleaseEvent\n | UnscheduleReleaseEvent\n | PublishReleaseEvent\n | ArchiveReleaseEvent\n | UnarchiveReleaseEvent\n | AddDocumentToReleaseEvent\n | DiscardDocumentFromReleaseEvent\n | EditReleaseEvent\n\nexport interface BaseEvent {\n timestamp: string\n author: string\n releaseName: string\n id: string // Added client side ${event.timestamp}-${event.type}\n origin: 'translog' | 'events' // Added client side to identify from where the event was received\n}\n\nexport interface CreateReleaseEvent extends BaseEvent {\n type: 'createRelease'\n change?: Change\n}\n\nexport interface ScheduleReleaseEvent extends BaseEvent {\n type: 'scheduleRelease'\n publishAt: string\n}\n\nexport interface UnscheduleReleaseEvent extends BaseEvent {\n type: 'unscheduleRelease'\n}\n\nexport interface PublishReleaseEvent extends BaseEvent {\n type: 'publishRelease'\n}\n\nexport interface ArchiveReleaseEvent extends BaseEvent {\n type: 'archiveRelease'\n}\n\nexport interface UnarchiveReleaseEvent extends BaseEvent {\n type: 'unarchiveRelease'\n}\n\nexport interface AddDocumentToReleaseEvent extends BaseEvent {\n type: 'addDocumentToRelease'\n documentId: string\n documentType: string\n versionId: string\n revisionId: string\n versionRevisionId: string\n}\n\nexport interface DiscardDocumentFromReleaseEvent extends BaseEvent {\n type: 'discardDocumentFromRelease'\n documentId: string\n documentType: string\n versionId: string\n versionRevisionId: string\n}\n\ninterface Change {\n intendedPublishDate?: string\n releaseType?: ReleaseType\n}\nexport interface EditReleaseEvent extends BaseEvent {\n type: 'editRelease'\n isCreationEvent?: boolean\n change: Change\n}\n\n// Type guards\nexport const isCreateReleaseEvent = (event: ReleaseEvent): event is CreateReleaseEvent =>\n event.type === 'createRelease'\nexport const isScheduleReleaseEvent = (event: ReleaseEvent): event is ScheduleReleaseEvent =>\n event.type === 'scheduleRelease'\nexport const isPublishReleaseEvent = (event: ReleaseEvent): event is PublishReleaseEvent =>\n event.type === 'publishRelease'\nexport const isArchiveReleaseEvent = (event: ReleaseEvent): event is ArchiveReleaseEvent =>\n event.type === 'archiveRelease'\nexport const isUnarchiveReleaseEvent = (event: ReleaseEvent): event is UnarchiveReleaseEvent =>\n event.type === 'unarchiveRelease'\nexport const isAddDocumentToReleaseEvent = (\n event: ReleaseEvent,\n): event is AddDocumentToReleaseEvent => event.type === 'addDocumentToRelease'\nexport const isDiscardDocumentFromReleaseEvent = (\n event: ReleaseEvent,\n): event is DiscardDocumentFromReleaseEvent => event.type === 'discardDocumentFromRelease'\nexport const isEditReleaseEvent = (event: ReleaseEvent): event is EditReleaseEvent =>\n event.type === 'editRelease'\n\nexport const isTranslogEvent = (\n event: ReleaseEvent,\n): event is EditReleaseEvent | CreateReleaseEvent => event.origin === 'translog'\n\nexport const isEventsAPIEvent = (\n event: ReleaseEvent,\n): event is Exclude<ReleaseEvent, EditReleaseEvent> => event.origin === 'events'\n","import {type ReleaseDocument, type SanityClient} from '@sanity/client'\nimport {\n combineLatest,\n distinctUntilChanged,\n filter,\n map,\n merge,\n type Observable,\n of,\n skip,\n startWith,\n tap,\n} from 'rxjs'\n\nimport {type DocumentPreviewStore} from '../../../../preview/documentPreviewStore'\nimport {type ReleasesReducerState} from '../../../store/reducer'\nimport {getReleaseIdFromReleaseDocumentId} from '../../../util/getReleaseIdFromReleaseDocumentId'\nimport {RELEASES_STUDIO_CLIENT_OPTIONS} from '../../../util/releasesClient'\nimport {getReleaseActivityEvents} from './getReleaseActivityEvents'\nimport {getReleaseEditEvents} from './getReleaseEditEvents'\nimport {isCreateReleaseEvent, isEventsAPIEvent, isTranslogEvent, type ReleaseEvent} from './types'\n\ninterface getReleaseEventsOpts {\n client: SanityClient\n releaseId: string\n releasesState$: Observable<ReleasesReducerState>\n documentPreviewStore: DocumentPreviewStore\n eventsAPIEnabled: boolean\n}\n\nexport const EVENTS_INITIAL_VALUE = {\n events: [],\n hasMore: false,\n error: null,\n loading: true,\n}\n\nconst notEnabledActivityEvents: ReturnType<typeof getReleaseActivityEvents> = {\n events$: of({\n events: [],\n nextCursor: '',\n loading: false,\n error: null,\n }),\n reloadEvents: () => {},\n loadMore: () => {},\n}\n\n/**\n * Combines activity and edit events for a release, and adds side effects for reloading events when the release or the document changes.\n */\nexport function getReleaseEvents({\n client,\n releaseId,\n releasesState$,\n documentPreviewStore,\n eventsAPIEnabled,\n}: getReleaseEventsOpts) {\n const observeDocument$ = documentPreviewStore.unstable_observeDocument(releaseId, {\n apiVersion: RELEASES_STUDIO_CLIENT_OPTIONS.apiVersion,\n }) as Observable<ReleaseDocument | undefined>\n\n const editEvents$ = getReleaseEditEvents({client, observeDocument$})\n\n const releaseRev$ = releasesState$.pipe(\n map((state) => state.releases.get(releaseId)?._rev),\n filter(Boolean),\n distinctUntilChanged(),\n // Emit only when rev changes, after first non null value.\n skip(1),\n )\n\n // Turn off activity events if eventsAPI is not enabled.\n const activityEvents = eventsAPIEnabled\n ? getReleaseActivityEvents({client, releaseId})\n : notEnabledActivityEvents\n\n const groqFilter = `sanity::partOfRelease($releaseId)`\n\n // Turn off document counts listener if eventsAPI is not enabled.\n const documentsCount$ = eventsAPIEnabled\n ? of(0)\n : documentPreviewStore\n .unstable_observeDocumentIdSet(\n groqFilter,\n {releaseId: getReleaseIdFromReleaseDocumentId(releaseId)},\n {\n apiVersion: RELEASES_STUDIO_CLIENT_OPTIONS.apiVersion,\n },\n )\n .pipe(\n filter(({status}) => status === 'connected'),\n map(({documentIds}) => documentIds.length),\n distinctUntilChanged(),\n // Emit only when count changes, after first non null value.\n skip(1),\n )\n\n const sideEffects$ = merge(releaseRev$, documentsCount$).pipe(\n tap(() => {\n activityEvents.reloadEvents()\n }),\n startWith(null),\n )\n\n const events$ = combineLatest([activityEvents.events$, editEvents$, sideEffects$]).pipe(\n map(([activity, edit]) => {\n const events = [...activity.events, ...edit.editEvents]\n .sort((a, b) => Date.parse(b.timestamp) - Date.parse(a.timestamp))\n .reduce((acc: ReleaseEvent[], event) => {\n if (isCreateReleaseEvent(event)) {\n const creationEvent = acc.find(isCreateReleaseEvent)\n if (!creationEvent) acc.push(event)\n // Prefer the translog event for the creation given it has extra information.\n else if (isEventsAPIEvent(creationEvent) && isTranslogEvent(event)) {\n acc[acc.indexOf(creationEvent)] = event\n }\n } else acc.push(event)\n return acc\n }, [])\n\n return {\n events: deduplicateEvents(events),\n hasMore: Boolean(activity.nextCursor),\n error: activity.error || edit.error,\n loading: activity.loading || edit.loading,\n }\n }),\n )\n\n return {\n events$,\n loadMore: activityEvents.loadMore,\n }\n}\n\nconst deduplicateEvents = (events: ReleaseEvent[]) => {\n // Events are sorted by timestamp, compare this event with the next one, if they are the same type and timestamp, remove it.\n return events.filter((event, index) => {\n const nextEvent = events[index + 1]\n if (!nextEvent) return true\n return !(event.type === nextEvent.type && areTheSameDate(event.timestamp, nextEvent.timestamp))\n })\n}\n\n/**\n * Checks if two dates are the same date, without contemplating miliseconds.\n * The translog has miliseconds but the events api does not.\n */\nfunction areTheSameDate(date1: string, date2: string) {\n const time1 = new Date(date1).getTime()\n const time2 = new Date(date2).getTime()\n return Math.abs(time1 - time2) <= 1000\n}\n","import {useMemo} from 'react'\nimport {useObservable} from 'react-rx'\n\nimport {useClient} from '../../../../hooks/useClient'\nimport {useDocumentPreviewStore} from '../../../../store/datastores'\nimport {useSource} from '../../../../studio/source'\nimport {useReleasesStore} from '../../../store/useReleasesStore'\nimport {getReleaseDocumentIdFromReleaseId} from '../../../util/getReleaseDocumentIdFromReleaseId'\nimport {RELEASES_STUDIO_CLIENT_OPTIONS} from '../../../util/releasesClient'\nimport {EVENTS_INITIAL_VALUE, getReleaseEvents} from './getReleaseEvents'\nimport {type ReleaseEvent} from './types'\n\nexport interface ReleaseEvents {\n events: ReleaseEvent[]\n loading: boolean\n error: null | Error\n loadMore: () => void\n hasMore: boolean\n}\n\nexport function useReleaseEvents(releaseId: string): ReleaseEvents {\n const client = useClient(RELEASES_STUDIO_CLIENT_OPTIONS)\n const documentPreviewStore = useDocumentPreviewStore()\n const {state$: releasesState$} = useReleasesStore()\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n const source = useSource()\n const eventsAPIEnabled = Boolean(source.beta?.eventsAPI?.releases)\n\n const releaseEvents = useMemo(\n () =>\n getReleaseEvents({\n client,\n releaseId: getReleaseDocumentIdFromReleaseId(releaseId),\n releasesState$,\n documentPreviewStore,\n eventsAPIEnabled,\n }),\n [releaseId, client, releasesState$, documentPreviewStore, eventsAPIEnabled],\n )\n const events = useObservable(releaseEvents.events$, EVENTS_INITIAL_VALUE)\n\n return {\n events: events.events,\n hasMore: events.hasMore,\n loading: events.loading,\n error: events.error,\n loadMore: releaseEvents.loadMore,\n }\n}\n","import {type ReleaseState} from '@sanity/client'\n\nimport {getPublishedId} from '../../../util/draftUtils'\nimport {getReleaseIdFromReleaseDocumentId} from '../../util/getReleaseIdFromReleaseDocumentId'\n\nconst isArchivedRelease = (releaseState: ReleaseState | undefined) =>\n releaseState === 'archived' || releaseState === 'archiving' || releaseState === 'unarchiving'\n\ninterface ReleaseDocumentIntentOptions {\n documentId: string\n documentTypeName: string\n releaseId: string\n releaseState?: ReleaseState\n documentRevision?: string\n isCardinalityOneRelease?: boolean\n /** Short variant id for the sticky `variant` search param. */\n variantId?: string\n /** Optional field path (stringified) to focus when the document opens. */\n path?: string\n}\n\n/**\n * Builds the `edit` intent params and search params used to open a document version\n * within a release perspective. Shared so that both the document preview link and the\n * validation deep-link resolve to the exact same document/perspective.\n *\n * @internal\n */\nexport function getReleaseDocumentIntent({\n documentId,\n documentTypeName,\n releaseId,\n releaseState,\n documentRevision,\n isCardinalityOneRelease,\n variantId,\n path,\n}: ReleaseDocumentIntentOptions): {\n params: Record<string, string | undefined>\n searchParams: [string, string][] | undefined\n} {\n const releaseName = getReleaseIdFromReleaseDocumentId(releaseId)\n\n let intentParams: Record<string, string | undefined> = {}\n if (isCardinalityOneRelease) {\n intentParams = {scheduledDraft: releaseName}\n } else if (releaseState === 'published') {\n // We are inspecting this document through the published view of the doc.\n intentParams = {\n rev: `@release:${releaseName}`,\n inspect: 'sanity/structure/history',\n }\n } else if (releaseState === 'archived') {\n // We are \"faking\" the release as if it is still valid only to render the document\n intentParams = {\n rev: '@lastEdited',\n inspect: 'sanity/structure/history',\n historyEvent: documentRevision,\n historyVersion: releaseName,\n archivedRelease: 'true',\n }\n }\n\n const searchParams: [string, string][] | undefined =\n isCardinalityOneRelease || isArchivedRelease(releaseState)\n ? undefined\n : [\n ...(variantId ? [['variant', variantId] as [string, string]] : []),\n ['perspective', releaseState === 'published' ? 'published' : releaseName],\n ]\n\n return {\n params: {\n id: getPublishedId(documentId),\n type: documentTypeName,\n ...intentParams,\n ...(path ? {path} : {}),\n },\n searchParams,\n }\n}\n","import {type ReleaseState} from '@sanity/client'\nimport {Card} from '@sanity/ui'\nimport {useMemo, type RefAttributes} from 'react'\nimport {IntentLink} from 'sanity/router'\n\nimport {type PreviewLayoutKey} from '../../../components/previews/types'\nimport {DocumentPreviewPresence} from '../../../presence/DocumentPreviewPresence'\nimport {SanityDefaultPreview} from '../../../preview/components/SanityDefaultPreview'\nimport {useDocumentPresence} from '../../../store/presence/useDocumentPresence'\nimport {useDocumentPreviewValues} from '../../../tasks/hooks/useDocumentPreviewValues'\nimport {getPublishedId} from '../../../util/draftUtils'\nimport {getReleaseIdFromReleaseDocumentId} from '../../util/getReleaseIdFromReleaseDocumentId'\nimport {getReleaseDocumentIntent} from './getReleaseDocumentIntent'\n\ninterface ReleaseDocumentPreviewProps {\n documentId: string\n documentTypeName: string\n releaseId: string\n releaseState?: ReleaseState\n documentRevision?: string\n hasValidationError?: boolean\n layout?: PreviewLayoutKey\n isGoingToBePublished?: boolean\n isCardinalityOneRelease?: boolean\n variantId?: string\n}\n\nexport function ReleaseDocumentPreview({\n documentId,\n documentTypeName,\n releaseId,\n releaseState,\n isCardinalityOneRelease,\n documentRevision,\n layout,\n isGoingToBePublished = false,\n variantId,\n}: ReleaseDocumentPreviewProps) {\n const documentPresence = useDocumentPresence(documentId)\n\n const {params, searchParams} = useMemo(\n () =>\n getReleaseDocumentIntent({\n documentId,\n documentTypeName,\n releaseId,\n releaseState,\n documentRevision,\n isCardinalityOneRelease,\n variantId,\n }),\n [\n documentId,\n documentTypeName,\n releaseId,\n releaseState,\n documentRevision,\n isCardinalityOneRelease,\n variantId,\n ],\n )\n\n const LinkComponent = useMemo(\n () =>\n function LinkComponent(\n linkProps: React.ComponentPropsWithoutRef<'a'> & RefAttributes<HTMLAnchorElement>,\n ) {\n const {ref, ...rest} = linkProps\n return (\n <IntentLink\n {...rest}\n intent=\"edit\"\n params={params}\n searchParams={searchParams}\n ref={ref}\n />\n )\n },\n [params, searchParams],\n )\n\n const previewPresence = useMemo(\n () => documentPresence?.length > 0 && <DocumentPreviewPresence presence={documentPresence} />,\n [documentPresence],\n )\n\n const {isLoading: previewLoading, value: resolvedPreview} = useDocumentPreviewValues({\n documentId: isGoingToBePublished ? getPublishedId(documentId) : documentId,\n documentType: documentTypeName,\n perspectiveStack: isGoingToBePublished ? [] : [getReleaseIdFromReleaseDocumentId(releaseId)],\n })\n\n return (\n <Card tone=\"inherit\" as={LinkComponent} radius={2} data-as=\"a\">\n <SanityDefaultPreview\n {...(resolvedPreview || {})}\n status={previewPresence}\n isPlaceholder={previewLoading}\n layout={layout}\n />\n </Card>\n )\n}\n","import {Card, Flex, Stack, Text} from '@sanity/ui'\nimport {motion} from 'motion/react'\nimport {memo, type ReactNode, useMemo} from 'react'\nimport {styled} from 'styled-components'\n\nimport {UserAvatar} from '../../../components/userAvatar/UserAvatar'\nimport {useDateTimeFormat} from '../../../hooks/useDateTimeFormat'\nimport {useRelativeTime} from '../../../hooks/useRelativeTime'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {Translate} from '../../../i18n/Translate'\nimport {releasesLocaleNamespace} from '../../i18n'\nimport {ReleaseDocumentPreview} from '../components/ReleaseDocumentPreview'\nimport {\n type AddDocumentToReleaseEvent,\n type DiscardDocumentFromReleaseEvent,\n isAddDocumentToReleaseEvent,\n isCreateReleaseEvent,\n isDiscardDocumentFromReleaseEvent,\n isEditReleaseEvent,\n isScheduleReleaseEvent,\n type ReleaseEvent,\n} from './events/types'\n\nconst StatusText = styled(Text)`\n strong {\n font-weight: 500;\n color: var(--card-fg-color);\n }\n time {\n white-space: nowrap;\n }\n`\nconst ACTIVITY_TEXT_118N: Record<ReleaseEvent['type'], string> = {\n addDocumentToRelease: 'activity.event.add-document',\n archiveRelease: 'activity.event.archive',\n createRelease: 'activity.event.create',\n discardDocumentFromRelease: 'activity.event.discard-document',\n publishRelease: 'activity.event.publish',\n scheduleRelease: 'activity.event.schedule',\n unarchiveRelease: 'activity.event.unarchive',\n unscheduleRelease: 'activity.event.unschedule',\n editRelease: 'activity.event.edit',\n}\n\nconst ReleaseEventDocumentPreview = ({\n event,\n releaseId,\n}: {\n releaseId: string\n event: AddDocumentToReleaseEvent | DiscardDocumentFromReleaseEvent\n}) => {\n return (\n <Stack gap={2}>\n <ReleaseDocumentPreview\n releaseId={releaseId}\n documentId={event.documentId}\n documentTypeName={event.documentType}\n layout=\"block\"\n />\n </Stack>\n )\n}\n\nconst ScheduleTarget = ({children, event}: {children: ReactNode; event: ReleaseEvent}) => {\n const dateTimeFormat = useDateTimeFormat({dateStyle: 'full', timeStyle: 'medium'})\n const {t} = useTranslation(releasesLocaleNamespace)\n\n const formattedDate = useMemo(() => {\n if (isEditReleaseEvent(event)) {\n if (event.change.releaseType === 'asap') return t('activity.event.edit-time-asap')\n if (event.change.releaseType === 'undecided') return t('activity.event.edit-time-undecided')\n }\n\n let dateString: string | undefined\n if (isScheduleReleaseEvent(event)) {\n dateString = event.publishAt\n } else if (isCreateReleaseEvent(event)) {\n dateString = event.change?.intendedPublishDate\n } else if (isEditReleaseEvent(event)) {\n dateString = event.change.intendedPublishDate\n }\n\n if (!dateString) return null\n return dateTimeFormat.format(new Date(dateString))\n }, [dateTimeFormat, event, t])\n\n if (!formattedDate && isCreateReleaseEvent(event)) return null\n return (\n <span>\n {children} <strong>{formattedDate || '---'}</strong>\n </span>\n )\n}\n\nconst FadeInCard = motion.create(Card)\n\nfunction ActivityTimestamp({timestamp}: {timestamp: string}) {\n const dateTimeFormat = useDateTimeFormat({\n dateStyle: 'medium',\n timeStyle: 'short',\n })\n const date = useMemo(() => new Date(timestamp), [timestamp])\n const formattedDate = useMemo(() => dateTimeFormat.format(date), [dateTimeFormat, date])\n const relativeTime = useRelativeTime(date, {useTemporalPhrase: true, minimal: true})\n\n return (\n <time dateTime={date.toISOString()} title={relativeTime}>\n {formattedDate}\n </time>\n )\n}\n\nexport const ReleaseActivityListItem = memo(\n ({\n event,\n releaseId,\n releaseTitle,\n }: {\n event: ReleaseEvent\n releaseId: string\n releaseTitle: string\n }) => {\n const {t} = useTranslation(releasesLocaleNamespace)\n\n return (\n <FadeInCard\n paddingX={1}\n paddingTop={1}\n paddingBottom={2}\n overflow=\"hidden\"\n // This card animates on entrance when a new event is added, not for every event that is rendered.\n // So if the user is seeing the list and a new event lands, the list will animate the new event. (That is by the <AnimatePresence initial=false> component wrapping the list)\n initial={{opacity: 0}}\n animate={{opacity: 1}}\n transition={{type: 'spring', bounce: 0, duration: 0.4}}\n >\n <Flex align=\"center\" gap={2}>\n <UserAvatar user={event.author} />\n <Stack flex={1}>\n <Flex gap={2} align=\"center\">\n <StatusText muted size={1}>\n <Translate\n t={t}\n components={{\n ScheduleTarget: ({children}) => (\n <ScheduleTarget event={event}>{children}</ScheduleTarget>\n ),\n }}\n values={{releaseTitle}}\n i18nKey={ACTIVITY_TEXT_118N[event.type]}\n />{' '}\n &middot; <ActivityTimestamp timestamp={event.timestamp} />\n </StatusText>\n </Flex>\n {isAddDocumentToReleaseEvent(event) || isDiscardDocumentFromReleaseEvent(event) ? (\n <ReleaseEventDocumentPreview event={event} releaseId={releaseId} />\n ) : null}\n </Stack>\n </Flex>\n </FadeInCard>\n )\n },\n (prevProps, nextProps) => {\n return prevProps.event.id === nextProps.event.id && prevProps.releaseId === nextProps.releaseId\n },\n)\n\nReleaseActivityListItem.displayName = 'ReleaseActivityListItem'\n","import {Box} from '@sanity/ui'\nimport {useVirtualizer} from '@tanstack/react-virtual'\nimport {AnimatePresence} from 'motion/react'\nimport {useEffect, useMemo, useRef} from 'react'\nimport {styled} from 'styled-components'\n\nimport {LoadingBlock} from '../../../components/loadingBlock/LoadingBlock'\nimport {\n isAddDocumentToReleaseEvent,\n isDiscardDocumentFromReleaseEvent,\n isEventsAPIEvent,\n isTranslogEvent,\n type ReleaseEvent,\n} from './events/types'\nimport {ReleaseActivityListItem} from './ReleaseActivityListItem'\n\nconst estimateSize = (event: ReleaseEvent | undefined) => {\n if (!event) {\n return 40 // Is the loader row\n }\n if (isAddDocumentToReleaseEvent(event) || isDiscardDocumentFromReleaseEvent(event)) {\n return 70\n }\n return 56\n}\nconst VirtualContainer = styled(Box)`\n height: 100%;\n overflow: scroll;\n`\n\ninterface ReleaseActivityListProps {\n events: ReleaseEvent[]\n releaseTitle: string\n releaseId: string\n hasMore: boolean\n loadMore: () => void\n isLoading: boolean\n}\nexport const ReleaseActivityList = ({\n events,\n releaseTitle,\n releaseId,\n hasMore,\n loadMore,\n isLoading,\n}: ReleaseActivityListProps) => {\n const virtualizerContainerRef = useRef<HTMLDivElement | null>(null)\n\n const listEvents: ReleaseEvent[] = useMemo(() => {\n /**\n * This list combines:\n * - API events, which are loaded incrementally (paginated)\n * - Translog events, which are fully available (non-paginated)\n *\n * We want to display all events up to the oldest API event and include any translog events\n * that occurred before that API event. By doing so, as we load older batches of API events,\n * they will show at the bottom of the list\n */\n\n // If all events are loaded (no more pages) and we’re not loading, just return all events.\n if (!hasMore && !isLoading) return events\n\n const lastEventFromEventsAPI = [...events].reverse().find(isEventsAPIEvent)\n // If no API events are found (e.g., events api is not enabled) and we're not loading, return all translog events.\n if (!lastEventFromEventsAPI && !isLoading) return events\n\n // If we haven’t found any API events yet and are still loading, show nothing for now.\n if (!lastEventFromEventsAPI) return []\n\n // Include only those translog events that occur before the newest API event.\n const lastEventDate = new Date(lastEventFromEventsAPI.timestamp)\n return events.filter((event) => {\n if (isTranslogEvent(event)) {\n return new Date(event.timestamp) > lastEventDate\n }\n return true\n })\n }, [events, hasMore, isLoading])\n\n const virtualizer = useVirtualizer({\n // If we have more events, or the events are loading, we add a loader row at the end\n count: hasMore || isLoading ? listEvents.length + 1 : listEvents.length,\n getScrollElement: () => virtualizerContainerRef.current,\n estimateSize: (i) => estimateSize(events[i]),\n overscan: 10,\n paddingEnd: 24,\n })\n\n const virtualItems = virtualizer.getVirtualItems()\n\n useEffect(() => {\n const lastItem = virtualItems.at(-1)\n if (!lastItem) return\n if (lastItem.index >= listEvents.length - 1 && hasMore) {\n loadMore()\n }\n }, [listEvents.length, hasMore, loadMore, virtualItems])\n\n return (\n <VirtualContainer id=\"virtualizer-container\" ref={virtualizerContainerRef} paddingX={3}>\n <div\n style={{\n height: `${virtualizer.getTotalSize()}px`,\n width: '100%',\n position: 'relative',\n }}\n >\n <AnimatePresence initial={false}>\n {virtualizer.getVirtualItems().map((virtualRow) => {\n const event = listEvents[virtualRow.index]\n const isLoaderRow = !event\n\n return (\n <div\n key={virtualRow.key}\n data-index={virtualRow.index}\n ref={virtualizer.measureElement}\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n transform: `translateY(${virtualRow.start}px)`,\n }}\n >\n {isLoaderRow ? (\n <Box paddingY={4}>\n <LoadingBlock fill />\n </Box>\n ) : (\n <ReleaseActivityListItem\n event={event}\n releaseId={releaseId}\n releaseTitle={releaseTitle}\n />\n )}\n </div>\n )\n })}\n </AnimatePresence>\n </div>\n </VirtualContainer>\n )\n}\n","import {type ReleaseDocument} from '@sanity/client'\nimport {CloseIcon} from '@sanity/icons/Close'\nimport {Box, Card, Flex, Layer, Text, useLayer} from '@sanity/ui'\nimport {AnimatePresence, motion} from 'motion/react'\nimport {useEffect} from 'react'\nimport TrapFocus from 'react-focus-lock'\nimport {styled} from 'styled-components'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {LoadingBlock} from '../../../components/loadingBlock/LoadingBlock'\nimport {Resizable} from '../../../components/resizer/Resizable'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {releasesLocaleNamespace} from '../../i18n'\nimport {type ReleaseEvents} from './events/useReleaseEvents'\nimport {ReleaseActivityList} from './ReleaseActivityList'\n\ninterface ReleaseDashboardActivityPanelProps {\n events: ReleaseEvents\n release: ReleaseDocument\n show: boolean\n /**\n * When true, the panel floats over the content as a right-anchored overlay (dismissed via the\n * header close button or Escape) instead of pushing the layout aside. Activity is transient\n * reference, not a co-editing surface, so it should not reflow the rail and table beneath it.\n */\n overlay?: boolean\n onClose?: () => void\n}\nconst MotionFlex = motion.create(Flex)\nconst MotionCard = motion.create(Card)\nconst FillHeight = styled.div`\n --card-border-color: transparent;\n height: 100%;\n display: flex;\n flex-direction: column;\n`\n// In overlay mode the panel is not part of the layout, so Escape is the keyboard escape hatch (in\n// addition to the header close button and the Activity toggle). It sits in its own Layer so it only\n// claims Escape when it is the top layer — when a dialog or popover (e.g. EditReleaseDialog or a\n// bulk-action dialog) is open above the overlay, Escape dismisses only that topmost surface, not\n// both at once. Mirrors the useLayer/isTopLayer guard used by CommentsInspector.\nfunction OverlayEscapeHandler({onClose}: {onClose?: () => void}) {\n const {isTopLayer} = useLayer()\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape' && isTopLayer) onClose?.()\n }\n window.addEventListener('keydown', handleKeyDown)\n return () => window.removeEventListener('keydown', handleKeyDown)\n }, [isTopLayer, onClose])\n return null\n}\n\nexport function ReleaseDashboardActivityPanel({\n events,\n release,\n show,\n overlay = false,\n onClose,\n}: ReleaseDashboardActivityPanelProps) {\n const {t} = useTranslation(releasesLocaleNamespace)\n const {t: tCore} = useTranslation()\n\n const content = (\n <MotionFlex flex=\"none\" height=\"fill\" direction=\"column\">\n <Flex align=\"center\" gap={2} justify=\"space-between\" padding={4}>\n <Text size={1} weight=\"medium\">\n {t('activity.panel.title')}\n </Text>\n {overlay && onClose && (\n <Button\n icon={CloseIcon}\n mode=\"bleed\"\n onClick={onClose}\n tooltipProps={{content: t('activity.panel.close')}}\n />\n )}\n </Flex>\n {events.error && !events.events.length && (\n <Card padding={3} tone=\"caution\">\n <Box padding={2}>\n <Text size={0}>{t('activity.panel.error')}</Text>\n </Box>\n </Card>\n )}\n {events.loading && !events.events.length && (\n <LoadingBlock title={t('activity.panel.loading')} />\n )}\n <ReleaseActivityList\n releaseTitle={release.metadata.title || tCore('release.placeholder-untitled-release')}\n releaseId={release._id}\n events={events.events}\n hasMore={events.hasMore}\n loadMore={events.loadMore}\n isLoading={events.loading}\n />\n </MotionFlex>\n )\n\n if (overlay) {\n // Floats over the content (position:absolute against the relatively-positioned parent in\n // ReleaseDetail), sliding in from the right; the rail and table beneath it do not move. A light\n // scrim recedes everything behind the drawer (the rail, the properties block) so partial\n // coverage reads as \"behind the drawer\" rather than clipped, and clicking it dismisses.\n return (\n <>\n {/* An empty Layer purely to participate in the layer stack, so the Escape handler can tell\n when a dialog/popover is open above the overlay. Kept outside AnimatePresence (it is not\n animated) and as a sibling of the scrim/drawer so their absolute positioning is untouched. */}\n {show && (\n <Layer>\n <OverlayEscapeHandler onClose={onClose} />\n </Layer>\n )}\n {/* The scrim and drawer are direct, keyed children of AnimatePresence — not wrapped in a\n fragment — so their exit animations actually run on close (AnimatePresence only tracks\n direct keyed motion children). */}\n <AnimatePresence>\n {show && (\n <motion.div\n key=\"activity-overlay-scrim\"\n onClick={onClose}\n initial={{opacity: 0}}\n animate={{opacity: 1}}\n exit={{opacity: 0}}\n transition={{duration: 0.2}}\n style={{\n position: 'absolute',\n inset: 0,\n zIndex: 199,\n background: 'rgba(0, 0, 0, 0.45)',\n }}\n />\n )}\n {show && (\n <MotionCard\n key=\"activity-overlay-drawer\"\n // Modal drawer: announce it as a modal dialog to assistive tech (aria-modal), and trap\n // focus inside it (TrapFocus below) so keyboard users can't Tab to the covered rail/\n // table behind the scrim, with focus restored to the trigger on close.\n role=\"dialog\"\n aria-modal\n aria-label={t('activity.panel.title')}\n borderLeft\n shadow={4}\n initial={{x: '100%'}}\n animate={{x: 0}}\n exit={{x: '100%'}}\n transition={{type: 'spring', bounce: 0, duration: 0.2}}\n style={{\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n zIndex: 200,\n display: 'flex',\n flexDirection: 'column',\n }}\n >\n {/* preventScroll on both the open (focusOptions) and close (returnFocus) focus moves:\n the drawer mounts translated off-screen (translateX(100%)) and then slides in, so a\n default focus() would scroll the off-screen target into view and jerk the whole\n layout left→right before the animation settles. preventScroll keeps the focus move\n (a11y) without the scroll (the flash). */}\n <TrapFocus\n returnFocus={{preventScroll: true}}\n autoFocus\n // react-focus-lock's own docs use focusOptions={{preventScroll: true}} as the\n // canonical pattern for this exact case; no non-deprecated alternative exists.\n // oxlint-disable-next-line no-deprecated -- see comment above\n focusOptions={{preventScroll: true}}\n >\n <Resizable\n as={FillHeight}\n minWidth={320}\n maxWidth={800}\n initialWidth={360}\n resizerPosition=\"left\"\n style={{display: 'flex', flexDirection: 'column', flex: 'none', height: '100%'}}\n >\n {content}\n </Resizable>\n </TrapFocus>\n </MotionCard>\n )}\n </AnimatePresence>\n </>\n )\n }\n\n return (\n <AnimatePresence>\n {show && (\n <motion.div\n animate={{width: 'auto', opacity: 1}}\n initial={{width: 0, opacity: 0}}\n exit={{width: 0, opacity: 0}}\n transition={{type: 'spring', bounce: 0, duration: 0.2}}\n >\n <Resizable\n as={FillHeight}\n minWidth={320}\n maxWidth={800}\n initialWidth={320}\n resizerPosition=\"left\"\n style={{display: 'flex', flexDirection: 'column', flex: 'none', maxHeight: '100%'}}\n >\n {content}\n </Resizable>\n </motion.div>\n )}\n </AnimatePresence>\n )\n}\n","import {type DocumentInRelease} from '../tool/detail/types'\nimport {isGoingToUnpublish} from './isGoingToUnpublish'\n\n/**\n * This function is used to get a cleaner and quicker validation loading state and error status for a list of documents\n * @param documents - The list of documents to get the validation loading state for\n * @returns\n */\nexport const getDocumentValidationLoading = (documents: DocumentInRelease[]) => {\n let hasError = false\n let isValidating = false\n let validatedCount = 0\n documents.forEach((doc) => {\n if (isGoingToUnpublish(doc.document)) {\n validatedCount += 1\n } else {\n const isValidated = !doc.validation.isValidating\n hasError = hasError || doc.validation.hasError\n isValidating = isValidating || doc.validation.isValidating\n if (isValidated) {\n validatedCount += 1\n }\n }\n })\n return {\n hasError,\n isValidating,\n validatedCount,\n }\n}\n","import {type ReleaseDocument} from '@sanity/client'\nimport {InfoOutlineIcon} from '@sanity/icons/InfoOutline'\nimport {Card, Flex, Stack, Text} from '@sanity/ui'\nimport {addDays} from 'date-fns/addDays'\nimport {format} from 'date-fns/format'\nimport {useMemo} from 'react'\n\nimport {useProjectSubscriptions} from '../../../hooks/useProjectSubscriptions'\nimport {useTimeZone} from '../../../hooks/useTimeZone'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {Translate} from '../../../i18n/Translate'\nimport {CONTENT_RELEASES_TIME_ZONE_SCOPE} from '../../../studio/constants'\nimport {releasesLocaleNamespace} from '../../i18n'\n\nexport function ArchivedReleaseBanner({release}: {release: ReleaseDocument}) {\n const {state} = release\n const {t: tRelease} = useTranslation(releasesLocaleNamespace)\n const {projectSubscriptions} = useProjectSubscriptions()\n\n const retentionDays = projectSubscriptions?.featureTypes.retention.features[0].attributes\n .maxRetentionDays as number | undefined\n\n const {utcToCurrentZoneDate} = useTimeZone(CONTENT_RELEASES_TIME_ZONE_SCOPE)\n const removalDate = useMemo(() => {\n if (!retentionDays || !release?._updatedAt) return ''\n const _removalDate = addDays(new Date(release._updatedAt), retentionDays)\n\n return format(utcToCurrentZoneDate(_removalDate), 'PP')\n }, [retentionDays, release, utcToCurrentZoneDate])\n\n return (\n <Card padding={4} radius={4} tone=\"primary\" data-testid=\"retention-policy-card\">\n <Flex gap={3}>\n <Text size={1}>\n <InfoOutlineIcon />\n </Text>\n <Stack gap={4}>\n <Text size={1} weight=\"semibold\">\n {state === 'archived' ? tRelease('archive-info.title') : tRelease('publish-info.title')}\n </Text>\n {retentionDays && (\n <Text size={1} accent>\n <Translate\n t={tRelease}\n i18nKey=\"archive-info.description\"\n values={{retentionDays, removalDate: removalDate || ''}}\n components={{\n Link: ({children}) => (\n <a\n href=\"https://www.sanity.io/docs/user-guides/history-experience\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n {children}\n </a>\n ),\n }}\n />\n </Text>\n )}\n </Stack>\n </Flex>\n </Card>\n )\n}\n","import {type EditableReleaseDocument, type ReleaseDocument} from '@sanity/client'\nimport {useCallback, useEffect, useRef, useState} from 'react'\n\nimport {DetailIdentity} from '../../../components/detailLayout'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {useWorkspace} from '../../../studio/workspace'\nimport {getIsReleaseOpen, TitleDescriptionForm} from '../../components/dialog/TitleDescriptionForm'\nimport {useReleaseOperations} from '../../store/useReleaseOperations'\nimport {useReleasePermissions} from '../../store/useReleasePermissions'\n\nfunction ReleaseDetailsEditorProduction({release}: {release: ReleaseDocument}): React.JSX.Element {\n const {updateRelease} = useReleaseOperations()\n const [timer, setTimer] = useState<NodeJS.Timeout | undefined>(undefined)\n\n const {checkWithPermissionGuard} = useReleasePermissions()\n const [hasUpdatePermission, setHasUpdatePermission] = useState<boolean | null>(null)\n\n const handleOnChange = useCallback(\n (changedValue: EditableReleaseDocument) => {\n clearTimeout(timer)\n\n /** @todo I wasn't able to get this working with the debouncer that we use in other parts */\n const newTimer = setTimeout(() => {\n if (hasUpdatePermission) {\n void updateRelease(changedValue)\n }\n }, 200)\n\n setTimer(newTimer)\n },\n [hasUpdatePermission, timer, updateRelease],\n )\n\n const isMounted = useRef(false)\n useEffect(() => {\n isMounted.current = true\n\n if (getIsReleaseOpen(release)) {\n // title and description will be readOnly if release is not 'open'\n // so only need to check permission to edit if release is 'open'\n void checkWithPermissionGuard(updateRelease, release).then((hasPermission) => {\n if (isMounted.current) setHasUpdatePermission(hasPermission)\n })\n }\n\n return () => {\n isMounted.current = false\n }\n }, [checkWithPermissionGuard, release, release._id, updateRelease])\n\n return (\n <TitleDescriptionForm\n key={release._id}\n release={release}\n onChange={handleOnChange}\n disabled={Boolean(!hasUpdatePermission)}\n />\n )\n}\n\n/**\n * The release identity (title + description) as a read-only display surface built on the shared\n * `DetailIdentity` spine.\n *\n * Editing is an explicit action, never inline. Behind `beta.variants` the pencil is dropped in\n * favour of a defined \"Edit details\" action in the top action rail (a defined button is discoverable\n * and keyboard/screen-reader accessible in a way a hover-only affordance is not).\n */\nfunction ReleaseDetailsEditorVariants({release}: {release: ReleaseDocument}): React.JSX.Element {\n const {t} = useTranslation()\n\n return (\n <DetailIdentity\n title={release.metadata.title}\n titleAs=\"h1\"\n titlePlaceholder={t('release.placeholder-untitled-release')}\n description={release.metadata.description}\n titleTestId=\"release-title-display\"\n descriptionTestId=\"release-description-display\"\n />\n )\n}\n\nexport function ReleaseDetailsEditor({release}: {release: ReleaseDocument}): React.JSX.Element {\n const variantsEnabled = Boolean(useWorkspace().beta?.variants?.enabled)\n\n if (variantsEnabled) {\n return <ReleaseDetailsEditorVariants release={release} />\n }\n\n return <ReleaseDetailsEditorProduction release={release} />\n}\n","import {format} from 'date-fns/format'\nimport {useCallback} from 'react'\n\nimport {useTimeZone} from '../../hooks/useTimeZone'\nimport {type TableRelease} from '../tool/overview/ReleasesOverview'\nimport {getPublishDateFromRelease} from '../util/util'\n\nexport const useReleaseTime = (): ((\n release: TableRelease,\n opts?: {compact?: boolean},\n) => string | null) => {\n const {timeZone, utcToCurrentZoneDate, getLocalTimeZone} = useTimeZone({\n type: 'contentReleases',\n } as const)\n const {abbreviation: localeTimeZoneAbbreviation} = getLocalTimeZone()\n\n const getTimezoneAbbreviation = useCallback(\n () =>\n timeZone.abbreviation === localeTimeZoneAbbreviation ? '' : `(${timeZone.abbreviation})`,\n [localeTimeZoneAbbreviation, timeZone.abbreviation],\n )\n\n return useCallback(\n (release: TableRelease, opts?: {compact?: boolean}) => {\n const publishDate = getPublishDateFromRelease(release)\n if (!publishDate) return null\n\n const zoned = utcToCurrentZoneDate(publishDate)\n // Compact: no seconds and no timezone suffix — for dense surfaces (e.g. the properties panel)\n // where the value must stay on a single line. `PPp` → \"Jul 30, 2026, 12:27 AM\".\n if (opts?.compact) return format(zoned, 'PPp')\n\n return `${format(zoned, 'PPpp')} ${getTimezoneAbbreviation()}`\n },\n [getTimezoneAbbreviation, utcToCurrentZoneDate],\n )\n}\n","import {LockIcon} from '@sanity/icons/Lock'\nimport {Box, Flex, Text} from '@sanity/ui'\n\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {useReleaseTime} from '../../hooks/useReleaseTime'\nimport {releasesLocaleNamespace} from '../../i18n'\nimport {ARCHIVED_RELEASE_STATES} from '../../util/const'\nimport {isReleaseScheduledOrScheduling} from '../../util/util'\nimport {type TableRelease} from '../overview/ReleasesOverview'\n\nexport const ReleaseTime: React.FC<{release: TableRelease}> = ({release}) => {\n const {t} = useTranslation()\n const {t: tRelease} = useTranslation(releasesLocaleNamespace)\n const getReleaseTime = useReleaseTime()\n\n const {metadata} = release\n\n if (metadata.releaseType === 'asap') {\n return (\n <Text size={1} muted weight=\"medium\">\n {t('release.type.asap')}\n </Text>\n )\n }\n if (metadata.releaseType === 'undecided') {\n return (\n <Text size={1} muted weight=\"medium\" style={{opacity: 0.5}}>\n {t('release.type.undecided')}\n </Text>\n )\n }\n\n // For scheduled releases:\n\n const isScheduledOrScheduling = isReleaseScheduledOrScheduling(release)\n const isInArchivedView = ARCHIVED_RELEASE_STATES.includes(release.state)\n\n return (\n <Flex gap={1} align=\"center\" wrap=\"wrap\">\n {isScheduledOrScheduling && (\n <Box paddingY={1}>\n <Text size={1} muted>\n <LockIcon data-testid=\"release-lock-icon\" />\n </Text>\n </Box>\n )}\n {!isInArchivedView && (\n <>\n <Box paddingY={1}>\n <Text size={1} muted>\n {isScheduledOrScheduling ? tRelease('time.scheduled') : tRelease('time.estimated')}\n </Text>\n </Box>\n <Box paddingY={1}>\n <Text size={1} muted>\n {'·'}\n </Text>\n </Box>\n </>\n )}\n <Box paddingY={1}>\n <Text size={1} weight=\"medium\">\n {getReleaseTime(release)}\n </Text>\n </Box>\n </Flex>\n )\n}\n","import {format} from 'date-fns/format'\nimport {isBefore} from 'date-fns/isBefore'\nimport {isValid} from 'date-fns/isValid'\nimport {parse} from 'date-fns/parse'\nimport {startOfMinute} from 'date-fns/startOfMinute'\nimport {useCallback} from 'react'\n\nimport {LazyTextInput} from '../../../components/inputs/DateInputs/LazyTextInput'\nimport {useTimeZone} from '../../../hooks/useTimeZone'\nimport {CONTENT_RELEASES_TIME_ZONE_SCOPE} from '../../../studio/constants'\n\nconst dateInputFormat = 'PP HH:mm'\n\nexport function ReleaseDateInput(props: {\n setIsIntendedScheduleDateInPast: (isIntendedScheduleDateInPast: boolean) => void\n setIntendedPublishAt: (intendedPublishAt: Date) => void\n intendedPublishAt: Date | undefined\n}): React.JSX.Element {\n const {setIsIntendedScheduleDateInPast, intendedPublishAt, setIntendedPublishAt} = props\n\n const {utcToCurrentZoneDate, zoneDateToUtc} = useTimeZone(CONTENT_RELEASES_TIME_ZONE_SCOPE)\n\n const intendedPublishAtTimezoneAdjusted = intendedPublishAt\n ? utcToCurrentZoneDate(intendedPublishAt)\n : intendedPublishAt\n\n const handlePublishAtInputChange = useCallback(\n (event: React.FocusEvent<HTMLInputElement>) => {\n const parsedDate = zoneDateToUtc(\n parse(event.currentTarget.value, dateInputFormat, new Date()),\n )\n\n if (isValid(parsedDate)) {\n setIsIntendedScheduleDateInPast(isBefore(parsedDate, new Date()))\n\n setIntendedPublishAt(startOfMinute(parsedDate))\n }\n },\n [zoneDateToUtc, setIsIntendedScheduleDateInPast, setIntendedPublishAt],\n )\n\n return (\n <LazyTextInput\n data-testid=\"date-input\"\n value={\n intendedPublishAtTimezoneAdjusted\n ? format(intendedPublishAtTimezoneAdjusted, dateInputFormat)\n : undefined\n }\n onChange={handlePublishAtInputChange}\n />\n )\n}\n","import {type ReleaseType} from '@sanity/client'\nimport {PublishIcon} from '@sanity/icons/Publish'\nimport {Card, Flex, Spinner, Stack, TabList, Text, useClickOutsideEvent, useToast} from '@sanity/ui'\nimport {isBefore} from 'date-fns/isBefore'\nimport {startOfMinute} from 'date-fns/startOfMinute'\nimport isEqual from 'lodash-es/isEqual.js'\nimport {useCallback, useMemo, useRef, useState} from 'react'\nimport {styled} from 'styled-components'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {Popover} from '../../../../ui-components/popover/Popover'\nimport {Tab} from '../../../../ui-components/tab/Tab'\nimport {Tooltip} from '../../../../ui-components/tooltip/Tooltip'\nimport {MONTH_PICKER_VARIANT} from '../../../components/inputs/DateInputs/calendar/Calendar'\nimport {type CalendarLabels} from '../../../components/inputs/DateInputs/calendar/types'\nimport {DatePicker} from '../../../components/inputs/DateInputs/DatePicker'\nimport {getCalendarLabels} from '../../../form/inputs/DateInputs/utils'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {CONTENT_RELEASES_TIME_ZONE_SCOPE} from '../../../studio/constants'\nimport {useWorkspace} from '../../../studio/workspace'\nimport {ReleaseAvatar} from '../../components/ReleaseAvatar'\nimport {useReleaseTime} from '../../hooks/useReleaseTime'\nimport {releasesLocaleNamespace} from '../../i18n'\nimport {useReleaseOperations} from '../../store/useReleaseOperations'\nimport {getIsScheduledDateInPast} from '../../util/getIsScheduledDateInPast'\nimport {getReleaseTone} from '../../util/getReleaseTone'\nimport {\n getPublishDateFromRelease,\n isReleaseScheduledOrScheduling,\n type NotArchivedRelease,\n} from '../../util/util'\nimport {ReleaseTime} from '../components/ReleaseTime'\nimport {ReleaseDateInput} from './ReleaseDateInput'\n\n// The Schedule value reads as plain text (matching the other property values), but stays clickable\n// to open the picker: a flush, chrome-free button that only underlines on hover — no pill, and its\n// text sits on the same left edge as every other value.\nconst ScheduleTrigger = styled.button`\n appearance: none;\n background: none;\n border: 0;\n margin: 0;\n padding: 0;\n display: block;\n width: 100%;\n min-width: 0;\n text-align: left;\n color: inherit;\n font: inherit;\n cursor: pointer;\n &:hover {\n text-decoration: underline;\n }\n`\n\nexport function ReleaseTypePicker(props: {release: NotArchivedRelease}): React.JSX.Element {\n const {release} = props\n const variantsEnabled = Boolean(useWorkspace().beta?.variants?.enabled)\n const popoverRef = useRef<HTMLDivElement | null>(null)\n const buttonRef = useRef<HTMLButtonElement | null>(null)\n const inputRef = useRef<HTMLInputElement | null>(null)\n const datePickerRef = useRef<HTMLDivElement | null>(null)\n\n const {t: tRelease} = useTranslation(releasesLocaleNamespace)\n const {t} = useTranslation()\n const {updateRelease} = useReleaseOperations()\n const toast = useToast()\n const getReleaseTime = useReleaseTime()\n\n const [open, setOpen] = useState(false)\n const [releaseType, setReleaseType] = useState<ReleaseType>(release.metadata.releaseType)\n const publishDate = useMemo(() => getPublishDateFromRelease(release), [release])\n const [isUpdating, setIsUpdating] = useState(false)\n const [isIntendedScheduleDateInPast, setIsIntendedScheduleDateInPast] = useState(\n publishDate && isBefore(new Date(publishDate), new Date()),\n )\n\n const [intendedPublishAt, setIntendedPublishAt] = useState<Date | undefined>(\n publishDate ? new Date(publishDate) : undefined,\n )\n const updatedDate = intendedPublishAt?.toISOString()\n\n const calendarLabels: CalendarLabels = useMemo(() => getCalendarLabels(t), [t])\n\n const close = useCallback(() => {\n // a bit of a hack to make sure the timezone dialog is not immediately closed on out\n // the dialog itself is in the Calendar component who is basically unrealted to this one\n const dialog = document.querySelector('#time-zone')\n\n if (open && !dialog) {\n const newRelease = {\n ...release,\n metadata: {\n ...release.metadata,\n releaseType,\n ...(typeof updatedDate === 'undefined' || releaseType !== 'scheduled'\n ? {}\n : {\n intendedPublishAt: updatedDate,\n }),\n },\n }\n\n if (!isEqual(newRelease, release)) {\n /**\n * If in past, the reset type and intendedPublish to the actual release values\n * and discard the changes made\n */\n if (getIsScheduledDateInPast(newRelease)) {\n setReleaseType(release.metadata.releaseType)\n setIntendedPublishAt(\n release.metadata.intendedPublishAt\n ? new Date(release.metadata.intendedPublishAt)\n : undefined,\n )\n\n toast.push({\n closable: true,\n status: 'warning',\n title: t('release.schedule-dialog.publish-date-in-past-warning'),\n })\n } else {\n setIsUpdating(true)\n void updateRelease(newRelease).finally(() => {\n setIsUpdating(false)\n })\n }\n }\n\n setOpen(false)\n }\n }, [open, release, updatedDate, releaseType, toast, t, updateRelease])\n\n useClickOutsideEvent(close, () => [\n popoverRef.current,\n buttonRef.current,\n inputRef.current,\n datePickerRef.current,\n ])\n\n const isPublishDateInPast = !!publishDate && isBefore(new Date(publishDate), new Date())\n const isReleaseScheduled = isReleaseScheduledOrScheduling(release)\n\n const publishDateLabel = useMemo(() => {\n if (release.state === 'published') {\n if (isPublishDateInPast && publishDate)\n return tRelease('dashboard.details.published-on', {\n date: getReleaseTime(release),\n })\n\n return tRelease('dashboard.details.published-asap')\n }\n\n return <ReleaseTime release={release} />\n }, [getReleaseTime, isPublishDateInPast, publishDate, release, tRelease])\n\n // A compact, single-line label for the properties-panel value: no seconds, and no\n // \"Estimated ·\"/\"Scheduled ·\" prefix (the row's leading glyph + label already convey the type).\n const compactLabel = useMemo(() => {\n if (release.state === 'published') {\n return isPublishDateInPast && publishDate\n ? tRelease('dashboard.details.published-on', {\n date: getReleaseTime(release, {compact: true}),\n })\n : tRelease('dashboard.details.published-asap')\n }\n if (release.metadata.releaseType === 'asap') return t('release.type.asap')\n if (release.metadata.releaseType === 'undecided') return t('release.type.undecided')\n return getReleaseTime(release, {compact: true}) ?? t('release.type.scheduled')\n }, [getReleaseTime, isPublishDateInPast, publishDate, release, t, tRelease])\n\n const handleButtonReleaseTypeChange = useCallback(\n (pickedReleaseType: ReleaseType) => {\n setReleaseType(pickedReleaseType)\n const nextPublishAt =\n pickedReleaseType === 'scheduled'\n ? (publishDate ?? startOfMinute(new Date()))\n : (publishDate ?? undefined)\n setIntendedPublishAt(nextPublishAt)\n setIsIntendedScheduleDateInPast(true)\n },\n [publishDate],\n )\n\n const handlePublishAtCalendarChange = useCallback((date: Date | null) => {\n if (!date) return\n\n const cleanDate = startOfMinute(new Date(date))\n setIsIntendedScheduleDateInPast(isBefore(cleanDate, new Date()))\n setIntendedPublishAt(cleanDate)\n }, [])\n\n const handleOnPickerClick = () => {\n if (open) close()\n else setOpen(true)\n }\n\n const tone = release.state === 'published' ? 'positive' : getReleaseTone(release)\n\n const releaseTypeIcon = useMemo(() => {\n if (isUpdating) return <Spinner size={1} data-testid=\"updating-release-spinner\" />\n if (release.state === 'published') return <PublishIcon />\n\n return <ReleaseAvatar release={release} padding={0} />\n }, [isUpdating, release])\n\n const productionLabelContent = useMemo(\n () => (\n <Flex flex={1} gap={2} align={'center'}>\n {releaseTypeIcon}\n <span data-testid=\"release-type-label\">{publishDateLabel}</span>\n </Flex>\n ),\n [publishDateLabel, releaseTypeIcon],\n )\n\n const popoverContent = (\n <Stack gap={1}>\n <TabList gap={0.5}>\n <Tab\n aria-controls=\"release-timing-asap\"\n id=\"release-timing-asap-tab\"\n onClick={() => handleButtonReleaseTypeChange('asap')}\n label={t('release.type.asap')}\n selected={releaseType === 'asap'}\n />\n <Tab\n aria-controls=\"release-timing-at-time\"\n id=\"release-timing-at-time-tab\"\n onClick={() => handleButtonReleaseTypeChange('scheduled')}\n selected={releaseType === 'scheduled'}\n label={t('release.type.scheduled')}\n />\n <Tab\n aria-controls=\"release-timing-undecided\"\n id=\"release-timing-undecided-tab\"\n onClick={() => handleButtonReleaseTypeChange('undecided')}\n selected={releaseType === 'undecided'}\n label={t('release.type.undecided')}\n />\n </TabList>\n {releaseType === 'scheduled' && (\n <>\n {isIntendedScheduleDateInPast && (\n <Card margin={1} padding={2} radius={2} shadow={1} tone=\"critical\">\n <Text size={1}>{t('release.schedule-dialog.publish-date-in-past-warning')}</Text>\n </Card>\n )}\n <ReleaseDateInput\n setIsIntendedScheduleDateInPast={setIsIntendedScheduleDateInPast}\n setIntendedPublishAt={setIntendedPublishAt}\n intendedPublishAt={intendedPublishAt}\n />\n <DatePicker\n ref={datePickerRef}\n monthPickerVariant={MONTH_PICKER_VARIANT.carousel}\n calendarLabels={calendarLabels}\n selectTime\n padding={0}\n value={intendedPublishAt}\n onChange={handlePublishAtCalendarChange}\n isPastDisabled\n showTimeZone\n timeZoneScope={CONTENT_RELEASES_TIME_ZONE_SCOPE}\n />\n </>\n )}\n </Stack>\n )\n\n if (!variantsEnabled) {\n return (\n <Popover\n content={popoverContent}\n open={open}\n padding={1}\n placement=\"bottom-start\"\n ref={popoverRef}\n >\n {release.state === 'published' ? (\n <Card\n tone=\"default\"\n data-testid=\"published-release-type-label\"\n padding={2}\n style={{borderRadius: '999px'}}\n >\n {productionLabelContent}\n </Card>\n ) : (\n <Button\n disabled={isReleaseScheduled}\n mode=\"bleed\"\n onClick={handleOnPickerClick}\n ref={buttonRef}\n tooltipProps={{\n placement: 'bottom',\n content: isReleaseScheduled && tRelease('type-picker.tooltip.scheduled'),\n }}\n selected={open}\n tone={tone}\n style={{borderRadius: '999px'}}\n data-testid=\"release-type-picker\"\n >\n {productionLabelContent}\n </Button>\n )}\n </Popover>\n )\n }\n\n const valueText = (\n <Text\n data-testid=\"release-type-label\"\n size={1}\n weight=\"medium\"\n textOverflow=\"ellipsis\"\n title={compactLabel}\n style={{opacity: isUpdating ? 0.5 : 1}}\n >\n {compactLabel}\n </Text>\n )\n\n return (\n <Popover\n content={popoverContent}\n open={open}\n padding={1}\n placement=\"bottom-start\"\n ref={popoverRef}\n >\n {/* The tone-scoped Card (transparent bg) colours the value text; no filled pill. When the\n schedule is editable it's a flush, chrome-free clickable trigger; when locked/published\n it's static text. Either way it reads as plain text aligned with the other values. */}\n {release.state === 'published' || isReleaseScheduled ? (\n // When the schedule is locked because the release is scheduled, keep the same explanation the\n // production disabled control shows. Disabled for published releases (no scheduled tooltip).\n <Tooltip content={tRelease('type-picker.tooltip.scheduled')} disabled={!isReleaseScheduled}>\n <Card\n tone={tone}\n padding={0}\n style={{background: 'transparent'}}\n data-testid={\n release.state === 'published' ? 'published-release-type-label' : 'release-type-picker'\n }\n >\n {valueText}\n </Card>\n </Tooltip>\n ) : (\n <Card tone={tone} padding={0} style={{background: 'transparent'}}>\n <ScheduleTrigger\n ref={buttonRef}\n onClick={handleOnPickerClick}\n data-testid=\"release-type-picker\"\n >\n {valueText}\n </ScheduleTrigger>\n </Card>\n )}\n </Popover>\n )\n}\n","import {Card, Text} from '@sanity/ui'\n\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {releasesLocaleNamespace} from '../../i18n'\nimport {getDocumentValidationLoading} from '../../util/getDocumentValidationLoading'\nimport {type DocumentInRelease} from './types'\n\n// Transparent background so the tone only colours the text (green/red), not a filled chip — the\n// properties block uses one value idiom (semantic-coloured text), not a mix of pills and badges.\nconst TRANSPARENT_BG = {background: 'transparent'} as const\n\n/**\n * The persistent validation status shown in the release properties panel, as semantic-coloured\n * text: green \"Valid\" when every document validates, red \"Errors\" when any fail, plain \"Validating\"\n * while in progress, and muted \"No documents\" when the release is empty. Unlike the shared\n * ValidationProgressIndicator (whose green fades to a bare checkmark after a beat), this holds its\n * state so the panel can clearly signal whether the release is good to go — and it reads as text,\n * matching the other property values rather than sitting in a box.\n *\n * @internal\n */\nexport function ReleaseValidationBadge({\n documents,\n}: {\n documents: DocumentInRelease[]\n}): React.JSX.Element {\n const {t} = useTranslation(releasesLocaleNamespace)\n const totalCount = documents.length\n\n if (totalCount === 0) {\n return (\n <Text muted size={1}>\n {t('dashboard.details.metadata.status-empty')}\n </Text>\n )\n }\n\n const {hasError, validatedCount} = getDocumentValidationLoading(documents)\n const isValidating = validatedCount !== totalCount\n\n const tone = hasError ? 'critical' : isValidating ? 'default' : 'positive'\n const label = hasError\n ? t('dashboard.details.metadata.status-errors')\n : isValidating\n ? t('dashboard.details.metadata.status-validating')\n : t('dashboard.details.metadata.status-valid')\n\n // A tone-scoped Card sets the foreground colour var; with a transparent background the Text simply\n // renders in the tone colour (green/red), no filled chip.\n return (\n <Card tone={tone} style={TRANSPARENT_BG}>\n <Text size={1} weight=\"medium\">\n {label}\n </Text>\n </Card>\n )\n}\n","const degreesToRadians = (degrees: number) => (degrees * Math.PI) / 180\n\n/**\n * This is a component that renders a progress icon based on the progress percentage\n * @param progress - The progress percentage (0-100)\n * @returns The progress icon based on the progress percentage\n */\nexport function ProgressIcon(props: {progress: number}) {\n const {progress, ...rest} = props\n\n const circlePath = partialCircle(\n 12.5,\n 12.5,\n 4.5,\n degreesToRadians(-90),\n degreesToRadians(progress * 360 - 90),\n )\n\n const d =\n circlePath.length > 0\n ? `${circlePath.map((vs) => vs.join(' ')).join(' ')} L 12.5 12.5 Z`\n : undefined\n\n return (\n <svg\n data-sanity-icon=\"progress-50\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 25 25\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n {d && (\n <path\n d={d}\n fill=\"currentColor\"\n stroke=\"currentColor\"\n strokeWidth={1.2}\n strokeLinejoin=\"round\"\n />\n )}\n <path\n d=\"M12.5 20.5C16.9183 20.5 20.5 16.9183 20.5 12.5C20.5 8.08172 16.9183 4.5 12.5 4.5C8.08172 4.5 4.5 8.08172 4.5 12.5C4.5 16.9183 8.08172 20.5 12.5 20.5Z\"\n stroke=\"currentColor\"\n strokeWidth={1.2}\n strokeLinejoin=\"round\"\n />\n </svg>\n )\n}\n\nfunction partialCircle(cx: number, cy: number, r: number, start: number, end: number) {\n const length = end - start\n if (length === 0) return []\n\n const fromX = r * Math.cos(start) + cx\n const fromY = r * Math.sin(start) + cy\n const toX = r * Math.cos(end) + cx\n const toY = r * Math.sin(end) + cy\n const large = Math.abs(length) <= Math.PI ? '0' : '1'\n const sweep = length < 0 ? '0' : '1'\n\n return [\n ['M', fromX, fromY],\n ['A', r, r, 0, large, sweep, toX, toY],\n ]\n}\n","import {CheckmarkCircleIcon} from '@sanity/icons/CheckmarkCircle'\nimport {ErrorOutlineIcon} from '@sanity/icons/ErrorOutline'\nimport {Card, type CardTone, Flex, Text} from '@sanity/ui'\nimport {useEffect, useMemo, useState} from 'react'\n\nimport {ProgressIcon} from '../../../../ui-components/progressIcon/ProgressIcon'\nimport {Tooltip} from '../../../../ui-components/tooltip/Tooltip'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {releasesLocaleNamespace} from '../../i18n'\nimport {getDocumentValidationLoading} from '../../util/getDocumentValidationLoading'\nimport {type DocumentInRelease} from './types'\n\nexport function ValidationProgressIndicator({\n documents,\n layout = 'default',\n}: {\n documents: DocumentInRelease[]\n layout?: 'default' | 'minimal'\n}) {\n const totalCount = documents.length\n const {validatedCount, isValidating, hasError} = getDocumentValidationLoading(documents)\n const [showCheckmark, setShowCheckmark] = useState(false)\n // in order if the caching has already happened once and the object is already at minimal,\n // We don't want to show the whole thing again - instead we want to keep the minimal layout\n const [hasFinishedOnce, setHasFinishedOnce] = useState(false)\n const {t} = useTranslation(releasesLocaleNamespace)\n\n const isFinished = useMemo(\n () => validatedCount === totalCount && validatedCount !== 0,\n [validatedCount, totalCount],\n )\n\n // Use minimal layout if explicitly set OR if validation has finished once\n const isMinimal = layout === 'minimal' || hasFinishedOnce\n\n // Add delay when validation is finished\n // so that we can show that it's finished but then show the checkmark\n // without the text\n useEffect(() => {\n if (isFinished) {\n const timer = setTimeout(() => {\n setShowCheckmark(true)\n setHasFinishedOnce(true)\n }, 2500)\n\n return () => clearTimeout(timer)\n }\n return undefined\n }, [isFinished, showCheckmark])\n\n useEffect(() => {\n // If it's not validating, we should not be showing the checkmark\n // it is only shown after a delay set by the previous useEffect\n if (isValidating) {\n // oxlint-disable-next-line react/react-compiler\n setShowCheckmark(false)\n }\n }, [isValidating])\n\n // If it's not finished and not validating, we should not be showing anything\n // usually this happens when the release detail is first opened\n if (!isFinished && !isValidating) {\n return null\n }\n\n const tone: CardTone = isValidating\n ? 'neutral'\n : isFinished && showCheckmark && !hasError\n ? 'transparent'\n : hasError\n ? 'critical'\n : 'positive'\n\n const cardBackground = isFinished && showCheckmark && !hasError ? 'transparent' : undefined\n\n return (\n <Card\n padding={isMinimal ? 0 : 2}\n radius=\"full\"\n tone={tone}\n style={{\n background: cardBackground,\n }}\n >\n <Flex gap={2}>\n <Text size={1}>\n {isValidating ? (\n <ProgressIcon progress={validatedCount / totalCount} />\n ) : (\n <Tooltip\n content={hasError ? t('summary.errors-found') : t('summary.all-documents-validated')}\n >\n {hasError ? <ErrorOutlineIcon /> : <CheckmarkCircleIcon />}\n </Tooltip>\n )}\n </Text>\n {!showCheckmark && !isMinimal && (\n <Text muted size={1}>\n {isValidating\n ? t('summary.validating-documents', {validatedCount, totalCount})\n : hasError\n ? t('summary.all-documents-errors-found')\n : t('summary.all-documents-validated')}\n </Text>\n )}\n </Flex>\n </Card>\n )\n}\n","import {type ReleaseDocument} from '@sanity/client'\nimport {CheckmarkCircleIcon} from '@sanity/icons/CheckmarkCircle'\nimport {ClockIcon} from '@sanity/icons/Clock'\nimport {DocumentsIcon} from '@sanity/icons/Documents'\nimport {ErrorOutlineIcon} from '@sanity/icons/ErrorOutline'\nimport {PinIcon} from '@sanity/icons/Pin'\nimport {PinFilledIcon} from '@sanity/icons/PinFilled'\nimport {UserIcon} from '@sanity/icons/User'\nimport {WarningOutlineIcon} from '@sanity/icons/WarningOutline'\nimport {Box, Card, Container, Flex, Skeleton, Stack, Text} from '@sanity/ui'\nimport {useCallback, useEffect, useRef, useState} from 'react'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {ToneIcon} from '../../../../ui-components/toneIcon/ToneIcon'\nimport {DetailPropertiesPanel, type DetailPropertiesSection} from '../../../components/detailLayout'\nimport {RelativeTime} from '../../../components/RelativeTime'\nimport {TextWithTone} from '../../../components/textWithTone/TextWithTone'\nimport {UserAvatar} from '../../../components/userAvatar/UserAvatar'\nimport {Details} from '../../../form/components/Details'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {usePerspective} from '../../../perspective/usePerspective'\nimport {useSetPerspective} from '../../../perspective/useSetPerspective'\nimport {useWorkspace} from '../../../studio/workspace'\nimport {ReleaseAvatar} from '../../components/ReleaseAvatar'\nimport {releasesLocaleNamespace} from '../../i18n'\nimport {useReleaseOperations} from '../../store/useReleaseOperations'\nimport {useReleasePermissions} from '../../store/useReleasePermissions'\nimport {getDocumentValidationLoading} from '../../util/getDocumentValidationLoading'\nimport {getReleaseIdFromReleaseDocumentId} from '../../util/getReleaseIdFromReleaseDocumentId'\nimport {isNotArchivedRelease} from '../../util/util'\nimport {ArchivedReleaseBanner} from './ArchivedReleaseBanner'\nimport {isCreateReleaseEvent, type ReleaseEvent} from './events/types'\nimport {ReleaseDetailsEditor} from './ReleaseDetailsEditor'\nimport {ReleaseTypePicker} from './ReleaseTypePicker'\nimport {ReleaseValidationBadge} from './ReleaseValidationBadge'\nimport {type DocumentInRelease} from './types'\nimport {ValidationProgressIndicator} from './ValidationProgressIndicator'\n\nfunction ReleaseDashboardDetailsProduction({\n release,\n documents,\n shouldDisplayError,\n shouldDisplayWarnings,\n isAtTimeRelease,\n isReleaseOpen,\n}: {\n release: ReleaseDocument\n documents: DocumentInRelease[]\n shouldDisplayError: boolean\n shouldDisplayWarnings: boolean\n isAtTimeRelease: boolean\n isReleaseOpen: boolean\n}) {\n const {t: tRelease} = useTranslation(releasesLocaleNamespace)\n const {t: tCore} = useTranslation()\n const releaseId = getReleaseIdFromReleaseDocumentId(release._id)\n const {selectedReleaseId} = usePerspective()\n const setPerspective = useSetPerspective()\n const {document} = useWorkspace()\n const {\n drafts: {enabled: isDraftModelEnabled},\n } = document\n\n const isSelected = releaseId === selectedReleaseId\n const releaseFullTitle = release.metadata.title || tCore('release.placeholder-untitled-release')\n\n const handlePinRelease = useCallback(() => {\n if (isSelected) {\n setPerspective(isDraftModelEnabled ? 'drafts' : 'published')\n } else {\n setPerspective(releaseId)\n }\n }, [isDraftModelEnabled, isSelected, releaseId, setPerspective])\n\n return (\n <Container width={3}>\n <Stack padding={3} paddingY={[3, 3, 4, 5]}>\n <Flex gap={1} align=\"center\">\n {isReleaseOpen && (\n <Button\n icon={isSelected ? PinFilledIcon : PinIcon}\n tooltipProps={{\n placement: 'top',\n content: isSelected\n ? tRelease('dashboard.details.unpin-release')\n : tRelease('dashboard.details.pin-release'),\n }}\n mode=\"bleed\"\n onClick={handlePinRelease}\n radius=\"full\"\n selected={isSelected}\n aria-label={\n isSelected\n ? `${tRelease('dashboard.details.unpin-release')}: \"${releaseFullTitle}\"`\n : `${tRelease('dashboard.details.pin-release')}: \"${releaseFullTitle}\"`\n }\n aria-live=\"assertive\"\n />\n )}\n {isNotArchivedRelease(release) && <ReleaseTypePicker release={release} />}\n <ValidationProgressIndicator documents={documents} />\n {shouldDisplayError && (\n <Flex gap={2} padding={2} data-testid=\"release-error-details\">\n <Text size={1}>\n <ToneIcon icon={ErrorOutlineIcon} tone=\"critical\" />\n </Text>\n <TextWithTone size={1} tone=\"critical\">\n {isAtTimeRelease\n ? tRelease('failed-schedule-title')\n : tRelease('failed-publish-title')}\n </TextWithTone>\n </Flex>\n )}\n {shouldDisplayWarnings && (\n <Flex gap={2} padding={2} data-testid=\"release-permission-error-details\">\n <Text size={1}>\n <ToneIcon icon={WarningOutlineIcon} tone=\"caution\" />\n </Text>\n <TextWithTone size={1} tone=\"caution\">\n {tRelease('permission-missing-title')}\n </TextWithTone>\n </Flex>\n )}\n </Flex>\n <Box padding={2}>\n <ReleaseDetailsEditor release={release} />\n </Box>\n {shouldDisplayError && (\n <Card padding={4} radius={4} tone=\"critical\">\n <Flex gap={3}>\n <Text size={1}>\n <ErrorOutlineIcon />\n </Text>\n <Stack gap={4}>\n <Text size={1} weight=\"semibold\">\n {isAtTimeRelease\n ? tRelease('failed-schedule-title')\n : tRelease('failed-publish-title')}\n </Text>\n <Details title={tRelease('error-details-title')}>\n <Text size={1} accent>\n <code>{release.error?.message}</code>\n </Text>\n </Details>\n </Stack>\n </Flex>\n </Card>\n )}\n\n {shouldDisplayWarnings && (\n <Card padding={4} radius={4} tone=\"caution\">\n <Flex gap={3}>\n <Text size={1}>\n <WarningOutlineIcon />\n </Text>\n <Stack gap={3}>\n <Text size={1}>{tRelease('permission-missing-title')}</Text>\n <Text size={1} muted>\n {tRelease('permission-missing-description')}\n </Text>\n </Stack>\n </Flex>\n </Card>\n )}\n\n {!isReleaseOpen && <ArchivedReleaseBanner release={release} />}\n </Stack>\n </Container>\n )\n}\n\nexport function ReleaseDashboardDetails({\n release,\n documents,\n events,\n loading = false,\n}: {\n release: ReleaseDocument\n documents: DocumentInRelease[]\n events: ReleaseEvent[]\n /** True while the release documents are still loading — skeleton the count/status instead of\n * rendering an empty (\"No documents\" / \"0\") state prematurely. */\n loading?: boolean\n}) {\n const {state} = release\n\n const {checkWithPermissionGuard} = useReleasePermissions()\n const {publishRelease, schedule} = useReleaseOperations()\n\n const {t: tRelease} = useTranslation(releasesLocaleNamespace)\n const variantsEnabled = Boolean(useWorkspace().beta?.variants?.enabled)\n const createAuthor = events.find(isCreateReleaseEvent)?.author\n\n const validation = getDocumentValidationLoading(documents)\n const isFullyValidated = documents.length > 0 && validation.validatedCount === documents.length\n const statusTone = validation.hasError ? 'critical' : isFullyValidated ? 'positive' : 'default'\n const statusGlyphIcon = validation.hasError ? (\n <ErrorOutlineIcon />\n ) : isFullyValidated ? (\n <CheckmarkCircleIcon />\n ) : (\n <ClockIcon />\n )\n const statusGlyph =\n documents.length === 0 ? undefined : (\n <Card tone={statusTone} style={{background: 'transparent'}}>\n <Text size={1}>{statusGlyphIcon}</Text>\n </Card>\n )\n\n const isAtTimeRelease = release?.metadata?.releaseType === 'scheduled'\n const isReleaseOpen = state !== 'archived' && state !== 'published'\n const isActive = release.state === 'active'\n const shouldDisplayError = isActive && typeof release.error !== 'undefined'\n const [shouldDisplayPermissionWarning, setShouldDisplayPermissionWarning] = useState(false)\n const shouldDisplayWarnings = isActive && shouldDisplayPermissionWarning\n const isMounted = useRef(false)\n useEffect(() => {\n isMounted.current = true\n\n // only run if the release is active\n if (isActive) {\n void checkWithPermissionGuard(publishRelease, release._id).then((hasPermission) => {\n if (isMounted.current) setShouldDisplayPermissionWarning(!hasPermission)\n return null\n })\n\n // if it's a release that can be scheduled, check if it can be scheduled\n if (release.metadata.intendedPublishAt && isAtTimeRelease) {\n void checkWithPermissionGuard(schedule, release._id, new Date()).then((hasPermission) => {\n if (isMounted.current) setShouldDisplayPermissionWarning(!hasPermission)\n return null\n })\n }\n }\n return () => {\n isMounted.current = false\n }\n }, [\n checkWithPermissionGuard,\n isActive,\n isAtTimeRelease,\n publishRelease,\n release._id,\n release.metadata.intendedPublishAt,\n schedule,\n ])\n\n if (!variantsEnabled) {\n return (\n <ReleaseDashboardDetailsProduction\n release={release}\n documents={documents}\n shouldDisplayError={shouldDisplayError}\n shouldDisplayWarnings={shouldDisplayWarnings}\n isAtTimeRelease={isAtTimeRelease}\n isReleaseOpen={isReleaseOpen}\n />\n )\n }\n\n return (\n <Container width={3}>\n {/* Tight top padding: the header above already pads its bottom, so the title sits close under\n the breadcrumb instead of floating in a doubled gap. */}\n <Stack paddingX={3} paddingBottom={3} paddingTop={1} gap={4}>\n {/* Clear zones: identity (title + description) on the left; a label -> value metadata panel\n on the right. Wraps to a single column on narrow widths (metadata stacks under the\n description). The pin control was removed (it's a global-perspective mode that belongs in\n the perspective bar, matching the Variants pin removal). */}\n <Flex align=\"flex-start\" gap={4} wrap=\"wrap\">\n <Box flex={1} style={{minWidth: 280}}>\n <ReleaseDetailsEditor release={release} />\n </Box>\n <DetailPropertiesPanel\n testId=\"release-detail-metadata\"\n sections={\n [\n {\n rows: [\n isNotArchivedRelease(release) && {\n icon: <ReleaseAvatar release={release} padding={0} />,\n label: tRelease('dashboard.details.metadata.schedule'),\n value: <ReleaseTypePicker release={release} />,\n },\n {\n icon: statusGlyph,\n label: tRelease('dashboard.details.metadata.status'),\n value: loading ? (\n <Skeleton animated radius={1} style={{width: 48, height: 11}} />\n ) : (\n <ReleaseValidationBadge documents={documents} />\n ),\n },\n {\n icon: (\n <Text size={1} muted>\n <DocumentsIcon />\n </Text>\n ),\n label: tRelease('dashboard.details.metadata.documents'),\n value: loading ? (\n <Skeleton animated radius={1} style={{width: 24, height: 11}} />\n ) : (\n String(documents.length)\n ),\n },\n {\n icon: createAuthor ? (\n <UserAvatar size={0} user={createAuthor} />\n ) : (\n <Text size={1} muted>\n <UserIcon />\n </Text>\n ),\n label: tRelease('dashboard.details.metadata.created'),\n value: (\n <Text size={1}>\n <RelativeTime time={release._createdAt} useTemporalPhrase minimal />\n </Text>\n ),\n },\n ],\n },\n ] satisfies DetailPropertiesSection[]\n }\n />\n </Flex>\n {shouldDisplayError && (\n <Card data-testid=\"release-error-details\" padding={4} radius={4} tone=\"critical\">\n <Flex gap={3}>\n <Text size={1}>\n <ErrorOutlineIcon />\n </Text>\n <Stack gap={4}>\n <Text size={1} weight=\"semibold\">\n {isAtTimeRelease\n ? tRelease('failed-schedule-title')\n : tRelease('failed-publish-title')}\n </Text>\n <Details title={tRelease('error-details-title')}>\n <Text size={1} accent>\n <code>{release.error?.message}</code>\n </Text>\n </Details>\n </Stack>\n </Flex>\n </Card>\n )}\n\n {shouldDisplayWarnings && (\n <Card\n data-testid=\"release-permission-error-details\"\n padding={4}\n radius={4}\n tone=\"caution\"\n >\n <Flex gap={3}>\n <Text size={1}>\n <WarningOutlineIcon />\n </Text>\n <Stack gap={3}>\n <Text size={1}>{tRelease('permission-missing-title')}</Text>\n <Text size={1} muted>\n {tRelease('permission-missing-description')}\n </Text>\n </Stack>\n </Flex>\n </Card>\n )}\n\n {!isReleaseOpen && <ArchivedReleaseBanner release={release} />}\n </Stack>\n </Container>\n )\n}\n","import {type ReleaseDocument} from '@sanity/client'\nimport {memo, type ReactNode, useEffect} from 'react'\n\nimport {GetHookCollectionState} from '../../components/hookCollection/GetHookCollectionState'\nimport {\n type ReleaseActionComponent,\n type ReleaseActionDescription,\n} from '../../config/releases/actions'\nimport {type DocumentInRelease} from '../tool/detail/types'\n\nexport interface ReleaseActionsResolverProps {\n actions: ReleaseActionComponent[]\n release: ReleaseDocument\n documents: DocumentInRelease[]\n onActions: (actions: ReleaseActionDescription[]) => void\n children?: (props: {states: ReleaseActionDescription[]}) => ReactNode\n}\n\nconst ReleaseActionsStateHandler = memo(function ReleaseActionsStateHandler({\n states,\n onActions,\n renderChildren,\n}: {\n states: ReleaseActionDescription[]\n onActions: (actions: ReleaseActionDescription[]) => void\n renderChildren?: (props: {states: ReleaseActionDescription[]}) => ReactNode\n}) {\n useEffect(() => {\n onActions(states)\n }, [states, onActions])\n\n return renderChildren ? renderChildren({states}) : null\n})\n\n/**\n * The `ReleaseActionsResolver` component is responsible for resolving the actions for a given release.\n *\n * This component uses the `GetHookCollectionState` pattern to efficiently manage action hook states,\n * providing performance optimizations and consistent behaviour with document actions.\n *\n * @internal\n */\nexport const ReleaseActionsResolver = memo(function ReleaseActionsResolver(\n props: ReleaseActionsResolverProps,\n) {\n const {actions, release, documents, onActions, children} = props\n\n const actionProps = {\n release,\n documents,\n }\n\n return (\n <GetHookCollectionState<typeof actionProps, ReleaseActionDescription>\n hooks={actions}\n args={actionProps}\n >\n {({states}) => (\n <ReleaseActionsStateHandler\n states={states}\n onActions={onActions}\n renderChildren={children}\n />\n )}\n </GetHookCollectionState>\n )\n})\n","import {type ReleaseDocument} from '@sanity/client'\nimport {useMemo} from 'react'\n\nimport {type ReleaseActionComponent} from '../../config/releases/actions'\nimport {useSource} from '../../studio/source'\nimport {type DocumentInRelease} from '../tool/detail/types'\n\n/**\n * Hook to get custom/configured release actions for a release\n *\n * @internal\n */\nexport function useCustomReleaseActions(\n release: ReleaseDocument,\n documents: DocumentInRelease[] = [],\n): ReleaseActionComponent[] {\n // oxlint-disable-next-line no-deprecated -- will fix in follow up PR\n const source = useSource()\n\n const customReleaseActions = useMemo(() => {\n if (!source.releases?.actions) {\n return []\n }\n\n return source.releases.actions({\n release,\n documents,\n })\n }, [source, release, documents])\n\n return customReleaseActions\n}\n","import {Text} from '@sanity/ui'\nimport {useCallback} from 'react'\nimport {useRouter} from 'sanity/router'\n\nimport {useTranslation} from '../../../../i18n/hooks/useTranslation'\nimport {releasesLocaleNamespace} from '../../../i18n'\nimport {getReleaseIdFromReleaseDocumentId} from '../../../util/getReleaseIdFromReleaseDocumentId'\nimport {type ActionResult} from './ReleaseMenuButton'\n\nexport const DuplicateReleaseToastLink = ({actionResult}: {actionResult: ActionResult}) => {\n const router = useRouter()\n const {t} = useTranslation(releasesLocaleNamespace)\n\n const navigateToDuplicateRelease = useCallback(() => {\n if (!actionResult || !('releaseId' in actionResult)) return\n\n router.navigate({releaseId: getReleaseIdFromReleaseDocumentId(actionResult.releaseId)})\n }, [actionResult, router])\n\n return (\n <Text\n size={1}\n weight=\"medium\"\n data-as=\"a\"\n onClick={navigateToDuplicateRelease}\n style={{\n cursor: 'pointer',\n marginBottom: '0.5rem',\n display: 'flex',\n }}\n data-testid=\"duplicate-release-success-link\"\n >\n {t('toast.duplicate.success-link')}\n </Text>\n )\n}\n","import {type DefinedTelemetryLog} from '@sanity/telemetry/react'\nimport {type ButtonTone} from '@sanity/ui'\n\nimport {\n ArchivedRelease,\n DeletedRelease,\n DuplicatedRelease,\n UnarchivedRelease,\n UnscheduledRelease,\n} from '../../../__telemetry__/releases.telemetry'\n\nexport type ReleaseAction =\n | 'archive'\n | 'unarchive'\n | 'delete'\n | 'unschedule'\n | 'publish'\n | 'schedule'\n | 'duplicate'\n\ninterface BaseReleaseActionsMap {\n toastSuccessI18nKey?: string\n toastFailureI18nKey?: string\n telemetry: DefinedTelemetryLog<void>\n}\n\ninterface DialogActionsMap extends BaseReleaseActionsMap {\n confirmDialog: {\n dialogId: string\n dialogHeaderI18nKey: string\n dialogDescriptionI18nKey: string\n dialogConfirmButtonI18nKey: string\n confirmButtonTone: ButtonTone\n }\n}\n\nexport const RELEASE_ACTION_MAP: Record<\n Exclude<ReleaseAction, 'schedule' | 'publish'>,\n DialogActionsMap | (BaseReleaseActionsMap & {confirmDialog: false})\n> = {\n delete: {\n confirmDialog: {\n dialogId: 'confirm-delete-dialog',\n dialogHeaderI18nKey: 'delete-dialog.confirm-delete.header',\n dialogDescriptionI18nKey: 'delete-dialog.confirm-delete-description',\n dialogConfirmButtonI18nKey: 'delete-dialog.confirm-delete-button',\n confirmButtonTone: 'critical',\n },\n toastSuccessI18nKey: 'toast.delete.success',\n toastFailureI18nKey: 'toast.delete.error',\n telemetry: DeletedRelease,\n },\n archive: {\n confirmDialog: {\n dialogId: 'confirm-archive-dialog',\n dialogHeaderI18nKey: 'archive-dialog.confirm-archive-header',\n dialogDescriptionI18nKey: 'archive-dialog.confirm-archive-description',\n dialogConfirmButtonI18nKey: 'archive-dialog.confirm-archive-button',\n confirmButtonTone: 'critical',\n },\n toastFailureI18nKey: 'toast.archive.error',\n telemetry: ArchivedRelease,\n },\n unarchive: {\n confirmDialog: false,\n toastFailureI18nKey: 'toast.unarchive.error',\n telemetry: UnarchivedRelease,\n },\n unschedule: {\n confirmDialog: false,\n toastFailureI18nKey: 'toast.unschedule.error',\n telemetry: UnscheduledRelease,\n },\n duplicate: {\n confirmDialog: {\n dialogId: 'confirm-duplicate-dialog',\n dialogHeaderI18nKey: 'duplicate-dialog.confirm-duplicate-header',\n dialogDescriptionI18nKey: 'duplicate-dialog.confirm-duplicate-description',\n dialogConfirmButtonI18nKey: 'duplicate-dialog.confirm-duplicate-button',\n confirmButtonTone: 'primary',\n },\n toastSuccessI18nKey: 'toast.duplicate.success',\n toastFailureI18nKey: 'toast.duplicate.error',\n telemetry: DuplicatedRelease,\n },\n}\n","import {type ReleaseDocument} from '@sanity/client'\nimport {ErrorOutlineIcon} from '@sanity/icons/ErrorOutline'\nimport {PublishIcon} from '@sanity/icons/Publish'\nimport {useTelemetry} from '@sanity/telemetry/react'\nimport {Checkbox, Flex, Stack, Text, useToast} from '@sanity/ui'\nimport {type ChangeEvent, useCallback, useEffect, useMemo, useRef, useState} from 'react'\n\nimport {Button} from '../../../../../ui-components/button/Button'\nimport {Dialog} from '../../../../../ui-components/dialog/Dialog'\nimport {MenuItem} from '../../../../../ui-components/menuItem/MenuItem'\nimport {ToneIcon} from '../../../../../ui-components/toneIcon/ToneIcon'\nimport {type TooltipProps} from '../../../../../ui-components/tooltip/Tooltip'\nimport {useTranslation} from '../../../../i18n/hooks/useTranslation'\nimport {Translate} from '../../../../i18n/Translate'\nimport {usePerspective} from '../../../../perspective/usePerspective'\nimport {useSetPerspective} from '../../../../perspective/useSetPerspective'\nimport {useWorkspace} from '../../../../studio/workspace'\nimport {PublishedRelease} from '../../../__telemetry__/releases.telemetry'\nimport {releasesLocaleNamespace} from '../../../i18n'\nimport {isReleaseDocument} from '../../../store/types'\nimport {useReleaseOperations} from '../../../store/useReleaseOperations'\nimport {useReleasePermissions} from '../../../store/useReleasePermissions'\nimport {isGoingToUnpublish} from '../../../util/isGoingToUnpublish'\nimport {type DocumentInRelease} from '../../detail/types'\n\ninterface ReleasePublishAllButtonProps {\n release: ReleaseDocument\n documents: DocumentInRelease[]\n disabled?: boolean\n isMenuItem?: boolean\n onConfirmDialogOpen?: () => void\n onConfirmDialogClose?: () => void\n}\n\nexport const ReleasePublishAllButton = ({\n release,\n documents,\n disabled,\n isMenuItem = false,\n onConfirmDialogOpen,\n onConfirmDialogClose,\n}: ReleasePublishAllButtonProps) => {\n const toast = useToast()\n const {publishRelease, discardDrafts} = useReleaseOperations()\n const {checkWithPermissionGuard} = useReleasePermissions()\n const {t} = useTranslation(releasesLocaleNamespace)\n const {t: tCore} = useTranslation()\n const perspective = usePerspective()\n const setPerspective = useSetPerspective()\n const telemetry = useTelemetry()\n const {document} = useWorkspace()\n const {\n drafts: {enabled: isDraftModelEnabled},\n } = document\n\n const [publishBundleStatus, setPublishBundleStatus] = useState<'idle' | 'confirm' | 'publishing'>(\n 'idle',\n )\n const [shouldUpdateDrafts, setShouldUpdateDrafts] = useState(false)\n\n const [publishPermission, setPublishPermission] = useState<boolean>(false)\n\n // documents that also have an existing draft, which would become outdated once the release\n // is published (documents set to be unpublished are excluded, since publishing intentionally\n // keeps or creates a draft for them so that their content is not lost)\n const draftDocumentIds = useMemo(\n () =>\n documents\n .filter(\n (releaseDocument) =>\n releaseDocument.document.draftDocumentExists &&\n !isGoingToUnpublish(releaseDocument.document),\n )\n .map((releaseDocument) => releaseDocument.document._id),\n [documents],\n )\n const draftDocumentsCount = draftDocumentIds.length\n const showUpdateDraftsOption = isDraftModelEnabled && draftDocumentsCount > 0\n\n const isValidatingDocuments = documents.some(({validation}) => validation.isValidating)\n const hasDocumentValidationErrors = documents.some(({validation}) => validation.hasError)\n\n const isPublishButtonDisabled =\n disabled || isValidatingDocuments || hasDocumentValidationErrors || !publishPermission\n\n const isMounted = useRef(false)\n useEffect(() => {\n isMounted.current = true\n\n void checkWithPermissionGuard(publishRelease, release._id).then((hasPermission) => {\n if (isMounted.current) setPublishPermission(hasPermission)\n })\n\n return () => {\n isMounted.current = false\n }\n }, [checkWithPermissionGuard, publishRelease, release._id, release.metadata.intendedPublishAt])\n\n const handleConfirmPublishAll = useCallback(async () => {\n if (!release) return\n\n // Workaround for React Compiler not yet fully supporting try/catch/finally syntax\n const run = async () => {\n setPublishBundleStatus('publishing')\n await publishRelease(release._id)\n telemetry.log(PublishedRelease)\n if (showUpdateDraftsOption && shouldUpdateDrafts) {\n // the release has been published at this point, so a failure to update the drafts should\n // not surface as a failure to publish the release\n await discardDrafts(draftDocumentIds).catch((updateDraftsError) => {\n toast.push({\n status: 'warning',\n title: (\n <Text muted size={1}>\n <Translate\n t={t}\n i18nKey=\"toast.publish.update-drafts-error\"\n values={{error: updateDraftsError.message}}\n />\n </Text>\n ),\n })\n console.error(updateDraftsError)\n })\n }\n if (\n isReleaseDocument(perspective.selectedPerspective) &&\n perspective.selectedPerspective?._id === release._id\n ) {\n setPerspective(isDraftModelEnabled ? 'drafts' : 'published')\n }\n }\n try {\n await run()\n } catch (publishingError) {\n toast.push({\n status: 'error',\n title: (\n <Text muted size={1}>\n <Translate\n t={t}\n i18nKey=\"toast.publish.error\"\n values={{\n title: release.metadata.title || tCore('release.placeholder-untitled-release'),\n error: publishingError.message,\n }}\n />\n </Text>\n ),\n })\n console.error(publishingError)\n }\n onConfirmDialogClose?.()\n setPublishBundleStatus('idle')\n }, [\n release,\n publishRelease,\n telemetry,\n showUpdateDraftsOption,\n shouldUpdateDrafts,\n discardDrafts,\n draftDocumentIds,\n perspective.selectedPerspective,\n setPerspective,\n isDraftModelEnabled,\n toast,\n t,\n tCore,\n onConfirmDialogClose,\n ])\n\n const confirmPublishDialog = useMemo(() => {\n if (publishBundleStatus === 'idle') return null\n\n return (\n <Dialog\n id=\"confirm-publish-dialog\"\n data-testid=\"confirm-publish-dialog\"\n header={t('publish-dialog.confirm-publish.title')}\n onClose={() => {\n onConfirmDialogClose?.()\n setPublishBundleStatus('idle')\n }}\n footer={{\n confirmButton: {\n text: t('action.publish-all-documents'),\n tone: 'positive',\n onClick: handleConfirmPublishAll,\n loading: publishBundleStatus === 'publishing',\n disabled: publishBundleStatus === 'publishing',\n },\n }}\n >\n <Stack gap={4}>\n <Text muted size={1}>\n {\n <Translate\n t={t}\n i18nKey=\"publish-dialog.confirm-publish-description\"\n values={{\n title: release.metadata.title || tCore('release.placeholder-untitled-release'),\n releaseDocumentsLength: documents.length,\n count: documents.length,\n }}\n />\n }\n </Text>\n {showUpdateDraftsOption && (\n <Stack gap={3}>\n <Flex align=\"center\" gap={3} as=\"label\">\n <Checkbox\n checked={shouldUpdateDrafts}\n onChange={(event: ChangeEvent<HTMLInputElement>) =>\n setShouldUpdateDrafts(event.currentTarget.checked)\n }\n data-testid=\"update-drafts-checkbox\"\n />\n <Text size={1}>{t('publish-dialog.confirm-publish.update-drafts-checkbox')}</Text>\n </Flex>\n <Text muted size={1}>\n {t('publish-dialog.confirm-publish.update-drafts-description', {\n count: draftDocumentsCount,\n draftDocumentsLength: draftDocumentsCount,\n })}\n </Text>\n </Stack>\n )}\n </Stack>\n </Dialog>\n )\n }, [\n publishBundleStatus,\n t,\n handleConfirmPublishAll,\n release.metadata.title,\n tCore,\n documents.length,\n showUpdateDraftsOption,\n shouldUpdateDrafts,\n draftDocumentsCount,\n onConfirmDialogClose,\n ])\n\n const publishTooltipContent = useMemo(() => {\n if (!hasDocumentValidationErrors && !isValidatingDocuments && publishPermission) return null\n\n const tooltipText = () => {\n if (documents.length === 0) {\n return t('publish-action.validation.no-documents')\n }\n\n if (!publishPermission) {\n return t('publish-dialog.validation.no-permission')\n }\n\n if (isValidatingDocuments) {\n return t('publish-dialog.validation.loading')\n }\n\n if (hasDocumentValidationErrors) {\n return t('publish-dialog.validation.error')\n }\n\n return null\n }\n\n // TODO: this is a duplicate of logic in ReleaseScheduleButton\n return (\n <Text muted size={1}>\n <Flex align=\"center\" gap={3} padding={1}>\n <ToneIcon icon={ErrorOutlineIcon} tone={isValidatingDocuments ? 'default' : 'critical'} />\n {tooltipText()}\n </Flex>\n </Text>\n )\n }, [documents.length, hasDocumentValidationErrors, isValidatingDocuments, publishPermission, t])\n\n const handleInitialPublish = useCallback(() => {\n setShouldUpdateDrafts(false)\n setPublishBundleStatus('confirm')\n onConfirmDialogOpen?.()\n }, [onConfirmDialogOpen])\n\n const sharedProps = useMemo(\n () => ({\n icon: PublishIcon,\n disabled:\n isPublishButtonDisabled || publishBundleStatus === 'publishing' || documents.length === 0,\n text: t('action.publish-all-documents'),\n handleOnClick: handleInitialPublish,\n tooltipProps: {\n disabled: !isPublishButtonDisabled,\n content: publishTooltipContent,\n placement: 'bottom',\n } as Partial<TooltipProps>,\n }),\n [\n documents.length,\n handleInitialPublish,\n isPublishButtonDisabled,\n publishBundleStatus,\n publishTooltipContent,\n t,\n ],\n )\n\n return (\n <>\n {isMenuItem ? (\n <MenuItem\n tooltipProps={sharedProps.tooltipProps}\n icon={sharedProps.icon}\n disabled={sharedProps.disabled}\n text={sharedProps.text}\n onClick={sharedProps.handleOnClick}\n data-testid=\"publish-all-button-menu-item\"\n />\n ) : (\n <Button\n tooltipProps={sharedProps.tooltipProps}\n icon={sharedProps.icon}\n disabled={sharedProps.disabled}\n text={sharedProps.text}\n onClick={sharedProps.handleOnClick}\n loading={publishBundleStatus === 'publishing'}\n data-testid=\"publish-all-button\"\n tone=\"positive\"\n />\n )}\n {confirmPublishDialog}\n </>\n )\n}\n","import {type ReleaseDocument} from '@sanity/client'\nimport {ClockIcon} from '@sanity/icons/Clock'\nimport {ErrorOutlineIcon} from '@sanity/icons/ErrorOutline'\nimport {useTelemetry} from '@sanity/telemetry/react'\nimport {Card, Flex, Stack, Text, useToast} from '@sanity/ui'\nimport {format} from 'date-fns/format'\nimport {isBefore} from 'date-fns/isBefore'\nimport {isValid} from 'date-fns/isValid'\nimport {parse} from 'date-fns/parse'\nimport {startOfMinute} from 'date-fns/startOfMinute'\nimport isEqual from 'lodash-es/isEqual.js'\nimport {useCallback, useEffect, useMemo, useRef, useState} from 'react'\n\nimport {Button} from '../../../../../ui-components/button/Button'\nimport {Dialog} from '../../../../../ui-components/dialog/Dialog'\nimport {MenuItem} from '../../../../../ui-components/menuItem/MenuItem'\nimport {ToneIcon} from '../../../../../ui-components/toneIcon/ToneIcon'\nimport {type TooltipProps} from '../../../../../ui-components/tooltip/Tooltip'\nimport {MONTH_PICKER_VARIANT} from '../../../../components/inputs/DateInputs/calendar/Calendar'\nimport {type CalendarLabels} from '../../../../components/inputs/DateInputs/calendar/types'\nimport {DateTimeInput} from '../../../../components/inputs/DateInputs/DateTimeInput'\nimport {TimeZoneButton} from '../../../../components/timeZone/timeZoneButton/TimeZoneButton'\nimport TimeZoneButtonElementQuery from '../../../../components/timeZone/timeZoneButton/TimeZoneButtonElementQuery'\nimport {getCalendarLabels} from '../../../../form/inputs/DateInputs/utils'\nimport {useTimeZone} from '../../../../hooks/useTimeZone'\nimport {useTranslation} from '../../../../i18n/hooks/useTranslation'\nimport {Translate} from '../../../../i18n/Translate'\nimport {CONTENT_RELEASES_TIME_ZONE_SCOPE} from '../../../../studio/constants'\nimport {ScheduledRelease} from '../../../__telemetry__/releases.telemetry'\nimport {releasesLocaleNamespace} from '../../../i18n'\nimport {useReleaseOperations} from '../../../store/useReleaseOperations'\nimport {useReleasePermissions} from '../../../store/useReleasePermissions'\nimport {isReleaseScheduledOrScheduling} from '../../../util/util'\nimport {type DocumentInRelease} from '../../detail/types'\n\ninterface ReleaseScheduleButtonProps {\n release: ReleaseDocument\n documents: DocumentInRelease[]\n disabled?: boolean\n isMenuItem?: boolean\n onConfirmDialogOpen?: () => void\n onConfirmDialogClose?: () => void\n}\n\nexport const ReleaseScheduleButton = ({\n release,\n disabled,\n documents,\n isMenuItem = false,\n onConfirmDialogOpen,\n onConfirmDialogClose,\n}: ReleaseScheduleButtonProps) => {\n const toast = useToast()\n const {schedule, updateRelease} = useReleaseOperations()\n const {checkWithPermissionGuard} = useReleasePermissions()\n\n const [schedulePermission, setSchedulePermission] = useState<boolean>(false)\n\n const {t} = useTranslation(releasesLocaleNamespace)\n const {t: tCore} = useTranslation()\n const telemetry = useTelemetry()\n // in the releases tool we want timezone to be saved for releases\n const {utcToCurrentZoneDate, zoneDateToUtc, timeZone} = useTimeZone(\n CONTENT_RELEASES_TIME_ZONE_SCOPE,\n )\n const [status, setStatus] = useState<'idle' | 'confirm' | 'scheduling'>('idle')\n const [publishAt, setPublishAt] = useState<Date | undefined>()\n /**\n * This state supports the scenario of:\n * publishAt is set to a valid future date; but at time of submit it is in the past\n * Without an update on this state, ReleaseScheduledButton would not rerender\n * and so date in past warning ui elements wouldn't show\n */\n const [rerenderDialog, setRerenderDialog] = useState(0)\n\n const timeZoneAdjustedPublishAt = publishAt ? utcToCurrentZoneDate(publishAt) : undefined\n\n const isValidatingDocuments = documents.some(({validation}) => validation.isValidating)\n const hasDocumentValidationErrors = documents.some(({validation}) => validation.hasError)\n const isScheduleButtonDisabled =\n disabled || isValidatingDocuments || !schedulePermission || hasDocumentValidationErrors\n\n const isMounted = useRef(false)\n useEffect(() => {\n isMounted.current = true\n\n void checkWithPermissionGuard(schedule, release._id, new Date()).then((hasPermission) => {\n if (isMounted.current) setSchedulePermission(hasPermission)\n })\n\n return () => {\n isMounted.current = false\n }\n }, [checkWithPermissionGuard, release._id, release.metadata.intendedPublishAt, schedule])\n\n const isScheduledDateInPast = useCallback(() => {\n return isBefore(zoneDateToUtc(publishAt || new Date()), new Date())\n }, [publishAt, zoneDateToUtc])\n\n const handleConfirmSchedule = useCallback(async () => {\n if (!publishAt) return\n\n // this means that it will linely need to change the releaseType to scheduled\n if (isMenuItem) {\n const newRelease = {\n ...release,\n metadata: {\n ...release.metadata,\n releaseType: 'scheduled' as const,\n\n intendedPublishAt: publishAt.toISOString(),\n },\n }\n\n if (!isEqual(newRelease, release)) {\n void updateRelease(newRelease)\n }\n }\n\n if (isScheduledDateInPast()) {\n // rerender dialog to recalculate isScheduledDateInPast\n setRerenderDialog((cur) => cur + 1)\n return\n }\n\n // Workaround for React Compiler not yet fully supporting try/catch/finally syntax\n const run = async () => {\n setStatus('scheduling')\n await schedule(release._id, publishAt)\n telemetry.log(ScheduledRelease)\n toast.push({\n closable: true,\n status: 'info',\n title: (\n <Text muted size={1}>\n <Translate\n t={t}\n i18nKey=\"toast.schedule.success\"\n values={{\n title: release.metadata.title || tCore('release.placeholder-untitled-release'),\n }}\n />\n </Text>\n ),\n })\n }\n try {\n await run()\n } catch (schedulingError) {\n toast.push({\n status: 'error',\n title: (\n <Text muted size={1}>\n <Translate\n t={t}\n i18nKey=\"toast.schedule.error\"\n values={{\n title: release.metadata.title || tCore('release.placeholder-untitled-release'),\n error: schedulingError.message,\n }}\n />\n </Text>\n ),\n })\n console.error(schedulingError)\n }\n onConfirmDialogClose?.()\n setStatus('idle')\n }, [\n publishAt,\n isMenuItem,\n isScheduledDateInPast,\n release,\n updateRelease,\n schedule,\n telemetry,\n toast,\n t,\n tCore,\n onConfirmDialogClose,\n ])\n\n const calendarLabels: CalendarLabels = useMemo(() => getCalendarLabels(tCore), [tCore])\n\n const handleBundlePublishAtCalendarChange = useCallback((date: Date | null) => {\n if (!date) return\n\n setPublishAt(startOfMinute(date))\n }, [])\n\n const handleBundleInputChange = useCallback(\n (event: React.FocusEvent<HTMLInputElement>) => {\n const date = event.currentTarget.value\n const parsedDate = zoneDateToUtc(parse(date, 'PP HH:mm', new Date()))\n\n if (isValid(parsedDate)) {\n setPublishAt(parsedDate)\n }\n },\n [zoneDateToUtc],\n )\n\n const handleOnDialogClose = useCallback(() => {\n onConfirmDialogClose?.()\n if (status !== 'scheduling') {\n setStatus('idle')\n }\n }, [onConfirmDialogClose, status])\n\n const confirmScheduleDialog = useMemo(() => {\n if (status === 'idle') return null\n\n const _isScheduledDateInPast = isScheduledDateInPast()\n\n return (\n <Dialog\n /**\n * rerenderDialog should force this function to rerun\n * since the selected scheduled date was in the future when selected\n * but at time of submit it is in the past\n */\n key={rerenderDialog}\n id=\"confirm-schedule-dialog\"\n data-testid=\"confirm-schedule-dialog\"\n header={t('schedule-dialog.confirm-title', {\n documentsLength: documents.length,\n count: documents.length,\n })}\n onClose={handleOnDialogClose}\n footer={{\n confirmButton: {\n text: t('schedule-dialog.confirm-button'),\n tone: 'default',\n onClick: handleConfirmSchedule,\n loading: status === 'scheduling',\n disabled: _isScheduledDateInPast || status === 'scheduling',\n },\n cancelButton: {\n disabled: status === 'scheduling',\n },\n }}\n >\n <Stack gap={3}>\n {_isScheduledDateInPast && (\n <Card marginBottom={1} padding={2} radius={2} shadow={1} tone=\"critical\">\n <Text size={1}>{tCore('release.schedule-dialog.publish-date-in-past-warning')}</Text>\n </Card>\n )}\n <Stack gap={3}>\n <Flex align=\"center\" justify=\"space-between\" gap={2}>\n <label>\n <Text size={1} weight=\"semibold\">\n {tCore('release.schedule-dialog.select-publish-date-label')}\n </Text>\n </label>\n <TimeZoneButtonElementQuery>\n <TimeZoneButton\n tooltipContent={\n <Translate\n t={tCore}\n i18nKey={'time-zone.time-zone-tooltip-input'}\n values={{\n title: tCore('release.schedule-dialog.select-publish-date-label'),\n alternativeName: timeZone.alternativeName,\n offset: timeZone.offset,\n }}\n />\n }\n allowTimeZoneSwitch\n useElementQueries\n timeZoneScope={CONTENT_RELEASES_TIME_ZONE_SCOPE}\n />\n </TimeZoneButtonElementQuery>\n </Flex>\n <DateTimeInput\n selectTime\n monthPickerVariant={MONTH_PICKER_VARIANT.carousel}\n onChange={handleBundlePublishAtCalendarChange}\n onInputChange={handleBundleInputChange}\n value={publishAt}\n calendarLabels={calendarLabels}\n inputValue={\n timeZoneAdjustedPublishAt ? format(timeZoneAdjustedPublishAt, 'PP HH:mm') : ''\n }\n constrainSize={false}\n isPastDisabled\n timeZoneScope={CONTENT_RELEASES_TIME_ZONE_SCOPE}\n />\n </Stack>\n <Text muted size={1}>\n <Translate\n t={t}\n i18nKey=\"schedule-dialog.confirm-description\"\n values={{\n title: release.metadata.title || tCore('release.placeholder-untitled-release'),\n count: documents.length,\n }}\n />\n </Text>\n </Stack>\n </Dialog>\n )\n }, [\n status,\n isScheduledDateInPast,\n rerenderDialog,\n t,\n publishAt,\n documents.length,\n handleOnDialogClose,\n handleConfirmSchedule,\n handleBundlePublishAtCalendarChange,\n handleBundleInputChange,\n timeZoneAdjustedPublishAt,\n calendarLabels,\n release.metadata.title,\n tCore,\n timeZone,\n ])\n\n const handleOnInitialSchedule = useCallback(() => {\n setPublishAt(\n release.metadata.intendedPublishAt\n ? new Date(release.metadata.intendedPublishAt)\n : new Date(),\n )\n setStatus('confirm')\n onConfirmDialogOpen?.()\n }, [onConfirmDialogOpen, release.metadata.intendedPublishAt])\n\n const tooltipText = useMemo(() => {\n if (documents.length === 0) {\n return t('schedule-action.validation.no-documents')\n }\n\n if (!schedulePermission) {\n return t('schedule-button-tooltip.validation.no-permission')\n }\n\n if (isValidatingDocuments) {\n return t('schedule-button-tooltip.validation.loading')\n }\n\n if (hasDocumentValidationErrors) {\n return t('schedule-button-tooltip.validation.error')\n }\n\n if (isReleaseScheduledOrScheduling(release)) {\n return t('schedule-button-tooltip.already-scheduled')\n }\n return null\n }, [\n documents.length,\n hasDocumentValidationErrors,\n isValidatingDocuments,\n release,\n schedulePermission,\n t,\n ])\n\n // TODO: this is a duplicate of logic in ReleasePublishAllButton\n const scheduleTooltipContent = useMemo(() => {\n return (\n <Text muted size={1}>\n <Flex align=\"center\" gap={3} padding={1}>\n <ToneIcon icon={ErrorOutlineIcon} tone={isValidatingDocuments ? 'default' : 'critical'} />\n {tooltipText}\n </Flex>\n </Text>\n )\n }, [isValidatingDocuments, tooltipText])\n\n const sharedProps = useMemo(\n () => ({\n icon: ClockIcon,\n disabled: isScheduleButtonDisabled || status === 'scheduling' || documents.length === 0,\n text: t('action.schedule'),\n handleOnClick: handleOnInitialSchedule,\n tooltipProps: {\n disabled: !tooltipText,\n content: scheduleTooltipContent,\n placement: 'bottom',\n } as Partial<TooltipProps>,\n }),\n [\n documents.length,\n handleOnInitialSchedule,\n isScheduleButtonDisabled,\n scheduleTooltipContent,\n status,\n t,\n tooltipText,\n ],\n )\n\n return (\n <>\n {isMenuItem ? (\n <MenuItem\n tooltipProps={sharedProps.tooltipProps}\n icon={sharedProps.icon}\n disabled={sharedProps.disabled}\n text={sharedProps.text}\n onClick={sharedProps.handleOnClick}\n data-testid=\"schedule-button-menu-item\"\n />\n ) : (\n <Button\n tooltipProps={sharedProps.tooltipProps}\n tone=\"primary\"\n icon={sharedProps.icon}\n disabled={sharedProps.disabled}\n text={sharedProps.text}\n onClick={sharedProps.handleOnClick}\n loading={status === 'scheduling'}\n data-testid=\"schedule-button\"\n />\n )}\n {confirmScheduleDialog}\n </>\n )\n}\n","import {ArchiveIcon} from '@sanity/icons/Archive'\nimport {CloseCircleIcon} from '@sanity/icons/CloseCircle'\nimport {CopyIcon} from '@sanity/icons/Copy'\nimport {TrashIcon} from '@sanity/icons/Trash'\nimport {UnarchiveIcon} from '@sanity/icons/Unarchive'\nimport {\n type Dispatch,\n type MouseEventHandler,\n type SetStateAction,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react'\n\nimport {MenuItem} from '../../../../../ui-components/menuItem/MenuItem'\nimport {useTranslation} from '../../../../i18n/hooks/useTranslation'\nimport {releasesLocaleNamespace} from '../../../i18n'\nimport {useReleaseOperations} from '../../../store/useReleaseOperations'\nimport {useReleasePermissions} from '../../../store/useReleasePermissions'\nimport {getReleaseDefaults} from '../../../util/util'\nimport {type DocumentInRelease} from '../../detail/types'\nimport {ReleasePublishAllButton} from '../releaseCTAButtons/ReleasePublishAllButton'\nimport {ReleaseScheduleButton} from '../releaseCTAButtons/ReleaseScheduleButton'\nimport {type ReleaseAction} from './releaseActions'\nimport {type ReleaseMenuButtonProps} from './ReleaseMenuButton'\n\nexport type ReleaseMenuProps = Omit<ReleaseMenuButtonProps, 'documentsCount'> & {\n disabled: boolean\n setSelectedAction: Dispatch<SetStateAction<ReleaseAction | undefined>>\n documents: DocumentInRelease[]\n}\n\nexport const ReleaseMenu = ({\n ignoreCTA,\n disabled,\n release,\n setSelectedAction,\n documents,\n}: ReleaseMenuProps) => {\n const releaseMenuDisabled = !release || disabled\n const {t} = useTranslation(releasesLocaleNamespace)\n const {archive, unarchive, deleteRelease, publishRelease, schedule, createRelease} =\n useReleaseOperations()\n const {checkWithPermissionGuard} = useReleasePermissions()\n const [hasArchivePermission, setHasArchivePermission] = useState<boolean | null>(null)\n const [hasUnarchivePermission, setHasUnarchivePermission] = useState<boolean | null>(null)\n const [hasDeletePermission, setHasDeletePermission] = useState<boolean | null>(null)\n const [hasPublishPermission, setHasPublishPermission] = useState<boolean | null>(null)\n const [hasSchedulePermission, setHasSchedulePermission] = useState<boolean | null>(null)\n const [hasDuplicatePermission, setHasDuplicatePermission] = useState<boolean | null>(null)\n\n const isMounted = useRef(false)\n useEffect(() => {\n isMounted.current = true\n\n if (!releaseMenuDisabled) {\n if (release.state !== 'published') {\n if (release.state === 'archived') {\n void checkWithPermissionGuard(unarchive, release._id).then((hasPermission) => {\n if (isMounted.current) setHasUnarchivePermission(hasPermission)\n })\n } else {\n void checkWithPermissionGuard(archive, release._id).then((hasPermission) => {\n if (isMounted.current) setHasArchivePermission(hasPermission)\n })\n\n void checkWithPermissionGuard(publishRelease, release._id).then((hasPermission) => {\n if (isMounted.current) setHasPublishPermission(hasPermission)\n })\n void checkWithPermissionGuard(schedule, release._id, new Date()).then((hasPermission) => {\n if (isMounted.current) setHasSchedulePermission(hasPermission)\n })\n }\n void checkWithPermissionGuard(createRelease, getReleaseDefaults()).then((hasPermission) => {\n if (isMounted.current) setHasDuplicatePermission(hasPermission)\n })\n }\n\n if (release.state === 'archived' || release.state == 'published') {\n void checkWithPermissionGuard(deleteRelease, release._id).then((hasPermission) => {\n if (isMounted.current) setHasDeletePermission(hasPermission)\n })\n }\n }\n\n return () => {\n isMounted.current = false\n }\n }, [\n release._id,\n releaseMenuDisabled,\n release.state,\n checkWithPermissionGuard,\n unarchive,\n archive,\n deleteRelease,\n release.metadata.releaseType,\n publishRelease,\n schedule,\n createRelease,\n ])\n\n const handleOnInitiateAction = useCallback<MouseEventHandler<HTMLDivElement>>(\n (event) => {\n const action = event.currentTarget.getAttribute('data-value') as ReleaseAction\n\n setSelectedAction(action)\n },\n [setSelectedAction],\n )\n\n const archiveUnarchiveMenuItem = useMemo(() => {\n if (release.state === 'published') return null\n\n if (release.state === 'archived')\n return (\n <MenuItem\n key=\"unarchive\"\n data-value=\"unarchive\"\n disabled={releaseMenuDisabled || !hasUnarchivePermission}\n onClick={handleOnInitiateAction}\n icon={UnarchiveIcon}\n text={t('action.unarchive')}\n data-testid=\"unarchive-release-menu-item\"\n tooltipProps={{\n content: !hasUnarchivePermission && t('permissions.error.unarchive'),\n }}\n />\n )\n\n return (\n <MenuItem\n key=\"archive\"\n tooltipProps={{\n disabled: hasArchivePermission\n ? !['scheduled', 'scheduling'].includes(release.state) || disabled\n : false,\n content: hasArchivePermission\n ? t('action.archive.tooltip')\n : t('permissions.error.archive'),\n }}\n data-value=\"archive\"\n onClick={handleOnInitiateAction}\n icon={ArchiveIcon}\n text={t('action.archive')}\n data-testid=\"archive-release-menu-item\"\n tone=\"caution\"\n disabled={\n releaseMenuDisabled ||\n ['scheduled', 'scheduling'].includes(release.state) ||\n !hasArchivePermission\n }\n />\n )\n }, [\n release.state,\n releaseMenuDisabled,\n hasUnarchivePermission,\n handleOnInitiateAction,\n t,\n hasArchivePermission,\n disabled,\n ])\n\n const deleteMenuItem = useMemo(() => {\n if (release.state !== 'archived' && release.state !== 'published') return null\n\n return (\n <MenuItem\n key=\"delete\"\n data-value=\"delete\"\n onClick={handleOnInitiateAction}\n disabled={releaseMenuDisabled || !hasDeletePermission}\n icon={TrashIcon}\n text={t('action.delete-release')}\n data-testid=\"delete-release-menu-item\"\n tone=\"critical\"\n tooltipProps={{\n content: !hasDeletePermission && t('permissions.error.delete'),\n }}\n />\n )\n }, [handleOnInitiateAction, hasDeletePermission, release.state, releaseMenuDisabled, t])\n\n const unscheduleMenuItem = useMemo(() => {\n if (ignoreCTA || (release.state !== 'scheduled' && release.state !== 'scheduling')) return null\n\n return (\n <MenuItem\n key=\"unschedule\"\n data-value=\"unschedule\"\n onClick={handleOnInitiateAction}\n disabled={releaseMenuDisabled}\n icon={CloseCircleIcon}\n text={t('action.unschedule')}\n data-testid=\"unschedule-release-menu-item\"\n />\n )\n }, [handleOnInitiateAction, ignoreCTA, release.state, releaseMenuDisabled, t])\n\n const scheduleMenuItem = useMemo(() => {\n // will not return the action for scheduled releases since the main action is already schedule\n if (release.state !== 'active' || (ignoreCTA && release.metadata.releaseType === 'scheduled'))\n return null\n\n return (\n <ReleaseScheduleButton\n key=\"schedule\"\n disabled={releaseMenuDisabled || !hasSchedulePermission}\n release={release}\n documents={documents}\n isMenuItem\n onConfirmDialogClose={() => setSelectedAction(undefined)}\n onConfirmDialogOpen={() => setSelectedAction('schedule')}\n />\n )\n }, [documents, hasSchedulePermission, ignoreCTA, release, releaseMenuDisabled, setSelectedAction])\n\n const publishMenuItem = useMemo(() => {\n if (release.state !== 'active' || (ignoreCTA && release.metadata.releaseType !== 'scheduled'))\n return null\n\n return (\n <ReleasePublishAllButton\n key=\"publish\"\n release={release}\n documents={documents}\n disabled={releaseMenuDisabled || !hasPublishPermission}\n isMenuItem\n onConfirmDialogClose={() => setSelectedAction(undefined)}\n onConfirmDialogOpen={() => setSelectedAction('publish')}\n />\n )\n }, [documents, hasPublishPermission, ignoreCTA, release, releaseMenuDisabled, setSelectedAction])\n\n const duplicateMenuItem = useMemo(() => {\n if (release.state === 'published' || release.state === 'archived') {\n return null\n }\n\n return (\n <MenuItem\n key=\"duplicate\"\n data-value=\"duplicate\"\n onClick={handleOnInitiateAction}\n disabled={releaseMenuDisabled || !hasDuplicatePermission}\n icon={CopyIcon}\n text={t('action.duplicate-release')}\n data-testid=\"duplicate-release-menu-item\"\n tooltipProps={{\n content: !hasDuplicatePermission && t('permissions.error.duplicate'),\n }}\n />\n )\n }, [handleOnInitiateAction, hasDuplicatePermission, release.state, releaseMenuDisabled, t])\n\n const ActionsOrder = useMemo(() => {\n if (release.metadata.releaseType === 'scheduled') {\n return [scheduleMenuItem, publishMenuItem]\n }\n\n return [publishMenuItem, scheduleMenuItem]\n }, [release.metadata.releaseType, publishMenuItem, scheduleMenuItem])\n\n return [\n unscheduleMenuItem,\n ...ActionsOrder,\n duplicateMenuItem,\n archiveUnarchiveMenuItem,\n deleteMenuItem,\n ]\n}\n","import {type ReleaseDocument} from '@sanity/client'\nimport {Card, Flex, Stack, Text} from '@sanity/ui'\n\nimport {useTranslation} from '../../../../i18n/hooks/useTranslation'\nimport {ReleaseAvatar} from '../../../components/ReleaseAvatar'\nimport {ReleaseTitle} from '../../../components/ReleaseTitle'\nimport {ReleaseTime} from '../ReleaseTime'\n\nexport function ReleasePreviewCard({release}: {release: ReleaseDocument}) {\n const {t} = useTranslation()\n\n return (\n <Card border padding={1} radius={2}>\n <Flex gap={3} padding={3}>\n <ReleaseAvatar release={release} padding={0} />\n <Stack gap={2}>\n <ReleaseTitle\n title={release.metadata.title}\n fallback={t('release.placeholder-untitled-release')}\n textProps={{weight: 'medium', size: 1}}\n />\n <Text muted size={1}>\n <ReleaseTime release={release} />\n </Text>\n </Stack>\n </Flex>\n </Card>\n )\n}\n","import {type ReleaseDocument, type SingleActionResult} from '@sanity/client'\nimport {EllipsisHorizontalIcon} from '@sanity/icons/EllipsisHorizontal'\nimport {useTelemetry} from '@sanity/telemetry/react'\nimport {Menu, MenuDivider, Spinner, Stack, Text, useClickOutsideEvent, useToast} from '@sanity/ui'\nimport {type SetStateAction, useCallback, useEffect, useMemo, useRef, useState} from 'react'\nimport {RouterContext, useRouter} from 'sanity/router'\n\nimport {Button} from '../../../../../ui-components/button/Button'\nimport {Dialog} from '../../../../../ui-components/dialog/Dialog'\nimport {MenuItem} from '../../../../../ui-components/menuItem/MenuItem'\nimport {Popover} from '../../../../../ui-components/popover/Popover'\nimport {type ReleaseActionDescription} from '../../../../config/releases/actions'\nimport {useTranslation} from '../../../../i18n/hooks/useTranslation'\nimport {Translate, type TranslateComponentMap} from '../../../../i18n/Translate'\nimport {usePerspective} from '../../../../perspective/usePerspective'\nimport {useSetPerspective} from '../../../../perspective/useSetPerspective'\nimport {useWorkspace} from '../../../../studio/workspace'\nimport {ReleaseActionsResolver} from '../../../components/ReleaseActionsResolver'\nimport {useReleasesUpsell} from '../../../contexts/upsell/useReleasesUpsell'\nimport {useCustomReleaseActions} from '../../../hooks/useCustomReleaseActions'\nimport {releasesLocaleNamespace} from '../../../i18n'\nimport {isReleaseLimitError} from '../../../store/isReleaseLimitError'\nimport {useReleaseOperations} from '../../../store/useReleaseOperations'\nimport {createReleaseId} from '../../../util/createReleaseId'\nimport {getReleaseIdFromReleaseDocumentId} from '../../../util/getReleaseIdFromReleaseDocumentId'\nimport {type DocumentInRelease} from '../../detail/types'\nimport {DuplicateReleaseToastLink} from './DuplicateReleaseToastLink'\nimport {RELEASE_ACTION_MAP, type ReleaseAction} from './releaseActions'\nimport {ReleaseMenu} from './ReleaseMenu'\nimport {ReleasePreviewCard} from './ReleasePreviewCard'\n\nexport type ActionResult =\n | false\n | void\n | SingleActionResult\n | {\n releaseId: string\n }\n\nconst toastActionComponents: Partial<\n Record<ReleaseAction, (actionResult: ActionResult) => TranslateComponentMap>\n> = {\n duplicate: (actionResult) => ({\n Link: () => <DuplicateReleaseToastLink actionResult={actionResult} />,\n }),\n}\n\nexport type ReleaseMenuButtonProps = {\n /** defaults to false\n * set true if release primary CTA options should not\n * be shown in the menu eg. unschedule, publish\n */\n ignoreCTA?: boolean\n release: ReleaseDocument\n documentsCount: number\n documents?: DocumentInRelease[]\n}\n\nexport const ReleaseMenuButton = ({\n ignoreCTA,\n release,\n documentsCount,\n documents,\n}: ReleaseMenuButtonProps) => {\n const toast = useToast()\n const router = useRouter()\n const {archive, unarchive, deleteRelease, unschedule, duplicateRelease} = useReleaseOperations()\n\n const [isPerformingOperation, setIsPerformingOperation] = useState(false)\n const [selectedAction, setSelectedAction] = useState<ReleaseAction>()\n const {selectedReleaseId} = usePerspective()\n const setPerspective = useSetPerspective()\n\n const popoverRef = useRef<HTMLDivElement | null>(null)\n const releaseMenuRef = useRef<HTMLDivElement | null>(null)\n const [openPopover, setOpenPopover] = useState(false)\n\n const customActions = useCustomReleaseActions(release, documents ?? [])\n const [customActionDescriptions, setCustomActionDescriptions] = useState<\n ReleaseActionDescription[]\n >([])\n\n const handleCustomActionsUpdate = useCallback(\n (actions: Array<ReleaseActionDescription | null>) => {\n setCustomActionDescriptions(actions.filter(Boolean) as ReleaseActionDescription[])\n },\n [],\n )\n\n const releaseMenuDisabled = !release\n const {t} = useTranslation(releasesLocaleNamespace)\n const {t: tCore} = useTranslation()\n const telemetry = useTelemetry()\n const {guardWithReleaseLimitUpsell} = useReleasesUpsell()\n const releaseTitle = release.metadata.title || tCore('release.placeholder-untitled-release')\n const isActionPublishOrSchedule = selectedAction === 'publish' || selectedAction === 'schedule'\n const {document} = useWorkspace()\n const {\n drafts: {enabled: isDraftModelEnabled},\n } = document\n\n const handleDelete = useCallback(async () => {\n await deleteRelease(release._id)\n\n // return to release overview list now that release is deleted\n router.navigate({})\n }, [deleteRelease, release._id, router])\n\n const handleUnarchive = useCallback(async () => {\n return guardWithReleaseLimitUpsell(() => unarchive(release._id), true)\n }, [guardWithReleaseLimitUpsell, release._id, unarchive])\n\n const handleDuplicate = useCallback(async () => {\n const duplicateReleaseId = createReleaseId()\n\n await guardWithReleaseLimitUpsell(async () => {\n const releaseDocuments = documents?.map((doc) => doc.document)\n const duplicatedMetadata = {\n ...release.metadata,\n title: `${release.metadata.title} (${t('copy-suffix')})`,\n }\n return duplicateRelease(duplicateReleaseId, duplicatedMetadata, releaseDocuments)\n }, true)\n\n return {releaseId: duplicateReleaseId}\n }, [guardWithReleaseLimitUpsell, duplicateRelease, documents, release.metadata, t])\n\n const handleAction = useCallback(\n async (action: ReleaseAction) => {\n if (action === 'publish' || action === 'schedule') return\n if (releaseMenuDisabled) return\n\n const actionLookup = {\n delete: handleDelete,\n archive,\n unarchive: handleUnarchive,\n unschedule,\n duplicate: handleDuplicate,\n }\n const actionValues = RELEASE_ACTION_MAP[action]\n\n // The .catch/.finally syntax instead of try/catch/finally is because of the React Compiler not fully supporting the syntax yet\n const run = async () => {\n if (\n (action === 'archive' || action === 'delete') &&\n selectedReleaseId === getReleaseIdFromReleaseDocumentId(release._id)\n ) {\n // Reset the perspective to drafts when the release is archived or deleted\n // To avoid showing the release archived / deleted toast.\n setPerspective(isDraftModelEnabled ? 'drafts' : 'published')\n }\n setIsPerformingOperation(true)\n const actionResult = await actionLookup[action](release._id)\n\n telemetry.log(actionValues.telemetry)\n\n if (typeof actionValues.toastSuccessI18nKey !== 'undefined') {\n const toastComponents = toastActionComponents[action]?.(actionResult)\n\n toast.push({\n closable: true,\n status: 'success',\n title: (\n // toast children need access to the router\n <RouterContext.Provider value={router}>\n <Text muted size={1}>\n <Translate\n t={t}\n components={toastComponents}\n i18nKey={actionValues.toastSuccessI18nKey}\n values={{title: releaseTitle}}\n />\n </Text>\n </RouterContext.Provider>\n ),\n })\n }\n }\n await run()\n .catch((actionError) => {\n if (isReleaseLimitError(actionError)) return\n\n if (typeof actionValues.toastFailureI18nKey !== 'undefined') {\n toast.push({\n status: 'error',\n title: (\n <Text muted size={1}>\n <Translate\n t={t}\n i18nKey={actionValues.toastFailureI18nKey}\n values={{title: releaseTitle, error: actionError.toString()}}\n />\n </Text>\n ),\n })\n }\n console.error(actionError)\n })\n .finally(() => {\n setIsPerformingOperation(false)\n setSelectedAction(undefined)\n })\n },\n [\n releaseMenuDisabled,\n handleDelete,\n archive,\n handleUnarchive,\n unschedule,\n handleDuplicate,\n selectedReleaseId,\n release._id,\n telemetry,\n setPerspective,\n isDraftModelEnabled,\n toast,\n router,\n t,\n releaseTitle,\n ],\n )\n\n /** in some instances, immediately execute the action without requiring confirmation */\n useEffect(() => {\n if (!selectedAction || isActionPublishOrSchedule) return\n\n if (!RELEASE_ACTION_MAP[selectedAction].confirmDialog) void handleAction(selectedAction)\n }, [documentsCount, handleAction, isActionPublishOrSchedule, selectedAction])\n\n const confirmActionDialog = useMemo(() => {\n if (!selectedAction || isActionPublishOrSchedule) return null\n\n const {confirmDialog} = RELEASE_ACTION_MAP[selectedAction]\n\n if (!confirmDialog) return null\n\n return (\n <Dialog\n id={confirmDialog.dialogId}\n data-testid={confirmDialog.dialogId}\n header={t(confirmDialog.dialogHeaderI18nKey)}\n onClose={() => !isPerformingOperation && setSelectedAction(undefined)}\n padding={false}\n footer={{\n confirmButton: {\n text: t(confirmDialog.dialogConfirmButtonI18nKey),\n tone: confirmDialog.confirmButtonTone,\n onClick: () => handleAction(selectedAction),\n loading: isPerformingOperation,\n disabled: isPerformingOperation,\n },\n cancelButton: {\n disabled: isPerformingOperation,\n },\n }}\n >\n <Stack gap={4} paddingX={4} paddingBottom={4}>\n <ReleasePreviewCard release={release} />\n {!!documentsCount && (\n <Text muted size={1}>\n <Translate\n t={t}\n i18nKey={confirmDialog.dialogDescriptionI18nKey}\n values={{\n count: documentsCount,\n }}\n />\n </Text>\n )}\n </Stack>\n </Dialog>\n )\n }, [\n selectedAction,\n isActionPublishOrSchedule,\n t,\n isPerformingOperation,\n release,\n documentsCount,\n handleAction,\n ])\n\n const closePopover = useCallback(() => {\n setOpenPopover(false)\n }, [])\n\n const handleOnButtonClick = useCallback(() => {\n if (openPopover) closePopover()\n else setOpenPopover(true)\n }, [closePopover, openPopover])\n\n useClickOutsideEvent(\n () => {\n if (!isActionPublishOrSchedule) {\n closePopover()\n }\n },\n () => [popoverRef.current, releaseMenuRef.current],\n )\n\n const handleSetSelectedAction = useCallback(\n (action: SetStateAction<ReleaseAction | undefined>) => {\n if (!action) closePopover()\n setSelectedAction(action)\n },\n [closePopover],\n )\n\n // Create menu items for custom actions\n const customActionMenuItems = useMemo(() => {\n const handleOnActionClick = (action: ReleaseActionDescription) => () => {\n if (action.onHandle) {\n action.onHandle()\n closePopover()\n }\n }\n\n return customActionDescriptions.map((action, index) => (\n <MenuItem\n key={`custom-action-${index}`}\n icon={action.icon}\n text={action.label}\n tone={action.tone}\n disabled={action.disabled || isPerformingOperation}\n onClick={handleOnActionClick(action)}\n tooltipProps={action.title ? {content: action.title} : undefined}\n />\n ))\n }, [customActionDescriptions, isPerformingOperation, closePopover])\n\n const hasCustomActions = customActions.length > 0\n\n return (\n <>\n {hasCustomActions && (\n <ReleaseActionsResolver\n actions={customActions}\n release={release}\n documents={documents ?? []}\n onActions={handleCustomActionsUpdate}\n />\n )}\n <Popover\n content={\n <Menu ref={releaseMenuRef}>\n <ReleaseMenu\n ignoreCTA={ignoreCTA}\n release={release}\n setSelectedAction={handleSetSelectedAction}\n disabled={isPerformingOperation}\n documents={documents ?? []}\n />\n {hasCustomActions && (\n <>\n <MenuDivider />\n {customActionMenuItems}\n </>\n )}\n </Menu>\n }\n open={openPopover}\n ref={popoverRef}\n constrainSize={false}\n fallbackPlacements={['top-end']}\n portal\n tone=\"default\"\n placement=\"bottom\"\n >\n <Button\n disabled={releaseMenuDisabled || isPerformingOperation}\n icon={isPerformingOperation ? Spinner : EllipsisHorizontalIcon}\n mode=\"bleed\"\n tooltipProps={{content: t('menu.tooltip')}}\n aria-label={t('menu.label')}\n data-testid=\"release-menu-button\"\n onClick={handleOnButtonClick}\n />\n </Popover>\n {confirmActionDialog}\n </>\n )\n}\n","/**\n * Polyfill for `Promise.withResolvers()`, which is not yet widely supported.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/withResolvers\n * @returns An object containing the promise, resolve, and reject functions.\n * @internal\n */\nexport function promiseWithResolvers<T>() {\n let resolve!: (value: T | PromiseLike<T>) => void\n let reject!: (reason?: unknown) => void\n const promise = new Promise<T>((res, rej) => {\n resolve = res\n reject = rej\n })\n return {promise, resolve, reject}\n}\n","import {type SanityDocument} from '@sanity/types'\nimport {useCallback, useEffect, useMemo, useRef} from 'react'\nimport {useSyncObservable} from 'react-rx'\nimport {catchError, forkJoin, from, map, type Observable, of, switchMap} from 'rxjs'\n\nimport {useClient} from '../../../../../hooks/useClient'\nimport {getTransactionsLogs} from '../../../../../store/translog/getTransactionsLogs'\nimport {getPublishedId} from '../../../../../util/draftUtils'\nimport {promiseWithResolvers} from '../../../../../util/promiseWithResolvers'\nimport {RELEASES_STUDIO_CLIENT_OPTIONS} from '../../../../util/releasesClient'\nimport {type DocumentInRelease} from '../../../detail/types'\n\nexport type RevertDocument = SanityDocument & {\n _system?: {\n delete: true\n }\n}\n\ntype RevertDocuments = RevertDocument[]\n\ntype DocumentRevertStates = RevertDocuments | null | undefined\n\nexport const useDocumentRevertStates = (releaseDocuments: DocumentInRelease[]) => {\n const client = useClient(RELEASES_STUDIO_CLIENT_OPTIONS)\n const observableClient = client.observable\n const transactionId = releaseDocuments[0]?.document._rev\n const {dataset} = client.config()\n\n const resultPromiseRef = useRef<Promise<DocumentRevertStates> | null>(null)\n const resolvedDocumentRevertStatesPromiseRef = useRef<\n ((value: DocumentRevertStates) => void) | null\n >(null)\n const resolvedDocumentRevertStatesResultRef = useRef<DocumentRevertStates | null>(null)\n\n useEffect(() => {\n if (!resultPromiseRef.current) {\n const {promise, resolve} = promiseWithResolvers<DocumentRevertStates>()\n\n resultPromiseRef.current = promise\n resolvedDocumentRevertStatesPromiseRef.current = resolve\n }\n }, [])\n\n const memoDocumentRevertStates = useMemo(() => {\n if (!releaseDocuments.length) return of(undefined)\n\n const publishedDocuments = releaseDocuments.map(({document}) => ({\n ...document,\n _id: getPublishedId(document._id),\n }))\n\n const documentRevertStates$: Observable<RevertDocuments | null | undefined> = from(\n getTransactionsLogs(\n client,\n publishedDocuments.map((document) => document._id),\n {\n toTransaction: transactionId,\n // reverse order so most recent publish before release is second element\n // (first is the release publish itself)\n reverse: true,\n },\n ),\n ).pipe(\n map((transactions) => {\n const getDocumentTransaction = (docId: string) =>\n transactions.find(({documentIDs}) => documentIDs.includes(docId))?.id\n\n return publishedDocuments.map((document) => ({\n docId: document._id,\n revisionId: getDocumentTransaction(document._id),\n }))\n }),\n switchMap((docRevisionPairs) => {\n if (!docRevisionPairs) return of(undefined)\n\n return forkJoin(\n docRevisionPairs.map(({docId, revisionId}) => {\n if (!revisionId) {\n const {publishedDocumentExists, ...unpublishDocument} =\n publishedDocuments.find((document) => document._id === docId) || {}\n\n return of({\n ...unpublishDocument,\n _system: {delete: true},\n } as RevertDocument)\n }\n\n return observableClient\n .request<{\n documents: RevertDocuments\n }>({\n url: `/data/history/${dataset}/documents/${docId}?revision=${revisionId}`,\n })\n .pipe(\n map(({documents: [revertDocument]}) => revertDocument),\n catchError((err) => {\n console.error(`Error fetching document ${docId}:`, err)\n return of(undefined)\n }),\n )\n }),\n )\n }),\n map((results) => results?.filter((result) => result !== undefined)),\n catchError((err) => {\n console.error('Error in document revert states pipeline:', err)\n return of(undefined)\n }),\n )\n\n return documentRevertStates$\n }, [client, releaseDocuments, transactionId, observableClient, dataset])\n\n // Kept synchronous: the effect below resolves an imperative promise/ref with\n // this value for the revert action, so a deferred snapshot could delay the\n // resolution or hand the action a stale revert state.\n const documentRevertStatesResult = useSyncObservable(memoDocumentRevertStates, null)\n\n useEffect(() => {\n if (documentRevertStatesResult !== null) {\n resolvedDocumentRevertStatesResultRef.current = documentRevertStatesResult\n\n // Resolve promise if it exists\n if (resolvedDocumentRevertStatesPromiseRef.current) {\n resolvedDocumentRevertStatesPromiseRef.current(documentRevertStatesResult)\n resolvedDocumentRevertStatesPromiseRef.current = null\n resultPromiseRef.current = null // Reset resultPromiseRef for future fetches\n }\n }\n }, [documentRevertStatesResult])\n\n return useCallback(() => {\n if (resolvedDocumentRevertStatesResultRef.current) {\n // Return resolved value immediately if available\n return Promise.resolve(resolvedDocumentRevertStatesResultRef.current)\n }\n\n return resultPromiseRef.current\n }, [])\n}\n","import {useMemo} from 'react'\nimport {useObservable} from 'react-rx'\nimport {catchError, from, map, of} from 'rxjs'\n\nimport {useClient} from '../../../../../hooks/useClient'\nimport {getTransactionsLogs} from '../../../../../store/translog/getTransactionsLogs'\nimport {getPublishedId} from '../../../../../util/draftUtils'\nimport {RELEASES_STUDIO_CLIENT_OPTIONS} from '../../../../util/releasesClient'\nimport {type DocumentInRelease} from '../../../detail/types'\n\nexport const usePostPublishTransactions = (documents: DocumentInRelease[]) => {\n const client = useClient(RELEASES_STUDIO_CLIENT_OPTIONS)\n const transactionId = documents[0]?.document._rev\n\n const memoHasPostPublishTransactions = useMemo(() => {\n if (!documents.length) return of(false)\n\n return from(\n getTransactionsLogs(\n client,\n documents.map(({document}) => getPublishedId(document._id)),\n {\n fromTransaction: transactionId,\n // publish transaction + at least one post publish transaction\n limit: 2,\n },\n ),\n ).pipe(\n // the transaction of published is also returned\n // so post publish transactions will result in more than 1 transaction\n map((transactions) => transactions.length > 1),\n catchError(() => of(null)),\n )\n }, [client, documents, transactionId])\n\n return useObservable(memoHasPostPublishTransactions, null)\n}\n","import {type ReleaseDocument} from '@sanity/client'\nimport {RestoreIcon} from '@sanity/icons/Restore'\nimport {useTelemetry} from '@sanity/telemetry/react'\nimport {Box, Card, Checkbox, Flex, Text, useToast} from '@sanity/ui'\nimport {useCallback, useEffect, useRef, useState} from 'react'\nimport {useRouter} from 'sanity/router'\n\nimport {Button} from '../../../../../../ui-components/button/Button'\nimport {Dialog} from '../../../../../../ui-components/dialog/Dialog'\nimport {useTranslation} from '../../../../../i18n/hooks/useTranslation'\nimport {Translate} from '../../../../../i18n/Translate'\nimport {RevertRelease} from '../../../../__telemetry__/releases.telemetry'\nimport {useReleasesUpsell} from '../../../../contexts/upsell/useReleasesUpsell'\nimport {releasesLocaleNamespace} from '../../../../i18n'\nimport {isReleaseLimitError} from '../../../../store/isReleaseLimitError'\nimport {useReleaseOperations} from '../../../../store/useReleaseOperations'\nimport {useReleasePermissions} from '../../../../store/useReleasePermissions'\nimport {createReleaseId} from '../../../../util/createReleaseId'\nimport {getReleaseIdFromReleaseDocumentId} from '../../../../util/getReleaseIdFromReleaseDocumentId'\nimport {getReleaseDefaults} from '../../../../util/util'\nimport {type DocumentInRelease} from '../../../detail/types'\nimport {useDocumentRevertStates} from './useDocumentRevertStates'\nimport {usePostPublishTransactions} from './usePostPublishTransactions'\n\ninterface ReleasePublishAllButtonProps {\n release: ReleaseDocument\n documents: DocumentInRelease[]\n disabled?: boolean\n}\n\ntype RevertReleaseStatus = 'idle' | 'confirm' | 'reverting'\n\nconst ConfirmReleaseDialog = ({\n revertReleaseStatus,\n documents,\n setRevertReleaseStatus,\n release,\n}: {\n revertReleaseStatus: RevertReleaseStatus\n documents: DocumentInRelease[]\n setRevertReleaseStatus: (status: RevertReleaseStatus) => void\n release: ReleaseDocument\n}) => {\n const {t} = useTranslation(releasesLocaleNamespace)\n const {t: tCore} = useTranslation()\n const releaseDisplayTitle =\n release.metadata.title || tCore('release.placeholder-untitled-release')\n const hasPostPublishTransactions = usePostPublishTransactions(documents)\n const getDocumentRevertStates = useDocumentRevertStates(documents)\n const [stageNewRevertRelease, setStageNewRevertRelease] = useState(true)\n const toast = useToast()\n const telemetry = useTelemetry()\n const {revertRelease} = useReleaseOperations()\n const router = useRouter()\n\n const navigateToRevertRelease = useCallback(\n (revertReleaseId: string) => () =>\n router.navigate({releaseId: getReleaseIdFromReleaseDocumentId(revertReleaseId)}),\n [router],\n )\n\n const handleRevertRelease = useCallback(async () => {\n setRevertReleaseStatus('reverting')\n const documentRevertStates = await getDocumentRevertStates()\n\n const revertReleaseId = createReleaseId()\n\n // The run().catch().finally() syntax instead of try/catch/finally is because of the React Compiler not fully supporting the syntax yet\n const run = async () => {\n if (!documentRevertStates) {\n throw new Error('Unable to find documents to revert')\n }\n\n await revertRelease(\n revertReleaseId,\n documentRevertStates,\n {\n title: t('revert-release.title', {\n title: releaseDisplayTitle,\n }),\n description: t('revert-release.description', {\n title: releaseDisplayTitle,\n }),\n releaseType: 'asap',\n },\n stageNewRevertRelease ? 'staged' : 'immediate',\n )\n\n if (stageNewRevertRelease) {\n telemetry.log(RevertRelease, {revertType: 'staged'})\n toast.push({\n closable: true,\n status: 'success',\n title: (\n <Text muted size={1}>\n <Translate\n components={{\n Link: () => (\n <Text\n size={1}\n weight=\"medium\"\n data-as=\"a\"\n onClick={navigateToRevertRelease(revertReleaseId)}\n style={{\n cursor: 'pointer',\n marginBottom: '0.5rem',\n display: 'flex',\n }}\n data-testid=\"revert-stage-success-link\"\n >\n {t('toast.revert-stage.success-link')}\n </Text>\n ),\n }}\n t={t}\n i18nKey=\"toast.revert-stage.success\"\n values={{\n title: releaseDisplayTitle,\n }}\n />\n </Text>\n ),\n })\n } else {\n telemetry.log(RevertRelease, {revertType: 'immediate'})\n\n toast.push({\n closable: true,\n status: 'success',\n title: (\n <Text muted size={1}>\n <Translate\n t={t}\n i18nKey=\"toast.immediate-revert.success\"\n values={{\n title: releaseDisplayTitle,\n }}\n />\n </Text>\n ),\n })\n }\n }\n await run()\n .catch((revertError) => {\n if (isReleaseLimitError(revertError)) return\n\n toast.push({\n status: 'error',\n title: (\n <Text muted size={1}>\n <Translate t={t} i18nKey=\"toast.revert.error\" values={{error: revertError.message}} />\n </Text>\n ),\n })\n console.error(revertError)\n })\n .finally(() => {\n setRevertReleaseStatus('idle')\n })\n }, [\n setRevertReleaseStatus,\n getDocumentRevertStates,\n revertRelease,\n t,\n releaseDisplayTitle,\n stageNewRevertRelease,\n telemetry,\n toast,\n navigateToRevertRelease,\n ])\n\n const description =\n documents.length > 1\n ? 'revert-dialog.confirm-revert-description_other'\n : 'revert-dialog.confirm-revert-description_one'\n\n return (\n <Dialog\n id=\"confirm-revert-dialog\"\n header={t('revert-dialog.confirm-revert.title', {\n title: releaseDisplayTitle,\n })}\n onClose={() => setRevertReleaseStatus('idle')}\n footer={{\n confirmButton: {\n text: t(\n stageNewRevertRelease\n ? 'action.create-revert-release'\n : 'action.immediate-revert-release',\n ),\n tone: 'positive',\n onClick: handleRevertRelease,\n loading: revertReleaseStatus === 'reverting',\n disabled: revertReleaseStatus === 'reverting',\n },\n }}\n >\n <Text muted size={1}>\n {\n <Translate\n t={t}\n i18nKey={description}\n values={{\n releaseDocumentsLength: documents.length,\n }}\n />\n }\n </Text>\n <Flex align=\"center\" paddingTop={4}>\n <Checkbox\n onChange={() => setStageNewRevertRelease((current) => !current)}\n id=\"immediate-revert-release\"\n style={{display: 'block'}}\n checked={!stageNewRevertRelease}\n />\n <Box flex={1} paddingLeft={3}>\n <Text muted size={1}>\n <label htmlFor=\"immediate-revert-release\">\n {t('revert-dialog.confirm-revert.stage-revert-checkbox-label')}\n </label>\n </Text>\n </Box>\n </Flex>\n {hasPostPublishTransactions && !stageNewRevertRelease && (\n <Card marginTop={4} padding={3} radius={2} shadow={1} tone=\"critical\">\n <Text muted size={1}>\n {t('revert-dialog.confirm-revert.warning-card')}\n </Text>\n </Card>\n )}\n </Dialog>\n )\n}\n\nexport const ReleaseRevertButton = ({\n release,\n documents,\n disabled,\n}: ReleasePublishAllButtonProps) => {\n const {t} = useTranslation(releasesLocaleNamespace)\n const {t: tCore} = useTranslation()\n const {guardWithReleaseLimitUpsell} = useReleasesUpsell()\n const [revertReleaseStatus, setRevertReleaseStatus] = useState<RevertReleaseStatus>('idle')\n const [isPendingGuardResponse, setIsPendingGuardResponse] = useState<boolean>(false)\n const {createRelease} = useReleaseOperations()\n const {checkWithPermissionGuard} = useReleasePermissions()\n const [hasCreatePermission, setHasCreatePermission] = useState<boolean | null>(null)\n\n const handleMoveToConfirmStatus = useCallback(async () => {\n setIsPendingGuardResponse(true)\n await guardWithReleaseLimitUpsell(() => setRevertReleaseStatus('confirm'))\n setIsPendingGuardResponse(false)\n }, [guardWithReleaseLimitUpsell])\n\n const isMounted = useRef(false)\n useEffect(() => {\n isMounted.current = true\n void checkWithPermissionGuard(createRelease, getReleaseDefaults()).then((hasPermissions) => {\n if (isMounted.current) setHasCreatePermission(hasPermissions)\n })\n\n return () => {\n isMounted.current = false\n }\n }, [checkWithPermissionGuard, createRelease])\n\n return (\n <>\n <Button\n icon={RestoreIcon}\n onClick={handleMoveToConfirmStatus}\n text={t('action.revert')}\n tone=\"critical\"\n tooltipProps={{\n disabled: hasCreatePermission === true,\n content: tCore('release.action.permission.error'),\n }}\n /**\n * This is an immature assertion of permissions\n * The permissions needed to revert are:\n * Permissions to create a request (implemented)\n * @todo Permissions to create each schema type within the release (not implemented)\n */\n disabled={isPendingGuardResponse || !hasCreatePermission || disabled}\n data-testid=\"revert-button\"\n />\n {revertReleaseStatus !== 'idle' && (\n <ConfirmReleaseDialog\n release={release}\n documents={documents}\n revertReleaseStatus={revertReleaseStatus}\n setRevertReleaseStatus={setRevertReleaseStatus}\n />\n )}\n </>\n )\n}\n","import {type ReleaseDocument} from '@sanity/client'\nimport {CloseCircleIcon} from '@sanity/icons/CloseCircle'\nimport {useTelemetry} from '@sanity/telemetry/react'\nimport {Text, useToast} from '@sanity/ui'\nimport {useCallback, useMemo, useState} from 'react'\n\nimport {Button} from '../../../../../ui-components/button/Button'\nimport {Dialog} from '../../../../../ui-components/dialog/Dialog'\nimport {useTranslation} from '../../../../i18n/hooks/useTranslation'\nimport {Translate} from '../../../../i18n/Translate'\nimport {UnscheduledRelease} from '../../../__telemetry__/releases.telemetry'\nimport {releasesLocaleNamespace} from '../../../i18n'\nimport {useReleaseOperations} from '../../../store/useReleaseOperations'\nimport {type DocumentInRelease} from '../../detail/types'\n\ninterface ReleaseScheduleButtonProps {\n release: ReleaseDocument\n documents: DocumentInRelease[]\n disabled?: boolean\n}\n\nexport const ReleaseUnscheduleButton = ({\n release,\n disabled,\n documents,\n}: ReleaseScheduleButtonProps) => {\n const toast = useToast()\n const {unschedule} = useReleaseOperations()\n const {t} = useTranslation(releasesLocaleNamespace)\n const {t: tCore} = useTranslation()\n const telemetry = useTelemetry()\n const [status, setStatus] = useState<'idle' | 'confirm' | 'unscheduling'>('idle')\n\n const handleConfirmSchedule = useCallback(async () => {\n // The run().catch().finally() syntax instead of try/catch/finally is because of the React Compiler not fully supporting the syntax yet\n const run = async () => {\n setStatus('unscheduling')\n await unschedule(release._id)\n telemetry.log(UnscheduledRelease)\n }\n await run()\n .catch((schedulingError) => {\n toast.push({\n status: 'error',\n title: (\n <Text muted size={1}>\n <Translate\n t={t}\n i18nKey=\"toast.unschedule.error\"\n values={{\n title: release.metadata.title || tCore('release.placeholder-untitled-release'),\n error: schedulingError.message,\n }}\n />\n </Text>\n ),\n })\n console.error(schedulingError)\n })\n .finally(() => {\n setStatus('idle')\n })\n }, [unschedule, release._id, release.metadata.title, telemetry, toast, t, tCore])\n\n const confirmScheduleDialog = useMemo(() => {\n if (status === 'idle') return null\n\n return (\n <Dialog\n id=\"confirm-unschedule-dialog\"\n header={t('unschedule-dialog.confirm-title')}\n onClose={() => status !== 'unscheduling' && setStatus('idle')}\n footer={{\n confirmButton: {\n text: t('action.unschedule'),\n tone: 'default',\n onClick: handleConfirmSchedule,\n loading: status === 'unscheduling',\n disabled: status === 'unscheduling',\n },\n cancelButton: {\n disabled: status === 'unscheduling',\n },\n }}\n >\n <Text muted size={1}>\n {\n <Translate\n t={t}\n i18nKey=\"unschedule-dialog.confirm-description\"\n values={{\n title: release.metadata.title || tCore('release.placeholder-untitled-release'),\n documentsLength: documents.length,\n count: documents.length,\n }}\n />\n }\n </Text>\n </Dialog>\n )\n }, [release.metadata.title, documents.length, handleConfirmSchedule, status, t, tCore])\n\n return (\n <>\n <Button\n icon={CloseCircleIcon}\n disabled={disabled || status === 'unscheduling'}\n text={t('action.unschedule')}\n onClick={() => setStatus('confirm')}\n loading={status === 'unscheduling'}\n data-testid=\"schedule-button\"\n />\n {confirmScheduleDialog}\n </>\n )\n}\n","import {type ReleaseDocument} from '@sanity/client'\n\nimport {isReleaseScheduledOrScheduling} from '../../util/util'\nimport {ReleasePublishAllButton} from '../components/releaseCTAButtons/ReleasePublishAllButton'\nimport {ReleaseRevertButton} from '../components/releaseCTAButtons/ReleaseRevertButton/ReleaseRevertButton'\nimport {ReleaseScheduleButton} from '../components/releaseCTAButtons/ReleaseScheduleButton'\nimport {ReleaseUnscheduleButton} from '../components/releaseCTAButtons/ReleaseUnscheduleButton'\nimport {type DocumentInRelease} from './types'\n\n/**\n * The state-driven primary release action — publish-all / schedule / unschedule / revert, depending\n * on the release's state and type. Extracted so it can render in both the footer (its original home)\n * and the top action rail; each instance manages its own local dialog state, so having two is safe.\n *\n * @internal\n */\nexport function ReleaseActionButton({\n release,\n documents,\n}: {\n release: ReleaseDocument\n documents: DocumentInRelease[]\n}): React.JSX.Element | null {\n if (release.state === 'archived') return null\n\n if (isReleaseScheduledOrScheduling(release)) {\n return (\n <ReleaseUnscheduleButton\n release={release}\n documents={documents}\n disabled={!documents.length}\n />\n )\n }\n\n if (release.state === 'active') {\n if (release.metadata.releaseType === 'scheduled') {\n return (\n <ReleaseScheduleButton\n release={release}\n documents={documents}\n disabled={!documents.length}\n />\n )\n }\n\n if (release.metadata.releaseType === 'asap') {\n return (\n <ReleasePublishAllButton\n release={release}\n documents={documents}\n disabled={!documents.length}\n />\n )\n }\n }\n\n if (release.state === 'published') {\n return (\n <ReleaseRevertButton release={release} documents={documents} disabled={!documents.length} />\n )\n }\n\n return null\n}\n","import {Box, Card, Flex, Text} from '@sanity/ui'\nimport {type ReactNode} from 'react'\n\nexport function StatusItem(props: {avatar?: ReactNode; text: ReactNode; testId?: string}) {\n const {avatar, text, testId} = props\n\n return (\n <Card data-testid={testId}>\n <Flex>\n {avatar && (\n <Box padding={1}>\n <div style={{margin: -1}}>{avatar}</div>\n </Box>\n )}\n <Box padding={2} paddingLeft={avatar ? 1 : undefined}>\n <Text muted size={1}>\n {text}\n </Text>\n </Box>\n </Flex>\n </Card>\n )\n}\n","import {type ReleaseDocument} from '@sanity/client'\nimport {Flex} from '@sanity/ui'\nimport {useMemo} from 'react'\n\nimport {RelativeTime} from '../../../components/RelativeTime'\nimport {AvatarSkeleton, UserAvatar} from '../../../components/userAvatar/UserAvatar'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {isNonNullable} from '../../../util/isNonNullable'\nimport {releasesLocaleNamespace} from '../../i18n'\nimport {StatusItem} from '../components/StatusItem'\nimport {\n isArchiveReleaseEvent,\n isCreateReleaseEvent,\n isPublishReleaseEvent,\n isUnarchiveReleaseEvent,\n type ReleaseEvent,\n} from './events/types'\n\nconst STATUS_TITLE_I18N = {\n createRelease: 'footer.status.created',\n publishRelease: 'footer.status.published',\n archiveRelease: 'footer.status.archived',\n unarchiveRelease: 'footer.status.unarchived',\n}\nexport function ReleaseStatusItems({\n events,\n release,\n}: {\n events: ReleaseEvent[]\n release: ReleaseDocument\n}) {\n const {t} = useTranslation(releasesLocaleNamespace)\n const footerEvents = useMemo(() => {\n const createEvent = events.find(isCreateReleaseEvent)\n const extraEvent = events.find(\n (event) =>\n isPublishReleaseEvent(event) ||\n isArchiveReleaseEvent(event) ||\n isUnarchiveReleaseEvent(event),\n )\n return [createEvent, extraEvent].filter(isNonNullable)\n }, [events])\n\n if (!footerEvents.length) {\n return (\n <Flex flex={1} gap={1}>\n <StatusItem\n avatar={<AvatarSkeleton $size={0} />}\n text={\n <>\n {t(STATUS_TITLE_I18N.createRelease)}{' '}\n <RelativeTime time={release._createdAt} useTemporalPhrase minimal />\n </>\n }\n />\n </Flex>\n )\n }\n return (\n <Flex flex={1} gap={1}>\n {footerEvents.map((event) => (\n <StatusItem\n key={event.id}\n testId={`status-${event.type}`}\n avatar={event.author && <UserAvatar size={0} user={event.author} />}\n text={\n <>\n {t(STATUS_TITLE_I18N[event.type])}{' '}\n <RelativeTime time={event.timestamp} useTemporalPhrase minimal />\n </>\n }\n />\n ))}\n </Flex>\n )\n}\n","import {type ReleaseDocument} from '@sanity/client'\nimport {Card, Flex} from '@sanity/ui'\n\nimport {ReleaseMenuButton} from '../components/ReleaseMenuButton/ReleaseMenuButton'\nimport {type ReleaseEvent} from './events/types'\nimport {ReleaseActionButton} from './ReleaseActionButton'\nimport {ReleaseStatusItems} from './ReleaseStatusItems'\nimport {type DocumentInRelease} from './types'\n\nexport function ReleaseDashboardFooter(props: {\n documents: DocumentInRelease[]\n release: ReleaseDocument\n events: ReleaseEvent[]\n}) {\n const {documents, release, events} = props\n\n return (\n <Card flex=\"none\">\n <Card borderTop marginX={2} style={{opacity: 0.6}} />\n\n <Flex padding={3}>\n <Flex flex={1} gap={1}>\n <ReleaseStatusItems events={events} release={release} />\n </Flex>\n\n <Flex flex=\"none\" gap={1} data-testid=\"release-dashboard-footer-actions\">\n <ReleaseActionButton release={release} documents={documents} />\n <ReleaseMenuButton\n release={release}\n documentsCount={documents.length}\n documents={documents}\n ignoreCTA={release.metadata.releaseType !== 'undecided'}\n />\n </Flex>\n </Flex>\n </Card>\n )\n}\n","import {type ReleaseDocument} from '@sanity/client'\nimport {LinkIcon} from '@sanity/icons/Link'\nimport {ShareIcon} from '@sanity/icons/Share'\nimport {TargetIcon} from '@sanity/icons/Target'\nimport {TextIcon} from '@sanity/icons/Text'\nimport {type DefinedTelemetryLog, useTelemetry} from '@sanity/telemetry/react'\nimport {Menu, useToast} from '@sanity/ui'\nimport {type ComponentType, useCallback} from 'react'\nimport {useRouter} from 'sanity/router'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {MenuButton} from '../../../../ui-components/menuButton/MenuButton'\nimport {MenuItem} from '../../../../ui-components/menuItem/MenuItem'\nimport {useStudioUrl} from '../../../hooks/useStudioUrl'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {\n ReleaseIdCopied,\n ReleaseLinkCopied,\n ReleaseTitleCopied,\n} from '../../__telemetry__/releases.telemetry'\nimport {releasesLocaleNamespace} from '../../i18n'\nimport {getReleaseIdFromReleaseDocumentId} from '../../util/getReleaseIdFromReleaseDocumentId'\n\ninterface CopyReleaseActionsProps {\n release: ReleaseDocument\n /**\n * Button icon. Defaults to ShareIcon (the current header). The menu only copies things (link / id\n * / title) to the clipboard, so callers that want the icon to match that — rather than imply\n * sharing — can pass CopyIcon.\n */\n icon?: ComponentType\n}\n\nexport function CopyReleaseActions(props: CopyReleaseActionsProps) {\n const {release, icon = ShareIcon} = props\n const {t} = useTranslation(releasesLocaleNamespace)\n const {t: tCore} = useTranslation()\n const telemetry = useTelemetry()\n const toast = useToast()\n const {resolvePathFromState} = useRouter()\n const {buildIntentUrl} = useStudioUrl()\n\n const releaseId = getReleaseIdFromReleaseDocumentId(release._id)\n const title = release.metadata.title || tCore('release.placeholder-untitled-release')\n\n const copyToClipboard = useCallback(\n async (text: string, event: DefinedTelemetryLog<void>, toastKey: string) => {\n await navigator.clipboard.writeText(text)\n telemetry.log(event)\n toast.push({\n id: toastKey,\n status: 'info',\n title: t(`toast.${toastKey}.success`),\n })\n },\n [t, telemetry, toast],\n )\n\n const handleCopyReleaseLink = useCallback(async () => {\n const releasePath = resolvePathFromState({releaseId})\n const url = buildIntentUrl(releasePath)\n\n await copyToClipboard(url, ReleaseLinkCopied, 'copy-release-link')\n }, [buildIntentUrl, copyToClipboard, releaseId, resolvePathFromState])\n\n const handleCopyReleaseId = useCallback(async () => {\n await copyToClipboard(releaseId, ReleaseIdCopied, 'copy-release-id')\n }, [copyToClipboard, releaseId])\n\n const handleCopyReleaseTitle = useCallback(async () => {\n await copyToClipboard(title, ReleaseTitleCopied, 'copy-release-title')\n }, [copyToClipboard, title])\n\n return (\n <MenuButton\n id=\"copy-release-actions\"\n button={\n <Button\n data-testid=\"copy-release-actions-button\"\n icon={icon}\n mode=\"bleed\"\n tooltipProps={{content: t('action.copy-release.label')}}\n />\n }\n menu={\n <Menu>\n <MenuItem\n icon={LinkIcon}\n onClick={handleCopyReleaseLink}\n text={t('action.copy-release-link.label')}\n />\n <MenuItem\n icon={TargetIcon}\n onClick={handleCopyReleaseId}\n text={t('action.copy-release-id.label')}\n />\n <MenuItem\n icon={TextIcon}\n onClick={handleCopyReleaseTitle}\n text={t('action.copy-release-title.label')}\n />\n </Menu>\n }\n popover={{placement: 'bottom-end'}}\n />\n )\n}\n","import {type EditableReleaseDocument, type ReleaseDocument} from '@sanity/client'\nimport {Card, Flex, Stack, Text, TextArea, TextInput, useToast} from '@sanity/ui'\nimport {type ChangeEvent, useCallback, useId, useRef, useState} from 'react'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {Dialog} from '../../../../ui-components/dialog/Dialog'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {useReleaseOperations} from '../../store/useReleaseOperations'\n\n/**\n * Explicit edit surface for a release's title + description. The detail page is a read-only display\n * surface; editing is a deliberate action that opens this dialog, so editing a release — a document\n * — is intentional rather than an accidental inline edit.\n *\n * The fields are explicitly labelled (\"Title\" / \"Description\") so it reads as a form for changing\n * those properties, not as free-floating text.\n *\n * @internal\n */\nexport function EditReleaseDialog({\n release,\n onClose,\n}: {\n release: ReleaseDocument\n onClose: () => void\n}): React.JSX.Element {\n const {updateRelease} = useReleaseOperations()\n const {t} = useTranslation()\n const toast = useToast()\n const titleId = useId()\n const descriptionId = useId()\n\n const [title, setTitle] = useState(release.metadata.title ?? '')\n const [description, setDescription] = useState(release.metadata.description ?? '')\n const [isSaving, setIsSaving] = useState(false)\n // Synchronous re-entry guard. `loading={isSaving}` only disables the button after a re-render, so\n // two clicks in the same tick would both reach updateRelease. This ref blocks the second call\n // immediately.\n const isSavingRef = useRef(false)\n\n const handleSave = useCallback(async () => {\n if (isSavingRef.current) return\n isSavingRef.current = true\n setIsSaving(true)\n try {\n const next: EditableReleaseDocument = {\n ...release,\n metadata: {...release.metadata, title, description},\n }\n await updateRelease(next)\n onClose()\n } catch (err) {\n console.error(err)\n toast.push({\n closable: true,\n status: 'error',\n title: t('release.toast.edit-release-error.title'),\n })\n } finally {\n isSavingRef.current = false\n setIsSaving(false)\n }\n }, [description, onClose, release, t, title, toast, updateRelease])\n\n // Ignore click-outside / Escape / close while a save is in flight: dismissing mid-mutation would\n // unmount the dialog while updateRelease continues, letting the user reopen and edit against a\n // stale in-flight save. The success path calls onClose directly, so it is unaffected.\n const handleClose = useCallback(() => {\n if (isSaving) return\n onClose()\n }, [isSaving, onClose])\n\n return (\n <Dialog\n header={t('release.dialog.edit.title')}\n id=\"edit-release-dialog\"\n onClickOutside={handleClose}\n onClose={handleClose}\n padding={false}\n width={1}\n >\n <Card padding={4} borderTop>\n <Stack gap={5}>\n <Stack gap={3}>\n <Text as=\"label\" htmlFor={titleId} size={1} weight=\"medium\">\n {t('release.dialog.edit.title-label')}\n </Text>\n <TextInput\n data-testid=\"release-form-title\"\n id={titleId}\n onChange={(event: ChangeEvent<HTMLInputElement>) =>\n setTitle(event.currentTarget.value)\n }\n value={title}\n />\n </Stack>\n <Stack gap={3}>\n <Text as=\"label\" htmlFor={descriptionId} size={1} weight=\"medium\">\n {t('release.dialog.edit.description-label')}\n </Text>\n <TextArea\n data-testid=\"release-form-description\"\n id={descriptionId}\n onChange={(event: ChangeEvent<HTMLTextAreaElement>) =>\n setDescription(event.currentTarget.value)\n }\n rows={6}\n value={description}\n />\n </Stack>\n </Stack>\n <Flex justify=\"flex-end\" paddingTop={5}>\n <Button\n data-testid=\"save-release-details-button\"\n loading={isSaving}\n onClick={handleSave}\n size=\"large\"\n text={t('release.dialog.edit.confirm')}\n />\n </Flex>\n </Card>\n </Dialog>\n )\n}\n","import {type ReleaseDocument} from '@sanity/client'\nimport {useEffect, useRef, useState} from 'react'\n\nimport {getIsReleaseOpen} from '../../components/dialog/TitleDescriptionForm'\nimport {useReleaseOperations} from '../../store/useReleaseOperations'\nimport {useReleasePermissions} from '../../store/useReleasePermissions'\n\n/**\n * Whether the current user may edit a release's details (title/description). True only when the\n * release is open (editing a published/archived release is not possible) and the permission guard\n * on `updateRelease` passes. Shared by the display-surface edit affordance and the action rail so\n * both gate on exactly the same condition.\n *\n * @internal\n */\nexport function useCanEditRelease(release: ReleaseDocument): boolean {\n const {updateRelease} = useReleaseOperations()\n const {checkWithPermissionGuard} = useReleasePermissions()\n const [hasUpdatePermission, setHasUpdatePermission] = useState<boolean | null>(null)\n\n const isReleaseOpen = getIsReleaseOpen(release)\n const isMounted = useRef(false)\n\n useEffect(() => {\n isMounted.current = true\n\n if (isReleaseOpen) {\n // Editing is only possible on an open release, so only check permission when it's open.\n void checkWithPermissionGuard(updateRelease, release).then((hasPermission) => {\n if (isMounted.current) setHasUpdatePermission(hasPermission)\n })\n }\n\n return () => {\n isMounted.current = false\n }\n }, [checkWithPermissionGuard, isReleaseOpen, release, updateRelease])\n\n return isReleaseOpen && Boolean(hasUpdatePermission)\n}\n","import {type ReleaseDocument} from '@sanity/client'\nimport {EditIcon} from '@sanity/icons/Edit'\nimport {useState} from 'react'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {DetailActionRail} from '../../../components/detailLayout'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {EditReleaseDialog} from '../../components/dialog/EditReleaseDialog'\nimport {ReleaseMenuButton} from '../components/ReleaseMenuButton/ReleaseMenuButton'\nimport {ReleaseActionButton} from './ReleaseActionButton'\nimport {type DocumentInRelease} from './types'\nimport {useCanEditRelease} from './useCanEditRelease'\n\n/**\n * The Releases top action rail (behind `beta.variants`): an icon-only \"Edit details\" secondary, the\n * state-driven primary — Run release / Publish / Schedule / Unschedule / Revert — and the overflow\n * `⋯` menu. Edit details is a defined, always-visible affordance (not an inline hover pencil, not\n * buried in the overflow), which is more discoverable and keyboard-accessible, and mirrors the\n * Variant-definition detail page's top-of-page edit. Replaces the bottom footer's action cluster,\n * which is dropped in beta.\n *\n * @internal\n */\nexport function ReleaseActionRail({\n release,\n documents,\n}: {\n release: ReleaseDocument\n documents: DocumentInRelease[]\n}): React.JSX.Element {\n const {t} = useTranslation()\n const [editOpen, setEditOpen] = useState(false)\n const canEdit = useCanEditRelease(release)\n\n return (\n <>\n <DetailActionRail\n secondary={\n canEdit ? (\n <Button\n data-testid=\"edit-release-details-button\"\n icon={EditIcon}\n mode=\"bleed\"\n onClick={() => setEditOpen(true)}\n tooltipProps={{content: t('release.action.edit-details')}}\n />\n ) : undefined\n }\n primary={<ReleaseActionButton release={release} documents={documents} />}\n menu={\n <ReleaseMenuButton\n release={release}\n documentsCount={documents.length}\n documents={documents}\n ignoreCTA={release.metadata.releaseType !== 'undecided'}\n />\n }\n />\n {editOpen && <EditReleaseDialog release={release} onClose={() => setEditOpen(false)} />}\n </>\n )\n}\n","import {type ReleaseDocument} from '@sanity/client'\nimport {ChevronRightIcon} from '@sanity/icons/ChevronRight'\nimport {RestoreIcon} from '@sanity/icons/Restore'\nimport {\n Box,\n // oxlint-disable-next-line no-restricted-imports\n Button, // Custom button with a different textWeight, consider adding textWeight to the shared\n Container,\n Flex,\n Text,\n} from '@sanity/ui'\nimport {type Dispatch, type SetStateAction, useCallback} from 'react'\nimport {useRouter} from 'sanity/router'\n\nimport {DetailBackButton} from '../../../components/detailLayout'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {useWorkspace} from '../../../studio/workspace'\nimport {releasesLocaleNamespace} from '../../i18n'\nimport {GROUP_SEARCH_PARAM_KEY} from '../overview/queryParamUtils'\nimport {CopyReleaseActions} from './CopyReleaseActions'\nimport {ReleaseActionRail} from './ReleaseActionRail'\nimport {type ReleaseInspector} from './ReleaseDetail'\nimport {type DocumentInRelease} from './types'\n\nexport function ReleaseDashboardHeader(props: {\n documents: DocumentInRelease[]\n inspector: ReleaseInspector | undefined\n release: ReleaseDocument\n setInspector: Dispatch<SetStateAction<ReleaseInspector | undefined>>\n}) {\n const {documents, inspector, release, setInspector} = props\n const {t} = useTranslation(releasesLocaleNamespace)\n const {t: tCore} = useTranslation()\n const title = release.metadata.title || tCore('release.placeholder-untitled-release')\n const router = useRouter()\n\n // Behind beta.variants the Share/Activity actions move into the table's command lane (one action\n // lane). Production keeps them in the header until the flag flips.\n const {beta} = useWorkspace()\n const variantsEnabled = Boolean(beta?.variants?.enabled)\n\n const handleNavigateToReleasesList = useCallback(() => {\n const isReleaseOpen = release.state !== 'archived' && release.state !== 'published'\n\n router.navigate({\n _searchParams: isReleaseOpen ? undefined : [[GROUP_SEARCH_PARAM_KEY, 'archived']],\n })\n }, [release.state, router])\n\n const handleActivityClick = useCallback(() => {\n setInspector((prev) => (prev === 'activity' ? undefined : 'activity'))\n }, [setInspector])\n\n const headerContent = (\n <Box padding={3}>\n <Flex align=\"flex-start\">\n <Flex flex={1} align=\"center\" style={{minWidth: 0}}>\n {variantsEnabled ? (\n // A single back affordance — the release title already headlines the pane below, so\n // the breadcrumb's repeat of it is dropped. Mirrors the Variants detail's back arrow.\n <DetailBackButton\n text={t('overview.back-to-all-releases')}\n onClick={handleNavigateToReleasesList}\n testId=\"back-to-releases-button\"\n />\n ) : (\n <>\n <Flex flex=\"none\">\n <Button\n mode=\"bleed\"\n onClick={handleNavigateToReleasesList}\n text={t('overview.title')}\n textWeight=\"regular\"\n padding={2}\n data-testid=\"back-to-releases-button\"\n />\n </Flex>\n <Box paddingY={2} flex=\"none\">\n <Text size={1}>\n <ChevronRightIcon />\n </Text>\n </Box>\n <Box padding={2} style={{minWidth: 0, maxWidth: '300px'}}>\n <Text\n size={1}\n weight=\"semibold\"\n textOverflow=\"ellipsis\"\n style={release.metadata.title ? undefined : {opacity: 0.5}}\n >\n {title}\n </Text>\n </Box>\n </>\n )}\n </Flex>\n\n {variantsEnabled ? (\n // The F-pattern action rail: the release's primary action (Run release / Publish /\n // Schedule / …) and its overflow menu sit top-right, where the eye lands first, instead\n // of in a bottom footer. The footer is dropped in beta (see ReleaseDetail). Copy + Activity\n // sit alongside it here rather than in the table's command lane: the header always renders,\n // so they stay reachable even when the table is loading, errored, or an empty\n // cardinality-one release (where the command lane is not mounted).\n <Flex flex=\"none\" gap={2} align=\"center\">\n <CopyReleaseActions release={release} />\n <Button\n data-testid=\"activity-button\"\n icon={RestoreIcon}\n mode=\"bleed\"\n onClick={handleActivityClick}\n padding={2}\n selected={inspector === 'activity'}\n gap={2}\n text={t('dashboard.details.activity')}\n />\n <ReleaseActionRail release={release} documents={documents} />\n </Flex>\n ) : (\n <Flex flex=\"none\" gap={2}>\n <CopyReleaseActions release={release} />\n <Button\n icon={RestoreIcon}\n mode=\"bleed\"\n onClick={handleActivityClick}\n padding={2}\n selected={inspector === 'activity'}\n gap={2}\n text={t('dashboard.details.activity')}\n />\n </Flex>\n )}\n </Flex>\n </Box>\n )\n\n // Only the beta layout constrains the header to the width={3} gutter shared with the new\n // details/table panes below. With variants off the details and table stay on the old full-bleed\n // path, so the header must too — otherwise a centered/constrained header sits over a full-width\n // table, the hybrid layout flagged in review. Production padding is preserved by the inner Box\n // (on main the parent Card supplied padding={3}; the redesign moved it here).\n return variantsEnabled ? <Container width={3}>{headerContent}</Container> : headerContent\n}\n","import {type SanityDocument} from '@sanity/client'\nimport {LayerProvider, PortalProvider} from '@sanity/ui'\n\nimport {SearchPopover} from '../../../studio/components/navbar/search/components/SearchPopover'\nimport {SearchProvider} from '../../../studio/components/navbar/search/contexts/search/SearchProvider'\n\nexport type AddedDocument = Pick<SanityDocument, '_id' | '_type' | 'title'> &\n Partial<SanityDocument>\n\nexport function AddDocumentSearch({\n open,\n onClose,\n releaseId,\n idsInRelease,\n}: {\n open: boolean\n onClose: (document?: AddedDocument) => void\n releaseId: string\n idsInRelease: string[]\n}): React.JSX.Element {\n return (\n <LayerProvider zOffset={1}>\n <SearchProvider disabledDocumentIds={idsInRelease} canDisableAction>\n <PortalProvider>\n <SearchPopover\n onClose={onClose}\n onItemSelect={onClose}\n open={open}\n previewPerspective={[releaseId]}\n disableIntentLink\n />\n </PortalProvider>\n </SearchProvider>\n </LayerProvider>\n )\n}\n","import {isGoingToUnpublish} from '../../util/isGoingToUnpublish'\nimport {type BundleDocumentRow} from './ReleaseSummary'\nimport {type DocumentInRelease} from './types'\n\nexport type DocumentFilterType = 'all' | 'added' | 'changed' | 'unpublished' | 'errors'\n\nexport interface DocumentActionConfig {\n key: 'added' | 'changed' | 'unpublished'\n tone: 'positive' | 'caution' | 'critical'\n labelKey: string\n}\n\nexport interface FilterTabConfig {\n key: DocumentFilterType\n labelKey: string\n tone: 'default' | 'positive' | 'caution' | 'critical'\n}\n\nconst DOCUMENT_ACTION_CONFIGS: DocumentActionConfig[] = [\n {\n key: 'added',\n tone: 'positive',\n labelKey: 'table-body.action.add',\n },\n {\n key: 'changed',\n tone: 'caution',\n labelKey: 'table-body.action.change',\n },\n {\n key: 'unpublished',\n tone: 'critical',\n labelKey: 'table-body.action.unpublish',\n },\n]\n\nexport const FILTER_TAB_CONFIGS: FilterTabConfig[] = [\n {key: 'all', labelKey: 'filter-tab.all', tone: 'default'},\n ...DOCUMENT_ACTION_CONFIGS,\n {key: 'errors', labelKey: 'filter-tab.errors', tone: 'critical'},\n]\n\nexport type ActionCounts = Record<'added' | 'changed' | 'unpublished' | 'errors', number>\n\n/**\n * Counts documents by their action type and validation errors\n */\nexport function countDocumentsByAction(\n documents: (DocumentInRelease | BundleDocumentRow)[],\n): ActionCounts {\n return documents.reduce<ActionCounts>(\n (acc, doc) => {\n const actionType = getDocumentActionType(doc)\n if (actionType) {\n acc[actionType]++\n }\n if (doc.validation.hasError && !doc.isPending) {\n acc.errors++\n }\n return acc\n },\n {added: 0, changed: 0, unpublished: 0, errors: 0},\n )\n}\n\n/**\n * Checks if a document matches the given filter type\n */\nexport function documentMatchesFilter(\n doc: DocumentInRelease | BundleDocumentRow,\n filter: DocumentFilterType,\n): boolean {\n if (filter === 'all') return true\n if (filter === 'errors') return doc.validation.hasError && !doc.isPending\n return getDocumentActionType(doc) === filter\n}\n\n/**\n * Determines the action type for a document based on its state\n */\nexport function getDocumentActionType(\n document: DocumentInRelease | BundleDocumentRow,\n): DocumentActionConfig['key'] | null {\n if (!document.document || document.isPending) {\n return null\n }\n\n const willBeUnpublished = isGoingToUnpublish(document.document)\n if (willBeUnpublished) {\n return 'unpublished'\n }\n\n if (document.document.publishedDocumentExists) {\n return 'changed'\n }\n\n return 'added'\n}\n\nexport function getReleaseDocumentActionConfig(\n actionType: DocumentActionConfig['key'],\n): DocumentActionConfig | undefined {\n return DOCUMENT_ACTION_CONFIGS.find(({key}) => key === actionType)\n}\n","import {type ReleaseState} from '@sanity/client'\nimport {Box, Container, Flex, Skeleton, TabList} from '@sanity/ui'\nimport {useMemo} from 'react'\n\nimport {Tab} from '../../../../../ui-components/tab/Tab'\nimport {useTranslation} from '../../../../i18n/hooks/useTranslation'\nimport {releasesLocaleNamespace} from '../../../i18n'\nimport {\n countDocumentsByAction,\n type DocumentFilterType,\n FILTER_TAB_CONFIGS,\n type FilterTabConfig,\n} from '../releaseDocumentActions'\nimport {type DocumentInRelease} from '../types'\n\ninterface ReleaseDocumentFilterTabsProps {\n documents: DocumentInRelease[]\n releaseState: ReleaseState\n isLoading?: boolean\n activeFilter: DocumentFilterType\n onFilterChange: (filter: DocumentFilterType) => void\n /** Render just the tabs (no Container/padding) for hosting inside the shared table command lane. */\n inline?: boolean\n}\n\nexport function ReleaseDocumentFilterTabs({\n documents,\n releaseState,\n isLoading = false,\n activeFilter,\n onFilterChange,\n inline = false,\n}: ReleaseDocumentFilterTabsProps) {\n const {t} = useTranslation(releasesLocaleNamespace)\n\n // Hide filter tabs for archived and published releases (early return for perf)\n if (releaseState === 'archived' || releaseState === 'published') {\n return null\n }\n\n if (isLoading) {\n const skeletons = (\n <Flex align=\"center\" gap={2}>\n {FILTER_TAB_CONFIGS.filter((config) => config.key !== 'errors').map((config) => (\n <Skeleton\n key={`loading-skeleton-${config.key}`}\n animated\n style={{width: '70px', height: '32px'}}\n radius={2}\n />\n ))}\n </Flex>\n )\n if (inline) return skeletons\n return (\n <Container width={3}>\n <Box padding={3}>{skeletons}</Box>\n </Container>\n )\n }\n\n if (documents.length === 0) {\n return null\n }\n\n return (\n <ReleaseDocumentFilterTabsInner\n documents={documents}\n activeFilter={activeFilter}\n inline={inline}\n onFilterChange={onFilterChange}\n t={t}\n />\n )\n}\n\ninterface ReleaseDocumentFilterTabsInnerProps {\n documents: DocumentInRelease[]\n activeFilter: DocumentFilterType\n onFilterChange: (filter: DocumentFilterType) => void\n inline: boolean\n t: ReturnType<typeof useTranslation>['t']\n}\n\nfunction ReleaseDocumentFilterTabsInner({\n documents,\n activeFilter,\n onFilterChange,\n inline,\n t,\n}: ReleaseDocumentFilterTabsInnerProps) {\n const counts = useMemo(() => countDocumentsByAction(documents), [documents])\n\n const getTabLabel = (config: FilterTabConfig): string => {\n const label = t(config.labelKey)\n if (config.key === 'all') {\n return label\n }\n const count = counts[config.key]\n return `${label} (${count})`\n }\n\n const getTabTone = (config: FilterTabConfig): 'default' | 'positive' | 'caution' | 'critical' => {\n // Errors tab always uses critical tone for visibility (both selected and unselected)\n if (config.key === 'errors') {\n return 'critical'\n }\n // Only apply action-specific tones when selected\n if (activeFilter === config.key) {\n return config.tone\n }\n return 'default'\n }\n\n const tabList = (\n <TabList gap={1}>\n {FILTER_TAB_CONFIGS.map((config) => {\n const isSelected = activeFilter === config.key\n\n // Hide tabs with zero counts (except \"All\")\n if (config.key !== 'all' && counts[config.key] === 0) {\n return null\n }\n\n return (\n <Tab\n key={config.key}\n id={`filter-tab-${config.key}`}\n aria-controls=\"document-table-card\"\n label={getTabLabel(config)}\n onClick={() => onFilterChange(config.key)}\n selected={isSelected}\n tone={getTabTone(config)}\n />\n )\n })}\n </TabList>\n )\n\n // Inline: bare tabs for the shared table's command lane (the lane supplies container + padding).\n if (inline) return tabList\n\n return (\n <Container width={3}>\n <Box padding={3}>{tabList}</Box>\n </Container>\n )\n}\n","import {CloseIcon} from '@sanity/icons/Close'\nimport {UnpublishIcon} from '@sanity/icons/Unpublish'\nimport {Box, Card, Label, Menu, MenuDivider} from '@sanity/ui'\nimport {memo, useMemo, useState} from 'react'\n\nimport {MenuButton} from '../../../../../ui-components/menuButton/MenuButton'\nimport {MenuItem} from '../../../../../ui-components/menuItem/MenuItem'\nimport {ContextMenuButton} from '../../../../components/contextMenuButton/ContextMenuButton'\nimport {useSchema} from '../../../../hooks/useSchema'\nimport {useTranslation} from '../../../../i18n/hooks/useTranslation'\nimport {useDocumentPairPermissions} from '../../../../store/grants/documentPairPermissions'\nimport {getPublishedId, getVersionFromId} from '../../../../util/draftUtils'\nimport {DiscardVersionDialog} from '../../../components/dialog/DiscardVersionDialog'\nimport {UnpublishVersionDialog} from '../../../components/dialog/UnpublishVersionDialog'\nimport {releasesLocaleNamespace} from '../../../i18n'\nimport {isGoingToUnpublish} from '../../../util/isGoingToUnpublish'\nimport {type BundleDocumentRow} from '../ReleaseSummary'\n\nconst DocumentActionsInner = memo(\n function DocumentActionsInner({\n document,\n releaseTitle,\n }: {\n document: BundleDocumentRow\n releaseTitle: string | undefined\n }) {\n const [showDiscardDialog, setShowDiscardDialog] = useState(false)\n const [showUnpublishDialog, setShowUnpublishDialog] = useState(false)\n const {t: coreT} = useTranslation()\n const {t} = useTranslation(releasesLocaleNamespace)\n const isAlreadyUnpublished = isGoingToUnpublish(document.document)\n\n const publishedId = getPublishedId(document.document._id)\n const type = document.document._type\n // No `getTargetScopeId(useTargetDocumentState())` here: the version is derived from the table row's own\n // document id (the release being viewed), in a variant release version this will also work because the scopeId\n // is the same as the version from id.\n const version = getVersionFromId(document.document._id)\n\n const [discardVersionPermission, isDiscardVersionPermissionsLoading] =\n useDocumentPairPermissions({\n id: publishedId,\n type,\n version,\n permission: 'discardVersion',\n })\n const [unpublishPermission, isUnpublishPermissionsLoading] = useDocumentPairPermissions({\n id: publishedId,\n type,\n version,\n permission: 'unpublish',\n })\n\n const isDiscardVersionActionDisabled =\n !discardVersionPermission?.granted || isDiscardVersionPermissionsLoading\n const noPermissionToUnpublish = !unpublishPermission?.granted || isUnpublishPermissionsLoading\n\n const unPublishTooltipContent = useMemo(() => {\n if (noPermissionToUnpublish) {\n return t('permissions.error.unpublish')\n }\n if (!document.document.publishedDocumentExists) {\n return t('unpublish.no-published-version')\n }\n if (isAlreadyUnpublished) {\n return t('unpublish.already-unpublished')\n }\n\n return null\n }, [\n document.document.publishedDocumentExists,\n isAlreadyUnpublished,\n noPermissionToUnpublish,\n t,\n ])\n\n const isUnpublishActionDisabled =\n noPermissionToUnpublish || !document.document.publishedDocumentExists || isAlreadyUnpublished\n\n return (\n <>\n <Card tone=\"default\" display=\"flex\">\n <MenuButton\n id=\"document-actions\"\n button={<ContextMenuButton />}\n menu={\n <Menu>\n <MenuItem\n text={coreT('release.action.discard-version')}\n icon={CloseIcon}\n onClick={() => setShowDiscardDialog(true)}\n disabled={isDiscardVersionActionDisabled}\n tooltipProps={{\n disabled: !isDiscardVersionActionDisabled,\n content: t('permissions.error.discard-version'),\n }}\n />\n <MenuDivider />\n <Box padding={3} paddingBottom={2}>\n <Label size={1}>{t('menu.group.when-releasing')}</Label>\n </Box>\n <MenuItem\n text={t('action.unpublish')}\n icon={UnpublishIcon}\n disabled={isUnpublishActionDisabled}\n tooltipProps={{\n disabled: !isUnpublishActionDisabled,\n content: unPublishTooltipContent,\n }}\n onClick={() => setShowUnpublishDialog(true)}\n />\n </Menu>\n }\n />\n </Card>\n {showDiscardDialog && (\n <DiscardVersionDialog\n isGoingToUnpublish={isGoingToUnpublish(document.document)}\n onClose={() => setShowDiscardDialog(false)}\n versionId={document.document._id}\n documentType={document.document._type}\n fromPerspective={releaseTitle || t('release-placeholder.title')}\n />\n )}\n {showUnpublishDialog && (\n <UnpublishVersionDialog\n onClose={() => setShowUnpublishDialog(false)}\n documentVersionId={document.document._id}\n documentType={document.document._type}\n />\n )}\n </>\n )\n },\n (prev, next) => prev.document.memoKey === next.document.memoKey,\n)\n\nexport const DocumentActions = memo(function GuardedDocumentActions(props: {\n document: BundleDocumentRow\n releaseTitle: string | undefined\n}) {\n const schema = useSchema()\n const type = schema.get(props.document.document._type)\n const {t} = useTranslation()\n if (!type) {\n return (\n <ContextMenuButton\n disabled\n tooltipProps={{\n content: t('document.type.not-found', {type: props.document.document._type}),\n }}\n />\n )\n }\n\n return <DocumentActionsInner {...props} />\n})\n","import {type TransactionLogEventWithEffects} from '@sanity/types'\nimport {useCallback, useEffect, useMemo, useRef, useState} from 'react'\n\nimport {useClient} from '../../../../hooks/useClient'\nimport {getTransactionsLogs} from '../../../../store/translog/getTransactionsLogs'\nimport {getVersionId} from '../../../../util/draftUtils'\nimport {RELEASES_STUDIO_CLIENT_OPTIONS} from '../../../util/releasesClient'\n\nconst historyCache: Record<string, {transactions: TransactionLogEventWithEffects[]}> =\n Object.create(null)\n\nexport type DocumentHistory = {\n history: TransactionLogEventWithEffects[]\n createdBy: string\n lastEditedBy: string\n editors: string[]\n}\n\n// Add as a concurrency limiter to avoid 429s when many rows mount at once\n// This happens in incredibly large releases with many documents\n// 10 was the highest number I was able to run before getting consistent 429s\nlet activeHistoryStreams = 0\nconst pendingHistoryResolvers: Array<() => void> = []\nasync function acquireHistorySlot(maxConcurrent = 10): Promise<void> {\n if (activeHistoryStreams >= maxConcurrent) {\n await new Promise<void>((resolve) => pendingHistoryResolvers.push(resolve))\n }\n activeHistoryStreams += 1\n}\nfunction releaseHistorySlot(): void {\n activeHistoryStreams = Math.max(0, activeHistoryStreams - 1)\n const next = pendingHistoryResolvers.shift()\n if (next) next()\n}\n\n// Fetch history for a single document version within a release\nexport function useReleaseHistory(\n releaseDocumentId: string | undefined,\n releaseId: string,\n documentRevision?: string,\n): {\n documentHistory?: DocumentHistory\n collaborators: string[]\n loading: boolean\n} {\n const client = useClient(RELEASES_STUDIO_CLIENT_OPTIONS)\n const [history, setHistory] = useState<TransactionLogEventWithEffects[] | null>(null)\n\n const versionId = useMemo(() => {\n if (!releaseDocumentId || !releaseId) return ''\n return getVersionId(releaseDocumentId, releaseId)\n }, [releaseDocumentId, releaseId])\n\n // Reset to the loading state during render when the (versionId, documentRevision) identity\n // changes, before the new fetch settles — React's recommended \"adjusting state when a prop\n // changes\" pattern (setState during render bails out and re-renders immediately, without the\n // extra commit an effect-based reset would cause). Keying on documentRevision too (not just\n // versionId) matches the sibling useDocumentLastEditedBy hook's full cache key: without it, a\n // revision change on the same version would keep showing the previous history with\n // `loading: false` while the new fetch runs — the same false-settled flash, just triggered by an\n // edit instead of a version switch. A cache hit or the `!versionId` short-circuit in\n // `fetchAndParse` still settles synchronously within the same effect tick, so there's no visible\n // flicker for those.\n const resetKey = `${versionId}-${documentRevision ?? ''}`\n const [prevResetKey, setPrevResetKey] = useState(resetKey)\n if (resetKey !== prevResetKey) {\n setPrevResetKey(resetKey)\n setHistory(null)\n }\n\n const cancelledRef = useRef(false)\n\n const fetchAndParse = useCallback(async (): Promise<void> => {\n if (!versionId) {\n // No document to fetch history for (e.g. a pending / just-added placeholder row passes an\n // undefined id). Settle to an empty history so `loading` reports false instead of hanging\n // true — otherwise the Edited / Edited-by cells keep an endless skeleton on rows that will\n // never resolve a history.\n setHistory([])\n return\n }\n\n const cacheKey = `${releaseDocumentId}-${documentRevision}`\n\n const cached = historyCache[cacheKey]\n if (cached) {\n setHistory(cached.transactions)\n return\n }\n\n await acquireHistorySlot()\n // The run().catch().finally() syntax instead of try/catch/finally is because of the React Compiler not fully supporting the syntax yet\n const run = async () => {\n const transactions = await getTransactionsLogs(client, versionId, {\n tag: 'sanity.studio.releases.documents.history',\n effectFormat: 'mendoza',\n excludeContent: true,\n includeIdentifiedDocumentsOnly: true,\n limit: 1,\n reverse: true,\n })\n\n if (!cancelledRef.current) {\n setHistory(transactions)\n\n historyCache[cacheKey] = {\n transactions,\n }\n }\n }\n await run()\n .catch((error) => {\n console.error('Failed to fetch or parse document history:', error)\n if (!cancelledRef.current) setHistory([])\n })\n .finally(() => {\n releaseHistorySlot()\n })\n }, [versionId, releaseDocumentId, documentRevision, client])\n\n useEffect(() => {\n cancelledRef.current = false\n // oxlint-disable-next-line react/react-compiler\n void fetchAndParse()\n return () => {\n cancelledRef.current = true\n }\n }, [fetchAndParse])\n\n return useMemo(() => {\n const collaborators: string[] = []\n // `null` = not yet fetched → genuinely loading. `[]` = settled with no history (a legitimately\n // empty log, or a failed fetch that set `[]` on line 93) → NOT loading, just nothing to show.\n // Keying `loading` off length would leave those rows on a permanent skeleton.\n if (history === null) {\n return {documentHistory: undefined, collaborators, loading: true}\n }\n if (history.length === 0) {\n return {documentHistory: undefined, collaborators, loading: false}\n }\n\n const aggregated: DocumentHistory = {\n history: [],\n createdBy: '',\n lastEditedBy: '',\n editors: [],\n }\n\n history.forEach((item) => {\n const author = item.author\n if (!collaborators.includes(author)) collaborators.push(author)\n\n if (aggregated.history.length === 0) {\n aggregated.createdBy = author\n }\n\n // @ts-expect-error TransactionLogEventWithEffects has no property 'mutations' but it's returned from the API\n const isCreate = item.mutations?.some((mutation) => 'create' in mutation)\n if (isCreate) aggregated.createdBy = author\n\n if (!aggregated.editors.includes(author)) aggregated.editors.push(author)\n aggregated.lastEditedBy = author\n aggregated.history.push(item)\n })\n\n return {documentHistory: aggregated, collaborators, loading: false}\n }, [history])\n}\n","import {type ReleaseState} from '@sanity/client'\nimport {CheckmarkCircleIcon} from '@sanity/icons/CheckmarkCircle'\nimport {ClockIcon} from '@sanity/icons/Clock'\nimport {ErrorOutlineIcon} from '@sanity/icons/ErrorOutline'\nimport {Badge, Box, Card, Flex, Skeleton, Text} from '@sanity/ui'\nimport {toString as pathToString} from '@sanity/util/paths'\n// oxlint-disable-next-line @sanity/i18n/no-i18next-import -- figure out how to have the linter be fine with importing types-only\nimport {type TFunction} from 'i18next'\nimport {type CSSProperties, memo, useCallback, useEffect, useRef, useState} from 'react'\nimport {IntentLink} from 'sanity/router'\nimport {styled} from 'styled-components'\n\nimport {ToneIcon} from '../../../../../ui-components/toneIcon/ToneIcon'\nimport {Tooltip} from '../../../../../ui-components/tooltip/Tooltip'\nimport {EditedByAvatar} from '../../../../components/documentTable/EditedByCell'\nimport {RelativeTime} from '../../../../components/RelativeTime'\nimport {AvatarSkeleton, UserAvatar} from '../../../../components/userAvatar/UserAvatar'\nimport {useSchema} from '../../../../hooks/useSchema'\nimport {SanityDefaultPreview} from '../../../../preview/components/SanityDefaultPreview'\nimport {RhombusIcon} from '../../../../variants/plugin/components/PersonalizationIcons'\nimport {\n getVariantConditionsText,\n getVariantIdFromDocument,\n getVariantTitle,\n} from '../../../../variants/tool/util'\nimport {type SystemVariant} from '../../../../variants/types'\nimport {getReleaseIdFromReleaseDocumentId} from '../../../util/getReleaseIdFromReleaseDocumentId'\nimport {isGoingToUnpublish} from '../../../util/isGoingToUnpublish'\nimport {getReleaseDocumentIntent} from '../../components/getReleaseDocumentIntent'\nimport {ReleaseDocumentPreview} from '../../components/ReleaseDocumentPreview'\nimport {Headers} from '../../components/Table/TableHeader'\nimport {type Column, type InjectedTableProps} from '../../components/Table/types'\nimport {getDocumentActionType, getReleaseDocumentActionConfig} from '../releaseDocumentActions'\nimport {type BundleDocumentRow} from '../ReleaseSummary'\nimport {type DocumentInRelease} from '../types'\nimport {useReleaseHistory} from './useReleaseHistory'\n\nconst MemoReleaseDocumentPreview = memo(\n function MemoReleaseDocumentPreview({\n item,\n releaseId,\n releaseState,\n documentRevision,\n }: {\n item: DocumentInRelease\n releaseId: string\n releaseState?: ReleaseState\n documentRevision?: string\n }) {\n const isGoingToBePublished = isGoingToUnpublish(item.document)\n const variantId = getVariantIdFromDocument(item.document)\n\n return (\n <ReleaseDocumentPreview\n documentId={item.document._id}\n documentTypeName={item.document._type}\n releaseId={releaseId}\n releaseState={releaseState}\n documentRevision={documentRevision}\n isGoingToBePublished={isGoingToBePublished}\n variantId={variantId}\n />\n )\n },\n (prev, next) => prev.item.memoKey === next.item.memoKey && prev.releaseId === next.releaseId,\n)\n\n// Carries its own overflow CSS because @sanity/ui's `textOverflow` prop is inert here.\nconst TruncatedSpan = styled.span`\n display: block;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n`\n\n/** @internal - exported for unit testing only */\nexport function DocumentType({type}: {type: string}) {\n const schema = useSchema()\n const title = schema.get(type)?.title || 'Not found'\n\n const elementRef = useRef<HTMLSpanElement | null>(null)\n const [isTruncated, setIsTruncated] = useState(false)\n\n const checkTruncation = useCallback(() => {\n const element = elementRef.current\n if (element) setIsTruncated(element.scrollWidth > element.clientWidth)\n }, [])\n\n // A callback ref measures on attach, avoiding the race where a useEffect fires before the\n // ref is populated. The returned cleanup runs when the node detaches.\n const measureRef = useCallback(\n (element: HTMLSpanElement | null) => {\n elementRef.current = element\n if (!element) return undefined\n\n checkTruncation()\n\n const observer = new ResizeObserver(checkTruncation)\n observer.observe(element)\n\n // The late font swap widens the text but not the column-locked box, so the\n // ResizeObserver never fires - re-measure once fonts settle.\n let cancelled = false\n void document.fonts?.ready?.then(() => {\n if (!cancelled) checkTruncation()\n })\n\n return () => {\n cancelled = true\n observer.disconnect()\n elementRef.current = null\n }\n },\n [checkTruncation],\n )\n\n // A title change rewrites the text without resizing the box, so re-measure on title change.\n useEffect(() => {\n checkTruncation()\n }, [title, checkTruncation])\n\n const textElement = (\n <Text size={1}>\n <TruncatedSpan ref={measureRef}>{title}</TruncatedSpan>\n </Text>\n )\n\n if (isTruncated) {\n return (\n <Tooltip portal content={<Text size={1}>{title}</Text>}>\n {textElement}\n </Tooltip>\n )\n }\n\n return textElement\n}\n\nconst MemoDocumentType = memo(DocumentType, (prev, next) => prev.type === next.type)\n\nconst documentActionColumn: (\n t: TFunction<'releases'>,\n variantsEnabled: boolean,\n) => Column<BundleDocumentRow> = (t, variantsEnabled) => ({\n id: 'action',\n width: null,\n style: {minWidth: 100},\n // Sortable only in the beta layout. Production kept a plain, non-sortable header — gating this\n // keeps the non-beta releases table unchanged.\n sorting: variantsEnabled,\n // Sort by the action type (Add / Change / Unpublish) so like actions group together.\n sortTransform: variantsEnabled ? (value) => getDocumentActionType(value) || '' : undefined,\n header: (props) =>\n variantsEnabled ? (\n <Flex {...props.headerProps} paddingY={3} sizing=\"border\">\n <Headers.SortHeaderButton text={t('table-header.action')} {...props} />\n </Flex>\n ) : (\n <Flex {...props.headerProps} paddingY={3} sizing=\"border\">\n <Headers.BasicHeader text={t('table-header.action')} />\n </Flex>\n ),\n cell: ({cellProps, datum}) => {\n const actionBadge = () => {\n const actionType = getDocumentActionType(datum)\n if (!actionType) return null\n\n const documentActionConfig = getReleaseDocumentActionConfig(actionType)\n if (!documentActionConfig) return null\n\n return (\n <Badge\n radius={2}\n tone={documentActionConfig.tone}\n data-testid={`${actionType}-badge-${datum.document._id}`}\n >\n {t(documentActionConfig.labelKey)}\n </Badge>\n )\n }\n\n return (\n <Flex align=\"center\" {...cellProps}>\n <Box paddingX={2}>{actionBadge()}</Box>\n </Flex>\n )\n },\n})\n\n// Purple, matching the perspective bar's variant motif. The perspective bar gets its purple from a\n// `tone=\"suggest\"` Card context (which defines --card-icon-color as the suggest purple); the\n// --card-badge-* vars only exist inside a Badge, so we replicate the Card approach: a transparent\n// suggest-toned wrapper, with the RhombusIcon (stroke=currentColor) picking up --card-icon-color.\nconst VARIANT_ICON_CARD_STYLE: CSSProperties = {backgroundColor: 'transparent'}\nconst VARIANT_ICON_STYLE: CSSProperties = {color: 'var(--card-icon-color)'}\n\n/** Resolves a document's variant definition from its `_system.variant._ref` (full variant id). */\nfunction resolveDocumentVariant(\n document: BundleDocumentRow['document'],\n variantsById: Map<string, SystemVariant>,\n): SystemVariant | undefined {\n const variantRef = (document as {_system?: {variant?: {_ref?: string}}})._system?.variant?._ref\n return variantRef ? variantsById.get(variantRef) : undefined\n}\n\n// Which variant a release document targets: ◆ diamond + the variant title, with the full\n// conditions (\"flags\") on hover. Empty for base (non-variant) documents.\nconst VariantCell = memo(\n function VariantCell({\n document,\n variantsById,\n }: {\n document: BundleDocumentRow['document']\n variantsById: Map<string, SystemVariant>\n }) {\n const variant = resolveDocumentVariant(document, variantsById)\n if (!variant) return null\n\n const conditions = getVariantConditionsText(variant.conditions)\n\n return (\n <Tooltip\n portal\n placement=\"bottom-start\"\n disabled={!conditions}\n content={\n conditions ? (\n <Box padding={2}>\n <Text size={1}>{conditions}</Text>\n </Box>\n ) : undefined\n }\n >\n <Flex align=\"center\" gap={2} style={{minWidth: 0}}>\n <Card tone=\"suggest\" padding={0} style={VARIANT_ICON_CARD_STYLE}>\n <Text size={1} style={VARIANT_ICON_STYLE}>\n <RhombusIcon />\n </Text>\n </Card>\n {/* flex + min-width:0 lets the label shrink below its content width so a long variant name\n truncates with an ellipsis instead of overflowing the column. */}\n <Text size={1} textOverflow=\"ellipsis\" weight=\"medium\" style={{flex: 1, minWidth: 0}}>\n {getVariantTitle(variant)}\n </Text>\n </Flex>\n </Tooltip>\n )\n },\n (prev, next) => prev.document === next.document && prev.variantsById === next.variantsById,\n)\n\nexport const getDocumentTableColumnDefs: (\n releaseId: string,\n releaseState: ReleaseState,\n t: TFunction<'releases'>,\n options?: {\n searchInCommandLane?: boolean\n variantsById?: Map<string, SystemVariant>\n /** True while the variant definitions map is still loading — skeleton the Variant cell instead\n * of rendering a blank that pops in when definitions arrive. */\n variantsLoading?: boolean\n /**\n * Beta (variants) column layout. When false/omitted the column set must match production\n * exactly — these columns feed the non-beta releases-detail table too, so any change here\n * behind the flag-off path would leak into production Releases detail + scheduled drafts.\n */\n variantsEnabled?: boolean\n },\n) => Column<BundleDocumentRow>[] = (releaseId, releaseState, t, options) => {\n // Beta layout gate. Off (production) = the exact column set from before this redesign, since\n // these defs also drive the non-beta releases-detail table.\n const variantsEnabled = Boolean(options?.variantsEnabled)\n const variantsLoading = Boolean(options?.variantsLoading)\n\n return [\n /**\n * Hiding action for archived and published releases of v1.0\n * This will be added once Events API has reverse order lookup supported\n */\n ...(releaseState === 'archived' || releaseState === 'published'\n ? []\n : [documentActionColumn(t, variantsEnabled)]),\n {\n id: 'document._type',\n // Header and body rows are independent flexboxes, so a content-sized column (width: null)\n // settles at different widths in each and misaligns. A fixed width keeps them in sync.\n // Type only ever holds short schema titles (Book / Author / demoBlogPost), and DocumentType\n // truncates + shows a tooltip on overflow, so a tighter width reclaims space for Document.\n // The tighter width is beta-only: production (flag off) must keep its existing 150 so Releases\n // detail and scheduled drafts don't shift layout.\n width: variantsEnabled ? 120 : 150,\n sorting: true,\n header: (props) => (\n <Flex {...props.headerProps} paddingY={3} sizing=\"border\">\n <Headers.SortHeaderButton text={t('table-header.type')} {...props} />\n </Flex>\n ),\n cell: ({cellProps, datum}) => (\n <Flex align=\"center\" {...cellProps}>\n <Box paddingX={2} style={{minWidth: 0}}>\n {!datum.isLoading && <MemoDocumentType type={datum.document._type} />}\n </Box>\n </Flex>\n ),\n },\n // \"Variant\" column — shows which variant each document targets. Only present when the caller\n // passes a resolved variants map (i.e. variants enabled). This is the functional point of the\n // release-detail reconciliation: the inverse of the Variants table's \"Appears in\" column.\n ...(options?.variantsById\n ? [\n {\n id: 'variant',\n width: 180,\n style: {minWidth: 120, maxWidth: 180},\n sorting: true,\n sortTransform(value) {\n const variant = resolveDocumentVariant(value.document, options.variantsById!)\n return variant ? getVariantTitle(variant).toLowerCase() : ''\n },\n header: (props) => (\n <Flex {...props.headerProps} paddingY={3} sizing=\"border\">\n <Headers.SortHeaderButton text={t('table-header.variant')} {...props} />\n </Flex>\n ),\n cell: ({cellProps, datum}) => (\n <Flex align=\"center\" {...cellProps}>\n <Box paddingX={2} style={{minWidth: 0}}>\n {!datum.isLoading &&\n (variantsLoading ? (\n <Skeleton animated radius={1} style={{width: 60, height: 11}} />\n ) : (\n <VariantCell document={datum.document} variantsById={options.variantsById!} />\n ))}\n </Box>\n </Flex>\n ),\n } satisfies Column<BundleDocumentRow>,\n ]\n : []),\n {\n id: 'search',\n width: null,\n // When search lives in the command lane, this column grows to fill (like Variants) so \"Edited\"\n // pins to the right edge; otherwise it holds the header search input at a capped width.\n style: options?.searchInCommandLane\n ? {minWidth: 240}\n : {minWidth: 'min(50%, calc(100vw - 80px))', maxWidth: 'min(50%, calc(100vw - 80px))'},\n sorting: options?.searchInCommandLane ? true : undefined,\n sortTransform(value) {\n return (\n String(\n value.document?.title || value.document?.name || value.document?._id,\n ).toLowerCase() || 0\n )\n },\n header: (props) =>\n options?.searchInCommandLane ? (\n // Search moved to the command lane; the header is a plain sortable \"Document\" label that\n // grows to fill (flex) in both header and body.\n <Flex {...props.headerProps} flex={1} paddingY={3} sizing=\"border\">\n <Headers.SortHeaderButton text={t('table-header.document')} {...props} />\n </Flex>\n ) : (\n <Headers.TableHeaderSearch {...props} placeholder={t('search-documents-placeholder')} />\n ),\n cell: ({cellProps, datum}) => (\n <Box {...cellProps} flex={1} padding={1} paddingRight={2} sizing=\"border\">\n {datum.isPending || datum.isLoading ? (\n <SanityDefaultPreview isPlaceholder />\n ) : (\n <MemoReleaseDocumentPreview\n item={datum}\n releaseId={releaseId}\n releaseState={releaseState}\n documentRevision={datum.document._rev}\n />\n )}\n </Box>\n ),\n },\n // Beta splits authorship into two columns (\"Last edited\" time + \"Edited by\" person). Production\n // (flag off) keeps the single combined \"Edited\" column (time + last-editor avatar) it had before\n // the redesign, so the non-beta releases table is unchanged.\n ...(variantsEnabled\n ? ([\n {\n // \"Last edited\" (relative time) comes BEFORE \"Edited by\" so this text column sits between\n // the document preview's live-presence avatar and the edited-by avatar — otherwise the two\n // round avatars would neighbour across the column boundary and read as one crowded cluster.\n id: 'document._updatedAt',\n sorting: true,\n width: 130,\n header: (props) => (\n <Flex {...props.headerProps} paddingY={3} sizing=\"border\">\n <Headers.SortHeaderButton\n paddingLeft={2}\n text={t('table-header.last-edited')}\n {...props}\n />\n </Flex>\n ),\n cell: ({cellProps, datum}) => (\n <Flex\n {...cellProps}\n align=\"center\"\n paddingX={2}\n paddingY={3}\n style={{minWidth: 130}}\n sizing=\"border\"\n >\n {!datum.isLoading && datum.document._updatedAt && (\n <Text muted size={1}>\n <RelativeTime time={datum.document._updatedAt} useTemporalPhrase minimal />\n </Text>\n )}\n </Flex>\n ),\n },\n {\n // Edited by — the last editor (person), its own named column so authorship reads distinctly\n // from live presence. Plain-text header so it aligns with the avatar at the content edge (a\n // sort button never lands its label on the same edge).\n id: 'editedBy',\n sorting: false,\n width: 170,\n style: {minWidth: 44, maxWidth: 170},\n header: ({headerProps}) => (\n <Flex {...headerProps} align=\"center\" paddingX={2} paddingY={3} sizing=\"border\">\n <Text muted size={1} textOverflow=\"ellipsis\" weight=\"medium\">\n {t('table-header.edited-by')}\n </Text>\n </Flex>\n ),\n cell: (props) => <EditedByReleaseCell {...props} releaseDocumentId={releaseId} />,\n },\n ] satisfies Column<BundleDocumentRow>[])\n : ([\n {\n id: 'document._updatedAt',\n sorting: true,\n width: 130,\n header: (props) => (\n <Flex {...props.headerProps} paddingY={3} sizing=\"border\">\n <Headers.SortHeaderButton text={t('table-header.edited')} {...props} />\n </Flex>\n ),\n cell: (props) => <UpdatedAtCell {...props} releaseDocumentId={releaseId} />,\n },\n ] satisfies Column<BundleDocumentRow>[])),\n\n {\n id: 'validation',\n sorting: false,\n width: 50,\n header: ({headerProps}) => (\n <Flex {...headerProps} paddingY={3} sizing=\"border\">\n <Headers.BasicHeader text={''} />\n </Flex>\n ),\n cell: ({cellProps, datum}) => {\n if (datum.isLoading) return null\n\n const errors = datum.validation.validation.filter(\n (validation) => validation.level === 'error',\n )\n const validationErrorCount = errors.length\n\n // Deep-link to the first field-level error (fall back to the first error). The\n // existing params.path -> field-focus plumbing in DocumentPaneProvider scrolls to\n // and focuses the field when the document opens.\n const firstError = errors.find((error) => error.path.length > 0) ?? errors[0]\n const focusPath = firstError ? pathToString(firstError.path) : undefined\n const intent = getReleaseDocumentIntent({\n documentId: datum.document._id,\n documentTypeName: datum.document._type,\n releaseId,\n releaseState,\n documentRevision: datum.document._rev,\n variantId: getVariantIdFromDocument(datum.document),\n path: focusPath,\n })\n const errorLabel = t(\n validationErrorCount === 1\n ? 'document-validation.error_one'\n : 'document-validation.error_other',\n {count: validationErrorCount},\n )\n\n return (\n // In the command-lane layout only the Document column grows; keep validation fixed at its\n // width (flex:1 here would split the free space with Document and misalign the header/body).\n <Flex\n {...cellProps}\n flex={options?.searchInCommandLane ? undefined : 1}\n padding={1}\n justify=\"center\"\n align=\"center\"\n sizing=\"border\"\n >\n {datum.validation.hasError && (\n <Tooltip\n portal\n placement=\"bottom-end\"\n content={\n <Text muted size={1}>\n <Flex align={'center'} gap={3} padding={1}>\n <ToneIcon icon={ErrorOutlineIcon} tone=\"critical\" />\n {errorLabel}\n </Flex>\n </Text>\n }\n >\n <Text size={1}>\n <IntentLink\n intent=\"edit\"\n params={intent.params}\n searchParams={intent.searchParams}\n aria-label={errorLabel}\n data-testid={`validation-error-link-${datum.document._id}`}\n >\n <ToneIcon icon={ErrorOutlineIcon} tone=\"critical\" />\n </IntentLink>\n </Text>\n </Tooltip>\n )}\n {/* Positive \"ready\" / \"validating\" states are beta-only: production kept an error-only\n column, so gating them here keeps the non-beta releases table unchanged. */}\n {variantsEnabled && datum.validation.isValidating && !datum.validation.hasError && (\n <Tooltip\n portal\n placement=\"bottom-end\"\n content={\n <Text muted size={1}>\n <Box padding={1}>{t('dashboard.details.metadata.status-validating')}</Box>\n </Text>\n }\n >\n <Text muted size={1} data-testid={`validation-validating-${datum.document._id}`}>\n <ToneIcon icon={ClockIcon} tone=\"default\" />\n </Text>\n </Tooltip>\n )}\n {variantsEnabled && !datum.validation.hasError && !datum.validation.isValidating && (\n <Tooltip\n portal\n placement=\"bottom-end\"\n content={\n <Text muted size={1}>\n <Box padding={1}>{t('document-validation.valid')}</Box>\n </Text>\n }\n >\n <Text muted size={1} data-testid={`validation-valid-${datum.document._id}`}>\n <ToneIcon icon={CheckmarkCircleIcon} tone=\"positive\" />\n </Text>\n </Tooltip>\n )}\n </Flex>\n )\n },\n },\n ]\n}\n\n// Production (non-beta) combined \"Edited\" cell: last-editor avatar + relative time in one column.\n// The beta layout splits this into separate \"Last edited\" and \"Edited by\" columns; this restores the\n// pre-redesign single column for the flag-off releases table.\nfunction UpdatedAtCell({\n cellProps,\n datum,\n releaseDocumentId,\n}: {\n cellProps: InjectedTableProps\n datum: BundleDocumentRow & {isLoading?: boolean}\n releaseDocumentId: string\n}) {\n const {document, isLoading} = datum\n const bundleId = getReleaseIdFromReleaseDocumentId(releaseDocumentId)\n const historyDocumentId =\n datum.isPending || document?._id?.endsWith('-pending') ? undefined : document?._id\n const {documentHistory, loading} = useReleaseHistory(historyDocumentId, bundleId, document?._rev)\n\n return (\n <Flex\n {...cellProps}\n align=\"center\"\n paddingX={2}\n paddingY={3}\n style={{minWidth: 130}}\n sizing=\"border\"\n >\n <Flex align=\"center\" gap={2}>\n {/* Skeleton only while the history is actually loading — NOT whenever there is no editor.\n A settled-but-empty or failed history has loading:false and no lastEditedBy, and must\n render just the timestamp (or nothing) rather than an endless skeleton. */}\n {(isLoading || loading) && <AvatarSkeleton $size={0} animated />}\n {!isLoading && document._updatedAt && (\n <>\n {documentHistory?.lastEditedBy && (\n <UserAvatar size={0} user={documentHistory.lastEditedBy} />\n )}\n <Text muted size={1}>\n <RelativeTime time={document._updatedAt} useTemporalPhrase minimal />\n </Text>\n </>\n )}\n </Flex>\n </Flex>\n )\n}\n\n// \"Edited by\" cell: the last editor's avatar + name, resolved from the release document history.\n// Shares the EditedByAvatar presentation with the variant table so both read the same; presence\n// (who's viewing now) stays separate in the document preview.\nfunction EditedByReleaseCell({\n cellProps,\n datum,\n releaseDocumentId,\n}: {\n cellProps: InjectedTableProps\n datum: BundleDocumentRow & {isLoading?: boolean}\n releaseDocumentId: string\n}) {\n const {document, isLoading} = datum\n const bundleId = getReleaseIdFromReleaseDocumentId(releaseDocumentId)\n const historyDocumentId =\n datum.isPending || document?._id?.endsWith('-pending') ? undefined : document?._id\n const {documentHistory, loading} = useReleaseHistory(historyDocumentId, bundleId, document?._rev)\n\n return (\n <Flex {...cellProps} align=\"center\" paddingX={2} paddingY={3} sizing=\"border\">\n <EditedByAvatar loading={isLoading || loading} userId={documentHistory?.lastEditedBy} />\n </Flex>\n )\n}\n","import {type ReleaseDocument, type SanityDocument} from '@sanity/client'\nimport {AddIcon} from '@sanity/icons/Add'\nimport {useTelemetry} from '@sanity/telemetry/react'\nimport {Card, Container, Flex, Stack, Text, useToast} from '@sanity/ui'\nimport {type CSSProperties, useCallback, useEffect, useMemo, useState} from 'react'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {useWorkspace} from '../../../studio/workspace'\nimport {getVersionId} from '../../../util/draftUtils'\nimport {getDocumentVariantType} from '../../../util/getDocumentVariantType'\nimport {isCardinalityOneRelease} from '../../../util/releaseUtils'\nimport {useAllVariants} from '../../../variants/store/useAllVariants'\nimport {AddedVersion} from '../../__telemetry__/releases.telemetry'\nimport {releasesLocaleNamespace} from '../../i18n'\nimport {useReleaseOperations} from '../../store/useReleaseOperations'\nimport {getReleaseIdFromReleaseDocumentId} from '../../util/getReleaseIdFromReleaseDocumentId'\nimport {DocumentTable} from '../components/Table/DocumentTable'\nimport {Table} from '../components/Table/Table'\nimport {AddDocumentSearch, type AddedDocument} from './AddDocumentSearch'\nimport {ReleaseDocumentFilterTabs} from './components/ReleaseDocumentFilterTabs'\nimport {DocumentActions} from './documentTable/DocumentActions'\nimport {getDocumentTableColumnDefs} from './documentTable/DocumentTableColumnDefs'\nimport {searchDocumentRelease} from './documentTable/searchDocumentRelease'\nimport {type DocumentFilterType, documentMatchesFilter} from './releaseDocumentActions'\nimport {type DocumentInRelease} from './types'\n\nexport type DocumentInReleaseDetail = DocumentInRelease & {\n // TODO: Get this value from the document, it can be calculated by checking if there is a corresponding document with no version attached\n isAdded?: boolean\n}\nexport type BundleDocumentRow = DocumentInReleaseDetail\n\nexport interface ReleaseSummaryProps {\n documents: DocumentInRelease[]\n release: ReleaseDocument\n isLoading?: boolean\n}\n\nconst FULL_HEIGHT_STYLE: CSSProperties = {height: '100%'}\n\nconst SCROLL_CONTAINER_STYLE: CSSProperties = {\n overflow: 'auto',\n scrollbarWidth: 'none',\n msOverflowStyle: 'none',\n}\n\nconst FIT_CONTENT_STYLE: CSSProperties = {minWidth: 'fit-content', height: '100%'}\n\nconst isBundleDocumentRow = (\n maybeBundleDocumentRow: unknown,\n): maybeBundleDocumentRow is BundleDocumentRow =>\n !!maybeBundleDocumentRow &&\n typeof maybeBundleDocumentRow === 'object' &&\n 'memoKey' in maybeBundleDocumentRow &&\n 'document' in maybeBundleDocumentRow &&\n 'validation' in maybeBundleDocumentRow\n\nexport function ReleaseSummary(props: ReleaseSummaryProps) {\n const {documents, isLoading = false, release} = props\n const [scrollContainerRef, setScrollContainerRef] = useState<HTMLDivElement | null>(null)\n const toast = useToast()\n const {createVersion} = useReleaseOperations()\n const telemetry = useTelemetry()\n\n const [openAddDocumentDialog, setAddDocumentDialog] = useState(false)\n const [pendingAddedDocument, setPendingAddedDocument] = useState<BundleDocumentRow[]>([])\n const [activeFilter, setActiveFilter] = useState<DocumentFilterType>('all')\n\n const {t} = useTranslation(releasesLocaleNamespace)\n\n // Behind beta.variants: adopt the shared three-zone DocumentTable (command-lane search + filter\n // tabs). Otherwise keep the current table (search in the column header). No user-facing change to\n // production Releases until the flag is on.\n const {beta} = useWorkspace()\n const variantsEnabled = Boolean(beta?.variants?.enabled)\n // Resolves each document's variant (via `_system.variant._ref`) to its definition for the\n // \"Variant\" column. Provider-free + cached; returns empty when variants are disabled.\n const {byId: variantsById, loading: variantsLoading} = useAllVariants()\n\n const releaseId = getReleaseIdFromReleaseDocumentId(release._id)\n\n const renderRowActions = useCallback(\n (rowProps: {datum: BundleDocumentRow | unknown}) => {\n if (release.state !== 'active') return null\n if (!isBundleDocumentRow(rowProps.datum)) return null\n if (rowProps.datum.isPending) return null\n\n return <DocumentActions document={rowProps.datum} releaseTitle={release.metadata.title} />\n },\n [release.metadata.title, release.state],\n )\n\n const documentTableColumnDefs = useMemo(\n () =>\n getDocumentTableColumnDefs(release._id, release.state, t, {\n searchInCommandLane: variantsEnabled,\n variantsById: variantsEnabled ? variantsById : undefined,\n variantsLoading: variantsEnabled ? variantsLoading : false,\n variantsEnabled,\n }),\n [release._id, release.state, t, variantsEnabled, variantsById, variantsLoading],\n )\n\n const handleAddDocumentClick = useCallback(() => setAddDocumentDialog(true), [])\n\n const filterRows = useCallback(\n (data: DocumentInRelease[], searchTerm: string) => {\n // this is a temporary way of doing the search without the previews\n // until we have it moved to the server side\n return data.filter((doc) => {\n const matchesSearch = searchTerm ? searchDocumentRelease(doc.document, searchTerm) : true\n return matchesSearch && documentMatchesFilter(doc, activeFilter)\n })\n },\n [activeFilter],\n )\n\n const closeAddDialog = useCallback(\n async (documentToAdd?: AddedDocument) => {\n setAddDocumentDialog(false)\n if (!documentToAdd) return\n\n const versionDocumentId = getVersionId(documentToAdd._id, releaseId)\n const pendingAddedDocumentId = `${versionDocumentId}-pending`\n\n const pendingDocumentRow: DocumentInReleaseDetail = {\n memoKey: versionDocumentId,\n validation: {\n isValidating: false,\n validation: [],\n hasError: false,\n },\n document: {\n ...(documentToAdd as SanityDocument),\n _id: pendingAddedDocumentId,\n publishedDocumentExists: false,\n },\n isPending: true,\n }\n\n setPendingAddedDocument((prev) => [...prev, pendingDocumentRow])\n\n try {\n await createVersion(releaseId, documentToAdd._id)\n\n const origin = getDocumentVariantType(documentToAdd._id)\n\n telemetry.log(AddedVersion, {\n documentOrigin: origin,\n })\n } catch (error) {\n setPendingAddedDocument((prev) =>\n prev.filter(({document}) => document._id !== pendingAddedDocumentId),\n )\n\n toast.push({\n id: `add-version-to-release-${versionDocumentId}`,\n closable: true,\n status: 'error',\n title: t('toast.create-version.error', {error: error.message}),\n })\n }\n },\n [createVersion, releaseId, t, telemetry, toast],\n )\n\n useEffect(() => {\n const documentsNoLongerPending: string[] = []\n\n pendingAddedDocument?.forEach((pendingDocument) => {\n // once pending added document has been received by bundle store\n if (\n documents.find(({document}) => `${document._id}-pending` === pendingDocument.document._id)\n ) {\n documentsNoLongerPending.push(pendingDocument.document._id)\n }\n })\n\n if (documentsNoLongerPending.length)\n // cleanup all resolved added documents\n // oxlint-disable-next-line react/react-compiler\n setPendingAddedDocument((prev) =>\n prev.filter(({document}) => !documentsNoLongerPending.includes(document._id)),\n )\n }, [documents, pendingAddedDocument, t, toast])\n\n const tableData = useMemo(\n () => (pendingAddedDocument.length ? [...documents, ...pendingAddedDocument] : documents),\n [documents, pendingAddedDocument],\n )\n\n // In the DocumentTable (variants-enabled) shape, free-text search is owned by the table; the\n // caller pre-filters by the active tab and passes those rows in.\n const filterTabRows = useMemo(\n () => tableData.filter((doc) => documentMatchesFilter(doc, activeFilter)),\n [tableData, activeFilter],\n )\n\n const isCardinalityOne = isCardinalityOneRelease(release)\n const hasNoDocuments = !isLoading && documents.length === 0\n\n if (isCardinalityOne && hasNoDocuments) {\n return (\n <Flex\n direction=\"column\"\n align=\"center\"\n justify=\"center\"\n padding={5}\n style={FULL_HEIGHT_STYLE}\n data-testid=\"cardinality-one-empty-state\"\n >\n <Stack gap={3} style={{textAlign: 'center', maxWidth: '300px'}}>\n <Text size={1} weight=\"semibold\">\n {t('summary.no-documents-cardinality-one.title')}\n </Text>\n <Text size={1} muted>\n {t('summary.no-documents-cardinality-one.description')}\n </Text>\n </Stack>\n </Flex>\n )\n }\n\n // Old (non-variant) path: Add-document lives at the end of the list.\n const addDocumentFooter = release.state === 'active' && (\n <Container width={3}>\n <Card padding={3}>\n <Button\n icon={AddIcon}\n disabled={isLoading}\n mode=\"bleed\"\n onClick={handleAddDocumentClick}\n text={t('action.add-document')}\n />\n </Card>\n </Container>\n )\n\n // New (DocumentTable) path: one action lane. Activity + Share (icons) sit alongside Add document\n // (the labeled primary), so every \"do something\" control lives together at the right of the lane\n // instead of being scattered into the header.\n const addDocumentButton = release.state === 'active' && (\n <Button\n disabled={isLoading}\n icon={AddIcon}\n mode=\"ghost\"\n onClick={handleAddDocumentClick}\n text={t('action.add-document')}\n />\n )\n // The command lane hosts table operations only (Add document + search). Release-level actions\n // (Copy, Activity) live in the always-rendered header so they stay reachable when the table is\n // loading, errored, or an empty cardinality-one release and this lane is not mounted.\n const commandLaneActions = addDocumentButton || undefined\n\n // ReleaseDocumentFilterTabs renders nothing for archived/published releases or an empty\n // (non-loading) document set. Passing the element unconditionally would still read as \"tabs\n // present\" to DocumentTable, pinning search to a fixed width and stranding an empty left gutter.\n // Gate it here so the table falls back to a full-width search lane when there are no tabs to show.\n const showFilterTabs =\n release.state !== 'archived' &&\n release.state !== 'published' &&\n (isLoading || tableData.length > 0)\n\n return (\n <Flex direction=\"column\" style={FULL_HEIGHT_STYLE}>\n {variantsEnabled ? (\n <DocumentTable<DocumentInReleaseDetail>\n alwaysShowCommandLane\n columnDefs={documentTableColumnDefs}\n defaultSort={{column: 'search', direction: 'asc'}}\n emptyState={t('summary.no-documents')}\n commandLaneActions={commandLaneActions}\n filterTabs={\n showFilterTabs ? (\n <ReleaseDocumentFilterTabs\n activeFilter={activeFilter}\n documents={tableData}\n inline\n isLoading={isLoading}\n onFilterChange={setActiveFilter}\n releaseState={release.state}\n />\n ) : undefined\n }\n getRowKey={(row) => row.document._id}\n id=\"document-table-card\"\n loading={isLoading}\n rowActions={renderRowActions}\n rows={filterTabRows}\n // oxlint-disable-next-line @sanity/i18n/no-attribute-string-literals\n rowId=\"document._id\"\n searchPlaceholder={t('search-documents-placeholder')}\n searchPredicate={(row, searchTerm) => searchDocumentRelease(row.document, searchTerm)}\n searchTestId=\"release-documents-search\"\n />\n ) : (\n <>\n <ReleaseDocumentFilterTabs\n documents={tableData}\n releaseState={release.state}\n isLoading={isLoading}\n activeFilter={activeFilter}\n onFilterChange={setActiveFilter}\n />\n <Card\n ref={setScrollContainerRef}\n data-testid=\"document-table-card\"\n flex={1}\n borderTop\n style={SCROLL_CONTAINER_STYLE}\n >\n <div style={FIT_CONTENT_STYLE}>\n <Table<DocumentInReleaseDetail>\n loading={isLoading}\n data={tableData}\n emptyState={t('summary.no-documents')}\n // oxlint-disable-next-line @sanity/i18n/no-attribute-string-literals\n rowId=\"document._id\"\n columnDefs={documentTableColumnDefs}\n rowActions={renderRowActions}\n searchFilter={filterRows}\n scrollContainerRef={scrollContainerRef}\n defaultSort={{column: 'search', direction: 'asc'}}\n />\n </div>\n </Card>\n {addDocumentFooter}\n </>\n )}\n <AddDocumentSearch\n open={openAddDocumentDialog}\n onClose={closeAddDialog}\n releaseId={releaseId}\n idsInRelease={documents.map(({document}) => document._id)}\n />\n </Flex>\n )\n}\n","import {ErrorOutlineIcon} from '@sanity/icons/ErrorOutline'\nimport {Box, Card, Flex, Stack, Text} from '@sanity/ui'\nimport {motion} from 'motion/react'\nimport {useEffect, useMemo, useState} from 'react'\nimport {useRouter} from 'sanity/router'\n\nimport {LoadingBlock} from '../../../components/loadingBlock/LoadingBlock'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {useWorkspace} from '../../../studio/workspace'\nimport {releasesLocaleNamespace} from '../../i18n'\nimport {useActiveReleases} from '../../store/useActiveReleases'\nimport {useArchivedReleases} from '../../store/useArchivedReleases'\nimport {type ReleasesRouterState} from '../../types/router'\nimport {getReleaseIdFromReleaseDocumentId} from '../../util/getReleaseIdFromReleaseDocumentId'\nimport {RELEASE_NOT_FOUND_SEARCH_PARAM_KEY} from '../overview/queryParamUtils'\nimport {useReleaseEvents} from './events/useReleaseEvents'\nimport {ReleaseDashboardActivityPanel} from './ReleaseDashboardActivityPanel'\nimport {ReleaseDashboardDetails} from './ReleaseDashboardDetails'\nimport {ReleaseDashboardFooter} from './ReleaseDashboardFooter'\nimport {ReleaseDashboardHeader} from './ReleaseDashboardHeader'\nimport {ReleaseSummary} from './ReleaseSummary'\nimport {useReleaseDocuments} from './useReleaseDocuments'\n\nexport type ReleaseInspector = 'activity'\nconst MotionCard = motion.create(Card)\n\nexport function ReleaseDetail() {\n const router = useRouter()\n const [inspector, setInspector] = useState<ReleaseInspector | undefined>(undefined)\n const {t} = useTranslation(releasesLocaleNamespace)\n // Behind beta.variants the action cluster moves to the top rail and the footer is dropped.\n const variantsEnabled = Boolean(useWorkspace().beta?.variants?.enabled)\n const {releaseId: releaseIdRaw}: ReleasesRouterState = router.state\n const releaseId = decodeURIComponent(releaseIdRaw || '')\n const {data, loading} = useActiveReleases()\n const {data: archivedReleases} = useArchivedReleases()\n\n const {\n loading: documentsLoading,\n results,\n error: bundleDocumentsError,\n } = useReleaseDocuments(releaseId)\n const releaseEvents = useReleaseEvents(releaseId)\n\n const releaseInDetail = data\n .concat(archivedReleases)\n .find((candidate) => getReleaseIdFromReleaseDocumentId(candidate._id) === releaseId)\n\n const isNotFound = !loading && !releaseInDetail\n\n useEffect(() => {\n if (isNotFound) {\n router.navigate(\n {\n _searchParams: [[RELEASE_NOT_FOUND_SEARCH_PARAM_KEY, 'true']],\n },\n {replace: true},\n )\n }\n }, [isNotFound, router])\n\n const detailContent = useMemo(() => {\n if (bundleDocumentsError) {\n return (\n <Box padding={3}>\n <MotionCard\n initial={{opacity: 0}}\n animate={{opacity: 1}}\n tone=\"critical\"\n padding={4}\n radius={4}\n >\n <Flex gap={3}>\n <Text size={1}>\n <ErrorOutlineIcon />\n </Text>\n <Stack gap={4}>\n <Text size={1} weight=\"semibold\">\n {t('loading-release-documents.error.title')}\n </Text>\n <Text size={1}>{t('loading-release-documents.error.description')}</Text>\n </Stack>\n </Flex>\n </MotionCard>\n </Box>\n )\n }\n if (!releaseInDetail) return null\n\n return (\n <ReleaseSummary isLoading={documentsLoading} documents={results} release={releaseInDetail} />\n )\n }, [bundleDocumentsError, documentsLoading, releaseInDetail, results, t])\n\n if (loading) {\n return (\n <LoadingBlock\n title={t('loading-release')}\n fill\n data-testid=\"release-documents-table-loader\"\n />\n )\n }\n\n if (releaseInDetail) {\n return (\n // position:relative anchors the beta activity overlay to the whole detail pane, so the\n // right-anchored drawer covers the top action rail (Run release + menu) too — not just the\n // content below it.\n <Flex\n direction=\"column\"\n flex={1}\n height=\"fill\"\n overflow=\"hidden\"\n style={{position: 'relative'}}\n >\n <Card flex=\"none\">\n <ReleaseDashboardHeader\n documents={results}\n release={releaseInDetail}\n inspector={inspector}\n setInspector={setInspector}\n />\n </Card>\n\n <Flex flex={1}>\n <Flex direction=\"column\" flex={1} height=\"fill\">\n <Card flex={1} overflow=\"auto\">\n <ReleaseDashboardDetails\n release={releaseInDetail}\n documents={results}\n events={releaseEvents.events}\n loading={documentsLoading}\n />\n {detailContent}\n </Card>\n\n {/* In beta the footer's action cluster moved to the top rail and its Created status\n moved into the properties panel, so the footer is dropped entirely. */}\n {!variantsEnabled && (\n <ReleaseDashboardFooter\n documents={results}\n release={releaseInDetail}\n events={releaseEvents.events}\n />\n )}\n </Flex>\n\n {/* Production: activity is an in-flow panel that pushes the content column aside. */}\n {!variantsEnabled && (\n <ReleaseDashboardActivityPanel\n events={releaseEvents}\n release={releaseInDetail}\n show={inspector === 'activity'}\n />\n )}\n </Flex>\n\n {/* Beta: activity floats as a right-anchored drawer over the entire pane (covering the\n rail), rather than pushing the layout. */}\n {variantsEnabled && (\n <ReleaseDashboardActivityPanel\n events={releaseEvents}\n release={releaseInDetail}\n show={inspector === 'activity'}\n overlay\n onClose={() => setInspector(undefined)}\n />\n )}\n </Flex>\n )\n }\n\n return null\n}\n","import {useEffect} from 'react'\n\nimport {useReleasesMetadataProvider} from '../contexts/ReleasesMetadataProvider'\n\nexport interface ReleasesMetadata {\n /**\n * The number of documents with the release version as a prefix\n */\n documentCount: number\n /**\n * The last time a document in the release was edited\n */\n updatedAt: string | null\n}\n\nexport const useReleasesMetadata = (releaseIds: string[]) => {\n const {\n addReleaseIdsToListener: addBundleIdsToListener,\n removeReleaseIdsFromListener: removeBundleIdsFromListener,\n state,\n } = useReleasesMetadataProvider()\n\n useEffect(() => {\n if (releaseIds.length) addBundleIdsToListener([...new Set(releaseIds)])\n\n return () => removeBundleIdsFromListener([...new Set(releaseIds)])\n }, [addBundleIdsToListener, releaseIds, removeBundleIdsFromListener])\n\n const {data, loading} = state\n\n let responseData = null\n\n if (data) {\n const hasUpdatedMetadata =\n !responseData || Object.entries(responseData).some(([key, value]) => value !== data[key])\n\n if (hasUpdatedMetadata) {\n responseData = Object.fromEntries(releaseIds.map((releaseId) => [releaseId, data[releaseId]]))\n }\n }\n\n return {\n error: state.error,\n // loading is only for initial load\n // changing listened to release IDs will not cause a re-load\n loading,\n data: responseData,\n }\n}\n","import {FilterIcon} from '@sanity/icons/Filter'\n// oxlint-disable-next-line no-restricted-imports\nimport {Button, useClickOutsideEvent} from '@sanity/ui'\nimport {type ReactNode, useRef, useState} from 'react'\n\nimport {Dialog} from '../../../../ui-components/dialog/Dialog'\nimport {Popover} from '../../../../ui-components/popover/Popover'\nimport {Tooltip} from '../../../../ui-components/tooltip/Tooltip'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {releasesLocaleNamespace} from '../../i18n'\n\nexport function CalendarPopover({content, asDialog}: {content: ReactNode; asDialog?: boolean}) {\n const buttonRef = useRef<HTMLButtonElement | null>(null)\n const popoverRef = useRef<HTMLDivElement | null>(null)\n const [isCalendarOpen, setIsCalendarOpen] = useState(false)\n const {t} = useTranslation(releasesLocaleNamespace)\n\n useClickOutsideEvent(\n () => {\n if (!asDialog) setIsCalendarOpen(false)\n },\n () => [buttonRef.current, popoverRef.current],\n )\n\n const triggerButton = (\n <Tooltip content={t('overview.calendar.tooltip')}>\n <Button\n name=\"calendar\"\n data-as=\"a\"\n icon={FilterIcon}\n mode=\"bleed\"\n padding={2}\n radius=\"full\"\n selected={isCalendarOpen}\n onClick={() => setIsCalendarOpen((prev) => !prev)}\n ref={buttonRef}\n gap={2}\n />\n </Tooltip>\n )\n\n if (asDialog) {\n return (\n <>\n {triggerButton}\n {isCalendarOpen && (\n <Dialog\n id=\"calendar-filter-dialog\"\n header={t('overview.calendar.tooltip')}\n onClose={() => setIsCalendarOpen(false)}\n onClickOutside={() => setIsCalendarOpen(false)}\n width={1}\n padding={false}\n >\n {content}\n </Dialog>\n )}\n </>\n )\n }\n\n return (\n <Popover content={content} placement=\"bottom\" open={isCalendarOpen} ref={popoverRef}>\n {triggerButton}\n </Popover>\n )\n}\n","import {type ReleaseDocument} from '@sanity/client'\nimport {CalendarIcon} from '@sanity/icons/Calendar'\nimport {ChevronDownIcon} from '@sanity/icons/ChevronDown'\nimport {useTelemetry} from '@sanity/telemetry/react'\nimport {Flex, Menu, Text} from '@sanity/ui'\nimport {useCallback, useMemo} from 'react'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {MenuButton} from '../../../../ui-components/menuButton/MenuButton'\nimport {MenuItem} from '../../../../ui-components/menuItem/MenuItem'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {isCardinalityOneRelease} from '../../../util/releaseUtils'\nimport {\n NavigatedToReleasesOverview,\n NavigatedToScheduledDrafts,\n} from '../../__telemetry__/navigation.telemetry'\nimport {releasesLocaleNamespace} from '../../i18n'\nimport {type CardinalityView} from './queryParamUtils'\n\ninterface CardinalityViewPickerProps {\n cardinalityView: CardinalityView\n loading: boolean\n isScheduledDraftsEnabled: boolean\n isDraftModelEnabled: boolean\n isReleasesEnabled: boolean\n allReleases: ReleaseDocument[]\n onCardinalityViewChange: (view: CardinalityView) => () => void\n}\n\nconst getPickerView = ({\n hasSingleDocRelease,\n isScheduledDraftsEnabled,\n isReleasesEnabled,\n cardinalityView,\n isDraftModelEnabled,\n}: {\n hasSingleDocRelease: boolean\n isScheduledDraftsEnabled: boolean\n isReleasesEnabled: boolean\n cardinalityView: CardinalityView\n isDraftModelEnabled: boolean\n}): 'contentReleases' | 'singleDocReleases' | 'both' => {\n if (isReleasesEnabled) {\n if (hasSingleDocRelease || (isScheduledDraftsEnabled && isDraftModelEnabled)) return 'both'\n return cardinalityView === 'drafts' ? 'both' : 'contentReleases'\n }\n\n return cardinalityView === 'releases' ? 'both' : 'singleDocReleases'\n}\n\nexport const CardinalityViewPicker = ({\n cardinalityView,\n loading,\n isScheduledDraftsEnabled,\n isReleasesEnabled,\n isDraftModelEnabled,\n allReleases,\n onCardinalityViewChange,\n}: CardinalityViewPickerProps) => {\n const {t} = useTranslation(releasesLocaleNamespace)\n const telemetry = useTelemetry()\n\n const hasSingleDocRelease = useMemo(\n () => allReleases.some(isCardinalityOneRelease),\n [allReleases],\n )\n\n const pickerView = getPickerView({\n hasSingleDocRelease,\n isScheduledDraftsEnabled,\n isReleasesEnabled,\n cardinalityView,\n isDraftModelEnabled,\n })\n\n const handleViewChange = useCallback(\n (view: CardinalityView) => () => {\n const telemetryEvent =\n view === 'releases' ? NavigatedToReleasesOverview : NavigatedToScheduledDrafts\n telemetry.log(telemetryEvent, {source: 'view-picker'})\n\n onCardinalityViewChange(view)()\n },\n [telemetry, onCardinalityViewChange],\n )\n\n // If only one is enabled, show the label\n if (pickerView === 'contentReleases' || pickerView === 'singleDocReleases') {\n return (\n <Flex align=\"center\" gap={2}>\n <CalendarIcon />\n <Text size={1} weight=\"semibold\">\n {pickerView === 'contentReleases' ? t('action.releases') : t('action.drafts')}\n </Text>\n </Flex>\n )\n }\n\n // If both are enabled, show the menu button\n return (\n <MenuButton\n id=\"cardinality-view-menu\"\n button={\n <Button\n mode=\"bleed\"\n paddingY={2}\n text={cardinalityView === 'releases' ? t('action.releases') : t('action.drafts')}\n icon={CalendarIcon}\n iconRight={ChevronDownIcon}\n disabled={loading}\n style={{fontWeight: 600}}\n />\n }\n menu={\n <Menu>\n <MenuItem\n text={t('action.releases')}\n selected={cardinalityView === 'releases'}\n onClick={handleViewChange('releases')}\n />\n <MenuItem\n text={t('action.drafts')}\n selected={cardinalityView === 'drafts'}\n onClick={handleViewChange('drafts')}\n />\n </Menu>\n }\n />\n )\n}\n","import {type ReleaseDocument, type ScheduleReleaseAction} from '@sanity/client'\nimport {Stack, Text, useToast} from '@sanity/ui'\nimport {isPast} from 'date-fns/isPast'\nimport {useCallback, useMemo, useState} from 'react'\n\nimport {Dialog} from '../../../../ui-components/dialog/Dialog'\nimport {useClient} from '../../../hooks/useClient'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {releasesLocaleNamespace} from '../../i18n'\nimport {getReleaseIdFromReleaseDocumentId} from '../../util/getReleaseIdFromReleaseDocumentId'\nimport {RELEASES_STUDIO_CLIENT_OPTIONS} from '../../util/releasesClient'\n\ninterface ConfirmScheduledDraftsDialogProps {\n activeScheduledDrafts: ReleaseDocument[]\n onClose: () => void\n}\n\n/**\n * Batches all schedule actions into a single server action\n */\nfunction useScheduleActiveDrafts() {\n const client = useClient(RELEASES_STUDIO_CLIENT_OPTIONS)\n\n const scheduleActiveDrafts = useCallback(\n async (releases: ReleaseDocument[]) => {\n const scheduleActions: ScheduleReleaseAction[] = releases.flatMap((release) => {\n if (!release.metadata.intendedPublishAt) return []\n\n return [\n {\n actionType: 'sanity.action.release.schedule',\n releaseId: getReleaseIdFromReleaseDocumentId(release._id),\n publishAt: new Date(release.metadata.intendedPublishAt).toISOString(),\n },\n ]\n })\n\n await client.action(scheduleActions)\n },\n [client],\n )\n\n return {scheduleActiveDrafts}\n}\n\nexport function ConfirmScheduledDraftsDialog({\n activeScheduledDrafts,\n onClose,\n}: ConfirmScheduledDraftsDialogProps) {\n const {t} = useTranslation(releasesLocaleNamespace)\n const toast = useToast()\n const {scheduleActiveDrafts} = useScheduleActiveDrafts()\n const [isScheduling, setIsScheduling] = useState(false)\n\n const hasPastDates = useMemo(\n () =>\n activeScheduledDrafts.some(\n (release) =>\n release.metadata.intendedPublishAt &&\n isPast(new Date(release.metadata.intendedPublishAt)),\n ),\n [activeScheduledDrafts],\n )\n\n const handleConfirmSchedules = useCallback(async () => {\n setIsScheduling(true)\n\n try {\n await scheduleActiveDrafts(activeScheduledDrafts)\n onClose()\n } catch (error) {\n toast.push({\n status: 'error',\n title: t('toast.confirm-active-scheduled-drafts.error', {error: error.message}),\n })\n }\n setIsScheduling(false)\n }, [activeScheduledDrafts, scheduleActiveDrafts, onClose, toast, t])\n\n return (\n <Dialog\n id=\"confirm-active-scheduled-drafts-dialog\"\n header={t('confirm-active-scheduled-drafts-dialog.title')}\n onClose={onClose}\n width={0}\n footer={{\n confirmButton: {\n text: t('confirm-active-scheduled-drafts-dialog.confirm-button'),\n tone: 'primary',\n onClick: handleConfirmSchedules,\n loading: isScheduling,\n disabled: isScheduling,\n },\n }}\n >\n <Stack gap={3}>\n <Text size={1} muted>\n {t('confirm-active-scheduled-drafts-dialog.description')}\n </Text>\n {hasPastDates && (\n <Text size={1} muted>\n {t('confirm-active-scheduled-drafts-dialog.past-dates-warning')}\n </Text>\n )}\n </Stack>\n </Dialog>\n )\n}\n","import {type ReleaseDocument} from '@sanity/client'\nimport {WarningOutlineIcon} from '@sanity/icons/WarningOutline'\nimport {Box, Card, Flex, Text} from '@sanity/ui'\nimport {useCallback, useMemo, useState} from 'react'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {Translate} from '../../../i18n/Translate'\nimport {isCardinalityOneRelease} from '../../../util/releaseUtils'\nimport {releasesLocaleNamespace} from '../../i18n'\nimport {ConfirmScheduledDraftsDialog} from './ConfirmScheduledDraftsDialog'\nimport {type Mode} from './queryParamUtils'\n\ninterface ConfirmActiveScheduledDraftsBannerProps {\n releases: ReleaseDocument[]\n releaseGroupMode: Mode\n hasDateFilter: boolean\n onNavigateToPaused: () => void\n}\n\n/**\n * Active drafts are those with state='active' and cardinality='one'\n */\nexport function ConfirmActiveScheduledDraftsBanner({\n releases,\n releaseGroupMode,\n hasDateFilter,\n onNavigateToPaused,\n}: ConfirmActiveScheduledDraftsBannerProps) {\n const {t} = useTranslation(releasesLocaleNamespace)\n const [isDialogOpen, setIsDialogOpen] = useState(false)\n\n const activeScheduledDrafts = useMemo(\n () =>\n releases.filter((release) => release.state === 'active' && isCardinalityOneRelease(release)),\n [releases],\n )\n\n const shouldOpenDialog = releaseGroupMode === 'paused' && !hasDateFilter\n\n const handleCloseDialog = useCallback(() => {\n setIsDialogOpen(false)\n }, [])\n\n const handleClick = useCallback(\n () => (shouldOpenDialog ? setIsDialogOpen(true) : onNavigateToPaused()),\n [shouldOpenDialog, onNavigateToPaused],\n )\n\n if (activeScheduledDrafts.length === 0) {\n return null\n }\n\n const buttonText = shouldOpenDialog\n ? t('banner.confirm-active-scheduled-drafts.button-paused')\n : t('banner.confirm-active-scheduled-drafts.button')\n\n return (\n <>\n <Box flex=\"none\" padding={1} marginBottom={4}>\n <Card radius={3} paddingX={2} paddingY={2} tone=\"caution\">\n <Flex align=\"center\" gap={3} paddingX={2}>\n <Text size={0}>\n <WarningOutlineIcon />\n </Text>\n <Flex align=\"center\" flex={1} gap={2} paddingY={2}>\n <Text size={1} weight=\"medium\">\n <Translate\n t={t}\n i18nKey=\"banner.confirm-active-scheduled-drafts\"\n values={{count: activeScheduledDrafts.length}}\n />\n </Text>\n </Flex>\n <Flex flex=\"none\">\n <Button text={buttonText} mode=\"bleed\" tone=\"caution\" onClick={handleClick} />\n </Flex>\n </Flex>\n </Card>\n </Box>\n\n {isDialogOpen && (\n <ConfirmScheduledDraftsDialog\n activeScheduledDrafts={activeScheduledDrafts}\n onClose={handleCloseDialog}\n />\n )}\n </>\n )\n}\n","import {type ReleaseDocument} from '@sanity/client'\nimport {WarningOutlineIcon} from '@sanity/icons/WarningOutline'\nimport {Box, Card, Flex, Text} from '@sanity/ui'\nimport {useMemo} from 'react'\n\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {isCardinalityOneRelease} from '../../../util/releaseUtils'\nimport {releasesLocaleNamespace} from '../../i18n'\n\ninterface DraftsDisabledBannerProps {\n isDraftModelEnabled: boolean\n isScheduledDraftsEnabled: boolean\n allReleases: ReleaseDocument[]\n}\n\n/**\n * Banner that shows when viewing drafts but either drafts mode or scheduled drafts are disabled\n */\nexport const DraftsDisabledBanner = ({\n isDraftModelEnabled,\n isScheduledDraftsEnabled,\n allReleases,\n}: DraftsDisabledBannerProps) => {\n const {t} = useTranslation(releasesLocaleNamespace)\n const hasSingleDocRelease = useMemo(\n () => allReleases.some(isCardinalityOneRelease),\n [allReleases],\n )\n const shouldShowBanner =\n (!isDraftModelEnabled || !isScheduledDraftsEnabled) && hasSingleDocRelease\n\n if (!shouldShowBanner) return null\n\n const getBannerMessage = () =>\n isScheduledDraftsEnabled\n ? t('banner.drafts-mode-disabled')\n : t('banner.scheduled-drafts-disabled')\n\n return (\n <Box padding={1} marginBottom={4}>\n <Card radius={3} paddingX={2} paddingY={2} tone=\"caution\">\n <Flex align=\"center\" gap={3} paddingX={2}>\n <Text size={0}>\n <WarningOutlineIcon />\n </Text>\n <Flex align=\"center\" flex={1} gap={2} paddingY={2}>\n <Text size={1} weight=\"medium\">\n {getBannerMessage()}\n </Text>\n </Flex>\n </Flex>\n </Card>\n </Box>\n )\n}\n","import {endOfDay} from 'date-fns/endOfDay'\nimport {startOfDay} from 'date-fns/startOfDay'\nimport {useCallback} from 'react'\n\nimport {useTimeZone} from '../../../hooks/useTimeZone'\nimport {CONTENT_RELEASES_TIME_ZONE_SCOPE} from '../../../studio/constants'\n\nexport const useTimezoneAdjustedDateTimeRange = (): ((date: Date) => [Date, Date]) => {\n const {zoneDateToUtc} = useTimeZone(CONTENT_RELEASES_TIME_ZONE_SCOPE)\n\n return useCallback(\n (date: Date) => [startOfDay(date), endOfDay(date)].map(zoneDateToUtc) as [Date, Date],\n [zoneDateToUtc],\n )\n}\n","import {CloseIcon} from '@sanity/icons/Close'\nimport {format} from 'date-fns/format'\nimport {AnimatePresence, motion} from 'motion/react'\nimport {useMemo, useState} from 'react'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {\n CalendarDay,\n type CalendarDayProps,\n} from '../../../components/inputs/DateFilters/calendar/CalendarDay'\nimport {type CalendarProps} from '../../../components/inputs/DateFilters/calendar/CalendarFilter'\nimport {useActiveReleases} from '../../store/useActiveReleases'\nimport {shouldShowReleaseInView} from '../../util/util'\nimport {type CardinalityView} from './queryParamUtils'\nimport {useTimezoneAdjustedDateTimeRange} from './useTimezoneAdjustedDateTimeRange'\n\nconst ReleaseCalendarFilterDayWithCardinality = (\n props: CalendarDayProps & {\n cardinalityView: CardinalityView\n },\n): React.ReactNode => {\n const {data: allReleases} = useActiveReleases()\n const getTimezoneAdjustedDateTimeRange = useTimezoneAdjustedDateTimeRange()\n\n const {date, cardinalityView, ...calendarDayProps} = props\n\n const [startOfDayForTimeZone, endOfDayForTimeZone] = getTimezoneAdjustedDateTimeRange(date)\n\n const releases = allReleases?.filter(shouldShowReleaseInView(cardinalityView))\n\n const dayHasReleases = releases?.some((release) => {\n const releasePublishAt = release.publishAt || release.metadata.intendedPublishAt\n if (!releasePublishAt) return false\n\n const publishDateUTC = new Date(releasePublishAt)\n\n return (\n release.metadata.releaseType === 'scheduled' &&\n publishDateUTC >= startOfDayForTimeZone &&\n publishDateUTC <= endOfDayForTimeZone\n )\n })\n\n return (\n <CalendarDay\n {...calendarDayProps}\n date={date}\n dateStyles={dayHasReleases ? {fontWeight: 700} : {}}\n />\n )\n}\n\nexport const createReleaseCalendarFilterDay = (\n cardinalityView: CardinalityView,\n): CalendarProps['renderCalendarDay'] => {\n const ReleaseCalendarFilterDayComponent = (props: CalendarDayProps) => (\n <ReleaseCalendarFilterDayWithCardinality {...props} cardinalityView={cardinalityView} />\n )\n ReleaseCalendarFilterDayComponent.displayName = 'ReleaseCalendarFilterDayComponent'\n return ReleaseCalendarFilterDayComponent\n}\n\nconst MotionButton = motion.create(Button)\n\nexport const DateFilterButton = ({\n filterDate,\n onClear,\n}: {\n filterDate: Date\n onClear: () => void\n}) => {\n const [isExiting, setIsExiting] = useState(false)\n\n const handleOnExitComplete = useMemo(\n () => () => {\n setIsExiting(false)\n onClear()\n },\n [onClear],\n )\n\n if (!filterDate) return null\n\n return (\n <AnimatePresence onExitComplete={handleOnExitComplete}>\n {!isExiting && (\n <MotionButton\n data-testid=\"selected-date-filter\"\n initial={{width: 0, opacity: 0}}\n animate={{width: 'auto', opacity: 1}}\n exit={{width: 0, opacity: 0}}\n transition={{duration: 0.35, ease: 'easeInOut'}}\n iconRight={CloseIcon}\n mode=\"bleed\"\n onClick={() => setIsExiting(true)}\n selected\n text={format(filterDate, 'PPP')}\n />\n )}\n </AnimatePresence>\n )\n}\n","import {type ReleaseDocument} from '@sanity/client'\n\nimport {getReleaseIdFromReleaseDocumentId} from '../../util/getReleaseIdFromReleaseDocumentId'\nimport {ReleaseMenuButton} from '../components/ReleaseMenuButton/ReleaseMenuButton'\nimport {useReleaseDocuments} from '../detail/useReleaseDocuments'\n\nexport const ReleaseMenuButtonWrapper = ({\n release,\n documentsCount,\n}: {\n release: ReleaseDocument\n documentsCount: number\n}) => {\n const {results: documents} = useReleaseDocuments(getReleaseIdFromReleaseDocumentId(release._id))\n\n return (\n <ReleaseMenuButton release={release} documentsCount={documentsCount} documents={documents} />\n )\n}\n","import {CloseIcon} from '@sanity/icons/Close'\nimport {WarningOutlineIcon} from '@sanity/icons/WarningOutline'\nimport {Box, Card, Flex, Text} from '@sanity/ui'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {releasesLocaleNamespace} from '../../i18n'\n\ninterface ReleaseNotFoundBannerProps {\n onDismiss: () => void\n}\n\nexport function ReleaseNotFoundBanner({onDismiss}: ReleaseNotFoundBannerProps) {\n const {t} = useTranslation(releasesLocaleNamespace)\n\n return (\n <Box flex=\"none\" padding={1} marginBottom={4}>\n <Card radius={3} paddingX={2} paddingY={2} tone=\"caution\">\n <Flex align=\"center\" gap={3} paddingX={2}>\n <Text size={0}>\n <WarningOutlineIcon />\n </Text>\n <Box flex={1} paddingY={2}>\n <Text size={1} weight=\"medium\">\n {t('banner.release-not-found')}\n </Text>\n </Box>\n <Button\n icon={CloseIcon}\n mode=\"bleed\"\n onClick={onDismiss}\n tooltipProps={{content: t('banner.release-not-found.dismiss')}}\n />\n </Flex>\n </Card>\n </Box>\n )\n}\n","export const ReleaseIllustration = () => {\n return (\n <svg\n data-testid=\"release-illustration\"\n width=\"248\"\n height=\"201\"\n viewBox=\"0 0 248 201\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n opacity=\"0.2\"\n d=\"M175.4 29.8262V98.1738C175.4 103.823 181.346 107.498 186.399 104.971L222.399 86.9714C224.974 85.684 226.6 83.0524 226.6 80.1738V11.8262C226.6 6.17654 220.654 2.50197 215.601 5.02859L179.601 23.0286C177.026 24.316 175.4 26.9476 175.4 29.8262Z\"\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth=\"1.2\"\n />\n <path\n opacity=\"0.2\"\n d=\"M183.4 33.8262V102.174C183.4 107.823 189.346 111.498 194.399 108.971L230.399 90.9714C232.974 89.684 234.6 87.0524 234.6 84.1738V15.8262C234.6 10.1765 228.654 6.50197 223.601 9.02859L187.601 27.0286C185.026 28.316 183.4 30.9476 183.4 33.8262Z\"\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth=\"1.2\"\n />\n <path\n opacity=\"0.2\"\n d=\"M195.4 39.8262V108.174C195.4 113.823 201.346 117.498 206.399 114.971L242.399 96.9714C244.974 95.684 246.6 93.0524 246.6 90.1738V21.8262C246.6 16.1765 240.654 12.502 235.601 15.0286L199.601 33.0286C197.026 34.316 195.4 36.9476 195.4 39.8262Z\"\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth=\"1.2\"\n />\n <path\n opacity=\"0.6\"\n d=\"M109.4 50.8262V119.174C109.4 124.823 115.346 128.498 120.399 125.971L156.399 107.971C158.974 106.684 160.6 104.052 160.6 101.174V32.8262C160.6 27.1765 154.654 23.502 149.601 26.0286L113.601 44.0286C111.026 45.316 109.4 47.9476 109.4 50.8262Z\"\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth=\"1.2\"\n />\n <path\n opacity=\"0.9\"\n d=\"M118 123.174V54.8262C118 52.1748 119.498 49.751 121.87 48.5653L157.87 30.5652C162.524 28.2381 168 31.6226 168 36.8262V105.174C168 107.825 166.502 110.249 164.131 111.435L128.13 129.435C123.476 131.762 118 128.377 118 123.174Z\"\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth=\"1.2\"\n />\n <path\n opacity=\"0.2\"\n d=\"M121.4 56.8262V125.174C121.4 130.823 127.346 134.498 132.399 131.971L168.399 113.971C170.974 112.684 172.6 110.052 172.6 107.174V38.8262C172.6 33.1765 166.654 29.502 161.601 32.0286L125.601 50.0286C123.026 51.316 121.4 53.9476 121.4 56.8262Z\"\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth=\"1.2\"\n />\n <path\n opacity=\"0.2\"\n d=\"M125.4 58.8262V127.174C125.4 132.823 131.346 136.498 136.399 133.971L172.399 115.971C174.974 114.684 176.6 112.052 176.6 109.174V40.8262C176.6 35.1765 170.654 31.502 165.601 34.0286L129.601 52.0286C127.026 53.316 125.4 55.9476 125.4 58.8262Z\"\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth=\"1.2\"\n />\n <path\n opacity=\"0.2\"\n d=\"M137.4 64.8262V133.174C137.4 138.823 143.346 142.498 148.399 139.971L184.399 121.971C186.974 120.684 188.6 118.052 188.6 115.174V46.8262C188.6 41.1765 182.654 37.502 177.601 40.0286L141.601 58.0286C139.026 59.316 137.4 61.9476 137.4 64.8262Z\"\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth=\"1.2\"\n />\n <path\n opacity=\"0.2\"\n d=\"M145.4 68.8262V137.174C145.4 142.823 151.346 146.498 156.399 143.971L192.399 125.971C194.974 124.684 196.6 122.052 196.6 119.174V50.8262C196.6 45.1765 190.654 41.502 185.601 44.0286L149.601 62.0286C147.026 63.316 145.4 65.9476 145.4 68.8262Z\"\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth=\"1.2\"\n />\n <path\n opacity=\"0.6\"\n d=\"M1.4 104.826V173.174C1.4 178.823 7.34557 182.498 12.3988 179.971L48.3988 161.971C50.9736 160.684 52.6 158.052 52.6 155.174V86.8262C52.6 81.1765 46.6544 77.502 41.6012 80.0286L5.60117 98.0286C3.02641 99.316 1.4 101.948 1.4 104.826Z\"\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth=\"1.2\"\n />\n <path\n opacity=\"0.6\"\n d=\"M56.6 146.174V77.8262C56.6 75.4021 57.9696 73.186 60.1378 72.1019L96.1378 54.1019C100.393 51.9742 105.4 55.0686 105.4 59.8262V128.174C105.4 130.598 104.03 132.814 101.862 133.898L65.8622 151.898C61.6068 154.026 56.6 150.931 56.6 146.174Z\"\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth=\"1.2\"\n />\n <path\n opacity=\"0.8\"\n d=\"M60.6 148.174V79.8262C60.6 77.4021 61.9696 75.186 64.1378 74.1019L100.138 56.1019C104.393 53.9742 109.4 57.0686 109.4 61.8262V130.174C109.4 132.598 108.03 134.814 105.862 135.898L69.8622 153.898C65.6068 156.026 60.6 152.931 60.6 148.174Z\"\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth=\"1.2\"\n />\n <path\n opacity=\"0.9\"\n d=\"M64 150.174V81.8262C64 79.1748 65.498 76.751 67.8695 75.5653L103.87 57.5652C108.524 55.2381 114 58.6226 114 63.8262V132.174C114 134.825 112.502 137.249 110.131 138.435L74.1305 156.435C69.4762 158.762 64 155.377 64 150.174Z\"\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth=\"1.2\"\n />\n <path\n opacity=\"0.2\"\n d=\"M72.6 154.174V85.8262C72.6 83.4021 73.9696 81.186 76.1378 80.1019L112.138 62.1019C116.393 59.9742 121.4 63.0686 121.4 67.8262V136.174C121.4 138.598 120.03 140.814 117.862 141.898L81.8622 159.898C77.6068 162.026 72.6 158.931 72.6 154.174Z\"\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth=\"1.2\"\n />\n <path\n opacity=\"0.2\"\n d=\"M76.6 156.174V87.8262C76.6 85.4021 77.9696 83.186 80.1378 82.1019L116.138 64.1019C120.393 61.9742 125.4 65.0686 125.4 69.8262V138.174C125.4 140.598 124.03 142.814 121.862 143.898L85.8622 161.898C81.6068 164.026 76.6 160.931 76.6 156.174Z\"\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth=\"1.2\"\n />\n <path\n opacity=\"0.2\"\n d=\"M84.6 160.174V91.8262C84.6 89.4021 85.9696 87.186 88.1378 86.1019L124.138 68.1019C128.393 65.9742 133.4 69.0686 133.4 73.8262V142.174C133.4 144.598 132.03 146.814 129.862 147.898L93.8622 165.898C89.6068 168.026 84.6 164.931 84.6 160.174Z\"\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth=\"1.2\"\n />\n <path\n opacity=\"0.2\"\n d=\"M88.6 162.174V93.8262C88.6 91.4021 89.9696 89.186 92.1378 88.1019L128.138 70.1019C132.393 67.9742 137.4 71.0686 137.4 75.8262V144.174C137.4 146.598 136.03 148.814 133.862 149.898L97.8622 167.898C93.6068 170.026 88.6 166.931 88.6 162.174Z\"\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth=\"1.2\"\n />\n <path\n opacity=\"0.2\"\n d=\"M92.6 164.174V95.8262C92.6 93.4021 93.9696 91.186 96.1378 90.1019L132.138 72.1019C136.393 69.9742 141.4 73.0686 141.4 77.8262V146.174C141.4 148.598 140.03 150.814 137.862 151.898L101.862 169.898C97.6068 172.026 92.6 168.931 92.6 164.174Z\"\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth=\"1.2\"\n />\n <path\n opacity=\"0.2\"\n d=\"M96.6 166.174V97.8262C96.6 95.4021 97.9696 93.186 100.138 92.1019L136.138 74.1019C140.393 71.9742 145.4 75.0686 145.4 79.8262V148.174C145.4 150.598 144.03 152.814 141.862 153.898L105.862 171.898C101.607 174.026 96.6 170.931 96.6 166.174Z\"\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth=\"1.2\"\n />\n <path\n opacity=\"0.2\"\n d=\"M104.6 170.174V101.826C104.6 99.4021 105.97 97.186 108.138 96.1019L144.138 78.1019C148.393 75.9742 153.4 79.0686 153.4 83.8262V152.174C153.4 154.598 152.03 156.814 149.862 157.898L113.862 175.898C109.607 178.026 104.6 174.931 104.6 170.174Z\"\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth=\"1.2\"\n />\n <path\n opacity=\"0.8\"\n d=\"M5.4 106.826V175.174C5.4 180.823 11.3456 184.498 16.3988 181.971L52.3988 163.971C54.9736 162.684 56.6 160.052 56.6 157.174V88.8262C56.6 83.1765 50.6544 79.502 45.6012 82.0286L9.60117 100.029C7.02641 101.316 5.4 103.948 5.4 106.826Z\"\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth=\"1.2\"\n />\n <path\n opacity=\"0.9\"\n d=\"M10 177.174V108.826C10 106.175 11.498 103.751 13.8695 102.565L49.8695 84.5652C54.5238 82.2381 60 85.6226 60 90.8262V159.174C60 161.825 58.502 164.249 56.1305 165.435L20.1305 183.435C15.4762 185.762 10 182.377 10 177.174Z\"\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth=\"1.2\"\n />\n <path\n opacity=\"0.2\"\n d=\"M13.4 110.826V179.174C13.4 184.823 19.3456 188.498 24.3988 185.971L60.3988 167.971C62.9736 166.684 64.6 164.052 64.6 161.174V92.8262C64.6 87.1765 58.6544 83.502 53.6012 86.0286L17.6012 104.029C15.0264 105.316 13.4 107.948 13.4 110.826Z\"\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth=\"1.2\"\n />\n <path\n opacity=\"0.2\"\n d=\"M29.4 118.826V187.174C29.4 192.823 35.3456 196.498 40.3988 193.971L76.3988 175.971C78.9736 174.684 80.6 172.052 80.6 169.174V100.826C80.6 95.1765 74.6544 91.502 69.6012 94.0286L33.6012 112.029C31.0264 113.316 29.4 115.948 29.4 118.826Z\"\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth=\"1.2\"\n />\n <path\n opacity=\"0.2\"\n d=\"M33.4 120.826V189.174C33.4 194.823 39.3456 198.498 44.3988 195.971L80.3988 177.971C82.9736 176.684 84.6 174.052 84.6 171.174V102.826C84.6 97.1765 78.6544 93.502 73.6012 96.0286L37.6012 114.029C35.0264 115.316 33.4 117.948 33.4 120.826Z\"\n fill=\"var(--card-muted-bg-color)\"\n stroke=\"var(--card-muted-fg-color)\"\n strokeWidth=\"1.2\"\n />\n </svg>\n )\n}\n","import {Flex, Inline, Text} from '@sanity/ui'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {useReleasesUpsell} from '../../contexts/upsell/useReleasesUpsell'\nimport {releasesLocaleNamespace} from '../../i18n'\nimport {ReleaseIllustration} from '../resources/ReleaseIllustration'\n\ninterface ReleasesEmptyStateProps {\n createReleaseButton?: React.ReactNode\n}\n\nexport const ReleasesEmptyState = ({createReleaseButton}: ReleasesEmptyStateProps) => {\n const {t} = useTranslation(releasesLocaleNamespace)\n const {mode} = useReleasesUpsell()\n\n if (mode === 'upsell') {\n return null\n }\n\n return (\n <Flex direction=\"column\" flex={1} justify={'center'} align={'center'}>\n <Flex gap={3} direction=\"column\" align=\"center\" style={{maxWidth: '300px'}}>\n <ReleaseIllustration />\n <Text as=\"h1\" size={1} weight=\"semibold\" data-testid=\"no-releases-info-text\">\n {t('overview.title')}\n </Text>\n <Text size={1} muted style={{textAlign: 'center'}}>\n {t('overview.description')}\n </Text>\n <Inline gap={2}>\n {createReleaseButton}\n <Button\n as=\"a\"\n href=\"https://www.sanity.io/docs/content-releases\"\n target=\"_blank\"\n mode=\"ghost\"\n text={t('overview.action.documentation')}\n />\n </Inline>\n </Flex>\n </Flex>\n )\n}\n","import {Spinner} from '@sanity/ui'\n\nimport {getReleaseIdFromReleaseDocumentId} from '../../../util/getReleaseIdFromReleaseDocumentId'\nimport {useReleaseDocuments} from '../../detail/useReleaseDocuments'\nimport {ValidationProgressIndicator} from '../../detail/ValidationProgressIndicator'\n\nexport function ReleaseColumnValidationLoading({releaseId}: {releaseId: string}) {\n const rId = getReleaseIdFromReleaseDocumentId(releaseId)\n const {results: documents, loading} = useReleaseDocuments(rId)\n\n return loading ? (\n <Spinner size={1} muted />\n ) : (\n <ValidationProgressIndicator layout=\"minimal\" documents={documents} />\n )\n}\n","import {Text} from '@sanity/ui'\n\ntype Props = {\n documentCount: number | undefined\n}\n\nexport const ReleaseDocumentsCounter = ({documentCount}: Props) => (\n <Text muted size={1}>\n {documentCount || '-'}\n </Text>\n)\n","import {PinIcon} from '@sanity/icons/Pin'\nimport {PinFilledIcon} from '@sanity/icons/PinFilled'\nimport {Box, Card, Flex, Skeleton, Stack, Text} from '@sanity/ui'\nimport {useCallback} from 'react'\nimport {useRouter} from 'sanity/router'\n\nimport {Button} from '../../../../../ui-components/button/Button'\nimport {Tooltip} from '../../../../../ui-components/tooltip/Tooltip'\nimport {PREVIEW_SIZES} from '../../../../components/previews/constants'\nimport {TitleSkeleton} from '../../../../components/previews/general/DetailPreview.styled'\nimport {useTranslation} from '../../../../i18n/hooks/useTranslation'\nimport {Translate} from '../../../../i18n/Translate'\nimport {usePerspective} from '../../../../perspective/usePerspective'\nimport {useSetPerspective} from '../../../../perspective/useSetPerspective'\nimport {useWorkspace} from '../../../../studio/workspace'\nimport {ReleaseAvatar} from '../../../components/ReleaseAvatar'\nimport {ReleaseTitle} from '../../../components/ReleaseTitle'\nimport {releasesLocaleNamespace} from '../../../i18n'\nimport {getReleaseIdFromReleaseDocumentId} from '../../../util/getReleaseIdFromReleaseDocumentId'\nimport {type TableRowProps} from '../../components/Table/Table'\nimport {type VisibleColumn} from '../../components/Table/types'\nimport {type TableRelease} from '../ReleasesOverview'\n\nexport const ReleaseNameCell: VisibleColumn<TableRelease>['cell'] = ({\n cellProps,\n datum: release,\n}) => {\n const router = useRouter()\n const {t} = useTranslation(releasesLocaleNamespace)\n const {t: tCore} = useTranslation()\n const {selectedReleaseId} = usePerspective()\n const setPerspective = useSetPerspective()\n const {state} = release\n const releaseId = release.isLoading ? 'loading' : getReleaseIdFromReleaseDocumentId(release._id)\n const isArchived = state === 'archived'\n const isReleasePinned = releaseId === selectedReleaseId\n const {document} = useWorkspace()\n const {\n drafts: {enabled: isDraftModelEnabled},\n } = document\n\n const handlePinRelease = useCallback(() => {\n if (isReleasePinned) {\n setPerspective(isDraftModelEnabled ? 'drafts' : 'published')\n } else {\n setPerspective(releaseId)\n }\n }, [isDraftModelEnabled, isReleasePinned, releaseId, setPerspective])\n\n if (release.isLoading) {\n return (\n <Box {...cellProps} paddingLeft={3} flex={1} paddingY={1} paddingRight={2} sizing=\"border\">\n <Flex align=\"center\" gap={2}>\n <Skeleton animated radius={1} style={PREVIEW_SIZES.default.media} />\n <TitleSkeleton />\n </Flex>\n </Box>\n )\n }\n\n const cardProps: TableRowProps = release.isDeleted\n ? {tone: 'transparent'}\n : {\n as: 'a',\n // navigate to release detail\n onClick: () => router.navigate({releaseId: releaseId}),\n tone: 'inherit',\n }\n\n const pinButtonIcon = isReleasePinned ? PinFilledIcon : PinIcon\n const releaseTitle = release.metadata.title || tCore('release.placeholder-untitled-release')\n\n return (\n <Box {...cellProps} paddingLeft={3} flex={1} paddingY={1} paddingRight={2} sizing=\"border\">\n <Tooltip\n disabled={!release.isDeleted}\n content={\n <Text size={1}>\n <Translate t={t} i18nKey=\"deleted-release\" values={{title: releaseTitle}} />\n </Text>\n }\n >\n <Flex align=\"center\" gap={3}>\n <Button\n tooltipProps={{\n disabled: isArchived || release.state === 'published',\n content: isReleasePinned\n ? t('dashboard.details.unpin-release')\n : t('dashboard.details.pin-release'),\n }}\n disabled={isArchived || release.state === 'published'}\n icon={pinButtonIcon}\n mode=\"bleed\"\n data-testid=\"pin-release-button\"\n onClick={handlePinRelease}\n radius=\"full\"\n selected={isReleasePinned}\n aria-label={\n isReleasePinned\n ? `${t('dashboard.details.unpin-release')}: \"${releaseTitle}\"`\n : `${t('dashboard.details.pin-release')}: \"${releaseTitle}\"`\n }\n aria-live=\"assertive\"\n />\n <Card {...cardProps} padding={2} radius={2} flex={1}>\n <Flex align=\"center\" gap={2}>\n <Box flex=\"none\">\n <ReleaseAvatar release={release} />\n </Box>\n <Stack flex={1} gap={2}>\n <Flex align=\"center\" gap={2} style={{minWidth: 0}}>\n <ReleaseTitle\n title={release.metadata.title}\n fallback={tCore('release.placeholder-untitled-release')}\n textProps={{size: 1, weight: 'medium', style: {minWidth: 0}}}\n />\n </Flex>\n </Stack>\n </Flex>\n </Card>\n </Flex>\n </Tooltip>\n </Box>\n )\n}\n","import {CheckmarkCircleIcon} from '@sanity/icons/CheckmarkCircle'\nimport {ErrorOutlineIcon} from '@sanity/icons/ErrorOutline'\nimport {WarningOutlineIcon} from '@sanity/icons/WarningOutline'\nimport {Card, Flex, Text} from '@sanity/ui'\n// oxlint-disable-next-line @sanity/i18n/no-i18next-import -- figure out how to have the linter be fine with importing types-only\nimport {type TFunction} from 'i18next'\n\nimport {ToneIcon} from '../../../../ui-components/toneIcon/ToneIcon'\nimport {Tooltip} from '../../../../ui-components/tooltip/Tooltip'\nimport {RelativeTime} from '../../../components/RelativeTime'\nimport {getIsScheduledDateInPast} from '../../util/getIsScheduledDateInPast'\nimport {getPublishDateFromRelease} from '../../util/util'\nimport {ReleaseTime} from '../components/ReleaseTime'\nimport {Headers} from '../components/Table/TableHeader'\nimport {type Column} from '../components/Table/types'\nimport {ReleaseColumnValidationLoading} from './columnCells/ReleaseColumnValidationLoading'\nimport {ReleaseDocumentsCounter} from './columnCells/ReleaseDocumentsCounter'\nimport {ReleaseNameCell} from './columnCells/ReleaseName'\nimport {type Mode} from './queryParamUtils'\nimport {type TableRelease} from './ReleasesOverview'\n\nconst enableColumnFormMode =\n (currentMode: Mode) => (column: Column<TableRelease>, expectedMode: Mode | 'all') => {\n if (!currentMode) throw new Error('currentMode is required')\n if (expectedMode === 'all' || expectedMode === currentMode) {\n return column\n }\n return undefined\n }\n\nexport const releasesOverviewColumnDefs: (\n t: TFunction<'releases'>,\n releaseGroupMode: Mode,\n) => Column<TableRelease>[] = (t, releaseGroupMode) => {\n const checkColumnMode = enableColumnFormMode(releaseGroupMode)\n return [\n checkColumnMode(\n {\n id: 'metadata.title',\n sorting: true,\n width: null,\n style: {minWidth: 'min(50%, calc(100vw - 80px))', maxWidth: 'min(50%, calc(100vw - 80px))'},\n header: (props) => (\n <Flex\n {...props.headerProps}\n flex={1}\n paddingLeft={6}\n width={3}\n paddingRight={2}\n paddingY={3}\n sizing=\"border\"\n >\n <Headers.SortHeaderButton {...props} text={t('table-header.title')} />\n </Flex>\n ),\n cell: ReleaseNameCell,\n },\n 'all',\n ),\n checkColumnMode(\n {\n id: 'publishAt',\n sorting: true,\n sortTransform: (release) => {\n if (release.metadata.releaseType === 'undecided') return Infinity\n\n const publishDate = getPublishDateFromRelease(release)\n\n if (release.metadata.releaseType === 'asap' || !publishDate) return 0\n return new Date(publishDate).getTime()\n },\n width: 280,\n header: (props) => (\n <Flex {...props.headerProps} paddingY={3} sizing=\"border\">\n <Headers.SortHeaderButton text={t('table-header.when')} {...props} />\n </Flex>\n ),\n cell: ({cellProps, datum: release}) => {\n if (release.isLoading) return null\n\n return (\n <Flex {...cellProps} align=\"center\" paddingX={2} paddingY={3} gap={2} sizing=\"border\">\n <ReleaseTime release={release} />\n </Flex>\n )\n },\n },\n 'active',\n ),\n // This is a hidden column only used for sorting when\n // no other sort column is selected (the default state)\n checkColumnMode(\n {\n id: 'lastActivity',\n hidden: true,\n sorting: true,\n width: 100,\n sortTransform: ({publishedAt, _updatedAt}) => {\n // the default sort is always descending, so -Infinity pushes missing values to end\n const lastActivity = publishedAt ?? _updatedAt\n\n return lastActivity ? new Date(lastActivity).getTime() : -Infinity\n },\n },\n 'archived',\n ),\n checkColumnMode(\n {\n id: 'publishedAt',\n sorting: true,\n sortTransform: (release, direction) => {\n if (release.state !== 'published') {\n if (direction === 'asc') return Infinity\n return -Infinity\n }\n if (!release.publishedAt) return release._updatedAt\n return new Date(release.publishedAt).getTime()\n },\n width: 250,\n header: (props) => (\n <Flex {...props.headerProps} paddingY={3} sizing=\"border\">\n <Headers.SortHeaderButton text={t('table-header.published-at')} {...props} />\n </Flex>\n ),\n cell: ({cellProps, datum: release}) => (\n <Flex {...cellProps} align=\"center\" paddingX={2} paddingY={3} gap={2} sizing=\"border\">\n <Text muted size={1}>\n {release.publishedAt ? (\n // Assuming releases are not updated after archiving.\n // If we realize this is miss leading for customers and they have edited the release after archiving\n // we can use the history endpoint to get the archived change.\n <RelativeTime time={release.publishedAt} useTemporalPhrase minimal />\n ) : (\n '-'\n )}\n </Text>\n </Flex>\n ),\n },\n 'archived',\n ),\n checkColumnMode(\n {\n id: '_updatedAt',\n sorting: true,\n sortTransform: (release, direction) => {\n if (release.state !== 'archived') {\n if (direction === 'asc') return Infinity\n return -Infinity\n }\n\n return new Date(release._updatedAt).getTime()\n },\n width: 250,\n header: (props) => (\n <Flex {...props.headerProps} paddingY={3} sizing=\"border\">\n <Headers.SortHeaderButton text={t('table-header.archivedAt')} {...props} />\n </Flex>\n ),\n cell: ({cellProps, datum: release}) => (\n <Flex {...cellProps} align=\"center\" paddingX={2} paddingY={3} gap={2} sizing=\"border\">\n <Text muted size={1}>\n {release.state === 'archived' ? (\n // Assuming releases are not updated after archiving.\n // If we later realize this is miss leading for customers and they have edited the release after archiving\n // we can use the history endpoint to get the archived change.\n <RelativeTime time={release._updatedAt} useTemporalPhrase minimal />\n ) : (\n '-'\n )}\n </Text>\n </Flex>\n ),\n },\n 'archived',\n ),\n checkColumnMode(\n {\n id: 'documentsMetadata.updatedAt',\n sorting: true,\n width: 150,\n header: (props) => (\n <Flex {...props.headerProps} paddingY={3} sizing=\"border\">\n <Headers.SortHeaderButton text={t('table-header.edited')} {...props} />\n </Flex>\n ),\n cell: ({datum: {documentsMetadata, _updatedAt}, cellProps}) => {\n const updatedAtDate = documentsMetadata?.updatedAt ?? _updatedAt\n return (\n <Flex {...cellProps} align=\"center\" gap={2} paddingX={2} paddingY={3} sizing=\"border\">\n <Text muted size={1}>\n {updatedAtDate ? (\n <RelativeTime time={updatedAtDate} useTemporalPhrase minimal />\n ) : (\n '-'\n )}\n </Text>\n </Flex>\n )\n },\n },\n 'active',\n ),\n checkColumnMode(\n {\n id: 'error',\n sorting: false,\n width: 40,\n header: ({headerProps}) => <Flex {...headerProps} paddingY={3} sizing=\"border\" />,\n cell: ({datum, cellProps}) => {\n const {error, state} = datum\n const hasError = typeof error !== 'undefined' && state === 'active'\n const hasWarning = state === 'active' && getIsScheduledDateInPast(datum)\n\n return (\n <Flex\n {...cellProps}\n align=\"center\"\n gap={2}\n paddingX={2}\n paddingY={3}\n sizing=\"border\"\n data-testid=\"error-indicator\"\n >\n {hasError && (\n <Tooltip content={<Text size={1}>{t('failed-publish-title')}</Text>} portal>\n <Text size={1}>\n <ToneIcon icon={ErrorOutlineIcon} tone=\"critical\" />\n </Text>\n </Tooltip>\n )}\n {hasWarning && (\n <Tooltip content={<Text size={1}>{t('passed-intended-publish-date')}</Text>} portal>\n <Text size={1}>\n <ToneIcon icon={WarningOutlineIcon} tone=\"caution\" />\n </Text>\n </Tooltip>\n )}\n </Flex>\n )\n },\n },\n 'all',\n ),\n checkColumnMode(\n {\n id: 'documentCount',\n sorting: false,\n width: 120,\n header: ({headerProps}) => (\n <Flex {...headerProps} paddingY={3} sizing=\"border\">\n <Headers.BasicHeader text={t('table-header.documents')} />\n </Flex>\n ),\n cell: ({\n datum: {isDeleted, state, finalDocumentStates, documentsMetadata, _id},\n cellProps,\n }) => {\n return (\n <Flex {...cellProps} align=\"center\" paddingX={2} paddingY={3} sizing=\"border\" gap={2}>\n {state === 'active' && <ReleaseColumnValidationLoading releaseId={_id} />}\n\n {/**\n * Show a checkmark for scheduled releases\n * A scheduled release can't be anything other than valid\n * Since it can't be edited via the API or the UI\n * However we should still gives a visual indicator of that instead of showing nothing\n */}\n {state === 'scheduled' && (\n <Card\n padding={0}\n radius=\"full\"\n tone=\"neutral\"\n style={{\n background: 'transparent',\n }}\n >\n <Flex gap={2}>\n <Text size={1}>\n <Tooltip content={t('summary.all-documents-validated')}>\n <CheckmarkCircleIcon />\n </Tooltip>\n </Text>\n </Flex>\n </Card>\n )}\n\n {!isDeleted && (\n <>\n <ReleaseDocumentsCounter\n documentCount={\n state === 'archived' || state === 'published'\n ? finalDocumentStates?.length\n : documentsMetadata?.documentCount\n }\n />\n </>\n )}\n </Flex>\n )\n },\n },\n 'all',\n ),\n ].filter(filterNull)\n}\n\n// type guard to filter out undefined and null values\nfunction filterNull<T>(value: T | undefined | null): value is T {\n return Boolean(value)\n}\n","import {type ReleaseDocument} from '@sanity/client'\nimport {EllipsisHorizontalIcon} from '@sanity/icons/EllipsisHorizontal'\nimport {Menu, Spinner, useClickOutsideEvent} from '@sanity/ui'\nimport {useCallback, useMemo, useRef, useState} from 'react'\nimport {useRouter} from 'sanity/router'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {MenuItem} from '../../../../ui-components/menuItem/MenuItem'\nimport {Popover} from '../../../../ui-components/popover/Popover'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {useScheduledDraftDocument} from '../../../singleDocRelease/hooks/useScheduledDraftDocument'\nimport {useScheduledDraftMenuActions} from '../../../singleDocRelease/hooks/useScheduledDraftMenuActions'\nimport {getPublishedId} from '../../../util/draftUtils'\nimport {isPausedCardinalityOneRelease} from '../../../util/releaseUtils'\nimport {getReleaseIdFromReleaseDocumentId} from '../../util/getReleaseIdFromReleaseDocumentId'\n\nexport const ScheduledDraftMenuButtonWrapper = ({release}: {release: ReleaseDocument}) => {\n const {t} = useTranslation()\n const router = useRouter()\n const popoverRef = useRef<HTMLDivElement>(null)\n const scheduledDraftMenuRef = useRef<HTMLDivElement>(null)\n const [openPopover, setOpenPopover] = useState(false)\n\n const {firstDocument: scheduledDraftDocument} = useScheduledDraftDocument(release._id)\n\n const handleActionComplete = useCallback(() => {\n if (!scheduledDraftDocument) return\n\n router.navigateIntent('edit', {\n id: getPublishedId(scheduledDraftDocument._id),\n type: scheduledDraftDocument._type,\n scheduledDraft: getReleaseIdFromReleaseDocumentId(release._id),\n })\n }, [router, scheduledDraftDocument, release._id])\n\n const {actions, dialogs, isPerformingOperation} = useScheduledDraftMenuActions({\n release,\n documentType: scheduledDraftDocument?._type,\n documentId: scheduledDraftDocument?._id,\n disabled: !scheduledDraftDocument,\n onActionComplete: handleActionComplete,\n })\n\n const displayedMenuItems = useMemo(() => {\n if (release.state === 'archived' || release.state === 'published') {\n return [<MenuItem key={'delete-schedule'} {...actions.deleteSchedule} />]\n }\n\n if (isPausedCardinalityOneRelease(release)) {\n return [\n <MenuItem key={'publish-now'} {...actions.publishNow} />,\n <MenuItem key={'schedule-publish'} {...actions.schedulePublish} />,\n <MenuItem key={'delete-schedule'} {...actions.deleteSchedule} />,\n ]\n }\n\n return [\n <MenuItem key={'publish-now'} {...actions.publishNow} />,\n <MenuItem key={'edit-schedule'} {...actions.editSchedule} />,\n <MenuItem key={'delete-schedule'} {...actions.deleteSchedule} />,\n ]\n }, [release, actions])\n\n const canPerformActions = Boolean(scheduledDraftDocument)\n\n const handleOnButtonClick = useCallback(() => {\n setOpenPopover((prev) => !prev)\n }, [])\n\n useClickOutsideEvent(\n () => setOpenPopover(false),\n () => [popoverRef.current, scheduledDraftMenuRef.current],\n )\n\n if (!canPerformActions) {\n return null\n }\n\n return (\n <>\n <Popover\n content={<Menu ref={scheduledDraftMenuRef}>{displayedMenuItems}</Menu>}\n open={openPopover}\n ref={popoverRef}\n constrainSize={false}\n fallbackPlacements={['top-end']}\n portal\n tone=\"default\"\n placement=\"bottom\"\n >\n <Button\n disabled={!canPerformActions || isPerformingOperation}\n icon={isPerformingOperation ? Spinner : EllipsisHorizontalIcon}\n mode=\"bleed\"\n tooltipProps={{content: t('release.menu.tooltip')}}\n aria-label={t('release.menu.label')}\n data-testid=\"scheduled-draft-menu-button\"\n onClick={handleOnButtonClick}\n />\n </Popover>\n {dialogs}\n </>\n )\n}\n","import {Flex, Text} from '@sanity/ui'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {useSingleDocReleaseEnabled} from '../../../singleDocRelease/context/SingleDocReleaseEnabledProvider'\nimport {singleDocReleaseNamespace} from '../../../singleDocRelease/i18n'\nimport {ReleaseIllustration} from '../resources/ReleaseIllustration'\n\nexport const ScheduledDraftsEmptyState = () => {\n const {t} = useTranslation(singleDocReleaseNamespace)\n const {mode} = useSingleDocReleaseEnabled()\n if (mode === 'upsell') {\n return null\n }\n return (\n <Flex direction=\"column\" flex={1} justify={'center'} align={'center'}>\n <Flex gap={3} direction=\"column\" align=\"center\" style={{maxWidth: '300px'}}>\n <ReleaseIllustration />\n <Text as=\"h1\" size={1} weight=\"semibold\" data-testid=\"no-releases-info-text\">\n {t('empty-state.title')}\n </Text>\n <Text size={1} muted style={{textAlign: 'center'}}>\n {t('empty-state.description')}\n </Text>\n\n <Button\n as=\"a\"\n href=\"https://www.sanity.io/docs/studio/scheduled-drafts-user-guide\"\n target=\"_blank\"\n mode=\"ghost\"\n text={t('empty-state.action.documentation')}\n />\n </Flex>\n </Flex>\n )\n}\n","import {ErrorOutlineIcon} from '@sanity/icons/ErrorOutline'\nimport {Box, Card, Flex, Skeleton, Text} from '@sanity/ui'\n\nimport {ToneIcon} from '../../../../../ui-components/toneIcon/ToneIcon'\nimport {Tooltip} from '../../../../../ui-components/tooltip/Tooltip'\nimport {useTranslation} from '../../../../i18n/hooks/useTranslation'\nimport {useScheduledDraftDocument} from '../../../../singleDocRelease/hooks/useScheduledDraftDocument'\nimport {releasesLocaleNamespace} from '../../../i18n'\nimport {ReleaseDocumentPreview} from '../../components/ReleaseDocumentPreview'\nimport {type VisibleColumn} from '../../components/Table/types'\nimport {type TableRelease} from '../ReleasesOverview'\n\nexport const ScheduledDraftDocumentPreview: VisibleColumn<TableRelease>['cell'] = ({\n datum: release,\n cellProps,\n}) => {\n const {t} = useTranslation(releasesLocaleNamespace)\n const {\n firstDocument,\n firstDocumentValidation,\n loading: documentsLoading,\n } = useScheduledDraftDocument(release._id && !release.isLoading ? release._id : undefined)\n\n const isLoading = release.isLoading || documentsLoading || !firstDocument\n\n if (isLoading) {\n return (\n <Flex {...cellProps} align=\"center\" paddingX={2} paddingY={3} sizing=\"border\">\n <Skeleton animated radius={2} style={{height: '32px', width: '100%'}} />\n </Flex>\n )\n }\n\n const validationErrorCount =\n firstDocumentValidation?.filter((validation) => validation.level === 'error').length || 0\n\n return (\n <Box {...cellProps} flex={1} padding={1} paddingLeft={2} paddingRight={2} sizing=\"border\">\n <Card tone={validationErrorCount ? 'critical' : 'inherit'} radius={2}>\n <Flex align=\"center\" gap={2}>\n <Box flex={1}>\n <ReleaseDocumentPreview\n documentId={firstDocument._id}\n documentTypeName={firstDocument._type}\n releaseId={release._id}\n releaseState={release.state}\n isCardinalityOneRelease\n documentRevision={firstDocument._rev}\n layout=\"default\"\n />\n </Box>\n {validationErrorCount > 0 && (\n <Box paddingRight={3}>\n <Tooltip\n portal\n placement=\"bottom-end\"\n content={\n <Text muted size={1}>\n <Flex align=\"center\" gap={3} padding={1}>\n <ToneIcon icon={ErrorOutlineIcon} tone=\"critical\" />\n {t('document-validation.error', {count: validationErrorCount})}\n </Flex>\n </Text>\n }\n >\n <Text size={1}>\n <ToneIcon icon={ErrorOutlineIcon} tone=\"critical\" />\n </Text>\n </Tooltip>\n </Box>\n )}\n </Flex>\n </Card>\n </Box>\n )\n}\n","import {useScheduledDraftDocument} from '../../../../singleDocRelease/hooks/useScheduledDraftDocument'\nimport {getReleaseIdFromReleaseDocumentId} from '../../../util/getReleaseIdFromReleaseDocumentId'\nimport {useReleaseHistory} from '../../detail/documentTable/useReleaseHistory'\n\n/**\n * @internal\n */\nexport function useReleaseCreator(\n releaseDocumentId: string | undefined,\n isLoading: boolean = false,\n): {\n createdBy: string | undefined\n loading: boolean\n} {\n const releaseId =\n releaseDocumentId && !isLoading ? getReleaseIdFromReleaseDocumentId(releaseDocumentId) : ''\n\n const {firstDocument, loading: documentsLoading} = useScheduledDraftDocument(releaseDocumentId)\n const {documentHistory, loading: historyLoading} = useReleaseHistory(\n firstDocument?._id,\n releaseId,\n )\n\n if (!releaseDocumentId || isLoading) {\n return {createdBy: undefined, loading: false}\n }\n\n if (documentsLoading || historyLoading) {\n return {createdBy: undefined, loading: true}\n }\n\n return {\n createdBy: documentHistory?.createdBy,\n loading: false,\n }\n}\n","import {Flex, Skeleton, Stack} from '@sanity/ui'\n\nimport {AvatarSkeleton, UserAvatar} from '../../../../components/userAvatar/UserAvatar'\nimport {ReleaseTime} from '../../components/ReleaseTime'\nimport {type VisibleColumn} from '../../components/Table/types'\nimport {useReleaseCreator} from '../hooks/useReleaseCreator'\nimport {type TableRelease} from '../ReleasesOverview'\n\nexport const ScheduledDraftMetadataCell: VisibleColumn<TableRelease>['cell'] = ({\n datum,\n cellProps,\n}) => {\n // Skeleton IDs don't start with _.releases\n // so pass undefined in loading cases\n const {createdBy, loading: creatorLoading} = useReleaseCreator(\n datum.isLoading ? undefined : datum._id,\n datum.isLoading,\n )\n\n if (datum.isLoading || !datum.metadata) {\n return (\n <Flex {...cellProps} align=\"center\" paddingX={2} paddingY={3} sizing=\"border\">\n <Skeleton animated radius={2} style={{height: '40px', width: '150px'}} />\n </Flex>\n )\n }\n\n return (\n <Flex {...cellProps} align=\"center\" paddingX={2} paddingY={3} sizing=\"border\">\n <Flex align=\"center\" gap={3}>\n {creatorLoading && <AvatarSkeleton $size={1} animated />}\n {!creatorLoading && createdBy && <UserAvatar user={createdBy} size={1} />}\n <Stack gap={1}>\n <ReleaseTime release={datum} />\n </Stack>\n </Flex>\n </Flex>\n )\n}\n","import {WarningOutlineIcon} from '@sanity/icons/WarningOutline'\nimport {Flex, Text} from '@sanity/ui'\n\nimport {ToneIcon} from '../../../../../ui-components/toneIcon/ToneIcon'\nimport {Tooltip} from '../../../../../ui-components/tooltip/Tooltip'\nimport {useTranslation} from '../../../../i18n/hooks/useTranslation'\nimport {releasesLocaleNamespace} from '../../../i18n'\nimport {getIsScheduledDateInPast} from '../../../util/getIsScheduledDateInPast'\nimport {type VisibleColumn} from '../../components/Table/types'\nimport {type TableRelease} from '../ReleasesOverview'\n\nexport const ScheduledDraftWarningCell: VisibleColumn<TableRelease>['cell'] = ({\n datum,\n cellProps,\n}) => {\n const {t} = useTranslation(releasesLocaleNamespace)\n const hasWarning = datum.state === 'active' && getIsScheduledDateInPast(datum)\n\n return (\n <Flex\n {...cellProps}\n align=\"center\"\n gap={2}\n paddingX={2}\n paddingY={3}\n sizing=\"border\"\n data-testid=\"warning-indicator\"\n >\n {hasWarning && (\n <Tooltip content={<Text size={1}>{t('passed-intended-publish-date-draft')}</Text>} portal>\n <Text size={1}>\n <ToneIcon icon={WarningOutlineIcon} tone=\"caution\" />\n </Text>\n </Tooltip>\n )}\n </Flex>\n )\n}\n","import {Flex} from '@sanity/ui'\n// oxlint-disable-next-line @sanity/i18n/no-i18next-import -- figure out how to have the linter be fine with importing types-only\nimport {type TFunction} from 'i18next'\n\nimport {Headers} from '../components/Table/TableHeader'\nimport {type Column} from '../components/Table/types'\nimport {ScheduledDraftDocumentPreview} from './columnCells/ScheduledDraftDocumentPreview'\nimport {ScheduledDraftMetadataCell} from './columnCells/ScheduledDraftMetadataCell'\nimport {ScheduledDraftWarningCell} from './columnCells/ScheduledDraftWarningCell'\nimport {type Mode} from './queryParamUtils'\nimport {type TableRelease} from './ReleasesOverview'\n\nexport const scheduledDraftsOverviewColumnDefs: (\n t: TFunction<'releases'>,\n releaseGroupMode: Mode,\n) => Column<TableRelease>[] = (t, releaseGroupMode) => {\n return [\n {\n id: 'documentPreview',\n sorting: false,\n width: null,\n style: {flex: 1},\n header: (props) => (\n <Flex {...props.headerProps} paddingLeft={2} paddingRight={2} paddingY={3} sizing=\"border\">\n <Headers.BasicHeader text={t('table-header.document')} />\n </Flex>\n ),\n cell: ScheduledDraftDocumentPreview,\n },\n {\n id: 'publishAt',\n sorting: true,\n width: 300,\n header: (props) => (\n <Flex {...props.headerProps} paddingY={3} paddingX={2} sizing=\"border\">\n <Headers.SortHeaderButton\n {...props}\n text={\n releaseGroupMode === 'archived'\n ? t('table-header.scheduled-draft.published-at')\n : releaseGroupMode === 'paused'\n ? t('table-header.intended-for')\n : t('table-header.scheduled-for')\n }\n />\n </Flex>\n ),\n cell: ScheduledDraftMetadataCell,\n },\n {\n id: 'warning',\n sorting: false,\n width: 40,\n header: ({headerProps}) => <Flex {...headerProps} paddingY={3} sizing=\"border\" />,\n cell: ScheduledDraftWarningCell,\n },\n ]\n}\n","import {Box, Container, Flex} from '@sanity/ui'\nimport {motion} from 'motion/react'\nimport {useCallback} from 'react'\nimport {styled} from 'styled-components'\n\nimport {useSingleDocReleaseEnabled} from '../../../singleDocRelease/context/SingleDocReleaseEnabledProvider'\nimport {useSingleDocReleaseUpsell} from '../../../singleDocRelease/context/SingleDocReleaseUpsellProvider'\nimport {UpsellPanel} from '../../../studio/upsell/UpsellPanel'\nimport {useReleasesUpsell} from '../../contexts/upsell/useReleasesUpsell'\nimport {ReleaseIllustration} from '../resources/ReleaseIllustration'\nimport {type CardinalityView} from './queryParamUtils'\n\nconst Panel = styled(Container)`\n width: auto;\n flex-shrink: 0;\n`\n\nconst SingleDocReleasesUpsell = () => {\n const {mode} = useSingleDocReleaseEnabled()\n const {upsellData, telemetryLogs} = useSingleDocReleaseUpsell()\n const handlePrimaryClick = useCallback(() => {\n telemetryLogs.panelPrimaryClicked()\n }, [telemetryLogs])\n\n const handleSecondaryClick = useCallback(() => {\n telemetryLogs.panelSecondaryClicked()\n }, [telemetryLogs])\n\n if (mode !== 'upsell' || !upsellData) {\n return null\n }\n return (\n <Flex direction=\"column\" flex={1} justify={'center'} align={'center'}>\n <motion.div\n initial={{opacity: 0}}\n animate={{opacity: 1}}\n transition={{duration: 0.3, ease: 'easeInOut'}}\n >\n <Panel width={0} padding={4} paddingY={1}>\n <Flex align={'center'} direction=\"column\">\n <ReleaseIllustration />\n <Box paddingTop={2}>\n <UpsellPanel\n align=\"center\"\n layout=\"vertical\"\n data={{...upsellData, image: null}}\n border={false}\n onPrimaryClick={handlePrimaryClick}\n onSecondaryClick={handleSecondaryClick}\n />\n </Box>\n </Flex>\n </Panel>\n </motion.div>\n </Flex>\n )\n}\n\nconst ReleasesUpsell = () => {\n const {upsellData, telemetryLogs, mode} = useReleasesUpsell()\n const handlePrimaryClick = useCallback(() => {\n telemetryLogs.panelPrimaryClicked()\n }, [telemetryLogs])\n\n const handleSecondaryClick = useCallback(() => {\n telemetryLogs.panelSecondaryClicked()\n }, [telemetryLogs])\n\n if (!upsellData || mode === 'default') {\n return null\n }\n return (\n <Flex direction=\"column\" flex={1} justify={'center'} align={'center'}>\n <motion.div\n initial={{opacity: 0}}\n animate={{opacity: 1}}\n transition={{duration: 0.3, ease: 'easeInOut'}}\n >\n <Panel width={0} padding={4} paddingY={1}>\n <Flex align={'center'} direction=\"column\">\n <ReleaseIllustration />\n <Box paddingTop={2}>\n <UpsellPanel\n align=\"center\"\n layout=\"vertical\"\n data={{...upsellData, image: null}}\n border={false}\n onPrimaryClick={handlePrimaryClick}\n onSecondaryClick={handleSecondaryClick}\n />\n </Box>\n </Flex>\n </Panel>\n </motion.div>\n </Flex>\n )\n}\n\nexport function SchedulesUpsell({cardinalityView}: {cardinalityView: CardinalityView}) {\n if (cardinalityView === 'drafts') {\n return <SingleDocReleasesUpsell />\n }\n if (cardinalityView === 'releases') {\n return <ReleasesUpsell />\n }\n return null\n}\n","import {type ReleaseDocument} from '@sanity/client'\nimport {AddIcon} from '@sanity/icons/Add'\nimport {ChevronDownIcon} from '@sanity/icons/ChevronDown'\nimport {EarthGlobeIcon} from '@sanity/icons/EarthGlobe'\nimport {Box, type ButtonMode, Card, Flex, Inline, useMediaIndex} from '@sanity/ui'\nimport {isSameDay} from 'date-fns/isSameDay'\nimport {AnimatePresence, motion} from 'motion/react'\nimport {\n type CSSProperties,\n type MouseEventHandler,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport {useRouter} from 'sanity/router'\n\nimport {Button} from '../../../../ui-components/button/Button'\nimport {Tooltip} from '../../../../ui-components/tooltip/Tooltip'\nimport {CalendarFilter} from '../../../components/inputs/DateFilters/calendar/CalendarFilter'\nimport useDialogTimeZone from '../../../hooks/useDialogTimeZone'\nimport {useTimeZone} from '../../../hooks/useTimeZone'\nimport {useTranslation} from '../../../i18n/hooks/useTranslation'\nimport {usePerspective} from '../../../perspective/usePerspective'\nimport {useSingleDocReleaseEnabled} from '../../../singleDocRelease/context/SingleDocReleaseEnabledProvider'\nimport {useScheduledDraftsEnabled} from '../../../singleDocRelease/hooks/useScheduledDraftsEnabled'\nimport {CONTENT_RELEASES_TIME_ZONE_SCOPE} from '../../../studio/constants'\nimport {useWorkspace} from '../../../studio/workspace'\nimport {isCardinalityOneRelease, isPausedCardinalityOneRelease} from '../../../util/releaseUtils'\nimport {CreateReleaseDialog} from '../../components/dialog/CreateReleaseDialog'\nimport {useReleasesUpsell} from '../../contexts/upsell/useReleasesUpsell'\nimport {releasesLocaleNamespace} from '../../i18n'\nimport {isReleaseDocument} from '../../store/types'\nimport {useActiveReleases} from '../../store/useActiveReleases'\nimport {useArchivedReleases} from '../../store/useArchivedReleases'\nimport {useReleaseOperations} from '../../store/useReleaseOperations'\nimport {useReleasePermissions} from '../../store/useReleasePermissions'\nimport {type ReleasesMetadata, useReleasesMetadata} from '../../store/useReleasesMetadata'\nimport {getIsScheduledDateInPast} from '../../util/getIsScheduledDateInPast'\nimport {getReleaseTone} from '../../util/getReleaseTone'\nimport {\n filterReleasesForOverview,\n getReleaseDefaults,\n shouldShowReleaseInView,\n} from '../../util/util'\nimport {Table, type TableRowProps} from '../components/Table/Table'\nimport {type TableSort} from '../components/Table/TableProvider'\nimport {CalendarPopover} from './CalendarPopover'\nimport {CardinalityViewPicker} from './CardinalityViewPicker'\nimport {ConfirmActiveScheduledDraftsBanner} from './ConfirmActiveScheduledDraftsBanner'\nimport {DraftsDisabledBanner} from './DraftsDisabledBanner'\nimport {\n buildReleasesSearchParams,\n type CardinalityView,\n getInitialCardinalityView,\n getInitialFilterDate,\n getInitialReleaseGroupMode,\n getInitialReleaseNotFound,\n type Mode,\n} from './queryParamUtils'\nimport {createReleaseCalendarFilterDay, DateFilterButton} from './ReleaseCalendarFilter'\nimport {ReleaseMenuButtonWrapper} from './ReleaseMenuButtonWrapper'\nimport {ReleaseNotFoundBanner} from './ReleaseNotFoundBanner'\nimport {ReleasesEmptyState} from './ReleasesEmptyState'\nimport {releasesOverviewColumnDefs} from './ReleasesOverviewColumnDefs'\nimport {ScheduledDraftMenuButtonWrapper} from './ScheduledDraftMenuButtonWrapper'\nimport {ScheduledDraftsEmptyState} from './ScheduledDraftsEmptyState'\nimport {scheduledDraftsOverviewColumnDefs} from './ScheduledDraftsOverviewColumnDefs'\nimport {SchedulesUpsell} from './SchedulesUpsell'\nimport {useTimezoneAdjustedDateTimeRange} from './useTimezoneAdjustedDateTimeRange'\n\nconst MotionButton = motion.create(Button)\n\nexport interface TableRelease extends ReleaseDocument {\n documentsMetadata?: ReleasesMetadata\n isDeleted?: boolean\n}\n\nconst DEFAULT_RELEASES_OVERVIEW_SORT: TableSort = {column: 'publishAt', direction: 'asc'}\nconst DEFAULT_ARCHIVED_RELEASES_OVERVIEW_SORT: TableSort = {\n column: 'lastActivity',\n direction: 'desc',\n}\n\nfunction toLocalDateComponents(utcDate: Date, utcToZoneDate: (date: Date) => Date): Date {\n const tz = utcToZoneDate(utcDate)\n return new Date(tz.getFullYear(), tz.getMonth(), tz.getDate())\n}\n\nexport function ReleasesOverview() {\n const {data: allReleases, loading: loadingReleases} = useActiveReleases()\n const {data: allArchivedReleases} = useArchivedReleases()\n const {mode: releasesUpsellMode, handleOpenDialog: handleOpenReleasesUpsellDialog} =\n useReleasesUpsell()\n const {mode: scheduledDraftsMode} = useSingleDocReleaseEnabled()\n const isScheduledDraftsEnabled = useScheduledDraftsEnabled()\n const {document, releases: releasesConfig} = useWorkspace()\n const isReleasesEnabled = Boolean(releasesConfig?.enabled)\n const isDraftModelEnabled = document?.drafts?.enabled\n\n const router = useRouter()\n const navigateRef = useRef(router.navigate)\n const [releaseGroupMode, setReleaseGroupMode] = useState<Mode>(getInitialReleaseGroupMode(router))\n\n const cardinalityView = useMemo(\n () => getInitialCardinalityView({router, isScheduledDraftsEnabled, isReleasesEnabled})(),\n [router, isScheduledDraftsEnabled, isReleasesEnabled],\n )\n\n const [releaseFilterDate, setReleaseFilterDate] = useState<Date | undefined>(\n getInitialFilterDate(router),\n )\n const [showReleaseNotFound, setShowReleaseNotFound] = useState<boolean>(() =>\n getInitialReleaseNotFound(router),\n )\n const [isCreateReleaseDialogOpen, setIsCreateReleaseDialogOpen] = useState(false)\n\n // Filter releases based on cardinality view\n // 'releases' view shows releases with cardinality 'many' or undefined\n // 'drafts' view shows releases with cardinality 'one'\n const releases = useMemo(\n () => allReleases.filter(shouldShowReleaseInView(cardinalityView)),\n [allReleases, cardinalityView],\n )\n\n const archivedReleases = useMemo(\n () => allArchivedReleases.filter(shouldShowReleaseInView(cardinalityView)),\n [allArchivedReleases, cardinalityView],\n )\n\n const pausedReleases = useMemo(\n () =>\n cardinalityView === 'drafts'\n ? releases.filter((release) => isPausedCardinalityOneRelease(release))\n : [],\n [releases, cardinalityView],\n )\n\n const releaseIds = useMemo(() => releases.map((release) => release._id), [releases])\n const {data: releasesMetadata, loading: loadingReleasesMetadata} = useReleasesMetadata(releaseIds)\n const loading = loadingReleases || (loadingReleasesMetadata && !releasesMetadata)\n const loadingTableData = loading || (!releasesMetadata && Boolean(releaseIds.length))\n const {t} = useTranslation(releasesLocaleNamespace)\n const {t: tCore} = useTranslation()\n const timeZoneScope = CONTENT_RELEASES_TIME_ZONE_SCOPE\n const {timeZone, utcToCurrentZoneDate} = useTimeZone(timeZoneScope)\n const {selectedPerspective} = usePerspective()\n const {DialogTimeZone, dialogProps, dialogTimeZoneShow} = useDialogTimeZone(timeZoneScope)\n const getTimezoneAdjustedDateTimeRange = useTimezoneAdjustedDateTimeRange()\n\n const {createRelease} = useReleaseOperations()\n const {checkWithPermissionGuard} = useReleasePermissions()\n const [hasCreatePermission, setHasCreatePermission] = useState<boolean | null>(null)\n\n const mediaIndex = useMediaIndex()\n const isNarrowViewport = mediaIndex < 2\n\n const narrowFilterStyle: CSSProperties | undefined = isNarrowViewport\n ? {minWidth: '100%', order: 3}\n : undefined\n const narrowTimezoneStyle: CSSProperties | undefined = isNarrowViewport\n ? {marginLeft: 'auto'}\n : undefined\n const timeZoneLabel = `${timeZone.abbreviation} (${timeZone.namePretty})`\n const timeZoneButtonProps = isNarrowViewport\n ? {tooltipProps: {content: timeZoneLabel}}\n : {iconRight: ChevronDownIcon, text: timeZoneLabel}\n\n const getRowProps = useCallback(\n (datum: TableRelease): Partial<TableRowProps> => {\n if (datum.isDeleted) {\n return {tone: 'transparent'}\n }\n\n if (isReleaseDocument(selectedPerspective) && selectedPerspective._id === datum._id) {\n return {tone: getReleaseTone(datum)}\n }\n\n if (datum.state === 'active' && getIsScheduledDateInPast(datum)) {\n return {tone: 'caution'}\n }\n\n return {tone: 'default'}\n },\n [selectedPerspective],\n )\n\n const [scrollContainerRef, setScrollContainerRef] = useState<HTMLDivElement | null>(null)\n\n const hasReleases = releases.length > 0 || archivedReleases.length > 0\n // banner that shows when drafts mode is disabled, or scheduled drafts are disabled\n // but there are still scheduled drafts\n const showDraftsDisabledBanner =\n cardinalityView === 'drafts' && (!isDraftModelEnabled || !isScheduledDraftsEnabled)\n const loadingOrHasReleases = loading || hasReleases\n const hasNoReleases = !loading && !hasReleases\n\n const tableReleases = useMemo<TableRelease[]>(() => {\n if (!hasReleases || !releasesMetadata) return []\n return releases.map((release) => ({\n ...release,\n publishAt: release.publishAt || release.metadata.intendedPublishAt,\n documentsMetadata: releasesMetadata[release._id] || {},\n }))\n }, [hasReleases, releasesMetadata, releases])\n\n const isMounted = useRef(false)\n useEffect(() => {\n isMounted.current = true\n void checkWithPermissionGuard(createRelease, getReleaseDefaults()).then((hasPermissions) => {\n if (isMounted.current) setHasCreatePermission(hasPermissions)\n })\n\n return () => {\n isMounted.current = false\n }\n }, [checkWithPermissionGuard, createRelease])\n\n // switch to open mode if on archived mode and there are no archived releases\n if (releaseGroupMode === 'archived' && !loadingReleases && !archivedReleases.length) {\n setReleaseGroupMode('active')\n }\n\n // switch to open mode if on paused mode and there are no paused releases\n if (releaseGroupMode === 'paused' && !loadingReleases && !pausedReleases.length) {\n setReleaseGroupMode('active')\n }\n\n const handleDismissReleaseNotFound = useCallback(() => {\n setShowReleaseNotFound(false)\n }, [])\n\n const handleReleaseGroupModeChange = useCallback<MouseEventHandler<HTMLButtonElement>>(\n ({currentTarget: {value: groupMode}}) => {\n setReleaseGroupMode(groupMode as Mode)\n },\n [],\n )\n\n const handleCardinalityViewChange = useCallback(\n (view: CardinalityView) => () => {\n router.navigate({\n _searchParams: buildReleasesSearchParams(releaseFilterDate, releaseGroupMode, view),\n })\n },\n [router, releaseFilterDate, releaseGroupMode],\n )\n\n const handleSelectFilterDate = useCallback(\n (date?: Date) =>\n setReleaseFilterDate((prevFilterDate) => {\n if (!date) return undefined\n const normalized = toLocalDateComponents(date, utcToCurrentZoneDate)\n return prevFilterDate && isSameDay(prevFilterDate, normalized) ? undefined : normalized\n }),\n [utcToCurrentZoneDate],\n )\n\n const clearFilterDate = useCallback(() => {\n setReleaseFilterDate(undefined)\n setReleaseGroupMode('active')\n }, [])\n\n const handleNavigateToPaused = useCallback(() => {\n setReleaseFilterDate(undefined)\n setReleaseGroupMode('paused')\n }, [])\n\n useEffect(() => {\n navigateRef.current = router.navigate\n })\n\n // replace avoids a duplicate history entry alongside the user's navigation, which would swallow back clicks.\n useEffect(() => {\n navigateRef.current(\n {\n _searchParams: buildReleasesSearchParams(\n releaseFilterDate,\n releaseGroupMode,\n isScheduledDraftsEnabled ? cardinalityView : 'releases',\n ),\n },\n {replace: true},\n )\n }, [releaseFilterDate, releaseGroupMode, cardinalityView, isScheduledDraftsEnabled])\n\n const [hasMounted, setHasMounted] = useState(false)\n\n useEffect(() => {\n // oxlint-disable-next-line react/react-compiler\n setHasMounted(true)\n }, [])\n\n const showCalendar = mediaIndex > 2\n\n const currentArchivedPicker = useMemo(() => {\n const groupModeButtonBaseProps = {\n disabled: loading || !hasReleases,\n mode: 'bleed' as ButtonMode,\n padding: 2,\n ...(hasMounted\n ? {\n initial: {opacity: 0},\n animate: {opacity: 1},\n transition: {duration: 0.4, ease: 'easeInOut' as const},\n }\n : {}),\n }\n return (\n <AnimatePresence>\n <MotionButton\n key=\"open-group\"\n {...groupModeButtonBaseProps}\n onClick={handleReleaseGroupModeChange}\n selected={releaseGroupMode === 'active'}\n text={t('action.open')}\n value=\"active\"\n />\n {cardinalityView === 'drafts' && (\n <Tooltip\n disabled={pausedReleases.length !== 0}\n content={t('no-paused-release')}\n placement=\"bottom\"\n >\n <div>\n <MotionButton\n key=\"paused-group\"\n {...groupModeButtonBaseProps}\n disabled={groupModeButtonBaseProps.disabled || !pausedReleases.length}\n onClick={handleReleaseGroupModeChange}\n selected={releaseGroupMode === 'paused'}\n text={t('action.paused')}\n value=\"paused\"\n />\n </div>\n </Tooltip>\n )}\n <Tooltip\n disabled={archivedReleases.length !== 0}\n content={t('no-archived-release')}\n placement=\"bottom\"\n >\n <div>\n <MotionButton\n key=\"archived-group\"\n {...groupModeButtonBaseProps}\n disabled={groupModeButtonBaseProps.disabled || !archivedReleases.length}\n onClick={handleReleaseGroupModeChange}\n selected={releaseGroupMode === 'archived'}\n text={t('action.archived')}\n value=\"archived\"\n />\n </div>\n </Tooltip>\n </AnimatePresence>\n )\n }, [\n loading,\n hasReleases,\n hasMounted,\n handleReleaseGroupModeChange,\n releaseGroupMode,\n t,\n archivedReleases.length,\n pausedReleases.length,\n cardinalityView,\n ])\n\n const handleOnClickCreateRelease = useCallback(() => {\n if (releasesUpsellMode === 'upsell') {\n handleOpenReleasesUpsellDialog()\n return\n }\n setIsCreateReleaseDialogOpen(true)\n }, [releasesUpsellMode, handleOpenReleasesUpsellDialog])\n\n const createReleaseButton = useMemo(() => {\n if (isScheduledDraftsEnabled && cardinalityView === 'drafts') return null\n\n return (\n <Button\n icon={AddIcon}\n disabled={!hasCreatePermission || isCreateReleaseDialogOpen}\n onClick={handleOnClickCreateRelease}\n text={tCore('release.action.create-new')}\n tooltipProps={{\n disabled: hasCreatePermission === true,\n content: tCore('release.action.permission.error'),\n }}\n />\n )\n }, [\n cardinalityView,\n hasCreatePermission,\n isCreateReleaseDialogOpen,\n handleOnClickCreateRelease,\n tCore,\n isScheduledDraftsEnabled,\n ])\n\n const handleOnCreateRelease = useCallback(\n (createdReleaseId: string) => {\n setIsCreateReleaseDialogOpen(false)\n\n router.navigate(\n {releaseId: createdReleaseId},\n {\n stickyParams: {\n excludedPerspectives: null,\n perspective: createdReleaseId,\n },\n },\n )\n },\n [router],\n )\n\n const renderRowActions = useCallback(\n ({datum}: {datum: TableRelease | unknown}) => {\n const release = datum as TableRelease\n\n if (release.isDeleted || release.isLoading) return null\n\n if (cardinalityView === 'drafts') {\n return <ScheduledDraftMenuButtonWrapper release={release} />\n }\n\n const documentsCount =\n (releaseGroupMode === 'active'\n ? release.documentsMetadata?.documentCount\n : release.finalDocumentStates?.length) ?? 0\n\n return <ReleaseMenuButtonWrapper release={release} documentsCount={documentsCount} />\n },\n [releaseGroupMode, cardinalityView],\n )\n\n const filteredReleases = useMemo(() => {\n const dateFilter = releaseFilterDate\n ? {\n filterDate: releaseFilterDate,\n getTimezoneAdjustedDateTimeRange,\n }\n : undefined\n\n return filterReleasesForOverview({\n releases: tableReleases,\n archivedReleases,\n cardinalityView,\n releaseGroupMode,\n dateFilter,\n })\n }, [\n tableReleases,\n archivedReleases,\n cardinalityView,\n releaseGroupMode,\n releaseFilterDate,\n getTimezoneAdjustedDateTimeRange,\n ])\n\n const showConfirmActiveScheduledDraftsBanner =\n cardinalityView === 'drafts' &&\n releases.some((release) => release.state === 'active' && isCardinalityOneRelease(release))\n\n const calendarFilterContent = useMemo(\n () => (\n <CalendarFilter\n disabled={loading || releases.length === 0}\n renderCalendarDay={createReleaseCalendarFilterDay(cardinalityView)}\n selectedDate={releaseFilterDate}\n onSelect={handleSelectFilterDate}\n timeZoneScope={CONTENT_RELEASES_TIME_ZONE_SCOPE}\n />\n ),\n [loading, releases, releaseFilterDate, handleSelectFilterDate, cardinalityView],\n )\n\n const renderCalendarFilter = useMemo(\n () => (\n <Flex flex=\"none\">\n <Card borderRight flex=\"none\" disabled>\n {calendarFilterContent}\n </Card>\n </Flex>\n ),\n [calendarFilterContent],\n )\n\n const tableColumns = useMemo(() => {\n if (cardinalityView === 'drafts') {\n return scheduledDraftsOverviewColumnDefs(t, releaseGroupMode)\n }\n return releasesOverviewColumnDefs(t, releaseGroupMode)\n }, [cardinalityView, releaseGroupMode, t])\n\n const hasBannerAboveTable =\n showReleaseNotFound || showDraftsDisabledBanner || showConfirmActiveScheduledDraftsBanner\n\n const isArchivedReleasesView = releaseGroupMode === 'archived' && cardinalityView === 'releases'\n const defaultTableSort = isArchivedReleasesView\n ? DEFAULT_ARCHIVED_RELEASES_OVERVIEW_SORT\n : DEFAULT_RELEASES_OVERVIEW_SORT\n\n const releasesEmptyStateComponent = useCallback(\n () => <ReleasesEmptyState createReleaseButton={createReleaseButton} />,\n [createReleaseButton],\n )\n\n const tableEmptyState = useMemo(() => {\n if (cardinalityView === 'releases' && releaseGroupMode === 'active') {\n return releasesEmptyStateComponent\n }\n // Use specific text for drafts view\n if (cardinalityView === 'drafts') {\n return t('no-scheduled-drafts')\n }\n // Use default text empty state for other cases (archived, etc.)\n return t('no-releases')\n }, [cardinalityView, releaseGroupMode, releasesEmptyStateComponent, t])\n\n function renderNoReleasesEmptyState() {\n const isUpsell =\n (cardinalityView === 'releases' && releasesUpsellMode === 'upsell') ||\n (cardinalityView === 'drafts' && scheduledDraftsMode === 'upsell')\n\n if (isUpsell) {\n return <SchedulesUpsell cardinalityView={cardinalityView} />\n }\n\n if (cardinalityView === 'drafts') {\n return <ScheduledDraftsEmptyState />\n }\n\n return <ReleasesEmptyState createReleaseButton={createReleaseButton} />\n }\n\n return (\n <Flex direction=\"row\" flex={1} style={{height: '100%'}}>\n <Flex flex={1}>\n {showCalendar && renderCalendarFilter}\n\n <Flex direction=\"column\" flex={1} style={{position: 'relative'}}>\n <Card flex=\"none\" padding={3}>\n <Flex align=\"center\" flex={1} gap={3} wrap=\"wrap\">\n <Inline>\n {!showCalendar && (\n <CalendarPopover content={calendarFilterContent} asDialog={isNarrowViewport} />\n )}\n <CardinalityViewPicker\n cardinalityView={cardinalityView}\n loading={loading}\n onCardinalityViewChange={handleCardinalityViewChange}\n isScheduledDraftsEnabled={isScheduledDraftsEnabled}\n allReleases={allReleases}\n isReleasesEnabled={isReleasesEnabled}\n isDraftModelEnabled={isDraftModelEnabled}\n />\n </Inline>\n\n <Flex flex={1} gap={1} style={narrowFilterStyle}>\n {loadingOrHasReleases &&\n (releaseFilterDate ? (\n <DateFilterButton filterDate={releaseFilterDate} onClear={clearFilterDate} />\n ) : (\n currentArchivedPicker\n ))}\n </Flex>\n <Flex flex=\"none\" gap={2} style={narrowTimezoneStyle}>\n <Button\n icon={EarthGlobeIcon}\n mode=\"bleed\"\n onClick={dialogTimeZoneShow}\n {...timeZoneButtonProps}\n />\n {DialogTimeZone && <DialogTimeZone {...dialogProps} />}\n {loadingOrHasReleases && createReleaseButton}\n </Flex>\n </Flex>\n </Card>\n {showReleaseNotFound && (\n <ReleaseNotFoundBanner onDismiss={handleDismissReleaseNotFound} />\n )}\n {showDraftsDisabledBanner && (\n <DraftsDisabledBanner\n isDraftModelEnabled={isDraftModelEnabled}\n isScheduledDraftsEnabled={isScheduledDraftsEnabled}\n allReleases={allReleases}\n />\n )}\n {showConfirmActiveScheduledDraftsBanner && (\n <ConfirmActiveScheduledDraftsBanner\n releases={releases}\n releaseGroupMode={releaseGroupMode}\n hasDateFilter={Boolean(releaseFilterDate)}\n onNavigateToPaused={handleNavigateToPaused}\n />\n )}\n\n {hasNoReleases ? (\n renderNoReleasesEmptyState()\n ) : (\n <Box\n ref={setScrollContainerRef}\n marginTop={hasBannerAboveTable ? 0 : 3}\n overflow=\"auto\"\n >\n <Table<TableRelease>\n // for resetting filter and sort on table when filer changed\n key={releaseFilterDate ? 'by_date' : releaseGroupMode}\n defaultSort={defaultTableSort}\n loading={loadingTableData}\n data={filteredReleases}\n columnDefs={tableColumns}\n emptyState={tableEmptyState}\n // oxlint-disable-next-line @sanity/i18n/no-attribute-string-literals\n rowId=\"_id\"\n rowActions={renderRowActions}\n rowProps={getRowProps}\n scrollContainerRef={scrollContainerRef}\n hideTableInlinePadding\n />\n </Box>\n )}\n </Flex>\n </Flex>\n {isCreateReleaseDialogOpen && (\n <CreateReleaseDialog\n onCancel={() => setIsCreateReleaseDialogOpen(false)}\n onSubmit={handleOnCreateRelease}\n origin=\"release-plugin\"\n />\n )}\n </Flex>\n )\n}\n","import {useRouter} from 'sanity/router'\n\nimport {ReleaseDetail} from './detail/ReleaseDetail'\nimport {ReleasesOverview} from './overview/ReleasesOverview'\n\nexport function ReleasesTool() {\n const router = useRouter()\n\n const {releaseId} = router.state as {releaseId?: string}\n if (releaseId) return <ReleaseDetail key={releaseId} />\n\n return <ReleasesOverview />\n}\n"],"mappings":"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"}