sanity 6.9.2 → 6.9.3-next.2

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 (121) hide show
  1. package/lib/{AddonDatasetProvider-CIq0vehp.js → AddonDatasetProvider-DDQrh5ob.js} +2 -2
  2. package/lib/{AddonDatasetProvider-CIq0vehp.js.map → AddonDatasetProvider-DDQrh5ob.js.map} +1 -1
  3. package/lib/{CalendarFilter-DRKSPTWd.js → CalendarFilter-DYbHmp_x.js} +3 -3
  4. package/lib/{CalendarFilter-DRKSPTWd.js.map → CalendarFilter-DYbHmp_x.js.map} +1 -1
  5. package/lib/{CommentsDocumentLayout-NGghzPWZ.js → CommentsDocumentLayout-qdF_HKSC.js} +2 -2
  6. package/lib/{CommentsDocumentLayout-NGghzPWZ.js.map → CommentsDocumentLayout-qdF_HKSC.js.map} +1 -1
  7. package/lib/{CommentsField-_QkW9aLe.js → CommentsField-i8xs45PB.js} +3 -3
  8. package/lib/{CommentsField-_QkW9aLe.js.map → CommentsField-i8xs45PB.js.map} +1 -1
  9. package/lib/{CommentsInput-DdtI0Naj.js → CommentsInput-B9iSSi8A.js} +6 -6
  10. package/lib/{CommentsInput-DdtI0Naj.js.map → CommentsInput-B9iSSi8A.js.map} +1 -1
  11. package/lib/{CommentsInspector-BQtqxGsK.js → CommentsInspector-rGGP9buL.js} +5 -5
  12. package/lib/{CommentsInspector-BQtqxGsK.js.map → CommentsInspector-rGGP9buL.js.map} +1 -1
  13. package/lib/{CommentsListItem-B0yR0R5a.js → CommentsListItem-DKS6V_TV.js} +3 -3
  14. package/lib/{CommentsListItem-B0yR0R5a.js.map → CommentsListItem-DKS6V_TV.js.map} +1 -1
  15. package/lib/{CommentsSelectedPathProvider-BYZ2OmJ9.js → CommentsSelectedPathProvider-BnZ6GdNc.js} +3 -3
  16. package/lib/{CommentsSelectedPathProvider-BYZ2OmJ9.js.map → CommentsSelectedPathProvider-BnZ6GdNc.js.map} +1 -1
  17. package/lib/{CommentsStudioLayout-DK4W-hTe.js → CommentsStudioLayout-YlpSH_2Y.js} +4 -4
  18. package/lib/{CommentsStudioLayout-DK4W-hTe.js.map → CommentsStudioLayout-YlpSH_2Y.js.map} +1 -1
  19. package/lib/{DateInputs-enUB1fG8.js → DateInputs-DioSKqY0.js} +7 -7
  20. package/lib/{DateInputs-enUB1fG8.js.map → DateInputs-DioSKqY0.js.map} +1 -1
  21. package/lib/{DocumentStatusIndicator-BP3N2GwG.js → DocumentStatusIndicator-BPBTH84U.js} +5 -5
  22. package/lib/{DocumentStatusIndicator-BP3N2GwG.js.map → DocumentStatusIndicator-BPBTH84U.js.map} +1 -1
  23. package/lib/{FormValue-4tVuOoGw.js → FormValue-CJg43LyM.js} +2 -2
  24. package/lib/{FormValue-4tVuOoGw.js.map → FormValue-CJg43LyM.js.map} +1 -1
  25. package/lib/{LoadingBlock-Cy2Pckab.js → LoadingBlock-DPTVJ58M.js} +3 -3
  26. package/lib/{LoadingBlock-Cy2Pckab.js.map → LoadingBlock-DPTVJ58M.js.map} +1 -1
  27. package/lib/{ReleaseTitle-CkEMIfmx.js → ReleaseTitle-ln13W3P1.js} +4 -4
  28. package/lib/{ReleaseTitle-CkEMIfmx.js.map → ReleaseTitle-ln13W3P1.js.map} +1 -1
  29. package/lib/{ReleasesMetadataProvider-DuAzHgpz.js → ReleasesMetadataProvider-DbxROVyw.js} +2 -2
  30. package/lib/{ReleasesMetadataProvider-DuAzHgpz.js.map → ReleasesMetadataProvider-DbxROVyw.js.map} +1 -1
  31. package/lib/{ReleasesNav-DozstCwb.js → ReleasesNav-DNwncim0.js} +15 -15
  32. package/lib/{ReleasesNav-DozstCwb.js.map → ReleasesNav-DNwncim0.js.map} +1 -1
  33. package/lib/{ReleasesStudioLayout-CXoRbIpf.js → ReleasesStudioLayout-gzl7rMMp.js} +8 -8
  34. package/lib/{ReleasesStudioLayout-CXoRbIpf.js.map → ReleasesStudioLayout-gzl7rMMp.js.map} +1 -1
  35. package/lib/{ReleasesTool-Bxru9khS.js → ReleasesTool-CsHniZCP.js} +20 -20
  36. package/lib/{ReleasesTool-Bxru9khS.js.map → ReleasesTool-CsHniZCP.js.map} +1 -1
  37. package/lib/{SchedulePublishingStudioLayout-CjJ-nu3Q.js → SchedulePublishingStudioLayout-BzSSDp9x.js} +3 -3
  38. package/lib/{SchedulePublishingStudioLayout-CjJ-nu3Q.js.map → SchedulePublishingStudioLayout-BzSSDp9x.js.map} +1 -1
  39. package/lib/{SchedulePublishingUpsellProvider-CxpMXwyA.js → SchedulePublishingUpsellProvider-DQqIZsCc.js} +2 -2
  40. package/lib/{SchedulePublishingUpsellProvider-CxpMXwyA.js.map → SchedulePublishingUpsellProvider-DQqIZsCc.js.map} +1 -1
  41. package/lib/{ScheduledPublishingEnabledProvider-Bvx140h2.js → ScheduledPublishingEnabledProvider-BcWaBJw5.js} +3 -3
  42. package/lib/{ScheduledPublishingEnabledProvider-Bvx140h2.js.map → ScheduledPublishingEnabledProvider-BcWaBJw5.js.map} +1 -1
  43. package/lib/{SearchProvider-DSLbCdgY.js → SearchProvider-D3w4Bvul.js} +10 -10
  44. package/lib/{SearchProvider-DSLbCdgY.js.map → SearchProvider-D3w4Bvul.js.map} +1 -1
  45. package/lib/{SingleDocReleaseLayout-DQicfsKs.js → SingleDocReleaseLayout-CQCkL8-0.js} +2 -2
  46. package/lib/{SingleDocReleaseLayout-DQicfsKs.js.map → SingleDocReleaseLayout-CQCkL8-0.js.map} +1 -1
  47. package/lib/{SingleDocReleaseUpsellProvider-DXNTZGTk.js → SingleDocReleaseUpsellProvider-YDBCGrHT.js} +4 -4
  48. package/lib/{SingleDocReleaseUpsellProvider-DXNTZGTk.js.map → SingleDocReleaseUpsellProvider-YDBCGrHT.js.map} +1 -1
  49. package/lib/{TasksStudioActiveToolLayout-CNpB5xLh.js → TasksStudioActiveToolLayout-DAmh3t6t.js} +16 -16
  50. package/lib/{TasksStudioActiveToolLayout-CNpB5xLh.js.map → TasksStudioActiveToolLayout-DAmh3t6t.js.map} +1 -1
  51. package/lib/{TasksStudioLayout-CnsvBNfw.js → TasksStudioLayout-6qNY69FD.js} +5 -5
  52. package/lib/{TasksStudioLayout-CnsvBNfw.js.map → TasksStudioLayout-6qNY69FD.js.map} +1 -1
  53. package/lib/{TimeZoneButton-DMd-M_ri.js → TimeZoneButton-TmrFye13.js} +4 -4
  54. package/lib/{TimeZoneButton-DMd-M_ri.js.map → TimeZoneButton-TmrFye13.js.map} +1 -1
  55. package/lib/{Tool-VgnYCwyZ.js → Tool-tpq9K4o7.js} +14 -14
  56. package/lib/{Tool-VgnYCwyZ.js.map → Tool-tpq9K4o7.js.map} +1 -1
  57. package/lib/{UnpublishVersionDialog-Fow5nBrc.js → UnpublishVersionDialog-6zyP9rCr.js} +5 -5
  58. package/lib/{UnpublishVersionDialog-Fow5nBrc.js.map → UnpublishVersionDialog-6zyP9rCr.js.map} +1 -1
  59. package/lib/{UpsellDialog-BqP2wmnt.js → UpsellDialog-CM238V3B.js} +3 -3
  60. package/lib/{UpsellDialog-BqP2wmnt.js.map → UpsellDialog-CM238V3B.js.map} +1 -1
  61. package/lib/{VariantsStudioNavbar-CvwRIsWJ.js → VariantsStudioNavbar-lFO2yrMq.js} +7 -7
  62. package/lib/{VariantsStudioNavbar-CvwRIsWJ.js.map → VariantsStudioNavbar-lFO2yrMq.js.map} +1 -1
  63. package/lib/{VariantsTool-CmQqDiwU.js → VariantsTool-B0OS4fku.js} +9 -9
  64. package/lib/{VariantsTool-CmQqDiwU.js.map → VariantsTool-B0OS4fku.js.map} +1 -1
  65. package/lib/{WorkspaceLoader-Ailj0PR9.js → WorkspaceLoader-CiJ6lGBu.js} +32 -32
  66. package/lib/{WorkspaceLoader-Ailj0PR9.js.map → WorkspaceLoader-CiJ6lGBu.js.map} +1 -1
  67. package/lib/_createContext.js +1 -1
  68. package/lib/{buildTextSelectionFromFragment-QpFfw3b7.js → buildTextSelectionFromFragment-CFZdgjpp.js} +3 -3
  69. package/lib/{buildTextSelectionFromFragment-QpFfw3b7.js.map → buildTextSelectionFromFragment-CFZdgjpp.js.map} +1 -1
  70. package/lib/{datastores-D4iZNSXV.js → datastores-wbjstxMt.js} +2 -2
  71. package/lib/{datastores-D4iZNSXV.js.map → datastores-wbjstxMt.js.map} +1 -1
  72. package/lib/{getTransactionsLogs-C-_o7nGx.js → getTransactionsLogs-Di50JBPB.js} +2 -2
  73. package/lib/{getTransactionsLogs-C-_o7nGx.js.map → getTransactionsLogs-Di50JBPB.js.map} +1 -1
  74. package/lib/index.js +35 -35
  75. package/lib/{inputResolver-Dpo4FxTy.js → inputResolver-DuUEGuH5.js} +4 -4
  76. package/lib/{inputResolver-Dpo4FxTy.js.map → inputResolver-DuUEGuH5.js.map} +1 -1
  77. package/lib/{navigation.telemetry-syjEPEw-.js → navigation.telemetry-EsdzXa34.js} +9 -9
  78. package/lib/{navigation.telemetry-syjEPEw-.js.map → navigation.telemetry-EsdzXa34.js.map} +1 -1
  79. package/lib/{plugin-B8Op6DFi.js → plugin-C_6lw0l3.js} +3 -3
  80. package/lib/{plugin-B8Op6DFi.js.map → plugin-C_6lw0l3.js.map} +1 -1
  81. package/lib/{plugin-CmF53OT5.js → plugin-ClT8-pVM.js} +4 -4
  82. package/lib/{plugin-CmF53OT5.js.map → plugin-ClT8-pVM.js.map} +1 -1
  83. package/lib/{plugin-Bk41RRuC.js → plugin-DRuKGgrO.js} +6 -6
  84. package/lib/{plugin-Bk41RRuC.js.map → plugin-DRuKGgrO.js.map} +1 -1
  85. package/lib/{plugin-BhEK2rZ8.js → plugin-wJP1ECFq.js} +6 -6
  86. package/lib/{plugin-BhEK2rZ8.js.map → plugin-wJP1ECFq.js.map} +1 -1
  87. package/lib/{scheduleItem-sJhB8YzX.js → scheduleItem-9PFIH7_h.js} +15 -15
  88. package/lib/{scheduleItem-sJhB8YzX.js.map → scheduleItem-9PFIH7_h.js.map} +1 -1
  89. package/lib/{schedules-CLC2KygL.js → schedules-DniNrpFJ.js} +3 -3
  90. package/lib/{schedules-CLC2KygL.js.map → schedules-DniNrpFJ.js.map} +1 -1
  91. package/lib/{searchDocumentRelease-CtPYZAZk.js → searchDocumentRelease-TrunKdQg.js} +5 -5
  92. package/lib/{searchDocumentRelease-CtPYZAZk.js.map → searchDocumentRelease-TrunKdQg.js.map} +1 -1
  93. package/lib/{studioClient-WYiCwgfZ.js → studioClient-BpYJ_yYC.js} +2 -2
  94. package/lib/{studioClient-WYiCwgfZ.js.map → studioClient-BpYJ_yYC.js.map} +1 -1
  95. package/lib/{useBundleDocuments-CiRQnzQh.js → useBundleDocuments-C58ExRpX.js} +5 -5
  96. package/lib/{useBundleDocuments-CiRQnzQh.js.map → useBundleDocuments-C58ExRpX.js.map} +1 -1
  97. package/lib/{useComments-CxUK5MNb.js → useComments-BcMCyjIE.js} +2 -2
  98. package/lib/{useComments-CxUK5MNb.js.map → useComments-BcMCyjIE.js.map} +1 -1
  99. package/lib/{useCommentsTelemetry-BWqcsQ1u.js → useCommentsTelemetry-CL97yuwT.js} +4 -4
  100. package/lib/{useCommentsTelemetry-BWqcsQ1u.js.map → useCommentsTelemetry-CL97yuwT.js.map} +1 -1
  101. package/lib/{useDocumentPreviewValues-B4jUnACZ.js → useDocumentPreviewValues-Cy9aUMu2.js} +5 -5
  102. package/lib/{useDocumentPreviewValues-B4jUnACZ.js.map → useDocumentPreviewValues-Cy9aUMu2.js.map} +1 -1
  103. package/lib/{useFeatureEnabled-sRpDeLLJ.js → useFeatureEnabled-C5qTffLc.js} +2 -2
  104. package/lib/{useFeatureEnabled-sRpDeLLJ.js.map → useFeatureEnabled-C5qTffLc.js.map} +1 -1
  105. package/lib/{useFieldActions-CrPgIiyl.js → useFieldActions-MFJIkobn.js} +2 -2
  106. package/lib/{useFieldActions-CrPgIiyl.js.map → useFieldActions-MFJIkobn.js.map} +1 -1
  107. package/lib/{useProjectId-bGwoCAuz.js → useProjectId-BRSQ8kIo.js} +2 -2
  108. package/lib/{useProjectId-bGwoCAuz.js.map → useProjectId-BRSQ8kIo.js.map} +1 -1
  109. package/lib/{useReleasesToolAvailable-BevhFmt9.js → useReleasesToolAvailable-BOlw1HWL.js} +3 -3
  110. package/lib/{useReleasesToolAvailable-BevhFmt9.js.map → useReleasesToolAvailable-BOlw1HWL.js.map} +1 -1
  111. package/lib/{useScheduledDraftMenuActions-DqsFlU0p.js → useScheduledDraftMenuActions-DIQYFw0x.js} +6 -6
  112. package/lib/{useScheduledDraftMenuActions-DqsFlU0p.js.map → useScheduledDraftMenuActions-DIQYFw0x.js.map} +1 -1
  113. package/lib/{useStudioUrl-DbfIwS1P.js → useStudioUrl-Dc5LnOvR.js} +5 -5
  114. package/lib/{useStudioUrl-DbfIwS1P.js.map → useStudioUrl-Dc5LnOvR.js.map} +1 -1
  115. package/lib/{useTimeZone-DnxQlCGS.js → useTimeZone-Da8WK1q-.js} +2 -2
  116. package/lib/{useTimeZone-DnxQlCGS.js.map → useTimeZone-Da8WK1q-.js.map} +1 -1
  117. package/lib/{validationUtils-Bcu-PkHm.js → validationUtils-B9CLn9F7.js} +4 -4
  118. package/lib/{validationUtils-Bcu-PkHm.js.map → validationUtils-B9CLn9F7.js.map} +1 -1
  119. package/lib/{version-DTqx_kFw.js → version-D7qSwBVE.js} +2 -2
  120. package/lib/{version-DTqx_kFw.js.map → version-D7qSwBVE.js.map} +1 -1
  121. package/package.json +11 -11
