themelia-react-ui 2.0.4 → 2.0.6
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 +211 -0
- package/MIGRATION.md +119 -0
- package/README.md +122 -20
- package/dist/{accordion-96o0pN62.js → accordion-0tQUZ20r.js} +13 -13
- package/dist/accordion-0tQUZ20r.js.map +1 -0
- package/dist/{action-menu-CHgs8vmj.js → action-menu-C0gjzLyE.js} +48 -45
- package/dist/action-menu-C0gjzLyE.js.map +1 -0
- package/dist/{affordance-geometry.generated-B8yGOr8-.js → affordance-geometry.generated-P-aVJisu.js} +36 -36
- package/dist/affordance-geometry.generated-P-aVJisu.js.map +1 -0
- package/dist/{ai-artifact-BZUGwBq6.js → ai-artifact-CGGpQryR.js} +281 -230
- package/dist/ai-artifact-CGGpQryR.js.map +1 -0
- package/dist/app-shell-EHuuRDGy.js +321 -0
- package/dist/app-shell-EHuuRDGy.js.map +1 -0
- package/dist/{attachment-DkoqHPPl.js → attachment-BCpA4e7i.js} +10 -10
- package/dist/{attachment-DkoqHPPl.js.map → attachment-BCpA4e7i.js.map} +1 -1
- package/dist/{auth-D2FVZ1MH.js → auth-B0girIk_.js} +49 -52
- package/dist/auth-B0girIk_.js.map +1 -0
- package/dist/{avatar-DWO_HHhB.js → avatar-B9Jnp-T-.js} +8 -8
- package/dist/avatar-B9Jnp-T-.js.map +1 -0
- package/dist/{badge-DErMA7ul.js → badge-wWauMgAt.js} +5 -5
- package/dist/{badge-DErMA7ul.js.map → badge-wWauMgAt.js.map} +1 -1
- 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 +1 -1
- package/dist/base/cards.js +2 -2
- package/dist/base/carousel.js +3 -3
- package/dist/base/cascader.js +2 -372
- 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 +2 -2
- 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 +6 -6
- package/dist/base/feedback.js +4 -4
- package/dist/base/forms-numeric.js +1 -1
- package/dist/base/forms.js +2 -2
- package/dist/base/inline-edit.js +10 -10
- package/dist/base/item.js +1 -1
- package/dist/base/media-gallery.js +1 -1
- 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 +1 -1
- package/dist/base/repeaters.js +200 -193
- package/dist/base/repeaters.js.map +1 -1
- package/dist/base/sheet.js +1 -1
- package/dist/base/sidebar.js +2 -2
- package/dist/base/signature-pad.js +8 -8
- package/dist/base/signature-pad.js.map +1 -1
- package/dist/base/skeleton.js +1 -1
- package/dist/base/spinner.js +6 -6
- 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 +2 -2
- package/dist/base/toaster.js +36 -36
- package/dist/base/toaster.js.map +1 -1
- package/dist/base/tree.js +1 -1
- package/dist/base/upload-queue.js +1 -1
- package/dist/base/upload.js +3 -3
- package/dist/base/value-inputs.js +1 -1
- package/dist/{batch-action-bar-CdfIkCsV.js → batch-action-bar-BoqWIIpV.js} +7 -7
- package/dist/batch-action-bar-BoqWIIpV.js.map +1 -0
- package/dist/blocks/admin.js +21 -21
- package/dist/blocks/admin.js.map +1 -1
- package/dist/blocks/ai.js +267 -247
- package/dist/blocks/ai.js.map +1 -1
- package/dist/blocks/analytics/usage-card.js +1 -1
- package/dist/blocks/analytics.js +537 -543
- 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 +1330 -1250
- package/dist/blocks/commerce.js.map +1 -1
- package/dist/blocks/data-display.js +2 -2
- package/dist/blocks/onboarding.js +6 -6
- package/dist/blocks/onboarding.js.map +1 -1
- package/dist/blocks/planning.js +11 -11
- package/dist/blocks/timelines.js +1 -1
- package/dist/{breadcrumbs-B-WFKecD.js → breadcrumbs-Bp9Ke7kd.js} +7 -7
- package/dist/breadcrumbs-Bp9Ke7kd.js.map +1 -0
- package/dist/{button-DkmK-z8E.js → button-ChBovTx0.js} +3 -3
- package/dist/button-ChBovTx0.js.map +1 -0
- package/dist/{buttons-BbfzgczK.js → buttons-DeW0bQeK.js} +16 -16
- package/dist/buttons-DeW0bQeK.js.map +1 -0
- package/dist/cards-CNXnmvV5.js +69 -0
- package/dist/cards-CNXnmvV5.js.map +1 -0
- package/dist/cascader-CrAl9zD5.js +439 -0
- package/dist/cascader-CrAl9zD5.js.map +1 -0
- package/dist/chart-I7ROnsl8.js +162 -0
- package/dist/chart-I7ROnsl8.js.map +1 -0
- package/dist/{checkbox-CzYUTPeJ.js → checkbox-MoyHIAPs.js} +3 -3
- package/dist/{checkbox-CzYUTPeJ.js.map → checkbox-MoyHIAPs.js.map} +1 -1
- package/dist/choice-inputs-DHGtx0QV.js +789 -0
- package/dist/choice-inputs-DHGtx0QV.js.map +1 -0
- package/dist/{code-block-CGNaUtAE.js → code-block-BSJyq9e-.js} +9 -9
- package/dist/code-block-BSJyq9e-.js.map +1 -0
- package/dist/{collapsible-Do4G0zcC.js → collapsible-BzJ91LUG.js} +5 -5
- package/dist/{collapsible-Do4G0zcC.js.map → collapsible-BzJ91LUG.js.map} +1 -1
- package/dist/{collection-content-C0e8SsTm.js → collection-content-CSnwtOTH.js} +3 -3
- package/dist/{collection-content-C0e8SsTm.js.map → collection-content-CSnwtOTH.js.map} +1 -1
- package/dist/combobox-Bcvu5J8O.js +363 -0
- package/dist/combobox-Bcvu5J8O.js.map +1 -0
- package/dist/combobox-C2JiSQPc.js +915 -0
- package/dist/combobox-C2JiSQPc.js.map +1 -0
- package/dist/{command-D8NrBj-b.js → command-9e52NPgK.js} +11 -11
- package/dist/command-9e52NPgK.js.map +1 -0
- package/dist/{comments-Di4w0H_S.js → comments-BsgErEqd.js} +44 -39
- package/dist/comments-BsgErEqd.js.map +1 -0
- package/dist/components/base/action-menu/action-menu.d.ts +7 -1
- package/dist/components/base/buttons/button-group.recipes.d.ts +2 -2
- package/dist/components/base/cards/card.recipes.d.ts +6 -4
- package/dist/components/base/cards/partials/card-primitives.d.ts +9 -2
- package/dist/components/base/cards/partials/smart-card-header-row.d.ts +3 -1
- package/dist/components/base/cards/smart-card.types.d.ts +3 -4
- package/dist/components/base/cascader/cascader-panel.d.ts +76 -0
- package/dist/components/base/chart/chart.d.ts +6 -1
- package/dist/components/base/choice-inputs/choice-types.d.ts +5 -1
- package/dist/components/base/choice-inputs/pill-radio-group.d.ts +7 -6
- package/dist/components/base/combobox/combobox-field.d.ts +2 -2
- package/dist/components/base/combobox/index.d.ts +4 -2
- package/dist/components/base/date-pickers/date-picker-internals.d.ts +3 -1
- package/dist/components/base/date-pickers/datepicker.types.d.ts +10 -4
- package/dist/components/base/date-pickers/time-picker.d.ts +17 -3
- package/dist/components/base/feedback/alert.d.ts +1 -1
- 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/form-sizing.d.ts +7 -7
- package/dist/components/base/forms/workflow.d.ts +7 -1
- package/dist/components/base/forms-numeric/coordinates-input.d.ts +8 -1
- package/dist/components/base/forms-numeric/decimal-input.d.ts +2 -2
- package/dist/components/base/forms-numeric/dimensions-input.d.ts +4 -1
- 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/metadata-list/metadata-list.d.ts +1 -1
- package/dist/components/base/navigation/dropdown-menu.d.ts +1 -1
- package/dist/components/base/navigation/language-switcher.d.ts +12 -4
- package/dist/components/base/navigation/page-header/page-header-commands.d.ts +14 -7
- package/dist/components/base/navigation/page-header/page-header.d.ts +10 -3
- package/dist/components/base/popover/popover.d.ts +3 -3
- package/dist/components/base/popover/popover.recipes.d.ts +10 -6
- package/dist/components/base/repeaters/key-value-editor.d.ts +2 -1
- package/dist/components/base/sheet/sheet.d.ts +2 -0
- package/dist/components/base/sidebar/index.d.ts +1 -1
- package/dist/components/base/sidebar/sidebar.d.ts +29 -5
- package/dist/components/base/toaster/index.d.ts +1 -0
- package/dist/components/base/upload/avatar-upload.d.ts +2 -1
- package/dist/components/base/upload/image-upload.d.ts +2 -1
- package/dist/components/blocks/ai/ai-citation/types.d.ts +2 -0
- package/dist/components/blocks/ai/ai-file-tree/types.d.ts +1 -1
- package/dist/components/blocks/ai/ai-reasoning/types.d.ts +2 -0
- package/dist/components/blocks/ai/ai-sources/types.d.ts +2 -0
- package/dist/components/blocks/ai/ai-tool-call/types.d.ts +5 -1
- package/dist/components/blocks/ai/ai.strings.d.ts +2 -0
- package/dist/components/blocks/analytics/metric/metric.d.ts +4 -0
- package/dist/components/blocks/analytics/metric-comparison/metric-comparison.d.ts +4 -0
- package/dist/components/blocks/analytics/metric-grid/metric-grid.d.ts +4 -5
- package/dist/components/blocks/analytics/types.d.ts +2 -2
- package/dist/components/blocks/analytics/usage-card/usage-card.strings.d.ts +2 -0
- package/dist/components/blocks/commerce/cart-summary/cart-summary.d.ts +1 -1
- package/dist/components/blocks/commerce/cart-summary/types.d.ts +3 -1
- package/dist/components/blocks/commerce/discount-stack/discount-stack.d.ts +1 -1
- package/dist/components/blocks/commerce/discount-stack/types.d.ts +3 -1
- package/dist/components/blocks/commerce/fulfillment-group/fulfillment-group.d.ts +1 -1
- package/dist/components/blocks/commerce/fulfillment-group/types.d.ts +11 -2
- package/dist/components/blocks/commerce/index.d.ts +7 -6
- package/dist/components/blocks/commerce/inventory-section/inventory-section.d.ts +1 -1
- package/dist/components/blocks/commerce/inventory-section/types.d.ts +7 -2
- package/dist/components/blocks/commerce/invoice-header/index.d.ts +2 -1
- package/dist/components/blocks/commerce/invoice-header/invoice-header.d.ts +1 -1
- package/dist/components/blocks/commerce/invoice-header/types.d.ts +20 -6
- package/dist/components/blocks/commerce/invoice-line-items/invoice-line-items.d.ts +1 -1
- package/dist/components/blocks/commerce/invoice-line-items/types.d.ts +24 -7
- package/dist/components/blocks/commerce/invoice-mini/index.d.ts +2 -1
- package/dist/components/blocks/commerce/invoice-mini/types.d.ts +7 -1
- package/dist/components/blocks/commerce/order-customer/order-customer.d.ts +1 -1
- package/dist/components/blocks/commerce/order-customer/types.d.ts +9 -1
- package/dist/components/blocks/commerce/order-status/types.d.ts +4 -0
- package/dist/components/blocks/commerce/refund-status/refund-status.d.ts +1 -1
- package/dist/components/blocks/commerce/refund-status/types.d.ts +3 -1
- package/dist/components/blocks/commerce/shipment-tracking/shipment-tracking.d.ts +1 -1
- package/dist/components/blocks/commerce/shipment-tracking/types.d.ts +3 -1
- package/dist/components/blocks/commerce/tax-breakdown/tax-breakdown.d.ts +1 -1
- package/dist/components/blocks/commerce/tax-breakdown/types.d.ts +3 -1
- package/dist/components/blocks/data-display/empty-state/empty-state.types.d.ts +4 -3
- package/dist/components/features/activities/activities.types.d.ts +26 -13
- package/dist/components/features/activities/hooks/use-activity-resources.d.ts +2 -1
- package/dist/components/features/activities/partials/activity-marker.d.ts +7 -3
- package/dist/components/features/activities/partials/activity-row.d.ts +24 -0
- package/dist/components/features/ai-chat/hooks/use-ai-chat-scroll.d.ts +1 -1
- package/dist/components/features/appointment-calendar/appointment-calendar.d.ts +1 -1
- package/dist/components/features/appointment-calendar/appointment-calendar.types.d.ts +4 -2
- package/dist/components/features/combobox/async-resource-combobox.d.ts +2 -2
- package/dist/components/features/combobox/combobox.d.ts +2 -2
- package/dist/components/features/combobox/hooks/use-combobox-core.d.ts +2 -1
- 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/types.d.ts +37 -8
- package/dist/components/features/email-composer/types.d.ts +3 -1
- package/dist/components/features/event-calendar/colors.d.ts +2 -2
- package/dist/components/features/event-calendar/event-calendar.types.d.ts +4 -0
- package/dist/components/features/filters/facets/date-facet.d.ts +4 -2
- package/dist/components/features/filters/facets/range-facet.d.ts +12 -0
- package/dist/components/features/filters/facets/select-facet.d.ts +2 -1
- package/dist/components/features/filters/filters.strings.d.ts +4 -0
- package/dist/components/features/filters/filters.types.d.ts +6 -3
- package/dist/components/features/filters/partials/date-filter-content.d.ts +3 -2
- package/dist/components/features/filters/partials/filter-editor-header.d.ts +16 -0
- package/dist/components/features/filters/partials/filter-popover-content.d.ts +5 -3
- package/dist/components/features/filters/partials/nested-filter-options.d.ts +21 -0
- package/dist/components/features/filters/partials/range-filter-content.d.ts +12 -0
- package/dist/components/features/filters/partials/regular-filter-content.d.ts +2 -1
- package/dist/components/features/filters/utils/filter-utils.d.ts +25 -3
- package/dist/components/features/global-search/global-search.types.d.ts +2 -0
- package/dist/components/features/global-search/partials/global-search-input.d.ts +10 -0
- package/dist/components/features/global-search/partials/global-search-result-row.d.ts +7 -1
- package/dist/components/features/media-library/hooks/use-media-library.d.ts +1 -1
- package/dist/components/features/media-library/media-library.d.ts +1 -1
- package/dist/components/features/media-library/media-library.strings.d.ts +8 -0
- package/dist/components/features/media-library/media-library.types.d.ts +50 -12
- package/dist/components/features/media-library/partials/media-library-partials.d.ts +4 -4
- package/dist/components/features/mentions/hooks/use-mentions.d.ts +16 -1
- package/dist/components/features/mentions/partials/mention-inline-suggestions.d.ts +5 -1
- package/dist/components/features/mentions/utils/split-html-by-mentions.d.ts +1 -7
- package/dist/components/features/overlays/hooks/use-overlay-visibility.d.ts +2 -2
- package/dist/components/features/products/components/product-options-matrix.d.ts +1 -1
- package/dist/components/features/products/components/product-variant-editor.d.ts +1 -1
- package/dist/components/features/products/components/product-variants-manager.d.ts +1 -1
- package/dist/components/features/products/products.strings.d.ts +9 -1
- package/dist/components/features/products/products.types.d.ts +45 -8
- package/dist/components/features/questionnaire/questionnaire.types.d.ts +3 -0
- package/dist/components/features/resource/resource.d.ts +6 -2
- package/dist/components/features/resource/resource.types.d.ts +14 -1
- 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 +1 -1
- package/dist/components/features/rich-text-editor/partials/editor-field-aria.d.ts +14 -0
- package/dist/components/features/rich-text-editor/partials/image-uploads.d.ts +1 -1
- package/dist/components/features/rich-text-editor/partials/rich-text-editor-toolbar.d.ts +3 -1
- package/dist/components/features/rich-text-editor/rich-text-editor.recipes.d.ts +12 -2
- package/dist/components/features/rich-text-editor/rich-text-editor.types.d.ts +17 -3
- package/dist/components/features/schema-form/hooks/use-schema-form.d.ts +5 -1
- package/dist/components/features/schema-form/partials/schema-form-field.d.ts +3 -1
- package/dist/components/features/schema-form/schema-form.utils.d.ts +1 -1
- package/dist/components/features/suggestions/suggestions.types.d.ts +1 -1
- package/dist/components/features/table/data-table.d.ts +1 -1
- package/dist/components/features/table/index.d.ts +1 -0
- package/dist/components/features/table/partials/resource-cell.d.ts +22 -5
- package/dist/components/features/table/table-body.d.ts +1 -1
- package/dist/components/features/table/table-helpers.d.ts +6 -3
- package/dist/components/features/table/table.strings.d.ts +3 -0
- package/dist/components/features/table/table.types.d.ts +18 -2
- package/dist/components/layout/app-shell/app-shell.types.d.ts +35 -6
- package/dist/components/layout/app-shell/index.d.ts +1 -1
- package/dist/components/layout/app-shell/shell-regions.d.ts +27 -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/containers/two-column-layout.d.ts +2 -0
- package/dist/components/layout/header/header.recipes.d.ts +6 -0
- package/dist/components/layout/header/header.types.d.ts +9 -8
- package/dist/components/layout/layout.types.d.ts +5 -3
- package/dist/components/layout/navigation/section-nav/section-nav.d.ts +5 -0
- 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 -1
- package/dist/components/layout/page/page.d.ts +1 -0
- package/dist/components/layout/page/page.strings.d.ts +11 -0
- package/dist/components/layout/page/page.types.d.ts +69 -17
- package/dist/components/layout/page/partials/page-header.d.ts +1 -1
- package/dist/components/layout/settings/settings.d.ts +10 -3
- 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.d.ts +1 -1
- package/dist/components/layout/sidebar/index.d.ts +2 -1
- package/dist/components/layout/sidebar/sidebar-navigation-rail.d.ts +38 -0
- package/dist/components/layout/sidebar/sidebar.context.d.ts +6 -7
- package/dist/components/layout/sidebar/sidebar.types.d.ts +50 -10
- package/dist/components/layout/sidebar/sidebar.utils.d.ts +9 -1
- package/dist/components/layout/workspace/workspace.types.d.ts +8 -1
- package/dist/components/primitives/link.d.ts +3 -2
- package/dist/components/primitives/money.d.ts +1 -1
- package/dist/components/primitives/number.d.ts +1 -1
- package/dist/components/typography/rich-text/rich-text-tree.d.ts +7 -5
- package/dist/components/ui/alert-dialog.d.ts +2 -2
- package/dist/components/ui/combobox.d.ts +1 -1
- package/dist/components/ui/dialog.d.ts +2 -2
- package/dist/components/ui/overlay-layer.d.ts +18 -0
- package/dist/components/ui/sheet.d.ts +5 -1
- package/dist/components/ui/sidebar-state.d.ts +82 -0
- package/dist/components/ui/sidebar.d.ts +5 -17
- package/dist/{containers-CRmHf7GP.js → containers-CSdc32h9.js} +26 -18
- package/dist/containers-CSdc32h9.js.map +1 -0
- package/dist/{control-group-recipes-DBXmfh2E.js → control-group-recipes-fMuFo0H7.js} +6 -6
- package/dist/control-group-recipes-fMuFo0H7.js.map +1 -0
- package/dist/{copyable-CnGCZdX4.js → copyable-3fdHfMR3.js} +7 -7
- package/dist/{copyable-CnGCZdX4.js.map → copyable-3fdHfMR3.js.map} +1 -1
- package/dist/{data-display-D4oujtx0.js → data-display-Cmj-xZYl.js} +271 -279
- package/dist/data-display-Cmj-xZYl.js.map +1 -0
- package/dist/{date-Q7jnXxpk.js → date-Br0FicVv.js} +5 -5
- package/dist/{date-Q7jnXxpk.js.map → date-Br0FicVv.js.map} +1 -1
- package/dist/date-picker-CyQlFYsP.js +1617 -0
- package/dist/date-picker-CyQlFYsP.js.map +1 -0
- package/dist/date-pickers-tj2MXmXd.js +185 -0
- package/dist/date-pickers-tj2MXmXd.js.map +1 -0
- package/dist/{display-BB4BL_-K.js → display-CT_N2a3w.js} +9 -9
- package/dist/{display-BB4BL_-K.js.map → display-CT_N2a3w.js.map} +1 -1
- package/dist/dropdown-menu-C08iIugv.js +194 -0
- package/dist/dropdown-menu-C08iIugv.js.map +1 -0
- package/dist/features/activities.js +388 -326
- package/dist/features/activities.js.map +1 -1
- package/dist/features/ai-chat.js +46 -32
- package/dist/features/ai-chat.js.map +1 -1
- package/dist/features/appointment-calendar.js +130 -130
- package/dist/features/appointment-calendar.js.map +1 -1
- package/dist/features/async-preview.js +11 -10
- package/dist/features/async-preview.js.map +1 -1
- package/dist/features/combobox.js +1 -1
- package/dist/features/comments.js +1 -1
- package/dist/features/data-view.js +13 -13
- package/dist/features/data-view.js.map +1 -1
- package/dist/features/email-composer.js +243 -239
- package/dist/features/email-composer.js.map +1 -1
- package/dist/features/event-calendar.js +197 -199
- package/dist/features/event-calendar.js.map +1 -1
- package/dist/features/filters.js +2 -2
- package/dist/features/global-search.js +168 -143
- package/dist/features/global-search.js.map +1 -1
- package/dist/features/kanban.js +19 -30
- package/dist/features/kanban.js.map +1 -1
- package/dist/features/map/style.css +15 -0
- package/dist/features/map.js +369 -343
- package/dist/features/map.js.map +1 -1
- package/dist/features/media-library.js +1202 -975
- package/dist/features/media-library.js.map +1 -1
- package/dist/features/mentions.js +2 -2
- package/dist/features/overlays.js +1 -1
- package/dist/features/products.js +1270 -1183
- package/dist/features/products.js.map +1 -1
- package/dist/features/questionnaire.js +160 -153
- package/dist/features/questionnaire.js.map +1 -1
- package/dist/features/resource-assignment.js +8 -8
- package/dist/features/resource.js +119 -113
- 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 +297 -256
- package/dist/features/schema-form.js.map +1 -1
- package/dist/features/suggestions.js +57 -50
- package/dist/features/suggestions.js.map +1 -1
- package/dist/features/sync.js +3 -3
- package/dist/features/table.js +1 -1
- package/dist/features/theme-tweaker.js +470 -470
- package/dist/features/theme-tweaker.js.map +1 -1
- package/dist/feedback-Dzo1xtAU.js +246 -0
- package/dist/feedback-Dzo1xtAU.js.map +1 -0
- package/dist/{field-affordance-recipes-DjwGx8eM.js → field-affordance-recipes-D6H7tVJi.js} +5 -5
- package/dist/field-affordance-recipes-D6H7tVJi.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-BVA2CWHo.js → field-state-recipes-7sza8QbC.js} +4 -2
- package/dist/{field-state-recipes-BVA2CWHo.js.map → field-state-recipes-7sza8QbC.js.map} +1 -1
- package/dist/filters-Dl80yYtN.js +2415 -0
- package/dist/filters-Dl80yYtN.js.map +1 -0
- package/dist/form-field-CAPdwdnZ.js +74 -0
- package/dist/form-field-CAPdwdnZ.js.map +1 -0
- package/dist/{form-sizing-NXgjkmBG.js → form-sizing-CgcrUbLU.js} +5 -5
- package/dist/form-sizing-CgcrUbLU.js.map +1 -0
- package/dist/{forms-BV5m5aQF.js → forms-B3W8CH7-.js} +17 -13
- package/dist/forms-B3W8CH7-.js.map +1 -0
- package/dist/forms-numeric-CwjQJe-O.js +991 -0
- package/dist/forms-numeric-CwjQJe-O.js.map +1 -0
- package/dist/{header-BA697l4a.js → header-ZIIsRKxP.js} +145 -141
- package/dist/header-ZIIsRKxP.js.map +1 -0
- package/dist/header.recipes-BigdJjw1.js +6 -0
- package/dist/header.recipes-BigdJjw1.js.map +1 -0
- package/dist/hooks/use-files.d.ts +2 -0
- package/dist/{hooks-BQ-L7Uu2.js → hooks-BitHSh-Y.js} +27 -15
- package/dist/hooks-BitHSh-Y.js.map +1 -0
- package/dist/{icon-badge-COWbCCWu.js → icon-badge-npxF1SLX.js} +4 -4
- package/dist/{icon-badge-COWbCCWu.js.map → icon-badge-npxF1SLX.js.map} +1 -1
- package/dist/index.js +4 -5
- package/dist/{input-Cdw4k0fb.js → input-7KAc7XQL.js} +9 -9
- package/dist/{input-Cdw4k0fb.js.map → input-7KAc7XQL.js.map} +1 -1
- package/dist/input-DIREVYHs.js +21 -0
- package/dist/input-DIREVYHs.js.map +1 -0
- package/dist/{interaction-recipes-XR9ZpVYL.js → interaction-recipes-4wZ2tvfb.js} +2 -2
- package/dist/{interaction-recipes-XR9ZpVYL.js.map → interaction-recipes-4wZ2tvfb.js.map} +1 -1
- package/dist/item-FfWnaYST.js +278 -0
- package/dist/item-FfWnaYST.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 +1 -1
- package/dist/layout/sidebar.js +3 -3
- package/dist/layout/workspace.js +1 -1
- package/dist/layout.js +12 -12
- package/dist/layout.types-E_GAApzO.js +30 -0
- package/dist/layout.types-E_GAApzO.js.map +1 -0
- package/dist/lib/affordance-geometry.generated.d.ts +35 -35
- package/dist/lib/control-group-recipes.d.ts +5 -5
- package/dist/lib/field-affordance-recipes.d.ts +2 -2
- package/dist/lib/field-control-attributes.d.ts +11 -0
- package/dist/lib/field-state-recipes.d.ts +2 -0
- package/dist/lib/format.d.ts +1 -0
- package/dist/lib/motion-recipes.d.ts +3 -0
- package/dist/lib/navigation-row-recipes.d.ts +7 -7
- package/dist/lib/overlay-anatomy-recipes.d.ts +3 -3
- package/dist/lib/portal-recipes.d.ts +3 -0
- package/dist/lib/surface-recipes.d.ts +1 -1
- package/dist/lib/token-merge.generated.d.ts +18 -15
- package/dist/lib/utils.js +1 -1
- package/dist/map-demo-tile.svg +1 -1
- package/dist/{media-gallery-CSl5W1Fy.js → media-gallery-C81DAnKI.js} +6 -6
- package/dist/{media-gallery-CSl5W1Fy.js.map → media-gallery-C81DAnKI.js.map} +1 -1
- package/dist/{mentions-RKOQaaIB.js → mentions-qOnedSt4.js} +237 -168
- package/dist/mentions-qOnedSt4.js.map +1 -0
- package/dist/message-BJHnn43M.js +135 -0
- package/dist/message-BJHnn43M.js.map +1 -0
- package/dist/{metadata-list-qVV7AVxa.js → metadata-list-XkqZ_UXH.js} +64 -64
- package/dist/metadata-list-XkqZ_UXH.js.map +1 -0
- package/dist/{motion-recipes-ChBg4HBq.js → motion-recipes-DitYv6P2.js} +10 -2
- package/dist/motion-recipes-DitYv6P2.js.map +1 -0
- package/dist/navigation-BgtPJAhi.js +288 -0
- package/dist/navigation-BgtPJAhi.js.map +1 -0
- package/dist/navigation-Bt-v7rWP.js +261 -0
- package/dist/navigation-Bt-v7rWP.js.map +1 -0
- package/dist/{navigation-row-recipes-WZEs-hYo.js → navigation-row-recipes-BGVLvU_O.js} +9 -9
- package/dist/navigation-row-recipes-BGVLvU_O.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-E_OiIfJz.js → number-CYqBcrSj.js} +79 -87
- package/dist/number-CYqBcrSj.js.map +1 -0
- package/dist/overflow-tab-bar-BQCA2Zn2.js +172 -0
- package/dist/overflow-tab-bar-BQCA2Zn2.js.map +1 -0
- package/dist/overlays-CC8zI3Du.js +1017 -0
- package/dist/overlays-CC8zI3Du.js.map +1 -0
- package/dist/page-BoQ1VaFJ.js +331 -0
- package/dist/page-BoQ1VaFJ.js.map +1 -0
- package/dist/page-header-commands-DIKspJfx.js +193 -0
- package/dist/page-header-commands-DIKspJfx.js.map +1 -0
- package/dist/{pagination-Ch8X_47u.js → pagination-Br8TdV9A.js} +7 -7
- package/dist/{pagination-Ch8X_47u.js.map → pagination-Br8TdV9A.js.map} +1 -1
- package/dist/popover-k8TdUcAt.js +201 -0
- package/dist/popover-k8TdUcAt.js.map +1 -0
- package/dist/{popover-menu-BYaCdFhf.js → popover-menu-yn-o0kyA.js} +7 -7
- package/dist/{popover-menu-BYaCdFhf.js.map → popover-menu-yn-o0kyA.js.map} +1 -1
- package/dist/{popover.recipes-D3j8R8Yp.js → popover.recipes-DJ0AkUan.js} +19 -12
- package/dist/popover.recipes-DJ0AkUan.js.map +1 -0
- package/dist/portal-recipes-DyUXqUtD.js +9 -0
- package/dist/portal-recipes-DyUXqUtD.js.map +1 -0
- package/dist/{primitives-Du64iDbb.js → primitives-BkkQjYl7.js} +23 -18
- package/dist/primitives-BkkQjYl7.js.map +1 -0
- package/dist/primitives.js +4 -4
- package/dist/{progress-BvF2oCdV.js → progress-DZFXXzPs.js} +9 -9
- package/dist/{progress-BvF2oCdV.js.map → progress-DZFXXzPs.js.map} +1 -1
- package/dist/{receipt-D789Jwyy.js → receipt-C7LhOg7Q.js} +7 -7
- package/dist/receipt-C7LhOg7Q.js.map +1 -0
- package/dist/rich-text-BnTzZjIo.js +45 -0
- package/dist/rich-text-BnTzZjIo.js.map +1 -0
- package/dist/{rich-text-editor-Cm1dpUpQ.js → rich-text-editor-CAurDwT5.js} +501 -424
- package/dist/rich-text-editor-CAurDwT5.js.map +1 -0
- package/dist/rich-text-editor-toolbar-DbXig7Jk.js +99 -0
- package/dist/rich-text-editor-toolbar-DbXig7Jk.js.map +1 -0
- package/dist/rich-text-tree-BqyQ_7-R.js +66 -0
- package/dist/rich-text-tree-BqyQ_7-R.js.map +1 -0
- package/dist/{sanitize-html-DsQmI48u.js → sanitize-html-BWkH4dLM.js} +29 -16
- package/dist/sanitize-html-BWkH4dLM.js.map +1 -0
- package/dist/{scroll-area-La5RXsEk.js → scroll-area-Bj6CRUif.js} +2 -2
- package/dist/{scroll-area-La5RXsEk.js.map → scroll-area-Bj6CRUif.js.map} +1 -1
- package/dist/{separator-DAEV0w65.js → separator-B9ewiCGO.js} +2 -2
- package/dist/{separator-DAEV0w65.js.map → separator-B9ewiCGO.js.map} +1 -1
- package/dist/{separator-GNfPG-90.js → separator-DM6gs2vu.js} +3 -3
- package/dist/{separator-GNfPG-90.js.map → separator-DM6gs2vu.js.map} +1 -1
- package/dist/services/actions.js +1 -1
- package/dist/settings-DZPHgpx4.js +155 -0
- package/dist/settings-DZPHgpx4.js.map +1 -0
- package/dist/sheet-C4DHsgLk.js +250 -0
- package/dist/sheet-C4DHsgLk.js.map +1 -0
- package/dist/sidebar-C8BnDwTH.js +709 -0
- package/dist/sidebar-C8BnDwTH.js.map +1 -0
- package/dist/sidebar-CmD6a-HK.js +1004 -0
- package/dist/sidebar-CmD6a-HK.js.map +1 -0
- package/dist/skeleton-DDgdhmu9.js +265 -0
- package/dist/skeleton-DDgdhmu9.js.map +1 -0
- package/dist/smart-card-B6vLxqa_.js +617 -0
- package/dist/smart-card-B6vLxqa_.js.map +1 -0
- package/dist/{structure-C0V0_Fyf.js → structure-DZJ2wbAU.js} +2 -2
- package/dist/{structure-C0V0_Fyf.js.map → structure-DZJ2wbAU.js.map} +1 -1
- package/dist/style.css +1 -1
- package/dist/{surface-recipes-BKRVW8Os.js → surface-recipes-C8mNycaY.js} +2 -2
- package/dist/{surface-recipes-BKRVW8Os.js.map → surface-recipes-C8mNycaY.js.map} +1 -1
- package/dist/{table-DH7rozUv.js → table-CBonSdTp.js} +573 -519
- package/dist/table-CBonSdTp.js.map +1 -0
- package/dist/{table-CpvnzJn9.js → table-CXSPHH25.js} +75 -71
- package/dist/table-CXSPHH25.js.map +1 -0
- package/dist/tabs-C4Kr_hCr.js +192 -0
- package/dist/tabs-C4Kr_hCr.js.map +1 -0
- package/dist/{text-inputs-DXItiR0O.js → text-inputs-jdkS3ReG.js} +18 -18
- package/dist/text-inputs-jdkS3ReG.js.map +1 -0
- package/dist/theme.css +40 -37
- package/dist/{timelines-DmtztAY_.js → timelines-CoPwdJP0.js} +13 -12
- package/dist/timelines-CoPwdJP0.js.map +1 -0
- package/dist/tooltip-31NwIpTo.js +113 -0
- package/dist/tooltip-31NwIpTo.js.map +1 -0
- package/dist/{tree-CV11PURP.js → tree-CeYVzdFE.js} +9 -9
- package/dist/{tree-CV11PURP.js.map → tree-CeYVzdFE.js.map} +1 -1
- package/dist/typography/rich-text.js +1 -1
- package/dist/{typography-CSyJrh28.js → typography-C7-YMW1S.js} +12 -12
- package/dist/{typography-CSyJrh28.js.map → typography-C7-YMW1S.js.map} +1 -1
- package/dist/typography.js +1 -1
- package/dist/ui-provider-C-74NVLc.js +178 -0
- package/dist/ui-provider-C-74NVLc.js.map +1 -0
- package/dist/ui-provider.js +2 -3
- package/dist/{upload-C9SA0X-8.js → upload-Hdm5gObf.js} +309 -296
- package/dist/upload-Hdm5gObf.js.map +1 -0
- package/dist/{upload-queue-DhQJiSRc.js → upload-queue-D0sYPuqo.js} +16 -14
- package/dist/upload-queue-D0sYPuqo.js.map +1 -0
- package/dist/{usage-card-DVTRDmGz.js → usage-card-9s8hLDfn.js} +24 -17
- package/dist/usage-card-9s8hLDfn.js.map +1 -0
- package/dist/{utils-CF3c95Io.js → utils-DhuoqFy4.js} +255 -165
- package/dist/utils-DhuoqFy4.js.map +1 -0
- package/dist/value-inputs-D3aPgq9H.js +980 -0
- package/dist/value-inputs-D3aPgq9H.js.map +1 -0
- package/dist/{value-typography-ClupF0Gz.js → value-typography-uSzzG9Gf.js} +32 -26
- package/dist/value-typography-uSzzG9Gf.js.map +1 -0
- package/dist/{workspace-9EFVXUyk.js → workspace-CC8Vchiu.js} +51 -50
- package/dist/workspace-CC8Vchiu.js.map +1 -0
- package/docs/consumer-skill/SKILL.md +4 -3
- package/docs/consumer-skill/agents/themelia-ui-designer.md +96 -0
- package/docs/consumer-skill/examples/app-layout.tsx +52 -1
- package/docs/consumer-skill/examples/commerce-lines.tsx +271 -0
- package/docs/consumer-skill/examples/custom-composition.tsx +21 -0
- package/docs/consumer-skill/examples/detail.tsx +5 -4
- package/docs/consumer-skill/examples/edit.tsx +3 -3
- package/docs/consumer-skill/examples/editable-sections.tsx +38 -0
- package/docs/consumer-skill/examples/index-table.tsx +4 -4
- package/docs/consumer-skill/examples/manifest.json +38 -1
- package/docs/consumer-skill/examples/product-media.tsx +41 -0
- package/docs/consumer-skill/examples/product-parts.tsx +81 -0
- package/docs/consumer-skill/examples/rhf-edit-page.tsx +1 -1
- package/docs/consumer-skill/examples/rhf-overlay-form.tsx +24 -11
- package/docs/consumer-skill/examples/token-domain-structure.tsx +68 -0
- package/docs/consumer-skill/references/agents-md.md +21 -19
- package/docs/consumer-skill/references/analytics.md +33 -1
- package/docs/consumer-skill/references/commerce-composition.md +97 -0
- package/docs/consumer-skill/references/component-contracts.json +21249 -14205
- package/docs/consumer-skill/references/composition-mapping.md +17 -3
- package/docs/consumer-skill/references/composition.md +177 -32
- package/docs/consumer-skill/references/critique-rubric.md +98 -0
- package/docs/consumer-skill/references/custom-composition.md +261 -0
- package/docs/consumer-skill/references/data-reading.md +79 -0
- package/docs/consumer-skill/references/design-contract.md +12 -9
- package/docs/consumer-skill/references/discovery.md +27 -3
- package/docs/consumer-skill/references/domain-structures.md +124 -0
- package/docs/consumer-skill/references/installation.md +62 -8
- package/docs/consumer-skill/references/integration.md +59 -1
- package/docs/consumer-skill/references/product-composition.md +94 -0
- package/docs/consumer-skill/references/public-api.json +3044 -445
- package/docs/consumer-skill/references/review.md +87 -10
- package/docs/consumer-skill/references/rhf-workflows.md +79 -0
- package/docs/consumer-skill/references/screen-archetypes.md +19 -7
- package/docs/consumer-skill/references/screen-decisions.md +126 -0
- package/docs/consumer-skill/references/theming.md +24 -20
- package/docs/consumer-skill/references/tokens.json +9 -9
- package/docs/consumer-skill/references/view-craft.md +153 -0
- package/docs/consumer-skill/references/view-spec.md +73 -0
- package/docs/consumer-skill/references/workflows.md +7 -1
- package/docs/consumer-skill/scripts/composition-policy.mjs +176 -26
- package/docs/consumer-skill/scripts/composition-schema.mjs +1 -1
- package/docs/consumer-skill/scripts/composition.mjs +61 -5
- package/docs/consumer-skill/scripts/discovery.mjs +54 -0
- package/docs/consumer-skill/scripts/inspect-component.mjs +1 -1
- package/docs/consumer-skill/scripts/inspection.mjs +73 -18
- package/docs/consumer-skill/scripts/setup-skills.mjs +79 -7
- package/docs/consumer-skill/scripts/surface-policy.mjs +5 -5
- package/docs/consumer-skills/themelia-components/SKILL.md +14 -13
- package/docs/consumer-skills/themelia-composition/SKILL.md +16 -17
- package/docs/consumer-skills/themelia-design/SKILL.md +55 -0
- package/docs/consumer-skills/themelia-foundation/SKILL.md +2 -1
- package/docs/consumer-skills/themelia-tokenization/SKILL.md +24 -17
- package/package.json +4 -2
- package/templates/admin-shell-template.tsx +1 -2
- package/templates/customers-template.tsx +18 -16
- package/dist/accordion-96o0pN62.js.map +0 -1
- package/dist/action-menu-CHgs8vmj.js.map +0 -1
- package/dist/affordance-geometry.generated-B8yGOr8-.js.map +0 -1
- package/dist/ai-artifact-BZUGwBq6.js.map +0 -1
- package/dist/app-shell-D63ATkIK.js +0 -237
- package/dist/app-shell-D63ATkIK.js.map +0 -1
- package/dist/auth-D2FVZ1MH.js.map +0 -1
- package/dist/avatar-DWO_HHhB.js.map +0 -1
- package/dist/base/cascader.js.map +0 -1
- package/dist/batch-action-bar-CdfIkCsV.js.map +0 -1
- package/dist/breadcrumbs-B-WFKecD.js.map +0 -1
- package/dist/button-DkmK-z8E.js.map +0 -1
- package/dist/buttons-BbfzgczK.js.map +0 -1
- package/dist/cards-4JTWqvVe.js +0 -68
- package/dist/cards-4JTWqvVe.js.map +0 -1
- package/dist/chart-C19flDQb.js +0 -155
- package/dist/chart-C19flDQb.js.map +0 -1
- package/dist/choice-inputs-JLtij2y4.js +0 -776
- package/dist/choice-inputs-JLtij2y4.js.map +0 -1
- package/dist/code-block-CGNaUtAE.js.map +0 -1
- package/dist/combobox-CBJDs6w_.js +0 -877
- package/dist/combobox-CBJDs6w_.js.map +0 -1
- package/dist/combobox-hbhSS18O.js +0 -355
- package/dist/combobox-hbhSS18O.js.map +0 -1
- package/dist/command-D8NrBj-b.js.map +0 -1
- package/dist/comments-Di4w0H_S.js.map +0 -1
- package/dist/containers-CRmHf7GP.js.map +0 -1
- package/dist/control-group-recipes-DBXmfh2E.js.map +0 -1
- package/dist/data-display-D4oujtx0.js.map +0 -1
- package/dist/date-picker-zOt1oNss.js +0 -1542
- package/dist/date-picker-zOt1oNss.js.map +0 -1
- package/dist/date-pickers-cj8IXbDC.js +0 -179
- package/dist/date-pickers-cj8IXbDC.js.map +0 -1
- package/dist/dropdown-menu-CjY8Vt7W.js +0 -193
- package/dist/dropdown-menu-CjY8Vt7W.js.map +0 -1
- package/dist/feedback-DZNL5Lg1.js +0 -239
- package/dist/feedback-DZNL5Lg1.js.map +0 -1
- package/dist/field-affordance-recipes-DjwGx8eM.js.map +0 -1
- package/dist/filters-BcT-uoFy.js +0 -2209
- package/dist/filters-BcT-uoFy.js.map +0 -1
- package/dist/form-field-CsgRmdit.js +0 -63
- package/dist/form-field-CsgRmdit.js.map +0 -1
- package/dist/form-sizing-NXgjkmBG.js.map +0 -1
- package/dist/forms-BV5m5aQF.js.map +0 -1
- package/dist/forms-numeric-Cd33AKbD.js +0 -906
- package/dist/forms-numeric-Cd33AKbD.js.map +0 -1
- package/dist/header-BA697l4a.js.map +0 -1
- package/dist/hooks-BQ-L7Uu2.js.map +0 -1
- package/dist/input-DOPL5_QE.js +0 -21
- package/dist/input-DOPL5_QE.js.map +0 -1
- package/dist/item-BvZ2DR_x.js +0 -277
- package/dist/item-BvZ2DR_x.js.map +0 -1
- package/dist/layout.types-Cn7aUzJp.js +0 -20
- package/dist/layout.types-Cn7aUzJp.js.map +0 -1
- package/dist/mentions-RKOQaaIB.js.map +0 -1
- package/dist/message-INU2xsxu.js +0 -128
- package/dist/message-INU2xsxu.js.map +0 -1
- package/dist/metadata-list-qVV7AVxa.js.map +0 -1
- package/dist/motion-recipes-ChBg4HBq.js.map +0 -1
- package/dist/navigation-BQNcg1jT.js +0 -269
- package/dist/navigation-BQNcg1jT.js.map +0 -1
- package/dist/navigation-DLF3E1IC.js +0 -145
- package/dist/navigation-DLF3E1IC.js.map +0 -1
- package/dist/navigation-row-recipes-WZEs-hYo.js.map +0 -1
- package/dist/number-E_OiIfJz.js.map +0 -1
- package/dist/overflow-tab-bar-CrbqMteP.js +0 -284
- package/dist/overflow-tab-bar-CrbqMteP.js.map +0 -1
- package/dist/overlays-BlKynmde.js +0 -1004
- package/dist/overlays-BlKynmde.js.map +0 -1
- package/dist/page-CIwNUtGr.js +0 -227
- package/dist/page-CIwNUtGr.js.map +0 -1
- package/dist/page-header-commands-DFMlNYzN.js +0 -128
- package/dist/page-header-commands-DFMlNYzN.js.map +0 -1
- package/dist/popover-uwzX2vo7.js +0 -198
- package/dist/popover-uwzX2vo7.js.map +0 -1
- package/dist/popover.recipes-D3j8R8Yp.js.map +0 -1
- package/dist/primitives-Du64iDbb.js.map +0 -1
- package/dist/receipt-D789Jwyy.js.map +0 -1
- package/dist/rich-text-CLJEf76s.js +0 -78
- package/dist/rich-text-CLJEf76s.js.map +0 -1
- package/dist/rich-text-editor-Cm1dpUpQ.js.map +0 -1
- package/dist/rich-text-editor-toolbar-L__e4x47.js +0 -94
- package/dist/rich-text-editor-toolbar-L__e4x47.js.map +0 -1
- package/dist/safe-image-src-C6kQSMBZ.js +0 -17
- package/dist/safe-image-src-C6kQSMBZ.js.map +0 -1
- package/dist/sanitize-html-DsQmI48u.js.map +0 -1
- package/dist/settings-BA2iboic.js +0 -174
- package/dist/settings-BA2iboic.js.map +0 -1
- package/dist/sheet-DoAxTb2J.js +0 -213
- package/dist/sheet-DoAxTb2J.js.map +0 -1
- package/dist/sidebar-ByqKR_W5.js +0 -512
- package/dist/sidebar-ByqKR_W5.js.map +0 -1
- package/dist/sidebar-D2iSnGJ7.js +0 -619
- package/dist/sidebar-D2iSnGJ7.js.map +0 -1
- package/dist/skeleton-CUj8O5Bd.js +0 -264
- package/dist/skeleton-CUj8O5Bd.js.map +0 -1
- package/dist/smart-card-CqkzQsK-.js +0 -614
- package/dist/smart-card-CqkzQsK-.js.map +0 -1
- package/dist/table-CpvnzJn9.js.map +0 -1
- package/dist/table-DH7rozUv.js.map +0 -1
- package/dist/tabs-eqVsJZWO.js +0 -191
- package/dist/tabs-eqVsJZWO.js.map +0 -1
- package/dist/text-inputs-DXItiR0O.js.map +0 -1
- package/dist/theme-scope-BJ6eE2xt.js +0 -50
- package/dist/theme-scope-BJ6eE2xt.js.map +0 -1
- package/dist/timelines-DmtztAY_.js.map +0 -1
- package/dist/tooltip-B4hjKtoV.js +0 -111
- package/dist/tooltip-B4hjKtoV.js.map +0 -1
- package/dist/ui-provider-CQCuCBcy.js +0 -136
- package/dist/ui-provider-CQCuCBcy.js.map +0 -1
- package/dist/upload-C9SA0X-8.js.map +0 -1
- package/dist/upload-queue-DhQJiSRc.js.map +0 -1
- package/dist/usage-card-DVTRDmGz.js.map +0 -1
- package/dist/use-mobile-vaLKwgyf.js +0 -15
- package/dist/use-mobile-vaLKwgyf.js.map +0 -1
- package/dist/utils-CF3c95Io.js.map +0 -1
- package/dist/value-inputs-C0o70p-U.js +0 -980
- package/dist/value-inputs-C0o70p-U.js.map +0 -1
- package/dist/value-typography-ClupF0Gz.js.map +0 -1
- package/dist/workspace-9EFVXUyk.js.map +0 -1
|
@@ -1,35 +1,34 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: themelia-composition
|
|
3
|
-
description:
|
|
3
|
+
description: Use when composing or repairing Themelia screens, shells, public sites, data-led domain components and workflows, including owner selection, hierarchy, responsive regions and compound APIs.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Themelia composition
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
Start with the user's decision, representative records, related entities and editable state. Use **themelia-components** for installed identity/APIs, **themelia-tokenization** for shared visual roles and app geometry, and **themelia-design** to read records into a view spec and score the rendered view.
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
Before JSX, settle task, reading priority, action scope and inset owners. Read [screen decisions](../../consumer-skill/references/screen-decisions.md) for new screens/repairs. Optional props are capabilities, not reasons to add navigation, cards or commands.
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
## Let the data shape the subject
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
node node_modules/themelia-react-ui/docs/consumer-skill/scripts/map-composition.mjs --roles
|
|
16
|
-
node node_modules/themelia-react-ui/docs/consumer-skill/scripts/map-composition.mjs --pattern record-detail --main invoice-lines --aside facts
|
|
17
|
-
```
|
|
14
|
+
Discover task-specific owners before choosing custom markup: product options, variant editing and attached media have different owners from generic controls. Compare their data/state/render seams; use a fitting owner or its parts. Custom JSX shapes additional relationships without requiring an API gap. Read [capability comparison and domain coverage](../../consumer-skill/references/custom-composition.md). More data and a new component name do not establish better composition.
|
|
18
15
|
|
|
19
|
-
|
|
16
|
+
## Choose the seam
|
|
20
17
|
|
|
21
|
-
|
|
18
|
+
A feature coordinates workflows; blocks present subjects; base owns controls/disclosure/structures; layout owns app/page regions; primitives format values. Each can have local interaction. Combine these owners and compound parts.
|
|
22
19
|
|
|
23
|
-
|
|
20
|
+
Inspect an existing owner's behavior before replacing it: a badge or retained field does not establish an API limit. Card owns framing; Accordion owns labeled disclosure; Collapsible supports a custom single disclosure. Rich slot content retains the owner's typography role.
|
|
24
21
|
|
|
25
|
-
|
|
22
|
+
Use the [mapper](../../consumer-skill/references/composition-mapping.md) with --roles or a pattern/subject query. Read coverage, unresolved needs and nextReads. Unmapped does not mean unsupported. [Archetypes](../../consumer-skill/references/screen-archetypes.md) are starting responsibilities, not layouts to reproduce; orders and invoices have an [owner map](../../consumer-skill/references/commerce-composition.md).
|
|
26
23
|
|
|
27
|
-
|
|
24
|
+
## Assign geometry once
|
|
28
25
|
|
|
29
|
-
|
|
26
|
+
Page narrow centers one-column forms/details at 48rem; aside infers xl/80rem. Explicit TwoColumnLayout needs Page maxWidth="xl". Collections default to lg/64rem. Settings use Page → SettingsShell → FormSection.
|
|
30
27
|
|
|
31
|
-
|
|
28
|
+
Explicit maxWidth wins, then narrow, then aside width. Page owns h1, commands, lifecycle, gutters and subject gaps. AuthShell owns auth; Container/Section own sites. Header actions defaultContent preserves responsive commands. Loading precedes error then empty; supply copy/onRetry. Resource shells are migration APIs.
|
|
32
29
|
|
|
33
|
-
|
|
30
|
+
Stack/Grid/AdaptiveGrid own peer relationships; Card owns frame/insets. Card flat removes chrome, not padding; use none under an existing inset owner. Blocks stay card-free unless their purpose is a card. Tailwind owns app-specific tracks/queries/overflow; read [domain structures](../../consumer-skill/references/domain-structures.md).
|
|
34
31
|
|
|
35
|
-
|
|
32
|
+
Indexes use DataView or FilterProvider → DataTable with FilterLayout in topbarContent; exports in topbarEnd, selection in bulkActions, record commands in rowActions. Table owns its surface. Keep fixed scope distinct from filters. Apps own transport, permissions, routing and translations; read [forms](../../consumer-skill/references/rhf-workflows.md).
|
|
33
|
+
|
|
34
|
+
Rank commands by scope/frequency/consequence; use overflow for secondary item actions when visible buttons compete with identity. Add back navigation only for a real return journey. Preserve narrow DOM priority, not just column stacking. Run app checks and [review](../../consumer-skill/references/review.md); inspect actual narrow/wide appearance and opened/error/accepted states. Valid API usage is not product quality.
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: themelia-design
|
|
3
|
+
description: Use when designing or redesigning a Themelia view from real records, or when a screen works but reads poorly; reads the data for what matters, ranks information, chooses encodings and emphasis, and critiques rendered screens with a scored rubric. Not for component APIs or theme tokens.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Themelia design
|
|
7
|
+
|
|
8
|
+
Correct owners and passing checks make a view valid, not clear. This skill adds
|
|
9
|
+
the designer's part: what the view shows, what the eye reaches first, and
|
|
10
|
+
whether the rendered result lets the user decide quickly. Use
|
|
11
|
+
**themelia-composition** for owner selection, surfaces and inset ownership,
|
|
12
|
+
**themelia-components** for installed APIs and **themelia-tokenization** for
|
|
13
|
+
themes and density.
|
|
14
|
+
|
|
15
|
+
## Work in this order
|
|
16
|
+
|
|
17
|
+
1. **Read the data.** Read a typical, a large, an exceptional and an empty
|
|
18
|
+
record, then write the data brief: the decision, three facts that matter, the
|
|
19
|
+
anomaly, and states to show or omit. See
|
|
20
|
+
[data reading](../../consumer-skill/references/data-reading.md).
|
|
21
|
+
2. **Write the view spec.** Rank information as must, should, could and omit;
|
|
22
|
+
name the focal point; sketch 390 and 1440 wireframes in text; choose an
|
|
23
|
+
encoding per fact. See [view spec](../../consumer-skill/references/view-spec.md)
|
|
24
|
+
and [screen decisions](../../consumer-skill/references/screen-decisions.md).
|
|
25
|
+
3. **Find owners.** Map regions to owners with the finder, mapper and inspector
|
|
26
|
+
described in [discovery](../../consumer-skill/references/discovery.md);
|
|
27
|
+
[archetypes](../../consumer-skill/references/screen-archetypes.md) and
|
|
28
|
+
[metrics](../../consumer-skill/references/analytics.md) give starting points.
|
|
29
|
+
4. **Build one representative subject**, then the rest of the view.
|
|
30
|
+
5. **Render and critique.** Screenshot 390×844 and 1440×900 in light and dark
|
|
31
|
+
with the opened, error and accepted states the task touches. Run the census
|
|
32
|
+
and score the [critique rubric](../../consumer-skill/references/critique-rubric.md).
|
|
33
|
+
6. **Fix and repeat** at most three rounds, then report scores, decisions and
|
|
34
|
+
what stayed unverified.
|
|
35
|
+
|
|
36
|
+
## Taste, briefly
|
|
37
|
+
|
|
38
|
+
[View craft](../../consumer-skill/references/view-craft.md) holds the detail:
|
|
39
|
+
|
|
40
|
+
- One focal point per view and per region.
|
|
41
|
+
- One solid primary command per surface; at most three text levels per region;
|
|
42
|
+
tones only for status that changes the action.
|
|
43
|
+
- Encode by the fact's shape: a figure with its baseline, a trend where shape
|
|
44
|
+
matters, a table for comparable rows, a list for rows that differ.
|
|
45
|
+
- Label only ambiguous values; omit zero and not-applicable counters.
|
|
46
|
+
- Gaps grow outward; few edges; one frame per independent subject.
|
|
47
|
+
- Most improvements remove something. Never add decoration, colours, tokens or
|
|
48
|
+
anatomy overrides to make a view look designed.
|
|
49
|
+
|
|
50
|
+
## Delegate to the designer agent
|
|
51
|
+
|
|
52
|
+
For a whole view or a redesign, run the
|
|
53
|
+
[themelia-ui-designer agent](../../consumer-skill/agents/themelia-ui-designer.md):
|
|
54
|
+
`design` mode builds and self-critiques; `review` mode, in a fresh agent, gives
|
|
55
|
+
an independent read-only score.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: themelia-foundation
|
|
3
|
-
description: Compatibility route for older Themelia instructions naming themelia-foundation; use the current components, tokenization and
|
|
3
|
+
description: Compatibility route for older Themelia instructions naming themelia-foundation; use the current components, tokenization, composition and design capabilities for new work.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Themelia foundation compatibility route
|
|
@@ -10,5 +10,6 @@ The canonical capability split is now:
|
|
|
10
10
|
- [themelia-components](../themelia-components/SKILL.md): installed setup, owner discovery, exact API inspection and framework integration.
|
|
11
11
|
- [themelia-tokenization](../themelia-tokenization/SKILL.md): CSS/theme setup, semantic roots, typography and scoped themes.
|
|
12
12
|
- [themelia-composition](../themelia-composition/SKILL.md): shell/route ownership, screen hierarchy and delivery.
|
|
13
|
+
- [themelia-design](../themelia-design/SKILL.md): data briefs, view specs and rubric-scored critique of rendered views.
|
|
13
14
|
|
|
14
15
|
Follow the matching capability. [Installation](../../consumer-skill/references/installation.md) explains the complete current bundle. This package path is retained for existing instructions; separately installed skills are not replaced automatically.
|
|
@@ -1,35 +1,42 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: themelia-tokenization
|
|
3
|
-
description:
|
|
3
|
+
description: Build consistent domain structures with Themelia base/layout components, semantic JSX and token-backed Tailwind; also theme shared spacing, density, typography, colors and portals. Not library maintenance.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Themelia tokenization
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
Use mostly public base components and layout blocks. When a domain needs a particular structure, compose their content with semantic JSX and token-backed Tailwind on app-owned elements. **themelia-components** verifies APIs; **themelia-composition** decides hierarchy; **themelia-design** judges the rendered view. Read [domain structures](../../consumer-skill/references/domain-structures.md) and its executable allocation example; the [design contract](../../consumer-skill/references/design-contract.md) owns shared roles.
|
|
9
9
|
|
|
10
|
-
## Inspect
|
|
10
|
+
## Inspect before applying
|
|
11
11
|
|
|
12
|
-
Resolve
|
|
12
|
+
Resolve installed identity and active CSS through [installation](../../consumer-skill/references/installation.md). Shipped component CSS and app-authored Tailwind compilation are separate setup paths. Override after package styles or inside ThemeScope.
|
|
13
13
|
|
|
14
14
|
```sh
|
|
15
|
-
node node_modules/themelia-react-ui/docs/consumer-skill/scripts/inspect-tokens.mjs
|
|
16
|
-
node node_modules/themelia-react-ui/docs/consumer-skill/scripts/inspect-tokens.mjs
|
|
15
|
+
node node_modules/themelia-react-ui/docs/consumer-skill/scripts/inspect-tokens.mjs gap-space-xl
|
|
16
|
+
node node_modules/themelia-react-ui/docs/consumer-skill/scripts/inspect-tokens.mjs --space-scale
|
|
17
17
|
```
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
Read overrideRoot and exact spelling. Roots are settings; derived --spacing-*, --radius-* and --container-* aliases are not. Do not read those aliases in scoped calc expressions. The lookup does not index semantic colors; follow its stylesheet/theme reads.
|
|
20
20
|
|
|
21
|
-
##
|
|
21
|
+
## Compose without drift
|
|
22
22
|
|
|
23
|
-
|
|
24
|
-
- Typography changes use supported text/font roles and provider defaults. Visual size stays separate from heading level. Density does not reduce primary copy to compact metadata.
|
|
25
|
-
- `--space-scale` changes gaps/insets; `--density-scale` changes control/row heights. Action/control sizes, row density, copy gaps and surface insets remain independent. Use the [relationship table](../../consumer-skill/references/design-contract.md#semantic-roles) to select public gaps.
|
|
26
|
-
- Surface insets belong to Card/overlay anatomy; page gutters belong to layout. Change the appropriate owner/root instead of accumulating wrappers or padding resets.
|
|
27
|
-
- The single radius root drives outer shells and height-bounded inner controls. Physical nesting does not choose the role. Icons, avatars and shell dimensions have their own existing roots.
|
|
23
|
+
Public props/parts own controls, rows, text and surfaces. Stack/Grid/AdaptiveGrid own routine sibling layout. Tailwind owns specialized tracks, parent queries, alignment, overflow and drawing on app markup. A valid token on the wrong owner still drifts: do not repad a public panel/menu or redraw its states. Use fitting domain owners; custom JSX shapes additional relationships.
|
|
28
24
|
|
|
29
|
-
|
|
25
|
+
| Relationship | Public gap / shipped default |
|
|
26
|
+
| --- | --- |
|
|
27
|
+
| Title + description | dense / normal: 2 / 4px |
|
|
28
|
+
| Compact affordances | xs: 4px |
|
|
29
|
+
| Commands | md: 8px |
|
|
30
|
+
| Related fields/content | xl: 16px |
|
|
31
|
+
| Independent subjects/columns | 2xl: 24px |
|
|
32
|
+
| Major page regions | 3xl: 32px |
|
|
30
33
|
|
|
31
|
-
|
|
34
|
+
Page owns gutters, Card owns insets, structures own peer gaps. Card flat removes paint, not its md inset (24px). Use padding none when an ancestor owns that room; align flat/painted peer content edges. A block inside adds no second Card/inset. Read [semantic roles](../../consumer-skill/references/design-contract.md#semantic-roles), not a screenshot's measurements.
|
|
35
|
+
|
|
36
|
+
Use Heading/Text props for copy roles and primitives for Money/Date/Number/contact/missing values. Semantic tag is separate from visual size. Rich trigger/slot labels can override inherited typography: preserve the owner's label scale, reserving larger headings for the actual subject. Density does not shrink primary content into metadata.
|
|
32
37
|
|
|
33
|
-
|
|
38
|
+
Pair shadcn surfaces/foregrounds. Badges are neutral for categories/counts; status tones communicate status. Numbers use UI sans/tabular figures; MonoValue is for codes. Existing action/control, row, surface, icon/avatar and shell roots cover geometry. --space-scale changes gaps/insets; --density-scale changes controls/rows. First repair duplicated padding and priorities before proposing mobile root changes. Use [theme boundaries](../../consumer-skill/references/theming.md); avoid private recipes, local focus scales, raw palettes and per-component tokens.
|
|
39
|
+
|
|
40
|
+
## Verify the effect
|
|
34
41
|
|
|
35
|
-
|
|
42
|
+
Vary spacing/density independently. Inspect both themes, narrow/wide parents, text hierarchy, adjoining heights, corners and clipping. Open a real menu/picker/overlay in the scoped theme and verify portal inheritance. Run app checks and [review](../../consumer-skill/references/review.md), execute keyboard/focus and relevant invalid/disabled states, and report source, inspected appearance and behavior separately. No Themelia theme-publishing CLI exists.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "themelia-react-ui",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.6",
|
|
4
4
|
"description": "A composable React UI library for modern admin applications, built on Base UI and Tailwind with shadcn-compatible themes, shared design tokens, reusable layouts, blocks and workflows.",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public",
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
"dist",
|
|
30
30
|
"README.md",
|
|
31
31
|
"CHANGELOG.md",
|
|
32
|
+
"MIGRATION.md",
|
|
32
33
|
"docs/consumer-skill",
|
|
33
34
|
"docs/consumer-skills",
|
|
34
35
|
"templates",
|
|
@@ -462,7 +463,7 @@
|
|
|
462
463
|
"test:browser": "npm run build:preview && node scripts/run-browser.mjs",
|
|
463
464
|
"check:package": "node scripts/check-package.mjs",
|
|
464
465
|
"check": "npm run check:contract && npm run check:preview && npm run check:docs && npm run lint && npm run check:design-lint && npm run typecheck && npm test && npm run build && npm run check:skill && npm run check:maps && npm run check:package && npm run build:preview",
|
|
465
|
-
"check:contract": "node --test scripts/test-runtime-ownership.mjs scripts/test-primitive-geometry.mjs scripts/test-source-entrypoints.mjs scripts/test-utility-vocabulary.mjs scripts/test-theme-contrast.mjs scripts/test-theme-modes.mjs && node scripts/check-contract.mjs",
|
|
466
|
+
"check:contract": "node --test scripts/test-runtime-ownership.mjs scripts/test-primitive-geometry.mjs scripts/test-source-entrypoints.mjs scripts/test-utility-vocabulary.mjs scripts/test-example-utilities.mjs scripts/test-theme-contrast.mjs scripts/test-theme-modes.mjs && node scripts/check-contract.mjs",
|
|
466
467
|
"lint": "node scripts/generate-utilities.mjs && oxlint src/components src/lib src/preview docs/consumer-skill/examples templates --deny-warnings",
|
|
467
468
|
"check:design-lint": "node scripts/generate-utilities.mjs && node scripts/check-design-lint.mjs",
|
|
468
469
|
"check:preview": "node scripts/check-preview.mjs",
|
|
@@ -521,6 +522,7 @@
|
|
|
521
522
|
"hast-util-sanitize": "^5.0.2",
|
|
522
523
|
"hast-util-to-html": "^9.0.5",
|
|
523
524
|
"react-resizable-panels": "^4.11.2",
|
|
525
|
+
"style-to-js": "^1.1.21",
|
|
524
526
|
"tailwind-merge": "^3.5.0",
|
|
525
527
|
"zustand": "^5.0.12"
|
|
526
528
|
},
|
|
@@ -201,13 +201,12 @@ export interface AdminStarterShellProps {
|
|
|
201
201
|
}
|
|
202
202
|
|
|
203
203
|
function TemplateLink({ href, children, active, disabled, external, target, rel, onClick, onNavigate, ...props }: LayoutLinkRenderProps & { onNavigate: (id: AdminTemplateId) => void }) {
|
|
204
|
-
const { setOpenMobile } = useSidebar();
|
|
205
204
|
return <a {...props} href={disabled ? undefined : href} target={target ?? (external ? '_blank' : undefined)} rel={rel ?? (external ? 'noopener noreferrer' : undefined)} aria-current={active ? 'page' : undefined} aria-disabled={disabled || undefined} onClick={(event) => {
|
|
206
205
|
onClick?.(event);
|
|
207
206
|
if (disabled) { event.preventDefault(); return; }
|
|
208
207
|
if (event.defaultPrevented || event.button !== 0 || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey || external || (target && target !== '_self')) return;
|
|
209
208
|
const route = Object.values(TEMPLATE_ROUTES).find((item) => item.url === href);
|
|
210
|
-
if (route) { event.preventDefault(); onNavigate(route.id);
|
|
209
|
+
if (route) { event.preventDefault(); onNavigate(route.id); }
|
|
211
210
|
}}>{children}</a>;
|
|
212
211
|
}
|
|
213
212
|
|
|
@@ -25,7 +25,7 @@ import { DataTable } from 'themelia-react-ui/features/table';
|
|
|
25
25
|
import { TwoColumnLayout } from 'themelia-react-ui/layout/containers';
|
|
26
26
|
import { Page } from 'themelia-react-ui/layout/page';
|
|
27
27
|
import { Date as DateValue, Money, useMoneyFormatter } from 'themelia-react-ui/primitives';
|
|
28
|
-
import { Text } from 'themelia-react-ui/typography';
|
|
28
|
+
import { Heading, Text } from 'themelia-react-ui/typography';
|
|
29
29
|
|
|
30
30
|
interface CustomerOrderSummary {
|
|
31
31
|
id: string;
|
|
@@ -282,19 +282,21 @@ export function CustomersAdminTemplate() {
|
|
|
282
282
|
stickyAside
|
|
283
283
|
main={
|
|
284
284
|
<Stack gap="2xl">
|
|
285
|
-
<
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
285
|
+
<DataTable<CustomerOrderSummary>
|
|
286
|
+
columns={orderColumns}
|
|
287
|
+
data={CUSTOMER_ORDERS}
|
|
288
|
+
topbarContent={
|
|
289
|
+
<Stack gap="dense">
|
|
290
|
+
<Stack direction="horizontal" align="center" gap="md" wrap>
|
|
291
|
+
<Heading tag="h2" size="base" className="text-inherit">Orders placed</Heading>
|
|
292
|
+
<Badge tone="neutral">{CUSTOMER_ORDERS.length}</Badge>
|
|
293
|
+
</Stack>
|
|
294
|
+
<Text size="xs" type="secondary">Orders placed across Online Store and SoHo POS.</Text>
|
|
295
|
+
</Stack>
|
|
296
|
+
}
|
|
297
|
+
enableSorting
|
|
298
|
+
getRowId={(order) => order.id}
|
|
299
|
+
/>
|
|
298
300
|
|
|
299
301
|
<Card
|
|
300
302
|
title="Timeline"
|
|
@@ -418,7 +420,7 @@ export function CustomersAdminTemplate() {
|
|
|
418
420
|
>
|
|
419
421
|
<form id={contactFormId} onSubmit={(event) => { event.preventDefault(); saveContact(); }}>
|
|
420
422
|
<Stack gap="xl">
|
|
421
|
-
<FormSection title="Contact information">
|
|
423
|
+
<FormSection title="Contact information" surface="flat" padding="none">
|
|
422
424
|
<Grid columns={{ base: 1, sm: 2 }} gap="lg">
|
|
423
425
|
<FormField label="Full name" required>
|
|
424
426
|
<Input
|
|
@@ -477,7 +479,7 @@ export function CustomersAdminTemplate() {
|
|
|
477
479
|
formId={creditFormId}
|
|
478
480
|
>
|
|
479
481
|
<form id={creditFormId} onSubmit={(event) => { event.preventDefault(); handleIssueStoreCredit(); }}>
|
|
480
|
-
<FormSection title="Store credit adjustment">
|
|
482
|
+
<FormSection title="Store credit adjustment" surface="flat" padding="none">
|
|
481
483
|
<FormField
|
|
482
484
|
label="Credit amount (USD)"
|
|
483
485
|
required
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"accordion-96o0pN62.js","names":["Accordion","AccordionPrimitive","AccordionItem","AccordionTrigger","AccordionContent","Accordion","React","PrimitiveAccordion","PrimitiveAccordionItem","PrimitiveAccordionTrigger","PrimitiveAccordionContent","Accordion","Text","focusRecipes","motionRecipes","Stack","interactionRecipes","DisclosurePanelElement","IconBadge","React$1","Accordion$2","props","Accordion","cn","className","AccordionItem$1","AccordionTrigger$1","children","ChevronDownIcon","AccordionContent$1","panelProps","Accordion$1","AccordionItem","AccordionTrigger","isSimpleText","AccordionContent","ACCORDION_ROOT_VARIANT_CLASS","ACCORDION_ITEM_VARIANT_CLASS","ACCORDION_TRIGGER_BASE","ACCORDION_CONTENT_PADDING","defaultSmartAccordionStrings","SmartAccordion","forwardRef","stringsProp","strings","useStrings","hasIconColumn","iconStyle","items","item","contentPadding","triggerGridClass","onValueChange","next","variant","itemClassName","triggerClassName","SmartAccordionIcon","isSimpleContent","contentClassName","content","reserveSpace","icon"],"sources":["../src/components/ui/accordion.tsx","../src/components/base/accordion/accordion.tsx","../src/components/base/accordion/accordion-variants.ts","../src/components/base/accordion/accordion.strings.ts","../src/components/base/accordion/smart-accordion.tsx"],"sourcesContent":["import { DisclosurePanelElement } from './disclosure-panel';\nimport { motionRecipes } from '../../lib/motion-recipes';\nimport { Accordion as AccordionPrimitive } from \"@base-ui/react/accordion\"\n\nimport { cn } from \"../../lib/utils\"\nimport { ChevronDownIcon } from \"lucide-react\"\n\nfunction Accordion({ className, ...props }: AccordionPrimitive.Root.Props) {\n return (\n <AccordionPrimitive.Root\n data-slot=\"accordion\"\n className={cn(\"border-border accordion--component flex w-full flex-col border box-border overflow-hidden\", className)}\n {...props}\n />\n )\n}\n\nfunction AccordionItem({ className, ...props }: AccordionPrimitive.Item.Props) {\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={cn(\"border-border accordion-item--component border-b last:border-b-0\", className)}\n {...props}\n />\n )\n}\n\nfunction AccordionTrigger({\n className,\n children,\n ...props\n}: AccordionPrimitive.Trigger.Props) {\n return (\n <AccordionPrimitive.Header className=\"accordion-header m-0\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\"accordion-trigger--component flex w-full items-center justify-between border-0 bg-transparent outline-none cursor-pointer box-border\", className)}\n {...props}\n >\n {children}\n <ChevronDownIcon data-slot=\"accordion-trigger-icon\" className={cn(\"accordion-trigger--icon size-icon text-muted-foreground shrink-0 [[aria-expanded=true]_&]:rotate-180\", motionRecipes.chevron)} />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n )\n}\n\nfunction AccordionContent({\n className,\n children,\n render,\n ...props\n}: AccordionPrimitive.Panel.Props) {\n return (\n <AccordionPrimitive.Panel\n data-slot=\"accordion-content\"\n className={cn(\"accordion-content--component box-border text-inherit h-(--accordion-panel-height)\", motionRecipes.disclosure, className)}\n {...props}\n render={(panelProps, state) => <DisclosurePanelElement props={panelProps} state={state} render={render} heightVariable=\"--accordion-panel-height\" />}\n >\n {children}\n </AccordionPrimitive.Panel>\n )\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n\n","/**\n * Accordion — tokenized base wrapper around the shadcn/Base UI primitive.\n *\n * The internal primitive intentionally keeps shadcn's roomy defaults. This\n * public layer calibrates them for admin surfaces: radius tokens, 12px row\n * insets, density-aware vertical rhythm, quiet hover/focus treatments, and\n * matching trigger/content columns. Consumers retain the complete compound\n * API and can override any treatment with `className`.\n */\nimport * as React from 'react';\n\nimport {\n\tAccordion as PrimitiveAccordion,\n\tAccordionContent as PrimitiveAccordionContent,\n\tAccordionItem as PrimitiveAccordionItem,\n\tAccordionTrigger as PrimitiveAccordionTrigger,\n} from '../../ui/accordion';\nimport { Text } from '../../typography';\nimport { cn } from '../../../lib/utils';\nimport { focusRecipes } from '../../../lib/focus-recipes';\nimport { interactionRecipes } from '../../../lib/interaction-recipes';\n\nexport type AccordionProps = React.ComponentPropsWithoutRef<typeof PrimitiveAccordion>;\nexport type AccordionItemProps = React.ComponentPropsWithoutRef<typeof PrimitiveAccordionItem>;\nexport type AccordionTriggerProps = React.ComponentPropsWithoutRef<typeof PrimitiveAccordionTrigger>;\nexport type AccordionContentProps = React.ComponentPropsWithoutRef<typeof PrimitiveAccordionContent>;\n\nconst Accordion = React.forwardRef<React.ElementRef<typeof PrimitiveAccordion>, AccordionProps>(\n\tfunction Accordion({ className, ...props }, ref) {\n\t\treturn (\n\t\t\t<PrimitiveAccordion\n\t\t\t\tref={ref}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'accordion--component rounded-radius border-border bg-card text-card-foreground',\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);\nAccordion.displayName = 'Accordion';\n\nconst AccordionItem = React.forwardRef<React.ElementRef<typeof PrimitiveAccordionItem>, AccordionItemProps>(\n\tfunction AccordionItem({ className, ...props }, ref) {\n\t\treturn (\n\t\t\t<PrimitiveAccordionItem\n\t\t\t\tref={ref}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'accordion-item--component border-border',\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);\nAccordionItem.displayName = 'AccordionItem';\n\nconst AccordionTrigger = React.forwardRef<React.ElementRef<typeof PrimitiveAccordionTrigger>, AccordionTriggerProps>(\n\tfunction AccordionTrigger({ className, children, ...props }, ref) {\n\t\tconst isSimpleText = typeof children === 'string' || typeof children === 'number' || typeof children === 'bigint';\n\t\treturn (\n\t\t\t<PrimitiveAccordionTrigger\n\t\t\t\tref={ref}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'accordion-trigger--component min-h-action items-center gap-space-lg px-row-x py-row-y',\n\t\t\t\t\t`text-start text-inherit text-sm font-medium transition-colors ${interactionRecipes.rowHover} hover:no-underline`,\n\t\t\t\t\t// Inset: the shell clips its rounded corners, so an outer ring was cut off.\n\t\t\t\t\t`focus-visible:z-10 ${focusRecipes.inset}`,\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{isSimpleText ? (\n\t\t\t\t\t<Text tag=\"span\" size=\"inherit\" weight=\"medium\" lineHeight=\"tight\" className=\"text-inherit\">\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</Text>\n\t\t\t\t) : children}\n\t\t\t</PrimitiveAccordionTrigger>\n\t\t);\n\t},\n);\nAccordionTrigger.displayName = 'AccordionTrigger';\n\nconst AccordionContent = React.forwardRef<React.ElementRef<typeof PrimitiveAccordionContent>, AccordionContentProps>(\n\tfunction AccordionContent({ className, children, ...props }, ref) {\n\t\tconst isSimpleText = typeof children === 'string' || typeof children === 'number' || typeof children === 'bigint';\n\t\treturn (\n\t\t\t<PrimitiveAccordionContent\n\t\t\t\tref={ref}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'accordion-content--component px-row-x pb-space-lg text-sm',\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{isSimpleText ? (\n\t\t\t\t\t<Text tag=\"div\" size=\"inherit\" lineHeight=\"relaxed\" className=\"text-inherit\">\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</Text>\n\t\t\t\t) : children}\n\t\t\t</PrimitiveAccordionContent>\n\t\t);\n\t},\n);\nAccordionContent.displayName = 'AccordionContent';\n\nexport {\n\tAccordion,\n\tAccordionItem,\n\tAccordionTrigger,\n\tAccordionContent,\n};\n","/**\n * Shared accordion-shell variant classes — used by both `SmartAccordion`\n * and any blocks surface that builds on `base/accordion` directly\n * (e.g. `blocks/onboarding/checklist`).\n *\n * Exported because two consumers already keep it in lockstep; a third\n * one will copy this exact map. Centralising means a future tweak\n * (e.g. tighten `card` items to `border-border/70`) propagates.\n *\n * Padding tokens for trigger / content live alongside so the rhythm\n * is shared too:\n *\n * - Trigger: `gap-space-lg px-row-x py-row-y` — density-driven,\n * `<UIProvider>`\n * override flows through.\n * - Content padding accounts for the base panel's `px-row-x`.\n * Medallion and inline rows use shared media/spacing tokens, and\n * no-icon rows add no extra left padding so body copy tracks the\n * trigger text column instead of drifting.\n */\nimport type { DisclosureSurface } from '../../../lib/component-vocabulary';\n\nexport type AccordionShellVariant = DisclosureSurface;\n\nexport const ACCORDION_ROOT_VARIANT_CLASS: Record<AccordionShellVariant, string> = {\n\tcard: 'gap-space-md border-0 rounded-none bg-transparent text-inherit overflow-visible',\n\tbordered: 'rounded-radius border border-border bg-card text-card-foreground overflow-hidden',\n\tflat: 'border-0 rounded-none bg-transparent text-inherit overflow-visible',\n};\n\n// The chevron and the revealed panel carry the open state; an open item is not\n// tinted into a box. Rounded items clip their trigger so its inset focus ring and\n// hover fill follow the item's corners.\nexport const ACCORDION_ITEM_VARIANT_CLASS: Record<AccordionShellVariant, string> = {\n\tcard: 'border border-border bg-card text-card-foreground rounded-radius overflow-hidden',\n\tbordered: 'bg-transparent not-last:border-b border-border',\n\tflat: 'border-0 not-last:border-b-0 bg-transparent rounded-radius overflow-hidden',\n};\n\nexport const ACCORDION_TRIGGER_BASE =\n\t'items-center gap-space-lg px-row-x py-row-y text-start hover:no-underline';\n\n/**\n * Content-padding presets keyed off the leading-icon width. Use\n * `withMedallion` when the trigger renders a default `IconBadge`\n * plus the shared row gap so body text aligns under the title at every\n * consumer density.\n */\nexport const ACCORDION_CONTENT_PADDING = {\n\t// Composed from root tokens so a scoped density/space boundary applies (the\n\t// `--spacing-*` aliases resolve once at :root inside arbitrary values).\n\twithMedallion: 'ps-[calc(var(--row-x)*var(--space-scale)+var(--avatar)+0.75rem*var(--space-scale))] pe-row-x pt-0',\n\twithInline: 'ps-[calc(var(--row-x)*var(--space-scale)+var(--icon)*1.25+0.75rem*var(--space-scale))] pe-row-x pt-0',\n\twithoutIcon: 'px-row-x pt-0',\n} as const;\n","/**\n * Strings for `SmartAccordion`. There aren't many — Radix handles the\n * trigger ARIA states automatically, so the only library-owned copy is\n * the optional landmark label on the wrapping nav region. Consumers\n * override per-item `title` / `badge` / `content` directly via\n * `SmartAccordionItem` props (the strings live in the data, not here).\n */\nexport interface SmartAccordionStrings {\n\t/**\n\t * Sets `aria-label` on the wrapping element so screen readers can name\n\t * the accordion region. Optional — when absent, no aria-label is set.\n\t */\n\tregionAriaLabel?: string;\n}\n\nexport const defaultSmartAccordionStrings: SmartAccordionStrings = {\n\tregionAriaLabel: undefined,\n};\n","/**\n * SmartAccordion — the canonical \"icon + title + optional badge + body\"\n * accordion pattern, with three visual variants for the surface chrome\n * (`card` | `bordered` | `flat`) and three icon framings (`medallion` |\n * `inline` | `none`).\n *\n * Composes the wrapped `base/accordion` parts (rule 2 — blocks-style\n * convenience built from re-exports, not the raw shadcn primitive).\n *\n * For richer rows (multi-line metadata, custom layouts), drop down to\n * the compound API:\n *\n * import { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n * from '.';\n */\nimport { forwardRef, type ReactNode } from 'react';\n\nimport { IconBadge } from '../display/icon-badge';\nimport { Stack } from '../structure';\nimport { Text } from '../../typography';\nimport { useStrings } from '../../../lib/strings';\nimport { cn } from '../../../lib/utils';\n\nimport { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from './accordion';\nimport {\n\tACCORDION_CONTENT_PADDING,\n\tACCORDION_ITEM_VARIANT_CLASS,\n\tACCORDION_ROOT_VARIANT_CLASS,\n\tACCORDION_TRIGGER_BASE,\n} from './accordion-variants';\nimport { defaultSmartAccordionStrings } from './accordion.strings';\nimport type {\n\tSmartAccordionIconStyle,\n\tSmartAccordionProps,\n} from './accordion.types';\n\n/**\n * Bounded accordion composition for repeated icon, title, description, badge,\n * and body sections. Use the compound Accordion parts when row structure or\n * per-item presentation differs.\n */\nexport const SmartAccordion = forwardRef<HTMLDivElement, SmartAccordionProps>(function SmartAccordion({\n\titems,\n\tmultiple = false,\n\tdefaultValue,\n\tvalue,\n\tonValueChange,\n\tvariant = 'bordered',\n\ticonStyle = 'inline',\n\tclassName,\n\titemClassName,\n\ttriggerClassName,\n\tcontentClassName,\n\tstrings: stringsProp,\n}, ref) {\n\tconst strings = useStrings(defaultSmartAccordionStrings, stringsProp);\n\tconst hasIconColumn = iconStyle !== 'none' && items.some((item) => item.icon != null);\n\tconst contentPadding =\n\t\t!hasIconColumn\n\t\t\t? ACCORDION_CONTENT_PADDING.withoutIcon\n\t\t\t: iconStyle === 'medallion'\n\t\t\t? ACCORDION_CONTENT_PADDING.withMedallion\n\t\t\t: ACCORDION_CONTENT_PADDING.withInline;\n\tconst triggerGridClass = !hasIconColumn\n\t\t? 'grid-cols-[minmax(0,1fr)]'\n\t\t: 'grid-cols-[auto_minmax(0,1fr)]';\n\treturn (\n\t\t<Accordion\n\t\t\tref={ref}\n\t\t\tmultiple={multiple}\n\t\t\tdefaultValue={defaultValue}\n\t\t\tvalue={value}\n\t\t\tonValueChange={\n\t\t\t\tonValueChange\n\t\t\t\t\t? (next) => onValueChange(next as string[])\n\t\t\t\t\t: undefined\n\t\t\t}\n\t\t\taria-label={strings.regionAriaLabel}\n\t\t\tdata-variant={variant}\n\t\t\tdata-icon-style={iconStyle}\n\t\t\tclassName={cn('smart-accordion--component', ACCORDION_ROOT_VARIANT_CLASS[variant], className)}\n\t\t>\n\t\t\t{items.map((item) => (\n\t\t\t\t<AccordionItem\n\t\t\t\t\tkey={item.value}\n\t\t\t\t\tvalue={item.value}\n\t\t\t\t\tclassName={cn('smart-accordion--item', ACCORDION_ITEM_VARIANT_CLASS[variant], itemClassName)}\n\t\t\t\t>\n\t\t\t\t\t<AccordionTrigger\n\t\t\t\t\t\tclassName={cn('smart-accordion--trigger', ACCORDION_TRIGGER_BASE, triggerClassName)}\n\t\t\t\t\t\tdisabled={item.disabled}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div className={cn('grid min-w-0 flex-1 items-center gap-x-space-lg', triggerGridClass)}>\n\t\t\t\t\t\t\t<SmartAccordionIcon\n\t\t\t\t\t\t\t\ticonStyle={iconStyle}\n\t\t\t\t\t\t\t\ticon={item.icon}\n\t\t\t\t\t\t\t\treserveSpace={hasIconColumn}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<Stack render={<span />} gap=\"dense\" className=\"smart-accordion--heading flex-1\">\n\t\t\t\t\t\t\t\t<span className=\"flex min-w-0 flex-wrap items-center gap-x-space-md gap-y-space-xs\">\n\t\t\t\t\t\t\t\t\t{isSimpleContent(item.title) ? (\n\t\t\t\t\t\t\t\t\t\t<Text tag=\"span\" type=\"inherit\" weight=\"semibold\" className=\"smart-accordion--title min-w-0\">\n\t\t\t\t\t\t\t\t\t\t\t{item.title}\n\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t) : item.title}\n\t\t\t\t\t\t\t\t\t{item.badge != null && (\n\t\t\t\t\t\t\t\t\t\t<span className=\"smart-accordion--badge inline-flex shrink-0\">{item.badge}</span>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t{!!item.description && (\n\t\t\t\t\t\t\t\t\tisSimpleContent(item.description) ? (\n\t\t\t\t\t\t\t\t\t\t<Text tag=\"span\" type=\"secondary\" className=\"smart-accordion--description min-w-0\">\n\t\t\t\t\t\t\t\t\t\t\t{item.description}\n\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t) : item.description\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</div>\n\t\t\t\t\t</AccordionTrigger>\n\t\t\t\t\t<AccordionContent\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'smart-accordion--content',\n\t\t\t\t\t\t\tcontentPadding,\n\t\t\t\t\t\t\tcontentClassName,\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{isSimpleContent(item.content) ? (\n\t\t\t\t\t\t\t<Text tag=\"div\" type=\"secondary\" lineHeight=\"relaxed\">\n\t\t\t\t\t\t\t\t{item.content}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t) : item.content}\n\t\t\t\t\t</AccordionContent>\n\t\t\t\t</AccordionItem>\n\t\t\t))}\n\t\t</Accordion>\n\t);\n});\n\nSmartAccordion.displayName = 'SmartAccordion';\n\nfunction isSimpleContent(content: ReactNode): content is string | number | bigint {\n\treturn typeof content === 'string' || typeof content === 'number' || typeof content === 'bigint';\n}\n\nfunction SmartAccordionIcon({\n\ticonStyle,\n\ticon,\n\treserveSpace,\n}: {\n\ticonStyle: SmartAccordionIconStyle;\n\ticon?: ReactNode;\n\treserveSpace: boolean;\n}) {\n\tif (iconStyle === 'none' || !reserveSpace) return null;\n\tif (!icon) {\n\t\treturn (\n\t\t\t<span\n\t\t\t\taria-hidden=\"true\"\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'smart-accordion--icon inline-flex shrink-0',\n\t\t\t\t\ticonStyle === 'inline' ? 'size-icon-lg' : 'size-avatar',\n\t\t\t\t)}\n\t\t\t/>\n\t\t);\n\t}\n\tif (iconStyle === 'inline') {\n\t\treturn (\n\t\t\t<span\n\t\t\t\taria-hidden=\"true\"\n\t\t\t\tclassName=\"smart-accordion--icon inline-flex size-icon-lg shrink-0 self-center text-muted-foreground [&>svg]:size-icon\"\n\t\t\t>\n\t\t\t\t{icon}\n\t\t\t</span>\n\t\t);\n\t}\n\treturn (\n\t\t<IconBadge size=\"md\" tone=\"neutral\" shape=\"circle\" aria-hidden=\"true\" className=\"smart-accordion--icon self-center\">\n\t\t\t{icon}\n\t\t</IconBadge>\n\t);\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"action-menu-CHgs8vmj.js","names":["Icon","_Fragment","_jsx","useDensityConfig","resolveComponentScale","cn","Button","Text","compositionClasses","popoverWidthRecipes","collectionRecipes","CollectionContent","DropdownMenuItem","DropdownMenuTrigger","DropdownMenuGroup","DropdownMenuCheckboxItem","DropdownMenuLabel","DropdownMenuContent","DropdownMenuLinkItem","DropdownMenu","React","Fragment$1","overflowTriggerRecipes","MoreHorizontal","defaultActionMenuStrings","isDestructiveAction","action","resolveActions","visible","actions","preserveOrder","standard","destructive","getActionKey","index","renderActionIcon","icon","isValidElement","renderActionLabel","label","className","toMenuVariant","tone","toButtonPresentation","buttonStyle","renderMenuAction","key","shouldCloseOnSelect","closeOnSelect","content","density","href","renderLink","props","renderGroupedActions","nodes","currentGroup","args","nextGroup","groupChanged","DropdownMenuSeparator","assignRef","ref","node","ActionMenu","stringsProp","open","setOpen","strings","useStrings","resolvedSrText","srText","resolvedActions","hasVisibleLabel","labelVisibility","hasResponsiveLabel","recipe","context","requestedSize","buttonProps","defaultScale","squareClass","defaultButtonProps","triggerClassName","triggerProps","labelClassName","triggerIcon","buttonContent","renderTrigger","baseTriggerRef","dropdownTriggerProps","composedRef","width","contentClassName","ActionButtons","visibleActions","resolved","children","size","buttonClassName","buttonRenderProps"],"sources":["../src/components/base/action-menu/action-menu.recipes.ts","../src/components/base/action-menu/action-menu.strings.ts","../src/components/base/action-menu/action-menu.tsx"],"sourcesContent":["/**\n * Overflow trigger recipe — the one `⋯` square every overflow menu shares.\n *\n * The glyph and the default \"More actions\" name are fixed. `context` picks the\n * treatment for where the menu sits, and the square takes the size of the\n * controls beside it (`buttonProps.size`) or the provider scale, like every\n * other Button. A menu that shares a row with a primary command ends that row.\n */\nimport { MoreHorizontal } from 'lucide-react';\n\n/**\n * Where an overflow menu sits. `inline` is the quiet ghost square for rows,\n * cards, list items and footers; `commands` is the outline square that ends a\n * row of outline commands, such as a page header or toolbar.\n */\nexport type ActionMenuContext = 'inline' | 'commands';\n\nexport const overflowTriggerRecipes = {\n\ticon: MoreHorizontal,\n\tcontext: {\n\t\t// No fill until hover, and a muted glyph that does not compete with the content.\n\t\tinline: { tone: 'secondary', buttonStyle: 'ghost', glyph: 'text-muted-foreground' },\n\t\t// The commands' own boundary and ink.\n\t\tcommands: { tone: 'secondary', buttonStyle: 'outline', glyph: undefined },\n\t},\n} as const;\n","export interface ActionMenuStrings {\n\topenMenuLabel: string;\n}\n\nexport const defaultActionMenuStrings: ActionMenuStrings = {\n\topenMenuLabel: 'More actions',\n};\n","/**\n * ActionMenu — centralized action chrome for page, card, table, and row\n * overflow menus.\n *\n * Primary API is definition-driven: pass `actions={[...]}` and the component\n * renders the trigger, menu surface, grouping, checkbox rows, destructive\n * separation, links, disabled state, and density. `ActionButtons` renders the\n * same definitions as inline buttons for page/toolbars that need visible\n * actions plus an overflow menu.\n *\n * Without a visible `label` the trigger is the shared overflow square from\n * `action-menu.recipes.ts`: a `⋯` glyph named \"More actions\", ghost `inline`\n * or outline `commands`, at the size of the controls beside it or the\n * provider scale.\n */\nimport type { LucideIcon } from 'lucide-react';\nimport React, { isValidElement, type ComponentType, type ElementType, type ReactElement, type ReactNode } from 'react';\n\nimport { Button, type ButtonSize, type ButtonStyle } from '../buttons';\nimport { compositionClasses } from '../structure/composition.recipes';\nimport { collectionRecipes, popoverWidthRecipes, type CollectionDensity } from '../popover/popover.recipes';\nimport { CollectionContent } from '../popover/collection-content';\nimport {\n\tDropdownMenu,\n\tDropdownMenuCheckboxItem,\n\tDropdownMenuContent,\n\tDropdownMenuGroup,\n\tDropdownMenuItem,\n\tDropdownMenuLabel,\n\tDropdownMenuLinkItem,\n\tDropdownMenuSeparator,\n\tDropdownMenuTrigger,\n} from '../navigation/dropdown-menu';\nimport { Text } from '../../typography';\nimport type { ActionButtonStyle, ActionPresentation } from '../../../lib/action-presentation';\nimport { resolveComponentScale, useDensityConfig } from '../../../lib/ui-provider';\nimport { useStrings, type StringsProp } from '../../../lib/strings';\nimport { cn } from '../../../lib/utils';\n\nimport { overflowTriggerRecipes, type ActionMenuContext } from './action-menu.recipes';\nimport {\n\tdefaultActionMenuStrings,\n\ttype ActionMenuStrings,\n} from './action-menu.strings';\n\ntype ActionMenuButtonProps = Partial<React.ComponentPropsWithoutRef<typeof Button>> & {\n\t[key: `data-${string}`]: string | boolean | undefined;\n\t'aria-label'?: string;\n\tonPointerDown?: React.PointerEventHandler<HTMLButtonElement>;\n};\nexport type ActionMenuDensity = CollectionDensity | 'table';\nexport type ActionMenuLabelVisibility = 'visible' | 'responsive' | 'hidden';\nexport interface ActionMenuLinkRenderProps extends React.ComponentPropsWithoutRef<'a'> {\n\thref: string;\n\tdisabled?: boolean;\n\texternal?: boolean;\n}\n\nexport type ActionMenuIcon = LucideIcon | ComponentType<{ className?: string }> | ReactNode;\n\nexport interface ActionMenuAction extends ActionPresentation {\n\t/** Stable React key. Falls back to a string `label`, then the index. */\n\tid?: string;\n\t/** Visible label for the entry. */\n\tlabel: ReactNode;\n\t/** Leading glyph. Accepts a Lucide icon, a component, or a rendered node. */\n\ticon?: ActionMenuIcon;\n\t/** `'checkbox'` renders a toggle driven by `checked`/`onCheckedChange`. Defaults to `'item'`. */\n\ttype?: 'item' | 'checkbox';\n\t/**\n\t * Renders the entry as a link. By default this is a native `<a href>`, so it\n\t * performs a full page navigation; pass `renderLink` on `ActionMenu` to route\n\t * it through your framework's router instead.\n\t */\n\thref?: string;\n\t/** Anchor target forwarded to the rendered link. Requires `href`. */\n\ttarget?: string;\n\t/** Anchor rel forwarded to the rendered link. Requires `href`. */\n\trel?: string;\n\t/** Marks the destination as leaving the app; forwarded to `renderLink`. */\n\texternal?: boolean;\n\t/** Runs when the entry is chosen. This is the handler for a normal item. */\n\tonClick?: () => void;\n\t/** Checked state for a `'checkbox'` entry. */\n\tchecked?: boolean;\n\t/** Fires with the next checked state for a `'checkbox'` entry. */\n\tonCheckedChange?: (checked: boolean) => void;\n\t/**\n\t * Starts a new group, drawing a separator above this entry. A string also\n\t * captions the group; `true` rules off without a heading, for the common\n\t * case of holding one entry apart (a sign-out, a delete) with no label to\n\t * write.\n\t */\n\tgroup?: string | true;\n\t/** Class merged onto this group's starting separator/caption, for example a responsive boundary. Does not style or hide the action rows. */\n\tgroupClassName?: string;\n\t/** Overrides the button size when the action renders as a button. */\n\tbuttonSize?: ButtonSize;\n\t/** Escape hatch merged onto the entry root. */\n\tclassName?: string;\n\t/** Escape hatch merged onto the entry's inner content. */\n\tcontentClassName?: string;\n\t/** Overrides the menu's `closeOnSelect` for this entry. */\n\tcloseOnSelect?: boolean;\n\t/** Replaces the rendered entry, e.g. to emit a framework `<Link>`. */\n\trender?: ReactNode;\n}\n\nexport interface ActionMenuProps {\n\t/**\n\t * Commands to offer. Destructive entries are moved last unless\n\t * `preserveOrder` is set.\n\t */\n\tactions: readonly ActionMenuAction[];\n\t/** Trigger text. Omit for the shared icon-only overflow trigger, and set `srText` to name it. */\n\tlabel?: string;\n\t/** Trigger glyph. Defaults to the horizontal ellipsis (`MoreHorizontal`) every overflow menu shares. */\n\ticon?: ActionMenuIcon;\n\t/** Accessible name when the trigger shows no visible `label`. Defaults to `strings.openMenuLabel`, \"More actions\". */\n\tsrText?: string;\n\t/**\n\t * Where the menu sits, which picks the trigger treatment. `inline` (the\n\t * default) is the quiet ghost square for rows, cards and footers; `commands`\n\t * is the outline square that ends a row of outline commands. Place the menu\n\t * after any primary command in the same row.\n\t */\n\tcontext?: ActionMenuContext;\n\t/**\n\t * Escape hatch forwarded to the trigger button. An icon-only trigger takes\n\t * `size` from here to match the controls beside it, otherwise the provider\n\t * scale.\n\t */\n\tbuttonProps?: ActionMenuButtonProps;\n\t/** Menu alignment against the trigger. Defaults to `end`. */\n\talign?: 'center' | 'start' | 'end';\n\t/** Which edge of the trigger the menu opens from. Defaults to `bottom`. */\n\tside?: 'top' | 'right' | 'bottom' | 'left';\n\t/** Merged onto the menu surface. */\n\tcontentClassName?: string;\n\t/** Fixed menu width. Defaults to sizing from the widest item. */\n\twidth?: string;\n\t/** Closes the menu after an action runs. Defaults to `true`. */\n\tcloseOnSelect?: boolean;\n\t/** Vertical row rhythm; table preserves the legacy tight action spacing. Inline room stays stable. */\n\tdensity?: ActionMenuDensity;\n\t/** Whether the trigger's `label` is visible, hidden, or responsive. */\n\tlabelVisibility?: ActionMenuLabelVisibility;\n\t/** Preserve incoming action order instead of moving destructive items last. */\n\tpreserveOrder?: boolean;\n\t/**\n\t * Renders actions carrying an `href` through the consumer's router, keeping\n\t * this component framework-agnostic. Without it, such actions render as\n\t * plain anchors.\n\t */\n\trenderLink?: (props: ActionMenuLinkRenderProps) => ReactElement;\n\t/**\n\t * Replaces the default trigger button entirely, so a menu can hang off a\n\t * shape that is not a button with a glyph — an account block, a sidebar\n\t * row, a tab that has to match its siblings.\n\t *\n\t * Takes Base UI's `render` contract: either an element, whose props are\n\t * merged for you, or a function receiving the props to spread. Either way\n\t * the ARIA wiring, the open/close handlers and the popup's anchor ref reach\n\t * a real DOM node without anyone cloning anything.\n\t *\n\t * For a plain button that just needs different words or a different glyph,\n\t * `label`, `icon` and `buttonProps` are the smaller tools; reach for this\n\t * only when the trigger is a different thing.\n\t */\n\trenderTrigger?: React.ComponentProps<typeof DropdownMenuTrigger>['render'];\n\t/** Overrides the menu's own copy (the default trigger label). */\n\tstrings?: StringsProp<ActionMenuStrings>;\n}\n\nexport interface ActionButtonsProps {\n\t/**\n\t * Commands to render side by side rather than collapsed into a menu. Each\n\t * resolves like `Button`: untoned actions are the default outline button and\n\t * a `tone` without `buttonStyle` is solid, so mark the main command\n\t * `tone: 'primary'`.\n\t */\n\tactions: readonly ActionMenuAction[];\n\t/** Merged onto the button group. */\n\tclassName?: string;\n\t/** Merged onto every button in the group. */\n\tbuttonClassName?: string;\n\t/** Height preset applied to each button. */\n\tsize?: ButtonSize;\n\t/** Renders actions carrying an `href` through the consumer's router. */\n\trenderLink?: (props: ActionMenuLinkRenderProps) => ReactElement;\n}\n\nfunction isDestructiveAction(action: ActionMenuAction) {\n\treturn action.tone === 'destructive';\n}\n\nfunction resolveActions(actions: readonly ActionMenuAction[], preserveOrder = false) {\n\tconst visible = actions.filter((action) => action.visible !== false);\n\tif (preserveOrder) return visible;\n\n\tconst standard = visible.filter((action) => !isDestructiveAction(action));\n\tconst destructive = visible.filter(isDestructiveAction);\n\treturn [...standard, ...destructive];\n}\n\nfunction getActionKey(action: ActionMenuAction, index: number) {\n\treturn action.id ?? (typeof action.label === 'string' ? action.label : `action-${index}`);\n}\n\nfunction renderActionIcon(icon: ActionMenuAction['icon']) {\n\tif (!icon) return null;\n\tif (isValidElement(icon)) return icon;\n\tif (typeof icon === 'function') {\n\t\tconst Icon = icon as LucideIcon;\n\t\treturn <Icon className=\"size-icon-sm\" aria-hidden=\"true\" />;\n\t}\n\tif (typeof icon === 'object' && icon !== null && '$$typeof' in icon) {\n\t\tconst Icon = icon as unknown as ElementType<{ className?: string; 'aria-hidden'?: boolean }>;\n\t\treturn <Icon className=\"size-icon-sm\" aria-hidden />;\n\t}\n\treturn icon;\n}\n\nfunction renderActionLabel(label: ReactNode, className?: string) {\n\tif (typeof label === 'string' || typeof label === 'number' || typeof label === 'bigint') {\n\t\t// Same label recipe as Button: inherited size, medium weight.\n\t\treturn <Text tag=\"span\" size=\"inherit\" weight=\"medium\" lineHeight=\"tight\" className={cn('text-inherit', className)}>{label}</Text>;\n\t}\n\treturn className ? <span className={className}>{label}</span> : label;\n}\n\nfunction toMenuVariant(tone: ActionMenuAction['tone']): 'default' | 'destructive' {\n\treturn tone === 'destructive' ? 'destructive' : 'default';\n}\n\n/**\n * Inline actions resolve exactly like `Button`: an untoned action is the neutral\n * default button, and a tone without a style asks for that tone's solid treatment.\n * Mark the one main command with `tone: 'primary'`.\n */\nfunction toButtonPresentation(action: Pick<ActionMenuAction, 'tone' | 'buttonStyle'>): {\n\ttone?: ActionMenuAction['tone'];\n\tbuttonStyle?: ButtonStyle;\n\tclassName?: string;\n} {\n\tconst buttonStyle: ActionButtonStyle | undefined = action.buttonStyle;\n\tif (buttonStyle === 'link') {\n\t\treturn {\n\t\t\ttone: action.tone,\n\t\t\tbuttonStyle: 'ghost',\n\t\t\tclassName: 'underline underline-offset-[0.2em]',\n\t\t};\n\t}\n\treturn { tone: action.tone, buttonStyle };\n}\n\nfunction renderMenuAction({\n\taction,\n\tindex,\n\tdensity,\n\tcloseOnSelect,\n\trenderLink,\n}: {\n\taction: ActionMenuAction;\n\tindex: number;\n\tdensity: ActionMenuDensity;\n\tcloseOnSelect: boolean;\n\trenderLink?: (props: ActionMenuLinkRenderProps) => ReactElement;\n}) {\n\tconst key = getActionKey(action, index);\n\tconst shouldCloseOnSelect = action.closeOnSelect ?? closeOnSelect;\n\tif (action.render) {\n\t\treturn <div key={key} className=\"action-menu--item\">{action.render}</div>;\n\t}\n\n\tconst icon = renderActionIcon(action.icon);\n\tconst content = (\n\t\t<CollectionContent label={action.label} leading={icon} wrap\n\t\t className={cn('action-menu--item-content w-full',action.contentClassName)}\n\t\t leadingClassName=\"action-menu--item-icon text-inherit\" labelClassName=\"action-menu--item-label\"/>\n\t);\n\tconst className = cn(\n\t\t'action-menu--item',\n\t\tdensity === 'table' && collectionRecipes.tableRow,\n\t\taction.className,\n\t);\n\tif (action.type === 'checkbox') {\n\t\treturn (\n\t\t\t<DropdownMenuCheckboxItem\n\t\t\t\tkey={key}\n\t\t\t\tchecked={!!action.checked}\n\t\t\t\tdisabled={action.disabled}\n\t\t\t\tcloseOnClick={shouldCloseOnSelect}\n\t\t\t\tonCheckedChange={action.onCheckedChange}\n\t\t\t\tclassName={className}\n\t\t\t>\n\t\t\t\t{content}\n\t\t\t</DropdownMenuCheckboxItem>\n\t\t);\n\t}\n\n\tif (action.href && !action.disabled) {\n\t\tconst href = action.href;\n\t\treturn (\n\t\t\t<DropdownMenuLinkItem\n\t\t\t\tkey={key}\n\t\t\t\thref={href}\n\t\t\t\tvariant={toMenuVariant(action.tone)}\n\t\t\t\tcloseOnClick={shouldCloseOnSelect}\n\t\t\t\tonClick={action.onClick}\n\t\t\t\t// Element form, not a function, when the consumer supplies a link\n\t\t\t\t// renderer. The function form hands the menu-item props to the\n\t\t\t\t// consumer and trusts them to spread — and the renderer people\n\t\t\t\t// actually write destructures href/children/className and drops the\n\t\t\t\t// rest, which silently costs the row its `role=\"menuitem\"`. Handing\n\t\t\t\t// back an element lets the menu merge its own props on afterwards,\n\t\t\t\t// so a narrow renderer stays accessible.\n\t\t\t\trender={\n\t\t\t\t\trenderLink\n\t\t\t\t\t\t? (renderLink({\n\t\t\t\t\t\t\thref,\n\t\t\t\t\t\t\tchildren: content,\n\t\t\t\t\t\t\ttarget: action.target,\n\t\t\t\t\t\t\trel: action.rel,\n\t\t\t\t\t\t\texternal: action.external,\n\t\t\t\t\t\t\tdisabled: action.disabled,\n\t\t\t\t\t\t}) as ReactElement)\n\t\t\t\t\t\t: (props) => (\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t{...props}\n\t\t\t\t\t\t\t\thref={href}\n\t\t\t\t\t\t\t\ttarget={action.target}\n\t\t\t\t\t\t\t\trel={action.rel}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\tclassName={className}\n\t\t\t>\n\t\t\t\t{content}\n\t\t\t</DropdownMenuLinkItem>\n\t\t);\n\t}\n\n\treturn (\n\t\t<DropdownMenuItem\n\t\tkey={key}\n\t\tdisabled={action.disabled}\n\t\tvariant={toMenuVariant(action.tone)}\n\t\tcloseOnClick={shouldCloseOnSelect}\n\t\tonClick={action.onClick}\n\t\tclassName={className}\n\t\t>\n\t\t\t{content}\n\t\t</DropdownMenuItem>\n\t);\n}\n\nfunction renderGroupedActions(args: {\n\tactions: readonly ActionMenuAction[];\n\tdensity: ActionMenuDensity;\n\tcloseOnSelect: boolean;\n\trenderLink?: (props: ActionMenuLinkRenderProps) => ReactElement;\n}) {\n\tconst nodes: ReactNode[] = [];\n\tlet currentGroup: string | true | null = null;\n\n\targs.actions.forEach((action, index) => {\n\t\tconst nextGroup = action.group ?? null;\n\t\tconst groupChanged = nextGroup !== currentGroup;\n\n\t\tif (nodes.length > 0 && groupChanged) {\n\t\t\tnodes.push(<DropdownMenuSeparator key={`sep-${currentGroup ?? 'root'}-${nextGroup ?? 'root'}-${index}`} className={action.groupClassName} />);\n\t\t}\n\n\t\tif (groupChanged) {\n\t\t\tcurrentGroup = nextGroup;\n\t\t\tif (typeof nextGroup === 'string') {\n\t\t\t\tnodes.push(\n\t\t\t\t\t<DropdownMenuLabel\n\t\t\t\t\t\tkey={`group-${nextGroup}-${index}`}\n\t\t\t\t\t\tclassName={cn('normal-case', action.groupClassName)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{nextGroup}\n\t\t\t\t\t</DropdownMenuLabel>,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tnodes.push(renderMenuAction({ ...args, action, index }));\n\t});\n\n\treturn nodes;\n}\n\n/**\n * Writes a node into a ref of either shape. `ActionMenu` has two claims on its\n * trigger — Base UI's own anchor ref and the consumer's — so neither may\n * overwrite the other.\n */\nfunction assignRef<T>(ref: React.Ref<T> | undefined, node: T | null) {\n\tif (typeof ref === 'function') {\n\t\tref(node);\n\t} else if (ref) {\n\t\t(ref as React.RefObject<T | null>).current = node;\n\t}\n}\n\nexport const ActionMenu = React.forwardRef<HTMLButtonElement, ActionMenuProps>(function ActionMenu({\n\tactions,\n\tlabel,\n\ticon = overflowTriggerRecipes.icon,\n\tsrText,\n\tcontext = 'inline',\n\tbuttonProps,\n\talign = 'end',\n\tside = 'bottom',\n\tcontentClassName = '',\n\twidth = 'w-auto',\n\tcloseOnSelect = true,\n\tdensity = 'default',\n\tlabelVisibility = 'visible',\n\tpreserveOrder = false,\n\trenderLink,\n\trenderTrigger,\n\tstrings: stringsProp,\n}: ActionMenuProps, ref) {\n\tconst [open, setOpen] = React.useState(false);\n\tconst { defaultScale } = useDensityConfig();\n\tconst strings = useStrings(defaultActionMenuStrings, stringsProp);\n\tconst resolvedSrText = srText ?? strings.openMenuLabel;\n\tconst resolvedActions = React.useMemo(\n\t\t() => resolveActions(actions, preserveOrder),\n\t\t[actions, preserveOrder],\n\t);\n\n\tif (resolvedActions.length === 0) return null;\n\tconst hasVisibleLabel = Boolean(label) && labelVisibility === 'visible';\n\tconst hasResponsiveLabel = Boolean(label) && labelVisibility === 'responsive';\n\n\t// The icon-only square takes the size of the controls beside it\n\t// (`buttonProps.size`), otherwise the provider scale like every other Button.\n\tconst recipe = overflowTriggerRecipes.context[context] ?? overflowTriggerRecipes.context.inline;\n\tconst requestedSize = hasVisibleLabel ? buttonProps?.size ?? 'sm' : resolveComponentScale(buttonProps?.size, defaultScale);\n\tconst squareClass = requestedSize === 'sm' ? 'size-action-sm' : requestedSize === 'lg' ? 'size-action-lg' : 'size-action';\n\tconst defaultButtonProps: ActionMenuButtonProps = {\n\t\ttone: recipe.tone,\n\t\tbuttonStyle: recipe.buttonStyle,\n\t\tsize: requestedSize,\n\t\ticonOnly: !hasVisibleLabel,\n\t\tclassName: hasVisibleLabel\n\t\t\t? undefined\n\t\t\t: hasResponsiveLabel\n\t\t\t\t? `${squareClass} p-0 sm:w-auto sm:gap-space-sm sm:px-control-sm`\n\t\t\t\t: cn(`${squareClass} p-0`, recipe.glyph),\n\t};\n\n\tconst mergedButtonProps = {\n\t\t...defaultButtonProps,\n\t\t...buttonProps,\n\t\tclassName: cn(defaultButtonProps.className, buttonProps?.className),\n\t};\n\n\tconst {\n\t\ttone = recipe.tone,\n\t\tbuttonStyle = recipe.buttonStyle,\n\t\tsize = requestedSize,\n\t\ticonOnly = !hasVisibleLabel,\n\t\tclassName: triggerClassName,\n\t\t...triggerProps\n\t} = mergedButtonProps;\n\n\tconst labelClassName =\n\t\tlabelVisibility === 'hidden'\n\t\t\t? 'sr-only'\n\t\t\t: labelVisibility === 'responsive'\n\t\t\t\t? 'sr-only sm:not-sr-only'\n\t\t\t\t: undefined;\n\n\tconst triggerIcon = renderActionIcon(icon);\n\n\tconst buttonContent = label ? (\n\t\t<>\n\t\t\t{triggerIcon}\n\t\t\t<Text tag=\"span\" size=\"inherit\" weight=\"medium\" lineHeight=\"tight\" className={cn('whitespace-nowrap text-inherit', labelClassName)}>\n\t\t\t\t{label}\n\t\t\t</Text>\n\t\t</>\n\t) : (\n\t\t<>\n\t\t\t{triggerIcon}\n\t\t\t<Text tag=\"span\" size=\"inherit\" className=\"sr-only\">{resolvedSrText}</Text>\n\t\t</>\n\t);\n\n\treturn (\n\t\t<DropdownMenu open={open} onOpenChange={setOpen}>\n\t\t\t<DropdownMenuTrigger\n\t\t\t\trender={renderTrigger ?? ((dropdownTriggerProps) => {\n\t\t\t\t\t// Base UI supplies its own trigger ref through `render`. Composing\n\t\t\t\t\t// rather than overwriting keeps the popup anchored while still\n\t\t\t\t\t// handing the consumer the trigger element.\n\t\t\t\t\tconst { ref: baseTriggerRef } = dropdownTriggerProps as {\n\t\t\t\t\t\tref?: React.Ref<HTMLButtonElement>;\n\t\t\t\t\t};\n\n\t\t\t\t\tconst composedRef = (node: HTMLButtonElement | null) => {\n\t\t\t\t\t\tassignRef(baseTriggerRef, node);\n\t\t\t\t\t\tassignRef(ref, node);\n\t\t\t\t\t};\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t{...triggerProps}\n\t\t\t\t\t\t\t{...dropdownTriggerProps}\n\t\t\t\t\t\t\tref={composedRef}\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\ttone={tone}\n\t\t\t\t\t\t\tbuttonStyle={buttonStyle}\n\t\t\t\t\t\t\tsize={size}\n\t\t\t\t\t\t\ticonOnly={iconOnly}\n\t\t\t\t\t\t\tdata-context={context}\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t'action-menu--component',\n\t\t\t\t\t\t\t\ttriggerClassName,\n\t\t\t\t\t\t\t\t(dropdownTriggerProps as { className?: string }).className,\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{buttonContent}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t/>\n\t\t\t<DropdownMenuContent\n\t\t\t\tdensity={density === 'table' ? 'compact' : density}\n\t\t\t\talign={align}\n\t\t\t\tside={side}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'action-menu--content',\n\t\t\t\t\twidth,\n\t\t\t\t\tpopoverWidthRecipes.menuMin,\n\t\t\t\t\tcontentClassName,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t<DropdownMenuGroup className=\"action-menu--group\">\n\t\t\t\t\t{renderGroupedActions({\n\t\t\t\t\t\tactions: resolvedActions,\n\t\t\t\t\t\tdensity,\n\t\t\t\t\t\tcloseOnSelect,\n\t\t\t\t\t\trenderLink,\n\t\t\t\t\t})}\n\t\t\t\t</DropdownMenuGroup>\n\t\t\t</DropdownMenuContent>\n\t\t</DropdownMenu>\n\t);\n});\n\nActionMenu.displayName = 'ActionMenu';\n\nexport const ActionButtons = React.forwardRef<HTMLDivElement, ActionButtonsProps>(function ActionButtons({\n\tactions,\n\tclassName,\n\tbuttonClassName,\n\tsize = 'sm',\n\trenderLink,\n}: ActionButtonsProps, ref) {\n\tconst visibleActions = resolveActions(actions, true);\n\tif (visibleActions.length === 0) return null;\n\n\treturn (\n\t\t<div ref={ref} className={cn('action-buttons--component flex flex-wrap items-center', compositionClasses.commands, className)}>\n\t\t\t{visibleActions.map((action, index) => {\n\t\t\t\tconst key = getActionKey(action, index);\n\t\t\t\tif (action.render) {\n\t\t\t\t\treturn <React.Fragment key={key}>{action.render}</React.Fragment>;\n\t\t\t\t}\n\n\t\t\t\tconst icon = renderActionIcon(action.icon);\n\t\t\t\tconst resolved = toButtonPresentation(action);\n\t\t\t\tconst children = (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{!!icon && <span className=\"action-buttons--icon inline-flex shrink-0 items-center\">{icon}</span>}\n\t\t\t\t\t\t{renderActionLabel(action.label, 'action-buttons--label')}\n\t\t\t\t\t</>\n\t\t\t\t);\n\n\t\t\t\tif (action.href && !action.disabled && renderLink) {\n\t\t\t\t\tconst href = action.href;\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\ttone={resolved.tone}\n\t\t\t\t\t\t\tbuttonStyle={resolved.buttonStyle}\n\t\t\t\t\t\t\tsize={action.buttonSize ?? size}\n\t\t\t\t\t\t\tnativeButton={false}\n\t\t\t\t\t\t\tclassName={cn('action-buttons--item', resolved.className, buttonClassName, action.className)}\n\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\taction.onClick?.();\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\trender={(buttonRenderProps) =>\n\t\t\t\t\t\t\t\trenderLink({\n\t\t\t\t\t\t\t\t\t...buttonRenderProps,\n\t\t\t\t\t\t\t\t\thref,\n\t\t\t\t\t\t\t\t\tchildren: buttonRenderProps.children,\n\t\t\t\t\t\t\t\t\ttarget: action.target,\n\t\t\t\t\t\t\t\t\trel: action.rel,\n\t\t\t\t\t\t\t\t\texternal: action.external,\n\t\t\t\t\t\t\t\t\tdisabled: action.disabled,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{children}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (action.href && !action.disabled) {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Button key={key} href={action.href} target={action.target} rel={action.rel} tone={resolved.tone} buttonStyle={resolved.buttonStyle} size={action.buttonSize ?? size} className={cn('action-buttons--item', resolved.className, buttonClassName, action.className)} onClick={action.onClick}>\n\t\t\t\t\t\t\t{children}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst button = (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\ttone={resolved.tone}\n\t\t\t\t\t\tbuttonStyle={resolved.buttonStyle}\n\t\t\t\t\t\tsize={action.buttonSize ?? size}\n\t\t\t\t\t\tclassName={cn('action-buttons--item', resolved.className, buttonClassName, action.className)}\n\t\t\t\t\t\tdisabled={!!action.disabled}\n\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\taction.onClick?.();\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</Button>\n\t\t\t\t);\n\n\t\t\t\treturn button;\n\t\t\t})}\n\t\t</div>\n\t);\n});\n\nActionButtons.displayName = 'ActionButtons';\n\nexport {\n\tdefaultActionMenuStrings,\n\ttype ActionMenuStrings,\n} from './action-menu.strings';\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"affordance-geometry.generated-B8yGOr8-.js","names":["affordanceGeometry","\"surfaceGap\"","\"xs\"","\"sm\"","\"md\"","\"lg\"","\"inlineEditColumns\"","\"single\"","\"multiline\"","\"avatarOverlap\"","\"navigationGuideStart\"","\"clearEnd\"","\"clearPadding\"","\"pairedClearPadding\"","\"pairedIconPadding\"","\"pairedAddonPadding\"","\"pairedCountPadding\"","\"measuredPadding\"","\"measuredStartPadding\"","\"textareaCountPadding\"","\"togglePadding\"","\"largeIconStart\"","\"largeIconEnd\"","\"buttonBlockPadding\"","\"controlTextMinHeight\"","\"controlBlockPadding\"","\"fileField\"","\"minHeight\"","\"buttonMinHeight\"","\"blockPadding\"","\"rawFileField\"","\"overlayClose\"","\"overlayHeader\"","\"selectToggleTrack\"","\"selectTogglePadding\"","\"textareaBlockPadding\"","\"textareaClearTop\"","\"textareaIconTop\"","\"clearTargetBleed\"","\"actionGutter\"","\"start\"","\"end\"","\"menuActionReserve\"","\"item\"","\"subItem\"","\"toastCloseReserve\"","\"calendarCell\"","\"calendarCompactCell\"","\"overlayHeaderCentered\""],"sources":["../src/lib/affordance-geometry.generated.ts"],"sourcesContent":["/* Generated by scripts/primitive-geometry.mjs; recipes, not theme roots. */\nexport const affordanceGeometry = {\n \"surfaceGap\": {\n \"xs\": \"gap-[calc(var(--surface-y)*0.5*var(--space-scale))]\",\n \"sm\": \"gap-[calc(var(--surface-y)*2/3*var(--space-scale))]\",\n \"md\": \"gap-[calc(var(--surface-y)*var(--space-scale))]\",\n \"lg\": \"gap-[calc(var(--surface-y)*4/3*var(--space-scale))]\"\n },\n \"inlineEditColumns\": {\n \"single\": \"grid-cols-[minmax(0,1fr)_calc(var(--height-action)*8/9*var(--density-scale)*2+0.25rem*var(--space-scale))]\",\n \"multiline\": \"grid-cols-[minmax(0,1fr)_calc(var(--height-action)*8/9*var(--density-scale))]\"\n },\n \"avatarOverlap\": {\n \"sm\": \"has-data-[scale=sm]:-space-x-[calc(var(--avatar)*0.75/4)]\",\n \"md\": \"-space-x-[calc(var(--avatar)/4)]\",\n \"lg\": \"has-data-[scale=lg]:-space-x-[calc(var(--avatar)*1.25/4)]\"\n },\n \"navigationGuideStart\": \"ms-[calc(var(--control-x)*0.8333333*var(--space-scale)+var(--icon)*0.75/2)]\",\n \"clearEnd\": {\n \"sm\": \"end-[calc(var(--control-x)*0.8333333*var(--space-scale))]\",\n \"md\": \"end-[calc(var(--control-x)*var(--space-scale))]\",\n \"lg\": \"end-[calc(var(--control-x)*var(--space-scale))]\"\n },\n \"clearPadding\": {\n \"sm\": \"pe-[calc(var(--control-x)*0.8333333*var(--space-scale)+1.375rem*var(--density-scale)+0.375rem*var(--space-scale))]\",\n \"md\": \"pe-[calc(var(--control-x)*var(--space-scale)+1.375rem*var(--density-scale)+0.375rem*var(--space-scale))]\",\n \"lg\": \"pe-[calc(var(--control-x)*var(--space-scale)+1.375rem*var(--density-scale)+0.375rem*var(--space-scale))]\"\n },\n \"pairedClearPadding\": {\n \"sm\": \"pe-[calc(var(--control-x)*0.8333333*var(--space-scale)+2.75rem*var(--density-scale)+0.75rem*var(--space-scale))]\",\n \"md\": \"pe-[calc(var(--control-x)*var(--space-scale)+2.75rem*var(--density-scale)+0.75rem*var(--space-scale))]\",\n \"lg\": \"pe-[calc(var(--control-x)*var(--space-scale)+2.75rem*var(--density-scale)+0.75rem*var(--space-scale))]\"\n },\n \"pairedIconPadding\": {\n \"sm\": \"pe-[calc((var(--control-x)*0.8333333+0.375rem)*var(--space-scale)+var(--icon)*0.75+1.375rem*var(--density-scale)+0.375rem*var(--space-scale))]\",\n \"md\": \"pe-[calc((var(--control-x)+0.5rem)*var(--space-scale)+var(--icon)+1.375rem*var(--density-scale)+0.375rem*var(--space-scale))]\",\n \"lg\": \"pe-[calc((var(--control-x)+0.5rem)*var(--space-scale)+var(--icon)*1.25+1.375rem*var(--density-scale)+0.375rem*var(--space-scale))]\"\n },\n \"pairedAddonPadding\": {\n \"sm\": \"pe-[calc(var(--control-x)*0.8333333*var(--space-scale)+1.25rem+0.375rem*var(--space-scale)+1.375rem*var(--density-scale)+0.375rem*var(--space-scale))]\",\n \"md\": \"pe-[calc(var(--control-x)*var(--space-scale)+1.5rem+0.375rem*var(--space-scale)+1.375rem*var(--density-scale)+0.375rem*var(--space-scale))]\",\n \"lg\": \"pe-[calc(var(--control-x)*var(--space-scale)+1.5rem+0.375rem*var(--space-scale)+1.375rem*var(--density-scale)+0.375rem*var(--space-scale))]\"\n },\n \"pairedCountPadding\": {\n \"sm\": \"pe-[calc(var(--control-x)*0.8333333*var(--space-scale)+2.25rem+1.375rem*var(--density-scale)+0.375rem*var(--space-scale))]\",\n \"md\": \"pe-[calc(var(--control-x)*var(--space-scale)+2.5rem+1.375rem*var(--density-scale)+0.375rem*var(--space-scale))]\",\n \"lg\": \"pe-[calc(var(--control-x)*var(--space-scale)+2.5rem+1.375rem*var(--density-scale)+0.375rem*var(--space-scale))]\"\n },\n \"measuredPadding\": {\n \"sm\": \"pe-[calc(var(--control-x)*0.8333333*var(--space-scale)+var(--field-trailing-width)+0.375rem*var(--space-scale))]\",\n \"md\": \"pe-[calc(var(--control-x)*var(--space-scale)+var(--field-trailing-width)+0.375rem*var(--space-scale))]\",\n \"lg\": \"pe-[calc(var(--control-x)*var(--space-scale)+var(--field-trailing-width)+0.375rem*var(--space-scale))]\"\n },\n \"measuredStartPadding\": {\n \"sm\": \"ps-[calc(var(--control-x)*0.8333333*var(--space-scale)+var(--field-leading-width)+0.375rem*var(--space-scale))]\",\n \"md\": \"ps-[calc(var(--control-x)*var(--space-scale)+var(--field-leading-width)+0.375rem*var(--space-scale))]\",\n \"lg\": \"ps-[calc(var(--control-x)*var(--space-scale)+var(--field-leading-width)+0.375rem*var(--space-scale))]\"\n },\n \"textareaCountPadding\": \"pb-[calc(var(--text-xs)*var(--leading-normal)+0.625rem*var(--space-scale))]\",\n \"togglePadding\": \"pe-[calc(1.375rem*var(--density-scale)+0.625rem*var(--space-scale))]\",\n \"largeIconStart\": \"ps-[calc((var(--control-x)+0.5rem)*var(--space-scale)+var(--icon)*1.25)]\",\n \"largeIconEnd\": \"pe-[calc((var(--control-x)+0.5rem)*var(--space-scale)+var(--icon)*1.25)]\",\n \"buttonBlockPadding\": {\n \"sm\": \"py-[min(calc(0.25rem*var(--space-scale)),calc((var(--height-action)*8/9*var(--density-scale)-1lh)/2-1px))]\",\n \"md\": \"py-[min(calc(0.25rem*var(--space-scale)),calc((var(--height-action)*var(--density-scale)-1lh)/2-1px))]\",\n \"lg\": \"py-[min(calc(0.25rem*var(--space-scale)),calc((var(--height-action)*10/9*var(--density-scale)-1lh)/2-1px))]\"\n },\n \"controlTextMinHeight\": \"min-h-[calc(1lh+2px)]\",\n \"controlBlockPadding\": {\n \"sm\": \"py-[max(0px,min(calc(0.25rem*var(--space-scale)),calc((var(--height-control)*8/9*var(--density-scale)-1lh)/2-1px)))]\",\n \"md\": \"py-[max(0px,min(calc(0.25rem*var(--space-scale)),calc((var(--height-control)*var(--density-scale)-1lh)/2-1px)))]\",\n \"lg\": \"py-[max(0px,min(calc(0.375rem*var(--space-scale)),calc((var(--height-control)*10/9*var(--density-scale)-1lh)/2-1px)))]\"\n },\n \"fileField\": {\n \"minHeight\": \"min-h-[calc(max(1lh,max(calc(1.75rem*var(--density-scale)),calc(var(--text-pxs)*var(--text-pxs--line-height)+2px)))+2px)]\",\n \"buttonMinHeight\": \"file:min-h-[calc(1lh+2px)]\",\n \"blockPadding\": {\n \"sm\": \"py-[max(0px,min(calc(0.25rem*var(--space-scale)),calc((var(--height-control)*8/9*var(--density-scale)-max(1lh,max(calc(1.75rem*var(--density-scale)),calc(var(--text-pxs)*var(--text-pxs--line-height)+2px))))/2-1px)))]\",\n \"md\": \"py-[max(0px,min(calc(0.25rem*var(--space-scale)),calc((var(--height-control)*var(--density-scale)-max(1lh,max(calc(1.75rem*var(--density-scale)),calc(var(--text-pxs)*var(--text-pxs--line-height)+2px))))/2-1px)))]\",\n \"lg\": \"py-[max(0px,min(calc(0.375rem*var(--space-scale)),calc((var(--height-control)*10/9*var(--density-scale)-max(1lh,max(calc(1.75rem*var(--density-scale)),calc(var(--text-pxs)*var(--text-pxs--line-height)+2px))))/2-1px)))]\"\n }\n },\n \"rawFileField\": {\n \"minHeight\": \"min-h-[calc(max(1lh,max(calc(1.75rem*var(--density-scale)),calc(var(--text-sm)*var(--text-sm--line-height)+0px)))+2px)]\",\n \"buttonMinHeight\": \"file:min-h-[calc(1lh+0px)]\",\n \"blockPadding\": {\n \"sm\": \"py-[max(0px,min(calc(0.25rem*var(--space-scale)),calc((var(--height-control)*8/9*var(--density-scale)-max(1lh,max(calc(1.75rem*var(--density-scale)),calc(var(--text-sm)*var(--text-sm--line-height)+0px))))/2-1px)))]\",\n \"md\": \"py-[max(0px,min(calc(0.25rem*var(--space-scale)),calc((var(--height-control)*var(--density-scale)-max(1lh,max(calc(1.75rem*var(--density-scale)),calc(var(--text-sm)*var(--text-sm--line-height)+0px))))/2-1px)))]\",\n \"lg\": \"py-[max(0px,min(calc(0.375rem*var(--space-scale)),calc((var(--height-control)*10/9*var(--density-scale)-max(1lh,max(calc(1.75rem*var(--density-scale)),calc(var(--text-sm)*var(--text-sm--line-height)+0px))))/2-1px)))]\"\n }\n },\n \"overlayClose\": \"absolute top-[calc(var(--surface-y)*var(--space-scale)+(var(--text-base)*var(--leading-snug)-var(--height-action)*8/9*var(--density-scale))/2)] end-[calc(var(--surface-x)*var(--space-scale))]\",\n \"overlayHeader\": \"[[data-slot$=-content]:has(>[data-overlay-close])>&]:pe-[calc(var(--surface-x)*var(--space-scale)+var(--height-action)*8/9*var(--density-scale)+0.5rem*var(--space-scale))]\",\n \"selectToggleTrack\": {\n \"sm\": \"end-[calc(var(--control-x)*0.8333333*var(--space-scale)+1px-(1.375rem*var(--density-scale)-var(--icon)*0.75)/2)]\",\n \"md\": \"end-[calc(var(--control-x)*var(--space-scale)+1px-(1.375rem*var(--density-scale)-var(--icon))/2)]\",\n \"lg\": \"end-[calc(var(--control-x)*var(--space-scale)+1px-(1.375rem*var(--density-scale)-var(--icon)*1.25)/2)]\"\n },\n \"selectTogglePadding\": {\n \"sm\": \"pe-[calc((var(--control-x)*0.8333333+0.375rem)*var(--space-scale)+1px+(1.375rem*var(--density-scale)+var(--icon)*0.75)/2)]\",\n \"md\": \"pe-[calc((var(--control-x)+0.375rem)*var(--space-scale)+1px+(1.375rem*var(--density-scale)+var(--icon))/2)]\",\n \"lg\": \"pe-[calc((var(--control-x)+0.375rem)*var(--space-scale)+1px+(1.375rem*var(--density-scale)+var(--icon)*1.25)/2)]\"\n },\n \"textareaBlockPadding\": {\n \"sm\": \"py-[calc((var(--height-control)*8/9*var(--density-scale)-1lh)/2-1px)]\",\n \"md\": \"py-[calc((var(--height-control)*var(--density-scale)-1lh)/2-1px)]\",\n \"lg\": \"py-[calc((var(--height-control)*10/9*var(--density-scale)-1lh)/2-1px)]\"\n },\n \"textareaClearTop\": {\n \"sm\": \"top-[calc((var(--height-control)*8/9-1.375rem)*var(--density-scale)/2)]\",\n \"md\": \"top-[calc((var(--height-control)-1.375rem)*var(--density-scale)/2)]\",\n \"lg\": \"top-[calc((var(--height-control)*10/9-1.375rem)*var(--density-scale)/2)]\"\n },\n \"textareaIconTop\": {\n \"sm\": \"top-[calc((var(--height-control)*8/9*var(--density-scale)-var(--icon))/2)]\",\n \"md\": \"top-[calc((var(--height-control)*var(--density-scale)-var(--icon))/2)]\",\n \"lg\": \"top-[calc((var(--height-control)*10/9*var(--density-scale)-var(--icon))/2)]\"\n },\n \"clearTargetBleed\": \"-my-[calc((1.375rem*var(--density-scale)-var(--icon)*0.75)/2)]\",\n \"actionGutter\": {\n \"sm\": {\n \"start\": \"ps-[calc(var(--height-action)*8/9*var(--density-scale)+0.5rem*var(--space-scale))]\",\n \"end\": \"pe-[calc(var(--height-action)*8/9*var(--density-scale)+0.5rem*var(--space-scale))]\"\n },\n \"md\": {\n \"start\": \"ps-[calc(var(--height-action)*var(--density-scale)+0.5rem*var(--space-scale))]\",\n \"end\": \"pe-[calc(var(--height-action)*var(--density-scale)+0.5rem*var(--space-scale))]\"\n },\n \"lg\": {\n \"start\": \"ps-[calc(var(--height-action)*10/9*var(--density-scale)+0.5rem*var(--space-scale))]\",\n \"end\": \"pe-[calc(var(--height-action)*10/9*var(--density-scale)+0.5rem*var(--space-scale))]\"\n }\n },\n \"menuActionReserve\": {\n \"item\": \"group-has-[>[data-sidebar=menu-action]]/menu-item:pe-[calc(var(--height-action)*7/9*var(--density-scale)+var(--control-x)*var(--space-scale))]!\",\n \"subItem\": \"group-has-[>[data-sidebar=menu-action]]/menu-sub-item:pe-[calc(var(--height-action)*7/9*var(--density-scale)+var(--control-x)*var(--space-scale))]!\"\n },\n \"toastCloseReserve\": \"has-[[data-close-button]]:!pe-[calc(var(--height-action)*8/9*var(--density-scale)+0.75rem*var(--space-scale))]\",\n \"calendarCell\": \"[--cell-size:calc(var(--height-action)*8/9*var(--density-scale))] [--cell-radius:min(calc(var(--radius)*0.75),calc(min(var(--height-action),var(--height-control))*var(--density-scale)/4))]\",\n \"calendarCompactCell\": \"[--cell-size:calc(1.875rem*var(--density-scale))] sm:[--cell-size:calc(var(--height-action)*8/9*var(--density-scale))]\",\n \"overlayHeaderCentered\": \"[[data-slot$=-content]:has(>[data-overlay-close])>&]:ps-[calc(var(--surface-x)*var(--space-scale)+var(--height-action)*8/9*var(--density-scale)+0.5rem*var(--space-scale))]\"\n} as const;\n"],"mappings":";AACA,IAAaA,IAAqB;CAChCC,YAAc;EACZC,IAAM;EACNC,IAAM;EACNC,IAAM;EACNC,IAAM;CACR;CACAC,mBAAqB;EACnBC,QAAU;EACVC,WAAa;CACf;CACAC,eAAiB;EACfN,IAAM;EACNC,IAAM;EACNC,IAAM;CACR;CACAK,sBAAwB;CACxBC,UAAY;EACVR,IAAM;EACNC,IAAM;EACNC,IAAM;CACR;CACAO,cAAgB;EACdT,IAAM;EACNC,IAAM;EACNC,IAAM;CACR;CACAQ,oBAAsB;EACpBV,IAAM;EACNC,IAAM;EACNC,IAAM;CACR;CACAS,mBAAqB;EACnBX,IAAM;EACNC,IAAM;EACNC,IAAM;CACR;CACAU,oBAAsB;EACpBZ,IAAM;EACNC,IAAM;EACNC,IAAM;CACR;CACAW,oBAAsB;EACpBb,IAAM;EACNC,IAAM;EACNC,IAAM;CACR;CACAY,iBAAmB;EACjBd,IAAM;EACNC,IAAM;EACNC,IAAM;CACR;CACAa,sBAAwB;EACtBf,IAAM;EACNC,IAAM;EACNC,IAAM;CACR;CACAc,sBAAwB;CACxBC,eAAiB;CACjBC,gBAAkB;CAClBC,cAAgB;CAChBC,oBAAsB;EACpBpB,IAAM;EACNC,IAAM;EACNC,IAAM;CACR;CACAmB,sBAAwB;CACxBC,qBAAuB;EACrBtB,IAAM;EACNC,IAAM;EACNC,IAAM;CACR;CACAqB,WAAa;EACXC,WAAa;EACbC,iBAAmB;EACnBC,cAAgB;GACd1B,IAAM;GACNC,IAAM;GACNC,IAAM;EACR;CACF;CACAyB,cAAgB;EACdH,WAAa;EACbC,iBAAmB;EACnBC,cAAgB;GACd1B,IAAM;GACNC,IAAM;GACNC,IAAM;EACR;CACF;CACA0B,cAAgB;CAChBC,eAAiB;CACjBC,mBAAqB;EACnB9B,IAAM;EACNC,IAAM;EACNC,IAAM;CACR;CACA6B,qBAAuB;EACrB/B,IAAM;EACNC,IAAM;EACNC,IAAM;CACR;CACA8B,sBAAwB;EACtBhC,IAAM;EACNC,IAAM;EACNC,IAAM;CACR;CACA+B,kBAAoB;EAClBjC,IAAM;EACNC,IAAM;EACNC,IAAM;CACR;CACAgC,iBAAmB;EACjBlC,IAAM;EACNC,IAAM;EACNC,IAAM;CACR;CACAiC,kBAAoB;CACpBC,cAAgB;EACdpC,IAAM;GACJqC,OAAS;GACTC,KAAO;EACT;EACArC,IAAM;GACJoC,OAAS;GACTC,KAAO;EACT;EACApC,IAAM;GACJmC,OAAS;GACTC,KAAO;EACT;CACF;CACAC,mBAAqB;EACnBC,MAAQ;EACRC,SAAW;CACb;CACAC,mBAAqB;CACrBC,cAAgB;CAChBC,qBAAuB;CACvBC,uBAAyB;AAC3B"}
|