@knpkv/control-center 0.10.3 → 0.10.4
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.
- package/dist/client/.vite/manifest.json +406 -406
- package/dist/client/assets/{ActiveWorkPage-DJbMyFnV.js → ActiveWorkPage-DK9ucRgq.js} +2 -2
- package/dist/client/assets/{ActiveWorkPage-DJbMyFnV.js.map → ActiveWorkPage-DK9ucRgq.js.map} +1 -1
- package/dist/client/assets/{AgentPage-CkoowYNN.js → AgentPage-DiaRhWH4.js} +2 -2
- package/dist/client/assets/{AgentPage-CkoowYNN.js.map → AgentPage-DiaRhWH4.js.map} +1 -1
- package/dist/client/assets/{AtlassianOAuthCallbackPage-i2zdrAW9.js → AtlassianOAuthCallbackPage-B00yNx-2.js} +2 -2
- package/dist/client/assets/{AtlassianOAuthCallbackPage-i2zdrAW9.js.map → AtlassianOAuthCallbackPage-B00yNx-2.js.map} +1 -1
- package/dist/client/assets/{AuthorizedSharePage-BKRFQEW5.js → AuthorizedSharePage-BJM10BAd.js} +2 -2
- package/dist/client/assets/{AuthorizedSharePage-BKRFQEW5.js.map → AuthorizedSharePage-BJM10BAd.js.map} +1 -1
- package/dist/client/assets/{BrowserSessionHydrator-DsrYOye8.js → BrowserSessionHydrator-Bm8F4Ctu.js} +2 -2
- package/dist/client/assets/{BrowserSessionHydrator-DsrYOye8.js.map → BrowserSessionHydrator-Bm8F4Ctu.js.map} +1 -1
- package/dist/client/assets/{CommandSearch-B3ogcxH6.js → CommandSearch-BxAJW0LJ.js} +2 -2
- package/dist/client/assets/{CommandSearch-B3ogcxH6.js.map → CommandSearch-BxAJW0LJ.js.map} +1 -1
- package/dist/client/assets/{ItemsPage-C8Kvj_hC.js → ItemsPage-DkKQR0qC.js} +2 -2
- package/dist/client/assets/{ItemsPage-C8Kvj_hC.js.map → ItemsPage-DkKQR0qC.js.map} +1 -1
- package/dist/client/assets/{OpenPullRequestPage-CdKHYk5U.js → OpenPullRequestPage-BXQFgiq0.js} +2 -2
- package/dist/client/assets/{OpenPullRequestPage-CdKHYk5U.js.map → OpenPullRequestPage-BXQFgiq0.js.map} +1 -1
- package/dist/client/assets/{Pages-_Z_n1J6R.js → Pages-DlF3u5xB.js} +2 -2
- package/dist/client/assets/{Pages-_Z_n1J6R.js.map → Pages-DlF3u5xB.js.map} +1 -1
- package/dist/client/assets/{PairPage-BEMXhRqa.js → PairPage-CKINCdoy.js} +2 -2
- package/dist/client/assets/{PairPage-BEMXhRqa.js.map → PairPage-CKINCdoy.js.map} +1 -1
- package/dist/client/assets/{PortfolioOverview-k2woweJX.js → PortfolioOverview-ajQK-ZVn.js} +2 -2
- package/dist/client/assets/{PortfolioOverview-k2woweJX.js.map → PortfolioOverview-ajQK-ZVn.js.map} +1 -1
- package/dist/client/assets/{PullRequestReviewPanel-BZ9gJ9do.js → PullRequestReviewPanel-CUiPHp33.js} +4 -4
- package/dist/client/assets/{PullRequestReviewPanel-BZ9gJ9do.js.map → PullRequestReviewPanel-CUiPHp33.js.map} +1 -1
- package/dist/client/assets/{ReleaseRoute-D5Mrpp8w.js → ReleaseRoute-Dccsofss.js} +2 -2
- package/dist/client/assets/ReleaseRoute-Dccsofss.js.map +1 -0
- package/dist/client/assets/{ReleaseWorkset-idMU3iUy.js → ReleaseWorkset-CpploDSa.js} +2 -2
- package/dist/client/assets/{ReleaseWorkset-idMU3iUy.js.map → ReleaseWorkset-CpploDSa.js.map} +1 -1
- package/dist/client/assets/{ReviewSuggestionOverview-sS1HGbOF.js → ReviewSuggestionOverview-C0gKrq0N.js} +2 -2
- package/dist/client/assets/{ReviewSuggestionOverview-sS1HGbOF.js.map → ReviewSuggestionOverview-C0gKrq0N.js.map} +1 -1
- package/dist/client/assets/{ReviewSuggestionPublicationSurface-CIUTjuOD.js → ReviewSuggestionPublicationSurface-B485cO3v.js} +2 -2
- package/dist/client/assets/{ReviewSuggestionPublicationSurface-CIUTjuOD.js.map → ReviewSuggestionPublicationSurface-B485cO3v.js.map} +1 -1
- package/dist/client/assets/{ServicesPage-C2sELVLy.js → ServicesPage-DxMDCBRr.js} +2 -2
- package/dist/client/assets/{ServicesPage-C2sELVLy.js.map → ServicesPage-DxMDCBRr.js.map} +1 -1
- package/dist/client/assets/{TimelinePage-5BEpQPra.js → TimelinePage-BzvR1pQi.js} +2 -2
- package/dist/client/assets/{TimelinePage-5BEpQPra.js.map → TimelinePage-BzvR1pQi.js.map} +1 -1
- package/dist/client/assets/{WorkspaceEntityLink-w0WA7xRO.js → WorkspaceEntityLink-DOOjBPKo.js} +2 -2
- package/dist/client/assets/{WorkspaceEntityLink-w0WA7xRO.js.map → WorkspaceEntityLink-DOOjBPKo.js.map} +1 -1
- package/dist/client/assets/{WorkspaceEntityRoute-BpO38Ge1.js → WorkspaceEntityRoute-HkedzU2L.js} +4 -4
- package/dist/client/assets/{WorkspaceEntityRoute-BpO38Ge1.js.map → WorkspaceEntityRoute-HkedzU2L.js.map} +1 -1
- package/dist/client/assets/{WorkspaceHomeLink-Xl8GvzFw.js → WorkspaceHomeLink-Dn-m2Xhv.js} +2 -2
- package/dist/client/assets/{WorkspaceHomeLink-Xl8GvzFw.js.map → WorkspaceHomeLink-Dn-m2Xhv.js.map} +1 -1
- package/dist/client/assets/{WorkspacePullRequestDetails-COZdOIOb.js → WorkspacePullRequestDetails-DuIuN53U.js} +3 -3
- package/dist/client/assets/{WorkspacePullRequestDetails-COZdOIOb.js.map → WorkspacePullRequestDetails-DuIuN53U.js.map} +1 -1
- package/dist/client/assets/{WorkspaceReleaseLayout-D__SEsHt.js → WorkspaceReleaseLayout-CmOYomjP.js} +2 -2
- package/dist/client/assets/{WorkspaceReleaseLayout-D__SEsHt.js.map → WorkspaceReleaseLayout-CmOYomjP.js.map} +1 -1
- package/dist/client/assets/{WorkspaceSettingsPage-D-0O9-41.js → WorkspaceSettingsPage-Co6JSDzD.js} +2 -2
- package/dist/client/assets/{WorkspaceSettingsPage-D-0O9-41.js.map → WorkspaceSettingsPage-Co6JSDzD.js.map} +1 -1
- package/dist/client/assets/{angular-html-B-gwpVlh-BRbhVJ6Y.js → angular-html-B-gwpVlh-Bgrt633l.js} +2 -2
- package/dist/client/assets/{angular-html-B-gwpVlh-BRbhVJ6Y.js.map → angular-html-B-gwpVlh-Bgrt633l.js.map} +1 -1
- package/dist/client/assets/{angular-ts-BdaH9qH_-CreuaMKb.js → angular-ts-BdaH9qH_-BkPrletd.js} +2 -2
- package/dist/client/assets/{angular-ts-BdaH9qH_-CreuaMKb.js.map → angular-ts-BdaH9qH_-BkPrletd.js.map} +1 -1
- package/dist/client/assets/{apl-BLTDDucx-E9crm-GK.js → apl-BLTDDucx-wY4O_74Y.js} +2 -2
- package/dist/client/assets/{apl-BLTDDucx-E9crm-GK.js.map → apl-BLTDDucx-wY4O_74Y.js.map} +1 -1
- package/dist/client/assets/{astro-CM3EIsEH-DpNG08M6.js → astro-CM3EIsEH-D7flgJwH.js} +2 -2
- package/dist/client/assets/{astro-CM3EIsEH-DpNG08M6.js.map → astro-CM3EIsEH-D7flgJwH.js.map} +1 -1
- package/dist/client/assets/{blade-BuLZ1b4i-s07PULYH.js → blade-BuLZ1b4i-qswDnG1D.js} +2 -2
- package/dist/client/assets/{blade-BuLZ1b4i-s07PULYH.js.map → blade-BuLZ1b4i-qswDnG1D.js.map} +1 -1
- package/dist/client/assets/{c-BOe7FNWg-PrQjeFQ3.js → c-BOe7FNWg-9K6ZU3yU.js} +2 -2
- package/dist/client/assets/{c-BOe7FNWg-PrQjeFQ3.js.map → c-BOe7FNWg-9K6ZU3yU.js.map} +1 -1
- package/dist/client/assets/{chapel-DS426I0C-DB9jZ2L5.js → chapel-DS426I0C-D7P1_fn5.js} +2 -2
- package/dist/client/assets/{chapel-DS426I0C-DB9jZ2L5.js.map → chapel-DS426I0C-D7P1_fn5.js.map} +1 -1
- package/dist/client/assets/{cobol-D88xw2SU-C4G8uiv_.js → cobol-D88xw2SU-BeZ5JZSl.js} +2 -2
- package/dist/client/assets/{cobol-D88xw2SU-C4G8uiv_.js.map → cobol-D88xw2SU-BeZ5JZSl.js.map} +1 -1
- package/dist/client/assets/{coffee-9O-pYXz5-BZexwMqx.js → coffee-9O-pYXz5-CB0EJ1nc.js} +2 -2
- package/dist/client/assets/{coffee-9O-pYXz5-BZexwMqx.js.map → coffee-9O-pYXz5-CB0EJ1nc.js.map} +1 -1
- package/dist/client/assets/{controlCenterRelayDock-CyvFJBSX.js → controlCenterRelayDock-Duxhij28.js} +3 -3
- package/dist/client/assets/{controlCenterRelayDock-CyvFJBSX.js.map → controlCenterRelayDock-Duxhij28.js.map} +1 -1
- package/dist/client/assets/{controlCenterRelayDockChrome-LsVvlXRh.js → controlCenterRelayDockChrome-8SmLWAq4.js} +2 -2
- package/dist/client/assets/{controlCenterRelayDockChrome-LsVvlXRh.js.map → controlCenterRelayDockChrome-8SmLWAq4.js.map} +1 -1
- package/dist/client/assets/{cpp-CPk7VU6o-lNmTk_pG.js → cpp-CPk7VU6o-hQ9MAV3y.js} +2 -2
- package/dist/client/assets/{cpp-CPk7VU6o-lNmTk_pG.js.map → cpp-CPk7VU6o-hQ9MAV3y.js.map} +1 -1
- package/dist/client/assets/{crystal-CRftOMVe-BSooBDgS.js → crystal-CRftOMVe-DN_g4Upk.js} +2 -2
- package/dist/client/assets/{crystal-CRftOMVe-BSooBDgS.js.map → crystal-CRftOMVe-DN_g4Upk.js.map} +1 -1
- package/dist/client/assets/{css-DKjIhbA_-kkwCxkks.js → css-DKjIhbA_-CUnFG3ES.js} +2 -2
- package/dist/client/assets/{css-DKjIhbA_-kkwCxkks.js.map → css-DKjIhbA_-CUnFG3ES.js.map} +1 -1
- package/dist/client/assets/{diff-BvynzM0a.js → diff-Ci0yCkTU.js} +3 -3
- package/dist/client/assets/{diff-BvynzM0a.js.map → diff-Ci0yCkTU.js.map} +1 -1
- package/dist/client/assets/{edge-CZci3foK-DbjelmsF.js → edge-CZci3foK-Ctlg1YxQ.js} +2 -2
- package/dist/client/assets/{edge-CZci3foK-DbjelmsF.js.map → edge-CZci3foK-Ctlg1YxQ.js.map} +1 -1
- package/dist/client/assets/{elixir-BFbWRTPN-DGdecMQe.js → elixir-BFbWRTPN-cC1K9Ezq.js} +2 -2
- package/dist/client/assets/{elixir-BFbWRTPN-DGdecMQe.js.map → elixir-BFbWRTPN-cC1K9Ezq.js.map} +1 -1
- package/dist/client/assets/{elm-BFCSOEGh-B9BWZIGp.js → elm-BFCSOEGh-XnRYfTO2.js} +2 -2
- package/dist/client/assets/{elm-BFCSOEGh-B9BWZIGp.js.map → elm-BFCSOEGh-XnRYfTO2.js.map} +1 -1
- package/dist/client/assets/{erb-C0EkZJvn-BQCINe4O.js → erb-C0EkZJvn-Dzi6SH3N.js} +2 -2
- package/dist/client/assets/{erb-C0EkZJvn-BQCINe4O.js.map → erb-C0EkZJvn-Dzi6SH3N.js.map} +1 -1
- package/dist/client/assets/{git-rebase-DBDs07B2-BsUn_6wp.js → git-rebase-DBDs07B2-CPonOskG.js} +2 -2
- package/dist/client/assets/{git-rebase-DBDs07B2-BsUn_6wp.js.map → git-rebase-DBDs07B2-CPonOskG.js.map} +1 -1
- package/dist/client/assets/{glimmer-js-oqYt1Bty-DhwIdeuV.js → glimmer-js-oqYt1Bty-8uN_RGfs.js} +2 -2
- package/dist/client/assets/{glimmer-js-oqYt1Bty-DhwIdeuV.js.map → glimmer-js-oqYt1Bty-8uN_RGfs.js.map} +1 -1
- package/dist/client/assets/{glimmer-ts-CjmgbZTn-D--4KEri.js → glimmer-ts-CjmgbZTn-BbhdlUs3.js} +2 -2
- package/dist/client/assets/{glimmer-ts-CjmgbZTn-D--4KEri.js.map → glimmer-ts-CjmgbZTn-BbhdlUs3.js.map} +1 -1
- package/dist/client/assets/{glsl-BqUMGrwT-BugoDbsL.js → glsl-BqUMGrwT-BdC4EsWs.js} +2 -2
- package/dist/client/assets/{glsl-BqUMGrwT-BugoDbsL.js.map → glsl-BqUMGrwT-BdC4EsWs.js.map} +1 -1
- package/dist/client/assets/{graphql-CEJryLGF-CK33Sd2D.js → graphql-CEJryLGF-BRAA6O06.js} +2 -2
- package/dist/client/assets/{graphql-CEJryLGF-CK33Sd2D.js.map → graphql-CEJryLGF-BRAA6O06.js.map} +1 -1
- package/dist/client/assets/{hack-DwBIwaGr-BlHtHO90.js → hack-DwBIwaGr-BAtB0Umc.js} +2 -2
- package/dist/client/assets/{hack-DwBIwaGr-BlHtHO90.js.map → hack-DwBIwaGr-BAtB0Umc.js.map} +1 -1
- package/dist/client/assets/{haml-BgD6GFV2-Cn_7eMhf.js → haml-BgD6GFV2-Cc0uNVUI.js} +2 -2
- package/dist/client/assets/{haml-BgD6GFV2-Cn_7eMhf.js.map → haml-BgD6GFV2-Cc0uNVUI.js.map} +1 -1
- package/dist/client/assets/{handlebars-DAEAtsmp-Ddwvn7SX.js → handlebars-DAEAtsmp-DLsK2kOk.js} +2 -2
- package/dist/client/assets/{handlebars-DAEAtsmp-Ddwvn7SX.js.map → handlebars-DAEAtsmp-DLsK2kOk.js.map} +1 -1
- package/dist/client/assets/{html-B63qAdeQ-C8grXLcX.js → html-B63qAdeQ-BI2TthmT.js} +2 -2
- package/dist/client/assets/{html-B63qAdeQ-C8grXLcX.js.map → html-B63qAdeQ-BI2TthmT.js.map} +1 -1
- package/dist/client/assets/{html-derivative-DliF0Izh-eHtyKN9s.js → html-derivative-DliF0Izh-CMfd68Cg.js} +2 -2
- package/dist/client/assets/{html-derivative-DliF0Izh-eHtyKN9s.js.map → html-derivative-DliF0Izh-CMfd68Cg.js.map} +1 -1
- package/dist/client/assets/{http-BPdteiK2-tAvZYLK6.js → http-BPdteiK2-CX-IhbOk.js} +2 -2
- package/dist/client/assets/{http-BPdteiK2-tAvZYLK6.js.map → http-BPdteiK2-CX-IhbOk.js.map} +1 -1
- package/dist/client/assets/{hurl-y6bQoMbn-BGQBtGLU.js → hurl-y6bQoMbn-7mwJ2k07.js} +2 -2
- package/dist/client/assets/{hurl-y6bQoMbn-BGQBtGLU.js.map → hurl-y6bQoMbn-7mwJ2k07.js.map} +1 -1
- package/dist/client/assets/{index-BDOFEVxB.js → index-CyCO7dDM.js} +3 -3
- package/dist/client/assets/{index-BDOFEVxB.js.map → index-CyCO7dDM.js.map} +1 -1
- package/dist/client/assets/{index-DBsf6vDR.css → index-Dn0IKu62.css} +1 -1
- package/dist/client/assets/{java-HDTZqoJ--BjrQmsMC.js → java-HDTZqoJ--B9p-6FTD.js} +2 -2
- package/dist/client/assets/{java-HDTZqoJ--BjrQmsMC.js.map → java-HDTZqoJ--B9p-6FTD.js.map} +1 -1
- package/dist/client/assets/{javascript-B8-PXjxO-Bq-MMO25.js → javascript-B8-PXjxO-CxKVIkrE.js} +2 -2
- package/dist/client/assets/{javascript-B8-PXjxO-Bq-MMO25.js.map → javascript-B8-PXjxO-CxKVIkrE.js.map} +1 -1
- package/dist/client/assets/{jinja-Li2helwk-l0WFvHGY.js → jinja-Li2helwk-wiEfSEKd.js} +2 -2
- package/dist/client/assets/{jinja-Li2helwk-l0WFvHGY.js.map → jinja-Li2helwk-wiEfSEKd.js.map} +1 -1
- package/dist/client/assets/{jison-D4pd2L4r-DfaKq-VY.js → jison-D4pd2L4r-CdTHAA5K.js} +2 -2
- package/dist/client/assets/{jison-D4pd2L4r-DfaKq-VY.js.map → jison-D4pd2L4r-CdTHAA5K.js.map} +1 -1
- package/dist/client/assets/{json-CHeq_08V-DZfpiOP9.js → json-CHeq_08V-BaAxXEpC.js} +2 -2
- package/dist/client/assets/{json-CHeq_08V-DZfpiOP9.js.map → json-CHeq_08V-BaAxXEpC.js.map} +1 -1
- package/dist/client/assets/{jsx-CTDAtxCE-Zsgbxq22.js → jsx-CTDAtxCE-DqkBvJVQ.js} +2 -2
- package/dist/client/assets/{jsx-CTDAtxCE-Zsgbxq22.js.map → jsx-CTDAtxCE-DqkBvJVQ.js.map} +1 -1
- package/dist/client/assets/{julia-B8HGxjvO-LAG3JTya.js → julia-B8HGxjvO-BViJH-3Z.js} +2 -2
- package/dist/client/assets/{julia-B8HGxjvO-LAG3JTya.js.map → julia-B8HGxjvO-BViJH-3Z.js.map} +1 -1
- package/dist/client/assets/{just-C1IY8eCo-BbIdo5MA.js → just-C1IY8eCo-DyJ_BTeb.js} +2 -2
- package/dist/client/assets/{just-C1IY8eCo-BbIdo5MA.js.map → just-C1IY8eCo-DyJ_BTeb.js.map} +1 -1
- package/dist/client/assets/{latex-CWjLpLhK-46pD4fMG.js → latex-CWjLpLhK-DpCuHsze.js} +2 -2
- package/dist/client/assets/{latex-CWjLpLhK-46pD4fMG.js.map → latex-CWjLpLhK-DpCuHsze.js.map} +1 -1
- package/dist/client/assets/{liquid-DO0vm52w-Cy8GQMCW.js → liquid-DO0vm52w-CEF5fJp5.js} +2 -2
- package/dist/client/assets/{liquid-DO0vm52w-Cy8GQMCW.js.map → liquid-DO0vm52w-CEF5fJp5.js.map} +1 -1
- package/dist/client/assets/{lua-rOZn354j-Cbcfon72.js → lua-rOZn354j-CaHUiAfq.js} +2 -2
- package/dist/client/assets/{lua-rOZn354j-Cbcfon72.js.map → lua-rOZn354j-CaHUiAfq.js.map} +1 -1
- package/dist/client/assets/{marko-CiZdnOV9-CcFVdIL7.js → marko-CiZdnOV9-Brrk-_VN.js} +2 -2
- package/dist/client/assets/{marko-CiZdnOV9-CcFVdIL7.js.map → marko-CiZdnOV9-Brrk-_VN.js.map} +1 -1
- package/dist/client/assets/{mdc-D1ADfxGi-YqDuYoZm.js → mdc-D1ADfxGi-Co8KdHkR.js} +2 -2
- package/dist/client/assets/{mdc-D1ADfxGi-YqDuYoZm.js.map → mdc-D1ADfxGi-Co8KdHkR.js.map} +1 -1
- package/dist/client/assets/{nginx-8KXIzHX2-Bic9RPc2.js → nginx-8KXIzHX2-CEzGaPe_.js} +2 -2
- package/dist/client/assets/{nginx-8KXIzHX2-Bic9RPc2.js.map → nginx-8KXIzHX2-CEzGaPe_.js.map} +1 -1
- package/dist/client/assets/{nim-CbBDSJf5-BQ6kTMUg.js → nim-CbBDSJf5-whZa9TGm.js} +2 -2
- package/dist/client/assets/{nim-CbBDSJf5-BQ6kTMUg.js.map → nim-CbBDSJf5-whZa9TGm.js.map} +1 -1
- package/dist/client/assets/{org-BlnOvN6p-B_-wxUCO.js → org-BlnOvN6p-C-HBqFDh.js} +2 -2
- package/dist/client/assets/{org-BlnOvN6p-B_-wxUCO.js.map → org-BlnOvN6p-C-HBqFDh.js.map} +1 -1
- package/dist/client/assets/{patterns-Nc-ycn7Y.js → patterns-DsePY14f.js} +2 -2
- package/dist/client/assets/{patterns-Nc-ycn7Y.js.map → patterns-DsePY14f.js.map} +1 -1
- package/dist/client/assets/{perl-CntHWu4k-BuEQuG7U.js → perl-CntHWu4k-DLNYobup.js} +2 -2
- package/dist/client/assets/{perl-CntHWu4k-BuEQuG7U.js.map → perl-CntHWu4k-DLNYobup.js.map} +1 -1
- package/dist/client/assets/{php-VF06KE26-BliObRgA.js → php-VF06KE26-Dp4fuXKl.js} +2 -2
- package/dist/client/assets/{php-VF06KE26-BliObRgA.js.map → php-VF06KE26-Dp4fuXKl.js.map} +1 -1
- package/dist/client/assets/{primitives-CgvvYKjR-BnO9EmQf.js → primitives-Bd6WhE78-DyJtZKnH.js} +2 -2
- package/dist/client/assets/primitives-Bd6WhE78-DyJtZKnH.js.map +1 -0
- package/dist/client/assets/{pug-DeZwH1tK-DpL6DGEh.js → pug-DeZwH1tK-Bho3PjIQ.js} +2 -2
- package/dist/client/assets/{pug-DeZwH1tK-DpL6DGEh.js.map → pug-DeZwH1tK-Bho3PjIQ.js.map} +1 -1
- package/dist/client/assets/{pullRequestReviewThreadReplay-FCMFIIPG.js → pullRequestReviewThreadReplay-D-Gd3hoP.js} +2 -2
- package/dist/client/assets/{pullRequestReviewThreadReplay-FCMFIIPG.js.map → pullRequestReviewThreadReplay-D-Gd3hoP.js.map} +1 -1
- package/dist/client/assets/{qml-CQhAR2tt-Cjst7VAs.js → qml-CQhAR2tt-D1c_pknn.js} +2 -2
- package/dist/client/assets/{qml-CQhAR2tt-Cjst7VAs.js.map → qml-CQhAR2tt-D1c_pknn.js.map} +1 -1
- package/dist/client/assets/{r-CGShpgkr-BVeckCHF.js → r-CGShpgkr-C7bXpPjk.js} +2 -2
- package/dist/client/assets/{r-CGShpgkr-BVeckCHF.js.map → r-CGShpgkr-C7bXpPjk.js.map} +1 -1
- package/dist/client/assets/{razor-CgB2QCs6-Cd3_piVw.js → razor-CgB2QCs6-DhGc3RMt.js} +2 -2
- package/dist/client/assets/{razor-CgB2QCs6-Cd3_piVw.js.map → razor-CgB2QCs6-DhGc3RMt.js.map} +1 -1
- package/dist/client/assets/{regexp-go_CdRjx-CR2YSHZ1.js → regexp-go_CdRjx-CJ0kv0kL.js} +2 -2
- package/dist/client/assets/{regexp-go_CdRjx-CR2YSHZ1.js.map → regexp-go_CdRjx-CJ0kv0kL.js.map} +1 -1
- package/dist/client/assets/{releaseRoutes-DPwinWrO.js → releaseRoutes-cNpu7gsD.js} +2 -2
- package/dist/client/assets/{releaseRoutes-DPwinWrO.js.map → releaseRoutes-cNpu7gsD.js.map} +1 -1
- package/dist/client/assets/{rst-CbWMI8ou-DAnUZELh.js → rst-CbWMI8ou-QeegT2a0.js} +2 -2
- package/dist/client/assets/{rst-CbWMI8ou-DAnUZELh.js.map → rst-CbWMI8ou-QeegT2a0.js.map} +1 -1
- package/dist/client/assets/{ruby-DsGwIs06--OWGrZzF.js → ruby-DsGwIs06-zfezgkhT.js} +2 -2
- package/dist/client/assets/{ruby-DsGwIs06--OWGrZzF.js.map → ruby-DsGwIs06-zfezgkhT.js.map} +1 -1
- package/dist/client/assets/{sas-DjxN8J4Z-jVfbDYqr.js → sas-DjxN8J4Z-CnTs8n2C.js} +2 -2
- package/dist/client/assets/{sas-DjxN8J4Z-jVfbDYqr.js.map → sas-DjxN8J4Z-CnTs8n2C.js.map} +1 -1
- package/dist/client/assets/{scss-bkiiULjK-D2AbGytL.js → scss-bkiiULjK-XMjkwalx.js} +2 -2
- package/dist/client/assets/{scss-bkiiULjK-D2AbGytL.js.map → scss-bkiiULjK-XMjkwalx.js.map} +1 -1
- package/dist/client/assets/{shellscript-Cuh1SIPr-BiNPTO6b.js → shellscript-Cuh1SIPr-46XCCu2F.js} +2 -2
- package/dist/client/assets/{shellscript-Cuh1SIPr-BiNPTO6b.js.map → shellscript-Cuh1SIPr-46XCCu2F.js.map} +1 -1
- package/dist/client/assets/{shellsession-C4UOwxb7-kRylcT_R.js → shellsession-C4UOwxb7-BKA80XTI.js} +2 -2
- package/dist/client/assets/{shellsession-C4UOwxb7-kRylcT_R.js.map → shellsession-C4UOwxb7-BKA80XTI.js.map} +1 -1
- package/dist/client/assets/{soy-CeGFXpLT-C8n-t50V.js → soy-CeGFXpLT-Nlu0Kd5l.js} +2 -2
- package/dist/client/assets/{soy-CeGFXpLT-C8n-t50V.js.map → soy-CeGFXpLT-Nlu0Kd5l.js.map} +1 -1
- package/dist/client/assets/{sql-qDYmMTO1-CMujL9b5.js → sql-qDYmMTO1-D24X-mUh.js} +2 -2
- package/dist/client/assets/{sql-qDYmMTO1-CMujL9b5.js.map → sql-qDYmMTO1-D24X-mUh.js.map} +1 -1
- package/dist/client/assets/{stata-Dzus_rwP-xpTbStns.js → stata-Dzus_rwP-DJ7CmNSn.js} +2 -2
- package/dist/client/assets/{stata-Dzus_rwP-xpTbStns.js.map → stata-Dzus_rwP-DJ7CmNSn.js.map} +1 -1
- package/dist/client/assets/{surrealql-DmTrf8uR-C71726g6.js → surrealql-DmTrf8uR-C3LuBr-Y.js} +2 -2
- package/dist/client/assets/{surrealql-DmTrf8uR-C71726g6.js.map → surrealql-DmTrf8uR-C3LuBr-Y.js.map} +1 -1
- package/dist/client/assets/{svelte-CWlRonoS-Dsmgsl3p.js → svelte-CWlRonoS-B_ECcTzN.js} +2 -2
- package/dist/client/assets/{svelte-CWlRonoS-Dsmgsl3p.js.map → svelte-CWlRonoS-B_ECcTzN.js.map} +1 -1
- package/dist/client/assets/{templ-EuFg1gKs-Dlt8LDbj.js → templ-EuFg1gKs-ByAnUgBM.js} +2 -2
- package/dist/client/assets/{templ-EuFg1gKs-Dlt8LDbj.js.map → templ-EuFg1gKs-ByAnUgBM.js.map} +1 -1
- package/dist/client/assets/{tex-Cbbx1SXS-CGW7lVtU.js → tex-Cbbx1SXS-0Ywa__H_.js} +2 -2
- package/dist/client/assets/{tex-Cbbx1SXS-CGW7lVtU.js.map → tex-Cbbx1SXS-0Ywa__H_.js.map} +1 -1
- package/dist/client/assets/{ts-tags-DOHpIWV2-Cs4BupLU.js → ts-tags-DOHpIWV2-CuulTIKM.js} +2 -2
- package/dist/client/assets/{ts-tags-DOHpIWV2-Cs4BupLU.js.map → ts-tags-DOHpIWV2-CuulTIKM.js.map} +1 -1
- package/dist/client/assets/{tsx-DmRL3u_2-Br3tQc1n.js → tsx-DmRL3u_2-GCLpfMRQ.js} +2 -2
- package/dist/client/assets/{tsx-DmRL3u_2-Br3tQc1n.js.map → tsx-DmRL3u_2-GCLpfMRQ.js.map} +1 -1
- package/dist/client/assets/{twig-BzcHspK1-DTeHZkzh.js → twig-BzcHspK1-BaXWhuif.js} +2 -2
- package/dist/client/assets/{twig-BzcHspK1-DTeHZkzh.js.map → twig-BzcHspK1-BaXWhuif.js.map} +1 -1
- package/dist/client/assets/{typescript-BYTx4UxO-Ckgqgf_6.js → typescript-BYTx4UxO-D62Ug8gp.js} +2 -2
- package/dist/client/assets/{typescript-BYTx4UxO-Ckgqgf_6.js.map → typescript-BYTx4UxO-D62Ug8gp.js.map} +1 -1
- package/dist/client/assets/{typst-BrfC91e7-C5LPu314.js → typst-BrfC91e7-BqtmZjA2.js} +2 -2
- package/dist/client/assets/{typst-BrfC91e7-C5LPu314.js.map → typst-BrfC91e7-BqtmZjA2.js.map} +1 -1
- package/dist/client/assets/{useWorkspaceDefaultLanding-DwCv_p0F.js → useWorkspaceDefaultLanding-CNq5BmMV.js} +2 -2
- package/dist/client/assets/{useWorkspaceDefaultLanding-DwCv_p0F.js.map → useWorkspaceDefaultLanding-CNq5BmMV.js.map} +1 -1
- package/dist/client/assets/{vue-B92PIQFm-D2EcIWyt.js → vue-B92PIQFm-C54gWdwm.js} +2 -2
- package/dist/client/assets/{vue-B92PIQFm-D2EcIWyt.js.map → vue-B92PIQFm-C54gWdwm.js.map} +1 -1
- package/dist/client/assets/{vue-html-EDHI-aeE-Cu1z77i2.js → vue-html-EDHI-aeE-Cw2PnKOb.js} +2 -2
- package/dist/client/assets/{vue-html-EDHI-aeE-Cu1z77i2.js.map → vue-html-EDHI-aeE-Cw2PnKOb.js.map} +1 -1
- package/dist/client/assets/{vue-vine-CmMdgoEY-xSl0fRHe.js → vue-vine-CmMdgoEY-C9ayJcHX.js} +2 -2
- package/dist/client/assets/{vue-vine-CmMdgoEY-xSl0fRHe.js.map → vue-vine-CmMdgoEY-C9ayJcHX.js.map} +1 -1
- package/dist/client/assets/{workspaceEntityRoutes-DY6gXtOy.js → workspaceEntityRoutes-BYPBqjUZ.js} +2 -2
- package/dist/client/assets/{workspaceEntityRoutes-DY6gXtOy.js.map → workspaceEntityRoutes-BYPBqjUZ.js.map} +1 -1
- package/dist/client/assets/{workspaceScrollCapture-B4_xSwNQ.js → workspaceScrollCapture-u6lJbYGL.js} +2 -2
- package/dist/client/assets/{workspaceScrollCapture-B4_xSwNQ.js.map → workspaceScrollCapture-u6lJbYGL.js.map} +1 -1
- package/dist/client/assets/{xml-Bz9Nzp99-Dci4Wxub.js → xml-Bz9Nzp99-q2auRtdj.js} +2 -2
- package/dist/client/assets/{xml-Bz9Nzp99-Dci4Wxub.js.map → xml-Bz9Nzp99-q2auRtdj.js.map} +1 -1
- package/dist/client/assets/{xsl-D0pOnfMq-BJ-ZDrUM.js → xsl-D0pOnfMq-DV7XsD_5.js} +2 -2
- package/dist/client/assets/{xsl-D0pOnfMq-BJ-ZDrUM.js.map → xsl-D0pOnfMq-DV7XsD_5.js.map} +1 -1
- package/dist/client/assets/{yaml-DKDHNCIP-DhiHdxcC.js → yaml-DKDHNCIP-DSSGln5p.js} +2 -2
- package/dist/client/assets/{yaml-DKDHNCIP-DhiHdxcC.js.map → yaml-DKDHNCIP-DSSGln5p.js.map} +1 -1
- package/dist/client/index.html +2 -2
- package/package.json +9 -9
- package/dist/client/assets/ReleaseRoute-D5Mrpp8w.js.map +0 -1
- package/dist/client/assets/primitives-CgvvYKjR-BnO9EmQf.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ReleaseRoute-D5Mrpp8w.js","names":["Effect.gen","Crypto.Crypto","Schema.decodeUnknownEffect","RelationshipRepairProposalIdSchema","Effect.runPromise","Effect.provide","FetchHttpClient.layer","BrowserCrypto.layer","actions","useRef","useState","Button","Text","StatePanel","StateLabel","Surface","styles","Effect.gen","Crypto.Crypto","Schema.decodeUnknownEffect","RelationshipRepairReviewIdSchema","Effect.runPromise","Effect.provide","FetchHttpClient.layer","BrowserCrypto.layer","Predicate.isTagged","ignoreSessionExpired","DateTime.Order","useState","useRef","useCallback","Person","styles","DateTime.formatUtc","useState","useRef","Surface","StateLabel","Text","_Fragment","StatePanel","Button","Field","Skeleton","useRef","styles","StatePanel","Button","Surface","ServiceMark","Text","StateLabel","AgentContextButton","PeopleStrip","useState","ReleasePreview","StageRail","ReleaseRelay","FreshnessStamp","Verdict","__toESM","useParams","useOutletContext","useLocation","useNavigate","Le","V","Je","He","ve","require_jsx_runtime","useViewTransitionState","workspaceItemsPath","useBrowserSession","releaseActiveWorkPath","releaseAgentPath","releasePreviewPath","releaseParentPath","releaseFullPath","Link","cr","or","me","ht","Ke","gr","L","P","z","ue","L$1","provide","runPromise","Order","gen","RelationshipRepairProposalId","isTagged","decodeUnknownEffect","formatUtc","RelationshipRepairReviewId","Crypto","layer","layer$1","makeControlCenterApiClient","readReleaseOrigin","releaseTransitionNames","resolveReleaseOrigin","decodeReleaseRouteId","releaseOriginHref","makeAuthenticatedMutationClient","loadReleaseEnvironmentSlices","ReleaseWorkset","usePrefersReducedReleaseMotion","useCompactReleasePreview","import_react","require_react","makeRelationshipRepairProposalId","uuid","browserRelationshipRepairCandidateTransport","draft","environmentId","RelationshipRepairCandidatePicker_module_default","import_jsx_runtime","titleCase","value","candidateTitle","candidate","aggregateCandidatePages","seen","candidates","pages","page","identity","truncated","PickerResult","result","stateTag","announce","RelationshipRepairCandidatePicker","state","setState","request","actorId","session","authorityScope","environmentScopeKey","environmentIds","releaseId","run","abort","effect","onSuccess","onFailure","discover","transport","signal","select","refreshCandidate","item","staleCandidate","create","pendingProposalId","proposalId","onCreated","isCreating","makeRelationshipRepairReviewId","browserRelationshipRepairTransport","isUnauthorizedFailure","ignoreSessionExpired$1","proposalOrder","proposedAtOrder","right","left","aggregateProposalPages","proposalsById","applicationsByProposalId","proposal","application","orderedProposals","proposals","applications","useRelationshipRepairProposals","requestRevision","setRequestRevision","actionAbort","busyProposal","pendingReviews","stateRef","sessionKey","failure","onSessionExpired","currentState","beginAction","current","finishAction","review","pending","intent","decision","rationale","revision","RelationshipRepairPanel_module_default","ignoreSessionExpired","shortId","id","isSameActor","actorPerson","collaborator","release","actor","ActorIdentity","role","statusPresentation","formattedTime","timestamp","ProposalRow","isReviewing","setIsReviewing","setRationale","announcement","setAnnouncement","statusRef","status","canReview","mutationsEnabled","canApply","reviewRationale","onReview","apply","onApply","actionFailed","onRetry","event","controlProps","isGloballyBusy","isBusy","LoadingPanel","RelationshipRepairPanelView","sessionScopeKey","relationshipRepairSessionAccess","RelationshipRepairPanelContent","access","browserSessionState","controller","RelationshipRepairPanel","browserSession","ReleaseRoute_module_default","selectRelease","routeReleaseId","context","ReleaseNotFound","workspaceId","ReleaseRouteLoading","PortfolioOverviewView","ReleaseAction","location","action","ReleaseEvidence","releaseContextLabel","ReleaseAgentEntry","navigate","prefersReducedMotion","CompleteCollaborators","ReleasePreviewContent","isCompact","exit","setExit","isOpen","setIsOpen","resolvedOrigin","selection","originHref","fullPath","agentPath","previewPath","isPreviewTransitioning","isFullTransitioning","isAgentTransitioning","transitionNames","requestOrigin","open","ReleasePreviewRoute","params","FullRelease","headingRef","origin","originLabel","ReleaseFullRoute"],"sources":["../../../src/client/releases/relationshipRepairCandidateTransport.ts","../../../src/client/releases/RelationshipRepairCandidatePicker.module.css","../../../src/client/releases/RelationshipRepairCandidatePicker.tsx","../../../src/client/releases/relationshipRepairTransport.ts","../../../src/client/releases/useRelationshipRepairProposals.ts","../../../src/client/releases/RelationshipRepairPanel.module.css","../../../src/client/releases/RelationshipRepairPanel.tsx","../../../src/client/releases/ReleaseRoute.module.css","../../../src/client/releases/ReleaseRoute.tsx"],"sourcesContent":["import * as BrowserCrypto from \"@effect/platform-browser/BrowserCrypto\"\nimport * as Crypto from \"effect/Crypto\"\nimport * as Effect from \"effect/Effect\"\nimport * as FetchHttpClient from \"effect/http/FetchHttpClient\"\nimport * as Schema from \"effect/Schema\"\n\nimport { makeControlCenterApiClient } from \"../../api/client.js\"\nimport type { RelationshipRepairCandidates, RelationshipRepairProposalDraft } from \"../../api/deliveryGraph.js\"\nimport type { LedgerRevision } from \"../../domain/deliveryGraph.js\"\nimport type {\n EnvironmentId,\n RelationshipId,\n RelationshipRepairProposalId,\n ReleaseId\n} from \"../../domain/identifiers.js\"\nimport { RelationshipRepairProposalId as RelationshipRepairProposalIdSchema } from \"../../domain/identifiers.js\"\nimport type { RelationshipRepairProposal } from \"../../domain/relationshipRepair.js\"\nimport { makeAuthenticatedMutationClient } from \"../authenticatedMutationClient.js\"\n\n/** Generate one canonical proposal identity at the browser mutation boundary. */\nexport const makeRelationshipRepairProposalId = Effect.gen(function*() {\n const cryptoService = yield* Crypto.Crypto\n const uuid = yield* cryptoService.randomUUIDv7\n return yield* Schema.decodeUnknownEffect(RelationshipRepairProposalIdSchema)(uuid)\n})\n\nexport interface RelationshipRepairCandidateTransport {\n readonly create: (\n releaseId: ReleaseId,\n draft: RelationshipRepairProposalDraft,\n proposalId: RelationshipRepairProposalId,\n signal: AbortSignal\n ) => Promise<RelationshipRepairProposal>\n readonly draft: (\n releaseId: ReleaseId,\n environmentId: EnvironmentId | null,\n relationshipId: RelationshipId,\n revision: LedgerRevision,\n signal: AbortSignal\n ) => Promise<RelationshipRepairProposalDraft>\n readonly list: (\n releaseId: ReleaseId,\n environmentId: EnvironmentId | null,\n signal: AbortSignal\n ) => Promise<RelationshipRepairCandidates>\n readonly makeProposalId: () => Promise<RelationshipRepairProposalId>\n}\n\n/** Generated-client transport for owner-governed repair candidate creation. */\nexport const browserRelationshipRepairCandidateTransport: RelationshipRepairCandidateTransport = {\n create: (releaseId, draft, proposalId, signal) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeAuthenticatedMutationClient\n return yield* client.deliveryGraph.createRepairProposal({\n params: {\n releaseId,\n relationshipId: draft.precondition.relationshipId\n },\n payload: {\n proposalId,\n environmentId: draft.candidate.impact.environmentId,\n expectedRevision: draft.precondition.expectedRevision,\n disposition: draft.proposal.disposition,\n rationale: draft.proposal.rationale\n }\n })\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n ),\n draft: (releaseId, environmentId, relationshipId, revision, signal) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeControlCenterApiClient()\n return yield* client.deliveryGraph.repairProposalDraft({\n params: { releaseId, relationshipId },\n query: environmentId === null ? { revision } : { environmentId, revision }\n })\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n ),\n list: (releaseId, environmentId, signal) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeControlCenterApiClient()\n return yield* client.deliveryGraph.repairCandidates({\n params: { releaseId },\n query: environmentId === null ? {} : { environmentId }\n })\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n ),\n makeProposalId: () => Effect.runPromise(makeRelationshipRepairProposalId.pipe(Effect.provide(BrowserCrypto.layer)))\n}\n",".candidates,\n.draft {\n display: grid;\n}\n\n.candidates {\n gap: var(--rly-space-8);\n}\n\n.candidateHeader,\n.draftHeader,\n.actions {\n align-items: center;\n display: flex;\n justify-content: space-between;\n}\n\n.candidate {\n align-items: center;\n background: transparent;\n border: 1px solid var(--rly-color-border-1);\n border-radius: var(--rly-radius-control);\n color: var(--rly-color-text-1);\n cursor: pointer;\n display: flex;\n font: inherit;\n gap: var(--rly-space-16);\n justify-content: space-between;\n padding: var(--rly-space-16);\n text-align: start;\n}\n\n.candidate:hover,\n.candidate:focus-visible {\n background: var(--rly-color-surface-2);\n border-color: var(--rly-color-border-2);\n}\n\n.candidate:focus-visible {\n outline: var(--rly-focus-ring-width) solid var(--rly-color-focus);\n outline-offset: var(--rly-focus-ring-offset);\n}\n\n.candidate > span:first-child {\n display: grid;\n gap: var(--rly-space-4);\n}\n\n.candidate strong {\n font: var(--rly-type-body-weight) var(--rly-type-body-size) / var(--rly-type-body-line-height)\n var(--rly-type-body-font);\n text-transform: capitalize;\n}\n\n.candidate small {\n color: var(--rly-color-text-2);\n font: var(--rly-type-meta-weight) var(--rly-type-meta-size) / var(--rly-type-meta-line-height)\n var(--rly-type-meta-font);\n}\n\n.draft {\n gap: var(--rly-space-16);\n padding: var(--rly-space-20);\n}\n\n.draftHeader {\n gap: var(--rly-space-16);\n}\n\n.actions {\n justify-content: flex-end;\n gap: var(--rly-space-8);\n}\n\n@media (prefers-reduced-motion: no-preference) {\n .draft {\n animation: reveal-draft 160ms ease-out both;\n }\n}\n\n@keyframes reveal-draft {\n from {\n opacity: 0;\n transform: translateY(-4px);\n }\n}\n","import { Button, StateLabel, StatePanel, Surface, Text } from \"@knpkv/rly/primitives\"\nimport { type ReactElement, type ReactNode, useEffect, useRef, useState } from \"react\"\n\nimport type {\n RelationshipRepairCandidate,\n RelationshipRepairCandidates,\n RelationshipRepairProposalDraft\n} from \"../../api/deliveryGraph.js\"\nimport { MAXIMUM_RELEASE_SLICE_RECORDS } from \"../../api/deliveryGraph.js\"\nimport type { SessionSummary } from \"../../api/session.js\"\nimport type { EnvironmentId, RelationshipRepairProposalId, ReleaseId } from \"../../domain/identifiers.js\"\nimport { loadReleaseEnvironmentSlices } from \"./loadReleaseEnvironmentSlices.js\"\nimport {\n browserRelationshipRepairCandidateTransport,\n type RelationshipRepairCandidateTransport\n} from \"./relationshipRepairCandidateTransport.js\"\nimport styles from \"./RelationshipRepairCandidatePicker.module.css\"\n\ntype PickerState =\n | { readonly _tag: \"idle\" }\n | { readonly _tag: \"loading\" }\n | { readonly _tag: \"load-failed\" }\n | { readonly _tag: \"ready\"; readonly page: RelationshipRepairCandidates }\n | { readonly _tag: \"drafting\"; readonly page: RelationshipRepairCandidates }\n | {\n readonly _tag: \"draft-failed\"\n readonly candidate: RelationshipRepairCandidate\n readonly page: RelationshipRepairCandidates\n }\n | {\n readonly _tag: \"draft\"\n readonly draft: RelationshipRepairProposalDraft\n readonly page: RelationshipRepairCandidates\n }\n | {\n readonly _tag: \"creating\"\n readonly draft: RelationshipRepairProposalDraft\n readonly page: RelationshipRepairCandidates\n readonly proposalId: RelationshipRepairProposalId | null\n }\n | {\n readonly _tag: \"create-failed\"\n readonly draft: RelationshipRepairProposalDraft\n readonly page: RelationshipRepairCandidates\n readonly proposalId: RelationshipRepairProposalId | null\n }\n | { readonly _tag: \"created\" }\n\nconst titleCase = (value: string): string => value.replaceAll(\"-\", \" \")\n\nconst candidateTitle = (candidate: RelationshipRepairCandidate): string =>\n `${titleCase(candidate.relationship.sourceNodeKind)} → ${titleCase(candidate.relationship.targetNodeKind)}`\n\nconst aggregateCandidatePages = (\n releaseId: ReleaseId,\n pages: ReadonlyArray<RelationshipRepairCandidates>\n): RelationshipRepairCandidates => {\n const seen = new Set<string>()\n const candidates: Array<RelationshipRepairCandidate> = []\n for (const candidate of pages.flatMap((page) => page.candidates)) {\n const identity = `${candidate.relationship.relationshipId}:${candidate.relationship.revision}`\n if (seen.has(identity)) continue\n seen.add(identity)\n candidates.push(candidate)\n }\n return {\n releaseId,\n environmentId: null,\n truncated: pages.some(({ truncated }) => truncated) || candidates.length > MAXIMUM_RELEASE_SLICE_RECORDS,\n candidates: candidates.slice(0, MAXIMUM_RELEASE_SLICE_RECORDS)\n }\n}\n\nconst PickerResult = ({\n announce = false,\n children,\n stateTag\n}: {\n readonly announce?: boolean\n readonly children: ReactNode\n readonly stateTag: PickerState[\"_tag\"]\n}): ReactElement => {\n const result = useRef<HTMLDivElement>(null)\n useEffect(() => result.current?.focus(), [stateTag])\n return (\n <div aria-live={announce ? \"polite\" : undefined} ref={result} role={announce ? \"status\" : undefined} tabIndex={-1}>\n {children}\n </div>\n )\n}\n\ninterface RelationshipRepairCandidatePickerProps {\n readonly environmentIds: ReadonlyArray<EnvironmentId>\n readonly onCreated: () => void\n readonly releaseId: ReleaseId\n readonly session: SessionSummary\n readonly transport?: RelationshipRepairCandidateTransport\n}\n\n/** Discover one incomplete relationship, preview its immutable draft, then create a governed proposal. */\nexport const RelationshipRepairCandidatePicker = ({\n environmentIds,\n onCreated,\n releaseId,\n session,\n transport = browserRelationshipRepairCandidateTransport\n}: RelationshipRepairCandidatePickerProps): ReactElement | null => {\n const [state, setState] = useState<PickerState>({ _tag: \"idle\" })\n const request = useRef<AbortController | null>(null)\n const actorId = session.actor._tag === \"human\" ? session.actor.personId : session.actor.agentId\n const authorityScope = `${session.sessionId}:${session.workspaceId}:${session.permission}:${session.actor._tag}:${actorId}`\n const environmentScopeKey = environmentIds.join(\":\")\n\n useEffect(() => {\n request.current?.abort()\n request.current = null\n setState({ _tag: \"idle\" })\n return () => request.current?.abort()\n }, [authorityScope, environmentScopeKey, releaseId])\n\n if (session.permission !== \"workspace-owner\") return null\n\n const run = async <Value,>(\n effect: (signal: AbortSignal) => Promise<Value>,\n onSuccess: (value: Value) => void,\n onFailure: () => void\n ): Promise<void> => {\n request.current?.abort()\n const abort = new AbortController()\n request.current = abort\n try {\n const value = await effect(abort.signal)\n if (!abort.signal.aborted && request.current === abort) onSuccess(value)\n } catch {\n if (!abort.signal.aborted && request.current === abort) onFailure()\n } finally {\n if (request.current === abort) request.current = null\n }\n }\n\n const discover = (): void => {\n setState({ _tag: \"loading\" })\n void run(\n (signal) =>\n loadReleaseEnvironmentSlices(environmentIds, (environmentId) =>\n transport.list(releaseId, environmentId, signal)\n ),\n (pages) => setState({ _tag: \"ready\", page: aggregateCandidatePages(releaseId, pages) }),\n () => setState({ _tag: \"load-failed\" })\n )\n }\n\n const select = (candidate: RelationshipRepairCandidate, page: RelationshipRepairCandidates): void => {\n setState({ _tag: \"drafting\", page })\n void run(\n (signal) =>\n transport.draft(\n releaseId,\n candidate.impact.environmentId,\n candidate.relationship.relationshipId,\n candidate.relationship.revision,\n signal\n ),\n (draft) => setState({ _tag: \"draft\", draft, page }),\n () => setState({ _tag: \"draft-failed\", candidate, page })\n )\n }\n\n const refreshCandidate = (staleCandidate: RelationshipRepairCandidate): void => {\n setState({ _tag: \"loading\" })\n void run(\n (signal) =>\n loadReleaseEnvironmentSlices(environmentIds, (environmentId) =>\n transport.list(releaseId, environmentId, signal)\n ),\n (pages) => {\n const page = aggregateCandidatePages(releaseId, pages)\n const candidate = page.candidates.find(\n (item) => item.relationship.relationshipId === staleCandidate.relationship.relationshipId\n )\n if (candidate === undefined) {\n setState({ _tag: \"ready\", page })\n return\n }\n select(candidate, page)\n },\n () => setState({ _tag: \"load-failed\" })\n )\n }\n\n const create = (\n draft: RelationshipRepairProposalDraft,\n page: RelationshipRepairCandidates,\n pendingProposalId: RelationshipRepairProposalId | null = null\n ): void => {\n request.current?.abort()\n const abort = new AbortController()\n request.current = abort\n setState({ _tag: \"creating\", draft, page, proposalId: pendingProposalId })\n void (async () => {\n let proposalId = pendingProposalId\n try {\n proposalId ??= await transport.makeProposalId()\n if (abort.signal.aborted || request.current !== abort) return\n setState({ _tag: \"creating\", draft, page, proposalId })\n await transport.create(releaseId, draft, proposalId, abort.signal)\n if (abort.signal.aborted || request.current !== abort) return\n setState({ _tag: \"created\" })\n onCreated()\n } catch {\n if (!abort.signal.aborted && request.current === abort) {\n setState({ _tag: \"create-failed\", draft, page, proposalId })\n }\n } finally {\n if (request.current === abort) request.current = null\n }\n })()\n }\n\n if (state._tag === \"idle\") {\n return <Button onClick={discover}>Find repair candidates</Button>\n }\n if (state._tag === \"loading\") {\n return (\n <PickerResult announce stateTag={state._tag}>\n <Text tone=\"secondary\">Finding incomplete relationships…</Text>\n </PickerResult>\n )\n }\n if (state._tag === \"load-failed\") {\n return (\n <PickerResult stateTag={state._tag}>\n <StatePanel\n action={<Button onClick={discover}>Try again</Button>}\n announce=\"assertive\"\n description=\"Candidate discovery did not change the release.\"\n title=\"Could not find candidates\"\n tone=\"caution\"\n />\n </PickerResult>\n )\n }\n if (state._tag === \"created\") {\n return (\n <PickerResult announce stateTag={state._tag}>\n <StateLabel label=\"Proposal created\" tone=\"positive\" />\n </PickerResult>\n )\n }\n if (state._tag === \"drafting\") {\n return (\n <PickerResult announce stateTag={state._tag}>\n <Text tone=\"secondary\">Preparing an exact proposal…</Text>\n </PickerResult>\n )\n }\n if (state._tag === \"draft-failed\") {\n return (\n <PickerResult stateTag={state._tag}>\n <StatePanel\n action={<Button onClick={() => refreshCandidate(state.candidate)}>Refresh candidate</Button>}\n announce=\"assertive\"\n description=\"The relationship may have changed since discovery.\"\n title=\"Candidate is stale\"\n tone=\"caution\"\n />\n </PickerResult>\n )\n }\n if (state._tag === \"draft\" || state._tag === \"creating\" || state._tag === \"create-failed\") {\n const isCreating = state._tag === \"creating\"\n return (\n <PickerResult announce={isCreating} stateTag={state._tag}>\n <Surface as=\"section\" className={styles.draft} padding=\"none\" tone=\"secondary\">\n <div className={styles.draftHeader}>\n <div>\n <Text as=\"h4\" variant=\"card-title\">\n {titleCase(state.draft.proposal.disposition)} relationship\n </Text>\n <Text tone=\"tertiary\" variant=\"meta\">\n r{state.draft.precondition.expectedRevision} → r{state.draft.precondition.expectedRevision + 1}\n </Text>\n </div>\n <StateLabel label=\"Proposal preview\" size=\"compact\" tone=\"neutral\" />\n </div>\n <Text>{state.draft.proposal.rationale}</Text>\n {state._tag === \"create-failed\" ? (\n <Text role=\"alert\" tone=\"secondary\">\n The relationship changed or the proposal was not recorded. Refresh the candidate before retrying.\n </Text>\n ) : null}\n <div className={styles.actions}>\n <Button disabled={isCreating} onClick={() => setState({ _tag: \"ready\", page: state.page })} variant=\"quiet\">\n Back\n </Button>\n <Button\n loading={isCreating}\n onClick={() => create(state.draft, state.page, state._tag === \"create-failed\" ? state.proposalId : null)}\n variant=\"primary\"\n >\n Create proposal\n </Button>\n </div>\n </Surface>\n </PickerResult>\n )\n }\n\n if (state.page.candidates.length === 0) {\n return (\n <PickerResult announce stateTag={state._tag}>\n <Text tone=\"secondary\">No incomplete relationships need an owner decision.</Text>\n </PickerResult>\n )\n }\n return (\n <PickerResult stateTag={state._tag}>\n <div className={styles.candidates}>\n <div className={styles.candidateHeader}>\n <Text tone=\"secondary\">\n {state.page.candidates.length}\n {state.page.truncated ? \"+\" : \"\"} incomplete relationship\n {state.page.candidates.length === 1 ? \"\" : \"s\"}\n </Text>\n <Button onClick={() => setState({ _tag: \"idle\" })} variant=\"quiet\">\n Close\n </Button>\n </div>\n {state.page.candidates.map((candidate) => (\n <button\n className={styles.candidate}\n key={candidate.relationship.relationshipId}\n onClick={() => select(candidate, state.page)}\n type=\"button\"\n >\n <span>\n <strong>{candidateTitle(candidate)}</strong>\n <small>{candidate.explanation}</small>\n </span>\n <span aria-hidden=\"true\">→</span>\n </button>\n ))}\n </div>\n </PickerResult>\n )\n}\n","import * as BrowserCrypto from \"@effect/platform-browser/BrowserCrypto\"\nimport * as Crypto from \"effect/Crypto\"\nimport * as Effect from \"effect/Effect\"\nimport * as FetchHttpClient from \"effect/http/FetchHttpClient\"\nimport * as Schema from \"effect/Schema\"\n\nimport { makeControlCenterApiClient } from \"../../api/client.js\"\nimport type {\n ApplyRelationshipRepairProposalResponse,\n RelationshipRepairProposalList\n} from \"../../api/deliveryGraph.js\"\nimport type {\n EnvironmentId,\n RelationshipRepairProposalId,\n RelationshipRepairReviewId,\n ReleaseId\n} from \"../../domain/identifiers.js\"\nimport { RelationshipRepairReviewId as RelationshipRepairReviewIdSchema } from \"../../domain/identifiers.js\"\nimport type { RelationshipRepairProposal, RelationshipRepairReviewDecision } from \"../../domain/relationshipRepair.js\"\nimport { makeAuthenticatedMutationClient } from \"../authenticatedMutationClient.js\"\n\n/** Generate a browser-native UUID v7 without weakening the public identifier contract. */\nexport const makeRelationshipRepairReviewId = Effect.gen(function*() {\n const cryptoService = yield* Crypto.Crypto\n const uuid = yield* cryptoService.randomUUIDv7\n return yield* Schema.decodeUnknownEffect(RelationshipRepairReviewIdSchema)(uuid)\n})\n\nexport interface RelationshipRepairTransport {\n readonly apply: (\n proposalId: RelationshipRepairProposalId,\n signal: AbortSignal\n ) => Promise<ApplyRelationshipRepairProposalResponse>\n readonly list: (\n releaseId: ReleaseId,\n environmentId: EnvironmentId | null,\n signal: AbortSignal\n ) => Promise<RelationshipRepairProposalList>\n readonly makeReviewId: () => Promise<RelationshipRepairReviewId>\n readonly review: (\n proposalId: RelationshipRepairProposalId,\n reviewId: RelationshipRepairReviewId,\n decision: RelationshipRepairReviewDecision,\n rationale: string,\n signal: AbortSignal\n ) => Promise<RelationshipRepairProposal>\n}\n\n/** Generated-client transport for the release repair decision ledger. */\nexport const browserRelationshipRepairTransport: RelationshipRepairTransport = {\n apply: (proposalId, signal) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeAuthenticatedMutationClient\n return yield* client.deliveryGraph.applyRepairProposal({ params: { proposalId } })\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n ),\n list: (releaseId, environmentId, signal) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeControlCenterApiClient()\n return yield* client.deliveryGraph.listRepairProposals({\n params: { releaseId },\n query: environmentId === null ? {} : { environmentId }\n })\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n ),\n makeReviewId: () => Effect.runPromise(makeRelationshipRepairReviewId.pipe(Effect.provide(BrowserCrypto.layer))),\n review: (proposalId, reviewId, decision, rationale, signal) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeAuthenticatedMutationClient\n return yield* client.deliveryGraph.reviewRepairProposal({\n params: { proposalId },\n payload: {\n reviewId,\n decision,\n rationale\n }\n })\n }).pipe(Effect.provide(FetchHttpClient.layer)),\n { signal }\n )\n}\n","import * as DateTime from \"effect/DateTime\"\nimport * as Predicate from \"effect/Predicate\"\nimport { useCallback, useEffect, useRef, useState } from \"react\"\n\nimport { MAXIMUM_REPAIR_PROPOSALS, type RelationshipRepairProposalList } from \"../../api/deliveryGraph.js\"\nimport type {\n EnvironmentId,\n RelationshipRepairProposalId,\n RelationshipRepairReviewId,\n ReleaseId\n} from \"../../domain/identifiers.js\"\nimport type {\n RelationshipRepairApplication,\n RelationshipRepairProposal,\n RelationshipRepairReviewDecision\n} from \"../../domain/relationshipRepair.js\"\nimport { loadReleaseEnvironmentSlices } from \"./loadReleaseEnvironmentSlices.js\"\nimport { browserRelationshipRepairTransport, type RelationshipRepairTransport } from \"./relationshipRepairTransport.js\"\n\nconst isUnauthorizedFailure = Predicate.isTagged(\"UnauthorizedApiError\")\nconst ignoreSessionExpired = (): void => undefined\n\nexport type RelationshipRepairPanelState =\n | { readonly _tag: \"idle\" }\n | { readonly _tag: \"loading\" }\n | { readonly _tag: \"failed\" }\n | {\n readonly _tag: \"ready\"\n readonly actionFailure: RelationshipRepairProposalId | null\n readonly applications: ReadonlyMap<RelationshipRepairProposalId, RelationshipRepairApplication>\n readonly busyProposalId: RelationshipRepairProposalId | null\n readonly environmentScopeKey: string\n readonly page: RelationshipRepairProposalList\n readonly releaseId: ReleaseId\n readonly sessionKey: string\n }\n\nexport interface RelationshipRepairProposalController {\n readonly apply: (proposalId: RelationshipRepairProposalId) => Promise<boolean>\n readonly retry: () => void\n readonly review: (\n proposalId: RelationshipRepairProposalId,\n decision: RelationshipRepairReviewDecision,\n rationale: string\n ) => Promise<boolean>\n readonly state: RelationshipRepairPanelState\n}\n\ninterface PendingReviewIntent {\n readonly decision: RelationshipRepairReviewDecision\n readonly rationale: string\n readonly reviewId: RelationshipRepairReviewId\n}\n\nconst proposalOrder = (left: RelationshipRepairProposal, right: RelationshipRepairProposal): number => {\n const proposedAtOrder = DateTime.Order(right.proposedAt, left.proposedAt)\n return proposedAtOrder === 0 ? right.proposalId.localeCompare(left.proposalId) : proposedAtOrder\n}\n\nconst aggregateProposalPages = (\n releaseId: ReleaseId,\n pages: ReadonlyArray<RelationshipRepairProposalList>\n): RelationshipRepairProposalList => {\n const proposalsById = new Map<RelationshipRepairProposalId, RelationshipRepairProposal>()\n const applicationsByProposalId = new Map<RelationshipRepairProposalId, RelationshipRepairApplication>()\n for (const page of pages) {\n for (const proposal of page.proposals) proposalsById.set(proposal.proposalId, proposal)\n for (const application of page.applications) {\n applicationsByProposalId.set(application.proposalId, application)\n }\n }\n const orderedProposals = [...proposalsById.values()].sort(proposalOrder)\n const proposals = orderedProposals.slice(0, MAXIMUM_REPAIR_PROPOSALS)\n const applications = proposals.flatMap((proposal): ReadonlyArray<RelationshipRepairApplication> => {\n const application = applicationsByProposalId.get(proposal.proposalId)\n return application === undefined ? [] : [application]\n })\n return {\n releaseId,\n environmentId: null,\n status: null,\n truncated: pages.some(({ truncated }) => truncated) || orderedProposals.length > MAXIMUM_REPAIR_PROPOSALS,\n proposals,\n applications\n }\n}\n\n/** Keep one release's proposal ledger current after explicit review and apply actions. */\nexport const useRelationshipRepairProposals = (\n releaseId: ReleaseId,\n environmentIds: ReadonlyArray<EnvironmentId>,\n sessionKey: string | null,\n transport: RelationshipRepairTransport = browserRelationshipRepairTransport,\n onSessionExpired: (sessionKey: string) => void = ignoreSessionExpired\n): RelationshipRepairProposalController => {\n const [requestRevision, setRequestRevision] = useState(0)\n const [state, setState] = useState<RelationshipRepairPanelState>({ _tag: \"idle\" })\n const actionAbort = useRef<AbortController | null>(null)\n const busyProposal = useRef<RelationshipRepairProposalId | null>(null)\n const pendingReviews = useRef(new Map<RelationshipRepairProposalId, PendingReviewIntent>())\n const stateRef = useRef(state)\n const environmentScopeKey = environmentIds.join(\":\")\n\n useEffect(() => {\n actionAbort.current?.abort()\n actionAbort.current = null\n busyProposal.current = null\n pendingReviews.current.clear()\n if (sessionKey === null) {\n setState({ _tag: \"idle\" })\n return\n }\n const abort = new AbortController()\n setState({ _tag: \"loading\" })\n loadReleaseEnvironmentSlices(\n environmentIds,\n (environmentId) => transport.list(releaseId, environmentId, abort.signal)\n ).then(\n (pages) => {\n if (!abort.signal.aborted) {\n const page = aggregateProposalPages(releaseId, pages)\n setState({\n _tag: \"ready\",\n actionFailure: null,\n applications: new Map(page.applications.map((application) => [application.proposalId, application])),\n busyProposalId: null,\n environmentScopeKey,\n page,\n releaseId,\n sessionKey\n })\n }\n },\n (failure) => {\n if (!abort.signal.aborted) {\n if (isUnauthorizedFailure(failure)) onSessionExpired(sessionKey)\n setState({ _tag: \"failed\" })\n }\n }\n )\n return () => abort.abort()\n }, [environmentScopeKey, onSessionExpired, releaseId, requestRevision, sessionKey, transport])\n\n useEffect(() => () => actionAbort.current?.abort(), [])\n\n const currentState = state._tag === \"ready\" &&\n (state.environmentScopeKey !== environmentScopeKey ||\n state.releaseId !== releaseId ||\n state.sessionKey !== sessionKey)\n ? { _tag: \"loading\" } satisfies RelationshipRepairPanelState\n : state\n stateRef.current = currentState\n\n const beginAction = useCallback((proposalId: RelationshipRepairProposalId): AbortController | null => {\n if (stateRef.current._tag !== \"ready\" || busyProposal.current !== null) return null\n const abort = new AbortController()\n busyProposal.current = proposalId\n actionAbort.current?.abort()\n actionAbort.current = abort\n setState((current) =>\n current._tag === \"ready\"\n ? { ...current, actionFailure: null, busyProposalId: proposalId }\n : current\n )\n return abort\n }, [])\n\n const finishAction = useCallback((abort: AbortController): boolean => {\n if (actionAbort.current !== abort) return false\n actionAbort.current = null\n busyProposal.current = null\n return true\n }, [])\n\n const review = useCallback(async (\n proposalId: RelationshipRepairProposalId,\n decision: RelationshipRepairReviewDecision,\n rationale: string\n ): Promise<boolean> => {\n const abort = beginAction(proposalId)\n if (abort === null) return false\n try {\n const pending = pendingReviews.current.get(proposalId)\n const intent = pending?.decision === decision && pending.rationale === rationale\n ? pending\n : { decision, rationale, reviewId: await transport.makeReviewId() }\n pendingReviews.current.set(proposalId, intent)\n const proposal = await transport.review(proposalId, intent.reviewId, decision, rationale, abort.signal)\n if (!finishAction(abort) || abort.signal.aborted) return false\n pendingReviews.current.delete(proposalId)\n setState((current) =>\n current._tag !== \"ready\" || abort.signal.aborted\n ? current\n : {\n ...current,\n busyProposalId: null,\n page: {\n ...current.page,\n proposals: current.page.proposals.map((item) => item.proposalId === proposalId ? proposal : item)\n }\n }\n )\n return true\n } catch {\n if (!abort.signal.aborted && finishAction(abort)) {\n setState((current) =>\n current._tag === \"ready\"\n ? { ...current, actionFailure: proposalId, busyProposalId: null }\n : current\n )\n }\n return false\n }\n }, [beginAction, finishAction, transport])\n\n const apply = useCallback(async (proposalId: RelationshipRepairProposalId): Promise<boolean> => {\n const abort = beginAction(proposalId)\n if (abort === null) return false\n try {\n const result = await transport.apply(proposalId, abort.signal)\n if (!finishAction(abort) || abort.signal.aborted) return false\n setState((current) => {\n if (current._tag !== \"ready\" || abort.signal.aborted) return current\n const applications = new Map(current.applications)\n applications.set(proposalId, result.application)\n return { ...current, applications, busyProposalId: null }\n })\n return true\n } catch {\n if (!abort.signal.aborted && finishAction(abort)) {\n setState((current) =>\n current._tag === \"ready\"\n ? { ...current, actionFailure: proposalId, busyProposalId: null }\n : current\n )\n }\n return false\n }\n }, [beginAction, finishAction, transport])\n\n return {\n apply,\n retry: useCallback(() => setRequestRevision((revision) => revision + 1), []),\n review,\n state: currentState\n }\n}\n",".root,\n.ledger,\n.proposal,\n.proposalHeader,\n.decision,\n.reviewEvidence,\n.reviewForm,\n.loading,\n.panelStack {\n display: grid;\n}\n\n.reviewEvidence {\n gap: var(--rly-space-4);\n padding: var(--rly-space-12) var(--rly-space-16);\n border: 1px solid var(--rly-color-border-1);\n border-radius: var(--rly-radius-control);\n background: var(--rly-color-surface-1);\n}\n\n.root,\n.loading,\n.panelStack {\n gap: var(--rly-space-24);\n}\n\n.header,\n.proposalHeader,\n.peopleTrace,\n.actions,\n.agentIdentity {\n align-items: center;\n display: flex;\n}\n\n.header,\n.proposalHeader {\n justify-content: space-between;\n}\n\n.header {\n gap: var(--rly-space-24);\n}\n\n.header > div {\n display: grid;\n gap: var(--rly-space-4);\n}\n\n.ledger {\n gap: var(--rly-space-12);\n}\n\n.proposal {\n gap: var(--rly-space-20);\n overflow: hidden;\n padding: var(--rly-space-24);\n}\n\n.proposalHeader {\n gap: var(--rly-space-16);\n}\n\n.decision {\n gap: var(--rly-space-4);\n}\n\n.decision strong {\n font: var(--rly-type-section-title-weight) var(--rly-type-section-title-size) /\n var(--rly-type-section-title-line-height) var(--rly-type-section-title-font);\n letter-spacing: var(--rly-type-section-title-tracking);\n text-transform: capitalize;\n}\n\n.decision code {\n color: var(--rly-color-text-2);\n font: var(--rly-type-code-weight) var(--rly-type-code-size) / var(--rly-type-code-line-height)\n var(--rly-type-code-font);\n}\n\n.rationale {\n max-inline-size: 58ch;\n}\n\n.peopleTrace {\n flex-wrap: wrap;\n gap: var(--rly-space-12);\n}\n\n.traceArrow {\n color: var(--rly-color-text-3);\n font: var(--rly-type-code-weight) var(--rly-type-code-size) / 1 var(--rly-type-code-font);\n}\n\n.agentIdentity {\n gap: var(--rly-space-8);\n}\n\n.agentGlyph {\n align-items: center;\n background: var(--rly-color-surface-3);\n border-radius: 50%;\n color: var(--rly-color-agent);\n display: inline-flex;\n block-size: var(--rly-space-24);\n inline-size: var(--rly-space-24);\n justify-content: center;\n}\n\n.agentIdentity > span:last-child {\n display: grid;\n}\n\n.agentIdentity strong,\n.agentIdentity small {\n font: var(--rly-type-meta-weight) var(--rly-type-meta-size) / var(--rly-type-meta-line-height)\n var(--rly-type-meta-font);\n}\n\n.agentIdentity small {\n color: var(--rly-color-text-2);\n}\n\n.reviewForm {\n border-block-start: 1px solid var(--rly-color-border-1);\n gap: var(--rly-space-16);\n padding-block-start: var(--rly-space-20);\n}\n\n.actions {\n flex-wrap: wrap;\n gap: var(--rly-space-8);\n}\n\n.actionFailure {\n margin-block: var(--rly-space-4);\n}\n\n.status:focus {\n border-radius: var(--rly-radius-control);\n}\n\n.srOnly {\n block-size: 1px;\n clip: rect(0 0 0 0);\n clip-path: inset(50%);\n inline-size: 1px;\n overflow: hidden;\n position: absolute;\n white-space: nowrap;\n}\n\n@media (max-width: 40rem) {\n .header,\n .proposalHeader {\n align-items: flex-start;\n flex-direction: column;\n }\n\n .proposal {\n padding: var(--rly-space-20);\n }\n\n .traceArrow {\n display: none;\n }\n\n .peopleTrace {\n align-items: flex-start;\n flex-direction: column;\n }\n}\n\n@media (prefers-reduced-motion: no-preference) {\n .reviewForm {\n animation: reveal-review 160ms ease-out both;\n }\n}\n\n@keyframes reveal-review {\n from {\n opacity: 0;\n transform: translateY(-4px);\n }\n}\n","import { Person, type RlyPerson } from \"@knpkv/rly/patterns\"\nimport {\n Button,\n Field,\n type RlyStateTone,\n Skeleton,\n StateLabel,\n StatePanel,\n Surface,\n Text\n} from \"@knpkv/rly/primitives\"\nimport * as DateTime from \"effect/DateTime\"\nimport { type ReactElement, useEffect, useRef, useState } from \"react\"\n\nimport type { SessionSummary } from \"../../api/session.js\"\nimport type { Actor } from \"../../domain/actors.js\"\nimport type {\n RelationshipRepairApplication,\n RelationshipRepairProposal,\n RelationshipRepairReviewDecision\n} from \"../../domain/relationshipRepair.js\"\nimport type { RelationshipRepairProposalId } from \"../../domain/identifiers.js\"\nimport { type BrowserSessionState, useBrowserSession } from \"../BrowserSession.js\"\nimport type { PortfolioReleasePresentation } from \"../portfolio/presentPortfolio.js\"\nimport { RelationshipRepairCandidatePicker } from \"./RelationshipRepairCandidatePicker.js\"\nimport { type RelationshipRepairPanelState, useRelationshipRepairProposals } from \"./useRelationshipRepairProposals.js\"\nimport type { RelationshipRepairTransport } from \"./relationshipRepairTransport.js\"\nimport styles from \"./RelationshipRepairPanel.module.css\"\n\nconst ignoreSessionExpired = (): void => undefined\n\ninterface RelationshipRepairPanelViewProps {\n readonly mutationsEnabled: boolean\n readonly onApply: (proposalId: RelationshipRepairProposalId) => Promise<boolean>\n readonly onRetry: () => void\n readonly onReview: (\n proposalId: RelationshipRepairProposalId,\n decision: RelationshipRepairReviewDecision,\n rationale: string\n ) => Promise<boolean>\n readonly release: PortfolioReleasePresentation\n readonly session: SessionSummary\n readonly state: RelationshipRepairPanelState\n}\n\nconst shortId = (id: string): string => id.slice(-6)\n\nconst isSameActor = (left: Actor, right: Actor): boolean =>\n left._tag === right._tag &&\n (left._tag === \"human\"\n ? right._tag === \"human\" && left.personId === right.personId\n : right._tag === \"agent\" && left.agentId === right.agentId)\n\nconst actorPerson = (\n actor: Extract<Actor, { readonly _tag: \"human\" }>,\n release: PortfolioReleasePresentation,\n role: string\n): RlyPerson => {\n const collaborator = release.collaborators.find(({ id }) => id.startsWith(`${actor.personId}:`))\n return collaborator === undefined\n ? { id: actor.personId, name: `Person ${shortId(actor.personId)}`, role }\n : { ...collaborator, role }\n}\n\nconst ActorIdentity = ({\n actor,\n release,\n role\n}: {\n readonly actor: Actor\n readonly release: PortfolioReleasePresentation\n readonly role: string\n}): ReactElement =>\n actor._tag === \"human\" ? (\n <Person person={actorPerson(actor, release, role)} size=\"compact\" />\n ) : (\n <div className={styles.agentIdentity}>\n <span aria-hidden=\"true\" className={styles.agentGlyph}>\n ✦\n </span>\n <span>\n <strong>Agent {shortId(actor.agentId)}</strong>\n <small>{role}</small>\n </span>\n </div>\n )\n\ninterface RepairStatusPresentation {\n readonly label: string\n readonly tone: RlyStateTone\n}\n\nconst statusPresentation = (\n proposal: RelationshipRepairProposal,\n application: RelationshipRepairApplication | undefined\n): RepairStatusPresentation => {\n if (application !== undefined) return { label: `Applied · r${application.appliedRevision}`, tone: \"positive\" }\n switch (proposal.status) {\n case \"pending\":\n return { label: \"Needs review\", tone: \"caution\" }\n case \"approved\":\n return { label: \"Ready to apply\", tone: \"positive\" }\n case \"rejected\":\n return { label: \"Rejected\", tone: \"critical\" }\n }\n}\n\nconst formattedTime = (timestamp: RelationshipRepairProposal[\"proposedAt\"]): string =>\n DateTime.formatUtc(timestamp, {\n day: \"2-digit\",\n hour: \"2-digit\",\n hour12: false,\n locale: \"en-GB\",\n minute: \"2-digit\",\n month: \"short\"\n })\n\ninterface ProposalRowProps {\n readonly actionFailed: boolean\n readonly application: RelationshipRepairApplication | undefined\n readonly isBusy: boolean\n readonly isGloballyBusy: boolean\n readonly mutationsEnabled: boolean\n readonly onApply: RelationshipRepairPanelViewProps[\"onApply\"]\n readonly onRetry: RelationshipRepairPanelViewProps[\"onRetry\"]\n readonly onReview: RelationshipRepairPanelViewProps[\"onReview\"]\n readonly proposal: RelationshipRepairProposal\n readonly release: PortfolioReleasePresentation\n readonly session: SessionSummary\n}\n\nconst ProposalRow = ({\n actionFailed,\n application,\n isBusy,\n isGloballyBusy,\n mutationsEnabled,\n onApply,\n onRetry,\n onReview,\n proposal,\n release,\n session\n}: ProposalRowProps): ReactElement => {\n const [isReviewing, setIsReviewing] = useState(false)\n const [rationale, setRationale] = useState(\"\")\n const [announcement, setAnnouncement] = useState<string | null>(null)\n const statusRef = useRef<HTMLDivElement>(null)\n const status = statusPresentation(proposal, application)\n const canReview =\n mutationsEnabled &&\n proposal.status === \"pending\" &&\n (session.permission === \"workspace-owner\" || session.permission === \"workspace-approver\") &&\n !isSameActor(proposal.origin.actor, session.actor)\n const canApply =\n mutationsEnabled &&\n proposal.status === \"approved\" &&\n application === undefined &&\n session.permission === \"workspace-owner\"\n const reviewRationale = rationale.trim()\n\n const review = async (decision: RelationshipRepairReviewDecision): Promise<void> => {\n if (reviewRationale.length === 0) return\n const recorded = await onReview(proposal.proposalId, decision, reviewRationale)\n if (!recorded) return\n setIsReviewing(false)\n setRationale(\"\")\n setAnnouncement(decision === \"approved\" ? \"Proposal approved.\" : \"Proposal rejected.\")\n }\n\n const apply = async (): Promise<void> => {\n const recorded = await onApply(proposal.proposalId)\n if (recorded) setAnnouncement(\"Repair applied.\")\n }\n\n useEffect(() => {\n if (announcement !== null) statusRef.current?.focus()\n }, [announcement])\n\n return (\n <Surface as=\"article\" className={styles.proposal} padding=\"none\" tone=\"secondary\">\n <header className={styles.proposalHeader}>\n <div className={styles.decision}>\n <strong>\n {proposal.disposition[0]?.toLocaleUpperCase(\"en-US\")}\n {proposal.disposition.slice(1)}\n </strong>\n <code>\n r{proposal.expectedRevision} → r{proposal.expectedRevision + 1}\n </code>\n </div>\n <div className={styles.status} ref={statusRef} tabIndex={announcement === null ? undefined : -1}>\n <StateLabel label={status.label} size=\"compact\" tone={status.tone} />\n <span aria-live=\"polite\" className={styles.srOnly}>\n {announcement ?? \"\"}\n </span>\n </div>\n </header>\n\n <Text className={styles.rationale} variant=\"body-large\">\n {proposal.rationale}\n </Text>\n\n <div className={styles.peopleTrace}>\n <ActorIdentity\n actor={proposal.origin.actor}\n release={release}\n role={`Proposed · ${formattedTime(proposal.proposedAt)}`}\n />\n {proposal.review === null ? null : (\n <>\n <span aria-hidden=\"true\" className={styles.traceArrow}>\n →\n </span>\n <ActorIdentity\n actor={proposal.review.origin.actor}\n release={release}\n role={`${proposal.review.decision === \"approved\" ? \"Approved\" : \"Rejected\"} · ${formattedTime(proposal.review.reviewedAt)}`}\n />\n </>\n )}\n {application === undefined ? null : (\n <>\n <span aria-hidden=\"true\" className={styles.traceArrow}>\n →\n </span>\n <ActorIdentity\n actor={application.origin.actor}\n release={release}\n role={`Applied revision ${application.appliedRevision} · ${formattedTime(application.appliedAt)}`}\n />\n </>\n )}\n </div>\n\n {proposal.review === null ? null : (\n <div className={styles.reviewEvidence}>\n <Text as=\"strong\" variant=\"label\">\n Review note\n </Text>\n <Text tone=\"secondary\">{proposal.review.rationale}</Text>\n </div>\n )}\n\n {actionFailed ? (\n <StatePanel\n action={<Button onClick={onRetry}>Reload decisions</Button>}\n announce=\"assertive\"\n className={styles.actionFailure}\n description=\"The proposal may have changed. Reload the release decisions before trying again.\"\n title=\"Action not recorded\"\n tone=\"caution\"\n />\n ) : null}\n\n {isReviewing && canReview ? (\n <form className={styles.reviewForm} onSubmit={(event) => event.preventDefault()}>\n <Field description=\"Stored with the immutable decision.\" label=\"Review note\" required>\n {(controlProps) => (\n <textarea\n {...controlProps}\n autoFocus\n maxLength={1_000}\n onChange={(event) => setRationale(event.currentTarget.value)}\n value={rationale}\n />\n )}\n </Field>\n <div className={styles.actions}>\n <Button\n disabled={reviewRationale.length === 0 || isGloballyBusy}\n loading={isBusy}\n onClick={() => void review(\"rejected\")}\n variant=\"quiet\"\n >\n Reject\n </Button>\n <Button\n disabled={reviewRationale.length === 0 || isGloballyBusy}\n loading={isBusy}\n onClick={() => void review(\"approved\")}\n variant=\"primary\"\n >\n Approve\n </Button>\n </div>\n </form>\n ) : (\n <div className={styles.actions}>\n {canReview ? (\n <Button disabled={isGloballyBusy} onClick={() => setIsReviewing(true)}>\n Review proposal\n </Button>\n ) : null}\n {canApply ? (\n <Button\n disabled={isGloballyBusy && !isBusy}\n loading={isBusy}\n onClick={() => void apply()}\n variant=\"primary\"\n >\n Apply repair\n </Button>\n ) : null}\n {proposal.status === \"pending\" && isSameActor(proposal.origin.actor, session.actor) ? (\n <Text tone=\"tertiary\" variant=\"meta\">\n Another owner or approver must review.\n </Text>\n ) : null}\n </div>\n )}\n </Surface>\n )\n}\n\nconst LoadingPanel = (): ReactElement => (\n <div aria-label=\"Loading release decisions\" className={styles.loading} role=\"status\">\n <Skeleton decorative={false} height=\"1.5rem\" label=\"Loading release decisions\" width=\"12rem\" />\n <Skeleton decorative height=\"11rem\" variant=\"block\" />\n </div>\n)\n\n/** Render the exact, human-attributed decision ledger for one release. */\nexport const RelationshipRepairPanelView = ({\n mutationsEnabled,\n onApply,\n onRetry,\n onReview,\n release,\n session,\n state\n}: RelationshipRepairPanelViewProps): ReactElement => {\n if (state._tag === \"idle\" || state._tag === \"loading\") return <LoadingPanel />\n if (state._tag === \"failed\") {\n return (\n <StatePanel\n action={<Button onClick={onRetry}>Try again</Button>}\n description=\"Control Center could not read the governed decisions for this release.\"\n title=\"Release decisions unavailable\"\n tone=\"caution\"\n />\n )\n }\n if (state.page.proposals.length === 0) {\n return (\n <StatePanel\n description=\"No relationship repair is waiting for review or application.\"\n title=\"No repair decisions\"\n />\n )\n }\n\n return (\n <div className={styles.root}>\n <header className={styles.header}>\n <div>\n <Text as=\"h3\" variant=\"card-title\">\n Repair decisions\n </Text>\n <Text tone=\"secondary\">One compact ledger from proposal to human decision to applied revision.</Text>\n </div>\n <StateLabel\n label={`${state.page.proposals.length}${state.page.truncated ? \"+\" : \"\"} decision${state.page.proposals.length === 1 ? \"\" : \"s\"}`}\n size=\"compact\"\n tone=\"neutral\"\n />\n </header>\n <div className={styles.ledger}>\n {state.page.proposals.map((proposal) => (\n <ProposalRow\n actionFailed={state.actionFailure === proposal.proposalId}\n application={state.applications.get(proposal.proposalId)}\n isBusy={state.busyProposalId === proposal.proposalId}\n isGloballyBusy={state.busyProposalId !== null}\n key={proposal.proposalId}\n mutationsEnabled={mutationsEnabled}\n onApply={onApply}\n onRetry={onRetry}\n onReview={onReview}\n proposal={proposal}\n release={release}\n session={session}\n />\n ))}\n </div>\n </div>\n )\n}\n\nconst sessionScopeKey = (session: SessionSummary): string => {\n const actorId = session.actor._tag === \"human\" ? session.actor.personId : session.actor.agentId\n return `${session.sessionId}:${session.workspaceId}:${session.permission}:${session.actor._tag}:${actorId}`\n}\n\ninterface RelationshipRepairSessionAccess {\n readonly mutationsEnabled: boolean\n readonly session: SessionSummary | null\n}\n\n/** Cookie-authenticated reads survive storage failure; mutation controls do not. */\nexport const relationshipRepairSessionAccess = (state: BrowserSessionState): RelationshipRepairSessionAccess => {\n switch (state._tag) {\n case \"authenticated\":\n return { mutationsEnabled: true, session: state.session }\n case \"storage-unavailable\":\n return { mutationsEnabled: false, session: state.session }\n case \"anonymous\":\n case \"blocked\":\n case \"checking\":\n case \"unavailable\":\n return { mutationsEnabled: false, session: null }\n }\n}\n\n/** Render the repair ledger from an explicit browser-session state. */\nexport const RelationshipRepairPanelContent = ({\n browserSessionState,\n onSessionExpired = ignoreSessionExpired,\n release,\n transport\n}: {\n readonly browserSessionState: BrowserSessionState\n readonly onSessionExpired?: (sessionKey: string) => void\n readonly release: PortfolioReleasePresentation\n readonly transport?: RelationshipRepairTransport\n}): ReactElement => {\n const access = relationshipRepairSessionAccess(browserSessionState)\n const controller = useRelationshipRepairProposals(\n release.id,\n release.targetEnvironmentIds,\n access.session?.sessionId ?? null,\n transport,\n onSessionExpired\n )\n if (access.session === null) return <LoadingPanel />\n return (\n <div className={styles.panelStack}>\n <RelationshipRepairPanelView\n mutationsEnabled={access.mutationsEnabled}\n onApply={controller.apply}\n onRetry={controller.retry}\n onReview={controller.review}\n release={release}\n session={access.session}\n state={controller.state}\n />\n {access.mutationsEnabled ? (\n <RelationshipRepairCandidatePicker\n environmentIds={release.targetEnvironmentIds}\n key={`${release.id}:${release.targetEnvironmentIds.join(\":\")}:${sessionScopeKey(access.session)}`}\n onCreated={controller.retry}\n releaseId={release.id}\n session={access.session}\n />\n ) : null}\n </div>\n )\n}\n\n/** Connect one full release view to its authenticated repair-proposal ledger. */\nexport const RelationshipRepairPanel = ({\n release\n}: {\n readonly release: PortfolioReleasePresentation\n}): ReactElement => {\n const browserSession = useBrowserSession()\n return (\n <RelationshipRepairPanelContent\n browserSessionState={browserSession.state}\n onSessionExpired={browserSession.invalidateSession}\n release={release}\n />\n )\n}\n",".state {\n display: grid;\n min-block-size: 60dvh;\n place-items: center;\n}\n\n.state a,\n.back,\n.releaseAction {\n color: inherit;\n font: var(--rly-type-label-weight) var(--rly-type-label-size) / var(--rly-type-label-line-height)\n var(--rly-type-label-font);\n}\n\n.releaseAction {\n display: inline-flex;\n min-block-size: var(--rly-space-48);\n align-items: center;\n justify-content: center;\n padding-inline: var(--rly-space-24);\n border-radius: var(--rly-radius-control);\n background: var(--rly-color-action-background);\n color: var(--rly-color-action-foreground);\n font-size: var(--rly-type-body-large-size);\n text-decoration: none;\n}\n\n.releaseAction:focus-visible {\n outline: var(--rly-focus-ring-width) solid var(--rly-color-focus);\n outline-offset: var(--rly-focus-ring-offset);\n}\n\n.previewDetails,\n.evidence,\n.full,\n.fullHeader,\n.fullTitle,\n.section {\n display: grid;\n}\n\n.previewDetails,\n.evidence {\n gap: var(--rly-space-16);\n}\n\n.evidenceHeading,\n.fullIdentity {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n gap: var(--rly-space-16);\n}\n\n.evidenceHeading > div {\n display: grid;\n gap: var(--rly-space-4);\n}\n\n.full {\n gap: clamp(4rem, 9vw, 8rem);\n}\n\n.fullHeader {\n gap: var(--rly-space-32);\n}\n\n.fullTitle {\n gap: var(--rly-space-12);\n}\n\n.fullTitle h1 {\n max-inline-size: 12ch;\n outline: none;\n min-inline-size: 0;\n overflow-wrap: break-word;\n text-wrap: balance;\n}\n\n.section {\n gap: var(--rly-space-24);\n}\n\n@media (max-width: 40rem) {\n .full {\n gap: var(--rly-space-64);\n }\n\n .fullHeader {\n gap: var(--rly-space-24);\n }\n}\n","import {\n AgentContextButton,\n FreshnessStamp,\n PeopleStrip,\n ReleasePreview,\n ReleaseRelay,\n ServiceMark,\n StageRail,\n Verdict\n} from \"@knpkv/rly/patterns\"\nimport { Button, StateLabel, StatePanel, Surface, Text } from \"@knpkv/rly/primitives\"\nimport { type ReactElement, useEffect, useRef, useState } from \"react\"\nimport { Link, useLocation, useNavigate, useOutletContext, useParams, useViewTransitionState } from \"react-router\"\n\nimport { PortfolioOverviewView } from \"../portfolio/PortfolioOverview.js\"\nimport type { PortfolioReleasePresentation } from \"../portfolio/presentPortfolio.js\"\nimport type { WorkspaceReleaseOutletContext } from \"./WorkspaceReleaseLayout.js\"\nimport {\n decodeReleaseRouteId,\n readReleaseOrigin,\n releaseActiveWorkPath,\n releaseAgentPath,\n resolveReleaseOrigin,\n releaseFullPath,\n releaseOriginHref,\n releaseParentPath,\n releasePreviewPath,\n releaseTransitionNames,\n workspaceItemsPath\n} from \"./releaseRoutes.js\"\nimport styles from \"./ReleaseRoute.module.css\"\nimport { useCompactReleasePreview, usePrefersReducedReleaseMotion } from \"./useCompactReleasePreview.js\"\nimport { RelationshipRepairPanel } from \"./RelationshipRepairPanel.js\"\nimport { ReleaseWorkset } from \"./ReleaseWorkset.js\"\n\ninterface ReleaseRouteSelection {\n readonly release: PortfolioReleasePresentation\n readonly releaseId: NonNullable<ReturnType<typeof decodeReleaseRouteId>>\n}\n\nconst selectRelease = (\n context: WorkspaceReleaseOutletContext,\n routeReleaseId: string | undefined\n): ReleaseRouteSelection | null => {\n const releaseId = decodeReleaseRouteId(routeReleaseId)\n if (releaseId === null || context.controller.state._tag !== \"ready\") return null\n const release = context.controller.state.portfolio.releases.find((candidate) => candidate.id === releaseId)\n return release === undefined ? null : { release, releaseId }\n}\n\nconst ReleaseNotFound = ({ workspaceId }: Pick<WorkspaceReleaseOutletContext, \"workspaceId\">): ReactElement => {\n const stateRef = useRef<HTMLElement>(null)\n useEffect(() => stateRef.current?.focus(), [])\n return (\n <section className={styles.state} data-release-not-found=\"\" ref={stateRef} tabIndex={-1}>\n <StatePanel\n action={<Link to={releaseParentPath(workspaceId)}>Return to workspace overview</Link>}\n description=\"This release does not exist in the current workspace snapshot. It may have been removed or the address may be incorrect.\"\n title=\"Release not found\"\n />\n </section>\n )\n}\n\nconst ReleaseRouteLoading = ({ context }: { readonly context: WorkspaceReleaseOutletContext }): ReactElement => {\n const stateRef = useRef<HTMLDivElement>(null)\n useEffect(() => stateRef.current?.querySelector<HTMLElement>(\"#portfolio-title\")?.focus(), [])\n return (\n <div ref={stateRef}>\n <PortfolioOverviewView\n onPreviewRelease={() => undefined}\n onRetry={context.controller.onRetry}\n state={context.controller.state}\n />\n </div>\n )\n}\n\nexport const ReleaseAction = ({ release }: { readonly release: PortfolioReleasePresentation }): ReactElement => {\n const context = useOutletContext<WorkspaceReleaseOutletContext>()\n const location = useLocation()\n const action = (() => {\n switch (release.readinessVerdict) {\n case \"blocked\":\n return { label: \"Review blocker\", to: releaseActiveWorkPath(context.workspaceId, release.id) }\n case \"held\":\n return { label: \"Repair missing links\", to: `${releaseFullPath(context.workspaceId, release.id)}#release-work` }\n case \"ready\":\n return {\n label: \"Review ship evidence\",\n to: `${releaseFullPath(context.workspaceId, release.id)}#release-evidence`\n }\n case \"deploying\":\n return { label: \"Open deployment\", to: `${releaseFullPath(context.workspaceId, release.id)}#release-work` }\n case \"building\":\n return { label: \"Open build\", to: `${releaseFullPath(context.workspaceId, release.id)}#release-work` }\n case \"shipped\":\n return {\n label: \"View release record\",\n to: `${releaseFullPath(context.workspaceId, release.id)}#release-evidence`\n }\n case \"unknown\":\n return null\n }\n })()\n return action === null ? (\n <Button disabled size=\"principal\" stretch variant=\"primary\">\n Readiness evidence required\n </Button>\n ) : (\n <Link className={styles.releaseAction} state={location.state} to={action.to}>\n {action.label}\n </Link>\n )\n}\n\nexport const ReleaseEvidence = ({ release }: { readonly release: PortfolioReleasePresentation }): ReactElement => (\n <Surface as=\"section\" className={styles.evidence} padding=\"compact\" tone=\"secondary\">\n <div className={styles.evidenceHeading}>\n {release.source.service === null ? null : <ServiceMark service={release.source.service} />}\n <div>\n <Text as=\"h2\" variant=\"card-title\">\n {release.source.displayName}\n </Text>\n <Text tone=\"secondary\" variant=\"meta\">\n Source evidence\n </Text>\n </div>\n </div>\n <StateLabel label={release.source.healthLabel} size=\"compact\" tone={release.source.healthTone} />\n {release.source.warning === null ? (\n <Text tone=\"secondary\">Detailed evidence is not evaluated in the tracer snapshot.</Text>\n ) : (\n <Text tone=\"secondary\">{release.source.warning}</Text>\n )}\n </Surface>\n)\n\nconst releaseContextLabel = (release: PortfolioReleasePresentation): string =>\n `${release.serviceName} · ${release.version} · ${release.relay.codename} · ${release.id}`\n\nexport const ReleaseAgentEntry = ({ release }: { readonly release: PortfolioReleasePresentation }): ReactElement => {\n const context = useOutletContext<WorkspaceReleaseOutletContext>()\n const location = useLocation()\n const navigate = useNavigate()\n const prefersReducedMotion = usePrefersReducedReleaseMotion()\n return (\n <AgentContextButton\n actionLabel=\"Ask about this release\"\n agentName=\"Relay\"\n context={releaseContextLabel(release)}\n onClick={() =>\n navigate(releaseAgentPath(context.workspaceId, release.id), {\n state: location.state,\n viewTransition: !prefersReducedMotion\n })\n }\n />\n )\n}\n\nconst CompleteCollaborators = ({ release }: { readonly release: PortfolioReleasePresentation }): ReactElement =>\n release.collaborators.length === 0 ? (\n <StatePanel\n description=\"Assign an owner or approver before a governed release action can proceed.\"\n title=\"No release collaborators assigned\"\n />\n ) : (\n <PeopleStrip\n aria-label={`All ${release.serviceName} release collaborators`}\n expanded\n limit={release.collaborators.length}\n onExpandedChange={() => undefined}\n people={release.collaborators}\n />\n )\n\ntype PreviewExit = \"origin\" | null\n\nconst ReleasePreviewContent = ({ selection }: { readonly selection: ReleaseRouteSelection }): ReactElement => {\n const context = useOutletContext<WorkspaceReleaseOutletContext>()\n const isCompact = useCompactReleasePreview()\n const prefersReducedMotion = usePrefersReducedReleaseMotion()\n const location = useLocation()\n const navigate = useNavigate()\n const [exit, setExit] = useState<PreviewExit>(null)\n const [isOpen, setIsOpen] = useState(true)\n const resolvedOrigin = resolveReleaseOrigin(location.state, context.workspaceId, selection.releaseId)\n const originHref = releaseOriginHref(resolvedOrigin.origin)\n const fullPath = releaseFullPath(context.workspaceId, selection.releaseId)\n const agentPath = releaseAgentPath(context.workspaceId, selection.releaseId)\n const previewPath = releasePreviewPath(context.workspaceId, selection.releaseId)\n const isPreviewTransitioning = useViewTransitionState(previewPath)\n const isFullTransitioning = useViewTransitionState(fullPath)\n const isAgentTransitioning = useViewTransitionState(agentPath)\n const transitionNames =\n isPreviewTransitioning || isFullTransitioning || isAgentTransitioning\n ? releaseTransitionNames(selection.releaseId)\n : undefined\n\n useEffect(() => {\n if (isOpen || exit === null) return\n navigate(originHref, { replace: true })\n }, [context.workspaceId, exit, isOpen, navigate, originHref, selection.releaseId])\n\n const requestOrigin = (): void => {\n context.requestReleaseFocus(selection.releaseId)\n setExit(\"origin\")\n setIsOpen(false)\n }\n\n return (\n <ReleasePreview\n agentEntry={<ReleaseAgentEntry release={selection.release} />}\n collaborators={<CompleteCollaborators release={selection.release} />}\n entryMotion={resolvedOrigin.isStored ? \"external\" : \"intrinsic\"}\n evidence={<ReleaseEvidence release={selection.release} />}\n onOpenChange={(open) => {\n if (!open) requestOrigin()\n }}\n onOpenFullView={() => navigate(fullPath, { state: location.state, viewTransition: !prefersReducedMotion })}\n open={isOpen}\n openFullViewLabel={`Open ${selection.release.relay.codename} full view`}\n presentation={isCompact ? \"sheet\" : \"dialog\"}\n primaryAction={<ReleaseAction release={selection.release} />}\n release={selection.release.release}\n stages={<StageRail heading=\"Release stages\" stages={selection.release.stages} />}\n {...(transitionNames === undefined ? {} : { transitionNames })}\n workset={\n <div className={styles.previewDetails}>\n <ReleaseWorkset release={selection.release} workspaceId={context.workspaceId} />\n </div>\n }\n />\n )\n}\n\n/** Render the canonical release preview over its still-mounted workspace origin. */\nexport const ReleasePreviewRoute = (): ReactElement => {\n const context = useOutletContext<WorkspaceReleaseOutletContext>()\n const params = useParams()\n if (context.controller.state._tag !== \"ready\") return <ReleaseRouteLoading context={context} />\n const selection = selectRelease(context, params.releaseId)\n return selection === null ? (\n <ReleaseNotFound workspaceId={context.workspaceId} />\n ) : (\n <ReleasePreviewContent selection={selection} />\n )\n}\n\nconst FullRelease = ({ selection }: { readonly selection: ReleaseRouteSelection }): ReactElement => {\n const context = useOutletContext<WorkspaceReleaseOutletContext>()\n const location = useLocation()\n const headingRef = useRef<HTMLHeadingElement>(null)\n const origin = readReleaseOrigin(location.state, context.workspaceId, selection.releaseId)\n const originLabel = origin.pathname === workspaceItemsPath(context.workspaceId) ? \"Back to items\" : \"Back to overview\"\n const release = selection.release\n const fullPath = releaseFullPath(context.workspaceId, selection.releaseId)\n const agentPath = releaseAgentPath(context.workspaceId, selection.releaseId)\n const isFullTransitioning = useViewTransitionState(fullPath)\n const isAgentTransitioning = useViewTransitionState(agentPath)\n const transitionNames =\n isFullTransitioning || isAgentTransitioning ? releaseTransitionNames(selection.releaseId) : undefined\n\n useEffect(() => headingRef.current?.focus(), [])\n\n return (\n <article className={styles.full} data-release-full-id={release.id}>\n <header className={styles.fullHeader}>\n <Link className={styles.back} to={releaseOriginHref(origin)}>\n {originLabel}\n </Link>\n <div className={styles.fullIdentity}>\n <ReleaseRelay\n algorithm={release.relay.algorithm}\n codename={release.relay.codename}\n data-rly-release-transition-name={transitionNames?.relay}\n data-rly-release-transition-part=\"relay\"\n size=\"hero\"\n style={transitionNames === undefined ? undefined : { viewTransitionName: transitionNames.relay }}\n symbolIndices={release.relay.symbolIndices}\n />\n {release.source.freshnessDateTime === null || release.source.freshnessTime === null ? (\n <FreshnessStamp state={release.source.freshness} />\n ) : (\n <FreshnessStamp\n dateTime={release.source.freshnessDateTime}\n state={release.source.freshness}\n time={release.source.freshnessTime}\n />\n )}\n </div>\n <div className={styles.fullTitle}>\n <Text as=\"h1\" id=\"release-title\" ref={headingRef} tabIndex={-1} variant=\"verdict\">\n {release.serviceName}\n </Text>\n <Text\n as=\"code\"\n data-rly-release-transition-name={transitionNames?.version}\n data-rly-release-transition-part=\"version\"\n style={transitionNames === undefined ? undefined : { viewTransitionName: transitionNames.version }}\n tone=\"secondary\"\n variant=\"code\"\n >\n {release.version}\n </Text>\n </div>\n <Verdict\n data-rly-release-transition-name={transitionNames?.verdict}\n data-rly-release-transition-part=\"verdict\"\n reason={release.readinessReason}\n style={transitionNames === undefined ? undefined : { viewTransitionName: transitionNames.verdict }}\n tone={release.release.tone}\n verdict={release.release.verdict}\n />\n <ReleaseAction release={release} />\n </header>\n\n <StageRail heading=\"Build, verify, production\" stages={release.stages} />\n <section aria-labelledby=\"release-people\" className={styles.section}>\n <Text as=\"h2\" id=\"release-people\" variant=\"section-title\">\n People\n </Text>\n <CompleteCollaborators release={release} />\n </section>\n <section aria-labelledby=\"release-work-title\" className={styles.section} id=\"release-work\">\n <Text as=\"h2\" id=\"release-work-title\" variant=\"section-title\">\n Delivery relationships\n </Text>\n <ReleaseWorkset release={release} workspaceId={context.workspaceId} />\n <RelationshipRepairPanel release={release} />\n </section>\n <section aria-labelledby=\"release-evidence-title\" className={styles.section} id=\"release-evidence\">\n <Text as=\"h2\" id=\"release-evidence-title\" variant=\"section-title\">\n Evidence\n </Text>\n <ReleaseEvidence release={release} />\n </section>\n <section aria-labelledby=\"release-agent\" className={styles.section}>\n <Text as=\"h2\" id=\"release-agent\" variant=\"section-title\">\n Release agent\n </Text>\n <ReleaseAgentEntry release={release} />\n </section>\n </article>\n )\n}\n\n/** Render an exact release at its canonical full route without selecting a fallback entity. */\nexport const ReleaseFullRoute = (): ReactElement => {\n const context = useOutletContext<WorkspaceReleaseOutletContext>()\n const params = useParams()\n if (context.controller.state._tag !== \"ready\") return <ReleaseRouteLoading context={context} />\n const selection = selectRelease(context, params.releaseId)\n return selection === null ? (\n <ReleaseNotFound workspaceId={context.workspaceId} />\n ) : (\n <FullRelease selection={selection} />\n )\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"primitives-CgvvYKjR-BnO9EmQf.js","names":["i","a","c","f","o","t","__toESM","s","c","o","require_jsx_runtime","d","import_react","require_react","ee","S","re","w","M","N","se","F","I","L","r","i","a","c$8","R","z","W","G","K","q","le","ue","fe","me","Y"],"sources":["../../../../rly/dist/primitives-CgvvYKjR.js"],"sourcesContent":["import { r as e, t } from \"./ThemeProvider-BFeldMeE.js\";\nimport { i as n } from \"./PortalProvider-CN_81Fy3.js\";\nimport { i as r, n as i, r as a, t as o } from \"./component-DKy8kjZl.js\";\nimport { h as s, i as c, p as l } from \"./Dialog-B9Ub_gMT.js\";\nimport { RadioGroup as u, Tabs as d } from \"radix-ui\";\nimport { createElement as f, useRef as p } from \"react\";\nimport { jsx as m, jsxs as h } from \"react/jsx-runtime\";\nvar g = {\n\troot: \"rly_ChartLegend-module__root\",\n\titem: \"rly_ChartLegend-module__item\",\n\tswatch: \"rly_ChartLegend-module__swatch\"\n}, _ = (e) => i(g, e), v = [\n\t1,\n\t2,\n\t3,\n\t4,\n\t5,\n\t6,\n\t7,\n\t8,\n\t\"other\"\n], y = (e) => `var(--rly-color-series-${e})`, b = (e) => {\n\tlet t = /* @__PURE__ */ new Set();\n\tfor (let n of e) {\n\t\tlet e = r(n.id, \"ChartLegend item id\");\n\t\tif (t.has(e)) throw Error(`ChartLegend item ids must be unique: ${e}`);\n\t\tt.add(e);\n\t}\n}, x = ({ className: e, items: t, label: n, ...i }) => (b(t), t.length === 0 ? null : /* @__PURE__ */ m(\"ul\", {\n\t...i,\n\t\"aria-label\": r(n, \"ChartLegend label\"),\n\tclassName: o(_(\"root\"), e),\n\trole: \"list\",\n\tchildren: t.map((e) => /* @__PURE__ */ h(\"li\", {\n\t\tclassName: _(\"item\"),\n\t\tchildren: [/* @__PURE__ */ m(\"span\", {\n\t\t\t\"aria-hidden\": \"true\",\n\t\t\tclassName: _(\"swatch\"),\n\t\t\t\"data-series\": String(e.series),\n\t\t\tstyle: { background: y(e.series) }\n\t\t}), r(e.label, \"ChartLegend item label\")]\n\t}, e.id))\n})), ee = {\n\troot: \"rly_Divider-module__root\",\n\thorizontal: \"rly_Divider-module__horizontal\",\n\tvertical: \"rly_Divider-module__vertical\",\n\tsubtle: \"rly_Divider-module__subtle\",\n\tstrong: \"rly_Divider-module__strong\"\n}, S = (e) => i(ee, e), C = a({\n\torientation: {\n\t\thorizontal: {\n\t\t\tclassName: S(\"horizontal\"),\n\t\t\tpurpose: \"Separate stacked content\",\n\t\t\ttokens: [\"space-0\"]\n\t\t},\n\t\tvertical: {\n\t\t\tclassName: S(\"vertical\"),\n\t\t\tpurpose: \"Separate adjacent content\",\n\t\t\ttokens: [\"space-0\"]\n\t\t}\n\t},\n\tstrength: {\n\t\tsubtle: {\n\t\t\tclassName: S(\"subtle\"),\n\t\t\tpurpose: \"Quiet structural boundary\",\n\t\t\ttokens: [\"color-border-1\"]\n\t\t},\n\t\tstrong: {\n\t\t\tclassName: S(\"strong\"),\n\t\t\tpurpose: \"Explicit structural boundary\",\n\t\t\ttokens: [\"color-border-2\"]\n\t\t}\n\t}\n}), te = a({\n\torientation: \"horizontal\",\n\tstrength: \"subtle\"\n}), ne = ({ className: e, decorative: t = !0, label: n, orientation: i = \"horizontal\", strength: a = \"subtle\", ...s }) => {\n\tif (!t && n === void 0) throw Error(\"Semantic Divider label must contain visible text\");\n\tlet c = t || n === void 0 ? void 0 : r(n, \"Semantic Divider label\");\n\treturn /* @__PURE__ */ m(\"div\", {\n\t\t...s,\n\t\t\"aria-hidden\": t ? \"true\" : void 0,\n\t\t\"aria-label\": c,\n\t\t\"aria-orientation\": t ? void 0 : i,\n\t\tclassName: o(S(\"root\"), C.orientation[i].className, C.strength[a].className, e),\n\t\trole: t ? \"presentation\" : \"separator\"\n\t});\n}, re = {\n\troot: \"rly_LimitTrack-module__root\",\n\tdefaultSize: \"rly_LimitTrack-module__defaultSize\",\n\tslim: \"rly_LimitTrack-module__slim\",\n\tfill: \"rly_LimitTrack-module__fill\",\n\tprojection: \"rly_LimitTrack-module__projection\",\n\tnear: \"rly_LimitTrack-module__near\"\n}, w = (e) => i(re, e), T = a({ size: {\n\tdefault: {\n\t\tclassName: w(\"defaultSize\"),\n\t\tpurpose: \"A limit beside its numbers\",\n\t\ttokens: [\"space-12\", \"radius-tag\"]\n\t},\n\tslim: {\n\t\tclassName: w(\"slim\"),\n\t\tpurpose: \"A limit inside a dense row\",\n\t\ttokens: [\"space-6\", \"radius-tag\"]\n\t}\n} }), E = a({ size: \"default\" }), D = (e) => e !== null && Number.isFinite(e) ? e : null, O = (e, t) => {\n\tif (!Number.isFinite(e)) throw Error(`${t} must be a finite number`);\n\treturn e;\n}, k = (e, t) => {\n\tlet n = O(t, \"limitTrackTone near\"), r = D(e);\n\treturn r === null ? \"unknown\" : r >= 100 ? \"full\" : r >= n ? \"near\" : \"ok\";\n}, A = (e) => Math.min(100, Math.max(0, e)), j = ({ className: e, decorative: t = !0, label: n, near: i = 80, projected: a, size: s = E.size, stale: c = !1, value: l, valueText: u, ...d }) => {\n\tlet f = D(l), p = O(i, \"LimitTrack near\"), g = !t, _ = g ? r(n ?? \"\", \"LimitTrack label\") : void 0, v = g ? r(u ?? \"\", \"LimitTrack valueText\") : void 0, y = g && f !== null, b = f !== null && a !== void 0 && Number.isFinite(a) && a > f ? {\n\t\tstart: A(f),\n\t\tlength: A(a) - A(f)\n\t} : null;\n\treturn /* @__PURE__ */ h(\"span\", {\n\t\t...d,\n\t\t\"aria-hidden\": g ? void 0 : \"true\",\n\t\t\"aria-label\": g && !y ? `${_}: ${v}` : _,\n\t\t\"aria-valuemax\": y ? 100 : void 0,\n\t\t\"aria-valuemin\": y ? 0 : void 0,\n\t\t\"aria-valuenow\": y && f !== null ? A(f) : void 0,\n\t\t\"aria-valuetext\": y ? v : void 0,\n\t\tclassName: o(w(\"root\"), T.size[s].className, e),\n\t\t\"data-stale\": c ? \"true\" : void 0,\n\t\t\"data-tone\": k(f, p),\n\t\trole: g ? y ? \"meter\" : \"img\" : void 0,\n\t\tchildren: [\n\t\t\tf === null ? null : /* @__PURE__ */ m(\"span\", {\n\t\t\t\tclassName: w(\"fill\"),\n\t\t\t\t\"data-part\": \"fill\",\n\t\t\t\tstyle: { inlineSize: `${A(f)}%` }\n\t\t\t}),\n\t\t\tb === null ? null : /* @__PURE__ */ m(\"span\", {\n\t\t\t\tclassName: w(\"projection\"),\n\t\t\t\t\"data-part\": \"projection\",\n\t\t\t\tstyle: {\n\t\t\t\t\tinlineSize: `${b.length}%`,\n\t\t\t\t\tinsetInlineStart: `${b.start}%`\n\t\t\t\t}\n\t\t\t}),\n\t\t\t/* @__PURE__ */ m(\"span\", {\n\t\t\t\tclassName: w(\"near\"),\n\t\t\t\t\"data-part\": \"near\",\n\t\t\t\tstyle: { insetInlineStart: `min(${A(p)}%, 100% - 1px)` }\n\t\t\t})\n\t\t]\n\t});\n}, M = {\n\troot: \"rly_Notice-module__root\",\n\tneutral: \"rly_Notice-module__neutral\",\n\tpositive: \"rly_Notice-module__positive\",\n\tcritical: \"rly_Notice-module__critical\",\n\tcaution: \"rly_Notice-module__caution\",\n\tprogress: \"rly_Notice-module__progress\",\n\ticon: \"rly_Notice-module__icon\",\n\tlead: \"rly_Notice-module__lead\",\n\tmessage: \"rly_Notice-module__message\",\n\taction: \"rly_Notice-module__action\"\n}, N = (e) => i(M, e), P = a({ tone: {\n\tneutral: {\n\t\tclassName: N(\"neutral\"),\n\t\tpurpose: \"Neutral context\",\n\t\ttokens: [\"color-text-2\", \"color-border-1\"]\n\t},\n\tpositive: {\n\t\tclassName: N(\"positive\"),\n\t\tpurpose: \"Completed outcome\",\n\t\ttokens: [\"color-success-ink\"]\n\t},\n\tcritical: {\n\t\tclassName: N(\"critical\"),\n\t\tpurpose: \"Failure that needs attention\",\n\t\ttokens: [\"color-blocked-ink\"]\n\t},\n\tcaution: {\n\t\tclassName: N(\"caution\"),\n\t\tpurpose: \"Limitation or warning\",\n\t\ttokens: [\"color-held-ink\"]\n\t},\n\tprogress: {\n\t\tclassName: N(\"progress\"),\n\t\tpurpose: \"Work in progress\",\n\t\ttokens: [\"color-deploying-ink\"]\n\t}\n} }), ie = a({ tone: \"neutral\" }), ae = {\n\tneutral: void 0,\n\tpositive: \"check\",\n\tcritical: \"alert\",\n\tcaution: \"clock\",\n\tprogress: \"loader\"\n}, oe = ({ action: e, announce: t = \"off\", children: r, className: i, icon: a, tone: s = \"neutral\", ...c }) => {\n\tlet l = a ?? ae[s], u = t === \"assertive\" ? \"alert\" : t === \"polite\" ? \"status\" : c.role;\n\treturn /* @__PURE__ */ h(\"div\", {\n\t\t...c,\n\t\t\"aria-live\": t === \"off\" ? void 0 : t,\n\t\tclassName: o(N(\"root\"), P.tone[s].className, i),\n\t\trole: u,\n\t\tchildren: [/* @__PURE__ */ h(\"div\", {\n\t\t\tclassName: N(\"lead\"),\n\t\t\tchildren: [l === void 0 ? null : /* @__PURE__ */ m(\"span\", {\n\t\t\t\t\"aria-hidden\": \"true\",\n\t\t\t\tclassName: N(\"icon\"),\n\t\t\t\tchildren: /* @__PURE__ */ m(n, {\n\t\t\t\t\tdecorative: !0,\n\t\t\t\t\tname: l,\n\t\t\t\t\tsize: \"small\"\n\t\t\t\t})\n\t\t\t}), /* @__PURE__ */ m(\"div\", {\n\t\t\t\tclassName: N(\"message\"),\n\t\t\t\tchildren: r\n\t\t\t})]\n\t\t}), e === void 0 ? null : /* @__PURE__ */ m(\"div\", {\n\t\t\tclassName: N(\"action\"),\n\t\t\tchildren: e\n\t\t})]\n\t});\n}, se = {\n\troot: \"rly_Surface-module__root\",\n\ttonePrimary: \"rly_Surface-module__tonePrimary\",\n\ttoneSecondary: \"rly_Surface-module__toneSecondary\",\n\ttoneTertiary: \"rly_Surface-module__toneTertiary\",\n\tshapeCard: \"rly_Surface-module__shapeCard\",\n\tshapeGrouped: \"rly_Surface-module__shapeGrouped\",\n\tpaddingNone: \"rly_Surface-module__paddingNone\",\n\tpaddingCompact: \"rly_Surface-module__paddingCompact\",\n\tpaddingDefault: \"rly_Surface-module__paddingDefault\",\n\tpaddingSpacious: \"rly_Surface-module__paddingSpacious\"\n}, F = (e) => i(se, e), I = a({\n\ttone: {\n\t\tprimary: {\n\t\t\tclassName: F(\"tonePrimary\"),\n\t\t\tpurpose: \"Primary bordered surface\",\n\t\t\ttokens: [\"color-surface-1\", \"color-border-1\"]\n\t\t},\n\t\tsecondary: {\n\t\t\tclassName: F(\"toneSecondary\"),\n\t\t\tpurpose: \"Quiet secondary surface\",\n\t\t\ttokens: [\"color-surface-2\"]\n\t\t},\n\t\ttertiary: {\n\t\t\tclassName: F(\"toneTertiary\"),\n\t\t\tpurpose: \"Inset tertiary surface\",\n\t\t\ttokens: [\"color-surface-3\"]\n\t\t}\n\t},\n\tform: {\n\t\tcard: {\n\t\t\tclassName: F(\"shapeCard\"),\n\t\t\tpurpose: \"Standard card geometry\",\n\t\t\ttokens: [\"radius-control\"]\n\t\t},\n\t\tgrouped: {\n\t\t\tclassName: F(\"shapeGrouped\"),\n\t\t\tpurpose: \"Grouped content geometry\",\n\t\t\ttokens: [\"radius-group\"]\n\t\t}\n\t},\n\tpadding: {\n\t\tnone: {\n\t\t\tclassName: F(\"paddingNone\"),\n\t\t\tpurpose: \"Caller-owned internal layout\",\n\t\t\ttokens: [\"space-0\"]\n\t\t},\n\t\tcompact: {\n\t\t\tclassName: F(\"paddingCompact\"),\n\t\t\tpurpose: \"Dense supporting content\",\n\t\t\ttokens: [\"space-16\"]\n\t\t},\n\t\tdefault: {\n\t\t\tclassName: F(\"paddingDefault\"),\n\t\t\tpurpose: \"Standard content\",\n\t\t\ttokens: [\"space-24\"]\n\t\t},\n\t\tspacious: {\n\t\t\tclassName: F(\"paddingSpacious\"),\n\t\t\tpurpose: \"Prominent grouped content\",\n\t\t\ttokens: [\"space-32\"]\n\t\t}\n\t}\n}), ce = a({\n\ttone: \"primary\",\n\tform: \"card\",\n\tpadding: \"default\"\n}), L = ({ as: e, children: t, className: n, form: r = \"card\", padding: i = \"default\", ref: a, tone: s = \"primary\", ...c }) => f(e ?? \"div\", {\n\t...c,\n\tclassName: o(F(\"root\"), I.tone[s].className, I.form[r].className, I.padding[i].className, n),\n\tref: a\n}, t), R = {\n\troot: \"rly_Tabs-module__root\",\n\tlist: \"rly_Tabs-module__list\",\n\ttrigger: \"rly_Tabs-module__trigger\",\n\tdefaultSize: \"rly_Tabs-module__defaultSize\",\n\tlarge: \"rly_Tabs-module__large\",\n\tpanel: \"rly_Tabs-module__panel\"\n}, z = (e) => i(R, e), B = a({ size: {\n\tdefault: {\n\t\tclassName: z(\"defaultSize\"),\n\t\tpurpose: \"Standard section navigation\",\n\t\ttokens: [\n\t\t\t\"type-label\",\n\t\t\t\"space-40\",\n\t\t\t\"space-4\"\n\t\t]\n\t},\n\tlarge: {\n\t\tclassName: z(\"large\"),\n\t\tpurpose: \"Prominent page-level navigation\",\n\t\ttokens: [\"type-body\", \"space-48\"]\n\t}\n} }), V = a({ size: \"default\" }), H = (e) => {\n\tif (e.length === 0) throw Error(\"Tabs items must contain at least one enabled tab\");\n\tlet t = /* @__PURE__ */ new Set(), n;\n\tfor (let i of e) {\n\t\tlet e = r(i.value, \"Tab value\");\n\t\tif (r(i.label, `Tab label for ${e}`), t.has(e)) throw Error(`Tabs item values must be unique: ${e}`);\n\t\tt.add(e), !i.disabled && n === void 0 && (n = i);\n\t}\n\tif (n === void 0) throw Error(\"Tabs items must contain at least one enabled tab\");\n\treturn n;\n}, U = ({ \"aria-label\": e, className: t, defaultValue: n, direction: i, items: a, onValueChange: s, ref: c, size: l = \"default\", value: u, ...p }) => {\n\tlet g = r(e, \"Tabs aria-label\"), _ = H(a), v = u ?? n ?? _.value, y = a.find((e) => e.value === v);\n\tif (y === void 0 || y.disabled) throw Error(`Tabs selected value must identify an enabled tab: ${v}`);\n\tlet b = u === void 0 ? s === void 0 ? { defaultValue: v } : {\n\t\tdefaultValue: v,\n\t\tonValueChange: s\n\t} : {\n\t\tonValueChange: s,\n\t\tvalue: u\n\t}, x = i === void 0 ? {} : { dir: i };\n\treturn /* @__PURE__ */ h(d.Root, {\n\t\t...p,\n\t\t...b,\n\t\t...x,\n\t\tactivationMode: \"automatic\",\n\t\tclassName: o(z(\"root\"), B.size[l].className, t),\n\t\torientation: \"horizontal\",\n\t\tref: c,\n\t\tchildren: [/* @__PURE__ */ m(d.List, {\n\t\t\t\"aria-label\": g,\n\t\t\tclassName: z(\"list\"),\n\t\t\tloop: !0,\n\t\t\tchildren: a.map((e) => /* @__PURE__ */ m(d.Trigger, {\n\t\t\t\tclassName: z(\"trigger\"),\n\t\t\t\t\"data-tab-value\": e.value,\n\t\t\t\tdisabled: e.disabled,\n\t\t\t\tvalue: e.value,\n\t\t\t\tchildren: e.label\n\t\t\t}, e.value))\n\t\t}), a.map((e) => /* @__PURE__ */ f(d.Content, {\n\t\t\tclassName: z(\"panel\"),\n\t\t\t...e.forceMount === void 0 ? {} : { forceMount: e.forceMount },\n\t\t\tkey: e.value,\n\t\t\tvalue: e.value\n\t\t}, e.content))]\n\t});\n}, W = {\n\troot: \"rly_Text-module__root\",\n\tverdict: \"rly_Text-module__verdict\",\n\tpageTitle: \"rly_Text-module__pageTitle\",\n\tsectionTitle: \"rly_Text-module__sectionTitle\",\n\tcardTitle: \"rly_Text-module__cardTitle\",\n\tbodyLarge: \"rly_Text-module__bodyLarge\",\n\tbody: \"rly_Text-module__body\",\n\tlabel: \"rly_Text-module__label\",\n\tmeta: \"rly_Text-module__meta\",\n\tcode: \"rly_Text-module__code\",\n\ttonePrimary: \"rly_Text-module__tonePrimary\",\n\ttoneSecondary: \"rly_Text-module__toneSecondary\",\n\ttoneTertiary: \"rly_Text-module__toneTertiary\",\n\ttoneInherit: \"rly_Text-module__toneInherit\"\n}, G = (e) => i(W, e), K = a({\n\tvariant: {\n\t\tverdict: {\n\t\t\tclassName: G(\"verdict\"),\n\t\t\tpurpose: \"One restrained verdict thesis\",\n\t\t\ttokens: [\"type-verdict\"]\n\t\t},\n\t\t\"page-title\": {\n\t\t\tclassName: G(\"pageTitle\"),\n\t\t\tpurpose: \"Primary page title\",\n\t\t\ttokens: [\"type-page-title\"]\n\t\t},\n\t\t\"section-title\": {\n\t\t\tclassName: G(\"sectionTitle\"),\n\t\t\tpurpose: \"Section heading\",\n\t\t\ttokens: [\"type-section-title\"]\n\t\t},\n\t\t\"card-title\": {\n\t\t\tclassName: G(\"cardTitle\"),\n\t\t\tpurpose: \"Card or panel heading\",\n\t\t\ttokens: [\"type-card-title\"]\n\t\t},\n\t\t\"body-large\": {\n\t\t\tclassName: G(\"bodyLarge\"),\n\t\t\tpurpose: \"Leading explanatory copy\",\n\t\t\ttokens: [\"type-body-large\"]\n\t\t},\n\t\tbody: {\n\t\t\tclassName: G(\"body\"),\n\t\t\tpurpose: \"Default interface copy\",\n\t\t\ttokens: [\"type-body\"]\n\t\t},\n\t\tlabel: {\n\t\t\tclassName: G(\"label\"),\n\t\t\tpurpose: \"Control and metadata labels\",\n\t\t\ttokens: [\"type-label\"]\n\t\t},\n\t\tmeta: {\n\t\t\tclassName: G(\"meta\"),\n\t\t\tpurpose: \"Supporting metadata\",\n\t\t\ttokens: [\"type-meta\"]\n\t\t},\n\t\tcode: {\n\t\t\tclassName: G(\"code\"),\n\t\t\tpurpose: \"Code and tabular data\",\n\t\t\ttokens: [\"type-code\"]\n\t\t}\n\t},\n\ttone: {\n\t\tprimary: {\n\t\t\tclassName: G(\"tonePrimary\"),\n\t\t\tpurpose: \"Primary readable text\",\n\t\t\ttokens: [\"color-text-1\"]\n\t\t},\n\t\tsecondary: {\n\t\t\tclassName: G(\"toneSecondary\"),\n\t\t\tpurpose: \"Supporting text\",\n\t\t\ttokens: [\"color-text-2\"]\n\t\t},\n\t\ttertiary: {\n\t\t\tclassName: G(\"toneTertiary\"),\n\t\t\tpurpose: \"Restricted tertiary text\",\n\t\t\ttokens: [\"color-text-3\"]\n\t\t},\n\t\tinherit: {\n\t\t\tclassName: G(\"toneInherit\"),\n\t\t\tpurpose: \"Inherit semantic context\",\n\t\t\ttokens: []\n\t\t}\n\t}\n}), q = a({\n\tvariant: \"body\",\n\ttone: \"primary\"\n}), le = (e) => e === \"code\" ? \"code\" : e === \"verdict\" ? \"p\" : e === \"label\" || e === \"meta\" ? \"span\" : \"p\", ue = ({ as: e, children: t, className: n, ref: r, tone: i = q.tone, variant: a = q.variant, ...s }) => f(e ?? le(a), {\n\t...s,\n\tclassName: o(G(\"root\"), K.variant[a].className, K.tone[i].className, n),\n\tref: r\n}, t), de = { intrinsic: \"rly_ThemeSelect-module__intrinsic\" }, fe = {\n\tsystem: \"System\",\n\tlight: \"Light\",\n\tdark: \"Dark\"\n}, J = t.map((e) => ({\n\tlabel: fe[e],\n\tvalue: e\n})), pe = ({ className: t, label: n = \"Appearance\", labelVisibility: r = \"visible\", onValueChange: a, size: u = l.size, value: d }) => {\n\tlet f = (t) => {\n\t\tlet n = e(t);\n\t\tn !== void 0 && a(n);\n\t};\n\treturn r === \"hidden\" ? /* @__PURE__ */ m(s, {\n\t\t\"aria-label\": n,\n\t\tclassName: o(i(de, \"intrinsic\"), t),\n\t\tonValueChange: f,\n\t\toptions: J,\n\t\tsize: u,\n\t\tvalue: d\n\t}) : /* @__PURE__ */ m(c, {\n\t\t...t === void 0 ? {} : { className: t },\n\t\tlabel: n,\n\t\tsize: u,\n\t\tchildren: (e) => /* @__PURE__ */ m(s, {\n\t\t\t...e,\n\t\t\tonValueChange: f,\n\t\t\toptions: J,\n\t\t\tsize: u,\n\t\t\tvalue: d\n\t\t})\n\t});\n}, me = {\n\troot: \"rly_ToggleGroup-module__root\",\n\titem: \"rly_ToggleGroup-module__item\",\n\tdense: \"rly_ToggleGroup-module__dense\",\n\tcompact: \"rly_ToggleGroup-module__compact\",\n\tdefaultSize: \"rly_ToggleGroup-module__defaultSize\"\n}, Y = (e) => i(me, e), X = a({ size: {\n\tdense: {\n\t\tclassName: Y(\"dense\"),\n\t\tpurpose: \"Tool-density choice beside dense controls; the default\",\n\t\ttokens: [\n\t\t\t\"control-height-dense\",\n\t\t\t\"type-meta\",\n\t\t\t\"radius-tag\"\n\t\t]\n\t},\n\tcompact: {\n\t\tclassName: Y(\"compact\"),\n\t\tpurpose: \"Filter rows beside compact controls\",\n\t\ttokens: [\n\t\t\t\"control-height-compact\",\n\t\t\t\"type-meta\",\n\t\t\t\"radius-tag\"\n\t\t]\n\t},\n\tdefault: {\n\t\tclassName: Y(\"defaultSize\"),\n\t\tpurpose: \"Standard view and filter choices\",\n\t\ttokens: [\n\t\t\t\"control-height-default\",\n\t\t\t\"type-label\",\n\t\t\t\"radius-tag\"\n\t\t]\n\t}\n} }), Z = a({ size: \"dense\" }), Q = (e) => e === \"ArrowLeft\" || e === \"ArrowUp\" ? -1 : e === \"ArrowRight\" || e === \"ArrowDown\" ? 1 : null, he = (e, t) => {\n\tlet n = /* @__PURE__ */ new Set();\n\tfor (let t of e) {\n\t\tlet e = r(t.value, \"ToggleGroup item value\");\n\t\tif (r(t.label, `ToggleGroup item label for ${e}`), n.has(e)) throw Error(`ToggleGroup item values must be unique: ${e}`);\n\t\tn.add(e);\n\t}\n\tif (!n.has(t)) throw Error(`ToggleGroup value must identify an option: ${t}`);\n}, ge = ({ \"aria-label\": e, className: t, items: n, onValueChange: i, ref: a, size: s = Z.size, value: c, ...l }) => {\n\tlet d = r(e, \"ToggleGroup aria-label\");\n\the(n, c);\n\tlet f = p(/* @__PURE__ */ new Map()), h = (e, t) => {\n\t\tlet r = Q(e.key);\n\t\tif (r === null) return;\n\t\te.preventDefault();\n\t\tlet a = n[(t + r + n.length) % n.length];\n\t\ta !== void 0 && (a.value !== c && i(a.value), f.current.get(a.value)?.focus());\n\t};\n\treturn /* @__PURE__ */ m(u.Root, {\n\t\t...l,\n\t\t\"aria-label\": d,\n\t\tclassName: o(Y(\"root\"), X.size[s].className, t),\n\t\tloop: !0,\n\t\tonValueChange: i,\n\t\torientation: \"horizontal\",\n\t\tref: a,\n\t\tvalue: c,\n\t\tchildren: n.map((e, t) => /* @__PURE__ */ m(u.Item, {\n\t\t\tclassName: Y(\"item\"),\n\t\t\tonKeyDown: (e) => h(e, t),\n\t\t\tref: (t) => {\n\t\t\t\tt === null ? f.current.delete(e.value) : f.current.set(e.value, t);\n\t\t\t},\n\t\t\tvalue: e.value,\n\t\t\tchildren: e.label\n\t\t}, e.value))\n\t});\n}, _e = {\n\troot: \"rly_TrackKey-module__root\",\n\titem: \"rly_TrackKey-module__item\",\n\tnear: \"rly_TrackKey-module__near\",\n\tprojected: \"rly_TrackKey-module__projected\",\n\tstale: \"rly_TrackKey-module__stale\",\n\tunknown: \"rly_TrackKey-module__unknown\"\n}, $ = (e) => i(_e, e), ve = [\n\t\"near\",\n\t\"projected\",\n\t\"stale\",\n\t\"unknown\"\n], ye = ({ className: e, items: t, label: n, ...i }) => {\n\tif (t.length === 0) throw Error(\"TrackKey needs at least one mark to explain\");\n\tlet a = /* @__PURE__ */ new Set();\n\tfor (let e of t) {\n\t\tif (a.has(e.mark)) throw Error(`TrackKey marks must be unique: ${e.mark}`);\n\t\ta.add(e.mark);\n\t}\n\treturn /* @__PURE__ */ m(\"ul\", {\n\t\t...i,\n\t\t\"aria-label\": r(n, \"TrackKey label\"),\n\t\tclassName: o($(\"root\"), e),\n\t\trole: \"list\",\n\t\tchildren: t.map((e) => /* @__PURE__ */ h(\"li\", {\n\t\t\tclassName: $(\"item\"),\n\t\t\tchildren: [/* @__PURE__ */ m(\"span\", {\n\t\t\t\t\"aria-hidden\": \"true\",\n\t\t\t\tclassName: $(e.mark),\n\t\t\t\t\"data-mark\": e.mark\n\t\t\t}), r(e.label, \"TrackKey item label\")]\n\t\t}, e.mark))\n\t});\n};\n//#endregion\nexport { ne as C, v as D, x as E, y as O, k as S, C as T, ie as _, ge as a, E as b, K as c, B as d, U as f, oe as g, L as h, X as i, ue as l, I as m, ye as n, pe as o, ce as p, Z as r, q as s, ve as t, V as u, P as v, te as w, T as x, j as y };\n\n//# sourceMappingURL=primitives-CgvvYKjR.js.map"],"mappings":"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"}
|