@@ -1 +1 @@
1
- {"version":3,"file":"ReleasesTool-Bxru9khS.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","PerspectiveStack","DocumentPreviewPresence","SanityDefaultPreview","useDocumentPresence","useDocumentPreviewValues","getPublishedId","getReleaseIdFromReleaseDocumentId","getReleaseDocumentIntent","ReleaseDocumentPreviewProps","documentId","documentTypeName","releaseId","releaseState","documentRevision","hasValidationError","layout","isGoingToUnpublish","isCardinalityOneRelease","variantId","ReleaseDocumentPreview","t0","$","_c","t1","undefined","documentPresence","t2","params","searchParams","t3","LinkComponent","linkProps","ref","rest","t4","length","previewPresence","t5","bb0","t6","t7","perspectiveStack","documentType","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","_temp3","newRelease","releaseType","const","toISOString","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","Spinner","Stack","Text","useClickOutsideEvent","Menu","MenuDivider","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","willUnpublish","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","Text","Menu","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","Spinner","useClickOutsideEvent","Menu","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 {type PerspectiveStack} from '../../../perspective/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 /** The document is marked to be unpublished when the release is run (`_system.delete`). */\n isGoingToUnpublish?: 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 isGoingToUnpublish = 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 // A document marked to be unpublished previews the document the release acts on rather than its\n // own version, matching the document pane, which shows the current published version for these.\n // Running the release deletes that published document and leaves the content behind as a draft,\n // so once the release has run, resolve through drafts instead. Nothing is left to preview if that\n // draft is later discarded.\n const perspectiveStack = useMemo<PerspectiveStack>(() => {\n if (!isGoingToUnpublish) return [getReleaseIdFromReleaseDocumentId(releaseId)]\n return releaseState === 'published' ? ['drafts'] : []\n }, [isGoingToUnpublish, releaseId, releaseState])\n\n const {isLoading: previewLoading, value: resolvedPreview} = useDocumentPreviewValues({\n documentId: isGoingToUnpublish ? getPublishedId(documentId) : documentId,\n documentType: documentTypeName,\n perspectiveStack,\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} from '@sanity/ui'\nimport {useToast} from '@sanity/ui/toast'\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} from '@sanity/ui'\nimport {useToast} from '@sanity/ui/toast'\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} from '@sanity/ui'\nimport {useToast} from '@sanity/ui/toast'\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 if (isScheduledDateInPast()) {\n // rerender dialog to recalculate isScheduledDateInPast\n setRerenderDialog((cur) => cur + 1)\n return\n }\n\n // Keep intendedPublishAt in step with the scheduled date, otherwise a later\n // unschedule reverts to a previously planned date (getPublishDateFromRelease falls back to it).\n const newRelease = {\n ...release,\n metadata: {\n ...release.metadata,\n releaseType: 'scheduled' as const,\n intendedPublishAt: publishAt.toISOString(),\n },\n }\n\n // Workaround for React Compiler not yet fully supporting try/catch/finally syntax\n const run = async () => {\n setStatus('scheduling')\n if (!isEqual(newRelease, release)) {\n await updateRelease(newRelease)\n }\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 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 {Spinner, Stack, Text, useClickOutsideEvent} from '@sanity/ui'\nimport {Menu, MenuDivider} from '@sanity/ui/menu'\nimport {useToast} from '@sanity/ui/toast'\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} from '@sanity/ui'\nimport {useToast} from '@sanity/ui/toast'\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} from '@sanity/ui'\nimport {useToast} from '@sanity/ui/toast'\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} from '@sanity/ui/menu'\nimport {useToast} from '@sanity/ui/toast'\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} from '@sanity/ui'\nimport {useToast} from '@sanity/ui/toast'\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} from '@sanity/ui'\nimport {Menu, MenuDivider} from '@sanity/ui/menu'\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 willUnpublish = 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 isGoingToUnpublish={willUnpublish}\n variantId={variantId}\n />\n )\n },\n // `releaseState` decides which document an unpublish-marked row resolves its preview from, so it\n // has to take part in the comparison. Today a state change also lands a fresh `memoKey`, but that\n // is a side effect of how the document observables rebuild rather than a guarantee.\n (prev, next) =>\n prev.item.memoKey === next.item.memoKey &&\n prev.releaseId === next.releaseId &&\n prev.releaseState === next.releaseState,\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} from '@sanity/ui'\nimport {useToast} from '@sanity/ui/toast'\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, Text} from '@sanity/ui'\nimport {Menu} from '@sanity/ui/menu'\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} from '@sanity/ui'\nimport {useToast} from '@sanity/ui/toast'\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 {Spinner, useClickOutsideEvent} from '@sanity/ui'\nimport {Menu} from '@sanity/ui/menu'\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-CsHniZCP.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","PerspectiveStack","DocumentPreviewPresence","SanityDefaultPreview","useDocumentPresence","useDocumentPreviewValues","getPublishedId","getReleaseIdFromReleaseDocumentId","getReleaseDocumentIntent","ReleaseDocumentPreviewProps","documentId","documentTypeName","releaseId","releaseState","documentRevision","hasValidationError","layout","isGoingToUnpublish","isCardinalityOneRelease","variantId","ReleaseDocumentPreview","t0","$","_c","t1","undefined","documentPresence","t2","params","searchParams","t3","LinkComponent","linkProps","ref","rest","t4","length","previewPresence","t5","bb0","t6","t7","perspectiveStack","documentType","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","_temp3","newRelease","releaseType","const","toISOString","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","Spinner","Stack","Text","useClickOutsideEvent","Menu","MenuDivider","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","willUnpublish","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","Text","Menu","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","Spinner","useClickOutsideEvent","Menu","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 {type PerspectiveStack} from '../../../perspective/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 /** The document is marked to be unpublished when the release is run (`_system.delete`). */\n isGoingToUnpublish?: 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 isGoingToUnpublish = 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 // A document marked to be unpublished previews the document the release acts on rather than its\n // own version, matching the document pane, which shows the current published version for these.\n // Running the release deletes that published document and leaves the content behind as a draft,\n // so once the release has run, resolve through drafts instead. Nothing is left to preview if that\n // draft is later discarded.\n const perspectiveStack = useMemo<PerspectiveStack>(() => {\n if (!isGoingToUnpublish) return [getReleaseIdFromReleaseDocumentId(releaseId)]\n return releaseState === 'published' ? ['drafts'] : []\n }, [isGoingToUnpublish, releaseId, releaseState])\n\n const {isLoading: previewLoading, value: resolvedPreview} = useDocumentPreviewValues({\n documentId: isGoingToUnpublish ? getPublishedId(documentId) : documentId,\n documentType: documentTypeName,\n perspectiveStack,\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} from '@sanity/ui'\nimport {useToast} from '@sanity/ui/toast'\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} from '@sanity/ui'\nimport {useToast} from '@sanity/ui/toast'\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} from '@sanity/ui'\nimport {useToast} from '@sanity/ui/toast'\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 if (isScheduledDateInPast()) {\n // rerender dialog to recalculate isScheduledDateInPast\n setRerenderDialog((cur) => cur + 1)\n return\n }\n\n // Keep intendedPublishAt in step with the scheduled date, otherwise a later\n // unschedule reverts to a previously planned date (getPublishDateFromRelease falls back to it).\n const newRelease = {\n ...release,\n metadata: {\n ...release.metadata,\n releaseType: 'scheduled' as const,\n intendedPublishAt: publishAt.toISOString(),\n },\n }\n\n // Workaround for React Compiler not yet fully supporting try/catch/finally syntax\n const run = async () => {\n setStatus('scheduling')\n if (!isEqual(newRelease, release)) {\n await updateRelease(newRelease)\n }\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 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 {Spinner, Stack, Text, useClickOutsideEvent} from '@sanity/ui'\nimport {Menu, MenuDivider} from '@sanity/ui/menu'\nimport {useToast} from '@sanity/ui/toast'\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} from '@sanity/ui'\nimport {useToast} from '@sanity/ui/toast'\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} from '@sanity/ui'\nimport {useToast} from '@sanity/ui/toast'\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} from '@sanity/ui/menu'\nimport {useToast} from '@sanity/ui/toast'\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} from '@sanity/ui'\nimport {useToast} from '@sanity/ui/toast'\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} from '@sanity/ui'\nimport {Menu, MenuDivider} from '@sanity/ui/menu'\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 willUnpublish = 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 isGoingToUnpublish={willUnpublish}\n variantId={variantId}\n />\n )\n },\n // `releaseState` decides which document an unpublish-marked row resolves its preview from, so it\n // has to take part in the comparison. Today a state change also lands a fresh `memoKey`, but that\n // is a side effect of how the document observables rebuild rather than a guarantee.\n (prev, next) =>\n prev.item.memoKey === next.item.memoKey &&\n prev.releaseId === next.releaseId &&\n prev.releaseState === next.releaseState,\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} from '@sanity/ui'\nimport {useToast} from '@sanity/ui/toast'\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, Text} from '@sanity/ui'\nimport {Menu} from '@sanity/ui/menu'\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} from '@sanity/ui'\nimport {useToast} from '@sanity/ui/toast'\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 {Spinner, useClickOutsideEvent} from '@sanity/ui'\nimport {Menu} from '@sanity/ui/menu'\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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"}