themelia-react-ui 2.0.5 → 3.0.0
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 +326 -0
- package/MIGRATION.md +858 -0
- package/README.md +35 -24
- package/dist/{accordion-B9MHG0cT.js → accordion-DNVqwEIC.js} +37 -37
- package/dist/accordion-DNVqwEIC.js.map +1 -0
- package/dist/action-menu-D5343RwT.js +286 -0
- package/dist/action-menu-D5343RwT.js.map +1 -0
- package/dist/ai-artifact-otrz9ZwS.js +1214 -0
- package/dist/ai-artifact-otrz9ZwS.js.map +1 -0
- package/dist/anchored-positioning-1U_eBFNx.js +9 -0
- package/dist/anchored-positioning-1U_eBFNx.js.map +1 -0
- package/dist/app-shell-CPN30Nb1.js +372 -0
- package/dist/app-shell-CPN30Nb1.js.map +1 -0
- package/dist/{attachment-Dg_69lPS.js → attachment-D2-fpfmv.js} +15 -15
- package/dist/{attachment-Dg_69lPS.js.map → attachment-D2-fpfmv.js.map} +1 -1
- package/dist/{auth-DTkkshS8.js → auth-g_oUTDDC.js} +236 -243
- package/dist/auth-g_oUTDDC.js.map +1 -0
- package/dist/{avatar-CeZaFmNH.js → avatar-Ca3Ihrq4.js} +4 -4
- package/dist/{avatar-CeZaFmNH.js.map → avatar-Ca3Ihrq4.js.map} +1 -1
- package/dist/{badge-xIiV_E7f.js → badge-oGiXblW7.js} +8 -9
- package/dist/badge-oGiXblW7.js.map +1 -0
- package/dist/base/accordion.js +1 -1
- package/dist/base/action-menu.js +1 -1
- package/dist/base/attachment.js +1 -1
- package/dist/base/avatar.js +1 -1
- package/dist/base/badge.js +1 -1
- package/dist/base/batch-action-bar.js +1 -1
- package/dist/base/buttons.js +2 -2
- package/dist/base/cards.js +3 -3
- package/dist/base/carousel.js +11 -11
- package/dist/base/carousel.js.map +1 -1
- package/dist/base/cascader.js +1 -1
- package/dist/base/chart.js +1 -1
- package/dist/base/choice-inputs.js +2 -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/copyable.js +1 -1
- package/dist/base/date-pickers.js +2 -2
- package/dist/base/display.js +7 -7
- package/dist/base/feedback.js +4 -4
- package/dist/base/forms-numeric.js +2 -2
- package/dist/base/forms.js +2 -2
- package/dist/base/inline-edit.js +13 -13
- package/dist/base/inline-edit.js.map +1 -1
- package/dist/base/item.js +1 -1
- package/dist/base/media-gallery.js +203 -2
- package/dist/base/media-gallery.js.map +1 -0
- package/dist/base/metadata-list.js +1 -1
- package/dist/base/navigation.js +7 -7
- package/dist/base/popover-menu.js +1 -1
- package/dist/base/popover.js +1 -1
- package/dist/base/qr-code.js +32 -22
- package/dist/base/qr-code.js.map +1 -1
- package/dist/base/repeaters.js +208 -198
- package/dist/base/repeaters.js.map +1 -1
- package/dist/base/sidebar.js +2 -2
- package/dist/base/signature-pad.js +14 -14
- package/dist/base/signature-pad.js.map +1 -1
- package/dist/base/skeleton.js +1 -1
- package/dist/base/spinner.js +8 -14
- package/dist/base/spinner.js.map +1 -1
- package/dist/base/structure.js +1 -1
- package/dist/base/table.js +1 -1
- package/dist/base/text-inputs.js +3 -3
- package/dist/base/toaster.js +2 -2
- package/dist/base/tree.js +2 -2
- package/dist/base/upload-queue.js +303 -2
- package/dist/base/upload-queue.js.map +1 -0
- package/dist/base/upload.js +3 -4
- package/dist/base/value-inputs.js +1 -1
- package/dist/{batch-action-bar-Cb8cuvyy.js → batch-action-bar-D6MZQNnC.js} +10 -10
- package/dist/{batch-action-bar-Cb8cuvyy.js.map → batch-action-bar-D6MZQNnC.js.map} +1 -1
- package/dist/blocks/admin.js +242 -228
- package/dist/blocks/admin.js.map +1 -1
- package/dist/blocks/ai.js +398 -354
- package/dist/blocks/ai.js.map +1 -1
- package/dist/blocks/analytics/charts.js +1022 -0
- package/dist/blocks/analytics/charts.js.map +1 -0
- package/dist/blocks/analytics/usage-card.js +1 -1
- package/dist/blocks/analytics.js +173 -1392
- 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 +1533 -1399
- package/dist/blocks/commerce.js.map +1 -1
- package/dist/blocks/data-display.js +2 -3
- package/dist/blocks/onboarding.js +91 -82
- package/dist/blocks/onboarding.js.map +1 -1
- package/dist/blocks/planning.js +25 -25
- package/dist/blocks/planning.js.map +1 -1
- package/dist/blocks/timelines.js +2 -2
- package/dist/breadcrumbs-CQ9JSlez.js +136 -0
- package/dist/breadcrumbs-CQ9JSlez.js.map +1 -0
- package/dist/{button-S2Cubiiz.js → button-rd6FiHfQ.js} +12 -8
- package/dist/button-rd6FiHfQ.js.map +1 -0
- package/dist/{buttons-BedGfygC.js → buttons-pZVgPTZn.js} +230 -246
- package/dist/buttons-pZVgPTZn.js.map +1 -0
- package/dist/{cards-rNX1M4Xn.js → cards-CgWyqvgZ.js} +25 -22
- package/dist/{cards-rNX1M4Xn.js.map → cards-CgWyqvgZ.js.map} +1 -1
- package/dist/cascader-Cf05pwaq.js +444 -0
- package/dist/cascader-Cf05pwaq.js.map +1 -0
- package/dist/{chart-Darg_0Kv.js → chart-CygRCyIZ.js} +5 -5
- package/dist/{chart-Darg_0Kv.js.map → chart-CygRCyIZ.js.map} +1 -1
- package/dist/{checkbox-fflqmODR.js → checkbox-Dy5_XBMZ.js} +4 -4
- package/dist/{checkbox-fflqmODR.js.map → checkbox-Dy5_XBMZ.js.map} +1 -1
- package/dist/{choice-inputs-zUgBZfE4.js → choice-inputs-oJEsrb5Y.js} +195 -184
- package/dist/choice-inputs-oJEsrb5Y.js.map +1 -0
- package/dist/{code-block-BzmM9Eig.js → code-block-BrLD7mCi.js} +44 -60
- package/dist/code-block-BrLD7mCi.js.map +1 -0
- package/dist/collapsible-CRCCg_bO.js +80 -0
- package/dist/collapsible-CRCCg_bO.js.map +1 -0
- package/dist/{collection-content-gDh1v6O4.js → collection-content-D7SoDlYd.js} +3 -3
- package/dist/{collection-content-gDh1v6O4.js.map → collection-content-D7SoDlYd.js.map} +1 -1
- package/dist/combobox-Dl6f6kHz.js +362 -0
- package/dist/combobox-Dl6f6kHz.js.map +1 -0
- package/dist/combobox-DrDXtSSt.js +929 -0
- package/dist/combobox-DrDXtSSt.js.map +1 -0
- package/dist/command-CjZ2VzKC.js +432 -0
- package/dist/command-CjZ2VzKC.js.map +1 -0
- package/dist/comments-C2MZyRmh.js +1214 -0
- package/dist/comments-C2MZyRmh.js.map +1 -0
- package/dist/components/base/accordion/accordion.d.ts +11 -3
- package/dist/components/base/action-menu/action-menu.d.ts +11 -3
- package/dist/components/base/buttons/button.d.ts +2 -2
- package/dist/components/base/buttons/index.d.ts +1 -1
- package/dist/components/base/buttons/loader-button.d.ts +6 -15
- package/dist/components/base/cards/index.d.ts +1 -1
- package/dist/components/base/cards/partials/card-body-context.d.ts +6 -0
- package/dist/components/base/cards/smart-card.d.ts +0 -2
- package/dist/components/base/cards/smart-card.types.d.ts +12 -10
- package/dist/components/base/cascader/cascader.d.ts +8 -2
- package/dist/components/base/cascader/cascader.types.d.ts +24 -2
- package/dist/components/base/cascader/index.d.ts +1 -1
- package/dist/components/base/choice-inputs/choice-types.d.ts +4 -0
- package/dist/components/base/choice-inputs/pill-radio-group.d.ts +7 -6
- package/dist/components/base/choice-inputs/switch.d.ts +1 -1
- package/dist/components/base/code-block/use-code-copy.d.ts +2 -6
- package/dist/components/base/combobox/combobox-field.d.ts +2 -2
- package/dist/components/base/command/command.d.ts +1 -1
- package/dist/components/base/date-pickers/date-picker-internals.d.ts +3 -1
- package/dist/components/base/date-pickers/datepicker.types.d.ts +11 -7
- package/dist/components/base/date-pickers/time-picker.d.ts +17 -3
- package/dist/components/base/display/dialog.d.ts +3 -9
- package/dist/components/base/display/index.d.ts +2 -3
- package/dist/components/base/display/separator.d.ts +1 -1
- package/dist/components/base/feedback/alert.d.ts +2 -1
- package/dist/components/base/feedback/empty.d.ts +10 -2
- package/dist/components/base/feedback/state-display.d.ts +5 -1
- package/dist/components/base/feedback/state-display.strings.d.ts +9 -0
- package/dist/components/base/forms/form-field.d.ts +7 -2
- package/dist/components/base/forms/workflow.d.ts +2 -2
- package/dist/components/base/forms-numeric/coordinates-input.d.ts +4 -1
- package/dist/components/base/forms-numeric/decimal-input.d.ts +2 -2
- package/dist/components/base/forms-numeric/dimensions-input.d.ts +13 -18
- package/dist/components/base/forms-numeric/index.d.ts +3 -3
- package/dist/components/base/forms-numeric/numeric-composite-field.d.ts +12 -0
- package/dist/components/base/forms-numeric/weight-input.d.ts +6 -1
- package/dist/components/base/item/item.types.d.ts +6 -2
- package/dist/components/base/metadata-list/index.d.ts +1 -3
- package/dist/components/base/metadata-list/metadata-list.d.ts +4 -1
- package/dist/components/base/navigation/index.d.ts +2 -2
- package/dist/components/base/navigation/language-switcher.d.ts +17 -8
- package/dist/components/base/navigation/navigation-tabs.d.ts +8 -1
- package/dist/components/base/navigation/page-header/index.d.ts +1 -1
- package/dist/components/base/navigation/page-header/page-header.d.ts +13 -17
- package/dist/components/base/navigation/pagination.d.ts +5 -5
- package/dist/components/base/popover/popover.recipes.d.ts +0 -1
- package/dist/components/base/qr-code/qr-code.d.ts +4 -0
- package/dist/components/base/repeaters/index.d.ts +1 -1
- package/dist/components/base/repeaters/key-value-editor.d.ts +6 -1
- package/dist/components/base/sheet/sheet.d.ts +6 -15
- package/dist/components/base/sidebar/index.d.ts +1 -6
- package/dist/components/base/sidebar/sidebar.d.ts +40 -10
- package/dist/components/base/skeleton/skeleton.d.ts +1 -1
- package/dist/components/base/structure/structure.types.d.ts +11 -2
- package/dist/components/base/text-inputs/index.d.ts +1 -1
- package/dist/components/base/tree/index.d.ts +1 -0
- package/dist/components/base/tree/tree.d.ts +2 -2
- package/dist/components/base/tree/tree.types.d.ts +7 -1
- package/dist/components/base/upload/avatar-upload.d.ts +2 -1
- package/dist/components/base/upload/file-upload.validation.d.ts +37 -1
- package/dist/components/base/upload/image-upload.d.ts +4 -1
- package/dist/components/base/upload/index.d.ts +3 -9
- package/dist/components/base/value-inputs/date-time-input.d.ts +4 -0
- package/dist/components/base/value-inputs/slider.d.ts +5 -2
- package/dist/components/blocks/admin/action-surfaces/index.d.ts +17 -4
- package/dist/components/blocks/admin/api-key-list/api-key-list.types.d.ts +9 -3
- package/dist/components/blocks/admin/index.d.ts +1 -1
- package/dist/components/blocks/ai/ai-artifact/ai-artifact.d.ts +1 -1
- package/dist/components/blocks/ai/ai-artifact/types.d.ts +9 -4
- package/dist/components/blocks/ai/ai-chain-of-thought/ai-chain-of-thought.d.ts +1 -1
- package/dist/components/blocks/ai/ai-chain-of-thought/types.d.ts +11 -1
- package/dist/components/blocks/ai/ai-citation/ai-citation.d.ts +1 -1
- package/dist/components/blocks/ai/ai-citation/types.d.ts +8 -0
- package/dist/components/blocks/ai/ai-confirmation/ai-confirmation.d.ts +1 -1
- package/dist/components/blocks/ai/ai-confirmation/types.d.ts +21 -5
- package/dist/components/blocks/ai/ai-feedback/types.d.ts +7 -2
- package/dist/components/blocks/ai/ai-inline-citation/types.d.ts +9 -3
- package/dist/components/blocks/ai/ai-package-info/ai-package-info.d.ts +1 -1
- package/dist/components/blocks/ai/ai-package-info/types.d.ts +6 -0
- package/dist/components/blocks/ai/ai-reasoning/types.d.ts +2 -0
- package/dist/components/blocks/ai/ai-sources/ai-sources.d.ts +1 -1
- package/dist/components/blocks/ai/ai-sources/types.d.ts +10 -2
- package/dist/components/blocks/ai/ai-task/ai-task.d.ts +1 -1
- package/dist/components/blocks/ai/ai-task/types.d.ts +10 -1
- package/dist/components/blocks/ai/ai-tool-call/ai-tool-call.d.ts +1 -1
- package/dist/components/blocks/ai/ai-tool-call/types.d.ts +8 -0
- package/dist/components/blocks/ai/ai.strings.d.ts +2 -0
- package/dist/components/blocks/analytics/activity-heatmap/types.d.ts +1 -1
- package/dist/components/blocks/analytics/analytics.strings.d.ts +2 -0
- package/dist/components/blocks/analytics/atoms/metric-trend-chip.d.ts +11 -1
- package/dist/components/blocks/analytics/chart-card/chart-card.d.ts +7 -5
- package/dist/components/blocks/analytics/charts/index.d.ts +27 -0
- package/dist/components/blocks/analytics/index.d.ts +17 -24
- package/dist/components/blocks/analytics/metric/metric.d.ts +7 -3
- package/dist/components/blocks/analytics/metric-comparison/metric-comparison.d.ts +2 -0
- package/dist/components/blocks/analytics/metric-grid/metric-grid.d.ts +4 -5
- package/dist/components/blocks/analytics/types.d.ts +13 -4
- package/dist/components/blocks/analytics/usage-card/usage-card.strings.d.ts +2 -0
- package/dist/components/blocks/commerce/address-card/address-card.d.ts +1 -1
- package/dist/components/blocks/commerce/address-card/types.d.ts +5 -16
- package/dist/components/blocks/commerce/booking-calendar-event-card/booking-calendar-event-card.d.ts +2 -2
- package/dist/components/blocks/commerce/booking-calendar-event-card/booking-calendar-event-card.types.d.ts +6 -4
- package/dist/components/blocks/commerce/cart-summary/cart-summary.d.ts +0 -2
- package/dist/components/blocks/commerce/cart-summary/index.d.ts +2 -2
- package/dist/components/blocks/commerce/cart-summary/types.d.ts +9 -11
- package/dist/components/blocks/commerce/coupon-input/coupon-input.d.ts +1 -1
- package/dist/components/blocks/commerce/coupon-input/types.d.ts +7 -3
- package/dist/components/blocks/commerce/discount-stack/discount-stack.d.ts +0 -2
- package/dist/components/blocks/commerce/discount-stack/index.d.ts +2 -2
- package/dist/components/blocks/commerce/discount-stack/types.d.ts +4 -6
- package/dist/components/blocks/commerce/fulfillment-group/fulfillment-group.d.ts +1 -1
- package/dist/components/blocks/commerce/fulfillment-group/types.d.ts +2 -0
- package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-balance.d.ts +18 -0
- package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-compact.d.ts +1 -1
- package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-copy-button.d.ts +0 -1
- package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-dark.d.ts +1 -1
- package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-full.d.ts +1 -1
- package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-illustrated.d.ts +1 -1
- package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-minimal.d.ts +1 -1
- package/dist/components/blocks/commerce/giftcard-card/types.d.ts +16 -5
- package/dist/components/blocks/commerce/index.d.ts +8 -8
- package/dist/components/blocks/commerce/inventory-level/inventory-level.strings.d.ts +2 -0
- package/dist/components/blocks/commerce/inventory-level/types.d.ts +1 -1
- package/dist/components/blocks/commerce/inventory-section/types.d.ts +0 -5
- package/dist/components/blocks/commerce/invoice-line-items/types.d.ts +6 -3
- package/dist/components/blocks/commerce/loyalty-points/loyalty-points.d.ts +1 -1
- package/dist/components/blocks/commerce/loyalty-points/types.d.ts +11 -5
- package/dist/components/blocks/commerce/order-status/order-status.d.ts +1 -1
- package/dist/components/blocks/commerce/order-status/types.d.ts +12 -8
- package/dist/components/blocks/commerce/order-timeline/order-timeline.d.ts +1 -1
- package/dist/components/blocks/commerce/order-timeline/types.d.ts +3 -1
- package/dist/components/blocks/commerce/payment-method/index.d.ts +2 -2
- package/dist/components/blocks/commerce/payment-method/payment-method.d.ts +0 -8
- package/dist/components/blocks/commerce/payment-method/types.d.ts +0 -2
- package/dist/components/blocks/commerce/receipt/index.d.ts +1 -1
- package/dist/components/blocks/commerce/receipt/receipt-items.d.ts +1 -1
- package/dist/components/blocks/commerce/receipt/types.d.ts +10 -0
- package/dist/components/blocks/commerce/refund-status/index.d.ts +2 -2
- package/dist/components/blocks/commerce/refund-status/refund-status.d.ts +0 -2
- package/dist/components/blocks/commerce/refund-status/types.d.ts +0 -2
- package/dist/components/blocks/commerce/seo-listing/types.d.ts +7 -0
- package/dist/components/blocks/commerce/shared/code-entry.d.ts +39 -0
- package/dist/components/blocks/commerce/shared/order-status.d.ts +1 -1
- package/dist/components/blocks/commerce/subscription-summary/subscription-summary.d.ts +1 -1
- package/dist/components/blocks/commerce/subscription-summary/types.d.ts +10 -1
- package/dist/components/blocks/commerce/upcoming-booking/index.d.ts +2 -1
- package/dist/components/blocks/commerce/upcoming-booking/types.d.ts +8 -0
- package/dist/components/blocks/commerce/upcoming-booking/upcoming-booking.d.ts +2 -2
- package/dist/components/blocks/commerce/vendor-profile/types.d.ts +4 -5
- package/dist/components/blocks/commerce/voucher-entry/types.d.ts +6 -3
- package/dist/components/blocks/commerce/voucher-entry/voucher-entry.d.ts +1 -1
- package/dist/components/blocks/content-block-hooks.d.ts +22 -0
- package/dist/components/blocks/data-display/dense-info-card/dense-info.strings.d.ts +5 -1
- package/dist/components/blocks/data-display/dense-info-card/helpers.d.ts +3 -1
- package/dist/components/blocks/data-display/dense-info-card/index.d.ts +1 -1
- package/dist/components/blocks/data-display/dense-info-card/partials/dense-info-classification.d.ts +1 -1
- package/dist/components/blocks/data-display/dense-info-card/partials/dense-info-dashboard.d.ts +1 -1
- package/dist/components/blocks/data-display/dense-info-card/partials/dense-info-financial.d.ts +1 -1
- package/dist/components/blocks/data-display/dense-info-card/partials/dense-info-project.d.ts +1 -1
- package/dist/components/blocks/data-display/dense-info-card/partials/dense-info-score.d.ts +1 -1
- package/dist/components/blocks/data-display/dense-info-card/types.d.ts +12 -5
- package/dist/components/blocks/data-display/empty-state/empty-state.types.d.ts +10 -3
- package/dist/components/blocks/data-display/index.d.ts +0 -1
- package/dist/components/blocks/data-display/relationship-card-frame.d.ts +1 -1
- package/dist/components/blocks/onboarding/checklist/checklist.types.d.ts +5 -3
- package/dist/components/blocks/planning/task-card.types.d.ts +7 -3
- package/dist/components/blocks/timelines/changelog/types.d.ts +2 -2
- package/dist/components/blocks/timelines/index.d.ts +2 -2
- package/dist/components/blocks/timelines/milestones/types.d.ts +2 -2
- package/dist/components/blocks/timelines/shared/timeline.d.ts +6 -0
- package/dist/components/blocks/timelines/steps-card/index.d.ts +2 -1
- package/dist/components/blocks/timelines/steps-card/steps-card.d.ts +2 -2
- package/dist/components/blocks/timelines/steps-card/types.d.ts +13 -1
- package/dist/components/features/activities/activities.strings.d.ts +5 -3
- package/dist/components/features/activities/activities.types.d.ts +46 -22
- package/dist/components/features/activities/hooks/use-activity-feed.d.ts +6 -0
- package/dist/components/features/activities/hooks/use-activity-resources.d.ts +2 -1
- package/dist/components/features/activities/index.d.ts +1 -1
- package/dist/components/features/activities/partials/activity-headline.d.ts +5 -0
- package/dist/components/features/activities/partials/activity-row.d.ts +12 -13
- package/dist/components/features/activities/partials/row-layers.d.ts +7 -0
- package/dist/components/features/activities/relative-time.d.ts +18 -0
- package/dist/components/features/ai-chat/ai-chat.d.ts +6 -2
- package/dist/components/features/ai-chat/ai-chat.strings.d.ts +41 -2
- package/dist/components/features/ai-chat/ai-chat.types.d.ts +6 -0
- package/dist/components/features/ai-chat/hooks/use-ai-chat-scroll.d.ts +1 -1
- package/dist/components/features/ai-chat/partials/ai-chat-attachments-strip.d.ts +5 -1
- package/dist/components/features/ai-chat/partials/ai-chat-prompt-input.d.ts +2 -2
- package/dist/components/features/ai-chat/partials/ai-chat-queue.d.ts +3 -1
- package/dist/components/features/ai-chat/partials/ai-chat-suggestions-row.d.ts +6 -1
- package/dist/components/features/appointment-calendar/appointment-calendar.d.ts +1 -1
- package/dist/components/features/appointment-calendar/appointment-calendar.types.d.ts +20 -4
- package/dist/components/features/appointment-calendar/index.d.ts +1 -1
- package/dist/components/features/appointment-calendar/partials/appointment-agenda.d.ts +18 -10
- package/dist/components/features/async-preview/async-preview.d.ts +2 -2
- package/dist/components/features/async-preview/async-preview.types.d.ts +30 -1
- package/dist/components/features/async-preview/preview-trigger-cell.d.ts +7 -2
- package/dist/components/features/combobox/async-resource-combobox.d.ts +2 -2
- package/dist/components/features/combobox/combobox.d.ts +12 -3
- package/dist/components/features/combobox/components/error-message.d.ts +3 -1
- package/dist/components/features/combobox/hooks/use-combobox-core.d.ts +4 -3
- package/dist/components/features/combobox/hooks/use-combobox-state.d.ts +1 -0
- package/dist/components/features/combobox/hooks/use-load-more.d.ts +1 -0
- package/dist/components/features/combobox/index.d.ts +1 -1
- package/dist/components/features/combobox/types.d.ts +68 -37
- package/dist/components/features/comments/comments.strings.d.ts +6 -5
- package/dist/components/features/comments/comments.types.d.ts +40 -26
- package/dist/components/features/comments/hooks/use-attachment-upload.d.ts +5 -1
- package/dist/components/features/comments/hooks/use-comments.d.ts +8 -1
- package/dist/components/features/data-view/data-view.strings.d.ts +9 -2
- package/dist/components/features/data-view/data-view.types.d.ts +15 -2
- package/dist/components/features/email-composer/email-html.d.ts +5 -0
- package/dist/components/features/email-composer/http.d.ts +2 -0
- package/dist/components/features/email-composer/strings.d.ts +17 -2
- package/dist/components/features/email-composer/types.d.ts +19 -2
- package/dist/components/features/email-composer/use-composer.d.ts +2 -78
- package/dist/components/features/event-calendar/event-calendar-day-cell.d.ts +1 -1
- package/dist/components/features/event-calendar/event-calendar-event-badge.d.ts +1 -1
- package/dist/components/features/event-calendar/event-calendar-header.d.ts +1 -1
- package/dist/components/features/event-calendar/event-calendar-legend.d.ts +2 -2
- package/dist/components/features/event-calendar/event-calendar.d.ts +1 -1
- package/dist/components/features/event-calendar/event-calendar.types.d.ts +126 -21
- package/dist/components/features/filters/facets/date-facet.d.ts +4 -2
- package/dist/components/features/filters/facets/range-facet.d.ts +24 -7
- package/dist/components/features/filters/filter-context.d.ts +9 -0
- package/dist/components/features/filters/filters.strings.d.ts +36 -3
- package/dist/components/features/filters/filters.types.d.ts +75 -8
- package/dist/components/features/filters/hooks/use-filter-draft.d.ts +1 -0
- package/dist/components/features/filters/index.d.ts +2 -2
- package/dist/components/features/filters/operator-options.d.ts +25 -2
- package/dist/components/features/filters/partials/active-filter-item.d.ts +0 -13
- package/dist/components/features/filters/partials/async-options-status.d.ts +32 -0
- package/dist/components/features/filters/partials/date-filter-content.d.ts +3 -2
- package/dist/components/features/filters/partials/filter-draft-footer.d.ts +11 -0
- package/dist/components/features/filters/partials/filter-operator-select.d.ts +4 -2
- package/dist/components/features/filters/partials/filter-pill.d.ts +5 -1
- package/dist/components/features/filters/partials/filter-popover-content.d.ts +4 -2
- package/dist/components/features/filters/partials/filter-tabs.d.ts +2 -1
- package/dist/components/features/filters/partials/range-filter-content.d.ts +12 -0
- package/dist/components/features/filters/partials/regular-filter-content.d.ts +1 -1
- package/dist/components/features/filters/utils/filter-utils.d.ts +34 -5
- package/dist/components/features/global-search/global-search-dialog.d.ts +7 -1
- package/dist/components/features/global-search/global-search.d.ts +7 -1
- package/dist/components/features/global-search/global-search.strings.d.ts +19 -3
- package/dist/components/features/global-search/global-search.types.d.ts +30 -6
- package/dist/components/features/global-search/index.d.ts +1 -1
- package/dist/components/features/global-search/partials/global-search-idle-state.d.ts +6 -1
- package/dist/components/features/global-search/partials/global-search-input.d.ts +2 -0
- package/dist/components/features/kanban/index.d.ts +2 -2
- package/dist/components/features/kanban/kanban-context.d.ts +4 -0
- package/dist/components/features/kanban/kanban-keyboard.d.ts +7 -2
- package/dist/components/features/kanban/kanban.d.ts +10 -1
- package/dist/components/features/kanban/kanban.strings.d.ts +11 -2
- package/dist/components/features/kanban/kanban.types.d.ts +26 -0
- package/dist/components/features/map/map.d.ts +4 -0
- package/dist/components/features/map/place-autocomplete.d.ts +10 -1
- package/dist/components/features/media-library/hooks/use-media-library.d.ts +3 -1
- package/dist/components/features/media-library/media-library.d.ts +1 -1
- package/dist/components/features/media-library/media-library.strings.d.ts +39 -3
- package/dist/components/features/media-library/media-library.types.d.ts +82 -9
- package/dist/components/features/media-library/partials/media-library-partials.d.ts +3 -3
- package/dist/components/features/mentions/hooks/use-mentions-search.d.ts +7 -0
- package/dist/components/features/mentions/hooks/use-mentions.d.ts +16 -1
- package/dist/components/features/mentions/index.d.ts +1 -1
- package/dist/components/features/mentions/mentions.strings.d.ts +10 -2
- package/dist/components/features/mentions/partials/mention-chip.d.ts +1 -0
- package/dist/components/features/mentions/partials/mention-inline-suggestions.d.ts +12 -1
- package/dist/components/features/mentions/partials/mention-picker.d.ts +8 -1
- package/dist/components/features/mentions/partials/mention-search-error.d.ts +6 -0
- package/dist/components/features/mentions/utils/index.d.ts +0 -1
- package/dist/components/features/overlays/alert-dialog.d.ts +1 -1
- package/dist/components/features/overlays/dialog.d.ts +1 -1
- package/dist/components/features/overlays/drawer.d.ts +1 -1
- package/dist/components/features/overlays/hooks/use-overlay-visibility.d.ts +2 -2
- package/dist/components/features/overlays/index.d.ts +2 -2
- package/dist/components/features/overlays/overlays.strings.d.ts +2 -1
- package/dist/components/features/overlays/overlays.types.d.ts +27 -10
- package/dist/components/features/products/components/index.d.ts +0 -10
- package/dist/components/features/products/components/product-contract-overview.d.ts +1 -1
- package/dist/components/features/products/components/product-details-card.d.ts +1 -1
- package/dist/components/features/products/components/product-operations-card.d.ts +1 -1
- package/dist/components/features/products/components/product-option-action-menu.d.ts +1 -1
- package/dist/components/features/products/components/product-options-summary.d.ts +1 -1
- package/dist/components/features/products/components/product-policies-card.d.ts +1 -1
- package/dist/components/features/products/components/product-quote-preview-card.d.ts +1 -1
- package/dist/components/features/products/components/product-readiness-card.d.ts +1 -1
- package/dist/components/features/products/components/product-structure-card.d.ts +1 -1
- package/dist/components/features/products/components/product-variant-action-menu.d.ts +1 -1
- package/dist/components/features/products/components/product-variants-manager.d.ts +1 -1
- package/dist/components/features/products/components/product-variants-table.d.ts +1 -1
- package/dist/components/features/products/partials/product-surface.d.ts +15 -0
- package/dist/components/features/products/products.strings.d.ts +8 -0
- package/dist/components/features/products/products.types.d.ts +26 -8
- package/dist/components/features/questionnaire/questionnaire.types.d.ts +7 -2
- package/dist/components/features/resource/index.d.ts +2 -3
- package/dist/components/features/resource/resource.d.ts +2 -10
- package/dist/components/features/resource/resource.types.d.ts +7 -147
- package/dist/components/features/resource-assignment/partials/assignment-surface.d.ts +15 -0
- package/dist/components/features/resource-assignment/resource-assignment.strings.d.ts +6 -1
- package/dist/components/features/resource-assignment/resource-assignment.types.d.ts +6 -0
- package/dist/components/features/rich-text-editor/form-rich-text-editor.d.ts +1 -1
- package/dist/components/features/rich-text-editor/partials/caret-helpers.d.ts +5 -7
- package/dist/components/features/rich-text-editor/partials/editor-field-aria.d.ts +14 -0
- package/dist/components/features/rich-text-editor/partials/html-helpers.d.ts +2 -3
- package/dist/components/features/rich-text-editor/partials/image-uploads.d.ts +6 -2
- package/dist/components/features/rich-text-editor/partials/index.d.ts +2 -3
- package/dist/components/features/rich-text-editor/partials/rich-text-editor-tiptap.d.ts +0 -1
- package/dist/components/features/rich-text-editor/partials/rich-text-editor-toolbar.d.ts +5 -4
- package/dist/components/features/rich-text-editor/rich-text-editor.recipes.d.ts +1 -1
- package/dist/components/features/rich-text-editor/rich-text-editor.types.d.ts +30 -4
- package/dist/components/features/schema-form/hooks/use-schema-form.d.ts +10 -1
- package/dist/components/features/schema-form/partials/schema-form-field.d.ts +3 -1
- package/dist/components/features/schema-form/schema-form.d.ts +1 -1
- package/dist/components/features/schema-form/schema-form.types.d.ts +13 -5
- package/dist/components/features/schema-form/schema-form.utils.d.ts +1 -1
- package/dist/components/features/suggestions/suggestions.strings.d.ts +14 -0
- package/dist/components/features/suggestions/suggestions.types.d.ts +13 -5
- package/dist/components/features/table/data-table.d.ts +1 -1
- package/dist/components/features/table/filter-bar.d.ts +1 -1
- package/dist/components/features/table/index.d.ts +1 -0
- package/dist/components/features/table/pagination.d.ts +1 -1
- package/dist/components/features/table/partials/cell-value.d.ts +1 -1
- package/dist/components/features/table/table-body.d.ts +1 -1
- package/dist/components/features/table/table-header.d.ts +1 -1
- package/dist/components/features/table/table-helpers.d.ts +37 -12
- package/dist/components/features/table/table-region.recipes.d.ts +11 -0
- package/dist/components/features/table/table-toolbar.d.ts +1 -1
- package/dist/components/features/table/table.strings.d.ts +4 -0
- package/dist/components/features/table/table.types.d.ts +91 -49
- package/dist/components/features/theme-tweaker/theme-provider-settings.d.ts +4 -0
- package/dist/components/features/theme-tweaker/theme-tweaker.strings.d.ts +10 -7
- package/dist/components/features/theme-tweaker/theme-tweaker.utils.d.ts +17 -0
- package/dist/components/layout/app-shell/app-shell.types.d.ts +46 -49
- package/dist/components/layout/app-shell/index.d.ts +2 -2
- package/dist/components/layout/app-shell/shell-regions.d.ts +9 -0
- package/dist/components/layout/app-shell/shell-skip-link.d.ts +9 -0
- package/dist/components/layout/app-shell/sidebar-inset-layout.d.ts +1 -1
- package/dist/components/layout/app-shell/stacked-layout.d.ts +1 -1
- package/dist/components/layout/app-shell/topbar-sidebar-layout.d.ts +1 -1
- package/dist/components/layout/auth/auth-shell.d.ts +1 -1
- package/dist/components/layout/auth/auth.types.d.ts +0 -5
- package/dist/components/layout/containers/inline-gutter-context.d.ts +7 -0
- package/dist/components/layout/containers/main-landmark-context.d.ts +6 -0
- package/dist/components/layout/header/header.types.d.ts +19 -8
- package/dist/components/layout/header/partials/header-global-search-trigger.d.ts +1 -1
- package/dist/components/layout/header/partials/header-notifications.d.ts +1 -1
- package/dist/components/layout/header/partials/header-search.d.ts +1 -1
- package/dist/components/layout/hooks/use-command-shortcut.d.ts +10 -1
- package/dist/components/layout/layout.types.d.ts +6 -4
- package/dist/components/layout/navigation/breadcrumb-progress/breadcrumb-progress.d.ts +1 -1
- package/dist/components/layout/navigation/breadcrumb-progress/types.d.ts +9 -0
- package/dist/components/layout/navigation/section-nav/section-nav.d.ts +8 -1
- package/dist/components/layout/navigation/side-nav.d.ts +3 -2
- package/dist/components/layout/normalize-layout-path.d.ts +1 -0
- package/dist/components/layout/page/index.d.ts +2 -3
- package/dist/components/layout/page/page.strings.d.ts +12 -0
- package/dist/components/layout/page/page.types.d.ts +7 -110
- package/dist/components/layout/page/partials/page-header.d.ts +1 -1
- package/dist/components/layout/settings/index.d.ts +1 -1
- package/dist/components/layout/settings/settings.d.ts +4 -6
- package/dist/components/layout/sidebar/app-sidebar.d.ts +1 -1
- package/dist/components/layout/sidebar/components/sidebar-grouped-navigation.d.ts +1 -1
- package/dist/components/layout/sidebar/components/sidebar-navigation-footer.d.ts +1 -1
- package/dist/components/layout/sidebar/components/sidebar-navigation.d.ts +1 -1
- package/dist/components/layout/sidebar/index.d.ts +1 -1
- package/dist/components/layout/sidebar/sidebar-navigation-rail.d.ts +17 -7
- package/dist/components/layout/sidebar/sidebar.context.d.ts +1 -0
- package/dist/components/layout/sidebar/sidebar.types.d.ts +12 -12
- package/dist/components/layout/sidebar/sidebar.utils.d.ts +4 -0
- package/dist/components/layout/workspace/workspace.strings.d.ts +2 -2
- package/dist/components/layout/workspace/workspace.types.d.ts +13 -7
- package/dist/components/primitives/date.d.ts +22 -3
- package/dist/components/primitives/file-size.d.ts +8 -2
- package/dist/components/primitives/index.d.ts +1 -1
- package/dist/components/primitives/initials.d.ts +3 -1
- package/dist/components/primitives/link.d.ts +11 -3
- package/dist/components/primitives/money.d.ts +2 -2
- package/dist/components/primitives/number.d.ts +3 -2
- package/dist/components/typography/heading.d.ts +9 -3
- package/dist/components/typography/index.d.ts +1 -1
- package/dist/components/typography/rich-text/rich-text-tree.d.ts +7 -5
- package/dist/components/typography/text-link.d.ts +10 -3
- package/dist/components/ui/badge.d.ts +2 -4
- package/dist/components/ui/breadcrumb.d.ts +2 -3
- package/dist/components/ui/button.d.ts +8 -2
- package/dist/components/ui/collapsible.d.ts +1 -4
- package/dist/components/ui/command.d.ts +20 -18
- package/dist/components/ui/dialog.d.ts +3 -9
- package/dist/components/ui/empty.d.ts +2 -2
- package/dist/components/ui/input-group.d.ts +3 -3
- package/dist/components/ui/item.d.ts +3 -3
- package/dist/components/ui/popover.d.ts +3 -7
- package/dist/components/ui/sheet.d.ts +4 -12
- package/dist/components/ui/sidebar-state.d.ts +6 -1
- package/dist/components/ui/sidebar.d.ts +7 -4
- package/dist/components/ui/tabs.d.ts +2 -2
- package/dist/components/ui/toggle-group.d.ts +3 -3
- package/dist/components/ui/toggle.d.ts +2 -2
- package/dist/components/ui/tooltip.d.ts +1 -3
- package/dist/{containers-CIxwbZt5.js → containers-BdfLTP4w.js} +37 -32
- package/dist/containers-BdfLTP4w.js.map +1 -0
- package/dist/content-block-hooks-Z3iKjqd1.js +17 -0
- package/dist/content-block-hooks-Z3iKjqd1.js.map +1 -0
- package/dist/{copyable-DIznBqiT.js → copyable-Bmr14W0d.js} +6 -6
- package/dist/{copyable-DIznBqiT.js.map → copyable-Bmr14W0d.js.map} +1 -1
- package/dist/{data-display-BdgCAw8T.js → data-display-CWe9SOYh.js} +264 -250
- package/dist/data-display-CWe9SOYh.js.map +1 -0
- package/dist/date-3qsCE1ID.js +209 -0
- package/dist/date-3qsCE1ID.js.map +1 -0
- package/dist/date-picker-D1keJQIG.js +1617 -0
- package/dist/date-picker-D1keJQIG.js.map +1 -0
- package/dist/date-pickers-D8aJoeHc.js +185 -0
- package/dist/date-pickers-D8aJoeHc.js.map +1 -0
- package/dist/disclosure-panel-B0HFNZ9x.js.map +1 -1
- package/dist/{display-KsZLw9Ov.js → display-VlmP1I0i.js} +23 -46
- package/dist/display-VlmP1I0i.js.map +1 -0
- package/dist/{dropdown-menu-CLs8Lihj.js → dropdown-menu-B8hjvbkS.js} +9 -9
- package/dist/{dropdown-menu-CLs8Lihj.js.map → dropdown-menu-B8hjvbkS.js.map} +1 -1
- package/dist/dropzone-CHBNK3de.js +116 -0
- package/dist/dropzone-CHBNK3de.js.map +1 -0
- package/dist/features/activities.js +767 -700
- package/dist/features/activities.js.map +1 -1
- package/dist/features/ai-chat.js +280 -235
- package/dist/features/ai-chat.js.map +1 -1
- package/dist/features/appointment-calendar.js +430 -334
- package/dist/features/appointment-calendar.js.map +1 -1
- package/dist/features/async-preview.js +351 -265
- package/dist/features/async-preview.js.map +1 -1
- package/dist/features/combobox.js +2 -2
- package/dist/features/comments.js +1 -1
- package/dist/features/data-view.js +212 -151
- package/dist/features/data-view.js.map +1 -1
- package/dist/features/email-composer/engine.js +1 -1
- package/dist/features/email-composer.js +347 -313
- package/dist/features/email-composer.js.map +1 -1
- package/dist/features/event-calendar.js +501 -348
- package/dist/features/event-calendar.js.map +1 -1
- package/dist/features/filters.js +2 -2
- package/dist/features/global-search.js +250 -210
- package/dist/features/global-search.js.map +1 -1
- package/dist/features/kanban.js +280 -210
- package/dist/features/kanban.js.map +1 -1
- package/dist/features/map/style.css +15 -0
- package/dist/features/map.js +435 -404
- package/dist/features/map.js.map +1 -1
- package/dist/features/media-library.js +1745 -1195
- package/dist/features/media-library.js.map +1 -1
- package/dist/features/mentions.js +2 -2
- package/dist/features/overlays.js +2 -2
- package/dist/features/products.js +1862 -1759
- package/dist/features/products.js.map +1 -1
- package/dist/features/questionnaire.js +188 -168
- package/dist/features/questionnaire.js.map +1 -1
- package/dist/features/resource-assignment.js +223 -191
- package/dist/features/resource-assignment.js.map +1 -1
- package/dist/features/resource.js +55 -217
- package/dist/features/resource.js.map +1 -1
- package/dist/features/rich-text-editor.js +28 -19
- package/dist/features/rich-text-editor.js.map +1 -1
- package/dist/features/schema-form.js +380 -287
- package/dist/features/schema-form.js.map +1 -1
- package/dist/features/suggestions.js +90 -74
- package/dist/features/suggestions.js.map +1 -1
- package/dist/features/table.js +2 -2
- package/dist/features/theme-tweaker.js +718 -627
- package/dist/features/theme-tweaker.js.map +1 -1
- package/dist/feedback-DmqmXKLn.js +254 -0
- package/dist/feedback-DmqmXKLn.js.map +1 -0
- package/dist/{field-affordance-recipes-DWcNcOjh.js → field-affordance-recipes-DfbMadot.js} +13 -9
- package/dist/field-affordance-recipes-DfbMadot.js.map +1 -0
- package/dist/field-control-attributes-B6i335wr.js +18 -0
- package/dist/field-control-attributes-B6i335wr.js.map +1 -0
- package/dist/field-state-recipes-EtCxpEy3.js +18 -0
- package/dist/field-state-recipes-EtCxpEy3.js.map +1 -0
- package/dist/filters-BviMRMLS.js +2692 -0
- package/dist/filters-BviMRMLS.js.map +1 -0
- package/dist/{focus-recipes-B653VaLq.js → focus-recipes-DSkiUvUp.js} +3 -3
- package/dist/focus-recipes-DSkiUvUp.js.map +1 -0
- package/dist/form-field-BdfCwSoQ.js +74 -0
- package/dist/form-field-BdfCwSoQ.js.map +1 -0
- package/dist/{form-sizing-Bs2qFUeE.js → form-sizing-DE_dZw32.js} +3 -3
- package/dist/{form-sizing-Bs2qFUeE.js.map → form-sizing-DE_dZw32.js.map} +1 -1
- package/dist/{forms-C0RGnJTe.js → forms-B8DzJnBN.js} +35 -35
- package/dist/forms-B8DzJnBN.js.map +1 -0
- package/dist/forms-numeric-DOBswjKj.js +992 -0
- package/dist/forms-numeric-DOBswjKj.js.map +1 -0
- package/dist/{header-DMMxG__r.js → header-Cq3G0ZRP.js} +163 -158
- package/dist/header-Cq3G0ZRP.js.map +1 -0
- package/dist/hooks/use-files.d.ts +2 -0
- package/dist/{hooks-DB6CJ4MR.js → hooks-DHfeSMAO.js} +34 -14
- package/dist/hooks-DHfeSMAO.js.map +1 -0
- package/dist/{http-D_6rOnzU.js → http-Cu-GPpss.js} +61 -35
- package/dist/http-Cu-GPpss.js.map +1 -0
- package/dist/{icon-badge-DZF-YjQp.js → icon-badge-B0Kq7wom.js} +3 -3
- package/dist/{icon-badge-DZF-YjQp.js.map → icon-badge-B0Kq7wom.js.map} +1 -1
- package/dist/index.js +6 -6
- package/dist/inline-gutter-context-CSqmrMFZ.js +11 -0
- package/dist/inline-gutter-context-CSqmrMFZ.js.map +1 -0
- package/dist/{input-DMBwAZmr.js → input-2YrgTUrz.js} +3 -3
- package/dist/{input-DMBwAZmr.js.map → input-2YrgTUrz.js.map} +1 -1
- package/dist/{input-CvyDQlY7.js → input-DfJyrjoR.js} +7 -7
- package/dist/{input-CvyDQlY7.js.map → input-DfJyrjoR.js.map} +1 -1
- package/dist/{interaction-recipes-XR9ZpVYL.js → interaction-recipes-DmuS1ase.js} +2 -2
- package/dist/{interaction-recipes-XR9ZpVYL.js.map → interaction-recipes-DmuS1ase.js.map} +1 -1
- package/dist/item-GJ9mvCcg.js +279 -0
- package/dist/item-GJ9mvCcg.js.map +1 -0
- 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 +2 -2
- package/dist/layout/settings.js +2 -2
- package/dist/layout/sidebar.js +3 -3
- package/dist/layout/workspace.js +1 -1
- package/dist/layout.js +12 -12
- package/dist/layout.types-DbtnyAtd.js +33 -0
- package/dist/layout.types-DbtnyAtd.js.map +1 -0
- package/dist/lib/anchored-positioning.d.ts +11 -0
- package/dist/lib/field-affordance-recipes.d.ts +10 -0
- package/dist/lib/field-control-attributes.d.ts +11 -0
- package/dist/lib/field-state-recipes.d.ts +8 -0
- package/dist/lib/focus-recipes.d.ts +7 -0
- package/dist/lib/format.d.ts +26 -0
- package/dist/lib/money-format.d.ts +6 -0
- package/dist/lib/motion-recipes.d.ts +6 -0
- package/dist/lib/surface-recipes.d.ts +33 -3
- package/dist/lib/theme-scope.d.ts +17 -1
- package/dist/lib/token-merge.generated.d.ts +19 -25
- package/dist/lib/ui-provider/index.d.ts +1 -1
- package/dist/lib/ui-provider/types.d.ts +5 -0
- package/dist/lib/use-controllable-state.d.ts +16 -0
- package/dist/lib/use-copy-feedback.d.ts +15 -0
- package/dist/lib/utils.js +1 -1
- package/dist/lib/variant-props.d.ts +9 -0
- package/dist/main-landmark-context-BAsyqp2I.js +11 -0
- package/dist/main-landmark-context-BAsyqp2I.js.map +1 -0
- package/dist/mentions-zz0ewNIq.js +670 -0
- package/dist/mentions-zz0ewNIq.js.map +1 -0
- package/dist/message-BiiVrRrm.js +138 -0
- package/dist/message-BiiVrRrm.js.map +1 -0
- package/dist/{metadata-list-C3MkU-Om.js → metadata-list-G85roWjS.js} +13 -12
- package/dist/metadata-list-G85roWjS.js.map +1 -0
- package/dist/{motion-recipes-DitYv6P2.js → motion-recipes-CUc_aHuG.js} +7 -4
- package/dist/motion-recipes-CUc_aHuG.js.map +1 -0
- package/dist/navigation-C0Be5C3i.js +304 -0
- package/dist/navigation-C0Be5C3i.js.map +1 -0
- package/dist/navigation-CmqaQR_G.js +257 -0
- package/dist/navigation-CmqaQR_G.js.map +1 -0
- package/dist/normalize-layout-path-BmEgg6fu.js +14 -0
- package/dist/normalize-layout-path-BmEgg6fu.js.map +1 -0
- package/dist/number-NFWKIoiK.js +340 -0
- package/dist/number-NFWKIoiK.js.map +1 -0
- package/dist/{overflow-tab-bar-IVFVQFV6.js → overflow-tab-bar-DV7HE_3t.js} +8 -8
- package/dist/{overflow-tab-bar-IVFVQFV6.js.map → overflow-tab-bar-DV7HE_3t.js.map} +1 -1
- package/dist/{overlays-BSgCtM2v.js → overlays-D-gAIfPF.js} +369 -364
- package/dist/overlays-D-gAIfPF.js.map +1 -0
- package/dist/page-D4pQhgSq.js +216 -0
- package/dist/page-D4pQhgSq.js.map +1 -0
- package/dist/{page-header-commands-7P3sfE9u.js → page-header-commands-elelNOfd.js} +29 -29
- package/dist/{page-header-commands-7P3sfE9u.js.map → page-header-commands-elelNOfd.js.map} +1 -1
- package/dist/{pagination-CgCjElfu.js → pagination-BuSWw1US.js} +22 -23
- package/dist/pagination-BuSWw1US.js.map +1 -0
- package/dist/popover-BpMxbqEK.js +205 -0
- package/dist/popover-BpMxbqEK.js.map +1 -0
- package/dist/{popover-menu-DlnQ2zlR.js → popover-menu-CO-_iiuz.js} +7 -7
- package/dist/{popover-menu-DlnQ2zlR.js.map → popover-menu-CO-_iiuz.js.map} +1 -1
- package/dist/{popover.recipes-DdiEp0rd.js → popover.recipes-BqkdvlZn.js} +3 -4
- package/dist/{popover.recipes-DdiEp0rd.js.map → popover.recipes-BqkdvlZn.js.map} +1 -1
- package/dist/{portal-recipes-BpsV_iRw.js → portal-recipes-BPeS4rGB.js} +2 -2
- package/dist/{portal-recipes-BpsV_iRw.js.map → portal-recipes-BPeS4rGB.js.map} +1 -1
- package/dist/primitives-BlC1lXBr.js +447 -0
- package/dist/primitives-BlC1lXBr.js.map +1 -0
- package/dist/primitives.js +4 -4
- package/dist/{progress-BJhQP9WX.js → progress-RARK8AjB.js} +5 -5
- package/dist/{progress-BJhQP9WX.js.map → progress-RARK8AjB.js.map} +1 -1
- package/dist/receipt-CUf2Vegp.js +114 -0
- package/dist/receipt-CUf2Vegp.js.map +1 -0
- package/dist/rich-text-Cypm9__d.js +44 -0
- package/dist/rich-text-Cypm9__d.js.map +1 -0
- package/dist/rich-text-editor-Z6cQepsA.js +919 -0
- package/dist/rich-text-editor-Z6cQepsA.js.map +1 -0
- package/dist/rich-text-editor-toolbar-DYbRJARB.js +100 -0
- package/dist/rich-text-editor-toolbar-DYbRJARB.js.map +1 -0
- package/dist/rich-text-tree-DdKHIJx4.js +154 -0
- package/dist/rich-text-tree-DdKHIJx4.js.map +1 -0
- package/dist/{scroll-area-B0dB2cBi.js → scroll-area-B9HKbji0.js} +3 -3
- package/dist/{scroll-area-B0dB2cBi.js.map → scroll-area-B9HKbji0.js.map} +1 -1
- package/dist/{separator-Ct_WSWTJ.js → separator-DaDe26sf.js} +3 -3
- package/dist/separator-DaDe26sf.js.map +1 -0
- package/dist/{separator-Bb17I4pu.js → separator-KGsNXt2J.js} +2 -2
- package/dist/{separator-Bb17I4pu.js.map → separator-KGsNXt2J.js.map} +1 -1
- package/dist/services/actions/action-adapters.d.ts +5 -2
- package/dist/services/actions/index.d.ts +1 -1
- package/dist/services/actions.js +2 -2
- package/dist/services/actions.js.map +1 -1
- package/dist/settings-D5j_RJvT.js +160 -0
- package/dist/settings-D5j_RJvT.js.map +1 -0
- package/dist/sheet-B6j_BE9O.js +241 -0
- package/dist/sheet-B6j_BE9O.js.map +1 -0
- package/dist/{sidebar-f9gRWXIR.js → sidebar-C-iQ_TJP.js} +379 -350
- package/dist/sidebar-C-iQ_TJP.js.map +1 -0
- package/dist/sidebar-D5VO2W8S.js +715 -0
- package/dist/sidebar-D5VO2W8S.js.map +1 -0
- package/dist/{skeleton-BapcJd9C.js → skeleton-Cab_KgVo.js} +13 -13
- package/dist/skeleton-Cab_KgVo.js.map +1 -0
- package/dist/{smart-card-CW0hjetE.js → smart-card-C59z6KFO.js} +217 -210
- package/dist/smart-card-C59z6KFO.js.map +1 -0
- package/dist/{structure-DuxKl954.js → structure-DElaQwwN.js} +2 -2
- package/dist/{structure-DuxKl954.js.map → structure-DElaQwwN.js.map} +1 -1
- package/dist/style.css +1 -1
- package/dist/{surface-recipes-BKRVW8Os.js → surface-recipes-DV6rrOFq.js} +11 -3
- package/dist/surface-recipes-DV6rrOFq.js.map +1 -0
- package/dist/table-CSRUgpdK.js +180 -0
- package/dist/table-CSRUgpdK.js.map +1 -0
- package/dist/table-DdXDBsR_.js +1657 -0
- package/dist/table-DdXDBsR_.js.map +1 -0
- package/dist/tabs-WnHfV2pM.js +192 -0
- package/dist/tabs-WnHfV2pM.js.map +1 -0
- package/dist/{text-inputs-B1culiSK.js → text-inputs-ljyBYaCd.js} +112 -112
- package/dist/text-inputs-ljyBYaCd.js.map +1 -0
- package/dist/theme.css +21 -5
- package/dist/timelines-mOmS9Eh3.js +479 -0
- package/dist/timelines-mOmS9Eh3.js.map +1 -0
- package/dist/tooltip-yjX-Uv-p.js +112 -0
- package/dist/tooltip-yjX-Uv-p.js.map +1 -0
- package/dist/{tree-CzUJHnFs.js → tree-YpkxUG2Z.js} +80 -72
- package/dist/tree-YpkxUG2Z.js.map +1 -0
- package/dist/typography/rich-text.js +1 -1
- package/dist/{typography-BQnine1k.js → typography-C0dELqYV.js} +46 -40
- package/dist/typography-C0dELqYV.js.map +1 -0
- package/dist/typography.js +1 -1
- package/dist/{ui-provider-C-74NVLc.js → ui-provider-Bu1S-o96.js} +4 -3
- package/dist/ui-provider-Bu1S-o96.js.map +1 -0
- package/dist/ui-provider.js +2 -2
- package/dist/upload-DMuMYJFT.js +875 -0
- package/dist/upload-DMuMYJFT.js.map +1 -0
- package/dist/{usage-card-BeSLY0i0.js → usage-card-DDPki5P1.js} +57 -54
- package/dist/usage-card-DDPki5P1.js.map +1 -0
- package/dist/use-controllable-state-BlP8SyBI.js +13 -0
- package/dist/use-controllable-state-BlP8SyBI.js.map +1 -0
- package/dist/use-copy-feedback-CzcaqlLf.js +28 -0
- package/dist/use-copy-feedback-CzcaqlLf.js.map +1 -0
- package/dist/use-metric-format-options-Dk4rC1NO.js +251 -0
- package/dist/use-metric-format-options-Dk4rC1NO.js.map +1 -0
- package/dist/{utils-B6kKb8jB.js → utils-BVbAG2J6.js} +128 -112
- package/dist/utils-BVbAG2J6.js.map +1 -0
- package/dist/value-inputs-h5MwjGCo.js +982 -0
- package/dist/value-inputs-h5MwjGCo.js.map +1 -0
- package/dist/value-typography-D15uwfj-.js +154 -0
- package/dist/value-typography-D15uwfj-.js.map +1 -0
- package/dist/workspace-DIryPqBt.js +400 -0
- package/dist/workspace-DIryPqBt.js.map +1 -0
- package/docs/consumer-skill/SKILL.md +7 -0
- package/docs/consumer-skill/agents/themelia-ui-designer.md +11 -2
- package/docs/consumer-skill/examples/analytics.tsx +1 -1
- package/docs/consumer-skill/examples/app-layout.tsx +3 -3
- package/docs/consumer-skill/examples/commerce-lines.tsx +7 -5
- package/docs/consumer-skill/examples/detail.tsx +3 -2
- package/docs/consumer-skill/examples/edit.tsx +3 -3
- package/docs/consumer-skill/examples/email-composer.tsx +1 -1
- package/docs/consumer-skill/examples/index-table.tsx +2 -2
- package/docs/consumer-skill/examples/scoped-directory.tsx +7 -6
- package/docs/consumer-skill/references/agents-md.md +27 -23
- package/docs/consumer-skill/references/analytics.md +33 -4
- package/docs/consumer-skill/references/building-views.md +213 -0
- package/docs/consumer-skill/references/catalogue.md +617 -0
- package/docs/consumer-skill/references/component-contracts.json +25852 -32067
- package/docs/consumer-skill/references/composition.md +42 -21
- package/docs/consumer-skill/references/design-contract.md +1 -0
- package/docs/consumer-skill/references/discovery.md +8 -5
- package/docs/consumer-skill/references/installation.md +59 -10
- package/docs/consumer-skill/references/integration.md +28 -5
- package/docs/consumer-skill/references/product-composition.md +2 -2
- package/docs/consumer-skill/references/public-api.json +726 -641
- package/docs/consumer-skill/references/review.md +57 -15
- package/docs/consumer-skill/references/rhf-workflows.md +72 -0
- package/docs/consumer-skill/references/screen-archetypes.md +2 -2
- package/docs/consumer-skill/references/theming.md +8 -3
- package/docs/consumer-skill/references/tokens.json +4 -4
- package/docs/consumer-skill/references/workflows.md +7 -7
- package/docs/consumer-skill/scripts/composition-policy.mjs +178 -44
- package/docs/consumer-skill/scripts/composition.mjs +4 -1
- package/docs/consumer-skill/scripts/discovery.mjs +3 -1
- package/docs/consumer-skill/scripts/setup-skills.mjs +74 -10
- package/docs/consumer-skills/themelia-components/SKILL.md +8 -4
- package/docs/consumer-skills/themelia-composition/SKILL.md +7 -3
- package/docs/consumer-skills/themelia-design/SKILL.md +7 -1
- package/docs/consumer-skills/themelia-tokenization/SKILL.md +1 -1
- package/package.json +12 -13
- package/templates/README.md +3 -2
- package/templates/admin-shell-template.tsx +50 -11
- package/templates/analytics-operations-template.tsx +20 -24
- package/templates/customers-template.tsx +30 -25
- package/templates/index.ts +2 -8
- package/templates/orders-template.tsx +28 -24
- package/templates/products-template.tsx +14 -4
- package/templates/user-permissions-template.tsx +11 -14
- package/dist/accordion-B9MHG0cT.js.map +0 -1
- package/dist/action-menu-Dr8K-ghE.js +0 -284
- package/dist/action-menu-Dr8K-ghE.js.map +0 -1
- package/dist/ai-artifact-C58tQcBy.js +0 -1185
- package/dist/ai-artifact-C58tQcBy.js.map +0 -1
- package/dist/anchored-positioning-DPnKTvNs.js +0 -6
- package/dist/anchored-positioning-DPnKTvNs.js.map +0 -1
- package/dist/app-shell-B_IuNWOo.js +0 -321
- package/dist/app-shell-B_IuNWOo.js.map +0 -1
- package/dist/auth-DTkkshS8.js.map +0 -1
- package/dist/badge-xIiV_E7f.js.map +0 -1
- package/dist/base/sheet.js +0 -3
- package/dist/breadcrumbs-J-K2kl4c.js +0 -129
- package/dist/breadcrumbs-J-K2kl4c.js.map +0 -1
- package/dist/button-S2Cubiiz.js.map +0 -1
- package/dist/buttons-BedGfygC.js.map +0 -1
- package/dist/cascader-B1MiqkBq.js +0 -439
- package/dist/cascader-B1MiqkBq.js.map +0 -1
- package/dist/choice-inputs-zUgBZfE4.js.map +0 -1
- package/dist/code-block-BzmM9Eig.js.map +0 -1
- package/dist/collapsible-BkAI_XD4.js +0 -81
- package/dist/collapsible-BkAI_XD4.js.map +0 -1
- package/dist/combobox-BEx0vJgF.js +0 -362
- package/dist/combobox-BEx0vJgF.js.map +0 -1
- package/dist/combobox-BwzoXFSG.js +0 -884
- package/dist/combobox-BwzoXFSG.js.map +0 -1
- package/dist/command-CrlPIL6m.js +0 -425
- package/dist/command-CrlPIL6m.js.map +0 -1
- package/dist/comments-Dmpp0YIc.js +0 -1169
- package/dist/comments-Dmpp0YIc.js.map +0 -1
- package/dist/components/base/buttons/tooltip-button.d.ts +0 -7
- package/dist/components/base/display/content-block.d.ts +0 -75
- package/dist/components/base/display/content-block.strings.d.ts +0 -5
- package/dist/components/base/sheet/index.d.ts +0 -29
- package/dist/components/blocks/ai/use-copy-feedback.d.ts +0 -6
- package/dist/components/blocks/data-display/metadata/index.d.ts +0 -30
- package/dist/components/features/mentions/utils/split-html-by-mentions.d.ts +0 -16
- package/dist/components/features/resource/resource.strings.d.ts +0 -12
- package/dist/components/features/rich-text-editor/partials/rich-text-editor-fallback.d.ts +0 -8
- package/dist/components/features/sync/index.d.ts +0 -26
- package/dist/components/features/sync/sync-range-dialog-form.d.ts +0 -5
- package/dist/components/features/sync/sync.strings.d.ts +0 -18
- package/dist/components/features/sync/sync.types.d.ts +0 -44
- package/dist/components/layout/page/partials/page-actions.d.ts +0 -3
- package/dist/components/ui/slot.d.ts +0 -6
- package/dist/containers-CIxwbZt5.js.map +0 -1
- package/dist/data-display-BdgCAw8T.js.map +0 -1
- package/dist/date-Cq8ioE4o.js +0 -144
- package/dist/date-Cq8ioE4o.js.map +0 -1
- package/dist/date-picker-RlIzKom_.js +0 -1551
- package/dist/date-picker-RlIzKom_.js.map +0 -1
- package/dist/date-pickers-DY-CpXS1.js +0 -179
- package/dist/date-pickers-DY-CpXS1.js.map +0 -1
- package/dist/display-KsZLw9Ov.js.map +0 -1
- package/dist/features/sync.js +0 -142
- package/dist/features/sync.js.map +0 -1
- package/dist/feedback-Dm4izqFn.js +0 -240
- package/dist/feedback-Dm4izqFn.js.map +0 -1
- package/dist/field-affordance-recipes-DWcNcOjh.js.map +0 -1
- package/dist/field-state-recipes-BVA2CWHo.js +0 -12
- package/dist/field-state-recipes-BVA2CWHo.js.map +0 -1
- package/dist/filters-DzgSJpMK.js +0 -2257
- package/dist/filters-DzgSJpMK.js.map +0 -1
- package/dist/focus-recipes-B653VaLq.js.map +0 -1
- package/dist/form-field-BriWAXyg.js +0 -63
- package/dist/form-field-BriWAXyg.js.map +0 -1
- package/dist/forms-C0RGnJTe.js.map +0 -1
- package/dist/forms-numeric-DIhghX1Q.js +0 -910
- package/dist/forms-numeric-DIhghX1Q.js.map +0 -1
- package/dist/header-DMMxG__r.js.map +0 -1
- package/dist/hooks-DB6CJ4MR.js.map +0 -1
- package/dist/http-D_6rOnzU.js.map +0 -1
- package/dist/item-DjCcM18E.js +0 -277
- package/dist/item-DjCcM18E.js.map +0 -1
- package/dist/layout.types-Cn7aUzJp.js +0 -20
- package/dist/layout.types-Cn7aUzJp.js.map +0 -1
- package/dist/media-gallery-C-vChPmE.js +0 -203
- package/dist/media-gallery-C-vChPmE.js.map +0 -1
- package/dist/mentions-0_4nWuI-.js +0 -570
- package/dist/mentions-0_4nWuI-.js.map +0 -1
- package/dist/message-g8p7eVtN.js +0 -128
- package/dist/message-g8p7eVtN.js.map +0 -1
- package/dist/metadata-list-C3MkU-Om.js.map +0 -1
- package/dist/motion-recipes-DitYv6P2.js.map +0 -1
- package/dist/navigation-C90-oQFq.js +0 -255
- package/dist/navigation-C90-oQFq.js.map +0 -1
- package/dist/navigation-DaRjthVk.js +0 -288
- package/dist/navigation-DaRjthVk.js.map +0 -1
- package/dist/number-CRU3kGuk.js +0 -354
- package/dist/number-CRU3kGuk.js.map +0 -1
- package/dist/overlays-BSgCtM2v.js.map +0 -1
- package/dist/page-DUUKDAjo.js +0 -331
- package/dist/page-DUUKDAjo.js.map +0 -1
- package/dist/pagination-CgCjElfu.js.map +0 -1
- package/dist/popover-B85RenIl.js +0 -201
- package/dist/popover-B85RenIl.js.map +0 -1
- package/dist/primitives-ByWgGUgt.js +0 -380
- package/dist/primitives-ByWgGUgt.js.map +0 -1
- package/dist/receipt-tOc7B3hw.js +0 -116
- package/dist/receipt-tOc7B3hw.js.map +0 -1
- package/dist/rich-text-Dth5E882.js +0 -78
- package/dist/rich-text-Dth5E882.js.map +0 -1
- package/dist/rich-text-editor-C1fOjBTd.js +0 -1195
- package/dist/rich-text-editor-C1fOjBTd.js.map +0 -1
- package/dist/rich-text-editor-toolbar-laT3tpBT.js +0 -98
- package/dist/rich-text-editor-toolbar-laT3tpBT.js.map +0 -1
- package/dist/sanitize-html-DsQmI48u.js +0 -92
- package/dist/sanitize-html-DsQmI48u.js.map +0 -1
- package/dist/separator-Ct_WSWTJ.js.map +0 -1
- package/dist/settings-Bar5wiSo.js +0 -167
- package/dist/settings-Bar5wiSo.js.map +0 -1
- package/dist/sheet-BGPERY55.js +0 -250
- package/dist/sheet-BGPERY55.js.map +0 -1
- package/dist/sidebar-D-JYMMbY.js +0 -686
- package/dist/sidebar-D-JYMMbY.js.map +0 -1
- package/dist/sidebar-f9gRWXIR.js.map +0 -1
- package/dist/skeleton-BapcJd9C.js.map +0 -1
- package/dist/slot-CLF9kLrS.js +0 -16
- package/dist/slot-CLF9kLrS.js.map +0 -1
- package/dist/smart-card-CW0hjetE.js.map +0 -1
- package/dist/surface-recipes-BKRVW8Os.js.map +0 -1
- package/dist/table-B4TE7iOV.js +0 -175
- package/dist/table-B4TE7iOV.js.map +0 -1
- package/dist/table-CFOWY9pQ.js +0 -1536
- package/dist/table-CFOWY9pQ.js.map +0 -1
- package/dist/tabs-e7ko9S2o.js +0 -191
- package/dist/tabs-e7ko9S2o.js.map +0 -1
- package/dist/text-inputs-B1culiSK.js.map +0 -1
- package/dist/timelines-D3Sl9ueq.js +0 -458
- package/dist/timelines-D3Sl9ueq.js.map +0 -1
- package/dist/tooltip-8wz5S_Zr.js +0 -113
- package/dist/tooltip-8wz5S_Zr.js.map +0 -1
- package/dist/tree-CzUJHnFs.js.map +0 -1
- package/dist/typography-BQnine1k.js.map +0 -1
- package/dist/ui-provider-C-74NVLc.js.map +0 -1
- package/dist/upload-BOW6U2tI.js +0 -855
- package/dist/upload-BOW6U2tI.js.map +0 -1
- package/dist/upload-queue-qUXn1ykN.js +0 -409
- package/dist/upload-queue-qUXn1ykN.js.map +0 -1
- package/dist/usage-card-BeSLY0i0.js.map +0 -1
- package/dist/utils-B6kKb8jB.js.map +0 -1
- package/dist/value-inputs-skdVB2zh.js +0 -980
- package/dist/value-inputs-skdVB2zh.js.map +0 -1
- package/dist/value-typography-uAmWUAL1.js +0 -116
- package/dist/value-typography-uAmWUAL1.js.map +0 -1
- package/dist/workspace-DHeHv0qw.js +0 -411
- package/dist/workspace-DHeHv0qw.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"overlays-D-gAIfPF.js","names":["Dialog","DialogPrimitive","DialogTrigger","DialogClose","DialogContent","Button","DialogHeader","DialogFooter","DialogTitle","DialogDescription","isSimpleText","titleTypography","Dialog","DialogPrimitive","React","DialogTriggerPrimitive","DialogClosePrimitive","DialogContentPrimitive","DialogHeaderPrimitive","DialogFooterPrimitive","DialogTitlePrimitive","DialogDescriptionPrimitive","BaseDialog","AlertDialog","AlertDialogPrimitive","AlertDialogTrigger","AlertDialogContent","AlertDialogFooter","AlertDialogMedia","AlertDialogTitle","AlertDialogDescription","AlertDialogAction","Button","AlertDialogCancel","AlertDialog","AlertDialogPrimitive","React","AlertDialogTriggerPrimitive","AlertDialogContentPrimitive","AlertDialogFooterPrimitive","AlertDialogTitlePrimitive","AlertDialogDescriptionPrimitive","AlertDialogMediaPrimitive","AlertDialogActionPrimitive","AlertDialogCancelPrimitive","BaseAlertDialog","useThemePortalContainer","useOverlayConfig","cn","SheetDescription","SheetTitle","useInsideOverlayLayer","useOpenerFinalFocus","SheetContent","SheetBody","SheetFooter","overlayAnatomyRecipes","SheetClose","SheetHeader","Sheet","OverlayLayer","Text","textWeights","textLineHeights","textSizes","Button","portalClassName","motionRecipes","Button$1","Stack","toneRecipes","modalRegionRecipes","surfaceDividerRecipes","Alert","AlertDescription","compositionRhythm","modalBackdropRecipe","usePopupFocusRecovery","interactionRecipes","React$1","Dialog$2","props","Dialog","DialogTrigger$1","DialogPortal","resolvedContainer","container","className","DialogClose$1","DialogOverlay","DialogContent$1","finalFocusProp","recoverFocus","onFocusCapture","insideOverlay","capture","showCloseButton","XIcon","DialogHeader$1","DialogFooter$1","children","DialogTitle$1","DialogDescription$1","isSimpleText$1","value","titleTypography$1","Dialog$1","DialogTrigger","DialogClose","DialogContent","DialogHeader","textGap","DialogBody","DialogFooter","DialogTitle","DialogDescription","defaultOverlayStrings","defaultConfirmDialogStrings","useOverlayActions","strings","useStrings","customStrings","isExecuting","setIsExecuting","useState","executingRef","useRef","handleConfirm","useCallback","onConfirm","closeDialog","onAsyncConfirm","closeOnAsyncComplete","error","onError","loading","handleCancel","onCancel","handleFormSubmit","formId","form","useMemo","emphasis","tone","confirmTone","resolveOpenValue","nextOpen","currentOpen","normalizeGroupState","result","key","keys","state","hasGroupStateChanged","previous","next","useOverlayVisibility","controlledOpen","internalOpen","setInternalOpen","defaultOpen","isControlled","open","openRef","previousVisibility","useLayoutEffect","useEffect","onOpen","onClose","setOpen","resolvedOpen","onOpenChange","useOverlayVisibilityGroup","keysSignature","keyList","source","stateSignature","stateRef","onOpenChangeRef","setKeyOpen","previousState","nextState","closeOthersOnOpen","item","handlers","previousGroup","group","keyHandlers","previousEntry","usePendingOverlayFocus","popupRef","popup","pending","modal","active","overlayToneGlyphs","HelpCircle","AlertCircle","AlertTriangle","Info","CheckCircle","OverlayToneIcon","Glyph","color","SIZE_CLASSES","ActionDialogImpl","centered","align","defaultDialogAlign","visibility","pendingFocusRef","effectiveLoading","hasContent","alertMessage","hasFooter","footer","showCancel","showConfirm","closeOnBackdropClick","details","closeOnEscape","trigger","isValidElement","surfaceStyle","initialFocusRef","title","size","description","visuallyHideHeader","showIcon","contentClassName","finalConfirmTone","confirmStyle","confirmButtonOnClick","X","ActionDialog","memo","WIDTH_CLASSES","ActionDrawerImpl","isHorizontal","direction","showFooter","SheetTrigger","width","ActionDrawer","AlertDialog$2","AlertDialog","AlertDialogTrigger$1","AlertDialogPortal","AlertDialogOverlay","AlertDialogContent$1","AlertDialogFooter$1","AlertDialogMedia$1","AlertDialogTitle$1","AlertDialogDescription$1","AlertDialogAction$1","AlertDialogCancel$1","isSimpleText","titleTypography","AlertDialog$1","AlertDialogTrigger","AlertDialogContent","AlertDialogHeader","AlertDialogBody","AlertDialogFooter","AlertDialogTitle","AlertDialogDescription","AlertDialogMedia","AlertDialogAction","AlertDialogCancel","ConfirmDialogImpl","resolvedAlign","defaultConfirmAlign","mergedStrings","resolvedConfirmTone","destructive","resolvedTone","toneGlyph","hasHeading","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/hooks/use-pending-overlay-focus.ts","../src/components/features/overlays/overlay-tone-icon.tsx","../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":["\"use client\";\n\nimport { overlayAnatomyRecipes } from '../../lib/overlay-anatomy-recipes';\nimport { motionRecipes } from '../../lib/motion-recipes';\nimport { portalClassName } from '../../lib/portal-recipes';\nimport { modalBackdropRecipe } from './overlay.recipes';\nimport { OverlayLayer, useInsideOverlayLayer, useOpenerFinalFocus } from './overlay-layer';\nimport { usePopupFocusRecovery } from '../../lib/use-popup-focus-recovery';\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 { 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 ...props\n}: DialogPrimitive.Trigger.Props) {\n return (\n <DialogPrimitive.Trigger\n data-slot=\"dialog-trigger\"\n {...props}\n />\n )\n}\n\nfunction DialogPortal({ container, className, ...props }: DialogPrimitive.Portal.Props) {\n const resolvedContainer = useThemePortalContainer(container)\n return <DialogPrimitive.Portal container={resolvedContainer} data-slot=\"dialog-portal\" className={portalClassName(className)} {...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 onFocusCapture,\n finalFocus: finalFocusProp,\n ...props\n}: DialogPrimitive.Popup.Props & {\n showCloseButton?: boolean\n} & { container?: ThemePortalContainer }) {\n const resolvedContainer = useThemePortalContainer(container)\n const recoverFocus = usePopupFocusRecovery(onFocusCapture)\n const insideOverlay = useInsideOverlayLayer()\n const { capture, finalFocus } = useOpenerFinalFocus(finalFocusProp)\n return (\n <DialogPortal container={resolvedContainer}>\n <DialogOverlay forceRender={!insideOverlay} />\n <DialogPrimitive.Popup\n data-slot=\"dialog-content\"\n className={cn(\n motionRecipes.dialog,\n \"bg-background grid max-w-[calc(100%-2rem)] gap-space-xl rounded-surface p-surface text-sm 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 finalFocus={finalFocus}\n onFocusCapture={recoverFocus}\n >\n {capture}\n <OverlayLayer>{children}</OverlayLayer>\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(\"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 \"flex flex-col-reverse 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 ...props\n}: DialogPrimitive.Title.Props) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"leading-none font-medium\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: DialogPrimitive.Description.Props) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\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 — internal modal anatomy behind `ActionDialog`.\n *\n * Not published from any entrypoint: applications use `ActionDialog` (or\n * `ConfirmDialog`) from `themelia-react-ui/features/overlays`, which owns the\n * lifecycle, focus, dismissal and action contract. This wrapper supplies the\n * modal geometry those features share: one framed popover surface whose\n * header, scrolling body and footer each own their inset, with exactly one rule\n * between adjacent visible regions (`modalRegionRecipes`).\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 { textLineHeights, textSizes, textWeights } from '../../typography/text.styles';\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\n/**\n * The title element carries the canonical title role, so custom title nodes\n * match scalar titles and its line box never differs from the Text inside.\n * Descriptions keep the configurable Text default instead.\n */\nconst titleTypography = cn(textSizes.base, textWeights.semibold, textLineHeights.snug);\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', 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 is flush: each region owns its inset once and the rules\n\t\t\t\t// between regions run edge to edge.\n\t\t\t\t'dialog-content--component flex max-h-[min(90vh,48rem)] flex-col gap-0 overflow-hidden rounded-surface bg-popover p-0 text-popover-foreground shadow-xl sm:max-w-lg', 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\tdata-modal-region=\"\"\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 pinned 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\tdata-modal-region=\"\"\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\tdata-modal-region=\"\"\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 m-0', titleTypography, 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=\"inherit\"\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 m-0', 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\n/** ConfirmDialog's defaults, under the `default<Component>Strings` name. */\nexport const defaultConfirmDialogStrings: 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, useRef, 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; the consumer reports or retries.\n\t * Without it the library logs the rejection in development only. */\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\tconst executingRef = useRef(false);\n\n\tconst handleConfirm = useCallback(async () => {\n\t\tif (loading || executingRef.current) return;\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\texecutingRef.current = true;\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\t// A consumer that handles the failure owns its reporting; only an\n\t\t\t\t// unhandled rejection is surfaced in development.\n\t\t\t\tif (onError) onError(error);\n\t\t\t\telse if (import.meta.env?.DEV) console.error('Overlay async confirm failed:', error);\n\t\t\t} finally {\n\t\t\t\texecutingRef.current = false;\n\t\t\t\tsetIsExecuting(false);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tcloseDialog();\n\t}, [loading, onConfirm, onAsyncConfirm, closeOnAsyncComplete, closeDialog, onError]);\n\n\tconst handleCancel = useCallback(() => {\n\t\tif (loading || executingRef.current) return;\n\t\tonCancel?.();\n\t\tcloseDialog();\n\t}, [loading, onCancel, closeDialog]);\n\n\tconst handleFormSubmit = useCallback(async () => {\n\t\tif (!formId || loading || executingRef.current) {\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, loading]);\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\tuseEffect,\n\tuseLayoutEffect,\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\t/** Current visibility. */\n\topen: boolean;\n\t/** Requests a visibility change; spread both onto an overlay. */\n\tonOpenChange: (open: boolean) => void;\n}\n\nexport interface UseOverlayVisibilityOptions {\n\t/** Initial visibility when uncontrolled. Default: `false`. */\n\tdefaultOpen?: boolean;\n\t/** Controlled visibility. Omit to let the hook own it. */\n\topen?: boolean;\n\t/** Fired for each request that differs from the current visibility. */\n\tonOpenChange?: (open: boolean) => void;\n\t/** Fired after a change to open. */\n\tonOpen?: () => void;\n\t/** Fired after a change to closed, whatever dismissed the overlay. */\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\t/** Initial visibility per key when uncontrolled. */\n\tdefaultOpen?: Partial<Record<TKey, boolean>>;\n\t/** Controlled visibility per key. */\n\topen?: Partial<Record<TKey, boolean>>;\n\t/** Fired for each requested change, with the key, its visibility and the proposed group state. */\n\tonOpenChange?: (\n\t\tkey: TKey,\n\t\topen: boolean,\n\t\tstate: OverlayVisibilityGroupState<TKey>,\n\t) => void;\n\t/** Opening one key closes the others, for one-at-a-time overlays. Default: `false`. */\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\tconst previousVisibility = useRef(open);\n\tuseLayoutEffect(() => {\n\t\topenRef.current = open;\n\t}, [isControlled, open]);\n\tuseEffect(() => {\n\t\tif (previousVisibility.current === open) return;\n\t\tpreviousVisibility.current = open;\n\t\tif (open) onOpen?.();\n\t\telse onClose?.();\n\t}, [onClose, onOpen, open]);\n\n\tconst setOpen = useCallback<OverlayOpenSetter>(\n\t\t(nextOpen) => {\n\t\t\tconst resolvedOpen = resolveOpenValue(nextOpen, openRef.current);\n\t\t\tif (openRef.current === resolvedOpen) return;\n\n\t\t\tif (!isControlled) {\n\t\t\t\topenRef.current = resolvedOpen;\n\t\t\t\tsetInternalOpen(resolvedOpen);\n\t\t\t}\n\n\t\t\tonOpenChange?.(resolvedOpen);\n\t\t},\n\t\t[isControlled, 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\t// Consumers pass the keys as an inline literal, so identity is taken from\n\t// the key names: the list only changes when a name does.\n\tconst keysSignature = keys.join('\\u0000');\n\t// oxlint-disable-next-line react-hooks/exhaustive-deps -- `keysSignature` is the cache key for `keys`\n\tconst keyList = useMemo(() => keys as readonly TKey[], [keysSignature]);\n\tconst [internalOpen, setInternalOpen] = useState<OverlayVisibilityGroupState<TKey>>(\n\t\t() => normalizeGroupState(keyList, defaultOpen),\n\t);\n\tconst isControlled = controlledOpen !== undefined;\n\tconst source = isControlled ? controlledOpen : internalOpen;\n\t// The normalized state keeps its identity until one key's visibility changes.\n\tconst stateSignature = keyList.map((key) => (source?.[key] ? '1' : '0')).join('');\n\t// oxlint-disable-next-line react-hooks/exhaustive-deps -- `stateSignature` is the cache key for `source`\n\tconst state = useMemo(() => normalizeGroupState(keyList, source), [keyList, stateSignature]);\n\tconst stateRef = useRef(state);\n\tconst onOpenChangeRef = useRef(onOpenChange);\n\tuseLayoutEffect(() => {\n\t\tstateRef.current = state;\n\t\tonOpenChangeRef.current = onOpenChange;\n\t}, [onOpenChange, 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\tif (!hasGroupStateChanged(previousState, nextState, keyList)) return;\n\n\t\t\tif (!isControlled) {\n\t\t\t\tstateRef.current = nextState;\n\t\t\t\tsetInternalOpen(nextState);\n\t\t\t}\n\n\t\t\tonOpenChangeRef.current?.(key, resolvedOpen, nextState);\n\t\t},\n\t\t[closeOthersOnOpen, isControlled, keyList],\n\t);\n\n\t// Per-key handlers are stable for the life of the key list.\n\tconst handlers = useMemo(() => {\n\t\tconst result = {} as Record<\n\t\t\tTKey,\n\t\t\tPick<UseOverlayVisibilityReturn, 'setOpen' | 'show' | 'hide' | 'toggle'>\n\t\t>;\n\t\tfor (const key of keyList) {\n\t\t\tresult[key] = {\n\t\t\t\tsetOpen: (nextOpen) => setKeyOpen(key, nextOpen),\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};\n\t\t}\n\t\treturn result;\n\t}, [keyList, setKeyOpen]);\n\n\tconst previousGroup = useRef<UseOverlayVisibilityGroupReturn<TKey> | null>(null);\n\tconst group = useMemo(() => {\n\t\tconst previous = previousGroup.current;\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 keyHandlers = handlers[key];\n\t\t\tconst previousEntry = previous?.[key];\n\t\t\t// A key whose visibility did not change keeps its object, so memoized\n\t\t\t// children and effects that depend on it are left alone.\n\t\t\tresult[key] =\n\t\t\t\tpreviousEntry && previousEntry.open === open && previousEntry.setOpen === keyHandlers.setOpen\n\t\t\t\t\t? previousEntry\n\t\t\t\t\t: {\n\t\t\t\t\t\t\topen,\n\t\t\t\t\t\t\tisOpen: open,\n\t\t\t\t\t\t\t...keyHandlers,\n\t\t\t\t\t\t\toverlayProps: { open, onOpenChange: keyHandlers.setOpen },\n\t\t\t\t\t\t};\n\t\t}\n\n\t\treturn result;\n\t}, [handlers, keyList, state]);\n\tuseLayoutEffect(() => {\n\t\tpreviousGroup.current = group;\n\t}, [group]);\n\n\treturn group;\n}\n","import { useLayoutEffect, useRef } from 'react';\n\n/** Keep modal focus anchored when its focused action becomes disabled. */\nexport function usePendingOverlayFocus(pending: boolean, modal: boolean | 'trap-focus' = true) {\n\tconst popupRef = useRef<HTMLDivElement>(null);\n\tuseLayoutEffect(() => {\n\t\tconst popup = popupRef.current;\n\t\tif (!pending || !modal || !popup) return;\n\t\tconst active = popup.ownerDocument.activeElement;\n\t\t// Preserve enabled fields and consumer-owned custom footer controls.\n\t\tif (active === popup.ownerDocument.body || (active && popup.contains(active) && active.matches(':disabled'))) {\n\t\t\tpopup.focus({ preventScroll: true });\n\t\t}\n\t}, [pending, modal]);\n\treturn popupRef;\n}\n","import { AlertCircle, AlertTriangle, CheckCircle, HelpCircle, Info } from 'lucide-react';\n\nimport { textLineHeights, textSizes } from '../../typography/text.styles';\nimport { cn } from '../../../lib/utils';\n\nimport type { OverlayTone } from './overlays.types';\nimport { toneRecipes } from '../../../lib/tone-recipes';\n\n/** One glyph and colour per tone, shared by every overlay's opt-in `showIcon`. */\nexport const overlayToneGlyphs = {\n\tneutral: { Glyph: HelpCircle, color: 'text-muted-foreground', surface: 'bg-muted' },\n\tdestructive: { Glyph: AlertCircle, color: 'text-destructive', surface: toneRecipes.destructive.tint },\n\twarning: { Glyph: AlertTriangle, color: 'text-warning-accent', surface: toneRecipes.warning.tint },\n\tinfo: { Glyph: Info, color: 'text-info', surface: toneRecipes.info.tint },\n\tsuccess: { Glyph: CheckCircle, color: 'text-success', surface: toneRecipes.success.tint },\n} as const satisfies Record<OverlayTone, { Glyph: typeof Info; color: string; surface: string }>;\n\n/**\n * Inline tone glyph for a heading row. The wrapper takes the title's own line\n * box (base size, snug leading, `h-lh`), so the glyph centres on the first title\n * line at any density instead of relying on an optical offset.\n */\nexport function OverlayToneIcon({ tone }: { tone: OverlayTone }) {\n\tconst { Glyph, color } = overlayToneGlyphs[tone];\n\treturn (\n\t\t<span aria-hidden=\"true\" className={cn('overlay-tone-icon--component flex h-lh shrink-0 items-center', textSizes.base, textLineHeights.snug)}>\n\t\t\t<Glyph className={cn('size-icon', color)} />\n\t\t</span>\n\t);\n}\n","import { overlayAnatomyRecipes } from '../../../lib/overlay-anatomy-recipes';\nimport { X } from 'lucide-react';\nimport { isValidElement, memo } 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 { compositionRhythm } from '../../base/structure/composition.recipes';\nimport { useOverlayConfig } from '../../../lib/ui-provider';\nimport { cn } from '../../../lib/utils';\n\nimport { useOverlayActions, useOverlayVisibility } from './hooks';\nimport { usePendingOverlayFocus } from './hooks/use-pending-overlay-focus';\nimport { OverlayToneIcon } from './overlay-tone-icon';\nimport type { ActionDialogProps, OverlaySize } from './overlays.types';\nimport { interactionRecipes } from '../../../lib/interaction-recipes';\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\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\tfinalFocus,\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\talign,\n}: ActionDialogProps) {\n\tconst { defaultDialogAlign } = useOverlayConfig();\n\tconst centered = (align ?? defaultDialogAlign ?? 'start') === 'center';\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 pendingFocusRef = usePendingOverlayFocus(effectiveLoading);\n\tconst hasContent = Boolean(children || alertMessage);\n\t// `footer={null}` is an explicit \"no footer\"; `undefined` keeps the generated one.\n\tconst hasFooter = footer !== null && Boolean(showCancel || showConfirm || footer);\n\n\treturn (\n\t\t<BaseDialog\n\t\t\topen={visibility.open}\n\t\t\tmodal\n\t\t\tdisablePointerDismissal={effectiveLoading || !closeOnBackdropClick}\n\t\t\tonOpenChange={(nextOpen, details) => {\n\t\t\t\tif (!nextOpen && (effectiveLoading || (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 render={<Button type=\"button\" tone=\"secondary\" buttonStyle=\"outline\" />} className=\"overlay-trigger--fallback\">\n\t\t\t\t\t{trigger}\n\t\t\t\t</DialogTrigger>\n\t\t\t))}\n\n\t\t\t<DialogContent\n\t\t\t\tref={pendingFocusRef}\n\t\t\t\tshowCloseButton={false}\n\t\t\t\tstyle={surfaceStyle}\n\t\t\t\tinitialFocus={initialFocusRef}\n\t\t\t\tfinalFocus={finalFocus}\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\tclassName,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{!!(title || description) && (\n\t\t\t\t\t<DialogHeader\n\t\t\t\t\t\tdata-align={centered ? 'center' : 'start'}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'dialog--header',\n\t\t\t\t\t\t\tcentered && cn('text-center', overlayAnatomyRecipes.headerCentered),\n\t\t\t\t\t\t\tvisuallyHideHeader && 'sr-only',\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Stack direction={centered ? 'vertical' : 'horizontal'} gap=\"sm\" align={centered ? 'center' : 'start'} wrap={false}>\n\t\t\t\t\t\t\t{!!showIcon && <OverlayToneIcon tone={tone} />}\n\t\t\t\t\t\t\t<Stack gap=\"normal\" align={centered ? 'center' : undefined} className={cn('min-w-0', centered ? 'w-full' : '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\">\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={compositionRhythm.commands}\n\t\t\t\t\t\t\t\talign={{ base: 'stretch', sm: 'center' }}\n\t\t\t\t\t\t\t\tjustify={centered ? 'center' : '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} disabled={effectiveLoading}>\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\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\tdisabled={effectiveLoading}\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\n\t\t\t\t{/*\n\t\t\t\t * Last in the DOM, drawn in the corner: opening focuses the first\n\t\t\t\t * field or action rather than the dismiss control, and the reading\n\t\t\t\t * order stays title → content → actions.\n\t\t\t\t */}\n\t\t\t\t{!!showCloseButton && (\n\t\t\t\t\t<DialogClose\n\t\t\t\t\t\tdisabled={effectiveLoading}\n\t\t\t\t\t\trender={(\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\ttone=\"secondary\"\n\t\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\ticonOnly\n\t\t\t\t\t\t\t\tdata-overlay-close=\"\"\n\t\t\t\t\t\t\t\tclassName={cn(overlayAnatomyRecipes.close, `z-10 text-muted-foreground ${interactionRecipes.rowHover}`)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<X className=\"size-icon\" />\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\taria-label={strings.close}\n\t\t\t\t\t/>\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 { X } from 'lucide-react';\nimport { isValidElement, memo } 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/sheet';\nimport { Stack } from '../../base/structure';\nimport { compositionRhythm } from '../../base/structure/composition.recipes';\nimport { cn } from '../../../lib/utils';\n\nimport { useOverlayActions, useOverlayVisibility } from './hooks';\nimport { usePendingOverlayFocus } from './hooks/use-pending-overlay-focus';\nimport { OverlayToneIcon } from './overlay-tone-icon';\nimport type { ActionDrawerProps, OverlaySize } from './overlays.types';\nimport { interactionRecipes } from '../../../lib/interaction-recipes';\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\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\tsurfaceStyle,\n\tinitialFocusRef,\n\tfinalFocus,\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 pendingFocusRef = usePendingOverlayFocus(effectiveLoading, modal);\n\tconst hasContent = Boolean(children || alertMessage);\n\t// `footer={null}` is an explicit \"no footer\"; `undefined` keeps the generated one.\n\tconst hasFooter = showFooter && footer !== null && Boolean(showCancel || showConfirm || footer);\n\n\treturn (\n\t\t<Sheet\n\t\t\topen={visibility.open}\n\t\t\tmodal={modal}\n\t\t\t// A non-modal panel sits beside the page you keep working in, so a page\n\t\t\t// press must not dismiss it; it closes from its own controls or Escape.\n\t\t\tdisablePointerDismissal={effectiveLoading || !closeOnBackdropClick || modal === false}\n\t\t\tonOpenChange={(nextOpen, details) => {\n\t\t\t\tif (!nextOpen && (effectiveLoading || (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 render={<Button type=\"button\" tone=\"secondary\" buttonStyle=\"outline\" />} className=\"overlay-trigger--fallback\">\n\t\t\t\t\t{trigger}\n\t\t\t\t</SheetTrigger>\n\t\t\t))}\n\n\t\t\t<SheetContent\n\t\t\t\tref={pendingFocusRef}\n\t\t\t\tside={direction}\n\t\t\t\tshowCloseButton={false}\n\t\t\t\tstyle={surfaceStyle}\n\t\t\t\tinitialFocus={initialFocusRef}\n\t\t\t\tfinalFocus={finalFocus}\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{!!(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 && <OverlayToneIcon tone={tone} />}\n\t\t\t\t\t\t\t<Stack gap=\"normal\" className=\"min-w-0 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\">\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={compositionRhythm.commands}\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} disabled={effectiveLoading}>\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\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\tdisabled={effectiveLoading}\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\n\t\t\t\t{/*\n\t\t\t\t * Last in the DOM, drawn in the corner: opening focuses the first\n\t\t\t\t * field or action rather than the dismiss control, and the reading\n\t\t\t\t * order stays title → content → actions.\n\t\t\t\t */}\n\t\t\t\t{!!showCloseButton && (\n\t\t\t\t\t<SheetClose\n\t\t\t\t\t\tdisabled={effectiveLoading}\n\t\t\t\t\t\trender={(\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\ttone=\"secondary\"\n\t\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\ticonOnly\n\t\t\t\t\t\t\t\tdata-overlay-close=\"\"\n\t\t\t\t\t\t\t\tclassName={cn(overlayAnatomyRecipes.close, `z-10 text-muted-foreground ${interactionRecipes.rowHover}`)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<X className=\"size-icon\" />\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\taria-label={strings.close}\n\t\t\t\t\t/>\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","\"use client\";\n\nimport { motionRecipes } from '../../lib/motion-recipes';\nimport { portalClassName } from '../../lib/portal-recipes';\nimport { modalBackdropRecipe } from './overlay.recipes';\nimport { OverlayLayer, useInsideOverlayLayer, useOpenerFinalFocus } from './overlay-layer';\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, className, ...props }: AlertDialogPrimitive.Portal.Props) {\n const resolvedContainer = useThemePortalContainer(container)\n return (\n <AlertDialogPrimitive.Portal container={resolvedContainer} data-slot=\"alert-dialog-portal\" className={portalClassName(className)} {...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 children,\n finalFocus: finalFocusProp,\n ...props\n}: AlertDialogPrimitive.Popup.Props & {\n size?: \"default\" | \"sm\"\n} & { container?: ThemePortalContainer }) {\n const resolvedContainer = useThemePortalContainer(container)\n const insideOverlay = useInsideOverlayLayer()\n const { capture, finalFocus } = useOpenerFinalFocus(finalFocusProp)\n return (\n <AlertDialogPortal container={resolvedContainer}>\n <AlertDialogOverlay forceRender={!insideOverlay} />\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 max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-space-xl rounded-surface bg-popover p-surface text-popover-foreground shadow-xl outline-none data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-md\",\n className\n )}\n {...props}\n finalFocus={finalFocus}\n >\n {capture}\n <OverlayLayer>{children}</OverlayLayer>\n </AlertDialogPrimitive.Popup>\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 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-space-2xl 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 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-muted-foreground *:[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, surfaceDividerRecipes } from '../../../lib/surface-recipes';\nimport type { TextGap } from '../structure';\n/**\n * AlertDialog — internal confirmation anatomy behind `ConfirmDialog`.\n *\n * Not published from any entrypoint: applications use `ConfirmDialog` from\n * `themelia-react-ui/features/overlays`, which owns the decision lifecycle.\n * The surface shares the modal shell, region, rule and typography geometry of\n * the internal Dialog wrapper: a pinned heading region, an optional scrolling\n * body and pinned answers, with one rule between adjacent visible regions.\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\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 { textLineHeights, textSizes, textWeights } from '../../typography/text.styles';\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\n/** Same title role as Dialog, set on the element so its line box matches the Text inside. */\nconst titleTypography = cn('font-sans', textSizes.base, textWeights.semibold, textLineHeights.snug);\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// Same flush shell as Dialog: regions own their insets and the rules between them.\n\t\t\t\t'alert-dialog-content--component flex max-h-[min(90vh,48rem)] flex-col gap-0 overflow-hidden rounded-surface bg-popover p-0 text-popover-foreground sm:max-w-md', surfaceDividerRecipes.modal.shell,\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.HTMLAttributes<HTMLDivElement> & { textGap?: TextGap; align?: 'start' | 'center' }\n>(function AlertDialogHeader({ className, textGap = 'normal', align = 'start', ...props }, ref) {\n\t// Owned here rather than by the raw header, whose responsive variants force\n\t// start alignment from `sm`; a confirmation chooses its own alignment.\n\treturn (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tdata-slot=\"alert-dialog-header\"\n\t\t\tdata-modal-region=\"\"\n\t\t\tdata-align={align}\n\t\t\tclassName={cn(\n\t\t\t\t'alert-dialog-header--component flex flex-col',\n\t\t\t\tmodalRegionRecipes.header,\n\t\t\t\talign === 'center' ? 'items-center text-center' : 'items-start text-start',\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\nAlertDialogHeader.displayName = 'AlertDialogHeader';\n\n/** Scroll-owning region between the pinned heading and the pinned answers. */\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\tdata-modal-region=\"\"\n\t\t\t\tclassName={cn('alert-dialog-body--component', modalRegionRecipes.body, 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\tdata-modal-region=\"\"\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 m-0', titleTypography, className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{isSimpleText(children) ? (\n\t\t\t\t<Text tag=\"span\" type=\"inherit\" 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 m-0', 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 { isValidElement, memo, useMemo } 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 { compositionRhythm } from '../../base/structure/composition.recipes';\nimport { useStrings } from '../../../lib/strings';\nimport { useOverlayConfig } from '../../../lib/ui-provider';\nimport { cn } from '../../../lib/utils';\n\nimport { useOverlayActions, useOverlayVisibility } from './hooks';\nimport { usePendingOverlayFocus } from './hooks/use-pending-overlay-focus';\nimport { overlayToneGlyphs } from './overlay-tone-icon';\nimport { defaultConfirmDialogStrings } from './overlays.strings';\nimport type { ConfirmDialogProps } from './overlays.types';\n\nfunction ConfirmDialogImpl({\n\topen,\n\tonOpenChange,\n\tonClose,\n\tchildren,\n\ttitle,\n\tdescription,\n\tvisuallyHideHeader = false,\n\tclassName,\n\tcontentClassName,\n\tsurfaceStyle,\n\tinitialFocusRef,\n\tfinalFocus,\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 = false,\n\talertMessage,\n\ttrigger,\n\tdestructive = false,\n\talign,\n}: ConfirmDialogProps) {\n\tconst { defaultConfirmAlign } = useOverlayConfig();\n\tconst resolvedAlign = align ?? defaultConfirmAlign ?? 'center';\n\tconst visibility = useOverlayVisibility({ open, onOpenChange, onClose });\n\tconst mergedStrings = useStrings(defaultConfirmDialogStrings, 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 toneGlyph = overlayToneGlyphs[resolvedTone];\n\tconst pendingFocusRef = usePendingOverlayFocus(effectiveLoading);\n\tconst hasHeading = Boolean(title || description || (showIcon && !visuallyHideHeader));\n\tconst hasContent = Boolean(children || alertMessage);\n\t// `footer={null}` is an explicit \"no footer\"; `undefined` keeps the generated one.\n\tconst hasFooter = footer !== null && Boolean(showCancel || showConfirm || footer);\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 && (effectiveLoading || (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\t// A confirmation has no corner control and ignores outside presses,\n\t\t\t\t// so a dismissal that reaches here (Escape) is the user declining.\n\t\t\t\t// The Cancel button reports through `handleCancel` instead.\n\t\t\t\tif (!nextOpen && visibility.open) onCancel?.();\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 render={<Button type=\"button\" tone=\"secondary\" buttonStyle=\"outline\" />} className=\"overlay-trigger--fallback\">\n\t\t\t\t\t{trigger}\n\t\t\t\t</AlertDialogTrigger>\n\t\t\t))}\n\n\t\t\t<AlertDialogContent\n\t\t\t\tref={pendingFocusRef}\n\t\t\t\tstyle={surfaceStyle}\n\t\t\t\tinitialFocus={initialFocusRef}\n\t\t\t\tfinalFocus={finalFocus}\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{!!hasHeading && (\n\t\t\t\t\t<AlertDialogHeader\n\t\t\t\t\t\talign={resolvedAlign}\n\t\t\t\t\t\tclassName={cn('alert-dialog--header', visuallyHideHeader && 'sr-only')}\n\t\t\t\t\t>\n\t\t\t\t\t\t{!!showIcon && !visuallyHideHeader && (\n\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t'mb-space-sm flex size-avatar-lg shrink-0 items-center justify-center rounded-full',\n\t\t\t\t\t\t\t\t\ttoneGlyph.surface,\n\t\t\t\t\t\t\t\t\ttoneGlyph.color,\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<toneGlyph.Glyph className=\"size-icon-lg\" />\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!!title && <AlertDialogTitle>{title}</AlertDialogTitle>}\n\t\t\t\t\t\t{!!description && <AlertDialogDescription>{description}</AlertDialogDescription>}\n\t\t\t\t\t</AlertDialogHeader>\n\t\t\t\t)}\n\n\t\t\t\t{!!hasContent && (\n\t\t\t\t\t<AlertDialogBody className={cn('alert-dialog--body', contentClassName)}>\n\t\t\t\t\t\t{!!alertMessage && (\n\t\t\t\t\t\t\t<Alert tone={resolvedTone} className={cn(!!children && 'mb-space-md')}>\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</AlertDialogBody>\n\t\t\t\t)}\n\n\t\t\t\t{!!hasFooter && (\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={compositionRhythm.commands}\n\t\t\t\t\t\t\t\talign={{ base: 'stretch', sm: 'center' }}\n\t\t\t\t\t\t\t\tjustify={resolvedAlign === 'center' ? 'center' : '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} disabled={effectiveLoading}>\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\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\tdisabled={effectiveLoading}\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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"}
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useStrings as e } from "./lib/strings.js";
|
|
3
|
+
import { t } from "./utils-BVbAG2J6.js";
|
|
4
|
+
import { c as n, s as r } from "./typography-C0dELqYV.js";
|
|
5
|
+
import { n as i, t as a } from "./text.styles-B64My8RZ.js";
|
|
6
|
+
import { a as o, n as s } from "./buttons-pZVgPTZn.js";
|
|
7
|
+
import { t as c } from "./structure-DElaQwwN.js";
|
|
8
|
+
import { i as l, l as u, n as d, o as f, s as p, t as m } from "./feedback-DmqmXKLn.js";
|
|
9
|
+
import { n as h, t as g } from "./composition.recipes-COdiFhxB.js";
|
|
10
|
+
import { n as _, t as v } from "./page-header-commands-elelNOfd.js";
|
|
11
|
+
import { t as y } from "./overflow-tab-bar-DV7HE_3t.js";
|
|
12
|
+
import { m as b } from "./hooks-DHfeSMAO.js";
|
|
13
|
+
import { i as x, t as S } from "./containers-BdfLTP4w.js";
|
|
14
|
+
import { n as C } from "./inline-gutter-context-CSqmrMFZ.js";
|
|
15
|
+
import { forwardRef as w } from "react";
|
|
16
|
+
import { Fragment as T, jsx as E, jsxs as D } from "react/jsx-runtime";
|
|
17
|
+
import { ArrowLeft as O } from "lucide-react";
|
|
18
|
+
//#region src/components/layout/page/page.strings.ts
|
|
19
|
+
var k = {
|
|
20
|
+
back: "Back",
|
|
21
|
+
moreActions: "More actions",
|
|
22
|
+
sections: "Sections",
|
|
23
|
+
moreSections: "More"
|
|
24
|
+
}, A = {
|
|
25
|
+
loadingLabel: "Loading content",
|
|
26
|
+
loadingDescription: "Preparing the latest data for this view.",
|
|
27
|
+
errorTitle: "Content unavailable",
|
|
28
|
+
errorDescription: "The content could not be loaded.",
|
|
29
|
+
retryLabel: "Try again",
|
|
30
|
+
emptyTitle: "No content found",
|
|
31
|
+
emptyDescription: "There is no content available for this view."
|
|
32
|
+
};
|
|
33
|
+
//#endregion
|
|
34
|
+
//#region src/components/layout/page/partials/page-header.tsx
|
|
35
|
+
function j(e, t) {
|
|
36
|
+
return typeof e == "function" ? e(t) : e ?? t.defaultContent;
|
|
37
|
+
}
|
|
38
|
+
function M({ title: l, description: u, textGap: d = "dense", headingTag: f = "h1", backHref: p, onBack: m, primaryAction: h, secondaryActions: g, maxVisibleSecondaryActions: x, tabs: S, slots: C, strings: w, renderLink: A, className: M, contentClassName: N, actionsClassName: P, titleClassName: F, descriptionClassName: I }) {
|
|
39
|
+
let L = e(k, w), R = L.back, z = L.moreActions, B = b({ renderLink: A }), V = p || m ? /* @__PURE__ */ E("div", {
|
|
40
|
+
className: "flex items-center gap-space-sm shrink-0",
|
|
41
|
+
children: p && !m ? B({
|
|
42
|
+
href: p,
|
|
43
|
+
"aria-label": R,
|
|
44
|
+
className: t("page-header--back-link", o({
|
|
45
|
+
tone: "secondary",
|
|
46
|
+
buttonStyle: "ghost",
|
|
47
|
+
size: "sm",
|
|
48
|
+
iconOnly: !0
|
|
49
|
+
})),
|
|
50
|
+
children: /* @__PURE__ */ E(T, { children: /* @__PURE__ */ E(O, {
|
|
51
|
+
className: "size-icon rtl:rotate-180",
|
|
52
|
+
"aria-hidden": "true"
|
|
53
|
+
}) })
|
|
54
|
+
}) : /* @__PURE__ */ E(s, {
|
|
55
|
+
type: "button",
|
|
56
|
+
tone: "secondary",
|
|
57
|
+
buttonStyle: "ghost",
|
|
58
|
+
size: "sm",
|
|
59
|
+
iconOnly: !0,
|
|
60
|
+
className: "page-header--back-button",
|
|
61
|
+
onClick: m,
|
|
62
|
+
"aria-label": R,
|
|
63
|
+
children: /* @__PURE__ */ E(O, {
|
|
64
|
+
className: "size-icon rtl:rotate-180",
|
|
65
|
+
"aria-hidden": "true"
|
|
66
|
+
})
|
|
67
|
+
})
|
|
68
|
+
}) : null, H = V != null, U = _(h, g), W = U ? /* @__PURE__ */ E(v, {
|
|
69
|
+
primaryAction: h,
|
|
70
|
+
secondaryActions: g,
|
|
71
|
+
maxVisibleSecondaryActions: x,
|
|
72
|
+
moreActionsLabel: z,
|
|
73
|
+
renderLink: B
|
|
74
|
+
}) : null, G = j(C?.actions, {
|
|
75
|
+
renderLink: B,
|
|
76
|
+
defaultContent: W
|
|
77
|
+
}), K = G != null && G !== !1, q = j(C?.beforeTitle, {
|
|
78
|
+
renderLink: B,
|
|
79
|
+
defaultContent: null
|
|
80
|
+
}), J = j(C?.afterDescription, {
|
|
81
|
+
renderLink: B,
|
|
82
|
+
defaultContent: null
|
|
83
|
+
}), Y = j(C?.titleSuffix, {
|
|
84
|
+
renderLink: B,
|
|
85
|
+
defaultContent: null
|
|
86
|
+
}), X = typeof u == "string" || typeof u == "number" || typeof u == "bigint", Z = typeof l == "string" || typeof l == "number" || typeof l == "bigint";
|
|
87
|
+
return /* @__PURE__ */ E("header", {
|
|
88
|
+
className: t("layout-page-header--component page-heading--component page-header--component @container/page-header w-full min-w-0", M),
|
|
89
|
+
children: /* @__PURE__ */ D(c, {
|
|
90
|
+
gap: "xl",
|
|
91
|
+
children: [/* @__PURE__ */ D(c, {
|
|
92
|
+
gap: "sm",
|
|
93
|
+
className: t("page-header--content-row min-w-0", N),
|
|
94
|
+
children: [q, /* @__PURE__ */ D("div", {
|
|
95
|
+
className: "page-header--headline-row flex min-w-0 flex-wrap items-start gap-x-space-xl gap-y-space-lg",
|
|
96
|
+
children: [/* @__PURE__ */ D("div", {
|
|
97
|
+
className: t("page-header--copy-column page-header--title-row grid min-w-0 flex-1 basis-48 items-start gap-x-space-md @min-[40rem]/page-header:basis-96", H ? "grid-cols-[auto_minmax(0,1fr)]" : "grid-cols-1", d === "normal" ? "gap-y-normal" : "gap-y-dense"),
|
|
98
|
+
children: [H && /* @__PURE__ */ E("span", {
|
|
99
|
+
className: "page-header--title-prefix inline-flex shrink-0 items-center self-start",
|
|
100
|
+
children: V
|
|
101
|
+
}), /* @__PURE__ */ D(c, {
|
|
102
|
+
gap: d,
|
|
103
|
+
className: "page-header--copy-content min-w-0",
|
|
104
|
+
children: [/* @__PURE__ */ D(c, {
|
|
105
|
+
direction: "horizontal",
|
|
106
|
+
gap: "md",
|
|
107
|
+
align: "center",
|
|
108
|
+
wrap: !0,
|
|
109
|
+
className: "page-header--title-line min-w-0",
|
|
110
|
+
children: [Z ? /* @__PURE__ */ E(r, {
|
|
111
|
+
tag: f,
|
|
112
|
+
size: i.route,
|
|
113
|
+
className: t("page-header--title min-w-0 [overflow-wrap:anywhere] border-0 pb-0", F),
|
|
114
|
+
children: l
|
|
115
|
+
}) : l, Y]
|
|
116
|
+
}), (u != null && u !== !1 || J != null && J !== !1) && /* @__PURE__ */ D(c, {
|
|
117
|
+
gap: "dense",
|
|
118
|
+
className: "page-header--title-block min-w-0",
|
|
119
|
+
children: [X ? /* @__PURE__ */ E(n, {
|
|
120
|
+
...a.structuralDescription,
|
|
121
|
+
className: t("page-header--description max-w-2xl [overflow-wrap:anywhere]", I),
|
|
122
|
+
children: u
|
|
123
|
+
}) : u, J]
|
|
124
|
+
})]
|
|
125
|
+
})]
|
|
126
|
+
}), K && /* @__PURE__ */ E(c, {
|
|
127
|
+
direction: "horizontal",
|
|
128
|
+
gap: "md",
|
|
129
|
+
className: t("page-header--actions max-w-full shrink-0 self-start", U && C?.actions == null && "justify-end", P),
|
|
130
|
+
children: G
|
|
131
|
+
})]
|
|
132
|
+
})]
|
|
133
|
+
}), S && S.items.length > 0 && /* @__PURE__ */ E(y, {
|
|
134
|
+
items: S.items,
|
|
135
|
+
value: S.value,
|
|
136
|
+
onValueChange: S.onValueChange,
|
|
137
|
+
className: "page-header--tabs",
|
|
138
|
+
strings: {
|
|
139
|
+
navigationLabel: L.sections,
|
|
140
|
+
more: L.moreSections
|
|
141
|
+
}
|
|
142
|
+
})]
|
|
143
|
+
})
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
//#endregion
|
|
147
|
+
//#region src/components/layout/page/page.tsx
|
|
148
|
+
var N = {
|
|
149
|
+
none: "py-0",
|
|
150
|
+
sm: "py-surface-xs",
|
|
151
|
+
md: "py-surface",
|
|
152
|
+
lg: "py-surface-lg"
|
|
153
|
+
}, P = w(function({ header: n, children: r, slotProps: i, slots: a, renderLink: o, maxWidth: s, narrow: _ = !1, gutter: v, padding: y = "lg", aside: b, asideRatio: w = "7/5", stickyAside: T, toolbar: O, beforeHeader: k, loading: j = !1, error: P, onRetry: F, empty: I = !1, emptySlot: L, strings: R, className: z, render: B, ...V }, H) {
|
|
154
|
+
let U = e(A, R), W = C(), G = v ?? (W ? "none" : "lg"), { className: K, ...q } = i?.body ?? {}, { className: J, ...Y } = i?.toolbar ?? {}, { className: X, ...Z } = i?.footer ?? {}, Q = b != null && b !== !1, $ = O, ee = a?.header ?? (n ? /* @__PURE__ */ E(M, {
|
|
155
|
+
...n,
|
|
156
|
+
renderLink: n.renderLink ?? o
|
|
157
|
+
}) : null), te = P instanceof Error ? P.message : typeof P == "string" || typeof P == "number" ? String(P) : U.errorDescription, ne = P && typeof P != "boolean" && typeof P != "string" && typeof P != "number" && !(P instanceof Error) ? P : void 0, re = j ? a?.loading ?? /* @__PURE__ */ E(d, {
|
|
158
|
+
variant: "panel",
|
|
159
|
+
label: U.loadingLabel,
|
|
160
|
+
description: U.loadingDescription,
|
|
161
|
+
skeleton: !0,
|
|
162
|
+
lines: 4
|
|
163
|
+
}) : P ? a?.error ?? ne ?? /* @__PURE__ */ E(m, {
|
|
164
|
+
variant: "panel",
|
|
165
|
+
title: U.errorTitle,
|
|
166
|
+
description: te,
|
|
167
|
+
onRetry: F,
|
|
168
|
+
retryLabel: U.retryLabel
|
|
169
|
+
}) : I ? L ?? /* @__PURE__ */ E(l, { children: /* @__PURE__ */ D(p, { children: [/* @__PURE__ */ E(u, { children: U.emptyTitle }), /* @__PURE__ */ E(f, { children: U.emptyDescription })] }) }) : r, ie = re == null ? null : /* @__PURE__ */ E("div", {
|
|
170
|
+
...q,
|
|
171
|
+
"data-slot": "page-body",
|
|
172
|
+
className: t("page--body relative flex min-w-0 w-full flex-col", g.subjects, K),
|
|
173
|
+
children: re
|
|
174
|
+
});
|
|
175
|
+
return /* @__PURE__ */ E(x, {
|
|
176
|
+
...V,
|
|
177
|
+
ref: H,
|
|
178
|
+
render: B,
|
|
179
|
+
maxWidth: s ?? (_ ? "md" : Q ? "xl" : "lg"),
|
|
180
|
+
gutter: G,
|
|
181
|
+
className: t("font-sans", N[y], z),
|
|
182
|
+
children: /* @__PURE__ */ D(c, {
|
|
183
|
+
gap: h.page,
|
|
184
|
+
className: "page--component",
|
|
185
|
+
children: [
|
|
186
|
+
k,
|
|
187
|
+
ee,
|
|
188
|
+
$ != null && $ !== !1 && /* @__PURE__ */ E("div", {
|
|
189
|
+
...Y,
|
|
190
|
+
"data-slot": "page-toolbar",
|
|
191
|
+
className: t("page--toolbar min-w-0", J),
|
|
192
|
+
children: $
|
|
193
|
+
}),
|
|
194
|
+
Q ? /* @__PURE__ */ E(S, {
|
|
195
|
+
adaptTo: "container",
|
|
196
|
+
ratio: w,
|
|
197
|
+
stickyAside: T,
|
|
198
|
+
main: ie,
|
|
199
|
+
aside: b,
|
|
200
|
+
slotProps: { aside: i?.aside }
|
|
201
|
+
}) : ie,
|
|
202
|
+
a?.footer != null && a.footer !== !1 && /* @__PURE__ */ E("div", {
|
|
203
|
+
...Z,
|
|
204
|
+
"data-slot": "page-footer",
|
|
205
|
+
className: t("page--footer min-w-0", X),
|
|
206
|
+
children: a.footer
|
|
207
|
+
})
|
|
208
|
+
]
|
|
209
|
+
})
|
|
210
|
+
});
|
|
211
|
+
});
|
|
212
|
+
P.displayName = "Page";
|
|
213
|
+
//#endregion
|
|
214
|
+
export { A as i, M as n, k as r, P as t };
|
|
215
|
+
|
|
216
|
+
//# sourceMappingURL=page-D4pQhgSq.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page-D4pQhgSq.js","names":["_Fragment","Text","Heading","headingRoleSizes","copyRoleProps","buttonVariants","Button","Stack","Empty","EmptyTitle","LoadingState","EmptyDescription","EmptyHeader","ErrorState","compositionRhythm","compositionClasses","hasPageHeaderCommands","PageHeaderCommands","OverflowTabBar","useLayoutLinkRenderer","Container","TwoColumnLayout","useInlineGutterOwned","Fragment$1","defaultPageHeaderStrings","defaultPageStrings","resolveSlot","slot","context","PageHeader","stringsProp","strings","useStrings","backLabel","moreActionsLabel","resolvedRenderLink","defaultBack","backHref","onBack","cn","ArrowLeft","hasPrefix","hasCommands","primaryAction","secondaryActions","defaultActions","actionsRegion","slots","hasActions","beforeTitle","afterDescription","titleSuffix","simpleDescription","description","simpleTitle","title","className","contentClassName","textGap","headingTag","titleClassName","descriptionClassName","actionsClassName","tabs","blockPadding","Page","forwardRef","gutterProp","containerProps","gutterOwned","gutter","bodyClassName","bodyProps","slotProps","toolbarClassName","toolbarProps","footerClassName","footerProps","hasAside","aside","toolbarNode","toolbar","headerNode","header","renderLink","errorDescription","error","customError","body","loading","empty","emptySlot","children","bodyNode","maxWidth","narrow","padding","beforeHeader","asideRatio"],"sources":["../src/components/layout/page/page.strings.ts","../src/components/layout/page/partials/page-header.tsx","../src/components/layout/page/page.tsx"],"sourcesContent":["/** Copy for PageHeader's own controls. */\nexport interface PageHeaderStrings {\n\t/** Accessible name of the back control. */\n\tback: string;\n\t/** Accessible name of the More actions menu trigger. */\n\tmoreActions: string;\n\t/** Accessible name of the section tab list. */\n\tsections: string;\n\t/** Label of the trigger that holds section tabs which do not fit. */\n\tmoreSections: string;\n}\n\nexport const defaultPageHeaderStrings: PageHeaderStrings = {\n\tback: 'Back',\n\tmoreActions: 'More actions',\n\tsections: 'Sections',\n\tmoreSections: 'More',\n};\n\n/** Copy for Page's primary-body lifecycle states. */\nexport interface PageStrings {\n\tloadingLabel: string;\n\tloadingDescription: string;\n\terrorTitle: string;\n\terrorDescription: string;\n\tretryLabel: string;\n\temptyTitle: string;\n\temptyDescription: string;\n}\n\nexport const defaultPageStrings: PageStrings = {\n\tloadingLabel: 'Loading content',\n\tloadingDescription: 'Preparing the latest data for this view.',\n\terrorTitle: 'Content unavailable',\n\terrorDescription: 'The content could not be loaded.',\n\tretryLabel: 'Try again',\n\temptyTitle: 'No content found',\n\temptyDescription: 'There is no content available for this view.',\n};\n","/** Route header anatomy with four content slots and shared responsive commands. */\nimport { ArrowLeft } from 'lucide-react';\nimport type { ReactNode } from 'react';\n\nimport { Button } from '../../../base/buttons';\nimport { Stack } from '../../../base/structure';\nimport { OverflowTabBar } from '../../../base/navigation/overflow-tab-bar';\nimport { hasPageHeaderCommands, PageHeaderCommands } from '../../../base/navigation/page-header/page-header-commands';\nimport { buttonVariants } from '../../../base/buttons/button.variants';\nimport { Heading, Text } from '../../../typography';\nimport { copyRoleProps, headingRoleSizes } from '../../../typography/text.styles';\nimport { useStrings } from '../../../../lib/strings';\nimport { cn } from '../../../../lib/utils';\n\nimport { useLayoutLinkRenderer } from '../../hooks';\nimport { defaultPageHeaderStrings } from '../page.strings';\nimport type { PageHeaderProps, PageHeaderRenderContext, PageHeaderRenderSlot } from '../page.types';\n\nfunction resolveSlot(slot: PageHeaderRenderSlot, context: PageHeaderRenderContext): ReactNode {\n return typeof slot === 'function' ? slot(context) : slot ?? context.defaultContent;\n}\n\nexport function PageHeader({\n title, description, textGap = 'dense', headingTag = 'h1',\n backHref, onBack,\n primaryAction, secondaryActions, maxVisibleSecondaryActions, tabs, slots,\n strings: stringsProp, renderLink, className, contentClassName, actionsClassName, titleClassName,\n descriptionClassName,\n}: PageHeaderProps) {\n const strings = useStrings(defaultPageHeaderStrings, stringsProp);\n const backLabel = strings.back;\n const moreActionsLabel = strings.moreActions;\n const resolvedRenderLink = useLayoutLinkRenderer({renderLink});\n const hasBack = !!backHref || !!onBack;\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</div>\n\t) : null;\n const hasPrefix = defaultBack != null;\n const hasCommands = hasPageHeaderCommands(primaryAction, secondaryActions);\n const defaultActions = hasCommands ? <PageHeaderCommands primaryAction={primaryAction} secondaryActions={secondaryActions} maxVisibleSecondaryActions={maxVisibleSecondaryActions} moreActionsLabel={moreActionsLabel} renderLink={resolvedRenderLink} /> : null;\n const actionsRegion = resolveSlot(slots?.actions, {renderLink:resolvedRenderLink, defaultContent:defaultActions});\n const hasActions = actionsRegion != null && actionsRegion !== false;\n const beforeTitle = resolveSlot(slots?.beforeTitle, {renderLink:resolvedRenderLink, defaultContent:null});\n const afterDescription = resolveSlot(slots?.afterDescription, {renderLink:resolvedRenderLink, defaultContent:null});\n const titleSuffix = resolveSlot(slots?.titleSuffix, {renderLink:resolvedRenderLink, defaultContent:null});\n const simpleDescription = typeof description === 'string' || typeof description === 'number' || typeof description === 'bigint';\n const simpleTitle = typeof title === 'string' || typeof title === 'number' || typeof title === 'bigint';\n\n return <header className={cn('layout-page-header--component page-heading--component page-header--component @container/page-header w-full min-w-0', className)}>\n <Stack gap=\"xl\">\n <Stack gap=\"sm\" className={cn('page-header--content-row min-w-0', contentClassName)}>\n {beforeTitle}\n {/* The actions sit beside the copy only while the copy keeps a readable measure\n (12rem beside the compact menu, 24rem once inline commands show at 40rem of\n header width);\n otherwise they wrap below it, so commands never cramp the title. */}\n <div className=\"page-header--headline-row flex min-w-0 flex-wrap items-start gap-x-space-xl gap-y-space-lg\">\n <div className={cn('page-header--copy-column page-header--title-row grid min-w-0 flex-1 basis-48 items-start gap-x-space-md @min-[40rem]/page-header:basis-96', hasPrefix ? 'grid-cols-[auto_minmax(0,1fr)]' : 'grid-cols-1', textGap === 'normal' ? 'gap-y-normal' : 'gap-y-dense')}>\n {hasPrefix && <span className=\"page-header--title-prefix inline-flex shrink-0 items-center self-start\">{defaultBack}</span>}\n <Stack gap={textGap} className=\"page-header--copy-content min-w-0\">\n <Stack direction=\"horizontal\" gap=\"md\" align=\"center\" wrap className=\"page-header--title-line min-w-0\">\n {simpleTitle ? <Heading tag={headingTag} size={headingRoleSizes.route} className={cn('page-header--title min-w-0 [overflow-wrap:anywhere] border-0 pb-0',titleClassName)}>{title}</Heading> : title}\n {titleSuffix}\n </Stack>\n {((description != null && description !== false) || (afterDescription != null && afterDescription !== false)) && <Stack gap=\"dense\" className=\"page-header--title-block min-w-0\">\n {simpleDescription ? <Text {...copyRoleProps.structuralDescription} className={cn('page-header--description max-w-2xl [overflow-wrap:anywhere]',descriptionClassName)}>{description}</Text> : description}\n {afterDescription}\n </Stack>}\n </Stack>\n </div>\n {hasActions && <Stack direction=\"horizontal\" gap=\"md\" className={cn('page-header--actions max-w-full shrink-0 self-start', hasCommands && slots?.actions == null && 'justify-end', actionsClassName)}>{actionsRegion}</Stack>}\n </div>\n </Stack>\n {tabs && tabs.items.length > 0 && <OverflowTabBar items={tabs.items} value={tabs.value} onValueChange={tabs.onValueChange} className=\"page-header--tabs\" strings={{navigationLabel:strings.sections,more:strings.moreSections}} />}\n </Stack>\n </header>;\n}\n","import { forwardRef } from 'react';\n\nimport { ErrorState, LoadingState, Empty, EmptyHeader, EmptyTitle, EmptyDescription } from '../../base/feedback';\nimport { Stack } from '../../base/structure';\nimport { compositionClasses, compositionRhythm } from '../../base/structure/composition.recipes';\nimport { Container, TwoColumnLayout } from '../containers';\nimport { useInlineGutterOwned } from '../containers/inline-gutter-context';\nimport { useStrings } from '../../../lib/strings';\nimport { cn } from '../../../lib/utils';\n\nimport type { PageProps } from './page.types';\nimport { defaultPageStrings } from './page.strings';\nimport { PageHeader } from './partials/page-header';\n\nconst blockPadding = {none: 'py-0', sm: 'py-surface-xs', md: 'py-surface', lg: 'py-surface-lg'} as const;\n\n/** Route containment, header, lifecycle states and optional secondary context, without owning scrolling. */\nexport const Page = forwardRef<HTMLDivElement, PageProps>(function Page({\n header, children, slotProps, slots, renderLink, maxWidth, narrow = false,\n gutter: gutterProp, padding = 'lg', aside, asideRatio = '7/5', stickyAside,\n toolbar, beforeHeader, loading = false, error, onRetry,\n empty = false, emptySlot, strings: stringsProp, className, render,\n ...containerProps\n}, ref) {\n const strings = useStrings(defaultPageStrings, stringsProp);\n // One owner per inline gutter: inside a measure that already draws it, Page adds none unless asked.\n const gutterOwned = useInlineGutterOwned();\n const gutter = gutterProp ?? (gutterOwned ? 'none' : 'lg');\n const {className: bodyClassName, ...bodyProps} = slotProps?.body ?? {};\n const {className: toolbarClassName, ...toolbarProps} = slotProps?.toolbar ?? {};\n const {className: footerClassName, ...footerProps} = slotProps?.footer ?? {};\n const hasAside = aside !== undefined && aside !== null && aside !== false;\n const toolbarNode = toolbar;\n const headerNode = slots?.header ?? (header ? <PageHeader {...header} renderLink={header.renderLink ?? renderLink} /> : null);\n const errorDescription = error instanceof Error ? error.message\n : typeof error === 'string' || typeof error === 'number' ? String(error) : strings.errorDescription;\n const customError = error && typeof error !== 'boolean' && typeof error !== 'string' && typeof error !== 'number' && !(error instanceof Error) ? error : undefined;\n const body = loading ? slots?.loading ?? <LoadingState variant=\"panel\" label={strings.loadingLabel} description={strings.loadingDescription} skeleton lines={4} />\n : error ? slots?.error ?? customError ?? <ErrorState variant=\"panel\" title={strings.errorTitle} description={errorDescription} onRetry={onRetry} retryLabel={strings.retryLabel} />\n : empty ? emptySlot ?? <Empty><EmptyHeader><EmptyTitle>{strings.emptyTitle}</EmptyTitle><EmptyDescription>{strings.emptyDescription}</EmptyDescription></EmptyHeader></Empty>\n : children;\n const bodyNode = body !== undefined && body !== null ? (\n <div {...bodyProps} data-slot=\"page-body\" className={cn('page--body relative flex min-w-0 w-full flex-col', compositionClasses.subjects, bodyClassName)}>\n {body}\n </div>\n ) : null;\n\n return (\n <Container {...containerProps} ref={ref} render={render} maxWidth={maxWidth ?? (narrow ? 'md' : hasAside ? 'xl' : 'lg')}\n gutter={gutter} className={cn('font-sans', blockPadding[padding], className)}>\n <Stack gap={compositionRhythm.page} className=\"page--component\">\n {beforeHeader}\n {headerNode}\n {toolbarNode != null && toolbarNode !== false && <div {...toolbarProps} data-slot=\"page-toolbar\" className={cn('page--toolbar min-w-0', toolbarClassName)}>{toolbarNode}</div>}\n {hasAside ? <TwoColumnLayout adaptTo=\"container\" ratio={asideRatio} stickyAside={stickyAside} main={bodyNode} aside={aside} slotProps={{aside: slotProps?.aside}} /> : bodyNode}\n {slots?.footer != null && slots.footer !== false && <div {...footerProps} data-slot=\"page-footer\" className={cn('page--footer min-w-0', footerClassName)}>{slots.footer}</div>}\n </Stack>\n </Container>\n );\n});\nPage.displayName = 'Page';\n"],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import {
|
|
3
|
-
import { t as i } from "./utils-
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
2
|
+
import { C as e, f as t, i as n, o as r } from "./ui-provider-Bu1S-o96.js";
|
|
3
|
+
import { t as i } from "./utils-BVbAG2J6.js";
|
|
4
|
+
import { t as a } from "./focus-recipes-DSkiUvUp.js";
|
|
5
|
+
import { a as o, n as s } from "./buttons-pZVgPTZn.js";
|
|
6
6
|
import { t as c } from "./composition.recipes-COdiFhxB.js";
|
|
7
|
-
import { n as l } from "./action-menu-
|
|
7
|
+
import { n as l } from "./action-menu-D5343RwT.js";
|
|
8
8
|
import { useCallback as u, useEffect as d, useRef as f, useState as p } from "react";
|
|
9
9
|
import { Fragment as m, jsx as h, jsxs as g } from "react/jsx-runtime";
|
|
10
10
|
//#region src/components/base/navigation/page-header/page-header-commands.tsx
|
|
@@ -37,14 +37,14 @@ function w(e, t) {
|
|
|
37
37
|
function T(e) {
|
|
38
38
|
return e.href && !e.onClick ? e.href : void 0;
|
|
39
39
|
}
|
|
40
|
-
function E({ action:
|
|
41
|
-
let { defaultScale: l } =
|
|
42
|
-
return f && !
|
|
40
|
+
function E({ action: n, role: r, renderLink: a, className: c }) {
|
|
41
|
+
let { defaultScale: l } = t(), { tone: u, buttonStyle: d } = w(n, r), f = T(n), p = n.icon, _ = i(`page-header--${r}-action`, c);
|
|
42
|
+
return f && !n.disabled && !n.loading ? /* @__PURE__ */ h(m, { children: a({
|
|
43
43
|
href: f,
|
|
44
|
-
target:
|
|
45
|
-
rel:
|
|
46
|
-
external:
|
|
47
|
-
className: i("button--component base-button--component",
|
|
44
|
+
target: n.target,
|
|
45
|
+
rel: n.rel,
|
|
46
|
+
external: n.external,
|
|
47
|
+
className: i("button--component base-button--component", o({
|
|
48
48
|
tone: u,
|
|
49
49
|
buttonStyle: d,
|
|
50
50
|
size: e(void 0, l)
|
|
@@ -52,18 +52,18 @@ function E({ action: t, role: r, renderLink: s, className: c }) {
|
|
|
52
52
|
children: /* @__PURE__ */ g(m, { children: [p && /* @__PURE__ */ h(p, {
|
|
53
53
|
className: "size-icon shrink-0",
|
|
54
54
|
"aria-hidden": "true"
|
|
55
|
-
}),
|
|
56
|
-
}) }) : /* @__PURE__ */ h(
|
|
55
|
+
}), n.label] })
|
|
56
|
+
}) }) : /* @__PURE__ */ h(s, {
|
|
57
57
|
type: "button",
|
|
58
58
|
tone: u,
|
|
59
59
|
buttonStyle: d,
|
|
60
60
|
icon: p,
|
|
61
|
-
loading:
|
|
62
|
-
handlesLoading:
|
|
63
|
-
disabled:
|
|
64
|
-
onClick:
|
|
61
|
+
loading: n.loading,
|
|
62
|
+
handlesLoading: n.loading !== void 0,
|
|
63
|
+
disabled: n.disabled,
|
|
64
|
+
onClick: n.onClick,
|
|
65
65
|
className: _,
|
|
66
|
-
children:
|
|
66
|
+
children: n.label
|
|
67
67
|
});
|
|
68
68
|
}
|
|
69
69
|
function D({ action: e, key: t }, n) {
|
|
@@ -81,8 +81,8 @@ function D({ action: e, key: t }, n) {
|
|
|
81
81
|
className: n
|
|
82
82
|
};
|
|
83
83
|
}
|
|
84
|
-
function O({ primaryAction: e, secondaryActions:
|
|
85
|
-
let { host: C, attachHost: w, context: T } =
|
|
84
|
+
function O({ primaryAction: e, secondaryActions: t, maxVisibleSecondaryActions: o, moreActionsLabel: s, renderLink: m = _ }) {
|
|
85
|
+
let { host: C, attachHost: w, context: T } = r(), [O, k] = p(!1), A = f(null), j = f(null), M = u(() => A.current ?? !0, []), N = u((e) => {
|
|
86
86
|
e.target instanceof HTMLElement && (j.current = e.target);
|
|
87
87
|
}, []), P = u((e) => {
|
|
88
88
|
let t = e.relatedTarget;
|
|
@@ -113,15 +113,15 @@ function O({ primaryAction: e, secondaryActions: n, maxVisibleSecondaryActions:
|
|
|
113
113
|
}, [
|
|
114
114
|
T.mounted,
|
|
115
115
|
C,
|
|
116
|
-
|
|
116
|
+
o,
|
|
117
117
|
O,
|
|
118
118
|
e,
|
|
119
|
-
|
|
119
|
+
t
|
|
120
120
|
]);
|
|
121
|
-
let F = (
|
|
121
|
+
let F = (t ?? []).map((e, t) => ({
|
|
122
122
|
action: e,
|
|
123
123
|
key: e.id ?? `secondary-${t}`
|
|
124
|
-
})).filter(({ action: e }) => x(e)), I = F.filter(({ action: e }) => !e.destructive), L = F.filter(({ action: e }) => e.destructive), R =
|
|
124
|
+
})).filter(({ action: e }) => x(e)), I = F.filter(({ action: e }) => !e.destructive), L = F.filter(({ action: e }) => e.destructive), R = o === void 0 || Number.isNaN(o) ? 2 : Math.max(0, Math.floor(o)), z = I.slice(0, R), B = I.slice(R), V = x(e) ? e : void 0;
|
|
125
125
|
if (!V && F.length === 0) return null;
|
|
126
126
|
let H = V ? {
|
|
127
127
|
action: V,
|
|
@@ -142,7 +142,7 @@ function O({ primaryAction: e, secondaryActions: n, maxVisibleSecondaryActions:
|
|
|
142
142
|
groupClassName: B.length > 0 && L.length > 0 ? void 0 : y
|
|
143
143
|
}))
|
|
144
144
|
], G = B.length === 0 && L.length === 0;
|
|
145
|
-
return /* @__PURE__ */ h(
|
|
145
|
+
return /* @__PURE__ */ h(n, {
|
|
146
146
|
value: T,
|
|
147
147
|
children: /* @__PURE__ */ g("div", {
|
|
148
148
|
ref: w,
|
|
@@ -150,7 +150,7 @@ function O({ primaryAction: e, secondaryActions: n, maxVisibleSecondaryActions:
|
|
|
150
150
|
onBlurCapture: P,
|
|
151
151
|
tabIndex: -1,
|
|
152
152
|
"data-slot": "page-header-commands",
|
|
153
|
-
className: i("page-header--commands flex min-w-0 max-w-full flex-wrap items-center justify-end outline-none", c.commands,
|
|
153
|
+
className: i("page-header--commands flex min-w-0 max-w-full flex-wrap items-center justify-end outline-none", c.commands, a.inset),
|
|
154
154
|
children: [
|
|
155
155
|
z.map((e) => /* @__PURE__ */ h(E, {
|
|
156
156
|
action: e.action,
|
|
@@ -172,7 +172,7 @@ function O({ primaryAction: e, secondaryActions: n, maxVisibleSecondaryActions:
|
|
|
172
172
|
finalFocus: A.current ? M : void 0,
|
|
173
173
|
actions: W,
|
|
174
174
|
context: "commands",
|
|
175
|
-
srText:
|
|
175
|
+
srText: s,
|
|
176
176
|
align: "end",
|
|
177
177
|
closeOnSelect: !0,
|
|
178
178
|
preserveOrder: !0,
|
|
@@ -190,4 +190,4 @@ function O({ primaryAction: e, secondaryActions: n, maxVisibleSecondaryActions:
|
|
|
190
190
|
//#endregion
|
|
191
191
|
export { C as n, O as t };
|
|
192
192
|
|
|
193
|
-
//# sourceMappingURL=page-header-commands-
|
|
193
|
+
//# sourceMappingURL=page-header-commands-elelNOfd.js.map
|