themelia-react-ui 1.0.0 → 1.0.1
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/CHANGELOG.md +53 -1
- package/README.md +39 -6
- package/dist/{accordion-BRWh3BM1.js → accordion-B-5Focs8.js} +2 -2
- package/dist/{accordion-BRWh3BM1.js.map → accordion-B-5Focs8.js.map} +1 -1
- package/dist/{affordance-geometry.generated-DXl-Zb3Z.js → affordance-geometry.generated-D8Jcfb0G.js} +10 -1
- package/dist/affordance-geometry.generated-D8Jcfb0G.js.map +1 -0
- package/dist/{ai-artifact-DkOArd3-.js → ai-artifact-B5tPpXnS.js} +5 -5
- package/dist/{ai-artifact-DkOArd3-.js.map → ai-artifact-B5tPpXnS.js.map} +1 -1
- package/dist/{app-shell-BH_bGcE2.js → app-shell-at8Kt4l_.js} +3 -3
- package/dist/{app-shell-BH_bGcE2.js.map → app-shell-at8Kt4l_.js.map} +1 -1
- package/dist/{attachment-DsLgNHXt.js → attachment-BO2R47wn.js} +2 -2
- package/dist/{attachment-DsLgNHXt.js.map → attachment-BO2R47wn.js.map} +1 -1
- package/dist/{auth-BDB1V_2q.js → auth-OFwWSAap.js} +4 -4
- package/dist/{auth-BDB1V_2q.js.map → auth-OFwWSAap.js.map} +1 -1
- package/dist/{avatar-CsnWaYmt.js → avatar-Bpzty83c.js} +73 -68
- package/dist/avatar-Bpzty83c.js.map +1 -0
- package/dist/base/accordion.js +1 -1
- package/dist/base/attachment.js +1 -1
- package/dist/base/avatar.js +1 -1
- package/dist/base/cards.js +2 -2
- package/dist/base/cascader.js +6 -6
- package/dist/base/choice-inputs.js +3 -2
- package/dist/base/code-block.js +1 -1
- package/dist/base/combobox.js +1 -1
- package/dist/base/command.js +1 -1
- package/dist/base/date-pickers.js +2 -2
- package/dist/base/display.js +1 -1
- package/dist/base/feedback.js +4 -3
- package/dist/base/forms-numeric.js +1 -1
- package/dist/base/forms.js +2 -2
- package/dist/base/inline-edit.js +236 -0
- package/dist/base/inline-edit.js.map +1 -0
- package/dist/base/media-gallery.js +1 -1
- package/dist/base/navigation.js +3 -3
- package/dist/base/popover-menu.js +1 -1
- package/dist/base/popover.js +1 -1
- package/dist/base/repeaters.js +4 -4
- package/dist/base/sheet.js +1 -1
- package/dist/base/sidebar.js +1 -1
- package/dist/base/signature-pad.js +3 -3
- package/dist/base/skeleton.js +1 -1
- package/dist/base/spinner.js +1 -1
- package/dist/base/structure.js +1 -1
- package/dist/base/text-inputs.js +2 -2
- package/dist/base/tree.js +1 -1
- package/dist/base/upload-queue.js +1 -1
- package/dist/base/upload.js +3 -3
- package/dist/base/value-inputs.js +1 -1
- package/dist/blocks/admin.js +6 -6
- package/dist/blocks/ai.js +6 -6
- package/dist/blocks/analytics/usage-card.js +3 -0
- package/dist/blocks/analytics.js +361 -360
- package/dist/blocks/analytics.js.map +1 -1
- package/dist/blocks/collaboration.js +1 -1
- package/dist/blocks/commerce/receipt.js +1 -1
- package/dist/blocks/commerce.js +15 -15
- package/dist/blocks/data-display.js +1 -1
- package/dist/blocks/onboarding.js +3 -3
- package/dist/blocks/planning.js +311 -0
- package/dist/blocks/planning.js.map +1 -0
- package/dist/blocks/timelines.js +1 -1
- package/dist/{cards-BMB0laLG.js → cards-Cum56XOF.js} +3 -3
- package/dist/{cards-BMB0laLG.js.map → cards-Cum56XOF.js.map} +1 -1
- package/dist/checkbox-BavDRjF7.js +34 -0
- package/dist/checkbox-BavDRjF7.js.map +1 -0
- package/dist/{choice-inputs-CavA-SGV.js → choice-inputs-CC7XqPQO.js} +166 -191
- package/dist/choice-inputs-CC7XqPQO.js.map +1 -0
- package/dist/{code-block-DIlqzoiD.js → code-block-xHKbAJDj.js} +2 -2
- package/dist/{code-block-DIlqzoiD.js.map → code-block-xHKbAJDj.js.map} +1 -1
- package/dist/{combobox-HDftpzxt.js → combobox-DEbdr-3u.js} +2 -2
- package/dist/{combobox-HDftpzxt.js.map → combobox-DEbdr-3u.js.map} +1 -1
- package/dist/{combobox-CHD750do.js → combobox-xv3yJbzl.js} +7 -7
- package/dist/{combobox-CHD750do.js.map → combobox-xv3yJbzl.js.map} +1 -1
- package/dist/{command-D0kWBZfd.js → command-C0xe7u9B.js} +2 -2
- package/dist/{command-D0kWBZfd.js.map → command-C0xe7u9B.js.map} +1 -1
- package/dist/{comments-CvYeglMS.js → comments-DviPLnwy.js} +8 -8
- package/dist/{comments-CvYeglMS.js.map → comments-DviPLnwy.js.map} +1 -1
- package/dist/components/base/cards/smart-card.types.d.ts +2 -0
- package/dist/components/base/inline-edit/index.d.ts +2 -0
- package/dist/components/base/inline-edit/inline-edit.d.ts +81 -0
- package/dist/components/base/inline-edit/inline-edit.recipes.d.ts +6 -0
- package/dist/components/base/structure/structure.recipes.d.ts +6 -0
- package/dist/components/blocks/analytics/index.d.ts +1 -0
- package/dist/components/blocks/analytics/usage-card/index.d.ts +3 -0
- package/dist/components/blocks/analytics/usage-card/types.d.ts +52 -0
- package/dist/components/blocks/analytics/usage-card/usage-card.d.ts +6 -0
- package/dist/components/blocks/analytics/usage-card/usage-card.data.d.ts +19 -0
- package/dist/components/blocks/analytics/usage-card/usage-card.strings.d.ts +22 -0
- package/dist/components/blocks/planning/index.d.ts +3 -0
- package/dist/components/blocks/planning/task-card.d.ts +3 -0
- package/dist/components/blocks/planning/task-card.strings.d.ts +15 -0
- package/dist/components/blocks/planning/task-card.types.d.ts +66 -0
- package/dist/{containers-CPNyNo1_.js → containers-6s-ucRQQ.js} +3 -2
- package/dist/containers-6s-ucRQQ.js.map +1 -0
- package/dist/{data-display-b3d1TfL4.js → data-display-cWIRdeaf.js} +8 -8
- package/dist/{data-display-b3d1TfL4.js.map → data-display-cWIRdeaf.js.map} +1 -1
- package/dist/{date-picker-DI6kPNof.js → date-picker-CA6ogMQB.js} +5 -5
- package/dist/{date-picker-DI6kPNof.js.map → date-picker-CA6ogMQB.js.map} +1 -1
- package/dist/{date-pickers-ByP6Cv2z.js → date-pickers-BPIKLdsD.js} +4 -4
- package/dist/{date-pickers-ByP6Cv2z.js.map → date-pickers-BPIKLdsD.js.map} +1 -1
- package/dist/{display-ByI5tkqy.js → display-CFM5myut.js} +3 -3
- package/dist/{display-ByI5tkqy.js.map → display-CFM5myut.js.map} +1 -1
- package/dist/features/activities.js +4 -4
- package/dist/features/ai-chat.js +4 -4
- package/dist/features/async-preview.js +4 -4
- package/dist/features/combobox.js +1 -1
- package/dist/features/comments.js +1 -1
- package/dist/features/data-view.js +5 -5
- package/dist/features/email-composer.js +11 -11
- package/dist/features/event-calendar.js +2 -2
- package/dist/features/event-calendar.js.map +1 -1
- package/dist/features/filters.js +1 -1
- package/dist/features/global-search.js +6 -6
- package/dist/features/map.js +3 -3
- package/dist/features/media-library.js +8 -8
- package/dist/features/mentions.js +1 -1
- package/dist/features/overlays.js +1 -1
- package/dist/features/products.js +43 -42
- package/dist/features/products.js.map +1 -1
- package/dist/features/questionnaire.js +107 -106
- package/dist/features/questionnaire.js.map +1 -1
- package/dist/features/resource-assignment.js +5 -5
- package/dist/features/resource.js +7 -7
- package/dist/features/rich-text-editor.js +1 -1
- package/dist/features/schema-form.js +11 -11
- package/dist/features/schema-form.js.map +1 -1
- package/dist/features/suggestions.js +2 -2
- package/dist/features/sync.js +2 -2
- package/dist/features/table.js +1 -1
- package/dist/features/theme-tweaker.js +11 -11
- package/dist/feedback-DWUkgEjR.js +233 -0
- package/dist/feedback-DWUkgEjR.js.map +1 -0
- package/dist/{field-affordance-recipes-CHdUtn2Z.js → field-affordance-recipes-IjzPrCTw.js} +2 -2
- package/dist/{field-affordance-recipes-CHdUtn2Z.js.map → field-affordance-recipes-IjzPrCTw.js.map} +1 -1
- package/dist/{filters-qtrcv1hf.js → filters-BhsUtsxW.js} +9 -9
- package/dist/{filters-qtrcv1hf.js.map → filters-BhsUtsxW.js.map} +1 -1
- package/dist/{form-field-C6W-y2hR.js → form-field-Bn7ZH1rA.js} +2 -2
- package/dist/{form-field-C6W-y2hR.js.map → form-field-Bn7ZH1rA.js.map} +1 -1
- package/dist/{form-sizing-39NohSqn.js → form-sizing-BWs70_a2.js} +4 -3
- package/dist/{form-sizing-39NohSqn.js.map → form-sizing-BWs70_a2.js.map} +1 -1
- package/dist/{forms-BF-HSbff.js → forms-B7pzS25o.js} +5 -5
- package/dist/{forms-BF-HSbff.js.map → forms-B7pzS25o.js.map} +1 -1
- package/dist/{forms-numeric-Y15Bg5Nr.js → forms-numeric-BUBxELBv.js} +18 -18
- package/dist/{forms-numeric-Y15Bg5Nr.js.map → forms-numeric-BUBxELBv.js.map} +1 -1
- package/dist/{header-B8ex54cY.js → header-C59QZyxV.js} +6 -6
- package/dist/{header-B8ex54cY.js.map → header-C59QZyxV.js.map} +1 -1
- package/dist/{hooks-D6UBVzf2.js → hooks-CM1Vp9Pe.js} +2 -2
- package/dist/{hooks-D6UBVzf2.js.map → hooks-CM1Vp9Pe.js.map} +1 -1
- package/dist/{input-DMorJiTI.js → input-WwYQZJzG.js} +3 -3
- package/dist/{input-DMorJiTI.js.map → input-WwYQZJzG.js.map} +1 -1
- package/dist/layout/app-shell.js +1 -1
- package/dist/layout/auth.js +1 -1
- package/dist/layout/containers.js +1 -1
- package/dist/layout/header.js +1 -1
- package/dist/layout/hooks.js +1 -1
- package/dist/layout/navigation.js +1 -1
- package/dist/layout/page.js +1 -1
- package/dist/layout/settings.js +1 -1
- package/dist/layout/sidebar.js +2 -2
- package/dist/layout/workspace.js +1 -1
- package/dist/layout.js +10 -10
- package/dist/lib/affordance-geometry.generated.d.ts +9 -0
- package/dist/{media-gallery-Ca4YmvBi.js → media-gallery-DhDRgnVZ.js} +2 -2
- package/dist/{media-gallery-Ca4YmvBi.js.map → media-gallery-DhDRgnVZ.js.map} +1 -1
- package/dist/{mentions-CRio8mTm.js → mentions-B8Ko-fhS.js} +4 -4
- package/dist/{mentions-CRio8mTm.js.map → mentions-B8Ko-fhS.js.map} +1 -1
- package/dist/{message-B5-6LeYl.js → message-COsdEvXT.js} +2 -2
- package/dist/{message-B5-6LeYl.js.map → message-COsdEvXT.js.map} +1 -1
- package/dist/{navigation-DqEITuD2.js → navigation-BUIn2Qxx.js} +2 -2
- package/dist/{navigation-DqEITuD2.js.map → navigation-BUIn2Qxx.js.map} +1 -1
- package/dist/{navigation-BTrEb5u4.js → navigation-DBEu4POU.js} +3 -3
- package/dist/{navigation-BTrEb5u4.js.map → navigation-DBEu4POU.js.map} +1 -1
- package/dist/{navigation-row-recipes-BFpvGPGE.js → navigation-row-recipes-GVh11KiT.js} +2 -2
- package/dist/{navigation-row-recipes-BFpvGPGE.js.map → navigation-row-recipes-GVh11KiT.js.map} +1 -1
- package/dist/{overlays-DBqV0J_V.js → overlays-B11wZka6.js} +4 -4
- package/dist/{overlays-DBqV0J_V.js.map → overlays-B11wZka6.js.map} +1 -1
- package/dist/{page-BMBGjJY8.js → page-BV6ioQg3.js} +5 -5
- package/dist/{page-BMBGjJY8.js.map → page-BV6ioQg3.js.map} +1 -1
- package/dist/{page-header-BH41wCyY.js → page-header-DQRa0jug.js} +2 -2
- package/dist/{page-header-BH41wCyY.js.map → page-header-DQRa0jug.js.map} +1 -1
- package/dist/{popover-TInGXsjg.js → popover-CoLDEg19.js} +2 -2
- package/dist/{popover-TInGXsjg.js.map → popover-CoLDEg19.js.map} +1 -1
- package/dist/{popover-menu-BzqXqE72.js → popover-menu-GLIQTJTx.js} +4 -4
- package/dist/{popover-menu-BzqXqE72.js.map → popover-menu-GLIQTJTx.js.map} +1 -1
- package/dist/progress-BOe8l_FZ.js +168 -0
- package/dist/progress-BOe8l_FZ.js.map +1 -0
- package/dist/{receipt-DYWTQGEc.js → receipt-BM8xsGFy.js} +3 -3
- package/dist/{receipt-DYWTQGEc.js.map → receipt-BM8xsGFy.js.map} +1 -1
- package/dist/{rich-text-editor-BZSJchAF.js → rich-text-editor-CoVrTiSv.js} +2 -2
- package/dist/{rich-text-editor-BZSJchAF.js.map → rich-text-editor-CoVrTiSv.js.map} +1 -1
- package/dist/services/actions.js +1 -1
- package/dist/{settings-D9f_wdIC.js → settings-BnCyyPOJ.js} +3 -3
- package/dist/{settings-D9f_wdIC.js.map → settings-BnCyyPOJ.js.map} +1 -1
- package/dist/{sheet-vOUloJ4O.js → sheet-B-q914Ad.js} +2 -2
- package/dist/{sheet-vOUloJ4O.js.map → sheet-B-q914Ad.js.map} +1 -1
- package/dist/{sidebar-C3UKkbC5.js → sidebar-C_2p3Tfj.js} +6 -6
- package/dist/{sidebar-C3UKkbC5.js.map → sidebar-C_2p3Tfj.js.map} +1 -1
- package/dist/{sidebar-CNBKFDRW.js → sidebar-DPR7fmqN.js} +4 -4
- package/dist/{sidebar-CNBKFDRW.js.map → sidebar-DPR7fmqN.js.map} +1 -1
- package/dist/{skeleton-BvRhK8y-.js → skeleton-CmT1ppqb.js} +2 -2
- package/dist/{skeleton-BvRhK8y-.js.map → skeleton-CmT1ppqb.js.map} +1 -1
- package/dist/{smart-card-B5FcKODh.js → smart-card-CYLn46e6.js} +119 -118
- package/dist/smart-card-CYLn46e6.js.map +1 -0
- package/dist/{spinner-JtlFJ7Nc.js → spinner-BY9HbUEh.js} +2 -2
- package/dist/{spinner-JtlFJ7Nc.js.map → spinner-BY9HbUEh.js.map} +1 -1
- package/dist/{structure-BvW4vG4H.js → structure-MvKVq-oL.js} +13 -13
- package/dist/{structure-BvW4vG4H.js.map → structure-MvKVq-oL.js.map} +1 -1
- package/dist/{structure.recipes-DjqnBpwz.js → structure.recipes-Bqhf9oIh.js} +2 -2
- package/dist/structure.recipes-Bqhf9oIh.js.map +1 -0
- package/dist/style.css +1 -1
- package/dist/{table-ghtAQ-JJ.js → table-BS39xnlq.js} +6 -6
- package/dist/{table-ghtAQ-JJ.js.map → table-BS39xnlq.js.map} +1 -1
- package/dist/{tabs-DY09eoZg.js → tabs-B5cNMWiP.js} +2 -2
- package/dist/{tabs-DY09eoZg.js.map → tabs-B5cNMWiP.js.map} +1 -1
- package/dist/{text-inputs-BhOcedTo.js → text-inputs-Dh9XGyiS.js} +4 -4
- package/dist/{text-inputs-BhOcedTo.js.map → text-inputs-Dh9XGyiS.js.map} +1 -1
- package/dist/{timelines-CnZ2S_Gr.js → timelines-B9ICkQcV.js} +2 -2
- package/dist/{timelines-CnZ2S_Gr.js.map → timelines-B9ICkQcV.js.map} +1 -1
- package/dist/{tree-COD9BGdU.js → tree-BdWSaoFT.js} +2 -2
- package/dist/{tree-COD9BGdU.js.map → tree-BdWSaoFT.js.map} +1 -1
- package/dist/{upload-DIzw1dx1.js → upload-D8Za5x_c.js} +4 -4
- package/dist/{upload-DIzw1dx1.js.map → upload-D8Za5x_c.js.map} +1 -1
- package/dist/{upload-queue-xRJ3qDmd.js → upload-queue-hIIYBLS7.js} +3 -3
- package/dist/{upload-queue-xRJ3qDmd.js.map → upload-queue-hIIYBLS7.js.map} +1 -1
- package/dist/usage-card-DnmnJ58D.js +458 -0
- package/dist/usage-card-DnmnJ58D.js.map +1 -0
- package/dist/{value-inputs-Co1fu-xv.js → value-inputs-DX2dbxjj.js} +7 -7
- package/dist/{value-inputs-Co1fu-xv.js.map → value-inputs-DX2dbxjj.js.map} +1 -1
- package/dist/{workspace-Cbqz4FzN.js → workspace-C1PZmk8L.js} +4 -4
- package/dist/{workspace-Cbqz4FzN.js.map → workspace-C1PZmk8L.js.map} +1 -1
- package/docs/consumer-skill/SKILL.md +120 -17
- package/docs/consumer-skill/examples/detail.tsx +7 -8
- package/docs/consumer-skill/examples/manifest.json +14 -0
- package/docs/consumer-skill/examples/planning-usage-edit.tsx +29 -0
- package/docs/consumer-skill/examples/scoped-directory.tsx +77 -0
- package/docs/consumer-skill/references/composition.md +103 -0
- package/docs/consumer-skill/references/design-contract.md +4 -3
- package/docs/consumer-skill/references/discovery.md +17 -0
- package/docs/consumer-skill/references/installation.md +20 -3
- package/docs/consumer-skill/references/integration.md +12 -0
- package/docs/consumer-skill/references/public-api.json +452 -229
- package/docs/consumer-skill/references/review.md +74 -0
- package/docs/consumer-skill/references/tokens.json +1 -1
- package/docs/consumer-skill/references/workflows.md +97 -1
- package/docs/consumer-skill/scripts/check-composition.mjs +31 -0
- package/docs/consumer-skill/scripts/composition-policy.mjs +155 -0
- package/docs/consumer-skill/scripts/discovery.mjs +6 -1
- package/docs/consumer-skill/scripts/surface-policy.mjs +22 -0
- package/package.json +24 -3
- package/dist/affordance-geometry.generated-DXl-Zb3Z.js.map +0 -1
- package/dist/avatar-CsnWaYmt.js.map +0 -1
- package/dist/choice-inputs-CavA-SGV.js.map +0 -1
- package/dist/containers-CPNyNo1_.js.map +0 -1
- package/dist/feedback-a9j9J-9A.js +0 -391
- package/dist/feedback-a9j9J-9A.js.map +0 -1
- package/dist/smart-card-B5FcKODh.js.map +0 -1
- package/dist/structure.recipes-DjqnBpwz.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overlays-DBqV0J_V.js","names":["Dialog","DialogPrimitive","DialogTrigger","DialogClose","DialogContent","Button","DialogHeader","DialogFooter","DialogTitle","DialogDescription","isSimpleText","Dialog","DialogPrimitive","React","DialogTriggerPrimitive","DialogClosePrimitive","DialogContentPrimitive","DialogHeaderPrimitive","DialogFooterPrimitive","DialogTitlePrimitive","DialogDescriptionPrimitive","TONE_STYLES","BaseDialog","AlertDialog","AlertDialogPrimitive","AlertDialogTrigger","AlertDialogContent","AlertDialogHeader","AlertDialogFooter","AlertDialogMedia","AlertDialogTitle","AlertDialogDescription","AlertDialogAction","Button","AlertDialogCancel","AlertDialog","AlertDialogPrimitive","React","AlertDialogTriggerPrimitive","AlertDialogContentPrimitive","AlertDialogHeaderPrimitive","AlertDialogFooterPrimitive","AlertDialogTitlePrimitive","AlertDialogDescriptionPrimitive","AlertDialogMediaPrimitive","AlertDialogActionPrimitive","AlertDialogCancelPrimitive","BaseAlertDialog","useThemePortalContainer","cn","SheetDescription","SheetTitle","SheetContent","SheetTrigger","SheetBody","SheetFooter","SheetClose","SheetHeader","Sheet","overlayAnatomyRecipes","Button","Text","motionRecipes","Slot","Button$1","Stack","Alert","AlertDescription","surfaceDividerRecipes","modalRegionRecipes","modalBackdropRecipe","React$1","Dialog$2","props","Dialog","DialogTrigger$1","renderSlot","asChild","DialogPortal","resolvedContainer","container","DialogClose$1","DialogOverlay","className","DialogContent$1","children","showCloseButton","XIcon","DialogHeader$1","DialogFooter$1","DialogTitle$1","DialogDescription$1","isSimpleText$1","value","Dialog$1","DialogTrigger","DialogClose","DialogContent","DialogHeader","textGap","DialogBody","DialogFooter","DialogTitle","DialogDescription","defaultOverlayStrings","defaultAlertDialogStrings","useOverlayActions","strings","useStrings","customStrings","isExecuting","setIsExecuting","useState","handleConfirm","useCallback","onConfirm","closeDialog","onAsyncConfirm","closeOnAsyncComplete","error","onError","handleCancel","onCancel","handleFormSubmit","formId","form","useMemo","emphasis","tone","confirmTone","loading","resolveOpenValue","nextOpen","currentOpen","normalizeGroupState","result","key","keys","state","hasGroupStateChanged","previous","next","useOverlayVisibility","controlledOpen","internalOpen","setInternalOpen","defaultOpen","isControlled","open","openRef","useRef","setOpen","resolvedOpen","changed","onOpenChange","onOpen","onClose","useOverlayVisibilityGroup","keyList","stateRef","setKeyOpen","previousState","nextState","closeOthersOnOpen","item","SIZE_CLASSES","TONE_STYLES$1","HelpCircle","AlertCircle","AlertTriangle","Info","CheckCircle","ActionDialogImpl","visibility","toneStyles","hasContent","alertMessage","hasFooter","showCancel","showConfirm","footer","closeOnBackdropClick","details","closeOnEscape","trigger","isValidElement","surfaceStyle","initialFocusRef","title","size","X","description","visuallyHideHeader","showIcon","contentClassName","finalConfirmTone","confirmStyle","confirmButtonOnClick","effectiveLoading","ActionDialog","memo","WIDTH_CLASSES","TONE_ICONS","ActionDrawerImpl","isHorizontal","direction","showFooter","modal","width","ActionDrawer","AlertDialog$2","AlertDialog","AlertDialogTrigger$1","AlertDialogPortal","AlertDialogOverlay","AlertDialogContent$1","AlertDialogHeader$1","AlertDialogFooter$1","AlertDialogMedia$1","AlertDialogTitle$1","AlertDialogDescription$1","AlertDialogAction$1","AlertDialogCancel$1","isSimpleText","AlertDialog$1","AlertDialogTrigger","AlertDialogContent","AlertDialogHeader","AlertDialogBody","AlertDialogFooter","AlertDialogTitle","AlertDialogDescription","AlertDialogMedia","AlertDialogAction","AlertDialogCancel","TONE_STYLES","ConfirmDialogImpl","mergedStrings","resolvedConfirmTone","destructive","resolvedTone","ConfirmDialog"],"sources":["../src/components/ui/dialog.tsx","../src/components/base/display/dialog.tsx","../src/components/features/overlays/overlays.strings.ts","../src/components/features/overlays/hooks/use-overlay-actions.ts","../src/components/features/overlays/hooks/use-overlay-visibility.ts","../src/components/features/overlays/dialog.tsx","../src/components/features/overlays/drawer.tsx","../src/components/ui/alert-dialog.tsx","../src/components/base/display/alert-dialog.tsx","../src/components/features/overlays/alert-dialog.tsx"],"sourcesContent":["import { overlayAnatomyRecipes } from '../../lib/overlay-anatomy-recipes';\nimport { motionRecipes } from '../../lib/motion-recipes';\nimport { modalBackdropRecipe } from './overlay.recipes';\n\"use client\"\n\nimport { useThemePortalContainer, type ThemePortalContainer } from '../../lib/theme-scope';\n\nimport { Dialog as DialogPrimitive } from \"@base-ui/react/dialog\"\nimport { XIcon } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { Button } from \"./button\"\nimport { Slot } from \"./slot\"\nimport { cn } from \"../../lib/utils\"\n\nfunction Dialog({ ...props }: DialogPrimitive.Root.Props) {\n return <DialogPrimitive.Root data-slot=\"dialog\" modal=\"trap-focus\" {...props} />\n}\n\nfunction DialogTrigger({\n asChild = false,\n ...props\n}: DialogPrimitive.Trigger.Props & { asChild?: boolean }) {\n const renderSlot = asChild ? <Slot /> : undefined\n\n return (\n <DialogPrimitive.Trigger\n data-slot=\"dialog-trigger\"\n render={renderSlot}\n {...props}\n />\n )\n}\n\nfunction DialogPortal({ container, ...props }: DialogPrimitive.Portal.Props) {\n const resolvedContainer = useThemePortalContainer(container)\n return <DialogPrimitive.Portal container={resolvedContainer} data-slot=\"dialog-portal\" {...props} />\n}\n\nfunction DialogClose({ ...props }: DialogPrimitive.Close.Props) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: DialogPrimitive.Backdrop.Props) {\n return (\n <DialogPrimitive.Backdrop\n data-slot=\"dialog-overlay\"\n className={cn(modalBackdropRecipe, motionRecipes.backdrop, \"isolate\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogContent({\n className,\n container,\n children,\n showCloseButton = true,\n ...props\n}: DialogPrimitive.Popup.Props & {\n showCloseButton?: boolean\n} & { container?: ThemePortalContainer }) {\n const resolvedContainer = useThemePortalContainer(container)\n return (\n <DialogPortal container={resolvedContainer}>\n <DialogOverlay />\n <DialogPrimitive.Popup\n data-slot=\"dialog-content\"\n className={cn(\n motionRecipes.dialog,\n \"bg-background ring-foreground/10 grid max-w-[calc(100%-2rem)] gap-6 rounded-xl p-6 text-sm ring-1 sm:max-w-md fixed top-1/2 left-1/2 z-50 w-full -translate-x-1/2 -translate-y-1/2 outline-none\",\n className\n )}\n {...props}\n >\n {children}\n {!!showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n render={\n <Button\n variant=\"ghost\"\n data-overlay-close=\"\"\n className={overlayAnatomyRecipes.close}\n size=\"icon-sm\"\n />\n }\n >\n <XIcon\n />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Popup>\n </DialogPortal>\n )\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\"gap-2 flex flex-col\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogFooter({\n className,\n showCloseButton = false,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n showCloseButton?: boolean\n}) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"gap-2 flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\",\n className\n )}\n {...props}\n >\n {children}\n {!!showCloseButton && (\n <DialogPrimitive.Close render={<Button variant=\"outline\" />}>\n Close\n </DialogPrimitive.Close>\n )}\n </div>\n )\n}\n\nfunction DialogTitle({\n className,\n asChild = false,\n ...props\n}: DialogPrimitive.Title.Props & { asChild?: boolean }) {\n const renderSlot = asChild ? <Slot /> : undefined\n\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n render={renderSlot}\n className={cn(\"leading-none font-medium\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogDescription({\n className,\n asChild = false,\n ...props\n}: DialogPrimitive.Description.Props & { asChild?: boolean }) {\n const renderSlot = asChild ? <Slot /> : undefined\n\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n render={renderSlot}\n className={cn(\"text-muted-foreground *:[a]:hover:text-foreground text-sm *:[a]:underline *:[a]:underline-offset-3\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n}\n","import { modalRegionRecipes, surfaceDividerRecipes } from '../../../lib/surface-recipes';\nimport { overlayAnatomyRecipes } from '../../../lib/overlay-anatomy-recipes';\nimport type { TextGap } from '../structure';\n/**\n * Dialog — structured base wrapper around the shadcn dialog primitive.\n *\n * Primitive state and composition props pass through unchanged. The package\n * wrapper supplies deliberate modal anatomy: separated header and footer,\n * a scroll-owning body, tokenized spacing, and stable BEM hooks.\n */\nimport * as React from 'react';\n\nimport {\n\tDialog as DialogPrimitive,\n\tDialogClose as DialogClosePrimitive,\n\tDialogContent as DialogContentPrimitive,\n\tDialogDescription as DialogDescriptionPrimitive,\n\tDialogFooter as DialogFooterPrimitive,\n\tDialogHeader as DialogHeaderPrimitive,\n\tDialogOverlay,\n\tDialogPortal,\n\tDialogTitle as DialogTitlePrimitive,\n\tDialogTrigger as DialogTriggerPrimitive,\n} from '../../ui/dialog';\nimport { Text } from '../../typography';\nimport { cn } from '../../../lib/utils';\n\nfunction isSimpleText(value: React.ReactNode): value is string | number | bigint {\n\treturn typeof value === 'string' || typeof value === 'number' || typeof value === 'bigint';\n}\n\nexport const Dialog = DialogPrimitive;\n\nexport const DialogTrigger = React.forwardRef<\n\tReact.ElementRef<typeof DialogTriggerPrimitive>,\n\tReact.ComponentPropsWithoutRef<typeof DialogTriggerPrimitive>\n>(function DialogTrigger({ className, ...props }, ref) {\n\treturn (\n\t\t<DialogTriggerPrimitive\n\t\t\tref={ref}\n\t\t\tclassName={cn('dialog-trigger--component', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nDialogTrigger.displayName = 'DialogTrigger';\n\nexport const DialogClose = React.forwardRef<\n\tReact.ElementRef<typeof DialogClosePrimitive>,\n\tReact.ComponentPropsWithoutRef<typeof DialogClosePrimitive>\n>(function DialogClose({ className, ...props }, ref) {\n\treturn (\n\t\t<DialogClosePrimitive\n\t\t\tref={ref}\n\t\t\tclassName={cn('dialog-close--component active:translate-y-0!', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nDialogClose.displayName = 'DialogClose';\n\nexport const DialogContent = React.forwardRef<\n\tReact.ElementRef<typeof DialogContentPrimitive>,\n\tReact.ComponentPropsWithoutRef<typeof DialogContentPrimitive>\n>(function DialogContent({ className, ...props }, ref) {\n\treturn (\n\t\t<DialogContentPrimitive\n\t\t\tref={ref}\n\t\t\tclassName={cn(\n\t\t\t\t// The shell stays flush so its separated regions can each own the\n\t\t\t\t// same default p-surface inset without stacking padding.\n\t\t\t\t'dialog-content--component flex max-h-[min(90vh,48rem)] flex-col gap-0 overflow-hidden rounded-radius bg-background p-0 text-foreground shadow-xl sm:max-w-lg [&_[data-slot=dialog-close]]:active:translate-y-0!', surfaceDividerRecipes.modal.shell,\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nDialogContent.displayName = 'DialogContent';\n\nexport const DialogHeader = React.forwardRef<\n\tHTMLDivElement,\n\tReact.ComponentPropsWithoutRef<typeof DialogHeaderPrimitive> & { textGap?: TextGap }\n>(function DialogHeader({ className, textGap = 'normal', ...props }, ref) {\n\treturn (\n\t\t<DialogHeaderPrimitive\n\t\t\tref={ref}\n\t\t\tclassName={cn(\n\t\t\t\t'dialog-header--component', modalRegionRecipes.header,\n\t\t\t\toverlayAnatomyRecipes.header,\n\t\t\t\ttextGap === 'dense' ? 'gap-dense' : 'gap-normal',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nDialogHeader.displayName = 'DialogHeader';\n\n/** Scroll-owning content region between the fixed dialog header and footer. */\nexport const DialogBody = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n\tfunction DialogBody({ className, ...props }, ref) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tref={ref}\n\t\t\t\tdata-slot=\"dialog-body\"\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'dialog-body--component', modalRegionRecipes.body,\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t);\n\t},\n);\n\nDialogBody.displayName = 'DialogBody';\n\nexport const DialogFooter = React.forwardRef<\n\tHTMLDivElement,\n\tReact.ComponentPropsWithoutRef<typeof DialogFooterPrimitive>\n>(function DialogFooter({ className, ...props }, ref) {\n\treturn (\n\t\t<DialogFooterPrimitive\n\t\t\tref={ref}\n\t\t\tclassName={cn(\n\t\t\t\t'dialog-footer--component', modalRegionRecipes.footer,\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nDialogFooter.displayName = 'DialogFooter';\n\nexport const DialogTitle = React.forwardRef<\n\tReact.ElementRef<typeof DialogTitlePrimitive>,\n\tReact.ComponentPropsWithoutRef<typeof DialogTitlePrimitive>\n>(function DialogTitle({ children, className, ...props }, ref) {\n\treturn (\n\t\t<DialogTitlePrimitive\n\t\t\tref={ref}\n\t\t\tclassName={cn('dialog-title--component', className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{isSimpleText(children) ? (\n\t\t\t\t<Text\n\t\t\t\t\ttag=\"span\"\n\t\t\t\t\tsize=\"base\"\n\t\t\t\t\tweight=\"semibold\"\n\t\t\t\t\tlineHeight=\"snug\"\n\t\t\t\t\tclassName=\"dialog-title--text\"\n\t\t\t\t>\n\t\t\t\t\t{children}\n\t\t\t\t</Text>\n\t\t\t) : children}\n\t\t</DialogTitlePrimitive>\n\t);\n});\n\nDialogTitle.displayName = 'DialogTitle';\n\nexport const DialogDescription = React.forwardRef<\n\tReact.ElementRef<typeof DialogDescriptionPrimitive>,\n\tReact.ComponentPropsWithoutRef<typeof DialogDescriptionPrimitive>\n>(function DialogDescription({ children, className, ...props }, ref) {\n\treturn (\n\t\t<DialogDescriptionPrimitive\n\t\t\tref={ref}\n\t\t\tclassName={cn('dialog-description--component', className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{isSimpleText(children) ? (\n\t\t\t\t<Text\n\t\t\t\t\ttag=\"span\"\n\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\tlineHeight=\"relaxed\"\n\t\t\t\t\tclassName=\"dialog-description--text\"\n\t\t\t\t>\n\t\t\t\t\t{children}\n\t\t\t\t</Text>\n\t\t\t) : children}\n\t\t</DialogDescriptionPrimitive>\n\t);\n});\n\nDialogDescription.displayName = 'DialogDescription';\n\nexport { DialogOverlay, DialogPortal };\n","/**\n * Default user-facing strings shared by ActionDialog, ActionDrawer, and\n * ConfirmDialog recipes.\n *\n * Consumers wire backend i18n at the call site:\n *\n * <ActionDialog strings={{ confirm: t('common.confirm') }} … />\n */\n\nexport interface OverlayStrings {\n\tconfirm: string;\n\tcancel: string;\n\tclose: string;\n\tloading: string;\n\tdialogLabel: string;\n\tdrawerLabel: string;\n\talertDialogLabel: string;\n}\n\nexport const defaultOverlayStrings: OverlayStrings = {\n\tconfirm: 'Confirm',\n\tcancel: 'Cancel',\n\tclose: 'Close',\n\tloading: 'Loading...',\n\tdialogLabel: 'Dialog',\n\tdrawerLabel: 'Drawer',\n\talertDialogLabel: 'Confirmation',\n};\n\nexport const defaultAlertDialogStrings: OverlayStrings = {\n\tconfirm: 'Continue',\n\tcancel: 'Cancel',\n\tclose: 'Close',\n\tloading: 'Loading...',\n\tdialogLabel: 'Dialog',\n\tdrawerLabel: 'Drawer',\n\talertDialogLabel: 'Confirmation',\n};\n","import { useCallback, useMemo, useState } from 'react';\n\nimport { useStrings, type StringsProp } from '../../../../lib/strings';\n\nimport {\n\tdefaultOverlayStrings,\n\ttype OverlayStrings,\n} from '../overlays.strings';\nimport type {\n\tOverlayButtonTone,\n\tOverlayActionProps,\n\tOverlayTone,\n} from '../overlays.types';\n\nexport interface UseOverlayActionsOptions\n\textends Pick<\n\t\tOverlayActionProps,\n\t\t| 'onConfirm'\n\t\t| 'onAsyncConfirm'\n\t\t| 'closeOnAsyncComplete'\n\t\t| 'confirmTone'\n\t\t| 'loading'\n\t\t| 'formId'\n\t> {\n\tcloseDialog: () => void;\n\tonCancel?: () => void;\n\tcustomStrings?: StringsProp<OverlayStrings>;\n\temphasis?: boolean;\n\ttone?: OverlayTone;\n\t/** Called when `onAsyncConfirm` throws. Library DEV-logs the error;\n\t * consumer wires telemetry. */\n\tonError?: (error: unknown) => void;\n}\n\nexport interface UseOverlayActionsReturn {\n\t/** Overrides this surface's own copy. */\n\tstrings: OverlayStrings;\n\tisExecuting: boolean;\n\thandleConfirm: () => Promise<void>;\n\thandleCancel: () => void;\n\tfinalConfirmTone: OverlayButtonTone;\n\tconfirmButtonOnClick: (() => Promise<void>) | undefined;\n\teffectiveLoading: boolean;\n}\n\nexport function useOverlayActions({\n\tcloseDialog,\n\tonConfirm,\n\tonAsyncConfirm,\n\tcloseOnAsyncComplete = true,\n\tconfirmTone = 'primary',\n\tloading = false,\n\tformId,\n\tonCancel,\n\tcustomStrings,\n\temphasis = false,\n\ttone = 'neutral',\n\tonError,\n}: UseOverlayActionsOptions): UseOverlayActionsReturn {\n\tconst strings = useStrings(defaultOverlayStrings, customStrings);\n\n\tconst [isExecuting, setIsExecuting] = useState(false);\n\n\tconst handleConfirm = useCallback(async () => {\n\t\tif (onConfirm) {\n\t\t\tonConfirm();\n\t\t\tcloseDialog();\n\t\t\treturn;\n\t\t}\n\n\t\tif (onAsyncConfirm) {\n\t\t\tsetIsExecuting(true);\n\t\t\ttry {\n\t\t\t\tawait onAsyncConfirm();\n\t\t\t\tif (closeOnAsyncComplete) {\n\t\t\t\t\tcloseDialog();\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tif (import.meta.env?.DEV) {\n\t\t\t\t\tconsole.error('Overlay async confirm failed:', error);\n\t\t\t\t}\n\t\t\t\tonError?.(error);\n\t\t\t} finally {\n\t\t\t\tsetIsExecuting(false);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tcloseDialog();\n\t}, [onConfirm, onAsyncConfirm, closeOnAsyncComplete, closeDialog, onError]);\n\n\tconst handleCancel = useCallback(() => {\n\t\tonCancel?.();\n\t\tcloseDialog();\n\t}, [onCancel, closeDialog]);\n\n\tconst handleFormSubmit = useCallback(async () => {\n\t\tif (!formId) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst form = document.getElementById(formId);\n\n\t\tif (!(form instanceof HTMLFormElement)) {\n\t\t\treturn;\n\t\t}\n\n\t\tform.requestSubmit();\n\t}, [formId]);\n\n\tconst finalConfirmTone = useMemo<OverlayButtonTone>(() => {\n\t\tif (!emphasis) return confirmTone ?? 'primary';\n\t\tif (tone === 'destructive') return 'destructive';\n\t\tif (tone === 'warning') return 'warning';\n\t\tif (tone === 'success') return 'success';\n\t\treturn confirmTone ?? 'primary';\n\t}, [emphasis, tone, confirmTone]);\n\n\tconst confirmButtonOnClick = formId ? handleFormSubmit : handleConfirm;\n\n\treturn {\n\t\tstrings,\n\t\tisExecuting,\n\t\thandleConfirm,\n\t\thandleCancel,\n\t\tfinalConfirmTone,\n\t\tconfirmButtonOnClick,\n\t\teffectiveLoading: isExecuting || loading,\n\t};\n}\n","import {\n\tuseCallback,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n\ttype Dispatch,\n\ttype SetStateAction,\n} from 'react';\n\nexport type OverlayOpenSetter = Dispatch<SetStateAction<boolean>>;\n\nexport interface OverlayVisibilityProps {\n\topen: boolean;\n\t/** Fired when a change is opened. */\n\tonOpenChange: (open: boolean) => void;\n}\n\nexport interface UseOverlayVisibilityOptions {\n\tdefaultOpen?: boolean;\n\topen?: boolean;\n\t/** Fired when a change is opened. */\n\tonOpenChange?: (open: boolean) => void;\n\t/** Fired when an entry is opened. */\n\tonOpen?: () => void;\n\tonClose?: () => void;\n}\n\nexport interface UseOverlayVisibilityReturn {\n\topen: boolean;\n\tisOpen: boolean;\n\tsetOpen: OverlayOpenSetter;\n\tshow: () => void;\n\thide: () => void;\n\ttoggle: () => void;\n\toverlayProps: OverlayVisibilityProps;\n}\n\nexport type OverlayVisibilityGroupState<TKey extends string = string> = Record<TKey, boolean>;\n\nexport interface UseOverlayVisibilityGroupOptions<TKey extends string = string> {\n\tdefaultOpen?: Partial<Record<TKey, boolean>>;\n\topen?: Partial<Record<TKey, boolean>>;\n\t/** Fired when a change is opened. */\n\tonOpenChange?: (\n\t\tkey: TKey,\n\t\topen: boolean,\n\t\tstate: OverlayVisibilityGroupState<TKey>,\n\t) => void;\n\tcloseOthersOnOpen?: boolean;\n}\n\nexport type UseOverlayVisibilityGroupReturn<TKey extends string = string> = Record<\n\tTKey,\n\tUseOverlayVisibilityReturn\n>;\n\nfunction resolveOpenValue(\n\tnextOpen: SetStateAction<boolean>,\n\tcurrentOpen: boolean,\n): boolean {\n\tif (typeof nextOpen === 'function') {\n\t\treturn (nextOpen as (open: boolean) => boolean)(currentOpen);\n\t}\n\treturn nextOpen;\n}\n\nfunction normalizeGroupState<TKey extends string>(\n\tkeys: readonly TKey[],\n\tstate?: Partial<Record<TKey, boolean>>,\n): OverlayVisibilityGroupState<TKey> {\n\tconst result = {} as OverlayVisibilityGroupState<TKey>;\n\tfor (const key of keys) {\n\t\tresult[key] = Boolean(state?.[key]);\n\t}\n\treturn result;\n}\n\nfunction hasGroupStateChanged<TKey extends string>(\n\tprevious: OverlayVisibilityGroupState<TKey>,\n\tnext: OverlayVisibilityGroupState<TKey>,\n\tkeys: readonly TKey[],\n): boolean {\n\treturn keys.some((key) => previous[key] !== next[key]);\n}\n\nexport function useOverlayVisibility({\n\tdefaultOpen = false,\n\topen: controlledOpen,\n\tonOpenChange,\n\tonOpen,\n\tonClose,\n}: UseOverlayVisibilityOptions = {}): UseOverlayVisibilityReturn {\n\tconst [internalOpen, setInternalOpen] = useState(defaultOpen);\n\tconst isControlled = controlledOpen !== undefined;\n\tconst open = isControlled ? controlledOpen : internalOpen;\n\tconst openRef = useRef(open);\n\topenRef.current = open;\n\n\tconst setOpen = useCallback<OverlayOpenSetter>(\n\t\t(nextOpen) => {\n\t\t\tconst resolvedOpen = resolveOpenValue(nextOpen, openRef.current);\n\t\t\tconst changed = openRef.current !== resolvedOpen;\n\n\t\t\tif (!isControlled) {\n\t\t\t\tsetInternalOpen(resolvedOpen);\n\t\t\t}\n\n\t\t\tif (!changed) return;\n\n\t\t\topenRef.current = resolvedOpen;\n\t\t\tonOpenChange?.(resolvedOpen);\n\t\t\tif (resolvedOpen) {\n\t\t\t\tonOpen?.();\n\t\t\t} else {\n\t\t\t\tonClose?.();\n\t\t\t}\n\t\t},\n\t\t[isControlled, onClose, onOpen, onOpenChange],\n\t);\n\n\tconst show = useCallback(() => {\n\t\tsetOpen(true);\n\t}, [setOpen]);\n\n\tconst hide = useCallback(() => {\n\t\tsetOpen(false);\n\t}, [setOpen]);\n\n\tconst toggle = useCallback(() => {\n\t\tsetOpen((currentOpen) => !currentOpen);\n\t}, [setOpen]);\n\n\tconst overlayProps = useMemo(\n\t\t() => ({\n\t\t\topen,\n\t\t\tonOpenChange: setOpen,\n\t\t}),\n\t\t[open, setOpen],\n\t);\n\n\treturn {\n\t\topen,\n\t\tisOpen: open,\n\t\tsetOpen,\n\t\tshow,\n\t\thide,\n\t\ttoggle,\n\t\toverlayProps,\n\t};\n}\n\nexport function useOverlayVisibilityGroup<const TKeys extends readonly string[]>(\n\tkeys: TKeys,\n\t{\n\t\tdefaultOpen,\n\t\topen: controlledOpen,\n\t\tonOpenChange,\n\t\tcloseOthersOnOpen = false,\n\t}: UseOverlayVisibilityGroupOptions<TKeys[number] & string> = {},\n): UseOverlayVisibilityGroupReturn<TKeys[number] & string> {\n\ttype TKey = TKeys[number] & string;\n\n\tconst keyList = keys as readonly TKey[];\n\tconst [internalOpen, setInternalOpen] = useState<OverlayVisibilityGroupState<TKey>>(\n\t\t() => normalizeGroupState(keyList, defaultOpen),\n\t);\n\tconst isControlled = controlledOpen !== undefined;\n\tconst state = normalizeGroupState(keyList, isControlled ? controlledOpen : internalOpen);\n\tconst stateRef = useRef(state);\n\tstateRef.current = state;\n\n\tconst setKeyOpen = useCallback(\n\t\t(key: TKey, nextOpen: SetStateAction<boolean>) => {\n\t\t\tconst previousState = stateRef.current;\n\t\t\tconst resolvedOpen = resolveOpenValue(nextOpen, previousState[key]);\n\t\t\tconst nextState = {\n\t\t\t\t...previousState,\n\t\t\t\t[key]: resolvedOpen,\n\t\t\t} as OverlayVisibilityGroupState<TKey>;\n\n\t\t\tif (closeOthersOnOpen && resolvedOpen) {\n\t\t\t\tfor (const item of keyList) {\n\t\t\t\t\tif (item !== key) {\n\t\t\t\t\t\tnextState[item] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst changed = hasGroupStateChanged(previousState, nextState, keyList);\n\n\t\t\tif (!isControlled) {\n\t\t\t\tsetInternalOpen(nextState);\n\t\t\t}\n\n\t\t\tif (!changed) return;\n\n\t\t\tstateRef.current = nextState;\n\t\t\tonOpenChange?.(key, resolvedOpen, nextState);\n\t\t},\n\t\t[closeOthersOnOpen, isControlled, keyList, onOpenChange],\n\t);\n\n\treturn useMemo(() => {\n\t\tconst result = {} as UseOverlayVisibilityGroupReturn<TKey>;\n\n\t\tfor (const key of keyList) {\n\t\t\tconst open = state[key];\n\t\t\tconst setOpen: OverlayOpenSetter = (nextOpen) => {\n\t\t\t\tsetKeyOpen(key, nextOpen);\n\t\t\t};\n\n\t\t\tresult[key] = {\n\t\t\t\topen,\n\t\t\t\tisOpen: open,\n\t\t\t\tsetOpen,\n\t\t\t\tshow: () => setKeyOpen(key, true),\n\t\t\t\thide: () => setKeyOpen(key, false),\n\t\t\t\ttoggle: () => setKeyOpen(key, (currentOpen) => !currentOpen),\n\t\t\t\toverlayProps: {\n\t\t\t\t\topen,\n\t\t\t\t\tonOpenChange: setOpen,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\treturn result;\n\t}, [keyList, setKeyOpen, state]);\n}\n","import { overlayAnatomyRecipes } from '../../../lib/overlay-anatomy-recipes';\nimport {\n\tAlertCircle,\n\tAlertTriangle,\n\tCheckCircle,\n\tHelpCircle,\n\tInfo,\n\tX,\n} from 'lucide-react';\nimport { isValidElement, memo, type ReactNode } from 'react';\n\nimport { Button } from '../../base/buttons';\nimport { Alert, AlertDescription } from '../../base/feedback';\nimport {\n\tDialog as BaseDialog,\n\tDialogBody,\n\tDialogClose,\n\tDialogContent,\n\tDialogDescription,\n\tDialogFooter,\n\tDialogHeader,\n\tDialogTitle,\n\tDialogTrigger,\n} from '../../base/display/dialog';\nimport { Stack } from '../../base/structure';\nimport { Text } from '../../typography';\nimport { cn } from '../../../lib/utils';\n\nimport { useOverlayActions, useOverlayVisibility } from './hooks';\nimport type { ActionDialogProps, OverlaySize, OverlayTone } from './overlays.types';\n\nconst SIZE_CLASSES: Record<OverlaySize, string> = {\n\txs: 'sm:max-w-xs',\n\tsm: 'sm:max-w-sm',\n\tmd: 'sm:max-w-md',\n\tlg: 'sm:max-w-lg',\n\txl: 'sm:max-w-xl',\n\t'2xl': 'sm:max-w-2xl',\n\t'3xl': 'sm:max-w-3xl',\n\t'4xl': 'sm:max-w-4xl',\n\t'5xl': 'sm:max-w-5xl',\n\tfull: 'sm:max-w-[calc(100vw-2rem)]',\n};\n\nconst TONE_STYLES: Record<OverlayTone, { icon: ReactNode; classes: string }> = {\n\tneutral: {\n\t\ticon: <HelpCircle className=\"size-icon text-muted-foreground\" />,\n\t\tclasses: '',\n\t},\n\tdestructive: {\n\t\ticon: <AlertCircle className=\"size-icon text-destructive\" />,\n\t\tclasses: 'border-destructive/50',\n\t},\n\twarning: {\n\t\ticon: <AlertTriangle className=\"size-icon text-warning\" />,\n\t\tclasses: 'border-warning/50',\n\t},\n\tinfo: {\n\t\ticon: <Info className=\"size-icon text-info\" />,\n\t\tclasses: 'border-info/50',\n\t},\n\tsuccess: {\n\t\ticon: <CheckCircle className=\"size-icon text-success\" />,\n\t\tclasses: 'border-success/50',\n\t},\n};\n\nfunction ActionDialogImpl({\n\topen,\n\tonOpenChange,\n\tonClose,\n\tchildren,\n\ttitle,\n\tdescription,\n\tvisuallyHideHeader = false,\n\tclassName,\n\tcontentClassName,\n\tshowCloseButton = true,\n\tsurfaceStyle,\n\tinitialFocusRef,\n\tcloseOnEscape = true,\n\tcloseOnBackdropClick = true,\n\tstrings: customStrings,\n\tshowCancel = true,\n\tshowConfirm = true,\n\tonCancel,\n\tonConfirm,\n\tonAsyncConfirm,\n\tonError,\n\tcloseOnAsyncComplete = true,\n\tconfirmTone = 'primary',\n\tconfirmStyle = 'solid',\n\tloading = false,\n\tformId,\n\tfooter,\n\temphasis = false,\n\ttone = 'neutral',\n\tshowIcon = false,\n\talertMessage,\n\tsize = 'lg',\n\ttrigger,\n}: ActionDialogProps) {\n\tconst visibility = useOverlayVisibility({ open, onOpenChange, onClose });\n\tconst {\n\t\tstrings,\n\t\tfinalConfirmTone,\n\t\tconfirmButtonOnClick,\n\t\teffectiveLoading,\n\t\thandleCancel,\n\t} = useOverlayActions({\n\t\tcloseDialog: visibility.hide,\n\t\tonConfirm,\n\t\tonAsyncConfirm,\n\t\tonError,\n\t\tcloseOnAsyncComplete,\n\t\tconfirmTone,\n\t\tloading,\n\t\tformId,\n\t\tonCancel,\n\t\tcustomStrings,\n\t\temphasis,\n\t\ttone,\n\t});\n\n\tconst toneStyles = TONE_STYLES[tone];\n\tconst hasContent = Boolean(children || alertMessage);\n\tconst hasFooter = showCancel || showConfirm || footer;\n\n\treturn (\n\t\t<BaseDialog\n\t\t\topen={visibility.open}\n\t\t\tmodal\n\t\t\tdisablePointerDismissal={!closeOnBackdropClick}\n\t\t\tonOpenChange={(nextOpen, details) => {\n\t\t\t\tif (!nextOpen && details.reason === 'escape-key' && !closeOnEscape) {\n\t\t\t\t\tdetails.cancel();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tvisibility.setOpen(nextOpen);\n\t\t\t}}\n\t\t>\n\t\t\t{!!trigger && (isValidElement(trigger) ? (\n\t\t\t\t<DialogTrigger render={trigger} />\n\t\t\t) : (\n\t\t\t\t<DialogTrigger className=\"overlay-trigger--fallback cursor-pointer\">\n\t\t\t\t\t<Text tag=\"span\" size=\"inherit\" className=\"text-inherit\">\n\t\t\t\t\t\t{trigger}\n\t\t\t\t\t</Text>\n\t\t\t\t</DialogTrigger>\n\t\t\t))}\n\n\t\t\t<DialogContent\n\t\t\t\tshowCloseButton={false}\n\t\t\t\tstyle={surfaceStyle}\n\t\t\t\tinitialFocus={initialFocusRef}\n\t\t\t\taria-label={title ? undefined : strings.dialogLabel}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'action-dialog--component dialog--component',\n\t\t\t\t\tSIZE_CLASSES[size],\n\t\t\t\t\temphasis && toneStyles.classes,\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{!!showCloseButton && (\n\t\t\t\t<DialogClose\n\t\t\t\t\trender={(\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\ttone=\"secondary\"\n\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\tsize=\"sm\" iconOnly\n\t\t\t\t\t\t\tdata-overlay-close=\"\"\n className={cn(overlayAnatomyRecipes.close, 'z-10 p-0 text-muted-foreground hover:bg-muted hover:text-foreground')}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<X className=\"size-icon\" />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t)}\n\t\t\t\t\taria-label={strings.close}\n\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t{!!(title || description) && (\n\t\t\t\t\t<DialogHeader className={cn('dialog--header', visuallyHideHeader && 'sr-only')}>\n\t\t\t\t\t\t<Stack direction=\"horizontal\" gap=\"sm\" align=\"start\" wrap={false}>\n\t\t\t\t\t\t\t{!!showIcon && <span className=\"shrink-0 pt-space-2xs\">{toneStyles.icon}</span>}\n\t\t\t\t\t\t\t<Stack gap=\"normal\" className=\"flex-1\">\n\t\t\t\t\t\t\t\t{!!title && <DialogTitle>{title}</DialogTitle>}\n\t\t\t\t\t\t\t\t{!!description && <DialogDescription>{description}</DialogDescription>}\n\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t</DialogHeader>\n\t\t\t\t)}\n\n\t\t\t\t{!!hasContent && (\n\t\t\t\t\t<DialogBody className={cn('dialog--body', contentClassName)}>\n\t\t\t\t\t\t{!!alertMessage && (\n\t\t\t\t\t\t\t<Alert tone={tone} className=\"mb-space-md p-surface-xs\">\n\t\t\t\t\t\t\t\t<AlertDescription>{alertMessage}</AlertDescription>\n\t\t\t\t\t\t\t</Alert>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</DialogBody>\n\t\t\t\t)}\n\n\t\t\t\t{!!hasFooter && (\n\t\t\t\t\t<DialogFooter className=\"dialog--footer\">\n\t\t\t\t\t\t{footer ?? (\n\t\t\t\t\t\t\t<Stack\n\t\t\t\t\t\t\t\tdirection={{ base: 'vertical', sm: 'horizontal' }}\n\t\t\t\t\t\t\t\tgap=\"sm\"\n\t\t\t\t\t\t\t\talign={{ base: 'stretch', sm: 'center' }}\n\t\t\t\t\t\t\t\tjustify=\"end\"\n\t\t\t\t\t\t\t\tclassName=\"w-full\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{!!showCancel && (\n\t\t\t\t\t\t\t\t\t<Button type=\"button\" tone=\"secondary\" buttonStyle=\"outline\" onClick={handleCancel}>\n\t\t\t\t\t\t\t\t\t\t{strings.cancel}\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t{!!showConfirm && (\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\ttone={finalConfirmTone}\n\t\t\t\t\t\t\t\t\t\tbuttonStyle={confirmStyle}\n\t\t\t\t\t\t\t\t\t\tonClick={confirmButtonOnClick}\n\t\t\t\t\t\t\t\t\t\tloading={effectiveLoading}\n\t\t\t\t\t\t\t\t\t\tstrings={{ loading: strings.loading }}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{strings.confirm}\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</DialogFooter>\n\t\t\t\t)}\n\t\t\t</DialogContent>\n\t\t</BaseDialog>\n\t);\n}\n\nexport const ActionDialog = memo(ActionDialogImpl);\nActionDialog.displayName = 'ActionDialog';\n","import { overlayAnatomyRecipes } from '../../../lib/overlay-anatomy-recipes';\nimport {\n\tAlertCircle,\n\tAlertTriangle,\n\tCheckCircle,\n\tHelpCircle,\n\tInfo,\n\tX,\n} from 'lucide-react';\nimport { isValidElement, memo, type ReactNode } from 'react';\n\nimport { Button } from '../../base/buttons';\nimport { Alert, AlertDescription } from '../../base/feedback';\nimport {\n\tSheet,\n\tSheetBody,\n\tSheetClose,\n\tSheetContent,\n\tSheetDescription,\n\tSheetFooter,\n\tSheetHeader,\n\tSheetTitle,\n\tSheetTrigger,\n} from '../../base/sheet';\nimport { Stack } from '../../base/structure';\nimport { Text } from '../../typography';\nimport { cn } from '../../../lib/utils';\n\nimport { useOverlayActions, useOverlayVisibility } from './hooks';\nimport type { ActionDrawerProps, OverlaySize, OverlayTone } from './overlays.types';\n\nconst WIDTH_CLASSES: Record<OverlaySize, string> = {\n\txs: 'data-[side=left]:sm:max-w-xs data-[side=right]:sm:max-w-xs',\n\tsm: 'data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm',\n\tmd: 'data-[side=left]:sm:max-w-md data-[side=right]:sm:max-w-md',\n\tlg: 'data-[side=left]:sm:max-w-lg data-[side=right]:sm:max-w-lg',\n\txl: 'data-[side=left]:sm:max-w-xl data-[side=right]:sm:max-w-xl',\n\t'2xl': 'data-[side=left]:sm:max-w-2xl data-[side=right]:sm:max-w-2xl',\n\t'3xl': 'data-[side=left]:sm:max-w-3xl data-[side=right]:sm:max-w-3xl',\n\t'4xl': 'data-[side=left]:sm:max-w-4xl data-[side=right]:sm:max-w-4xl',\n\t'5xl': 'data-[side=left]:sm:max-w-5xl data-[side=right]:sm:max-w-5xl',\n\tfull: 'data-[side=left]:sm:max-w-[calc(100vw-2rem)] data-[side=right]:sm:max-w-[calc(100vw-2rem)]',\n};\n\nconst TONE_ICONS: Record<OverlayTone, ReactNode> = {\n\tneutral: <HelpCircle className=\"size-icon text-muted-foreground\" />,\n\tdestructive: <AlertCircle className=\"size-icon text-destructive\" />,\n\twarning: <AlertTriangle className=\"size-icon text-warning\" />,\n\tinfo: <Info className=\"size-icon text-info\" />,\n\tsuccess: <CheckCircle className=\"size-icon text-success\" />,\n};\n\nfunction ActionDrawerImpl({\n\topen,\n\tonOpenChange,\n\tonClose,\n\tchildren,\n\ttitle,\n\tdescription,\n\tvisuallyHideHeader = false,\n\tshowCloseButton = true,\n\tclassName,\n\tcontentClassName,\n\tinitialFocusRef,\n\tcloseOnEscape = true,\n\tcloseOnBackdropClick = true,\n\tstrings: customStrings,\n\tshowCancel = true,\n\tshowConfirm = true,\n\tonCancel,\n\tonConfirm,\n\tonAsyncConfirm,\n\tonError,\n\tcloseOnAsyncComplete = true,\n\tconfirmTone = 'primary',\n\tconfirmStyle = 'solid',\n\tloading = false,\n\tformId,\n\tfooter,\n\temphasis = false,\n\ttone = 'neutral',\n\tshowIcon = false,\n\talertMessage,\n\tdirection = 'right',\n\twidth = 'lg',\n\tshowFooter = true,\n\tmodal = true,\n\ttrigger,\n}: ActionDrawerProps) {\n\tconst visibility = useOverlayVisibility({ open, onOpenChange, onClose });\n\tconst {\n\t\tstrings,\n\t\tfinalConfirmTone,\n\t\tconfirmButtonOnClick,\n\t\teffectiveLoading,\n\t\thandleCancel,\n\t} = useOverlayActions({\n\t\tcloseDialog: visibility.hide,\n\t\tonConfirm,\n\t\tonAsyncConfirm,\n\t\tonError,\n\t\tcloseOnAsyncComplete,\n\t\tconfirmTone,\n\t\tloading,\n\t\tformId,\n\t\tonCancel,\n\t\tcustomStrings,\n\t\temphasis,\n\t\ttone,\n\t});\n\n\tconst isHorizontal = direction === 'left' || direction === 'right';\n\tconst hasContent = Boolean(children || alertMessage);\n\tconst hasFooter = showFooter && (showCancel || showConfirm || footer);\n\n\treturn (\n\t\t<Sheet\n\t\t\topen={visibility.open}\n\t\t\tmodal={modal}\n\t\t\tdisablePointerDismissal={!closeOnBackdropClick}\n\t\t\tonOpenChange={(nextOpen, details) => {\n\t\t\t\tif (!nextOpen && details.reason === 'escape-key' && !closeOnEscape) {\n\t\t\t\t\tdetails.cancel();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tvisibility.setOpen(nextOpen);\n\t\t\t}}\n\t\t>\n\t\t\t{!!trigger && (isValidElement(trigger) ? (\n\t\t\t\t<SheetTrigger render={trigger} />\n\t\t\t) : (\n\t\t\t\t<SheetTrigger className=\"overlay-trigger--fallback cursor-pointer\">\n\t\t\t\t\t<Text tag=\"span\" size=\"inherit\" className=\"text-inherit\">{trigger}</Text>\n\t\t\t\t</SheetTrigger>\n\t\t\t))}\n\n\t\t\t<SheetContent\n\t\t\t\tside={direction}\n\t\t\t\tshowCloseButton={false}\n\t\t\t\tinitialFocus={initialFocusRef}\n\t\t\t\taria-label={title ? undefined : strings.drawerLabel}\n\t\t\t\t// The vendored SheetContent renders its backdrop unconditionally,\n\t\t\t\t// so a non-modal drawer would still sit behind a full-viewport\n\t\t\t\t// scrim. This marks the panel so the token layer can drop it.\n\t\t\t\tdata-modal={modal === false ? 'false' : undefined}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'action-drawer--component drawer--component',\n\t\t\t\t\tisHorizontal && 'data-[side=left]:w-full data-[side=right]:w-full',\n\t\t\t\t\tisHorizontal && WIDTH_CLASSES[width],\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{showCloseButton && <SheetClose\n\t\t\t\t\trender={(\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\ttone=\"secondary\"\n\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\tsize=\"sm\" iconOnly\n\t\t\t\t\t\t\tdata-overlay-close=\"\"\n className={cn(overlayAnatomyRecipes.close, 'z-10 p-0 text-muted-foreground hover:bg-muted hover:text-foreground')}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<X className=\"size-icon\" />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t)}\n\t\t\t\t\taria-label={strings.close}\n\t\t\t\t/>}\n\n\t\t\t\t{!!(title || description) && (\n\t\t\t\t\t<SheetHeader className={cn('drawer--header', visuallyHideHeader && 'sr-only')}>\n\t\t\t\t\t\t<Stack direction=\"horizontal\" gap=\"sm\" align=\"start\" wrap={false}>\n\t\t\t\t\t\t\t{!!showIcon && <span className=\"shrink-0 pt-space-2xs\">{TONE_ICONS[tone]}</span>}\n\t\t\t\t\t\t\t<Stack gap=\"normal\" className=\"flex-1\">\n\t\t\t\t\t\t\t\t{!!title && <SheetTitle>{title}</SheetTitle>}\n\t\t\t\t\t\t\t\t{!!description && <SheetDescription>{description}</SheetDescription>}\n\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t</SheetHeader>\n\t\t\t\t)}\n\n\t\t\t\t{!!hasContent && (\n\t\t\t\t\t<SheetBody className={cn('drawer--body', contentClassName)}>\n\t\t\t\t\t\t{!!alertMessage && (\n\t\t\t\t\t\t\t<Alert tone={tone} className=\"mb-space-md p-surface-xs\">\n\t\t\t\t\t\t\t\t<AlertDescription>{alertMessage}</AlertDescription>\n\t\t\t\t\t\t\t</Alert>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</SheetBody>\n\t\t\t\t)}\n\n\t\t\t\t{!!hasFooter && (\n\t\t\t\t\t<SheetFooter className=\"drawer--footer\">\n\t\t\t\t\t\t{footer ?? (\n\t\t\t\t\t\t\t<Stack\n\t\t\t\t\t\t\t\tdirection={{ base: 'vertical', sm: 'horizontal' }}\n\t\t\t\t\t\t\t\tgap=\"sm\"\n\t\t\t\t\t\t\t\talign={{ base: 'stretch', sm: 'center' }}\n\t\t\t\t\t\t\t\tjustify=\"end\"\n\t\t\t\t\t\t\t\tclassName=\"w-full\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{!!showCancel && (\n\t\t\t\t\t\t\t\t\t<Button type=\"button\" tone=\"secondary\" buttonStyle=\"outline\" onClick={handleCancel}>\n\t\t\t\t\t\t\t\t\t\t{strings.cancel}\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t{!!showConfirm && (\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\ttone={finalConfirmTone}\n\t\t\t\t\t\t\t\t\t\tbuttonStyle={confirmStyle}\n\t\t\t\t\t\t\t\t\t\tonClick={confirmButtonOnClick}\n\t\t\t\t\t\t\t\t\t\tloading={effectiveLoading}\n\t\t\t\t\t\t\t\t\t\tstrings={{ loading: strings.loading }}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{strings.confirm}\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</SheetFooter>\n\t\t\t\t)}\n\t\t\t</SheetContent>\n\t\t</Sheet>\n\t);\n}\n\nexport const ActionDrawer = memo(ActionDrawerImpl);\nActionDrawer.displayName = 'ActionDrawer';\n","import { motionRecipes } from '../../lib/motion-recipes';\nimport { modalBackdropRecipe } from './overlay.recipes';\n\"use client\"\n\nimport { useThemePortalContainer, type ThemePortalContainer } from '../../lib/theme-scope';\n\nimport * as React from \"react\"\nimport { AlertDialog as AlertDialogPrimitive } from \"@base-ui/react/alert-dialog\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Button } from \"./button\"\n\nfunction AlertDialog({ ...props }: AlertDialogPrimitive.Root.Props) {\n return <AlertDialogPrimitive.Root data-slot=\"alert-dialog\" {...props} />\n}\n\nfunction AlertDialogTrigger({ ...props }: AlertDialogPrimitive.Trigger.Props) {\n return (\n <AlertDialogPrimitive.Trigger data-slot=\"alert-dialog-trigger\" {...props} />\n )\n}\n\nfunction AlertDialogPortal({ container, ...props }: AlertDialogPrimitive.Portal.Props) {\n const resolvedContainer = useThemePortalContainer(container)\n return (\n <AlertDialogPrimitive.Portal container={resolvedContainer} data-slot=\"alert-dialog-portal\" {...props} />\n )\n}\n\nfunction AlertDialogOverlay({\n className,\n ...props\n}: AlertDialogPrimitive.Backdrop.Props) {\n return (\n <AlertDialogPrimitive.Backdrop\n data-slot=\"alert-dialog-overlay\"\n className={cn(modalBackdropRecipe, motionRecipes.backdrop,\n \"isolate\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogContent({\n className,\n container,\n size = \"default\",\n ...props\n}: AlertDialogPrimitive.Popup.Props & {\n size?: \"default\" | \"sm\"\n} & { container?: ThemePortalContainer }) {\n const resolvedContainer = useThemePortalContainer(container)\n return (\n <AlertDialogPortal container={resolvedContainer}>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Popup\n data-slot=\"alert-dialog-content\"\n data-size={size}\n className={cn(\n motionRecipes.dialog,\n \"group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-6 rounded-4xl bg-popover p-6 text-popover-foreground shadow-xl ring-1 ring-foreground/5 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-md dark:ring-foreground/10\",\n className\n )}\n {...props}\n />\n </AlertDialogPortal>\n )\n}\n\nfunction AlertDialogHeader({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-header\"\n className={cn(\n \"grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-6 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogFooter({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-2 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogMedia({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-media\"\n className={cn(\n \"mb-space-md inline-flex size-16 items-center justify-center rounded-full bg-muted sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-8\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\n return (\n <AlertDialogPrimitive.Title\n data-slot=\"alert-dialog-title\"\n className={cn(\n \"text-lg font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\n return (\n <AlertDialogPrimitive.Description\n data-slot=\"alert-dialog-description\"\n className={cn(\n \"text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogAction({\n className,\n ...props\n}: React.ComponentProps<typeof Button>) {\n return (\n <Button\n data-slot=\"alert-dialog-action\"\n className={cn(className)}\n {...props}\n />\n )\n}\n\nfunction AlertDialogCancel({\n className,\n variant = \"outline\",\n size = \"default\",\n ...props\n}: AlertDialogPrimitive.Close.Props &\n Pick<React.ComponentProps<typeof Button>, \"variant\" | \"size\">) {\n return (\n <AlertDialogPrimitive.Close\n data-slot=\"alert-dialog-cancel\"\n className={cn(className)}\n render={<Button variant={variant} size={size} />}\n {...props}\n />\n )\n}\n\nexport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogMedia,\n AlertDialogOverlay,\n AlertDialogPortal,\n AlertDialogTitle,\n AlertDialogTrigger,\n}\n","import { modalRegionRecipes } from '../../../lib/surface-recipes';\nimport type { TextGap } from '../structure';\n/**\n * AlertDialog — structured base wrapper around the shadcn alert-dialog\n * primitive. Higher-level confirmation recipes belong in features/overlays.\n */\nimport * as React from 'react';\n\nimport {\n\tAlertDialog as AlertDialogPrimitive,\n\tAlertDialogAction as AlertDialogActionPrimitive,\n\tAlertDialogCancel as AlertDialogCancelPrimitive,\n\tAlertDialogContent as AlertDialogContentPrimitive,\n\tAlertDialogDescription as AlertDialogDescriptionPrimitive,\n\tAlertDialogFooter as AlertDialogFooterPrimitive,\n\tAlertDialogHeader as AlertDialogHeaderPrimitive,\n\tAlertDialogMedia as AlertDialogMediaPrimitive,\n\tAlertDialogOverlay,\n\tAlertDialogPortal,\n\tAlertDialogTitle as AlertDialogTitlePrimitive,\n\tAlertDialogTrigger as AlertDialogTriggerPrimitive,\n} from '../../ui/alert-dialog';\nimport { Text } from '../../typography';\nimport { cn } from '../../../lib/utils';\n\nfunction isSimpleText(value: React.ReactNode): value is string | number | bigint {\n\treturn typeof value === 'string' || typeof value === 'number' || typeof value === 'bigint';\n}\n\nexport const AlertDialog = AlertDialogPrimitive;\n\nexport const AlertDialogTrigger = React.forwardRef<\n\tReact.ElementRef<typeof AlertDialogTriggerPrimitive>,\n\tReact.ComponentPropsWithoutRef<typeof AlertDialogTriggerPrimitive>\n>(function AlertDialogTrigger({ className, ...props }, ref) {\n\treturn (\n\t\t<AlertDialogTriggerPrimitive\n\t\t\tref={ref}\n\t\t\tclassName={cn('alert-dialog-trigger--component', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nAlertDialogTrigger.displayName = 'AlertDialogTrigger';\n\nexport const AlertDialogContent = React.forwardRef<\n\tReact.ElementRef<typeof AlertDialogContentPrimitive>,\n\tReact.ComponentPropsWithoutRef<typeof AlertDialogContentPrimitive>\n>(function AlertDialogContent({ className, ...props }, ref) {\n\treturn (\n\t\t<AlertDialogContentPrimitive\n\t\t\tref={ref}\n\t\t\tclassName={cn(\n\t\t\t\t'alert-dialog-content--component max-h-[min(90vh,48rem)] gap-0 overflow-hidden rounded-radius bg-background p-0 text-foreground ring-border/70 sm:max-w-md',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nAlertDialogContent.displayName = 'AlertDialogContent';\n\nexport const AlertDialogHeader = React.forwardRef<\n\tHTMLDivElement,\n\tReact.ComponentPropsWithoutRef<typeof AlertDialogHeaderPrimitive> & { textGap?: TextGap }\n>(function AlertDialogHeader({ className, textGap = 'normal', ...props }, ref) {\n\treturn (\n\t\t<AlertDialogHeaderPrimitive\n\t\t\tref={ref}\n\t\t\tclassName={cn('alert-dialog-header--component p-surface text-center', textGap === 'dense' ? 'gap-dense' : 'gap-normal', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nAlertDialogHeader.displayName = 'AlertDialogHeader';\n\nexport const AlertDialogBody = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n\tfunction AlertDialogBody({ className, ...props }, ref) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tref={ref}\n\t\t\t\tdata-slot=\"alert-dialog-body\"\n\t\t\t\tclassName={cn('alert-dialog-body--component min-h-0 flex-1 overflow-y-auto p-surface', className)}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t);\n\t},\n);\n\nAlertDialogBody.displayName = 'AlertDialogBody';\n\nexport const AlertDialogFooter = React.forwardRef<\n\tHTMLDivElement,\n\tReact.ComponentPropsWithoutRef<typeof AlertDialogFooterPrimitive>\n>(function AlertDialogFooter({ className, ...props }, ref) {\n\treturn (\n\t\t<AlertDialogFooterPrimitive\n\t\t\tref={ref}\n\t\t\tclassName={cn(\n\t\t\t\t'alert-dialog-footer--component', modalRegionRecipes.footer,\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nAlertDialogFooter.displayName = 'AlertDialogFooter';\n\nexport const AlertDialogTitle = React.forwardRef<\n\tReact.ElementRef<typeof AlertDialogTitlePrimitive>,\n\tReact.ComponentPropsWithoutRef<typeof AlertDialogTitlePrimitive>\n>(function AlertDialogTitle({ children, className, ...props }, ref) {\n\treturn (\n\t\t<AlertDialogTitlePrimitive\n\t\t\tref={ref}\n\t\t\tclassName={cn('alert-dialog-title--component', className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{isSimpleText(children) ? (\n\t\t\t\t<Text tag=\"span\" size=\"base\" weight=\"semibold\" lineHeight=\"snug\">\n\t\t\t\t\t{children}\n\t\t\t\t</Text>\n\t\t\t) : children}\n\t\t</AlertDialogTitlePrimitive>\n\t);\n});\n\nAlertDialogTitle.displayName = 'AlertDialogTitle';\n\nexport const AlertDialogDescription = React.forwardRef<\n\tReact.ElementRef<typeof AlertDialogDescriptionPrimitive>,\n\tReact.ComponentPropsWithoutRef<typeof AlertDialogDescriptionPrimitive>\n>(function AlertDialogDescription({ children, className, ...props }, ref) {\n\treturn (\n\t\t<AlertDialogDescriptionPrimitive\n\t\t\tref={ref}\n\t\t\tclassName={cn('alert-dialog-description--component', className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{isSimpleText(children) ? (\n\t\t\t\t<Text tag=\"span\" type=\"secondary\" lineHeight=\"relaxed\">\n\t\t\t\t\t{children}\n\t\t\t\t</Text>\n\t\t\t) : children}\n\t\t</AlertDialogDescriptionPrimitive>\n\t);\n});\n\nAlertDialogDescription.displayName = 'AlertDialogDescription';\n\nexport const AlertDialogMedia = React.forwardRef<\n\tHTMLDivElement,\n\tReact.ComponentPropsWithoutRef<typeof AlertDialogMediaPrimitive>\n>(function AlertDialogMedia({ className, ...props }, ref) {\n\treturn (\n\t\t<AlertDialogMediaPrimitive\n\t\t\tref={ref}\n\t\t\tclassName={cn('alert-dialog-media--component', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nAlertDialogMedia.displayName = 'AlertDialogMedia';\n\nexport const AlertDialogAction = React.forwardRef<\n\tReact.ElementRef<typeof AlertDialogActionPrimitive>,\n\tReact.ComponentPropsWithoutRef<typeof AlertDialogActionPrimitive>\n>(function AlertDialogAction({ className, ...props }, ref) {\n\treturn (\n\t\t<AlertDialogActionPrimitive\n\t\t\tref={ref}\n\t\t\tclassName={cn('alert-dialog-action--component', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nAlertDialogAction.displayName = 'AlertDialogAction';\n\nexport const AlertDialogCancel = React.forwardRef<\n\tReact.ElementRef<typeof AlertDialogCancelPrimitive>,\n\tReact.ComponentPropsWithoutRef<typeof AlertDialogCancelPrimitive>\n>(function AlertDialogCancel({ className, ...props }, ref) {\n\treturn (\n\t\t<AlertDialogCancelPrimitive\n\t\t\tref={ref}\n\t\t\tclassName={cn('alert-dialog-cancel--component', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nAlertDialogCancel.displayName = 'AlertDialogCancel';\n\nexport { AlertDialogOverlay, AlertDialogPortal };\n","import { AlertCircle, AlertTriangle, CheckCircle, HelpCircle, Info } from 'lucide-react';\nimport { isValidElement, memo, useMemo, type ReactNode } from 'react';\n\nimport { Button } from '../../base/buttons';\nimport { Alert, AlertDescription } from '../../base/feedback';\nimport {\n\tAlertDialog as BaseAlertDialog,\n\tAlertDialogBody,\n\tAlertDialogContent,\n\tAlertDialogDescription,\n\tAlertDialogFooter,\n\tAlertDialogHeader,\n\tAlertDialogTitle,\n\tAlertDialogTrigger,\n} from '../../base/display/alert-dialog';\nimport { Stack } from '../../base/structure';\nimport { Text } from '../../typography';\nimport { useStrings } from '../../../lib/strings';\nimport { cn } from '../../../lib/utils';\n\nimport { useOverlayActions, useOverlayVisibility } from './hooks';\nimport { defaultAlertDialogStrings } from './overlays.strings';\nimport type { ConfirmDialogProps, OverlayTone } from './overlays.types';\n\nconst TONE_STYLES: Record<OverlayTone, { icon: ReactNode; iconColor: string; background: string }> = {\n\tneutral: {\n\t\ticon: <HelpCircle className=\"size-icon-lg\" />,\n\t\ticonColor: 'text-muted-foreground',\n\t\tbackground: 'bg-muted',\n\t},\n\tdestructive: {\n\t\ticon: <AlertCircle className=\"size-icon-lg\" />,\n\t\ticonColor: 'text-destructive',\n\t\tbackground: 'bg-destructive/10',\n\t},\n\twarning: {\n\t\ticon: <AlertTriangle className=\"size-icon-lg\" />,\n\t\ticonColor: 'text-warning',\n\t\tbackground: 'bg-warning/15',\n\t},\n\tinfo: {\n\t\ticon: <Info className=\"size-icon-lg\" />,\n\t\ticonColor: 'text-info',\n\t\tbackground: 'bg-info/15',\n\t},\n\tsuccess: {\n\t\ticon: <CheckCircle className=\"size-icon-lg\" />,\n\t\ticonColor: 'text-success',\n\t\tbackground: 'bg-success/15',\n\t},\n};\n\nfunction ConfirmDialogImpl({\n\topen,\n\tonOpenChange,\n\tonClose,\n\tchildren,\n\ttitle,\n\tdescription,\n\tvisuallyHideHeader = false,\n\tclassName,\n\tcontentClassName,\n\tinitialFocusRef,\n\tcloseOnEscape = true,\n\tstrings: customStrings,\n\tshowCancel = true,\n\tshowConfirm = true,\n\tonCancel,\n\tonConfirm,\n\tonAsyncConfirm,\n\tonError,\n\tcloseOnAsyncComplete = true,\n\tconfirmTone,\n\tconfirmStyle = 'solid',\n\tloading = false,\n\tformId,\n\tfooter,\n\ttone = 'neutral',\n\tshowIcon = true,\n\talertMessage,\n\ttrigger,\n\tdestructive = false,\n}: ConfirmDialogProps) {\n\tconst visibility = useOverlayVisibility({ open, onOpenChange, onClose });\n\tconst mergedStrings = useStrings(defaultAlertDialogStrings, customStrings);\n\tconst resolvedConfirmTone = useMemo(() => {\n\t\tif (destructive) return 'destructive' as const;\n\t\tif (confirmTone) return confirmTone;\n\t\tconst toneMap = {\n\t\t\tneutral: 'primary',\n\t\t\tdestructive: 'destructive',\n\t\t\twarning: 'warning',\n\t\t\tinfo: 'primary',\n\t\t\tsuccess: 'success',\n\t\t} as const;\n\t\treturn toneMap[tone];\n\t}, [destructive, confirmTone, tone]);\n\n\tconst { strings, confirmButtonOnClick, effectiveLoading, handleCancel } =\n\t\tuseOverlayActions({\n\t\t\tcloseDialog: visibility.hide,\n\t\t\tonConfirm,\n\t\t\tonAsyncConfirm,\n\t\t\tonError,\n\t\t\tcloseOnAsyncComplete,\n\t\t\tconfirmTone: resolvedConfirmTone,\n\t\t\tloading,\n\t\t\tformId,\n\t\t\tonCancel,\n\t\t\tcustomStrings: mergedStrings,\n\t\t});\n\n\t/*\n\t * `destructive` is documented as the destructive *presentation*, but it only\n\t * ever reached the confirm button — the icon and the inline alert still came\n\t * from `tone`, which defaults to neutral. The result was a red confirm button\n\t * beside a grey question mark: two signals disagreeing about how serious the\n\t * action is. An explicit `tone` still wins, so this only fills the gap.\n\t */\n\tconst resolvedTone = destructive && tone === 'neutral' ? ('destructive' as const) : tone;\n\tconst toneStyles = TONE_STYLES[resolvedTone];\n\n\treturn (\n\t\t<BaseAlertDialog\n\t\t\topen={visibility.open}\n\t\t\tonOpenChange={(nextOpen, details) => {\n\t\t\t\tif (!nextOpen && details.reason === 'escape-key' && !closeOnEscape) {\n\t\t\t\t\tdetails.cancel();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tvisibility.setOpen(nextOpen);\n\t\t\t}}\n\t\t>\n\t\t\t{!!trigger && (isValidElement(trigger) ? (\n\t\t\t\t<AlertDialogTrigger render={trigger} />\n\t\t\t) : (\n\t\t\t\t<AlertDialogTrigger className=\"overlay-trigger--fallback cursor-pointer\">\n\t\t\t\t\t<Text tag=\"span\" size=\"inherit\" className=\"text-inherit\">{trigger}</Text>\n\t\t\t\t</AlertDialogTrigger>\n\t\t\t))}\n\n\t\t\t<AlertDialogContent\n\t\t\t\tinitialFocus={initialFocusRef}\n\t\t\t\taria-label={title ? undefined : strings.alertDialogLabel}\n\t\t\t\tclassName={cn('confirm-dialog--component alert-dialog--component', className)}\n\t\t\t>\n\t\t\t\t<AlertDialogBody className=\"alert-dialog--body\">\n\t\t\t\t\t{!!showIcon && !visuallyHideHeader && (\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t'mx-auto mb-space-md flex size-avatar-lg items-center justify-center rounded-full',\n\t\t\t\t\t\t\t\ttoneStyles.background,\n\t\t\t\t\t\t\t\ttoneStyles.iconColor,\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{toneStyles.icon}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{!!(title || description) && (\n\t\t\t\t\t\t<AlertDialogHeader className={cn('p-0', visuallyHideHeader && 'sr-only')}>\n\t\t\t\t\t\t\t{!!title && <AlertDialogTitle>{title}</AlertDialogTitle>}\n\t\t\t\t\t\t\t{!!description && <AlertDialogDescription>{description}</AlertDialogDescription>}\n\t\t\t\t\t\t</AlertDialogHeader>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{!!alertMessage && (\n\t\t\t\t\t\t<Alert tone={resolvedTone} className=\"mt-space-md p-surface-xs text-left\">\n\t\t\t\t\t\t\t<AlertDescription>{alertMessage}</AlertDescription>\n\t\t\t\t\t\t</Alert>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{!!children && <div className={cn('mt-space-md', contentClassName)}>{children}</div>}\n\t\t\t\t</AlertDialogBody>\n\n\t\t\t\t{!!(showCancel || showConfirm || footer) && (\n\t\t\t\t\t<AlertDialogFooter className=\"alert-dialog--footer\">\n\t\t\t\t\t\t{footer ?? (\n\t\t\t\t\t\t\t<Stack\n\t\t\t\t\t\t\t\tdirection={{ base: 'vertical', sm: 'horizontal' }}\n\t\t\t\t\t\t\t\tgap=\"sm\"\n\t\t\t\t\t\t\t\talign={{ base: 'stretch', sm: 'center' }}\n\t\t\t\t\t\t\t\tjustify=\"end\"\n\t\t\t\t\t\t\t\tclassName=\"w-full\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{!!showCancel && (\n\t\t\t\t\t\t\t\t\t<Button type=\"button\" tone=\"secondary\" buttonStyle=\"outline\" onClick={handleCancel}>\n\t\t\t\t\t\t\t\t\t\t{strings.cancel}\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t{!!showConfirm && (\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\ttone={resolvedConfirmTone}\n\t\t\t\t\t\t\t\t\t\tbuttonStyle={confirmStyle}\n\t\t\t\t\t\t\t\t\t\tonClick={confirmButtonOnClick}\n\t\t\t\t\t\t\t\t\t\tloading={effectiveLoading}\n\t\t\t\t\t\t\t\t\t\tstrings={{ loading: strings.loading }}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{strings.confirm}\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</AlertDialogFooter>\n\t\t\t\t)}\n\t\t\t</AlertDialogContent>\n\t\t</BaseAlertDialog>\n\t);\n}\n\nexport const ConfirmDialog = memo(ConfirmDialogImpl);\nConfirmDialog.displayName = 'ConfirmDialog';\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"overlays-B11wZka6.js","names":["Dialog","DialogPrimitive","DialogTrigger","DialogClose","DialogContent","Button","DialogHeader","DialogFooter","DialogTitle","DialogDescription","isSimpleText","Dialog","DialogPrimitive","React","DialogTriggerPrimitive","DialogClosePrimitive","DialogContentPrimitive","DialogHeaderPrimitive","DialogFooterPrimitive","DialogTitlePrimitive","DialogDescriptionPrimitive","TONE_STYLES","BaseDialog","AlertDialog","AlertDialogPrimitive","AlertDialogTrigger","AlertDialogContent","AlertDialogHeader","AlertDialogFooter","AlertDialogMedia","AlertDialogTitle","AlertDialogDescription","AlertDialogAction","Button","AlertDialogCancel","AlertDialog","AlertDialogPrimitive","React","AlertDialogTriggerPrimitive","AlertDialogContentPrimitive","AlertDialogHeaderPrimitive","AlertDialogFooterPrimitive","AlertDialogTitlePrimitive","AlertDialogDescriptionPrimitive","AlertDialogMediaPrimitive","AlertDialogActionPrimitive","AlertDialogCancelPrimitive","BaseAlertDialog","useThemePortalContainer","cn","SheetDescription","SheetTitle","SheetContent","SheetTrigger","SheetBody","SheetFooter","SheetClose","SheetHeader","Sheet","overlayAnatomyRecipes","Button","Text","motionRecipes","Slot","Button$1","Stack","Alert","AlertDescription","surfaceDividerRecipes","modalRegionRecipes","modalBackdropRecipe","React$1","Dialog$2","props","Dialog","DialogTrigger$1","renderSlot","asChild","DialogPortal","resolvedContainer","container","DialogClose$1","DialogOverlay","className","DialogContent$1","children","showCloseButton","XIcon","DialogHeader$1","DialogFooter$1","DialogTitle$1","DialogDescription$1","isSimpleText$1","value","Dialog$1","DialogTrigger","DialogClose","DialogContent","DialogHeader","textGap","DialogBody","DialogFooter","DialogTitle","DialogDescription","defaultOverlayStrings","defaultAlertDialogStrings","useOverlayActions","strings","useStrings","customStrings","isExecuting","setIsExecuting","useState","handleConfirm","useCallback","onConfirm","closeDialog","onAsyncConfirm","closeOnAsyncComplete","error","onError","handleCancel","onCancel","handleFormSubmit","formId","form","useMemo","emphasis","tone","confirmTone","loading","resolveOpenValue","nextOpen","currentOpen","normalizeGroupState","result","key","keys","state","hasGroupStateChanged","previous","next","useOverlayVisibility","controlledOpen","internalOpen","setInternalOpen","defaultOpen","isControlled","open","openRef","useRef","setOpen","resolvedOpen","changed","onOpenChange","onOpen","onClose","useOverlayVisibilityGroup","keyList","stateRef","setKeyOpen","previousState","nextState","closeOthersOnOpen","item","SIZE_CLASSES","TONE_STYLES$1","HelpCircle","AlertCircle","AlertTriangle","Info","CheckCircle","ActionDialogImpl","visibility","toneStyles","hasContent","alertMessage","hasFooter","showCancel","showConfirm","footer","closeOnBackdropClick","details","closeOnEscape","trigger","isValidElement","surfaceStyle","initialFocusRef","title","size","X","description","visuallyHideHeader","showIcon","contentClassName","finalConfirmTone","confirmStyle","confirmButtonOnClick","effectiveLoading","ActionDialog","memo","WIDTH_CLASSES","TONE_ICONS","ActionDrawerImpl","isHorizontal","direction","showFooter","modal","width","ActionDrawer","AlertDialog$2","AlertDialog","AlertDialogTrigger$1","AlertDialogPortal","AlertDialogOverlay","AlertDialogContent$1","AlertDialogHeader$1","AlertDialogFooter$1","AlertDialogMedia$1","AlertDialogTitle$1","AlertDialogDescription$1","AlertDialogAction$1","AlertDialogCancel$1","isSimpleText","AlertDialog$1","AlertDialogTrigger","AlertDialogContent","AlertDialogHeader","AlertDialogBody","AlertDialogFooter","AlertDialogTitle","AlertDialogDescription","AlertDialogMedia","AlertDialogAction","AlertDialogCancel","TONE_STYLES","ConfirmDialogImpl","mergedStrings","resolvedConfirmTone","destructive","resolvedTone","ConfirmDialog"],"sources":["../src/components/ui/dialog.tsx","../src/components/base/display/dialog.tsx","../src/components/features/overlays/overlays.strings.ts","../src/components/features/overlays/hooks/use-overlay-actions.ts","../src/components/features/overlays/hooks/use-overlay-visibility.ts","../src/components/features/overlays/dialog.tsx","../src/components/features/overlays/drawer.tsx","../src/components/ui/alert-dialog.tsx","../src/components/base/display/alert-dialog.tsx","../src/components/features/overlays/alert-dialog.tsx"],"sourcesContent":["import { overlayAnatomyRecipes } from '../../lib/overlay-anatomy-recipes';\nimport { motionRecipes } from '../../lib/motion-recipes';\nimport { modalBackdropRecipe } from './overlay.recipes';\n\"use client\"\n\nimport { useThemePortalContainer, type ThemePortalContainer } from '../../lib/theme-scope';\n\nimport { Dialog as DialogPrimitive } from \"@base-ui/react/dialog\"\nimport { XIcon } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { Button } from \"./button\"\nimport { Slot } from \"./slot\"\nimport { cn } from \"../../lib/utils\"\n\nfunction Dialog({ ...props }: DialogPrimitive.Root.Props) {\n return <DialogPrimitive.Root data-slot=\"dialog\" modal=\"trap-focus\" {...props} />\n}\n\nfunction DialogTrigger({\n asChild = false,\n ...props\n}: DialogPrimitive.Trigger.Props & { asChild?: boolean }) {\n const renderSlot = asChild ? <Slot /> : undefined\n\n return (\n <DialogPrimitive.Trigger\n data-slot=\"dialog-trigger\"\n render={renderSlot}\n {...props}\n />\n )\n}\n\nfunction DialogPortal({ container, ...props }: DialogPrimitive.Portal.Props) {\n const resolvedContainer = useThemePortalContainer(container)\n return <DialogPrimitive.Portal container={resolvedContainer} data-slot=\"dialog-portal\" {...props} />\n}\n\nfunction DialogClose({ ...props }: DialogPrimitive.Close.Props) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: DialogPrimitive.Backdrop.Props) {\n return (\n <DialogPrimitive.Backdrop\n data-slot=\"dialog-overlay\"\n className={cn(modalBackdropRecipe, motionRecipes.backdrop, \"isolate\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogContent({\n className,\n container,\n children,\n showCloseButton = true,\n ...props\n}: DialogPrimitive.Popup.Props & {\n showCloseButton?: boolean\n} & { container?: ThemePortalContainer }) {\n const resolvedContainer = useThemePortalContainer(container)\n return (\n <DialogPortal container={resolvedContainer}>\n <DialogOverlay />\n <DialogPrimitive.Popup\n data-slot=\"dialog-content\"\n className={cn(\n motionRecipes.dialog,\n \"bg-background ring-foreground/10 grid max-w-[calc(100%-2rem)] gap-6 rounded-xl p-6 text-sm ring-1 sm:max-w-md fixed top-1/2 left-1/2 z-50 w-full -translate-x-1/2 -translate-y-1/2 outline-none\",\n className\n )}\n {...props}\n >\n {children}\n {!!showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n render={\n <Button\n variant=\"ghost\"\n data-overlay-close=\"\"\n className={overlayAnatomyRecipes.close}\n size=\"icon-sm\"\n />\n }\n >\n <XIcon\n />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Popup>\n </DialogPortal>\n )\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\"gap-2 flex flex-col\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogFooter({\n className,\n showCloseButton = false,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n showCloseButton?: boolean\n}) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"gap-2 flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\",\n className\n )}\n {...props}\n >\n {children}\n {!!showCloseButton && (\n <DialogPrimitive.Close render={<Button variant=\"outline\" />}>\n Close\n </DialogPrimitive.Close>\n )}\n </div>\n )\n}\n\nfunction DialogTitle({\n className,\n asChild = false,\n ...props\n}: DialogPrimitive.Title.Props & { asChild?: boolean }) {\n const renderSlot = asChild ? <Slot /> : undefined\n\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n render={renderSlot}\n className={cn(\"leading-none font-medium\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogDescription({\n className,\n asChild = false,\n ...props\n}: DialogPrimitive.Description.Props & { asChild?: boolean }) {\n const renderSlot = asChild ? <Slot /> : undefined\n\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n render={renderSlot}\n className={cn(\"text-muted-foreground *:[a]:hover:text-foreground text-sm *:[a]:underline *:[a]:underline-offset-3\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n}\n","import { modalRegionRecipes, surfaceDividerRecipes } from '../../../lib/surface-recipes';\nimport { overlayAnatomyRecipes } from '../../../lib/overlay-anatomy-recipes';\nimport type { TextGap } from '../structure';\n/**\n * Dialog — structured base wrapper around the shadcn dialog primitive.\n *\n * Primitive state and composition props pass through unchanged. The package\n * wrapper supplies deliberate modal anatomy: separated header and footer,\n * a scroll-owning body, tokenized spacing, and stable BEM hooks.\n */\nimport * as React from 'react';\n\nimport {\n\tDialog as DialogPrimitive,\n\tDialogClose as DialogClosePrimitive,\n\tDialogContent as DialogContentPrimitive,\n\tDialogDescription as DialogDescriptionPrimitive,\n\tDialogFooter as DialogFooterPrimitive,\n\tDialogHeader as DialogHeaderPrimitive,\n\tDialogOverlay,\n\tDialogPortal,\n\tDialogTitle as DialogTitlePrimitive,\n\tDialogTrigger as DialogTriggerPrimitive,\n} from '../../ui/dialog';\nimport { Text } from '../../typography';\nimport { cn } from '../../../lib/utils';\n\nfunction isSimpleText(value: React.ReactNode): value is string | number | bigint {\n\treturn typeof value === 'string' || typeof value === 'number' || typeof value === 'bigint';\n}\n\nexport const Dialog = DialogPrimitive;\n\nexport const DialogTrigger = React.forwardRef<\n\tReact.ElementRef<typeof DialogTriggerPrimitive>,\n\tReact.ComponentPropsWithoutRef<typeof DialogTriggerPrimitive>\n>(function DialogTrigger({ className, ...props }, ref) {\n\treturn (\n\t\t<DialogTriggerPrimitive\n\t\t\tref={ref}\n\t\t\tclassName={cn('dialog-trigger--component', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nDialogTrigger.displayName = 'DialogTrigger';\n\nexport const DialogClose = React.forwardRef<\n\tReact.ElementRef<typeof DialogClosePrimitive>,\n\tReact.ComponentPropsWithoutRef<typeof DialogClosePrimitive>\n>(function DialogClose({ className, ...props }, ref) {\n\treturn (\n\t\t<DialogClosePrimitive\n\t\t\tref={ref}\n\t\t\tclassName={cn('dialog-close--component active:translate-y-0!', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nDialogClose.displayName = 'DialogClose';\n\nexport const DialogContent = React.forwardRef<\n\tReact.ElementRef<typeof DialogContentPrimitive>,\n\tReact.ComponentPropsWithoutRef<typeof DialogContentPrimitive>\n>(function DialogContent({ className, ...props }, ref) {\n\treturn (\n\t\t<DialogContentPrimitive\n\t\t\tref={ref}\n\t\t\tclassName={cn(\n\t\t\t\t// The shell stays flush so its separated regions can each own the\n\t\t\t\t// same default p-surface inset without stacking padding.\n\t\t\t\t'dialog-content--component flex max-h-[min(90vh,48rem)] flex-col gap-0 overflow-hidden rounded-radius bg-background p-0 text-foreground shadow-xl sm:max-w-lg [&_[data-slot=dialog-close]]:active:translate-y-0!', surfaceDividerRecipes.modal.shell,\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nDialogContent.displayName = 'DialogContent';\n\nexport const DialogHeader = React.forwardRef<\n\tHTMLDivElement,\n\tReact.ComponentPropsWithoutRef<typeof DialogHeaderPrimitive> & { textGap?: TextGap }\n>(function DialogHeader({ className, textGap = 'normal', ...props }, ref) {\n\treturn (\n\t\t<DialogHeaderPrimitive\n\t\t\tref={ref}\n\t\t\tclassName={cn(\n\t\t\t\t'dialog-header--component', modalRegionRecipes.header,\n\t\t\t\toverlayAnatomyRecipes.header,\n\t\t\t\ttextGap === 'dense' ? 'gap-dense' : 'gap-normal',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nDialogHeader.displayName = 'DialogHeader';\n\n/** Scroll-owning content region between the fixed dialog header and footer. */\nexport const DialogBody = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n\tfunction DialogBody({ className, ...props }, ref) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tref={ref}\n\t\t\t\tdata-slot=\"dialog-body\"\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'dialog-body--component', modalRegionRecipes.body,\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t);\n\t},\n);\n\nDialogBody.displayName = 'DialogBody';\n\nexport const DialogFooter = React.forwardRef<\n\tHTMLDivElement,\n\tReact.ComponentPropsWithoutRef<typeof DialogFooterPrimitive>\n>(function DialogFooter({ className, ...props }, ref) {\n\treturn (\n\t\t<DialogFooterPrimitive\n\t\t\tref={ref}\n\t\t\tclassName={cn(\n\t\t\t\t'dialog-footer--component', modalRegionRecipes.footer,\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nDialogFooter.displayName = 'DialogFooter';\n\nexport const DialogTitle = React.forwardRef<\n\tReact.ElementRef<typeof DialogTitlePrimitive>,\n\tReact.ComponentPropsWithoutRef<typeof DialogTitlePrimitive>\n>(function DialogTitle({ children, className, ...props }, ref) {\n\treturn (\n\t\t<DialogTitlePrimitive\n\t\t\tref={ref}\n\t\t\tclassName={cn('dialog-title--component', className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{isSimpleText(children) ? (\n\t\t\t\t<Text\n\t\t\t\t\ttag=\"span\"\n\t\t\t\t\tsize=\"base\"\n\t\t\t\t\tweight=\"semibold\"\n\t\t\t\t\tlineHeight=\"snug\"\n\t\t\t\t\tclassName=\"dialog-title--text\"\n\t\t\t\t>\n\t\t\t\t\t{children}\n\t\t\t\t</Text>\n\t\t\t) : children}\n\t\t</DialogTitlePrimitive>\n\t);\n});\n\nDialogTitle.displayName = 'DialogTitle';\n\nexport const DialogDescription = React.forwardRef<\n\tReact.ElementRef<typeof DialogDescriptionPrimitive>,\n\tReact.ComponentPropsWithoutRef<typeof DialogDescriptionPrimitive>\n>(function DialogDescription({ children, className, ...props }, ref) {\n\treturn (\n\t\t<DialogDescriptionPrimitive\n\t\t\tref={ref}\n\t\t\tclassName={cn('dialog-description--component', className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{isSimpleText(children) ? (\n\t\t\t\t<Text\n\t\t\t\t\ttag=\"span\"\n\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\tlineHeight=\"relaxed\"\n\t\t\t\t\tclassName=\"dialog-description--text\"\n\t\t\t\t>\n\t\t\t\t\t{children}\n\t\t\t\t</Text>\n\t\t\t) : children}\n\t\t</DialogDescriptionPrimitive>\n\t);\n});\n\nDialogDescription.displayName = 'DialogDescription';\n\nexport { DialogOverlay, DialogPortal };\n","/**\n * Default user-facing strings shared by ActionDialog, ActionDrawer, and\n * ConfirmDialog recipes.\n *\n * Consumers wire backend i18n at the call site:\n *\n * <ActionDialog strings={{ confirm: t('common.confirm') }} … />\n */\n\nexport interface OverlayStrings {\n\tconfirm: string;\n\tcancel: string;\n\tclose: string;\n\tloading: string;\n\tdialogLabel: string;\n\tdrawerLabel: string;\n\talertDialogLabel: string;\n}\n\nexport const defaultOverlayStrings: OverlayStrings = {\n\tconfirm: 'Confirm',\n\tcancel: 'Cancel',\n\tclose: 'Close',\n\tloading: 'Loading...',\n\tdialogLabel: 'Dialog',\n\tdrawerLabel: 'Drawer',\n\talertDialogLabel: 'Confirmation',\n};\n\nexport const defaultAlertDialogStrings: OverlayStrings = {\n\tconfirm: 'Continue',\n\tcancel: 'Cancel',\n\tclose: 'Close',\n\tloading: 'Loading...',\n\tdialogLabel: 'Dialog',\n\tdrawerLabel: 'Drawer',\n\talertDialogLabel: 'Confirmation',\n};\n","import { useCallback, useMemo, useState } from 'react';\n\nimport { useStrings, type StringsProp } from '../../../../lib/strings';\n\nimport {\n\tdefaultOverlayStrings,\n\ttype OverlayStrings,\n} from '../overlays.strings';\nimport type {\n\tOverlayButtonTone,\n\tOverlayActionProps,\n\tOverlayTone,\n} from '../overlays.types';\n\nexport interface UseOverlayActionsOptions\n\textends Pick<\n\t\tOverlayActionProps,\n\t\t| 'onConfirm'\n\t\t| 'onAsyncConfirm'\n\t\t| 'closeOnAsyncComplete'\n\t\t| 'confirmTone'\n\t\t| 'loading'\n\t\t| 'formId'\n\t> {\n\tcloseDialog: () => void;\n\tonCancel?: () => void;\n\tcustomStrings?: StringsProp<OverlayStrings>;\n\temphasis?: boolean;\n\ttone?: OverlayTone;\n\t/** Called when `onAsyncConfirm` throws. Library DEV-logs the error;\n\t * consumer wires telemetry. */\n\tonError?: (error: unknown) => void;\n}\n\nexport interface UseOverlayActionsReturn {\n\t/** Overrides this surface's own copy. */\n\tstrings: OverlayStrings;\n\tisExecuting: boolean;\n\thandleConfirm: () => Promise<void>;\n\thandleCancel: () => void;\n\tfinalConfirmTone: OverlayButtonTone;\n\tconfirmButtonOnClick: (() => Promise<void>) | undefined;\n\teffectiveLoading: boolean;\n}\n\nexport function useOverlayActions({\n\tcloseDialog,\n\tonConfirm,\n\tonAsyncConfirm,\n\tcloseOnAsyncComplete = true,\n\tconfirmTone = 'primary',\n\tloading = false,\n\tformId,\n\tonCancel,\n\tcustomStrings,\n\temphasis = false,\n\ttone = 'neutral',\n\tonError,\n}: UseOverlayActionsOptions): UseOverlayActionsReturn {\n\tconst strings = useStrings(defaultOverlayStrings, customStrings);\n\n\tconst [isExecuting, setIsExecuting] = useState(false);\n\n\tconst handleConfirm = useCallback(async () => {\n\t\tif (onConfirm) {\n\t\t\tonConfirm();\n\t\t\tcloseDialog();\n\t\t\treturn;\n\t\t}\n\n\t\tif (onAsyncConfirm) {\n\t\t\tsetIsExecuting(true);\n\t\t\ttry {\n\t\t\t\tawait onAsyncConfirm();\n\t\t\t\tif (closeOnAsyncComplete) {\n\t\t\t\t\tcloseDialog();\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tif (import.meta.env?.DEV) {\n\t\t\t\t\tconsole.error('Overlay async confirm failed:', error);\n\t\t\t\t}\n\t\t\t\tonError?.(error);\n\t\t\t} finally {\n\t\t\t\tsetIsExecuting(false);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tcloseDialog();\n\t}, [onConfirm, onAsyncConfirm, closeOnAsyncComplete, closeDialog, onError]);\n\n\tconst handleCancel = useCallback(() => {\n\t\tonCancel?.();\n\t\tcloseDialog();\n\t}, [onCancel, closeDialog]);\n\n\tconst handleFormSubmit = useCallback(async () => {\n\t\tif (!formId) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst form = document.getElementById(formId);\n\n\t\tif (!(form instanceof HTMLFormElement)) {\n\t\t\treturn;\n\t\t}\n\n\t\tform.requestSubmit();\n\t}, [formId]);\n\n\tconst finalConfirmTone = useMemo<OverlayButtonTone>(() => {\n\t\tif (!emphasis) return confirmTone ?? 'primary';\n\t\tif (tone === 'destructive') return 'destructive';\n\t\tif (tone === 'warning') return 'warning';\n\t\tif (tone === 'success') return 'success';\n\t\treturn confirmTone ?? 'primary';\n\t}, [emphasis, tone, confirmTone]);\n\n\tconst confirmButtonOnClick = formId ? handleFormSubmit : handleConfirm;\n\n\treturn {\n\t\tstrings,\n\t\tisExecuting,\n\t\thandleConfirm,\n\t\thandleCancel,\n\t\tfinalConfirmTone,\n\t\tconfirmButtonOnClick,\n\t\teffectiveLoading: isExecuting || loading,\n\t};\n}\n","import {\n\tuseCallback,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n\ttype Dispatch,\n\ttype SetStateAction,\n} from 'react';\n\nexport type OverlayOpenSetter = Dispatch<SetStateAction<boolean>>;\n\nexport interface OverlayVisibilityProps {\n\topen: boolean;\n\t/** Fired when a change is opened. */\n\tonOpenChange: (open: boolean) => void;\n}\n\nexport interface UseOverlayVisibilityOptions {\n\tdefaultOpen?: boolean;\n\topen?: boolean;\n\t/** Fired when a change is opened. */\n\tonOpenChange?: (open: boolean) => void;\n\t/** Fired when an entry is opened. */\n\tonOpen?: () => void;\n\tonClose?: () => void;\n}\n\nexport interface UseOverlayVisibilityReturn {\n\topen: boolean;\n\tisOpen: boolean;\n\tsetOpen: OverlayOpenSetter;\n\tshow: () => void;\n\thide: () => void;\n\ttoggle: () => void;\n\toverlayProps: OverlayVisibilityProps;\n}\n\nexport type OverlayVisibilityGroupState<TKey extends string = string> = Record<TKey, boolean>;\n\nexport interface UseOverlayVisibilityGroupOptions<TKey extends string = string> {\n\tdefaultOpen?: Partial<Record<TKey, boolean>>;\n\topen?: Partial<Record<TKey, boolean>>;\n\t/** Fired when a change is opened. */\n\tonOpenChange?: (\n\t\tkey: TKey,\n\t\topen: boolean,\n\t\tstate: OverlayVisibilityGroupState<TKey>,\n\t) => void;\n\tcloseOthersOnOpen?: boolean;\n}\n\nexport type UseOverlayVisibilityGroupReturn<TKey extends string = string> = Record<\n\tTKey,\n\tUseOverlayVisibilityReturn\n>;\n\nfunction resolveOpenValue(\n\tnextOpen: SetStateAction<boolean>,\n\tcurrentOpen: boolean,\n): boolean {\n\tif (typeof nextOpen === 'function') {\n\t\treturn (nextOpen as (open: boolean) => boolean)(currentOpen);\n\t}\n\treturn nextOpen;\n}\n\nfunction normalizeGroupState<TKey extends string>(\n\tkeys: readonly TKey[],\n\tstate?: Partial<Record<TKey, boolean>>,\n): OverlayVisibilityGroupState<TKey> {\n\tconst result = {} as OverlayVisibilityGroupState<TKey>;\n\tfor (const key of keys) {\n\t\tresult[key] = Boolean(state?.[key]);\n\t}\n\treturn result;\n}\n\nfunction hasGroupStateChanged<TKey extends string>(\n\tprevious: OverlayVisibilityGroupState<TKey>,\n\tnext: OverlayVisibilityGroupState<TKey>,\n\tkeys: readonly TKey[],\n): boolean {\n\treturn keys.some((key) => previous[key] !== next[key]);\n}\n\nexport function useOverlayVisibility({\n\tdefaultOpen = false,\n\topen: controlledOpen,\n\tonOpenChange,\n\tonOpen,\n\tonClose,\n}: UseOverlayVisibilityOptions = {}): UseOverlayVisibilityReturn {\n\tconst [internalOpen, setInternalOpen] = useState(defaultOpen);\n\tconst isControlled = controlledOpen !== undefined;\n\tconst open = isControlled ? controlledOpen : internalOpen;\n\tconst openRef = useRef(open);\n\topenRef.current = open;\n\n\tconst setOpen = useCallback<OverlayOpenSetter>(\n\t\t(nextOpen) => {\n\t\t\tconst resolvedOpen = resolveOpenValue(nextOpen, openRef.current);\n\t\t\tconst changed = openRef.current !== resolvedOpen;\n\n\t\t\tif (!isControlled) {\n\t\t\t\tsetInternalOpen(resolvedOpen);\n\t\t\t}\n\n\t\t\tif (!changed) return;\n\n\t\t\topenRef.current = resolvedOpen;\n\t\t\tonOpenChange?.(resolvedOpen);\n\t\t\tif (resolvedOpen) {\n\t\t\t\tonOpen?.();\n\t\t\t} else {\n\t\t\t\tonClose?.();\n\t\t\t}\n\t\t},\n\t\t[isControlled, onClose, onOpen, onOpenChange],\n\t);\n\n\tconst show = useCallback(() => {\n\t\tsetOpen(true);\n\t}, [setOpen]);\n\n\tconst hide = useCallback(() => {\n\t\tsetOpen(false);\n\t}, [setOpen]);\n\n\tconst toggle = useCallback(() => {\n\t\tsetOpen((currentOpen) => !currentOpen);\n\t}, [setOpen]);\n\n\tconst overlayProps = useMemo(\n\t\t() => ({\n\t\t\topen,\n\t\t\tonOpenChange: setOpen,\n\t\t}),\n\t\t[open, setOpen],\n\t);\n\n\treturn {\n\t\topen,\n\t\tisOpen: open,\n\t\tsetOpen,\n\t\tshow,\n\t\thide,\n\t\ttoggle,\n\t\toverlayProps,\n\t};\n}\n\nexport function useOverlayVisibilityGroup<const TKeys extends readonly string[]>(\n\tkeys: TKeys,\n\t{\n\t\tdefaultOpen,\n\t\topen: controlledOpen,\n\t\tonOpenChange,\n\t\tcloseOthersOnOpen = false,\n\t}: UseOverlayVisibilityGroupOptions<TKeys[number] & string> = {},\n): UseOverlayVisibilityGroupReturn<TKeys[number] & string> {\n\ttype TKey = TKeys[number] & string;\n\n\tconst keyList = keys as readonly TKey[];\n\tconst [internalOpen, setInternalOpen] = useState<OverlayVisibilityGroupState<TKey>>(\n\t\t() => normalizeGroupState(keyList, defaultOpen),\n\t);\n\tconst isControlled = controlledOpen !== undefined;\n\tconst state = normalizeGroupState(keyList, isControlled ? controlledOpen : internalOpen);\n\tconst stateRef = useRef(state);\n\tstateRef.current = state;\n\n\tconst setKeyOpen = useCallback(\n\t\t(key: TKey, nextOpen: SetStateAction<boolean>) => {\n\t\t\tconst previousState = stateRef.current;\n\t\t\tconst resolvedOpen = resolveOpenValue(nextOpen, previousState[key]);\n\t\t\tconst nextState = {\n\t\t\t\t...previousState,\n\t\t\t\t[key]: resolvedOpen,\n\t\t\t} as OverlayVisibilityGroupState<TKey>;\n\n\t\t\tif (closeOthersOnOpen && resolvedOpen) {\n\t\t\t\tfor (const item of keyList) {\n\t\t\t\t\tif (item !== key) {\n\t\t\t\t\t\tnextState[item] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst changed = hasGroupStateChanged(previousState, nextState, keyList);\n\n\t\t\tif (!isControlled) {\n\t\t\t\tsetInternalOpen(nextState);\n\t\t\t}\n\n\t\t\tif (!changed) return;\n\n\t\t\tstateRef.current = nextState;\n\t\t\tonOpenChange?.(key, resolvedOpen, nextState);\n\t\t},\n\t\t[closeOthersOnOpen, isControlled, keyList, onOpenChange],\n\t);\n\n\treturn useMemo(() => {\n\t\tconst result = {} as UseOverlayVisibilityGroupReturn<TKey>;\n\n\t\tfor (const key of keyList) {\n\t\t\tconst open = state[key];\n\t\t\tconst setOpen: OverlayOpenSetter = (nextOpen) => {\n\t\t\t\tsetKeyOpen(key, nextOpen);\n\t\t\t};\n\n\t\t\tresult[key] = {\n\t\t\t\topen,\n\t\t\t\tisOpen: open,\n\t\t\t\tsetOpen,\n\t\t\t\tshow: () => setKeyOpen(key, true),\n\t\t\t\thide: () => setKeyOpen(key, false),\n\t\t\t\ttoggle: () => setKeyOpen(key, (currentOpen) => !currentOpen),\n\t\t\t\toverlayProps: {\n\t\t\t\t\topen,\n\t\t\t\t\tonOpenChange: setOpen,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\treturn result;\n\t}, [keyList, setKeyOpen, state]);\n}\n","import { overlayAnatomyRecipes } from '../../../lib/overlay-anatomy-recipes';\nimport {\n\tAlertCircle,\n\tAlertTriangle,\n\tCheckCircle,\n\tHelpCircle,\n\tInfo,\n\tX,\n} from 'lucide-react';\nimport { isValidElement, memo, type ReactNode } from 'react';\n\nimport { Button } from '../../base/buttons';\nimport { Alert, AlertDescription } from '../../base/feedback';\nimport {\n\tDialog as BaseDialog,\n\tDialogBody,\n\tDialogClose,\n\tDialogContent,\n\tDialogDescription,\n\tDialogFooter,\n\tDialogHeader,\n\tDialogTitle,\n\tDialogTrigger,\n} from '../../base/display/dialog';\nimport { Stack } from '../../base/structure';\nimport { Text } from '../../typography';\nimport { cn } from '../../../lib/utils';\n\nimport { useOverlayActions, useOverlayVisibility } from './hooks';\nimport type { ActionDialogProps, OverlaySize, OverlayTone } from './overlays.types';\n\nconst SIZE_CLASSES: Record<OverlaySize, string> = {\n\txs: 'sm:max-w-xs',\n\tsm: 'sm:max-w-sm',\n\tmd: 'sm:max-w-md',\n\tlg: 'sm:max-w-lg',\n\txl: 'sm:max-w-xl',\n\t'2xl': 'sm:max-w-2xl',\n\t'3xl': 'sm:max-w-3xl',\n\t'4xl': 'sm:max-w-4xl',\n\t'5xl': 'sm:max-w-5xl',\n\tfull: 'sm:max-w-[calc(100vw-2rem)]',\n};\n\nconst TONE_STYLES: Record<OverlayTone, { icon: ReactNode; classes: string }> = {\n\tneutral: {\n\t\ticon: <HelpCircle className=\"size-icon text-muted-foreground\" />,\n\t\tclasses: '',\n\t},\n\tdestructive: {\n\t\ticon: <AlertCircle className=\"size-icon text-destructive\" />,\n\t\tclasses: 'border-destructive/50',\n\t},\n\twarning: {\n\t\ticon: <AlertTriangle className=\"size-icon text-warning\" />,\n\t\tclasses: 'border-warning/50',\n\t},\n\tinfo: {\n\t\ticon: <Info className=\"size-icon text-info\" />,\n\t\tclasses: 'border-info/50',\n\t},\n\tsuccess: {\n\t\ticon: <CheckCircle className=\"size-icon text-success\" />,\n\t\tclasses: 'border-success/50',\n\t},\n};\n\nfunction ActionDialogImpl({\n\topen,\n\tonOpenChange,\n\tonClose,\n\tchildren,\n\ttitle,\n\tdescription,\n\tvisuallyHideHeader = false,\n\tclassName,\n\tcontentClassName,\n\tshowCloseButton = true,\n\tsurfaceStyle,\n\tinitialFocusRef,\n\tcloseOnEscape = true,\n\tcloseOnBackdropClick = true,\n\tstrings: customStrings,\n\tshowCancel = true,\n\tshowConfirm = true,\n\tonCancel,\n\tonConfirm,\n\tonAsyncConfirm,\n\tonError,\n\tcloseOnAsyncComplete = true,\n\tconfirmTone = 'primary',\n\tconfirmStyle = 'solid',\n\tloading = false,\n\tformId,\n\tfooter,\n\temphasis = false,\n\ttone = 'neutral',\n\tshowIcon = false,\n\talertMessage,\n\tsize = 'lg',\n\ttrigger,\n}: ActionDialogProps) {\n\tconst visibility = useOverlayVisibility({ open, onOpenChange, onClose });\n\tconst {\n\t\tstrings,\n\t\tfinalConfirmTone,\n\t\tconfirmButtonOnClick,\n\t\teffectiveLoading,\n\t\thandleCancel,\n\t} = useOverlayActions({\n\t\tcloseDialog: visibility.hide,\n\t\tonConfirm,\n\t\tonAsyncConfirm,\n\t\tonError,\n\t\tcloseOnAsyncComplete,\n\t\tconfirmTone,\n\t\tloading,\n\t\tformId,\n\t\tonCancel,\n\t\tcustomStrings,\n\t\temphasis,\n\t\ttone,\n\t});\n\n\tconst toneStyles = TONE_STYLES[tone];\n\tconst hasContent = Boolean(children || alertMessage);\n\tconst hasFooter = showCancel || showConfirm || footer;\n\n\treturn (\n\t\t<BaseDialog\n\t\t\topen={visibility.open}\n\t\t\tmodal\n\t\t\tdisablePointerDismissal={!closeOnBackdropClick}\n\t\t\tonOpenChange={(nextOpen, details) => {\n\t\t\t\tif (!nextOpen && details.reason === 'escape-key' && !closeOnEscape) {\n\t\t\t\t\tdetails.cancel();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tvisibility.setOpen(nextOpen);\n\t\t\t}}\n\t\t>\n\t\t\t{!!trigger && (isValidElement(trigger) ? (\n\t\t\t\t<DialogTrigger render={trigger} />\n\t\t\t) : (\n\t\t\t\t<DialogTrigger className=\"overlay-trigger--fallback cursor-pointer\">\n\t\t\t\t\t<Text tag=\"span\" size=\"inherit\" className=\"text-inherit\">\n\t\t\t\t\t\t{trigger}\n\t\t\t\t\t</Text>\n\t\t\t\t</DialogTrigger>\n\t\t\t))}\n\n\t\t\t<DialogContent\n\t\t\t\tshowCloseButton={false}\n\t\t\t\tstyle={surfaceStyle}\n\t\t\t\tinitialFocus={initialFocusRef}\n\t\t\t\taria-label={title ? undefined : strings.dialogLabel}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'action-dialog--component dialog--component',\n\t\t\t\t\tSIZE_CLASSES[size],\n\t\t\t\t\temphasis && toneStyles.classes,\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{!!showCloseButton && (\n\t\t\t\t<DialogClose\n\t\t\t\t\trender={(\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\ttone=\"secondary\"\n\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\tsize=\"sm\" iconOnly\n\t\t\t\t\t\t\tdata-overlay-close=\"\"\n className={cn(overlayAnatomyRecipes.close, 'z-10 p-0 text-muted-foreground hover:bg-muted hover:text-foreground')}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<X className=\"size-icon\" />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t)}\n\t\t\t\t\taria-label={strings.close}\n\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t{!!(title || description) && (\n\t\t\t\t\t<DialogHeader className={cn('dialog--header', visuallyHideHeader && 'sr-only')}>\n\t\t\t\t\t\t<Stack direction=\"horizontal\" gap=\"sm\" align=\"start\" wrap={false}>\n\t\t\t\t\t\t\t{!!showIcon && <span className=\"shrink-0 pt-space-2xs\">{toneStyles.icon}</span>}\n\t\t\t\t\t\t\t<Stack gap=\"normal\" className=\"flex-1\">\n\t\t\t\t\t\t\t\t{!!title && <DialogTitle>{title}</DialogTitle>}\n\t\t\t\t\t\t\t\t{!!description && <DialogDescription>{description}</DialogDescription>}\n\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t</DialogHeader>\n\t\t\t\t)}\n\n\t\t\t\t{!!hasContent && (\n\t\t\t\t\t<DialogBody className={cn('dialog--body', contentClassName)}>\n\t\t\t\t\t\t{!!alertMessage && (\n\t\t\t\t\t\t\t<Alert tone={tone} className=\"mb-space-md p-surface-xs\">\n\t\t\t\t\t\t\t\t<AlertDescription>{alertMessage}</AlertDescription>\n\t\t\t\t\t\t\t</Alert>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</DialogBody>\n\t\t\t\t)}\n\n\t\t\t\t{!!hasFooter && (\n\t\t\t\t\t<DialogFooter className=\"dialog--footer\">\n\t\t\t\t\t\t{footer ?? (\n\t\t\t\t\t\t\t<Stack\n\t\t\t\t\t\t\t\tdirection={{ base: 'vertical', sm: 'horizontal' }}\n\t\t\t\t\t\t\t\tgap=\"sm\"\n\t\t\t\t\t\t\t\talign={{ base: 'stretch', sm: 'center' }}\n\t\t\t\t\t\t\t\tjustify=\"end\"\n\t\t\t\t\t\t\t\tclassName=\"w-full\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{!!showCancel && (\n\t\t\t\t\t\t\t\t\t<Button type=\"button\" tone=\"secondary\" buttonStyle=\"outline\" onClick={handleCancel}>\n\t\t\t\t\t\t\t\t\t\t{strings.cancel}\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t{!!showConfirm && (\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\ttone={finalConfirmTone}\n\t\t\t\t\t\t\t\t\t\tbuttonStyle={confirmStyle}\n\t\t\t\t\t\t\t\t\t\tonClick={confirmButtonOnClick}\n\t\t\t\t\t\t\t\t\t\tloading={effectiveLoading}\n\t\t\t\t\t\t\t\t\t\tstrings={{ loading: strings.loading }}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{strings.confirm}\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</DialogFooter>\n\t\t\t\t)}\n\t\t\t</DialogContent>\n\t\t</BaseDialog>\n\t);\n}\n\nexport const ActionDialog = memo(ActionDialogImpl);\nActionDialog.displayName = 'ActionDialog';\n","import { overlayAnatomyRecipes } from '../../../lib/overlay-anatomy-recipes';\nimport {\n\tAlertCircle,\n\tAlertTriangle,\n\tCheckCircle,\n\tHelpCircle,\n\tInfo,\n\tX,\n} from 'lucide-react';\nimport { isValidElement, memo, type ReactNode } from 'react';\n\nimport { Button } from '../../base/buttons';\nimport { Alert, AlertDescription } from '../../base/feedback';\nimport {\n\tSheet,\n\tSheetBody,\n\tSheetClose,\n\tSheetContent,\n\tSheetDescription,\n\tSheetFooter,\n\tSheetHeader,\n\tSheetTitle,\n\tSheetTrigger,\n} from '../../base/sheet';\nimport { Stack } from '../../base/structure';\nimport { Text } from '../../typography';\nimport { cn } from '../../../lib/utils';\n\nimport { useOverlayActions, useOverlayVisibility } from './hooks';\nimport type { ActionDrawerProps, OverlaySize, OverlayTone } from './overlays.types';\n\nconst WIDTH_CLASSES: Record<OverlaySize, string> = {\n\txs: 'data-[side=left]:sm:max-w-xs data-[side=right]:sm:max-w-xs',\n\tsm: 'data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm',\n\tmd: 'data-[side=left]:sm:max-w-md data-[side=right]:sm:max-w-md',\n\tlg: 'data-[side=left]:sm:max-w-lg data-[side=right]:sm:max-w-lg',\n\txl: 'data-[side=left]:sm:max-w-xl data-[side=right]:sm:max-w-xl',\n\t'2xl': 'data-[side=left]:sm:max-w-2xl data-[side=right]:sm:max-w-2xl',\n\t'3xl': 'data-[side=left]:sm:max-w-3xl data-[side=right]:sm:max-w-3xl',\n\t'4xl': 'data-[side=left]:sm:max-w-4xl data-[side=right]:sm:max-w-4xl',\n\t'5xl': 'data-[side=left]:sm:max-w-5xl data-[side=right]:sm:max-w-5xl',\n\tfull: 'data-[side=left]:sm:max-w-[calc(100vw-2rem)] data-[side=right]:sm:max-w-[calc(100vw-2rem)]',\n};\n\nconst TONE_ICONS: Record<OverlayTone, ReactNode> = {\n\tneutral: <HelpCircle className=\"size-icon text-muted-foreground\" />,\n\tdestructive: <AlertCircle className=\"size-icon text-destructive\" />,\n\twarning: <AlertTriangle className=\"size-icon text-warning\" />,\n\tinfo: <Info className=\"size-icon text-info\" />,\n\tsuccess: <CheckCircle className=\"size-icon text-success\" />,\n};\n\nfunction ActionDrawerImpl({\n\topen,\n\tonOpenChange,\n\tonClose,\n\tchildren,\n\ttitle,\n\tdescription,\n\tvisuallyHideHeader = false,\n\tshowCloseButton = true,\n\tclassName,\n\tcontentClassName,\n\tinitialFocusRef,\n\tcloseOnEscape = true,\n\tcloseOnBackdropClick = true,\n\tstrings: customStrings,\n\tshowCancel = true,\n\tshowConfirm = true,\n\tonCancel,\n\tonConfirm,\n\tonAsyncConfirm,\n\tonError,\n\tcloseOnAsyncComplete = true,\n\tconfirmTone = 'primary',\n\tconfirmStyle = 'solid',\n\tloading = false,\n\tformId,\n\tfooter,\n\temphasis = false,\n\ttone = 'neutral',\n\tshowIcon = false,\n\talertMessage,\n\tdirection = 'right',\n\twidth = 'lg',\n\tshowFooter = true,\n\tmodal = true,\n\ttrigger,\n}: ActionDrawerProps) {\n\tconst visibility = useOverlayVisibility({ open, onOpenChange, onClose });\n\tconst {\n\t\tstrings,\n\t\tfinalConfirmTone,\n\t\tconfirmButtonOnClick,\n\t\teffectiveLoading,\n\t\thandleCancel,\n\t} = useOverlayActions({\n\t\tcloseDialog: visibility.hide,\n\t\tonConfirm,\n\t\tonAsyncConfirm,\n\t\tonError,\n\t\tcloseOnAsyncComplete,\n\t\tconfirmTone,\n\t\tloading,\n\t\tformId,\n\t\tonCancel,\n\t\tcustomStrings,\n\t\temphasis,\n\t\ttone,\n\t});\n\n\tconst isHorizontal = direction === 'left' || direction === 'right';\n\tconst hasContent = Boolean(children || alertMessage);\n\tconst hasFooter = showFooter && (showCancel || showConfirm || footer);\n\n\treturn (\n\t\t<Sheet\n\t\t\topen={visibility.open}\n\t\t\tmodal={modal}\n\t\t\tdisablePointerDismissal={!closeOnBackdropClick}\n\t\t\tonOpenChange={(nextOpen, details) => {\n\t\t\t\tif (!nextOpen && details.reason === 'escape-key' && !closeOnEscape) {\n\t\t\t\t\tdetails.cancel();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tvisibility.setOpen(nextOpen);\n\t\t\t}}\n\t\t>\n\t\t\t{!!trigger && (isValidElement(trigger) ? (\n\t\t\t\t<SheetTrigger render={trigger} />\n\t\t\t) : (\n\t\t\t\t<SheetTrigger className=\"overlay-trigger--fallback cursor-pointer\">\n\t\t\t\t\t<Text tag=\"span\" size=\"inherit\" className=\"text-inherit\">{trigger}</Text>\n\t\t\t\t</SheetTrigger>\n\t\t\t))}\n\n\t\t\t<SheetContent\n\t\t\t\tside={direction}\n\t\t\t\tshowCloseButton={false}\n\t\t\t\tinitialFocus={initialFocusRef}\n\t\t\t\taria-label={title ? undefined : strings.drawerLabel}\n\t\t\t\t// The vendored SheetContent renders its backdrop unconditionally,\n\t\t\t\t// so a non-modal drawer would still sit behind a full-viewport\n\t\t\t\t// scrim. This marks the panel so the token layer can drop it.\n\t\t\t\tdata-modal={modal === false ? 'false' : undefined}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'action-drawer--component drawer--component',\n\t\t\t\t\tisHorizontal && 'data-[side=left]:w-full data-[side=right]:w-full',\n\t\t\t\t\tisHorizontal && WIDTH_CLASSES[width],\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{showCloseButton && <SheetClose\n\t\t\t\t\trender={(\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\ttone=\"secondary\"\n\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\tsize=\"sm\" iconOnly\n\t\t\t\t\t\t\tdata-overlay-close=\"\"\n className={cn(overlayAnatomyRecipes.close, 'z-10 p-0 text-muted-foreground hover:bg-muted hover:text-foreground')}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<X className=\"size-icon\" />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t)}\n\t\t\t\t\taria-label={strings.close}\n\t\t\t\t/>}\n\n\t\t\t\t{!!(title || description) && (\n\t\t\t\t\t<SheetHeader className={cn('drawer--header', visuallyHideHeader && 'sr-only')}>\n\t\t\t\t\t\t<Stack direction=\"horizontal\" gap=\"sm\" align=\"start\" wrap={false}>\n\t\t\t\t\t\t\t{!!showIcon && <span className=\"shrink-0 pt-space-2xs\">{TONE_ICONS[tone]}</span>}\n\t\t\t\t\t\t\t<Stack gap=\"normal\" className=\"flex-1\">\n\t\t\t\t\t\t\t\t{!!title && <SheetTitle>{title}</SheetTitle>}\n\t\t\t\t\t\t\t\t{!!description && <SheetDescription>{description}</SheetDescription>}\n\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t</SheetHeader>\n\t\t\t\t)}\n\n\t\t\t\t{!!hasContent && (\n\t\t\t\t\t<SheetBody className={cn('drawer--body', contentClassName)}>\n\t\t\t\t\t\t{!!alertMessage && (\n\t\t\t\t\t\t\t<Alert tone={tone} className=\"mb-space-md p-surface-xs\">\n\t\t\t\t\t\t\t\t<AlertDescription>{alertMessage}</AlertDescription>\n\t\t\t\t\t\t\t</Alert>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</SheetBody>\n\t\t\t\t)}\n\n\t\t\t\t{!!hasFooter && (\n\t\t\t\t\t<SheetFooter className=\"drawer--footer\">\n\t\t\t\t\t\t{footer ?? (\n\t\t\t\t\t\t\t<Stack\n\t\t\t\t\t\t\t\tdirection={{ base: 'vertical', sm: 'horizontal' }}\n\t\t\t\t\t\t\t\tgap=\"sm\"\n\t\t\t\t\t\t\t\talign={{ base: 'stretch', sm: 'center' }}\n\t\t\t\t\t\t\t\tjustify=\"end\"\n\t\t\t\t\t\t\t\tclassName=\"w-full\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{!!showCancel && (\n\t\t\t\t\t\t\t\t\t<Button type=\"button\" tone=\"secondary\" buttonStyle=\"outline\" onClick={handleCancel}>\n\t\t\t\t\t\t\t\t\t\t{strings.cancel}\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t{!!showConfirm && (\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\ttone={finalConfirmTone}\n\t\t\t\t\t\t\t\t\t\tbuttonStyle={confirmStyle}\n\t\t\t\t\t\t\t\t\t\tonClick={confirmButtonOnClick}\n\t\t\t\t\t\t\t\t\t\tloading={effectiveLoading}\n\t\t\t\t\t\t\t\t\t\tstrings={{ loading: strings.loading }}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{strings.confirm}\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</SheetFooter>\n\t\t\t\t)}\n\t\t\t</SheetContent>\n\t\t</Sheet>\n\t);\n}\n\nexport const ActionDrawer = memo(ActionDrawerImpl);\nActionDrawer.displayName = 'ActionDrawer';\n","import { motionRecipes } from '../../lib/motion-recipes';\nimport { modalBackdropRecipe } from './overlay.recipes';\n\"use client\"\n\nimport { useThemePortalContainer, type ThemePortalContainer } from '../../lib/theme-scope';\n\nimport * as React from \"react\"\nimport { AlertDialog as AlertDialogPrimitive } from \"@base-ui/react/alert-dialog\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Button } from \"./button\"\n\nfunction AlertDialog({ ...props }: AlertDialogPrimitive.Root.Props) {\n return <AlertDialogPrimitive.Root data-slot=\"alert-dialog\" {...props} />\n}\n\nfunction AlertDialogTrigger({ ...props }: AlertDialogPrimitive.Trigger.Props) {\n return (\n <AlertDialogPrimitive.Trigger data-slot=\"alert-dialog-trigger\" {...props} />\n )\n}\n\nfunction AlertDialogPortal({ container, ...props }: AlertDialogPrimitive.Portal.Props) {\n const resolvedContainer = useThemePortalContainer(container)\n return (\n <AlertDialogPrimitive.Portal container={resolvedContainer} data-slot=\"alert-dialog-portal\" {...props} />\n )\n}\n\nfunction AlertDialogOverlay({\n className,\n ...props\n}: AlertDialogPrimitive.Backdrop.Props) {\n return (\n <AlertDialogPrimitive.Backdrop\n data-slot=\"alert-dialog-overlay\"\n className={cn(modalBackdropRecipe, motionRecipes.backdrop,\n \"isolate\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogContent({\n className,\n container,\n size = \"default\",\n ...props\n}: AlertDialogPrimitive.Popup.Props & {\n size?: \"default\" | \"sm\"\n} & { container?: ThemePortalContainer }) {\n const resolvedContainer = useThemePortalContainer(container)\n return (\n <AlertDialogPortal container={resolvedContainer}>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Popup\n data-slot=\"alert-dialog-content\"\n data-size={size}\n className={cn(\n motionRecipes.dialog,\n \"group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-6 rounded-4xl bg-popover p-6 text-popover-foreground shadow-xl ring-1 ring-foreground/5 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-md dark:ring-foreground/10\",\n className\n )}\n {...props}\n />\n </AlertDialogPortal>\n )\n}\n\nfunction AlertDialogHeader({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-header\"\n className={cn(\n \"grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-6 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogFooter({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-2 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogMedia({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-media\"\n className={cn(\n \"mb-space-md inline-flex size-16 items-center justify-center rounded-full bg-muted sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-8\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\n return (\n <AlertDialogPrimitive.Title\n data-slot=\"alert-dialog-title\"\n className={cn(\n \"text-lg font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\n return (\n <AlertDialogPrimitive.Description\n data-slot=\"alert-dialog-description\"\n className={cn(\n \"text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogAction({\n className,\n ...props\n}: React.ComponentProps<typeof Button>) {\n return (\n <Button\n data-slot=\"alert-dialog-action\"\n className={cn(className)}\n {...props}\n />\n )\n}\n\nfunction AlertDialogCancel({\n className,\n variant = \"outline\",\n size = \"default\",\n ...props\n}: AlertDialogPrimitive.Close.Props &\n Pick<React.ComponentProps<typeof Button>, \"variant\" | \"size\">) {\n return (\n <AlertDialogPrimitive.Close\n data-slot=\"alert-dialog-cancel\"\n className={cn(className)}\n render={<Button variant={variant} size={size} />}\n {...props}\n />\n )\n}\n\nexport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogMedia,\n AlertDialogOverlay,\n AlertDialogPortal,\n AlertDialogTitle,\n AlertDialogTrigger,\n}\n","import { modalRegionRecipes } from '../../../lib/surface-recipes';\nimport type { TextGap } from '../structure';\n/**\n * AlertDialog — structured base wrapper around the shadcn alert-dialog\n * primitive. Higher-level confirmation recipes belong in features/overlays.\n */\nimport * as React from 'react';\n\nimport {\n\tAlertDialog as AlertDialogPrimitive,\n\tAlertDialogAction as AlertDialogActionPrimitive,\n\tAlertDialogCancel as AlertDialogCancelPrimitive,\n\tAlertDialogContent as AlertDialogContentPrimitive,\n\tAlertDialogDescription as AlertDialogDescriptionPrimitive,\n\tAlertDialogFooter as AlertDialogFooterPrimitive,\n\tAlertDialogHeader as AlertDialogHeaderPrimitive,\n\tAlertDialogMedia as AlertDialogMediaPrimitive,\n\tAlertDialogOverlay,\n\tAlertDialogPortal,\n\tAlertDialogTitle as AlertDialogTitlePrimitive,\n\tAlertDialogTrigger as AlertDialogTriggerPrimitive,\n} from '../../ui/alert-dialog';\nimport { Text } from '../../typography';\nimport { cn } from '../../../lib/utils';\n\nfunction isSimpleText(value: React.ReactNode): value is string | number | bigint {\n\treturn typeof value === 'string' || typeof value === 'number' || typeof value === 'bigint';\n}\n\nexport const AlertDialog = AlertDialogPrimitive;\n\nexport const AlertDialogTrigger = React.forwardRef<\n\tReact.ElementRef<typeof AlertDialogTriggerPrimitive>,\n\tReact.ComponentPropsWithoutRef<typeof AlertDialogTriggerPrimitive>\n>(function AlertDialogTrigger({ className, ...props }, ref) {\n\treturn (\n\t\t<AlertDialogTriggerPrimitive\n\t\t\tref={ref}\n\t\t\tclassName={cn('alert-dialog-trigger--component', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nAlertDialogTrigger.displayName = 'AlertDialogTrigger';\n\nexport const AlertDialogContent = React.forwardRef<\n\tReact.ElementRef<typeof AlertDialogContentPrimitive>,\n\tReact.ComponentPropsWithoutRef<typeof AlertDialogContentPrimitive>\n>(function AlertDialogContent({ className, ...props }, ref) {\n\treturn (\n\t\t<AlertDialogContentPrimitive\n\t\t\tref={ref}\n\t\t\tclassName={cn(\n\t\t\t\t'alert-dialog-content--component max-h-[min(90vh,48rem)] gap-0 overflow-hidden rounded-radius bg-background p-0 text-foreground ring-border/70 sm:max-w-md',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nAlertDialogContent.displayName = 'AlertDialogContent';\n\nexport const AlertDialogHeader = React.forwardRef<\n\tHTMLDivElement,\n\tReact.ComponentPropsWithoutRef<typeof AlertDialogHeaderPrimitive> & { textGap?: TextGap }\n>(function AlertDialogHeader({ className, textGap = 'normal', ...props }, ref) {\n\treturn (\n\t\t<AlertDialogHeaderPrimitive\n\t\t\tref={ref}\n\t\t\tclassName={cn('alert-dialog-header--component p-surface text-center', textGap === 'dense' ? 'gap-dense' : 'gap-normal', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nAlertDialogHeader.displayName = 'AlertDialogHeader';\n\nexport const AlertDialogBody = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n\tfunction AlertDialogBody({ className, ...props }, ref) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tref={ref}\n\t\t\t\tdata-slot=\"alert-dialog-body\"\n\t\t\t\tclassName={cn('alert-dialog-body--component min-h-0 flex-1 overflow-y-auto p-surface', className)}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t);\n\t},\n);\n\nAlertDialogBody.displayName = 'AlertDialogBody';\n\nexport const AlertDialogFooter = React.forwardRef<\n\tHTMLDivElement,\n\tReact.ComponentPropsWithoutRef<typeof AlertDialogFooterPrimitive>\n>(function AlertDialogFooter({ className, ...props }, ref) {\n\treturn (\n\t\t<AlertDialogFooterPrimitive\n\t\t\tref={ref}\n\t\t\tclassName={cn(\n\t\t\t\t'alert-dialog-footer--component', modalRegionRecipes.footer,\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nAlertDialogFooter.displayName = 'AlertDialogFooter';\n\nexport const AlertDialogTitle = React.forwardRef<\n\tReact.ElementRef<typeof AlertDialogTitlePrimitive>,\n\tReact.ComponentPropsWithoutRef<typeof AlertDialogTitlePrimitive>\n>(function AlertDialogTitle({ children, className, ...props }, ref) {\n\treturn (\n\t\t<AlertDialogTitlePrimitive\n\t\t\tref={ref}\n\t\t\tclassName={cn('alert-dialog-title--component', className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{isSimpleText(children) ? (\n\t\t\t\t<Text tag=\"span\" size=\"base\" weight=\"semibold\" lineHeight=\"snug\">\n\t\t\t\t\t{children}\n\t\t\t\t</Text>\n\t\t\t) : children}\n\t\t</AlertDialogTitlePrimitive>\n\t);\n});\n\nAlertDialogTitle.displayName = 'AlertDialogTitle';\n\nexport const AlertDialogDescription = React.forwardRef<\n\tReact.ElementRef<typeof AlertDialogDescriptionPrimitive>,\n\tReact.ComponentPropsWithoutRef<typeof AlertDialogDescriptionPrimitive>\n>(function AlertDialogDescription({ children, className, ...props }, ref) {\n\treturn (\n\t\t<AlertDialogDescriptionPrimitive\n\t\t\tref={ref}\n\t\t\tclassName={cn('alert-dialog-description--component', className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{isSimpleText(children) ? (\n\t\t\t\t<Text tag=\"span\" type=\"secondary\" lineHeight=\"relaxed\">\n\t\t\t\t\t{children}\n\t\t\t\t</Text>\n\t\t\t) : children}\n\t\t</AlertDialogDescriptionPrimitive>\n\t);\n});\n\nAlertDialogDescription.displayName = 'AlertDialogDescription';\n\nexport const AlertDialogMedia = React.forwardRef<\n\tHTMLDivElement,\n\tReact.ComponentPropsWithoutRef<typeof AlertDialogMediaPrimitive>\n>(function AlertDialogMedia({ className, ...props }, ref) {\n\treturn (\n\t\t<AlertDialogMediaPrimitive\n\t\t\tref={ref}\n\t\t\tclassName={cn('alert-dialog-media--component', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nAlertDialogMedia.displayName = 'AlertDialogMedia';\n\nexport const AlertDialogAction = React.forwardRef<\n\tReact.ElementRef<typeof AlertDialogActionPrimitive>,\n\tReact.ComponentPropsWithoutRef<typeof AlertDialogActionPrimitive>\n>(function AlertDialogAction({ className, ...props }, ref) {\n\treturn (\n\t\t<AlertDialogActionPrimitive\n\t\t\tref={ref}\n\t\t\tclassName={cn('alert-dialog-action--component', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nAlertDialogAction.displayName = 'AlertDialogAction';\n\nexport const AlertDialogCancel = React.forwardRef<\n\tReact.ElementRef<typeof AlertDialogCancelPrimitive>,\n\tReact.ComponentPropsWithoutRef<typeof AlertDialogCancelPrimitive>\n>(function AlertDialogCancel({ className, ...props }, ref) {\n\treturn (\n\t\t<AlertDialogCancelPrimitive\n\t\t\tref={ref}\n\t\t\tclassName={cn('alert-dialog-cancel--component', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nAlertDialogCancel.displayName = 'AlertDialogCancel';\n\nexport { AlertDialogOverlay, AlertDialogPortal };\n","import { AlertCircle, AlertTriangle, CheckCircle, HelpCircle, Info } from 'lucide-react';\nimport { isValidElement, memo, useMemo, type ReactNode } from 'react';\n\nimport { Button } from '../../base/buttons';\nimport { Alert, AlertDescription } from '../../base/feedback';\nimport {\n\tAlertDialog as BaseAlertDialog,\n\tAlertDialogBody,\n\tAlertDialogContent,\n\tAlertDialogDescription,\n\tAlertDialogFooter,\n\tAlertDialogHeader,\n\tAlertDialogTitle,\n\tAlertDialogTrigger,\n} from '../../base/display/alert-dialog';\nimport { Stack } from '../../base/structure';\nimport { Text } from '../../typography';\nimport { useStrings } from '../../../lib/strings';\nimport { cn } from '../../../lib/utils';\n\nimport { useOverlayActions, useOverlayVisibility } from './hooks';\nimport { defaultAlertDialogStrings } from './overlays.strings';\nimport type { ConfirmDialogProps, OverlayTone } from './overlays.types';\n\nconst TONE_STYLES: Record<OverlayTone, { icon: ReactNode; iconColor: string; background: string }> = {\n\tneutral: {\n\t\ticon: <HelpCircle className=\"size-icon-lg\" />,\n\t\ticonColor: 'text-muted-foreground',\n\t\tbackground: 'bg-muted',\n\t},\n\tdestructive: {\n\t\ticon: <AlertCircle className=\"size-icon-lg\" />,\n\t\ticonColor: 'text-destructive',\n\t\tbackground: 'bg-destructive/10',\n\t},\n\twarning: {\n\t\ticon: <AlertTriangle className=\"size-icon-lg\" />,\n\t\ticonColor: 'text-warning',\n\t\tbackground: 'bg-warning/15',\n\t},\n\tinfo: {\n\t\ticon: <Info className=\"size-icon-lg\" />,\n\t\ticonColor: 'text-info',\n\t\tbackground: 'bg-info/15',\n\t},\n\tsuccess: {\n\t\ticon: <CheckCircle className=\"size-icon-lg\" />,\n\t\ticonColor: 'text-success',\n\t\tbackground: 'bg-success/15',\n\t},\n};\n\nfunction ConfirmDialogImpl({\n\topen,\n\tonOpenChange,\n\tonClose,\n\tchildren,\n\ttitle,\n\tdescription,\n\tvisuallyHideHeader = false,\n\tclassName,\n\tcontentClassName,\n\tinitialFocusRef,\n\tcloseOnEscape = true,\n\tstrings: customStrings,\n\tshowCancel = true,\n\tshowConfirm = true,\n\tonCancel,\n\tonConfirm,\n\tonAsyncConfirm,\n\tonError,\n\tcloseOnAsyncComplete = true,\n\tconfirmTone,\n\tconfirmStyle = 'solid',\n\tloading = false,\n\tformId,\n\tfooter,\n\ttone = 'neutral',\n\tshowIcon = true,\n\talertMessage,\n\ttrigger,\n\tdestructive = false,\n}: ConfirmDialogProps) {\n\tconst visibility = useOverlayVisibility({ open, onOpenChange, onClose });\n\tconst mergedStrings = useStrings(defaultAlertDialogStrings, customStrings);\n\tconst resolvedConfirmTone = useMemo(() => {\n\t\tif (destructive) return 'destructive' as const;\n\t\tif (confirmTone) return confirmTone;\n\t\tconst toneMap = {\n\t\t\tneutral: 'primary',\n\t\t\tdestructive: 'destructive',\n\t\t\twarning: 'warning',\n\t\t\tinfo: 'primary',\n\t\t\tsuccess: 'success',\n\t\t} as const;\n\t\treturn toneMap[tone];\n\t}, [destructive, confirmTone, tone]);\n\n\tconst { strings, confirmButtonOnClick, effectiveLoading, handleCancel } =\n\t\tuseOverlayActions({\n\t\t\tcloseDialog: visibility.hide,\n\t\t\tonConfirm,\n\t\t\tonAsyncConfirm,\n\t\t\tonError,\n\t\t\tcloseOnAsyncComplete,\n\t\t\tconfirmTone: resolvedConfirmTone,\n\t\t\tloading,\n\t\t\tformId,\n\t\t\tonCancel,\n\t\t\tcustomStrings: mergedStrings,\n\t\t});\n\n\t/*\n\t * `destructive` is documented as the destructive *presentation*, but it only\n\t * ever reached the confirm button — the icon and the inline alert still came\n\t * from `tone`, which defaults to neutral. The result was a red confirm button\n\t * beside a grey question mark: two signals disagreeing about how serious the\n\t * action is. An explicit `tone` still wins, so this only fills the gap.\n\t */\n\tconst resolvedTone = destructive && tone === 'neutral' ? ('destructive' as const) : tone;\n\tconst toneStyles = TONE_STYLES[resolvedTone];\n\n\treturn (\n\t\t<BaseAlertDialog\n\t\t\topen={visibility.open}\n\t\t\tonOpenChange={(nextOpen, details) => {\n\t\t\t\tif (!nextOpen && details.reason === 'escape-key' && !closeOnEscape) {\n\t\t\t\t\tdetails.cancel();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tvisibility.setOpen(nextOpen);\n\t\t\t}}\n\t\t>\n\t\t\t{!!trigger && (isValidElement(trigger) ? (\n\t\t\t\t<AlertDialogTrigger render={trigger} />\n\t\t\t) : (\n\t\t\t\t<AlertDialogTrigger className=\"overlay-trigger--fallback cursor-pointer\">\n\t\t\t\t\t<Text tag=\"span\" size=\"inherit\" className=\"text-inherit\">{trigger}</Text>\n\t\t\t\t</AlertDialogTrigger>\n\t\t\t))}\n\n\t\t\t<AlertDialogContent\n\t\t\t\tinitialFocus={initialFocusRef}\n\t\t\t\taria-label={title ? undefined : strings.alertDialogLabel}\n\t\t\t\tclassName={cn('confirm-dialog--component alert-dialog--component', className)}\n\t\t\t>\n\t\t\t\t<AlertDialogBody className=\"alert-dialog--body\">\n\t\t\t\t\t{!!showIcon && !visuallyHideHeader && (\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t'mx-auto mb-space-md flex size-avatar-lg items-center justify-center rounded-full',\n\t\t\t\t\t\t\t\ttoneStyles.background,\n\t\t\t\t\t\t\t\ttoneStyles.iconColor,\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{toneStyles.icon}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{!!(title || description) && (\n\t\t\t\t\t\t<AlertDialogHeader className={cn('p-0', visuallyHideHeader && 'sr-only')}>\n\t\t\t\t\t\t\t{!!title && <AlertDialogTitle>{title}</AlertDialogTitle>}\n\t\t\t\t\t\t\t{!!description && <AlertDialogDescription>{description}</AlertDialogDescription>}\n\t\t\t\t\t\t</AlertDialogHeader>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{!!alertMessage && (\n\t\t\t\t\t\t<Alert tone={resolvedTone} className=\"mt-space-md p-surface-xs text-left\">\n\t\t\t\t\t\t\t<AlertDescription>{alertMessage}</AlertDescription>\n\t\t\t\t\t\t</Alert>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{!!children && <div className={cn('mt-space-md', contentClassName)}>{children}</div>}\n\t\t\t\t</AlertDialogBody>\n\n\t\t\t\t{!!(showCancel || showConfirm || footer) && (\n\t\t\t\t\t<AlertDialogFooter className=\"alert-dialog--footer\">\n\t\t\t\t\t\t{footer ?? (\n\t\t\t\t\t\t\t<Stack\n\t\t\t\t\t\t\t\tdirection={{ base: 'vertical', sm: 'horizontal' }}\n\t\t\t\t\t\t\t\tgap=\"sm\"\n\t\t\t\t\t\t\t\talign={{ base: 'stretch', sm: 'center' }}\n\t\t\t\t\t\t\t\tjustify=\"end\"\n\t\t\t\t\t\t\t\tclassName=\"w-full\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{!!showCancel && (\n\t\t\t\t\t\t\t\t\t<Button type=\"button\" tone=\"secondary\" buttonStyle=\"outline\" onClick={handleCancel}>\n\t\t\t\t\t\t\t\t\t\t{strings.cancel}\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t{!!showConfirm && (\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\ttone={resolvedConfirmTone}\n\t\t\t\t\t\t\t\t\t\tbuttonStyle={confirmStyle}\n\t\t\t\t\t\t\t\t\t\tonClick={confirmButtonOnClick}\n\t\t\t\t\t\t\t\t\t\tloading={effectiveLoading}\n\t\t\t\t\t\t\t\t\t\tstrings={{ loading: strings.loading }}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{strings.confirm}\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</AlertDialogFooter>\n\t\t\t\t)}\n\t\t\t</AlertDialogContent>\n\t\t</BaseAlertDialog>\n\t);\n}\n\nexport const ConfirmDialog = memo(ConfirmDialogImpl);\nConfirmDialog.displayName = 'ConfirmDialog';\n"],"mappings":"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"}
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
import { useStrings as e } from "./lib/strings.js";
|
|
3
3
|
import { t } from "./utils-C2EKeIw3.js";
|
|
4
4
|
import { a as n, n as r } from "./buttons-Co6GavvM.js";
|
|
5
|
-
import { t as i } from "./structure-
|
|
5
|
+
import { t as i } from "./structure-MvKVq-oL.js";
|
|
6
6
|
import { n as a, t as o } from "./action-menu-Cx3SdfbN.js";
|
|
7
7
|
import { t as s } from "./separator-Gk_WXH-l.js";
|
|
8
|
-
import { t as c } from "./page-header-
|
|
9
|
-
import { d as l } from "./hooks-
|
|
10
|
-
import { i as u } from "./containers-
|
|
8
|
+
import { t as c } from "./page-header-DQRa0jug.js";
|
|
9
|
+
import { d as l } from "./hooks-CM1Vp9Pe.js";
|
|
10
|
+
import { i as u } from "./containers-6s-ucRQQ.js";
|
|
11
11
|
import { forwardRef as d, useEffect as f, useMemo as p, useState as m } from "react";
|
|
12
12
|
import { Fragment as h, jsx as g, jsxs as _ } from "react/jsx-runtime";
|
|
13
13
|
import { ArrowLeft as v, MoreHorizontal as y } from "lucide-react";
|
|
@@ -199,4 +199,4 @@ function E({ actions: n, display: r = "dropdown", size: i = "sm", breakpoint: s
|
|
|
199
199
|
//#endregion
|
|
200
200
|
export { b as i, S as n, x as r, E as t };
|
|
201
201
|
|
|
202
|
-
//# sourceMappingURL=page-
|
|
202
|
+
//# sourceMappingURL=page-BV6ioQg3.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page-BMBGjJY8.js","names":["_Fragment","buttonVariants","Button","Stack","ActionMenu","ActionButtons","Separator","PageHeading","useLayoutLinkRenderer","Container","Fragment$1","PageHeader","TitleIcon","resolvedRenderLink","defaultBack","backHref","onBack","backLabel","cn","ArrowLeft","titleIconNode","icon","iconClassName","titleIconClassName","titleIconHref","onTitleIconClick","titleIconLabel","slots","titleBadges","actions","className","contentClassName","titleClassName","descriptionClassName","actionsClassName","Page","forwardRef","containerProps","bodyClassName","bodyProps","slotProps","header","renderLink","children","defaultPageActionsStrings","PAGE_ACTIONS_MENU_CLASS","DEFAULT_MAX_INLINE_ACTIONS","toActionMenuAction","context","contextBase","disabled","action","index","renderAction","PageActions","stringsProp","strings","useStrings","filtered","useMemo","isNarrow","setIsNarrow","useState","useEffect","display","check","breakpoint","inlineContextBase","renderActionLink","props","inlineClass","inlineClassName","menuContentClass","menuClassName","dropdownActions","entry","MoreHorizontal","inlineLimit","maxInlineActions","inlineCandidates","inline","menu","inlineActions","menuActions"],"sources":["../src/components/layout/page/partials/page-header.tsx","../src/components/layout/page/page.tsx","../src/components/layout/page/page.types.ts","../src/components/layout/page/partials/page-actions.tsx"],"sourcesContent":["/**\n * PageHeader — page title, back control, title badges, and actions.\n *\n * Navigation goes through `renderLink`; consumer apps wire framework links at\n * the boundary. Slots let consumers replace any structural region without\n * forking the page wrapper.\n */\nimport { ArrowLeft } from 'lucide-react';\n\nimport { Button } from '../../../base/buttons';\nimport { Separator } from '../../../base/display/separator';\nimport { PageHeading } from '../../../base/navigation/page-header';\nimport { buttonVariants } from '../../../base/buttons/button.variants';\nimport { cn } from '../../../../lib/utils';\n\nimport { useLayoutLinkRenderer } from '../../hooks';\nimport type { PageHeaderProps } from '../page.types';\n\nexport function PageHeader({\n\ttitle,\n\tdescription,\n\ttextGap,\n\theadingTag = 'h3',\n\ttitleIcon: TitleIcon,\n\ttitleIconHref,\n\tonTitleIconClick,\n\ttitleIconLabel = 'Open title link',\n\tbackHref,\n\tonBack,\n\tbackLabel = 'Back',\n\ttitleBadges = [],\n\tactions,\n\tslots,\n\trenderLink,\n\tclassName,\n\tcontentClassName,\n\tactionsClassName,\n\ttitleClassName,\n\ttitleIconClassName,\n\tdescriptionClassName,\n}: PageHeaderProps) {\n\tconst resolvedRenderLink = useLayoutLinkRenderer({ renderLink });\n\tconst hasBack = !!backHref || !!onBack;\n\n\tconst defaultBack = hasBack ? (\n\t\t<div className=\"flex items-center gap-space-sm shrink-0\">\n\t\t\t{backHref && !onBack ? (\n\t\t\t\tresolvedRenderLink({\n\t\t\t\t\thref: backHref,\n\t\t\t\t\t'aria-label': backLabel,\n\t\t\t\t\tclassName: cn('page-header--back-link', buttonVariants({tone:'secondary',buttonStyle:'ghost',size:'sm',iconOnly:true})),\n\t\t\t\t\tchildren: (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<ArrowLeft className=\"size-icon rtl:rotate-180\" aria-hidden=\"true\" />\n\t\t\t\t\t\t</>\n\t\t\t\t\t),\n\t\t\t\t})\n\t\t\t) : (\n\t\t\t\t<Button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\ttone=\"secondary\"\n\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\tsize=\"sm\" iconOnly\n\t\t\t\t\tclassName=\"page-header--back-button\"\n\t\t\t\t\tonClick={onBack}\n\t\t\t\t\taria-label={backLabel}\n\t\t\t\t>\n\t\t\t\t\t<ArrowLeft className=\"size-icon rtl:rotate-180\" aria-hidden=\"true\" />\n\t\t\t\t</Button>\n\t\t\t)}\n\t\t\t<Separator orientation=\"vertical\" className=\"h-action-sm\" />\n\t\t</div>\n\t) : null;\n\tconst titleIconNode = (() => {\n\t\tif (!TitleIcon) return null;\n\n\t\tconst icon = <TitleIcon className=\"size-icon\" aria-hidden=\"true\" />;\n\t\tconst iconClassName = cn(\n\t\t\t'page-header--title-icon flex size-icon shrink-0 items-center justify-center text-muted-foreground',\n\t\t\ttitleIconClassName,\n\t\t);\n\n\t\tif (titleIconHref && !onTitleIconClick) {\n\t\t\treturn resolvedRenderLink({\n\t\t\t\thref: titleIconHref,\n\t\t\t\t'aria-label': titleIconLabel,\n\t\t\t\tclassName: cn(\n\t\t\t\t\t'page-header--title-icon-link',\n\t\t\t\t\tbuttonVariants({tone:'secondary',buttonStyle:'ghost',size:'sm',iconOnly:true}),\n\t\t\t\t\ttitleIconClassName,\n\t\t\t\t),\n\t\t\t\tchildren: (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{icon}\n\t\t\t\t\t</>\n\t\t\t\t),\n\t\t\t});\n\t\t}\n\n\t\tif (onTitleIconClick) {\n\t\t\treturn (\n\t\t\t\t<Button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\ttone=\"secondary\"\n\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\tsize=\"sm\" iconOnly\n\t\t\t\t\tclassName={cn('page-header--title-icon-button', titleIconClassName)}\n\t\t\t\t\tonClick={onTitleIconClick}\n\t\t\t\t\taria-label={titleIconLabel}\n\t\t\t\t>\n\t\t\t\t\t{icon}\n\t\t\t\t</Button>\n\t\t\t);\n\t\t}\n\n\t\treturn (\n\t\t\t<span aria-hidden=\"true\" className={iconClassName}>\n\t\t\t\t{icon}\n\t\t\t</span>\n\t\t);\n\t})();\n\n\treturn (\n\t\t<PageHeading\n\t\t\ttitle={title}\n\t\t\tdescription={description}\n\t\t\ttextGap={textGap}\n\t\t\theadingTag={headingTag}\n\t\t\tleading={slots?.back ?? defaultBack}\n\t\t\tbeforeTitle={slots?.beforeTitle}\n\t\t\ttitlePrefix={titleIconNode}\n\t\t\tbadges={titleBadges}\n\t\t\tactions={slots?.actions ?? actions}\n\t\t\tafterDescription={slots?.afterDescription}\n\t\t\twithSeparator={false}\n\t\t\tclassName={cn('layout-page-header--component', className)}\n\t\t\tcontentClassName={cn('max-w-none', contentClassName)}\n\t\t\ttitleClassName={cn('text-base', titleClassName)}\n\t\t\ttitleRowClassName=\"gap-space-md\"\n\t\t\tdescriptionClassName={cn('text-sm', descriptionClassName)}\n\t\t\tactionsClassName={cn('shrink-0 self-end sm:self-auto', actionsClassName)}\n\t\t/>\n\t);\n}\n","import { Stack } from '../../base/structure';\nimport { Container } from '../containers';\nimport { cn } from '../../../lib/utils';\nimport { forwardRef } from 'react';\n\nimport type { PageProps } from './page.types';\nimport { PageHeader } from './partials/page-header';\n\n/** Page — non-scrolling Container, PageHeader, and body-rhythm composition. */\nexport const Page = forwardRef<HTMLDivElement, PageProps>(function Page({\n\t\theader,\n\t\tchildren,\n\t\tslotProps,\n\t\trenderLink,\n\t\tmaxWidth = 'lg',\n\t\tgutter,\n\t\tclassName,\n\t\trender,\n\t\t...containerProps\n\t}, ref) {\n\tconst { className: bodyClassName, ...bodyProps } = slotProps?.body ?? {};\n\n\treturn (\n\t\t<Container\n\t\t\t{...containerProps}\n\t\t\tref={ref}\n\t\t\trender={render}\n\t\t\tmaxWidth={maxWidth}\n\t\t\tgutter={gutter}\n\t\t\tclassName={className}\n\t\t>\n\t\t\t<Stack gap=\"2xl\" className=\"page--component\">\n\t\t\t\t{header ? (\n\t\t\t\t\t<PageHeader\n\t\t\t\t\t\t{...header}\n\t\t\t\t\t\trenderLink={header.renderLink ?? renderLink}\n\t\t\t\t\t/>\n\t\t\t\t) : null}\n\t\t\t\t{children !== undefined && children !== null ? (\n\t\t\t\t\t<div\n\t\t\t\t\t\t{...bodyProps}\n\t\t\t\t\t\tdata-slot=\"page-body\"\n\t\t\t\t\t\tclassName={cn('page--body relative block min-w-0 w-full', bodyClassName)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</div>\n\t\t\t\t) : null}\n\t\t\t</Stack>\n\t\t</Container>\n\t);\n});\n\nPage.displayName = 'Page';\n","/**\n * Page-level types for `Page`, `PageHeader`, `PageActions`, and exported\n * partials. All navigation is framework-neutral via `renderLink`.\n */\nimport type { ComponentType, JSX, Key, ReactNode } from 'react';\n\nimport type {\n\tLayoutLinkRenderer,\n\tLayoutNavigationAdapter,\n\tLayoutSlotAttributes,\n} from '../layout.types';\nimport type { TextGap } from '../../base/structure';\nimport type { ButtonSize } from '../../base/buttons';\nimport type { HeadingTag } from '../../typography';\nimport type { ContainerMaxWidth, ContainerProps } from '../containers/containers.types';\nimport type { StringsProp } from '../../../lib/strings';\nimport type { BadgeTone } from '../../base/badge';\nimport type { ActionPresentation } from '../../../lib/action-presentation';\n\nexport interface PageTitleBadge {\n\t/** Display label. */\n\tlabel: ReactNode;\n\t/** Semantic color intent. */\n\ttone?: BadgeTone;\n\tkey?: Key;\n}\n\nexport interface PageHeaderSlots {\n\t/** Replaces the leading back control entirely. */\n\tback?: ReactNode;\n\t/** Additional content before the title line. */\n\tbeforeTitle?: ReactNode;\n\t/** Additional content after the description. */\n\tafterDescription?: ReactNode;\n\t/** Replaces the trailing actions region. */\n\tactions?: ReactNode;\n}\n\nexport interface PageHeaderProps extends LayoutNavigationAdapter {\n\t/** Surface title. */\n\ttitle: ReactNode;\n\t/** Supporting copy under the title. */\n\tdescription?: ReactNode;\n\t/** Shared title/description rhythm. Defaults to normal. */\n\ttextGap?: TextGap;\n\t/** Semantic heading level for the title. Defaults to `h3` for nested app pages. */\n\theadingTag?: HeadingTag;\n\t/** Optional decorative icon rendered before the title. Pass a Lucide icon component. */\n\ttitleIcon?: ComponentType<{ className?: string }>;\n\t/** Optional link target for the title icon. Uses the same framework-neutral renderer as `backHref`. */\n\ttitleIconHref?: string;\n\t/** Optional click handler for the title icon when it should behave like an action. */\n\tonTitleIconClick?: () => void;\n\t/** Accessible label for linked/clickable title icons. */\n\ttitleIconLabel?: string;\n\t/** Destination for the back control. */\n\tbackHref?: string;\n\tonBack?: () => void;\n\t/** Copy for the back control. */\n\tbackLabel?: string;\n\t/** Chips shown beside the page title. */\n\ttitleBadges?: PageTitleBadge[];\n\t/** Controls offered on the surface. */\n\tactions?: ReactNode;\n\t/** Replaces individual regions of the shell. */\n\tslots?: PageHeaderSlots;\n\tclassName?: string;\n\t/** Merged onto the content region. */\n\tcontentClassName?: string;\n\tactionsClassName?: string;\n\ttitleClassName?: string;\n\ttitleIconClassName?: string;\n\tdescriptionClassName?: string;\n}\n\nexport interface PageActionContext {\n\tindex: number;\n\tisInline: boolean;\n\trenderLink: LayoutLinkRenderer;\n}\n\nexport interface PageAction extends ActionPresentation {\n\tid?: string;\n\t/** Display label. */\n\tlabel: ReactNode;\n\tonClick?: () => void;\n\t/** Destination for the entry, when it navigates. */\n\thref?: string;\n\ttarget?: string;\n\trel?: string;\n\texternal?: boolean;\n\t/** Shows the pending indicator. */\n\tloading?: boolean;\n\t/** Leading glyph. */\n\ticon?: ComponentType<{ className?: string }>;\n\t/** Optional inline button size. Defaults to the PageActions `size` prop. */\n\tsize?: ButtonSize;\n\tgroup?: string;\n\tplacement?: 'auto' | 'inline' | 'menu';\n\t/** Escape hatch for one action only. Prefer `renderAction` for consistent customization. */\n\telement?: ReactNode | JSX.Element;\n}\n\nexport type PageActionsDisplay = 'flat' | 'dropdown' | 'auto';\n\nexport interface PageActionsStrings {\n\tmenuLabel: string;\n}\n\nexport const defaultPageActionsStrings: PageActionsStrings = {\n\tmenuLabel: 'Page actions',\n};\n\nexport interface PageActionsProps extends LayoutNavigationAdapter {\n\t/** Controls offered on the surface. */\n\tactions?: PageAction[];\n\t/** How actions are presented — inline, menu, or responsive. */\n\tdisplay?: PageActionsDisplay;\n\t/** Inline action button scale. Defaults to `sm`; set `md` for normal page-header buttons. */\n\tsize?: ButtonSize;\n\t/** Width at which responsive actions collapse into a menu. */\n\tbreakpoint?: number;\n\t/**\n\t * Maximum non-menu actions rendered inline before overflow moves them into\n\t * the dropdown menu. Defaults to 4 for admin header density.\n\t */\n\tmaxInlineActions?: number;\n\t/** Overrides this surface's own copy. */\n\tstrings?: StringsProp<PageActionsStrings>;\n\tclassName?: string;\n\t/** Merged onto the inline action row. */\n\tinlineClassName?: string;\n\t/** Merged onto the action menu. */\n\tmenuClassName?: string;\n\t/** Replaces the default action rendering. */\n\trenderAction?: (action: PageAction, context: PageActionContext) => ReactNode;\n}\n\nexport interface PageSlotProps {\n\t/** Native attributes merged onto the page body region. */\n\tbody?: LayoutSlotAttributes<HTMLDivElement>;\n}\n\nexport interface PageProps\n\textends LayoutNavigationAdapter, Omit<ContainerProps, 'children'> {\n\t/** Header region of the shell. */\n\theader?: PageHeaderProps;\n\t/** Maximum content width. Defaults to `lg` for readable page composition. */\n\tmaxWidth?: ContainerMaxWidth;\n\tchildren?: ReactNode;\n\t/** Native attributes for stable page regions. */\n\tslotProps?: PageSlotProps;\n}\n","/**\n * PageActions — composable action ribbon for page headers.\n *\n * Links go through `renderLink`, never router imports or DOM click hacks.\n * Use `renderAction` for app-specific rendering while keeping grouping,\n * filtering, breakpoint, and menu placement logic centralized.\n */\nimport { useEffect, useMemo, useState, type ReactElement } from 'react';\nimport { MoreHorizontal } from 'lucide-react';\n\nimport {\n\tActionButtons,\n\tActionMenu,\n\ttype ActionMenuAction,\n\ttype ActionMenuLinkRenderProps,\n} from '../../../base/action-menu';\nimport { useStrings } from '../../../../lib/strings';\nimport { cn } from '../../../../lib/utils';\n\nimport { useLayoutLinkRenderer } from '../../hooks';\nimport {\n\tdefaultPageActionsStrings,\n\ttype PageAction,\n\ttype PageActionContext,\n\ttype PageActionsProps,\n} from '../page.types';\n\nconst PAGE_ACTIONS_MENU_CLASS = 'max-h-[80vh] overflow-y-auto overscroll-contain';\nconst DEFAULT_MAX_INLINE_ACTIONS = 4;\n\ntype PageActionEntry = {\n\t/** The action this surface performs. */\n\taction: PageAction;\n\tindex: number;\n};\n\nfunction toActionMenuAction(\n\t{ action, index }: PageActionEntry,\n\tcontextBase: Omit<PageActionContext, 'index' | 'isInline'>,\n\tisInline: boolean,\n\trenderAction?: PageActionsProps['renderAction'],\n): ActionMenuAction {\n\tconst context: PageActionContext = { ...contextBase, index, isInline };\n\tconst disabled = !!action.disabled || !!action.loading;\n\n\treturn {\n\t\tid: action.id ?? String(index),\n\t\tlabel: action.label,\n\t\ticon: action.icon,\n\t\tonClick: action.onClick,\n\t\thref: action.href && !action.onClick ? action.href : undefined,\n\t\ttarget: action.target,\n\t\trel: action.rel,\n\t\texternal: action.external,\n\t\tdisabled,\n\t\ttone: action.tone ?? 'secondary',\n\t\tbuttonStyle: action.buttonStyle ?? 'solid',\n\t\tbuttonSize: action.size,\n\t\tgroup: action.group,\n\t\trender: action.element ?? renderAction?.(action, context),\n\t};\n}\n\nexport function PageActions({\n\tactions,\n\tdisplay = 'dropdown',\n\tsize = 'sm',\n\tbreakpoint = 1040,\n\tmaxInlineActions = DEFAULT_MAX_INLINE_ACTIONS,\n\trenderLink,\n\tstrings: stringsProp,\n\tclassName,\n\tinlineClassName,\n\tmenuClassName,\n\trenderAction,\n}: PageActionsProps) {\n\tconst strings = useStrings(defaultPageActionsStrings, stringsProp);\n\tconst resolvedRenderLink = useLayoutLinkRenderer({ renderLink });\n\n\tconst filtered = useMemo<PageActionEntry[]>(\n\t\t() => (actions ?? [])\n\t\t\t.map((action, index) => ({ action, index }))\n\t\t\t.filter(({ action }) => action.visible !== false),\n\t\t[actions],\n\t);\n\n\tconst [isNarrow, setIsNarrow] = useState(false);\n\tuseEffect(() => {\n\t\tif (display !== 'auto' || typeof window === 'undefined') return;\n\n\t\tconst check = () => setIsNarrow(window.innerWidth <= breakpoint);\n\t\tcheck();\n\t\twindow.addEventListener('resize', check);\n\t\treturn () => window.removeEventListener('resize', check);\n\t}, [display, breakpoint]);\n\n\tif (filtered.length === 0) return null;\n\n\tconst inlineContextBase = { renderLink: resolvedRenderLink };\n\tconst renderActionLink = (props: ActionMenuLinkRenderProps) =>\n\t\tresolvedRenderLink({\n\t\t\t...props,\n\t\t\tchildren: props.children ?? null,\n\t\t}) as ReactElement;\n\tconst inlineClass = cn('flex min-w-0 max-w-full flex-wrap items-center gap-space-sm', inlineClassName, className);\n\tconst menuContentClass = cn(PAGE_ACTIONS_MENU_CLASS, menuClassName);\n\n\tif (display === 'dropdown' || (display === 'auto' && isNarrow)) {\n\t\tconst dropdownActions = filtered.map((entry) =>\n\t\t\ttoActionMenuAction(entry, inlineContextBase, false, renderAction),\n\t\t);\n\n\t\treturn (\n\t\t\t<ActionMenu\n\t\t\t\tactions={dropdownActions}\n\t\t\t\ticon={MoreHorizontal}\n\t\t\t\tsrText={strings.menuLabel}\n\t\t\t\talign=\"end\"\n\t\t\t\tcloseOnSelect\n\t\t\t\tcontentClassName={menuContentClass}\n\t\t\t\tpreserveOrder\n\t\t\t\trenderLink={renderActionLink}\n\t\t\t/>\n\t\t);\n\t}\n\n\tconst inlineLimit = Math.max(0, maxInlineActions);\n\tconst inlineCandidates = filtered.filter(({ action }) => (action.placement ?? 'auto') !== 'menu');\n\tconst inline = inlineCandidates.slice(0, inlineLimit);\n\tconst overflow = inlineCandidates.slice(inlineLimit);\n\tconst menu = [\n\t\t...overflow,\n\t\t...filtered.filter(({ action }) => (action.placement ?? 'auto') === 'menu'),\n\t];\n\tconst inlineActions = inline.map((entry) =>\n\t\ttoActionMenuAction(entry, inlineContextBase, true, renderAction),\n\t);\n\tconst menuActions = menu.map((entry) =>\n\t\ttoActionMenuAction(entry, inlineContextBase, false, renderAction),\n\t);\n\n\treturn (\n\t\t<div className={inlineClass}>\n\t\t\t<ActionButtons\n\t\t\t\tactions={inlineActions}\n\t\t\t\tsize={size}\n\t\t\t\trenderLink={renderActionLink}\n\t\t\t/>\n\t\t\t{menu.length > 0 && (\n\t\t\t\t<ActionMenu\n\t\t\t\t\tactions={menuActions}\n\t\t\t\t\ticon={MoreHorizontal}\n\t\t\t\t\tsrText={strings.menuLabel}\n\t\t\t\t\talign=\"end\"\n\t\t\t\t\tcloseOnSelect\n\t\t\t\t\tcontentClassName={menuContentClass}\n\t\t\t\t\tpreserveOrder\n\t\t\t\t\trenderLink={renderActionLink}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"page-BV6ioQg3.js","names":["_Fragment","buttonVariants","Button","Stack","ActionMenu","ActionButtons","Separator","PageHeading","useLayoutLinkRenderer","Container","Fragment$1","PageHeader","TitleIcon","resolvedRenderLink","defaultBack","backHref","onBack","backLabel","cn","ArrowLeft","titleIconNode","icon","iconClassName","titleIconClassName","titleIconHref","onTitleIconClick","titleIconLabel","slots","titleBadges","actions","className","contentClassName","titleClassName","descriptionClassName","actionsClassName","Page","forwardRef","containerProps","bodyClassName","bodyProps","slotProps","header","renderLink","children","defaultPageActionsStrings","PAGE_ACTIONS_MENU_CLASS","DEFAULT_MAX_INLINE_ACTIONS","toActionMenuAction","context","contextBase","disabled","action","index","renderAction","PageActions","stringsProp","strings","useStrings","filtered","useMemo","isNarrow","setIsNarrow","useState","useEffect","display","check","breakpoint","inlineContextBase","renderActionLink","props","inlineClass","inlineClassName","menuContentClass","menuClassName","dropdownActions","entry","MoreHorizontal","inlineLimit","maxInlineActions","inlineCandidates","inline","menu","inlineActions","menuActions"],"sources":["../src/components/layout/page/partials/page-header.tsx","../src/components/layout/page/page.tsx","../src/components/layout/page/page.types.ts","../src/components/layout/page/partials/page-actions.tsx"],"sourcesContent":["/**\n * PageHeader — page title, back control, title badges, and actions.\n *\n * Navigation goes through `renderLink`; consumer apps wire framework links at\n * the boundary. Slots let consumers replace any structural region without\n * forking the page wrapper.\n */\nimport { ArrowLeft } from 'lucide-react';\n\nimport { Button } from '../../../base/buttons';\nimport { Separator } from '../../../base/display/separator';\nimport { PageHeading } from '../../../base/navigation/page-header';\nimport { buttonVariants } from '../../../base/buttons/button.variants';\nimport { cn } from '../../../../lib/utils';\n\nimport { useLayoutLinkRenderer } from '../../hooks';\nimport type { PageHeaderProps } from '../page.types';\n\nexport function PageHeader({\n\ttitle,\n\tdescription,\n\ttextGap,\n\theadingTag = 'h3',\n\ttitleIcon: TitleIcon,\n\ttitleIconHref,\n\tonTitleIconClick,\n\ttitleIconLabel = 'Open title link',\n\tbackHref,\n\tonBack,\n\tbackLabel = 'Back',\n\ttitleBadges = [],\n\tactions,\n\tslots,\n\trenderLink,\n\tclassName,\n\tcontentClassName,\n\tactionsClassName,\n\ttitleClassName,\n\ttitleIconClassName,\n\tdescriptionClassName,\n}: PageHeaderProps) {\n\tconst resolvedRenderLink = useLayoutLinkRenderer({ renderLink });\n\tconst hasBack = !!backHref || !!onBack;\n\n\tconst defaultBack = hasBack ? (\n\t\t<div className=\"flex items-center gap-space-sm shrink-0\">\n\t\t\t{backHref && !onBack ? (\n\t\t\t\tresolvedRenderLink({\n\t\t\t\t\thref: backHref,\n\t\t\t\t\t'aria-label': backLabel,\n\t\t\t\t\tclassName: cn('page-header--back-link', buttonVariants({tone:'secondary',buttonStyle:'ghost',size:'sm',iconOnly:true})),\n\t\t\t\t\tchildren: (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<ArrowLeft className=\"size-icon rtl:rotate-180\" aria-hidden=\"true\" />\n\t\t\t\t\t\t</>\n\t\t\t\t\t),\n\t\t\t\t})\n\t\t\t) : (\n\t\t\t\t<Button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\ttone=\"secondary\"\n\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\tsize=\"sm\" iconOnly\n\t\t\t\t\tclassName=\"page-header--back-button\"\n\t\t\t\t\tonClick={onBack}\n\t\t\t\t\taria-label={backLabel}\n\t\t\t\t>\n\t\t\t\t\t<ArrowLeft className=\"size-icon rtl:rotate-180\" aria-hidden=\"true\" />\n\t\t\t\t</Button>\n\t\t\t)}\n\t\t\t<Separator orientation=\"vertical\" className=\"h-action-sm\" />\n\t\t</div>\n\t) : null;\n\tconst titleIconNode = (() => {\n\t\tif (!TitleIcon) return null;\n\n\t\tconst icon = <TitleIcon className=\"size-icon\" aria-hidden=\"true\" />;\n\t\tconst iconClassName = cn(\n\t\t\t'page-header--title-icon flex size-icon shrink-0 items-center justify-center text-muted-foreground',\n\t\t\ttitleIconClassName,\n\t\t);\n\n\t\tif (titleIconHref && !onTitleIconClick) {\n\t\t\treturn resolvedRenderLink({\n\t\t\t\thref: titleIconHref,\n\t\t\t\t'aria-label': titleIconLabel,\n\t\t\t\tclassName: cn(\n\t\t\t\t\t'page-header--title-icon-link',\n\t\t\t\t\tbuttonVariants({tone:'secondary',buttonStyle:'ghost',size:'sm',iconOnly:true}),\n\t\t\t\t\ttitleIconClassName,\n\t\t\t\t),\n\t\t\t\tchildren: (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{icon}\n\t\t\t\t\t</>\n\t\t\t\t),\n\t\t\t});\n\t\t}\n\n\t\tif (onTitleIconClick) {\n\t\t\treturn (\n\t\t\t\t<Button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\ttone=\"secondary\"\n\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\tsize=\"sm\" iconOnly\n\t\t\t\t\tclassName={cn('page-header--title-icon-button', titleIconClassName)}\n\t\t\t\t\tonClick={onTitleIconClick}\n\t\t\t\t\taria-label={titleIconLabel}\n\t\t\t\t>\n\t\t\t\t\t{icon}\n\t\t\t\t</Button>\n\t\t\t);\n\t\t}\n\n\t\treturn (\n\t\t\t<span aria-hidden=\"true\" className={iconClassName}>\n\t\t\t\t{icon}\n\t\t\t</span>\n\t\t);\n\t})();\n\n\treturn (\n\t\t<PageHeading\n\t\t\ttitle={title}\n\t\t\tdescription={description}\n\t\t\ttextGap={textGap}\n\t\t\theadingTag={headingTag}\n\t\t\tleading={slots?.back ?? defaultBack}\n\t\t\tbeforeTitle={slots?.beforeTitle}\n\t\t\ttitlePrefix={titleIconNode}\n\t\t\tbadges={titleBadges}\n\t\t\tactions={slots?.actions ?? actions}\n\t\t\tafterDescription={slots?.afterDescription}\n\t\t\twithSeparator={false}\n\t\t\tclassName={cn('layout-page-header--component', className)}\n\t\t\tcontentClassName={cn('max-w-none', contentClassName)}\n\t\t\ttitleClassName={cn('text-base', titleClassName)}\n\t\t\ttitleRowClassName=\"gap-space-md\"\n\t\t\tdescriptionClassName={cn('text-sm', descriptionClassName)}\n\t\t\tactionsClassName={cn('shrink-0 self-end sm:self-auto', actionsClassName)}\n\t\t/>\n\t);\n}\n","import { Stack } from '../../base/structure';\nimport { Container } from '../containers';\nimport { cn } from '../../../lib/utils';\nimport { forwardRef } from 'react';\n\nimport type { PageProps } from './page.types';\nimport { PageHeader } from './partials/page-header';\n\n/** Page — non-scrolling Container, PageHeader, and body-rhythm composition. */\nexport const Page = forwardRef<HTMLDivElement, PageProps>(function Page({\n\t\theader,\n\t\tchildren,\n\t\tslotProps,\n\t\trenderLink,\n\t\tmaxWidth = 'lg',\n\t\tgutter,\n\t\tclassName,\n\t\trender,\n\t\t...containerProps\n\t}, ref) {\n\tconst { className: bodyClassName, ...bodyProps } = slotProps?.body ?? {};\n\n\treturn (\n\t\t<Container\n\t\t\t{...containerProps}\n\t\t\tref={ref}\n\t\t\trender={render}\n\t\t\tmaxWidth={maxWidth}\n\t\t\tgutter={gutter}\n\t\t\tclassName={className}\n\t\t>\n\t\t\t<Stack gap=\"2xl\" className=\"page--component\">\n\t\t\t\t{header ? (\n\t\t\t\t\t<PageHeader\n\t\t\t\t\t\t{...header}\n\t\t\t\t\t\trenderLink={header.renderLink ?? renderLink}\n\t\t\t\t\t/>\n\t\t\t\t) : null}\n\t\t\t\t{children !== undefined && children !== null ? (\n\t\t\t\t\t<div\n\t\t\t\t\t\t{...bodyProps}\n\t\t\t\t\t\tdata-slot=\"page-body\"\n\t\t\t\t\t\tclassName={cn('page--body relative block min-w-0 w-full', bodyClassName)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</div>\n\t\t\t\t) : null}\n\t\t\t</Stack>\n\t\t</Container>\n\t);\n});\n\nPage.displayName = 'Page';\n","/**\n * Page-level types for `Page`, `PageHeader`, `PageActions`, and exported\n * partials. All navigation is framework-neutral via `renderLink`.\n */\nimport type { ComponentType, JSX, Key, ReactNode } from 'react';\n\nimport type {\n\tLayoutLinkRenderer,\n\tLayoutNavigationAdapter,\n\tLayoutSlotAttributes,\n} from '../layout.types';\nimport type { TextGap } from '../../base/structure';\nimport type { ButtonSize } from '../../base/buttons';\nimport type { HeadingTag } from '../../typography';\nimport type { ContainerMaxWidth, ContainerProps } from '../containers/containers.types';\nimport type { StringsProp } from '../../../lib/strings';\nimport type { BadgeTone } from '../../base/badge';\nimport type { ActionPresentation } from '../../../lib/action-presentation';\n\nexport interface PageTitleBadge {\n\t/** Display label. */\n\tlabel: ReactNode;\n\t/** Semantic color intent. */\n\ttone?: BadgeTone;\n\tkey?: Key;\n}\n\nexport interface PageHeaderSlots {\n\t/** Replaces the leading back control entirely. */\n\tback?: ReactNode;\n\t/** Additional content before the title line. */\n\tbeforeTitle?: ReactNode;\n\t/** Additional content after the description. */\n\tafterDescription?: ReactNode;\n\t/** Replaces the trailing actions region. */\n\tactions?: ReactNode;\n}\n\nexport interface PageHeaderProps extends LayoutNavigationAdapter {\n\t/** Surface title. */\n\ttitle: ReactNode;\n\t/** Supporting copy under the title. */\n\tdescription?: ReactNode;\n\t/** Shared title/description rhythm. Defaults to normal. */\n\ttextGap?: TextGap;\n\t/** Semantic heading level for the title. Defaults to `h3` for nested app pages. */\n\theadingTag?: HeadingTag;\n\t/** Optional decorative icon rendered before the title. Pass a Lucide icon component. */\n\ttitleIcon?: ComponentType<{ className?: string }>;\n\t/** Optional link target for the title icon. Uses the same framework-neutral renderer as `backHref`. */\n\ttitleIconHref?: string;\n\t/** Optional click handler for the title icon when it should behave like an action. */\n\tonTitleIconClick?: () => void;\n\t/** Accessible label for linked/clickable title icons. */\n\ttitleIconLabel?: string;\n\t/** Destination for the back control. */\n\tbackHref?: string;\n\tonBack?: () => void;\n\t/** Copy for the back control. */\n\tbackLabel?: string;\n\t/** Chips shown beside the page title. */\n\ttitleBadges?: PageTitleBadge[];\n\t/** Controls offered on the surface. */\n\tactions?: ReactNode;\n\t/** Replaces individual regions of the shell. */\n\tslots?: PageHeaderSlots;\n\tclassName?: string;\n\t/** Merged onto the content region. */\n\tcontentClassName?: string;\n\tactionsClassName?: string;\n\ttitleClassName?: string;\n\ttitleIconClassName?: string;\n\tdescriptionClassName?: string;\n}\n\nexport interface PageActionContext {\n\tindex: number;\n\tisInline: boolean;\n\trenderLink: LayoutLinkRenderer;\n}\n\nexport interface PageAction extends ActionPresentation {\n\tid?: string;\n\t/** Display label. */\n\tlabel: ReactNode;\n\tonClick?: () => void;\n\t/** Destination for the entry, when it navigates. */\n\thref?: string;\n\ttarget?: string;\n\trel?: string;\n\texternal?: boolean;\n\t/** Shows the pending indicator. */\n\tloading?: boolean;\n\t/** Leading glyph. */\n\ticon?: ComponentType<{ className?: string }>;\n\t/** Optional inline button size. Defaults to the PageActions `size` prop. */\n\tsize?: ButtonSize;\n\tgroup?: string;\n\tplacement?: 'auto' | 'inline' | 'menu';\n\t/** Escape hatch for one action only. Prefer `renderAction` for consistent customization. */\n\telement?: ReactNode | JSX.Element;\n}\n\nexport type PageActionsDisplay = 'flat' | 'dropdown' | 'auto';\n\nexport interface PageActionsStrings {\n\tmenuLabel: string;\n}\n\nexport const defaultPageActionsStrings: PageActionsStrings = {\n\tmenuLabel: 'Page actions',\n};\n\nexport interface PageActionsProps extends LayoutNavigationAdapter {\n\t/** Controls offered on the surface. */\n\tactions?: PageAction[];\n\t/** How actions are presented — inline, menu, or responsive. */\n\tdisplay?: PageActionsDisplay;\n\t/** Inline action button scale. Defaults to `sm`; set `md` for normal page-header buttons. */\n\tsize?: ButtonSize;\n\t/** Width at which responsive actions collapse into a menu. */\n\tbreakpoint?: number;\n\t/**\n\t * Maximum non-menu actions rendered inline before overflow moves them into\n\t * the dropdown menu. Defaults to 4 for admin header density.\n\t */\n\tmaxInlineActions?: number;\n\t/** Overrides this surface's own copy. */\n\tstrings?: StringsProp<PageActionsStrings>;\n\tclassName?: string;\n\t/** Merged onto the inline action row. */\n\tinlineClassName?: string;\n\t/** Merged onto the action menu. */\n\tmenuClassName?: string;\n\t/** Replaces the default action rendering. */\n\trenderAction?: (action: PageAction, context: PageActionContext) => ReactNode;\n}\n\nexport interface PageSlotProps {\n\t/** Native attributes merged onto the page body region. */\n\tbody?: LayoutSlotAttributes<HTMLDivElement>;\n}\n\nexport interface PageProps\n\textends LayoutNavigationAdapter, Omit<ContainerProps, 'children'> {\n\t/** Header region of the shell. */\n\theader?: PageHeaderProps;\n\t/** Maximum content width. Defaults to `lg` for readable page composition. */\n\tmaxWidth?: ContainerMaxWidth;\n\tchildren?: ReactNode;\n\t/** Native attributes for stable page regions. */\n\tslotProps?: PageSlotProps;\n}\n","/**\n * PageActions — composable action ribbon for page headers.\n *\n * Links go through `renderLink`, never router imports or DOM click hacks.\n * Use `renderAction` for app-specific rendering while keeping grouping,\n * filtering, breakpoint, and menu placement logic centralized.\n */\nimport { useEffect, useMemo, useState, type ReactElement } from 'react';\nimport { MoreHorizontal } from 'lucide-react';\n\nimport {\n\tActionButtons,\n\tActionMenu,\n\ttype ActionMenuAction,\n\ttype ActionMenuLinkRenderProps,\n} from '../../../base/action-menu';\nimport { useStrings } from '../../../../lib/strings';\nimport { cn } from '../../../../lib/utils';\n\nimport { useLayoutLinkRenderer } from '../../hooks';\nimport {\n\tdefaultPageActionsStrings,\n\ttype PageAction,\n\ttype PageActionContext,\n\ttype PageActionsProps,\n} from '../page.types';\n\nconst PAGE_ACTIONS_MENU_CLASS = 'max-h-[80vh] overflow-y-auto overscroll-contain';\nconst DEFAULT_MAX_INLINE_ACTIONS = 4;\n\ntype PageActionEntry = {\n\t/** The action this surface performs. */\n\taction: PageAction;\n\tindex: number;\n};\n\nfunction toActionMenuAction(\n\t{ action, index }: PageActionEntry,\n\tcontextBase: Omit<PageActionContext, 'index' | 'isInline'>,\n\tisInline: boolean,\n\trenderAction?: PageActionsProps['renderAction'],\n): ActionMenuAction {\n\tconst context: PageActionContext = { ...contextBase, index, isInline };\n\tconst disabled = !!action.disabled || !!action.loading;\n\n\treturn {\n\t\tid: action.id ?? String(index),\n\t\tlabel: action.label,\n\t\ticon: action.icon,\n\t\tonClick: action.onClick,\n\t\thref: action.href && !action.onClick ? action.href : undefined,\n\t\ttarget: action.target,\n\t\trel: action.rel,\n\t\texternal: action.external,\n\t\tdisabled,\n\t\ttone: action.tone ?? 'secondary',\n\t\tbuttonStyle: action.buttonStyle ?? 'solid',\n\t\tbuttonSize: action.size,\n\t\tgroup: action.group,\n\t\trender: action.element ?? renderAction?.(action, context),\n\t};\n}\n\nexport function PageActions({\n\tactions,\n\tdisplay = 'dropdown',\n\tsize = 'sm',\n\tbreakpoint = 1040,\n\tmaxInlineActions = DEFAULT_MAX_INLINE_ACTIONS,\n\trenderLink,\n\tstrings: stringsProp,\n\tclassName,\n\tinlineClassName,\n\tmenuClassName,\n\trenderAction,\n}: PageActionsProps) {\n\tconst strings = useStrings(defaultPageActionsStrings, stringsProp);\n\tconst resolvedRenderLink = useLayoutLinkRenderer({ renderLink });\n\n\tconst filtered = useMemo<PageActionEntry[]>(\n\t\t() => (actions ?? [])\n\t\t\t.map((action, index) => ({ action, index }))\n\t\t\t.filter(({ action }) => action.visible !== false),\n\t\t[actions],\n\t);\n\n\tconst [isNarrow, setIsNarrow] = useState(false);\n\tuseEffect(() => {\n\t\tif (display !== 'auto' || typeof window === 'undefined') return;\n\n\t\tconst check = () => setIsNarrow(window.innerWidth <= breakpoint);\n\t\tcheck();\n\t\twindow.addEventListener('resize', check);\n\t\treturn () => window.removeEventListener('resize', check);\n\t}, [display, breakpoint]);\n\n\tif (filtered.length === 0) return null;\n\n\tconst inlineContextBase = { renderLink: resolvedRenderLink };\n\tconst renderActionLink = (props: ActionMenuLinkRenderProps) =>\n\t\tresolvedRenderLink({\n\t\t\t...props,\n\t\t\tchildren: props.children ?? null,\n\t\t}) as ReactElement;\n\tconst inlineClass = cn('flex min-w-0 max-w-full flex-wrap items-center gap-space-sm', inlineClassName, className);\n\tconst menuContentClass = cn(PAGE_ACTIONS_MENU_CLASS, menuClassName);\n\n\tif (display === 'dropdown' || (display === 'auto' && isNarrow)) {\n\t\tconst dropdownActions = filtered.map((entry) =>\n\t\t\ttoActionMenuAction(entry, inlineContextBase, false, renderAction),\n\t\t);\n\n\t\treturn (\n\t\t\t<ActionMenu\n\t\t\t\tactions={dropdownActions}\n\t\t\t\ticon={MoreHorizontal}\n\t\t\t\tsrText={strings.menuLabel}\n\t\t\t\talign=\"end\"\n\t\t\t\tcloseOnSelect\n\t\t\t\tcontentClassName={menuContentClass}\n\t\t\t\tpreserveOrder\n\t\t\t\trenderLink={renderActionLink}\n\t\t\t/>\n\t\t);\n\t}\n\n\tconst inlineLimit = Math.max(0, maxInlineActions);\n\tconst inlineCandidates = filtered.filter(({ action }) => (action.placement ?? 'auto') !== 'menu');\n\tconst inline = inlineCandidates.slice(0, inlineLimit);\n\tconst overflow = inlineCandidates.slice(inlineLimit);\n\tconst menu = [\n\t\t...overflow,\n\t\t...filtered.filter(({ action }) => (action.placement ?? 'auto') === 'menu'),\n\t];\n\tconst inlineActions = inline.map((entry) =>\n\t\ttoActionMenuAction(entry, inlineContextBase, true, renderAction),\n\t);\n\tconst menuActions = menu.map((entry) =>\n\t\ttoActionMenuAction(entry, inlineContextBase, false, renderAction),\n\t);\n\n\treturn (\n\t\t<div className={inlineClass}>\n\t\t\t<ActionButtons\n\t\t\t\tactions={inlineActions}\n\t\t\t\tsize={size}\n\t\t\t\trenderLink={renderActionLink}\n\t\t\t/>\n\t\t\t{menu.length > 0 && (\n\t\t\t\t<ActionMenu\n\t\t\t\t\tactions={menuActions}\n\t\t\t\t\ticon={MoreHorizontal}\n\t\t\t\t\tsrText={strings.menuLabel}\n\t\t\t\t\talign=\"end\"\n\t\t\t\t\tcloseOnSelect\n\t\t\t\t\tcontentClassName={menuContentClass}\n\t\t\t\t\tpreserveOrder\n\t\t\t\t\trenderLink={renderActionLink}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { t as e } from "./utils-C2EKeIw3.js";
|
|
3
3
|
import { a as t, i as n, r } from "./typography-Cv8MT-82.js";
|
|
4
|
-
import { t as i } from "./structure-
|
|
4
|
+
import { t as i } from "./structure-MvKVq-oL.js";
|
|
5
5
|
import { t as a } from "./badge-BZXZT9wd.js";
|
|
6
6
|
import { t as o } from "./separator-Gk_WXH-l.js";
|
|
7
7
|
import { jsx as s, jsxs as c } from "react/jsx-runtime";
|
|
@@ -109,4 +109,4 @@ u.displayName = "PageHeading";
|
|
|
109
109
|
//#endregion
|
|
110
110
|
export { u as t };
|
|
111
111
|
|
|
112
|
-
//# sourceMappingURL=page-header-
|
|
112
|
+
//# sourceMappingURL=page-header-DQRa0jug.js.map
|