themelia-react-ui 2.0.5 → 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 +76 -0
- package/MIGRATION.md +119 -0
- package/README.md +13 -6
- package/dist/{accordion-B9MHG0cT.js → accordion-0tQUZ20r.js} +7 -7
- package/dist/accordion-0tQUZ20r.js.map +1 -0
- package/dist/{action-menu-Dr8K-ghE.js → action-menu-C0gjzLyE.js} +7 -7
- package/dist/{action-menu-Dr8K-ghE.js.map → action-menu-C0gjzLyE.js.map} +1 -1
- package/dist/{ai-artifact-C58tQcBy.js → ai-artifact-CGGpQryR.js} +172 -157
- package/dist/ai-artifact-CGGpQryR.js.map +1 -0
- package/dist/{app-shell-B_IuNWOo.js → app-shell-EHuuRDGy.js} +5 -5
- package/dist/{app-shell-B_IuNWOo.js.map → app-shell-EHuuRDGy.js.map} +1 -1
- package/dist/{attachment-Dg_69lPS.js → attachment-BCpA4e7i.js} +8 -8
- package/dist/{attachment-Dg_69lPS.js.map → attachment-BCpA4e7i.js.map} +1 -1
- package/dist/{auth-DTkkshS8.js → auth-B0girIk_.js} +15 -15
- package/dist/auth-B0girIk_.js.map +1 -0
- package/dist/{avatar-CeZaFmNH.js → avatar-B9Jnp-T-.js} +3 -3
- package/dist/{avatar-CeZaFmNH.js.map → avatar-B9Jnp-T-.js.map} +1 -1
- package/dist/{badge-xIiV_E7f.js → badge-wWauMgAt.js} +3 -3
- package/dist/{badge-xIiV_E7f.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 +1 -1
- package/dist/base/chart.js +1 -1
- package/dist/base/choice-inputs.js +2 -2
- package/dist/base/code-block.js +1 -1
- package/dist/base/combobox.js +1 -1
- package/dist/base/command.js +1 -1
- package/dist/base/copyable.js +1 -1
- package/dist/base/date-pickers.js +2 -2
- package/dist/base/display.js +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 +8 -8
- 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 +6 -6
- 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 +195 -188
- 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 +7 -7
- package/dist/base/skeleton.js +1 -1
- package/dist/base/spinner.js +5 -5
- 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 +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-Cb8cuvyy.js → batch-action-bar-BoqWIIpV.js} +5 -5
- package/dist/{batch-action-bar-Cb8cuvyy.js.map → batch-action-bar-BoqWIIpV.js.map} +1 -1
- package/dist/blocks/admin.js +17 -17
- package/dist/blocks/ai.js +227 -221
- package/dist/blocks/ai.js.map +1 -1
- package/dist/blocks/analytics/usage-card.js +1 -1
- package/dist/blocks/analytics.js +424 -449
- 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 +225 -220
- package/dist/blocks/commerce.js.map +1 -1
- package/dist/blocks/data-display.js +2 -2
- package/dist/blocks/onboarding.js +5 -5
- package/dist/blocks/planning.js +11 -11
- package/dist/blocks/timelines.js +1 -1
- package/dist/{breadcrumbs-J-K2kl4c.js → breadcrumbs-Bp9Ke7kd.js} +4 -4
- package/dist/breadcrumbs-Bp9Ke7kd.js.map +1 -0
- package/dist/{button-S2Cubiiz.js → button-ChBovTx0.js} +2 -2
- package/dist/{button-S2Cubiiz.js.map → button-ChBovTx0.js.map} +1 -1
- package/dist/{buttons-BedGfygC.js → buttons-DeW0bQeK.js} +6 -6
- package/dist/{buttons-BedGfygC.js.map → buttons-DeW0bQeK.js.map} +1 -1
- package/dist/{cards-rNX1M4Xn.js → cards-CNXnmvV5.js} +8 -8
- package/dist/{cards-rNX1M4Xn.js.map → cards-CNXnmvV5.js.map} +1 -1
- package/dist/{cascader-B1MiqkBq.js → cascader-CrAl9zD5.js} +15 -15
- package/dist/{cascader-B1MiqkBq.js.map → cascader-CrAl9zD5.js.map} +1 -1
- package/dist/{chart-Darg_0Kv.js → chart-I7ROnsl8.js} +5 -5
- package/dist/{chart-Darg_0Kv.js.map → chart-I7ROnsl8.js.map} +1 -1
- package/dist/{checkbox-fflqmODR.js → checkbox-MoyHIAPs.js} +3 -3
- package/dist/{checkbox-fflqmODR.js.map → checkbox-MoyHIAPs.js.map} +1 -1
- package/dist/{choice-inputs-zUgBZfE4.js → choice-inputs-DHGtx0QV.js} +122 -110
- package/dist/choice-inputs-DHGtx0QV.js.map +1 -0
- package/dist/{code-block-BzmM9Eig.js → code-block-BSJyq9e-.js} +7 -7
- package/dist/{code-block-BzmM9Eig.js.map → code-block-BSJyq9e-.js.map} +1 -1
- package/dist/{collapsible-BkAI_XD4.js → collapsible-BzJ91LUG.js} +3 -3
- package/dist/{collapsible-BkAI_XD4.js.map → collapsible-BzJ91LUG.js.map} +1 -1
- package/dist/{collection-content-gDh1v6O4.js → collection-content-CSnwtOTH.js} +3 -3
- package/dist/{collection-content-gDh1v6O4.js.map → collection-content-CSnwtOTH.js.map} +1 -1
- package/dist/{combobox-BEx0vJgF.js → combobox-Bcvu5J8O.js} +11 -10
- package/dist/{combobox-BEx0vJgF.js.map → combobox-Bcvu5J8O.js.map} +1 -1
- package/dist/combobox-C2JiSQPc.js +915 -0
- package/dist/combobox-C2JiSQPc.js.map +1 -0
- package/dist/{command-CrlPIL6m.js → command-9e52NPgK.js} +6 -6
- package/dist/{command-CrlPIL6m.js.map → command-9e52NPgK.js.map} +1 -1
- package/dist/{comments-Dmpp0YIc.js → comments-BsgErEqd.js} +33 -28
- package/dist/comments-BsgErEqd.js.map +1 -0
- package/dist/components/base/choice-inputs/choice-types.d.ts +4 -0
- package/dist/components/base/choice-inputs/pill-radio-group.d.ts +7 -6
- package/dist/components/base/combobox/combobox-field.d.ts +2 -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/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-numeric/coordinates-input.d.ts +4 -1
- package/dist/components/base/forms-numeric/decimal-input.d.ts +2 -2
- package/dist/components/base/forms-numeric/dimensions-input.d.ts +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/navigation/language-switcher.d.ts +12 -4
- package/dist/components/base/repeaters/key-value-editor.d.ts +2 -1
- package/dist/components/base/sidebar/sidebar.d.ts +2 -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-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 +2 -0
- package/dist/components/blocks/analytics/metric/metric.d.ts +4 -0
- package/dist/components/blocks/analytics/metric-comparison/metric-comparison.d.ts +2 -0
- package/dist/components/blocks/analytics/metric-grid/metric-grid.d.ts +4 -5
- package/dist/components/blocks/analytics/types.d.ts +2 -2
- package/dist/components/blocks/commerce/order-status/types.d.ts +4 -0
- package/dist/components/blocks/data-display/empty-state/empty-state.types.d.ts +4 -3
- package/dist/components/features/activities/activities.types.d.ts +18 -11
- package/dist/components/features/activities/hooks/use-activity-resources.d.ts +2 -1
- 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/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/filters.types.d.ts +3 -3
- package/dist/components/features/filters/partials/date-filter-content.d.ts +3 -2
- package/dist/components/features/filters/partials/filter-popover-content.d.ts +4 -2
- package/dist/components/features/filters/partials/range-filter-content.d.ts +12 -0
- package/dist/components/features/filters/utils/filter-utils.d.ts +5 -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 +6 -0
- package/dist/components/features/media-library/media-library.types.d.ts +36 -8
- package/dist/components/features/media-library/partials/media-library-partials.d.ts +3 -3
- 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/products.types.d.ts +2 -2
- package/dist/components/features/questionnaire/questionnaire.types.d.ts +3 -0
- package/dist/components/features/resource/resource.d.ts +1 -1
- package/dist/components/features/resource/resource.types.d.ts +2 -0
- package/dist/components/features/rich-text-editor/form-rich-text-editor.d.ts +1 -1
- package/dist/components/features/rich-text-editor/partials/caret-helpers.d.ts +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/rich-text-editor-toolbar.d.ts +3 -1
- package/dist/components/features/rich-text-editor/rich-text-editor.recipes.d.ts +1 -1
- package/dist/components/features/rich-text-editor/rich-text-editor.types.d.ts +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/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 +17 -1
- package/dist/components/layout/header/header.types.d.ts +3 -2
- package/dist/components/layout/layout.types.d.ts +5 -3
- 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/settings/settings.d.ts +1 -1
- package/dist/components/layout/sidebar/app-sidebar.d.ts +1 -1
- package/dist/components/layout/sidebar/sidebar-navigation-rail.d.ts +3 -1
- package/dist/components/layout/sidebar/sidebar.context.d.ts +1 -0
- package/dist/components/layout/sidebar/sidebar.types.d.ts +2 -0
- 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/{containers-CIxwbZt5.js → containers-CSdc32h9.js} +2 -2
- package/dist/{containers-CIxwbZt5.js.map → containers-CSdc32h9.js.map} +1 -1
- package/dist/{copyable-DIznBqiT.js → copyable-3fdHfMR3.js} +4 -4
- package/dist/{copyable-DIznBqiT.js.map → copyable-3fdHfMR3.js.map} +1 -1
- package/dist/{data-display-BdgCAw8T.js → data-display-Cmj-xZYl.js} +16 -15
- package/dist/data-display-Cmj-xZYl.js.map +1 -0
- package/dist/{date-Cq8ioE4o.js → date-Br0FicVv.js} +4 -4
- package/dist/{date-Cq8ioE4o.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-KsZLw9Ov.js → display-CT_N2a3w.js} +7 -7
- package/dist/{display-KsZLw9Ov.js.map → display-CT_N2a3w.js.map} +1 -1
- package/dist/{dropdown-menu-CLs8Lihj.js → dropdown-menu-C08iIugv.js} +6 -6
- package/dist/{dropdown-menu-CLs8Lihj.js.map → dropdown-menu-C08iIugv.js.map} +1 -1
- package/dist/features/activities.js +283 -270
- package/dist/features/activities.js.map +1 -1
- package/dist/features/ai-chat.js +40 -27
- package/dist/features/ai-chat.js.map +1 -1
- package/dist/features/appointment-calendar.js +126 -126
- package/dist/features/appointment-calendar.js.map +1 -1
- package/dist/features/async-preview.js +9 -9
- package/dist/features/combobox.js +1 -1
- package/dist/features/comments.js +1 -1
- package/dist/features/data-view.js +10 -10
- package/dist/features/email-composer.js +24 -19
- package/dist/features/email-composer.js.map +1 -1
- package/dist/features/event-calendar.js +129 -125
- package/dist/features/event-calendar.js.map +1 -1
- package/dist/features/filters.js +2 -2
- package/dist/features/global-search.js +16 -20
- package/dist/features/global-search.js.map +1 -1
- package/dist/features/kanban.js +18 -28
- package/dist/features/kanban.js.map +1 -1
- package/dist/features/map/style.css +15 -0
- package/dist/features/map.js +331 -314
- package/dist/features/map.js.map +1 -1
- package/dist/features/media-library.js +1044 -866
- 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 +978 -964
- package/dist/features/products.js.map +1 -1
- package/dist/features/questionnaire.js +159 -152
- package/dist/features/questionnaire.js.map +1 -1
- package/dist/features/resource-assignment.js +8 -8
- package/dist/features/resource.js +74 -71
- 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 +400 -399
- 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-DWcNcOjh.js → field-affordance-recipes-D6H7tVJi.js} +2 -2
- package/dist/{field-affordance-recipes-DWcNcOjh.js.map → field-affordance-recipes-D6H7tVJi.js.map} +1 -1
- 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-DzgSJpMK.js → filters-Dl80yYtN.js} +763 -605
- 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-Bs2qFUeE.js → form-sizing-CgcrUbLU.js} +2 -2
- package/dist/{form-sizing-Bs2qFUeE.js.map → form-sizing-CgcrUbLU.js.map} +1 -1
- package/dist/{forms-C0RGnJTe.js → forms-B3W8CH7-.js} +8 -8
- package/dist/{forms-C0RGnJTe.js.map → forms-B3W8CH7-.js.map} +1 -1
- package/dist/forms-numeric-CwjQJe-O.js +991 -0
- package/dist/forms-numeric-CwjQJe-O.js.map +1 -0
- package/dist/{header-DMMxG__r.js → header-ZIIsRKxP.js} +113 -113
- package/dist/header-ZIIsRKxP.js.map +1 -0
- package/dist/hooks/use-files.d.ts +2 -0
- package/dist/{hooks-DB6CJ4MR.js → hooks-BitHSh-Y.js} +3 -3
- package/dist/{hooks-DB6CJ4MR.js.map → hooks-BitHSh-Y.js.map} +1 -1
- package/dist/{icon-badge-DZF-YjQp.js → icon-badge-npxF1SLX.js} +2 -2
- package/dist/{icon-badge-DZF-YjQp.js.map → icon-badge-npxF1SLX.js.map} +1 -1
- package/dist/index.js +1 -1
- package/dist/{input-CvyDQlY7.js → input-7KAc7XQL.js} +6 -6
- package/dist/{input-CvyDQlY7.js.map → input-7KAc7XQL.js.map} +1 -1
- package/dist/{input-DMBwAZmr.js → input-DIREVYHs.js} +3 -3
- package/dist/{input-DMBwAZmr.js.map → input-DIREVYHs.js.map} +1 -1
- 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-DjCcM18E.js → item-FfWnaYST.js} +99 -98
- 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 +1 -1
- package/dist/layout/settings.js +1 -1
- package/dist/layout/sidebar.js +2 -2
- package/dist/layout/workspace.js +1 -1
- package/dist/layout.js +11 -11
- package/dist/layout.types-E_GAApzO.js +30 -0
- package/dist/layout.types-E_GAApzO.js.map +1 -0
- 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/surface-recipes.d.ts +1 -1
- package/dist/lib/token-merge.generated.d.ts +6 -6
- package/dist/lib/utils.js +1 -1
- package/dist/{media-gallery-C-vChPmE.js → media-gallery-C81DAnKI.js} +6 -6
- package/dist/{media-gallery-C-vChPmE.js.map → media-gallery-C81DAnKI.js.map} +1 -1
- package/dist/{mentions-0_4nWuI-.js → mentions-qOnedSt4.js} +236 -167
- 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-C3MkU-Om.js → metadata-list-XkqZ_UXH.js} +11 -11
- package/dist/{metadata-list-C3MkU-Om.js.map → metadata-list-XkqZ_UXH.js.map} +1 -1
- package/dist/{navigation-DaRjthVk.js → navigation-BgtPJAhi.js} +119 -119
- package/dist/navigation-BgtPJAhi.js.map +1 -0
- package/dist/{navigation-C90-oQFq.js → navigation-Bt-v7rWP.js} +52 -46
- package/dist/navigation-Bt-v7rWP.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-CRU3kGuk.js → number-CYqBcrSj.js} +78 -86
- package/dist/number-CYqBcrSj.js.map +1 -0
- package/dist/{overflow-tab-bar-IVFVQFV6.js → overflow-tab-bar-BQCA2Zn2.js} +7 -7
- package/dist/{overflow-tab-bar-IVFVQFV6.js.map → overflow-tab-bar-BQCA2Zn2.js.map} +1 -1
- package/dist/{overlays-BSgCtM2v.js → overlays-CC8zI3Du.js} +264 -260
- package/dist/overlays-CC8zI3Du.js.map +1 -0
- package/dist/{page-DUUKDAjo.js → page-BoQ1VaFJ.js} +13 -13
- package/dist/{page-DUUKDAjo.js.map → page-BoQ1VaFJ.js.map} +1 -1
- package/dist/{page-header-commands-7P3sfE9u.js → page-header-commands-DIKspJfx.js} +4 -4
- package/dist/{page-header-commands-7P3sfE9u.js.map → page-header-commands-DIKspJfx.js.map} +1 -1
- package/dist/{pagination-CgCjElfu.js → pagination-Br8TdV9A.js} +4 -4
- package/dist/{pagination-CgCjElfu.js.map → pagination-Br8TdV9A.js.map} +1 -1
- package/dist/{popover-B85RenIl.js → popover-k8TdUcAt.js} +10 -10
- package/dist/popover-k8TdUcAt.js.map +1 -0
- package/dist/{popover-menu-DlnQ2zlR.js → popover-menu-yn-o0kyA.js} +7 -7
- package/dist/{popover-menu-DlnQ2zlR.js.map → popover-menu-yn-o0kyA.js.map} +1 -1
- package/dist/{popover.recipes-DdiEp0rd.js → popover.recipes-DJ0AkUan.js} +2 -2
- package/dist/{popover.recipes-DdiEp0rd.js.map → popover.recipes-DJ0AkUan.js.map} +1 -1
- package/dist/{portal-recipes-BpsV_iRw.js → portal-recipes-DyUXqUtD.js} +2 -2
- package/dist/{portal-recipes-BpsV_iRw.js.map → portal-recipes-DyUXqUtD.js.map} +1 -1
- package/dist/{primitives-ByWgGUgt.js → primitives-BkkQjYl7.js} +22 -17
- package/dist/primitives-BkkQjYl7.js.map +1 -0
- package/dist/primitives.js +4 -4
- package/dist/{progress-BJhQP9WX.js → progress-DZFXXzPs.js} +4 -4
- package/dist/{progress-BJhQP9WX.js.map → progress-DZFXXzPs.js.map} +1 -1
- package/dist/{receipt-tOc7B3hw.js → receipt-C7LhOg7Q.js} +6 -6
- package/dist/{receipt-tOc7B3hw.js.map → receipt-C7LhOg7Q.js.map} +1 -1
- package/dist/rich-text-BnTzZjIo.js +45 -0
- package/dist/rich-text-BnTzZjIo.js.map +1 -0
- package/dist/rich-text-editor-CAurDwT5.js +1273 -0
- package/dist/rich-text-editor-CAurDwT5.js.map +1 -0
- package/dist/{rich-text-editor-toolbar-laT3tpBT.js → rich-text-editor-toolbar-DbXig7Jk.js} +36 -35
- 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-B0dB2cBi.js → scroll-area-Bj6CRUif.js} +2 -2
- package/dist/{scroll-area-B0dB2cBi.js.map → scroll-area-Bj6CRUif.js.map} +1 -1
- package/dist/{separator-Bb17I4pu.js → separator-B9ewiCGO.js} +2 -2
- package/dist/{separator-Bb17I4pu.js.map → separator-B9ewiCGO.js.map} +1 -1
- package/dist/{separator-Ct_WSWTJ.js → separator-DM6gs2vu.js} +3 -3
- package/dist/{separator-Ct_WSWTJ.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-BGPERY55.js → sheet-C4DHsgLk.js} +6 -6
- package/dist/{sheet-BGPERY55.js.map → sheet-C4DHsgLk.js.map} +1 -1
- package/dist/sidebar-C8BnDwTH.js +709 -0
- package/dist/sidebar-C8BnDwTH.js.map +1 -0
- package/dist/{sidebar-f9gRWXIR.js → sidebar-CmD6a-HK.js} +16 -13
- package/dist/sidebar-CmD6a-HK.js.map +1 -0
- package/dist/{skeleton-BapcJd9C.js → skeleton-DDgdhmu9.js} +5 -5
- package/dist/{skeleton-BapcJd9C.js.map → skeleton-DDgdhmu9.js.map} +1 -1
- package/dist/{smart-card-CW0hjetE.js → smart-card-B6vLxqa_.js} +8 -8
- package/dist/{smart-card-CW0hjetE.js.map → smart-card-B6vLxqa_.js.map} +1 -1
- package/dist/{structure-DuxKl954.js → structure-DZJ2wbAU.js} +2 -2
- package/dist/{structure-DuxKl954.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-CFOWY9pQ.js → table-CBonSdTp.js} +534 -486
- package/dist/table-CBonSdTp.js.map +1 -0
- package/dist/{table-B4TE7iOV.js → table-CXSPHH25.js} +75 -71
- package/dist/table-CXSPHH25.js.map +1 -0
- package/dist/{tabs-e7ko9S2o.js → tabs-C4Kr_hCr.js} +50 -49
- package/dist/tabs-C4Kr_hCr.js.map +1 -0
- package/dist/{text-inputs-B1culiSK.js → text-inputs-jdkS3ReG.js} +9 -9
- package/dist/{text-inputs-B1culiSK.js.map → text-inputs-jdkS3ReG.js.map} +1 -1
- package/dist/{timelines-D3Sl9ueq.js → timelines-CoPwdJP0.js} +10 -10
- package/dist/{timelines-D3Sl9ueq.js.map → timelines-CoPwdJP0.js.map} +1 -1
- package/dist/{tooltip-8wz5S_Zr.js → tooltip-31NwIpTo.js} +4 -4
- package/dist/{tooltip-8wz5S_Zr.js.map → tooltip-31NwIpTo.js.map} +1 -1
- package/dist/{tree-CzUJHnFs.js → tree-CeYVzdFE.js} +6 -6
- package/dist/{tree-CzUJHnFs.js.map → tree-CeYVzdFE.js.map} +1 -1
- package/dist/typography/rich-text.js +1 -1
- package/dist/{typography-BQnine1k.js → typography-C7-YMW1S.js} +2 -2
- package/dist/{typography-BQnine1k.js.map → typography-C7-YMW1S.js.map} +1 -1
- package/dist/typography.js +1 -1
- package/dist/{upload-BOW6U2tI.js → upload-Hdm5gObf.js} +303 -291
- package/dist/upload-Hdm5gObf.js.map +1 -0
- package/dist/{upload-queue-qUXn1ykN.js → upload-queue-D0sYPuqo.js} +8 -8
- package/dist/{upload-queue-qUXn1ykN.js.map → upload-queue-D0sYPuqo.js.map} +1 -1
- package/dist/{usage-card-BeSLY0i0.js → usage-card-9s8hLDfn.js} +9 -9
- package/dist/{usage-card-BeSLY0i0.js.map → usage-card-9s8hLDfn.js.map} +1 -1
- package/dist/{utils-B6kKb8jB.js → utils-DhuoqFy4.js} +31 -37
- package/dist/utils-DhuoqFy4.js.map +1 -0
- package/dist/{value-inputs-skdVB2zh.js → value-inputs-D3aPgq9H.js} +15 -15
- package/dist/{value-inputs-skdVB2zh.js.map → value-inputs-D3aPgq9H.js.map} +1 -1
- package/dist/{value-typography-uAmWUAL1.js → value-typography-uSzzG9Gf.js} +32 -26
- package/dist/value-typography-uSzzG9Gf.js.map +1 -0
- package/dist/{workspace-DHeHv0qw.js → workspace-CC8Vchiu.js} +12 -12
- package/dist/{workspace-DHeHv0qw.js.map → workspace-CC8Vchiu.js.map} +1 -1
- package/docs/consumer-skill/examples/edit.tsx +3 -3
- package/docs/consumer-skill/references/agents-md.md +19 -19
- package/docs/consumer-skill/references/analytics.md +15 -0
- package/docs/consumer-skill/references/component-contracts.json +14724 -13057
- package/docs/consumer-skill/references/composition.md +21 -4
- package/docs/consumer-skill/references/design-contract.md +1 -0
- package/docs/consumer-skill/references/installation.md +51 -8
- package/docs/consumer-skill/references/integration.md +24 -1
- package/docs/consumer-skill/references/public-api.json +172 -34
- package/docs/consumer-skill/references/review.md +51 -11
- package/docs/consumer-skill/references/rhf-workflows.md +72 -0
- package/docs/consumer-skill/references/theming.md +7 -2
- package/docs/consumer-skill/references/tokens.json +1 -1
- package/docs/consumer-skill/scripts/composition-policy.mjs +144 -30
- package/docs/consumer-skill/scripts/setup-skills.mjs +46 -9
- package/package.json +4 -2
- package/templates/admin-shell-template.tsx +1 -2
- package/templates/customers-template.tsx +18 -16
- package/dist/accordion-B9MHG0cT.js.map +0 -1
- package/dist/ai-artifact-C58tQcBy.js.map +0 -1
- package/dist/auth-DTkkshS8.js.map +0 -1
- package/dist/breadcrumbs-J-K2kl4c.js.map +0 -1
- package/dist/choice-inputs-zUgBZfE4.js.map +0 -1
- package/dist/combobox-BwzoXFSG.js +0 -884
- package/dist/combobox-BwzoXFSG.js.map +0 -1
- package/dist/comments-Dmpp0YIc.js.map +0 -1
- package/dist/data-display-BdgCAw8T.js.map +0 -1
- package/dist/date-picker-RlIzKom_.js +0 -1551
- package/dist/date-picker-RlIzKom_.js.map +0 -1
- package/dist/date-pickers-DY-CpXS1.js +0 -179
- package/dist/date-pickers-DY-CpXS1.js.map +0 -1
- package/dist/feedback-Dm4izqFn.js +0 -240
- package/dist/feedback-Dm4izqFn.js.map +0 -1
- package/dist/filters-DzgSJpMK.js.map +0 -1
- package/dist/form-field-BriWAXyg.js +0 -63
- package/dist/form-field-BriWAXyg.js.map +0 -1
- package/dist/forms-numeric-DIhghX1Q.js +0 -910
- package/dist/forms-numeric-DIhghX1Q.js.map +0 -1
- package/dist/header-DMMxG__r.js.map +0 -1
- package/dist/item-DjCcM18E.js.map +0 -1
- package/dist/layout.types-Cn7aUzJp.js +0 -20
- package/dist/layout.types-Cn7aUzJp.js.map +0 -1
- package/dist/mentions-0_4nWuI-.js.map +0 -1
- package/dist/message-g8p7eVtN.js +0 -128
- package/dist/message-g8p7eVtN.js.map +0 -1
- package/dist/navigation-C90-oQFq.js.map +0 -1
- package/dist/navigation-DaRjthVk.js.map +0 -1
- package/dist/number-CRU3kGuk.js.map +0 -1
- package/dist/overlays-BSgCtM2v.js.map +0 -1
- package/dist/popover-B85RenIl.js.map +0 -1
- package/dist/primitives-ByWgGUgt.js.map +0 -1
- package/dist/rich-text-Dth5E882.js +0 -78
- package/dist/rich-text-Dth5E882.js.map +0 -1
- package/dist/rich-text-editor-C1fOjBTd.js +0 -1195
- package/dist/rich-text-editor-C1fOjBTd.js.map +0 -1
- package/dist/rich-text-editor-toolbar-laT3tpBT.js.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-Bar5wiSo.js +0 -167
- package/dist/settings-Bar5wiSo.js.map +0 -1
- package/dist/sidebar-D-JYMMbY.js +0 -686
- package/dist/sidebar-D-JYMMbY.js.map +0 -1
- package/dist/sidebar-f9gRWXIR.js.map +0 -1
- package/dist/table-B4TE7iOV.js.map +0 -1
- package/dist/table-CFOWY9pQ.js.map +0 -1
- package/dist/tabs-e7ko9S2o.js.map +0 -1
- package/dist/upload-BOW6U2tI.js.map +0 -1
- package/dist/utils-B6kKb8jB.js.map +0 -1
- package/dist/value-typography-uAmWUAL1.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"upload-BOW6U2tI.js","names":["React","resolveComponentScale","useDensityConfig","useFormattingConfig","cn","Button","Text","AlertDescription","Alert","AlertTitle","formatFileSize","FileSize","fieldAffordanceRecipes","ItemGroup","useFileDropTarget","uploadDropTargetRecipes","Dropzone","FilePickerInput","AttachmentFileIcon","AttachmentTitle","AttachmentDescription","AttachmentActions","AttachmentMedia","AttachmentContent","Attachment","React$1","React","defaultFileUploadStrings","fileName","accept","minimum","maximum","fileFingerprint","file","fileMatchesAccept","fileType","part","rule","validateOneFile","options","strings","minSizeBytes","formatSize","maxSizeBytes","validateFile","result","validateFileSelection","nextFiles","append","current","fingerprints","accepted","rejections","incoming","validationRejection","fingerprint","maxFiles","hasOwnValue","props","normalizeMaximum","value","fileKey","index","assignInputRef","node","forwardedRef","SelectedFileRow","replaceLabel","removeLabel","showReplace","UploadIcon","onReplace","Trash2Icon","onRemove","FileUploadImpl","sizeProp","stringsProp","_value","_defaultValue","_onValueChange","_selectionMode","_maxFiles","ariaDescribedBy","nativeAriaInvalid","nativeInputProps","useStrings","size","defaultScale","controlled","uncontrolledFiles","setUncontrolledFiles","useState","setRejections","inputRef","useRef","rootRef","continueFocus","pickerWasFocused","generatedId","useId","files","useMemo","target","multipleProps","multiple","errorId","describedBy","hasInvalidState","invalid","commitFiles","useCallback","nextFile","bytes","locale","handleFiles","disabled","onRejectedFiles","clearNativeInput","handleRemove","fileIndex","openPicker","inputProps","picker","className","dropTargetProps","isDragging","TriangleAlert","rejection","FileUpload","forwardRef","FILE_SIZE_UNITS","defaultFormatSize","unitIndex","idCounter","generateId","getExtension","getFingerprint","createMeta","extension","rules","allowed","toErrorMap","useFiles","setFilesState","filesRef","processFiles","incomingFiles","previousFiles","replace","meta","nextRejections","id","MAX_FILE_SIZE_MB","ASPECT_RATIO_CLASSES","defaultImageUploadStrings","count","getImageUploadRejectionMessage","code","details","ImageUploadImpl","inputId","allowedExtensions","parsed","item","subtype","ext","setFiles","removeAll","selected","selectOrChangeButtonLabel","filePreviewUrl","setFilePreviewUrl","acceptedExtensionsLabel","url","previewUrl","initialPreviewUrl","hasPreview","previewAlt","aspectClass","aspectRatio","imgFitClass","fit","computedMaxWidth","maxWidth","wrapperStyle","layout","inlinePreviewStyle","acceptedFile","onValueChange","handleInput","event","triggerFileDialog","remove","ImageIcon","ImageUpload","defaultAvatarUploadStrings","getAvatarUploadRejectionMessage","SIZE_PX","AvatarUploadImpl","sizes","s","list","initials","Camera","X","AvatarUpload"],"sources":["../src/components/base/upload/file-upload.strings.ts","../src/components/base/upload/file-upload.validation.ts","../src/components/base/upload/file-upload.tsx","../src/hooks/use-files.ts","../src/components/base/upload/image-upload.tsx","../src/components/base/upload/avatar-upload.tsx"],"sourcesContent":["export interface FileUploadStrings {\n\tinstruction: string;\n\thelper: string;\n\tbrowse: string;\n\treplace: string;\n\tremove: string;\n\tdragOver: string;\n\terrorsHeading: string;\n\treplaceFileAria: (fileName: string) => string;\n\tremoveFileAria: (fileName: string) => string;\n\tinvalidType: (fileName: string, accept: string) => string;\n\tfileTooSmall: (fileName: string, minimum: string) => string;\n\tfileTooLarge: (fileName: string, maximum: string) => string;\n\ttooManyFiles: (fileName: string, maximum: number) => string;\n\tduplicateFile: (fileName: string) => string;\n\tcustomValidationFailed: (fileName: string) => string;\n}\n\nexport const defaultFileUploadStrings: FileUploadStrings = {\n\tinstruction: 'Drag files here or click to browse',\n\thelper: '',\n\tbrowse: 'Browse files',\n\treplace: 'Replace file',\n\tremove: 'Remove file',\n\tdragOver: 'Release to select',\n\terrorsHeading: 'Some files could not be selected',\n\treplaceFileAria: (fileName) => `Replace ${fileName}`,\n\tremoveFileAria: (fileName) => `Remove ${fileName}`,\n\tinvalidType: (fileName, accept) => `${fileName} is not an accepted file type (${accept}).`,\n\tfileTooSmall: (fileName, minimum) => `${fileName} is smaller than the minimum size of ${minimum}.`,\n\tfileTooLarge: (fileName, maximum) => `${fileName} is larger than the maximum size of ${maximum}.`,\n\ttooManyFiles: (fileName, maximum) => `${fileName} exceeds the limit of ${maximum} files.`,\n\tduplicateFile: (fileName) => `${fileName} has already been selected.`,\n\tcustomValidationFailed: (fileName) => `${fileName} did not pass validation.`,\n};\n\n","import type {\n\tFileUploadRejection,\n\tFileUploadValidator,\n} from './file-upload.types';\nimport type { FileUploadStrings } from './file-upload.strings';\n\ninterface ValidateFileSelectionOptions {\n\tincoming: File[];\n\tcurrent: File[];\n\taccept?: string;\n\tminSizeBytes?: number;\n\tmaxSizeBytes?: number;\n\tmaxFiles: number;\n\tappend: boolean;\n\tvalidateFile?: FileUploadValidator;\n\tformatSize: (bytes: number) => string;\n\tstrings: FileUploadStrings;\n}\n\nexport interface FileSelectionResult {\n\taccepted: File[];\n\tnextFiles: File[];\n\trejections: FileUploadRejection[];\n}\n\nfunction fileFingerprint(file: File) {\n\treturn `${file.name}\\u0000${file.size}\\u0000${file.type}\\u0000${file.lastModified}`;\n}\n\nfunction fileMatchesAccept(file: File, accept?: string) {\n\tif (!accept?.trim()) return true;\n\n\tconst fileName = file.name.toLowerCase();\n\tconst fileType = file.type.toLowerCase();\n\treturn accept\n\t\t.split(',')\n\t\t.map((part) => part.trim().toLowerCase())\n\t\t.filter(Boolean)\n\t\t.some((rule) => {\n\t\t\tif (rule.startsWith('.')) return fileName.endsWith(rule);\n\t\t\tif (rule.endsWith('/*')) return fileType.startsWith(rule.slice(0, -1));\n\t\t\treturn fileType === rule;\n\t\t});\n}\n\nfunction validateOneFile(\n\tfile: File,\n\toptions: Pick<\n\t\tValidateFileSelectionOptions,\n\t\t'accept' | 'minSizeBytes' | 'maxSizeBytes' | 'validateFile' | 'formatSize' | 'strings'\n\t>,\n): FileUploadRejection | undefined {\n\tconst { accept, minSizeBytes, maxSizeBytes, validateFile, formatSize, strings } = options;\n\n\tif (!fileMatchesAccept(file, accept)) {\n\t\treturn {\n\t\t\tfile,\n\t\t\tcode: 'invalid-type',\n\t\t\tmessage: strings.invalidType(file.name, accept ?? ''),\n\t\t};\n\t}\n\tif (minSizeBytes !== undefined && file.size < minSizeBytes) {\n\t\treturn {\n\t\t\tfile,\n\t\t\tcode: 'too-small',\n\t\t\tmessage: strings.fileTooSmall(file.name, formatSize(minSizeBytes)),\n\t\t};\n\t}\n\tif (maxSizeBytes !== undefined && file.size > maxSizeBytes) {\n\t\treturn {\n\t\t\tfile,\n\t\t\tcode: 'too-large',\n\t\t\tmessage: strings.fileTooLarge(file.name, formatSize(maxSizeBytes)),\n\t\t};\n\t}\n\tif (validateFile) {\n\t\tlet result: boolean | string;\n\t\ttry {\n\t\t\tresult = validateFile(file);\n\t\t} catch {\n\t\t\tresult = false;\n\t\t}\n\t\tif (result !== true) {\n\t\t\treturn {\n\t\t\t\tfile,\n\t\t\t\tcode: 'custom',\n\t\t\t\tmessage: typeof result === 'string'\n\t\t\t\t\t? result\n\t\t\t\t\t: strings.customValidationFailed(file.name),\n\t\t\t};\n\t\t}\n\t}\n\n\treturn undefined;\n}\n\nexport function validateFileSelection({\n\tincoming,\n\tcurrent,\n\taccept,\n\tminSizeBytes,\n\tmaxSizeBytes,\n\tmaxFiles,\n\tappend,\n\tvalidateFile,\n\tformatSize,\n\tstrings,\n}: ValidateFileSelectionOptions): FileSelectionResult {\n\tconst nextFiles = append ? [...current] : [];\n\tconst fingerprints = new Set(nextFiles.map(fileFingerprint));\n\tconst accepted: File[] = [];\n\tconst rejections: FileUploadRejection[] = [];\n\n\tfor (const file of incoming) {\n\t\tconst validationRejection = validateOneFile(file, {\n\t\t\taccept,\n\t\t\tminSizeBytes,\n\t\t\tmaxSizeBytes,\n\t\t\tvalidateFile,\n\t\t\tformatSize,\n\t\t\tstrings,\n\t\t});\n\t\tif (validationRejection) {\n\t\t\trejections.push(validationRejection);\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst fingerprint = fileFingerprint(file);\n\t\tif (fingerprints.has(fingerprint)) {\n\t\t\trejections.push({\n\t\t\t\tfile,\n\t\t\t\tcode: 'duplicate',\n\t\t\t\tmessage: strings.duplicateFile(file.name),\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tif (nextFiles.length >= maxFiles) {\n\t\t\trejections.push({\n\t\t\t\tfile,\n\t\t\t\tcode: 'too-many',\n\t\t\t\tmessage: strings.tooManyFiles(file.name, maxFiles),\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\n\t\taccepted.push(file);\n\t\tnextFiles.push(file);\n\t\tfingerprints.add(fingerprint);\n\t}\n\n\treturn { accepted, nextFiles, rejections };\n}\n","/**\n * FileUpload — controlled or uncontrolled local-file selection with validation.\n * The component never transfers files; consumers own upload/network behavior.\n */\nimport {\n\tforwardRef,\n\tuseCallback,\n\tuseLayoutEffect,\n\tuseId,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n\ttype ForwardedRef,\n\ttype MutableRefObject,\n} from 'react';\nimport {\n\tTrash2Icon,\n\tTriangleAlert,\n\tUploadIcon,\n} from 'lucide-react';\n\nimport { Button } from '../buttons';\nimport { Alert, AlertDescription, AlertTitle } from '../feedback';\nimport {\n\tItemGroup,\n} from '../item';\nimport { Attachment, AttachmentMedia, AttachmentContent, AttachmentTitle, AttachmentDescription, AttachmentActions, AttachmentFileIcon } from '../attachment';\nimport { FileSize, formatFileSize } from '../../primitives';\nimport { Text } from '../../typography';\nimport { useStrings } from '../../../lib/strings';\nimport { useFormattingConfig, useDensityConfig, type ComponentScale } from '../../../lib/ui-provider';\nimport { resolveComponentScale } from '../../../lib/ui-provider/scale';\nimport { cn } from '../../../lib/utils';\n\nimport { Dropzone } from './dropzone';\nimport {\n\tFilePickerInput,\n\ttype FilePickerNativeInputProps,\n} from './file-picker-input';\nimport {\n\tdefaultFileUploadStrings,\n\ttype FileUploadStrings,\n} from './file-upload.strings';\nimport type {\n\tFileUploadRejection,\n\tMultipleFileUploadProps,\n\tSingleFileUploadProps,\n} from './file-upload.types';\nimport { validateFileSelection } from './file-upload.validation';\nimport { useFileDropTarget } from './use-file-drop-target';\nimport { uploadDropTargetRecipes } from './upload.recipes';\n\n/** Public discriminated single/multiple contract, declared here for docgen discoverability. */\nexport type FileUploadProps = SingleFileUploadProps | MultipleFileUploadProps;\n\nfunction hasOwnValue(props: FileUploadProps) {\n\treturn Object.prototype.hasOwnProperty.call(props, 'value');\n}\n\nfunction normalizeMaximum(value: number | undefined) {\n\tif (value === undefined) return Number.MAX_SAFE_INTEGER;\n\tif (!Number.isFinite(value)) return Number.MAX_SAFE_INTEGER;\n\treturn Math.max(1, Math.floor(value));\n}\n\nfunction fileKey(file: File, index: number) {\n\treturn `${file.name}-${file.size}-${file.type}-${file.lastModified}-${index}`;\n}\n\nfunction assignInputRef(\n\tnode: HTMLInputElement | null,\n\tlocalRef: MutableRefObject<HTMLInputElement | null>,\n\tforwardedRef: ForwardedRef<HTMLInputElement>,\n) {\n\tlocalRef.current = node;\n\tif (typeof forwardedRef === 'function') forwardedRef(node);\n\telse if (forwardedRef) forwardedRef.current = node;\n}\n\ninterface SelectedFileRowProps {\n\tfile: File;\n\tindex: number;\n\tdisabled: boolean;\n\tsize: ComponentScale;\n\tlocale?: string;\n\tstrings: FileUploadStrings;\n\tshowReplace: boolean;\n\tonReplace: () => void;\n\tonRemove: (index: number) => void;\n}\n\nfunction SelectedFileRow({\n\tfile,\n\tindex,\n\tdisabled,\n\tsize,\n\tlocale,\n\tstrings,\n\tshowReplace,\n\tonReplace,\n\tonRemove,\n}: SelectedFileRowProps) {\n\tconst replaceLabel = strings.replaceFileAria(file.name);\n\tconst removeLabel = strings.removeFileAria(file.name);\n\n\treturn (\n\t\t<Attachment\n\t\t\tvariant=\"outline\"\n\t\t\tsize={size}\n\t\t\tclassName=\"file-upload--file flex-nowrap bg-card text-card-foreground\"\n\t\t>\n\t\t\t<AttachmentMedia variant=\"icon\" className=\"file-upload--file-media self-center group-has-data-[slot=item-description]/item:self-center\">\n\t\t\t\t<AttachmentFileIcon name={file.name} />\n\t\t\t</AttachmentMedia>\n\t\t\t<AttachmentContent className=\"file-upload--file-content min-w-0\">\n\t\t\t\t<AttachmentTitle className=\"file-upload--file-name truncate\" title={file.name}>\n\t\t\t\t\t{file.name}\n\t\t\t\t</AttachmentTitle>\n\t\t\t\t<AttachmentDescription className=\"file-upload--file-size\" clamp={1}>\n\t\t\t\t\t<FileSize\n\t\t\t\t\t\tvalue={file.size}\n\t\t\t\t\t\tlocale={locale}\n\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\talign=\"left\"\n\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t/>\n\t\t\t\t</AttachmentDescription>\n\t\t\t</AttachmentContent>\n\t\t\t<AttachmentActions className=\"file-upload--actions gap-space-xs\">\n\t\t\t\t{showReplace && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\ttone=\"secondary\"\n\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\tsize=\"sm\" iconOnly\n\t\t\t\t\t\ticon={UploadIcon}\n\t\t\t\t\t\taria-label={replaceLabel}\n\t\t\t\t\t\ttitle={replaceLabel}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\tonClick={onReplace}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Text tag=\"span\" size=\"inherit\" className=\"sr-only\">\n\t\t\t\t\t\t\t{strings.replace}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</Button>\n\t\t\t\t)}\n\t\t\t\t{/* Quiet at rest like the replace action; the destructive tone marks the\n\t\t\t\t remove action only once it is hovered or focused. */}\n\t\t\t\t<Button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\ttone=\"secondary\"\n\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\tsize=\"sm\" iconOnly\n\t\t\t\t\ticon={Trash2Icon}\n\t\t\t\t\taria-label={removeLabel}\n\t\t\t\t\ttitle={removeLabel}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tonClick={() => onRemove(index)}\n\t\t\t\t\tclassName=\"file-upload--remove text-muted-foreground hover:text-destructive focus-visible:text-destructive\"\n\t\t\t\t>\n\t\t\t\t\t<Text tag=\"span\" size=\"inherit\" className=\"sr-only\">\n\t\t\t\t\t\t{strings.remove}\n\t\t\t\t\t</Text>\n\t\t\t\t</Button>\n\t\t\t</AttachmentActions>\n\t\t</Attachment>\n\t);\n}\n\nfunction FileUploadImpl(\n\tprops: FileUploadProps,\n\tforwardedRef: ForwardedRef<HTMLInputElement>,\n) {\n\tconst {\n\t\taccept,\n\t\tdisabled = false,\n\t\tinvalid = false,\n\t\tsize: sizeProp,\n\t\tminSizeBytes,\n\t\tmaxSizeBytes,\n\t\tvalidateFile,\n\t\tonRejectedFiles,\n\t\tclassName,\n\t\tstrings: stringsProp,\n\t\tmultiple = false,\n\t\tvalue: _value,\n\t\tdefaultValue: _defaultValue,\n\t\tonValueChange: _onValueChange,\n\t\tselectionMode: _selectionMode,\n\t\tmaxFiles: _maxFiles,\n\t\t'aria-describedby': ariaDescribedBy,\n\t\t'aria-invalid': nativeAriaInvalid,\n\t\t...nativeInputProps\n\t} = props;\n\tconst strings = useStrings(defaultFileUploadStrings, stringsProp);\n\tconst { defaultScale } = useDensityConfig();\n\tconst { locale } = useFormattingConfig();\n\tconst size = resolveComponentScale(sizeProp, defaultScale);\n\tconst controlled = hasOwnValue(props);\n\tconst [uncontrolledFiles, setUncontrolledFiles] = useState<File[]>(() => {\n\t\tif (props.multiple) return [...(props.defaultValue ?? [])];\n\t\treturn props.defaultValue ? [props.defaultValue] : [];\n\t});\n\tconst [rejections, setRejections] = useState<FileUploadRejection[]>([]);\n\tconst inputRef = useRef<HTMLInputElement | null>(null);\n\tconst rootRef = useRef<HTMLDivElement | null>(null);\n\tconst continueFocus = useRef(false);\n\tconst pickerWasFocused = useRef(false);\n\tconst generatedId = useId();\n\n\tconst files = useMemo(() => {\n\t\tif (!controlled) return uncontrolledFiles;\n\t\tif (props.multiple) return props.value ?? [];\n\t\treturn props.value ? [props.value] : [];\n\t}, [controlled, props.multiple, props.value, uncontrolledFiles]);\n\tuseLayoutEffect(() => {\n\t\tif (!continueFocus.current) return;\n\t\tconst target = rootRef.current?.querySelector<HTMLElement>('.file-upload--actions button, .file-upload--dropzone input[type=file], .file-upload--dropzone button');\n\t\tif (target) {\n\t\t\ttarget.focus();\n\t\t\tcontinueFocus.current = false;\n\t\t}\n\t}, [files]);\n\tconst multipleProps = props.multiple ? props as MultipleFileUploadProps : undefined;\n\tconst maxFiles = multiple ? normalizeMaximum(multipleProps?.maxFiles) : 1;\n\tconst append = multiple && (multipleProps?.selectionMode ?? 'append') === 'append';\n\tconst errorId = `${nativeInputProps.id ?? `file-upload-${generatedId}`}-errors`;\n\tconst describedBy = [ariaDescribedBy, rejections.length > 0 ? errorId : undefined]\n\t\t.filter(Boolean)\n\t\t.join(' ') || undefined;\n\tconst hasInvalidState = invalid || rejections.length > 0;\n\n\tconst commitFiles = useCallback((nextFiles: File[]) => {\n\t\tif (!controlled) setUncontrolledFiles(nextFiles);\n\t\tif (props.multiple) {\n\t\t\tprops.onValueChange?.(nextFiles);\n\t\t} else {\n\t\t\tconst nextFile = nextFiles[0];\n\t\t\tprops.onValueChange?.(nextFile);\n\t\t}\n\t}, [controlled, props]);\n\n\tconst formatSize = useCallback((bytes: number) => (\n\t\tformatFileSize(bytes, { locale }) ?? `${bytes} B`\n\t), [locale]);\n\n\tconst handleFiles = useCallback((incoming: File[]) => {\n\t\tif (disabled || incoming.length === 0) return false;\n\t\tconst result = validateFileSelection({\n\t\t\tincoming,\n\t\t\tcurrent: files,\n\t\t\taccept,\n\t\t\tminSizeBytes,\n\t\t\tmaxSizeBytes,\n\t\t\tmaxFiles,\n\t\t\tappend,\n\t\t\tvalidateFile,\n\t\t\tformatSize,\n\t\t\tstrings,\n\t\t});\n\n\t\tsetRejections(result.rejections);\n\t\tif (result.rejections.length > 0) onRejectedFiles?.(result.rejections);\n\t\tif (result.accepted.length === 0) return false;\n\t\tcontinueFocus.current = !multiple && (pickerWasFocused.current || Boolean(rootRef.current?.contains(document.activeElement)));\n\t\tpickerWasFocused.current = false;\n\t\tcommitFiles(result.nextFiles);\n\t\treturn result.rejections.length === 0;\n\t}, [\n\t\taccept,\n\t\tappend,\n\t\tcommitFiles,\n\t\tdisabled,\n\t\tmultiple,\n\t\tfiles,\n\t\tformatSize,\n\t\tmaxFiles,\n\t\tmaxSizeBytes,\n\t\tminSizeBytes,\n\t\tonRejectedFiles,\n\t\tstrings,\n\t\tvalidateFile,\n\t]);\n\n\tconst clearNativeInput = useCallback(() => {\n\t\tif (inputRef.current) inputRef.current.value = '';\n\t}, []);\n\n\tconst handleRemove = useCallback((index: number) => {\n\t\tif (disabled) return;\n\t\tsetRejections([]);\n\t\tclearNativeInput();\n\t\tcontinueFocus.current = Boolean(rootRef.current?.contains(document.activeElement));\n\t\tcommitFiles(files.filter((_, fileIndex) => fileIndex !== index));\n\t}, [clearNativeInput, commitFiles, disabled, files]);\n\n\tconst openPicker = useCallback(() => {\n\t\tif (!disabled) {\n\t\t\tpickerWasFocused.current = Boolean(rootRef.current?.contains(document.activeElement));\n\t\t\tinputRef.current?.click();\n\t\t}\n\t}, [disabled]);\n\n\tconst { isDragging, dropTargetProps } = useFileDropTarget({\n\t\tdisabled,\n\t\tonFiles: handleFiles,\n\t});\n\n\tconst inputProps: FilePickerNativeInputProps = {\n\t\t...(nativeInputProps as FilePickerNativeInputProps),\n\t\taccept,\n\t\tmultiple,\n\t\tdisabled,\n\t\t'aria-describedby': describedBy,\n\t\t'aria-invalid': hasInvalidState ? true : nativeAriaInvalid,\n\t};\n\n\tconst picker = (\n\t\t<Dropzone\n\t\t\tref={(node) => assignInputRef(node, inputRef, forwardedRef)}\n\t\t\tonDrop={handleFiles}\n\t\t\taccept={accept}\n\t\t\tmultiple={multiple}\n\t\t\tdisabled={disabled}\n\t\t\tinvalid={hasInvalidState}\n\t\t\tsize={size}\n\t\t\tclassName=\"file-upload--dropzone\"\n\t\t\tinputProps={inputProps}\n\t\t\tstrings={{\n\t\t\t\tinstruction: strings.instruction,\n\t\t\t\thelper: strings.helper,\n\t\t\t\tdragOver: strings.dragOver,\n\t\t\t}}\n\t\t>\n\t\t\t<Button\n\t\t\t\ttype=\"button\"\n\t\t\t\ttone=\"secondary\"\n\t\t\t\tbuttonStyle=\"outline\"\n\t\t\t\tsize={size}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tclassName=\"disabled:opacity-100 aria-disabled:opacity-100\"\n\t\t\t\tonClick={openPicker}\n\t\t\t>\n\t\t\t\t{strings.browse}\n\t\t\t</Button>\n\t\t</Dropzone>\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tref={rootRef}\n\t\t\tdata-disabled={disabled || undefined}\n\t\t\tdata-invalid={hasInvalidState || undefined}\n\t\t\tclassName={cn('file-upload--component grid gap-space-md', className)}\n\t\t>\n\t\t\t{(multiple || files.length === 0) && picker}\n\n\t\t\t{!multiple && files[0] && (\n\t\t\t\t<div\n\t\t\t\t\t{...dropTargetProps}\n\t\t\t\t\tdata-dragging={isDragging || undefined}\n\t\t\t\t\tdata-invalid={hasInvalidState || undefined}\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'file-upload--selected rounded-radius transition-shadow',\n\t\t\t\t\t\thasInvalidState && '[&_.file-upload--file]:border-destructive',\n\t\t\t\t\t\t!disabled && isDragging && (\n\t\t\t\t\t\t\thasInvalidState\n\t\t\t\t\t\t\t\t? uploadDropTargetRecipes.invalidDraggingRing\n\t\t\t\t\t\t\t\t: uploadDropTargetRecipes.draggingRing\n\t\t\t\t\t\t),\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t<FilePickerInput\n\t\t\t\t\t\t{...inputProps}\n\t\t\t\t\t\tref={(node) => assignInputRef(node, inputRef, forwardedRef)}\n\t\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\t\tclassName=\"file-upload--input\"\n\t\t\t\t\t\tonFiles={handleFiles}\n\t\t\t\t\t/>\n\t\t\t\t\t<SelectedFileRow\n\t\t\t\t\t\tfile={files[0]}\n\t\t\t\t\t\tindex={0}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\tsize={size}\n\t\t\t\t\t\tlocale={locale}\n\t\t\t\t\t\tstrings={strings}\n\t\t\t\t\t\tshowReplace\n\t\t\t\t\t\tonReplace={openPicker}\n\t\t\t\t\t\tonRemove={handleRemove}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{multiple && files.length > 0 && (\n\t\t\t\t<ItemGroup className=\"file-upload--files\">\n\t\t\t\t\t{files.map((file, index) => (\n\t\t\t\t\t\t<SelectedFileRow\n\t\t\t\t\t\t\tkey={fileKey(file, index)}\n\t\t\t\t\t\t\tfile={file}\n\t\t\t\t\t\t\tindex={index}\n\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\tsize={size}\n\t\t\t\t\t\t\tlocale={locale}\n\t\t\t\t\t\t\tstrings={strings}\n\t\t\t\t\t\t\tshowReplace={false}\n\t\t\t\t\t\t\tonReplace={openPicker}\n\t\t\t\t\t\t\tonRemove={handleRemove}\n\t\t\t\t\t\t/>\n\t\t\t\t\t))}\n\t\t\t\t</ItemGroup>\n\t\t\t)}\n\n\t\t\t{rejections.length > 0 && (\n\t\t\t\t<Alert\n\t\t\t\t\tid={errorId}\n\t\t\t\t\ttone=\"destructive\"\n\t\t\t\t\taria-live=\"polite\"\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'file-upload--errors',\n\t\t\t\t\t\tsize === 'sm' && 'p-surface-xs',\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t<TriangleAlert aria-hidden=\"true\" />\n\t\t\t\t\t<AlertTitle>{strings.errorsHeading}</AlertTitle>\n\t\t\t\t\t<AlertDescription>\n\t\t\t\t\t\t<ul className=\"m-0 p-0 list-none grid gap-space-2xs\">\n\t\t\t\t\t\t\t{rejections.map((rejection, index) => (\n\t\t\t\t\t\t\t\t<li\n\t\t\t\t\t\t\t\t\tkey={`${rejection.code}-${fileKey(rejection.file, index)}`}\n\t\t\t\t\t\t\t\t\tclassName=\"file-upload--error\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" type=\"error\">\n\t\t\t\t\t\t\t\t\t\t{rejection.message}\n\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</AlertDescription>\n\t\t\t\t</Alert>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\n/** Selects and validates local File values without performing network uploads. */\nexport const FileUpload = forwardRef<HTMLInputElement, FileUploadProps>(FileUploadImpl);\nFileUpload.displayName = 'FileUpload';\n\nexport { defaultFileUploadStrings };\nexport type { FileUploadStrings };\nexport type {\n\tFileUploadRejection,\n\tFileUploadRejectionCode,\n\tFileUploadCommonProps,\n\tFileUploadSelectionMode,\n\tFileUploadValidator,\n\tMultipleFileUploadProps,\n\tSingleFileUploadProps,\n} from './file-upload.types';\n","import { useCallback, useRef, useState } from 'react';\n\nexport type FileRejectionCode =\n\t| 'invalid-type'\n\t| 'too-small'\n\t| 'too-large'\n\t| 'too-many'\n\t| 'duplicate'\n\t| 'custom';\n\nexport interface FileRejectionDetails {\n\textension?: string;\n\tminimumBytes?: number;\n\tmaximumBytes?: number;\n\tmaximumFiles?: number;\n\t/** Consumer-provided custom copy. The hook never manufactures a message. */\n\tcustomMessage?: string;\n}\n\nexport interface FileRejection {\n\tfile: File;\n\tcode: FileRejectionCode;\n\tdetails: FileRejectionDetails;\n}\n\nexport interface FileValidationRules {\n\tmaxSize?: number;\n\tminSize?: number;\n\tallowedExtensions?: string[];\n\tmaxFiles?: number;\n\tcustomValidator?: (file: File) => boolean | string;\n}\n\nexport interface FileMeta {\n\tid: string;\n\tfile: File;\n\tname: string;\n\tsize: number;\n\tformattedSize: string;\n\ttype: string;\n\textension: string;\n\tlastModified: number;\n}\n\nexport interface FileProcessingResult {\n\taccepted: FileMeta[];\n\tfiles: FileMeta[];\n\trejections: FileRejection[];\n}\n\nexport interface UseFilesReturn {\n\tfiles: FileMeta[];\n\taddFiles: (incoming: FileList | File[]) => FileProcessingResult;\n\tsetFiles: (incoming: FileList | File[]) => FileProcessingResult;\n\tremove: (id: string) => void;\n\tremoveAll: () => void;\n\tformatSize: (bytes: number) => string;\n\t/** Compatibility lookup keyed by file name. Values are typed details, never copy. */\n\tvalidationErrors: Record<string, FileRejection>;\n\trejections: FileRejection[];\n}\n\nconst FILE_SIZE_UNITS = ['B', 'KB', 'MB', 'GB', 'TB'] as const;\n\nfunction defaultFormatSize(bytes: number): string {\n\tif (!Number.isFinite(bytes) || bytes <= 0) return '0 B';\n\tconst unitIndex = Math.min(\n\t\tMath.floor(Math.log(bytes) / Math.log(1024)),\n\t\tFILE_SIZE_UNITS.length - 1,\n\t);\n\tconst value = bytes / 1024 ** unitIndex;\n\tconst formattedValue = unitIndex === 0\n\t\t? value.toFixed(0)\n\t\t: Number(value.toFixed(1)).toString();\n\treturn `${formattedValue} ${FILE_SIZE_UNITS[unitIndex]}`;\n}\n\nlet idCounter = 0;\nfunction generateId(): string {\n\tconst timestamp = Date.now().toString(36);\n\tconst count = (idCounter++).toString(36);\n\treturn `${timestamp}-${count}`;\n}\n\nfunction getExtension(file: File) {\n\treturn file.name.split('.').pop()?.toLowerCase() ?? '';\n}\n\nfunction getFingerprint(file: File) {\n\treturn `${file.name}\\u0000${file.size}\\u0000${file.type}\\u0000${file.lastModified}`;\n}\n\nfunction createMeta(file: File): FileMeta {\n\treturn {\n\t\tid: generateId(),\n\t\tfile,\n\t\tname: file.name,\n\t\tsize: file.size,\n\t\tformattedSize: defaultFormatSize(file.size),\n\t\ttype: file.type,\n\t\textension: getExtension(file),\n\t\tlastModified: file.lastModified,\n\t};\n}\n\nfunction validateFile(\n\tfile: File,\n\trules?: FileValidationRules,\n): FileRejection | undefined {\n\tconst extension = getExtension(file);\n\tif (rules?.minSize !== undefined && file.size < rules.minSize) {\n\t\treturn {\n\t\t\tfile,\n\t\t\tcode: 'too-small',\n\t\t\tdetails: { minimumBytes: rules.minSize },\n\t\t};\n\t}\n\tif (rules?.maxSize !== undefined && file.size > rules.maxSize) {\n\t\treturn {\n\t\t\tfile,\n\t\t\tcode: 'too-large',\n\t\t\tdetails: { maximumBytes: rules.maxSize },\n\t\t};\n\t}\n\tif (\n\t\trules?.allowedExtensions &&\n\t\t!rules.allowedExtensions.some((allowed) => allowed.toLowerCase().replace(/^\\./, '') === extension)\n\t) {\n\t\treturn {\n\t\t\tfile,\n\t\t\tcode: 'invalid-type',\n\t\t\tdetails: { extension },\n\t\t};\n\t}\n\tif (rules?.customValidator) {\n\t\tlet result: boolean | string;\n\t\ttry {\n\t\t\tresult = rules.customValidator(file);\n\t\t} catch {\n\t\t\tresult = false;\n\t\t}\n\t\tif (result !== true) {\n\t\t\treturn {\n\t\t\t\tfile,\n\t\t\t\tcode: 'custom',\n\t\t\t\tdetails: {\n\t\t\t\t\tcustomMessage: typeof result === 'string' && result.length > 0\n\t\t\t\t\t\t? result\n\t\t\t\t\t\t: undefined,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t}\n\treturn undefined;\n}\n\nfunction toErrorMap(rejections: FileRejection[]) {\n\treturn Object.fromEntries(rejections.map((rejection) => [rejection.file.name, rejection]));\n}\n\nexport function useFiles(rules?: FileValidationRules): UseFilesReturn {\n\tconst [files, setFilesState] = useState<FileMeta[]>([]);\n\tconst filesRef = useRef<FileMeta[]>([]);\n\tconst [rejections, setRejections] = useState<FileRejection[]>([]);\n\n\tconst formatSize = useCallback(defaultFormatSize, []);\n\n\tconst processFiles = useCallback((incoming: FileList | File[], replace: boolean) => {\n\t\tconst incomingFiles = Array.isArray(incoming) ? incoming : Array.from(incoming);\n\t\tconst previousFiles = filesRef.current;\n\t\tlet nextFiles = replace ? [] : [...previousFiles];\n\t\tconst fingerprints = new Set(nextFiles.map((meta) => getFingerprint(meta.file)));\n\t\tconst accepted: FileMeta[] = [];\n\t\tconst nextRejections: FileRejection[] = [];\n\n\t\tfor (const file of incomingFiles) {\n\t\t\tconst fingerprint = getFingerprint(file);\n\t\t\tif (fingerprints.has(fingerprint)) {\n\t\t\t\tnextRejections.push({ file, code: 'duplicate', details: {} });\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst rejection = validateFile(file, rules);\n\t\t\tif (rejection) {\n\t\t\t\tnextRejections.push(rejection);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (rules?.maxFiles !== undefined && nextFiles.length >= rules.maxFiles) {\n\t\t\t\tnextRejections.push({\n\t\t\t\t\tfile,\n\t\t\t\t\tcode: 'too-many',\n\t\t\t\t\tdetails: { maximumFiles: rules.maxFiles },\n\t\t\t\t});\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst meta = createMeta(file);\n\t\t\taccepted.push(meta);\n\t\t\tnextFiles.push(meta);\n\t\t\tfingerprints.add(fingerprint);\n\t\t}\n\t\tif (replace && accepted.length === 0 && nextRejections.length > 0) {\n\t\t\tnextFiles = previousFiles;\n\t\t}\n\n\t\tfilesRef.current = nextFiles;\n\t\tsetFilesState(nextFiles);\n\t\tsetRejections(nextRejections);\n\t\treturn { accepted, files: nextFiles, rejections: nextRejections };\n\t}, [rules]);\n\n\tconst addFiles = useCallback(\n\t\t(incoming: FileList | File[]) => processFiles(incoming, false),\n\t\t[processFiles],\n\t);\n\tconst setFiles = useCallback(\n\t\t(incoming: FileList | File[]) => processFiles(incoming, true),\n\t\t[processFiles],\n\t);\n\tconst remove = useCallback((id: string) => {\n\t\tconst nextFiles = filesRef.current.filter((file) => file.id !== id);\n\t\tfilesRef.current = nextFiles;\n\t\tsetFilesState(nextFiles);\n\t}, []);\n\tconst removeAll = useCallback(() => {\n\t\tfilesRef.current = [];\n\t\tsetFilesState([]);\n\t\tsetRejections([]);\n\t}, []);\n\n\treturn {\n\t\tfiles,\n\t\taddFiles,\n\t\tsetFiles,\n\t\tremove,\n\t\tremoveAll,\n\t\tformatSize,\n\t\tvalidationErrors: toErrorMap(rejections),\n\t\trejections,\n\t};\n}\n","/**\n * ImageUpload — preview-first image picker. Drops in a file → renders an img\n * preview with a configurable aspect ratio and fit mode. Layout can be\n * stacked (preview on top, controls below) or inline (preview alongside\n * controls). Reflects controlled `value` and reports change via `onValueChange`.\n * Strings overridable for i18n.\n */\nimport { ImageIcon } from 'lucide-react';\nimport React, { useEffect, useId, useMemo, useRef, useState, useCallback } from 'react';\nimport { Button } from '../buttons';\nimport { Text } from '../../typography';\nimport { useFiles, type FileRejection } from '../../../hooks/use-files';\nimport { useStrings, type StringsProp } from '../../../lib/strings';\nimport { cn } from '../../../lib/utils';\nimport { useFileDropTarget } from './use-file-drop-target';\nimport { uploadDropTargetRecipes } from './upload.recipes';\n\nconst MAX_FILE_SIZE_MB = 2;\n\ntype ImageUploadAspectRatio = 'square' | 'standard' | 'widescreen' | 'portrait';\ntype ImageUploadLayout = 'stacked' | 'inline';\ntype ImageUploadFit = 'cover' | 'contain';\n\nconst ASPECT_RATIO_CLASSES: Record<ImageUploadAspectRatio, string> = {\n\t\tsquare: 'aspect-square',\n\t\tstandard: 'aspect-[4/3]',\n\t\twidescreen: 'aspect-[16/9]',\n\t\tportrait: 'aspect-[9/16]',\n};\n\nexport interface ImageUploadStrings {\n\t\tselect: string;\n\t\tchange: string;\n\t\tremove: string;\n\t\tnoSelection: string;\n\t\tkeepCurrent: string;\n\t/** Accessible description for an existing preview without a selected file name. */\n\tpreviewAlt?: string;\n\t\t/** Template for the supports-text. `{ext}` is the comma-separated allowed\n\t\t * extensions; `{size}` is the max-size MB number. */\n\t\tsupportsTemplate: string;\n\tinvalidType: (fileName: string, extension: string) => string;\n\ttooSmall: (fileName: string, minimum: string) => string;\n\ttooLarge: (fileName: string, maximum: string) => string;\n\ttooMany: (fileName: string, maximum: number) => string;\n\tduplicate: (fileName: string) => string;\n\tcustomValidationFailed: (fileName: string) => string;\n\t\t/** Summary line when `multiple` is set and more than one file is selected.\n\t\t * Receives the count of files beyond the displayed one — e.g. `count=3`\n\t\t * for \"+ 3 more files\". Override to swap the English plural-`s` rule\n\t\t * (`'+ ' + count + ' more file' + (count === 1 ? '' : 's')`) for the\n\t\t * consumer locale. */\n\t\tmoreFiles: (count: number) => string;\n}\n\nexport const defaultImageUploadStrings: ImageUploadStrings = {\n\t\tselect: 'Select image',\n\t\tchange: 'Change image',\n\t\tremove: 'Remove',\n\t\tnoSelection: 'No file selected yet.',\n\t\tkeepCurrent: 'Current image stays until you upload a new one.',\n\tpreviewAlt: 'Selected image',\n\t\tsupportsTemplate: 'Supports {ext} files up to {size} MB.',\n\tinvalidType: (fileName, extension) => `${fileName} uses an unsupported .${extension || 'unknown'} file type.`,\n\ttooSmall: (fileName, minimum) => `${fileName} is smaller than ${minimum}.`,\n\ttooLarge: (fileName, maximum) => `${fileName} is larger than ${maximum}.`,\n\ttooMany: (fileName, maximum) => `${fileName} exceeds the limit of ${maximum} images.`,\n\tduplicate: (fileName) => `${fileName} is already selected.`,\n\tcustomValidationFailed: (fileName) => `${fileName} did not pass validation.`,\n\t\tmoreFiles: (count) => `+ ${count} more file${count === 1 ? '' : 's'}`,\n};\n\nfunction getImageUploadRejectionMessage(\n\trejection: FileRejection,\n\tstrings: ImageUploadStrings,\n\tformatSize: (bytes: number) => string,\n) {\n\tconst { file, code, details } = rejection;\n\tswitch (code) {\n\t\tcase 'invalid-type':\n\t\t\treturn strings.invalidType(file.name, details.extension ?? '');\n\t\tcase 'too-small':\n\t\t\treturn strings.tooSmall(file.name, formatSize(details.minimumBytes ?? 0));\n\t\tcase 'too-large':\n\t\t\treturn strings.tooLarge(file.name, formatSize(details.maximumBytes ?? 0));\n\t\tcase 'too-many':\n\t\t\treturn strings.tooMany(file.name, details.maximumFiles ?? 1);\n\t\tcase 'duplicate':\n\t\t\treturn strings.duplicate(file.name);\n\t\tcase 'custom':\n\t\t\treturn details.customMessage ?? strings.customValidationFailed(file.name);\n\t}\n}\n\nexport interface ImageUploadProps {\n\t\t/** Accepted MIME types or extensions, as the native `accept` attribute. */\n\t\taccept?: string;\n\t\t/** Allows more than one file to be chosen. */\n\t\tmultiple?: boolean;\n\t\t/** Selected files. Controlled. */\n\t\tvalue?: File;\n\t\tonValueChange?: (file?: File) => void;\n\t\t/** Disables the control and blocks drops. */\n\t\tdisabled?: boolean;\n\t\t/** Image shown before anything is chosen — an existing upload. */\n\t\tinitialPreviewUrl?: string;\n\t\t/** Aspect ratio the preview is cropped to. */\n\t\taspectRatio?: ImageUploadAspectRatio;\n\t\t/** How the preview fills its frame — cover or contain. */\n\t\tfit?: ImageUploadFit;\n\t\t/** Caps the preview's width. */\n\t\tmaxWidth?: number | string;\n\t\t/** Arrangement of the preview and drop target. */\n\t\tlayout?: ImageUploadLayout;\n\t\t/** Applies the invalid styling. */\n\t\tinvalid?: boolean;\n\t\t/** Override default strings (button labels, helper text, supports template). */\n\t\tstrings?: StringsProp<ImageUploadStrings>;\n}\n\nfunction ImageUploadImpl(\n\t\t{\n\t\taccept = '.png,.jpg,.jpeg,.gif,.svg',\n\t\tmultiple = false,\n\t\tvalue,\n\t\tonValueChange,\n\t\tdisabled,\n\t\tinitialPreviewUrl,\n\t\taspectRatio = 'square',\n\t\tfit = 'cover',\n\t\tmaxWidth,\n\t\tlayout = 'stacked',\n\t\tinvalid,\n\t\tstrings: stringsProp,\n}: ImageUploadProps,\n\t\tforwardedRef: React.ForwardedRef<HTMLInputElement>,\n) {\n\t\tconst strings = useStrings(defaultImageUploadStrings, stringsProp);\n\t\tconst inputId = useId();\n\t\tconst inputRef = useRef<HTMLInputElement | null>(null);\n\n\t\tconst allowedExtensions = useMemo(() => {\n\t\t\t\tif (!accept) {\n\t\t\t\t\t\treturn ['png', 'jpg', 'jpeg', 'gif', 'svg'];\n\t\t\t\t}\n\n\t\t\t\tconst parsed = accept\n\t\t\t\t\t\t.split(',')\n\t\t\t\t\t\t.map((item) => item.trim())\n\t\t\t\t\t\t.map((item) => {\n\t\t\t\t\t\t\t\tif (!item) return null;\n\t\t\t\t\t\t\t\tif (item.startsWith('.')) {\n\t\t\t\t\t\t\t\t\t\treturn item.slice(1).toLowerCase();\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (item.includes('/')) {\n\t\t\t\t\t\t\t\t\t\tconst subtype = item.split('/')[1] ?? '';\n\t\t\t\t\t\t\t\t\t\tif (subtype === '*' || subtype.length === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn subtype.replace(/\\+.*/, '').toLowerCase();\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn item.toLowerCase();\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.filter((ext): ext is string => Boolean(ext));\n\n\t\t\t\tif (parsed.length === 0) {\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\n\t\t\t\treturn Array.from(new Set(parsed));\n\t\t}, [accept]);\n\n\t\tconst fileRules = useMemo(\n\t\t\t\t() => ({\n\t\t\t\t\t\tmaxFiles: multiple ? undefined : 1,\n\t\t\tmaxSize: MAX_FILE_SIZE_MB * 1024 * 1024,\n\t\t\t\t\t\tallowedExtensions,\n\t\t\t\t}),\n\t\t\t\t[multiple, allowedExtensions]\n\t\t);\n\n\t\tconst { files, setFiles, remove, removeAll, formatSize, rejections } = useFiles(fileRules);\n\n\t\t// Reflect controlled value into local preview if provided\n\t\tuseEffect(() => {\n\t\t\t\tif (value) {\n\t\t\t\t\t\tsetFiles([value]);\n\t\t\t\t} else {\n\t\t\t\t\t\tremoveAll();\n\t\t\t\t\t\tif (inputRef.current) {\n\t\t\t\t\t\t\t\tinputRef.current.value = '';\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}, [value, setFiles, removeAll]);\n\n\t\tconst selected = files[0];\n\tconst selectOrChangeButtonLabel = selected ? strings.change : strings.select;\n\t\tconst [filePreviewUrl, setFilePreviewUrl] = useState<string | undefined>(undefined);\n\n\t\tconst acceptedExtensionsLabel = useMemo(() => {\n\t\t\t\tif (!allowedExtensions || allowedExtensions.length === 0) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\treturn allowedExtensions.map((ext) => ext.toUpperCase()).join(', ');\n\t\t}, [allowedExtensions]);\n\n\t\tuseEffect(() => {\n\t\t\t\tconst file = selected?.file ?? value;\n\t\t\t\tif (!file) {\n\t\t\t\t\t\tsetFilePreviewUrl(undefined);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst url = URL.createObjectURL(file);\n\t\t\t\tsetFilePreviewUrl(url);\n\t\t\t\treturn () => URL.revokeObjectURL(url);\n\t\t}, [selected, value]);\n\n\t\tconst previewUrl = filePreviewUrl ?? initialPreviewUrl;\n\t\tconst hasPreview = Boolean(previewUrl);\n\tconst previewAlt = selected?.name ?? strings.previewAlt ?? defaultImageUploadStrings.previewAlt;\n\t\tconst aspectClass = ASPECT_RATIO_CLASSES[aspectRatio] ?? ASPECT_RATIO_CLASSES.square;\n\t\tconst imgFitClass = fit === 'contain' ? 'object-contain p-space-sm' : 'object-cover';\n\t\t// Default max-width caps the preview at a sensible thumbnail size — without\n\t\t// this, an `aspect-square` preview inside a wide form column becomes a\n\t\t// huge square (`w-full` × 1:1 ratio = container width tall). Consumers\n\t\t// can override via the `maxWidth` prop.\n\t\tconst computedMaxWidth = maxWidth ? (typeof maxWidth === 'number' ? `${maxWidth}px` : maxWidth) : '240px';\n\t\tconst wrapperStyle = layout === 'inline' ? undefined : { maxWidth: computedMaxWidth };\n\t\tconst inlinePreviewStyle =\n\t\t\t\tlayout === 'inline'\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\tmaxWidth: maxWidth ? computedMaxWidth : '185px',\n\t\t\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: undefined;\n\n\t\tconst handleFiles = useCallback((incoming: File[]) => {\n\t\t\tif (disabled || incoming.length === 0) return;\n\t\t\tconst result = setFiles(incoming);\n\t\t\tconst acceptedFile = result.accepted[0]?.file;\n\t\t\tif (acceptedFile) onValueChange?.(acceptedFile);\n\t\t}, [disabled, setFiles, onValueChange]);\n\t\tconst handleInput = useCallback((event: React.ChangeEvent<HTMLInputElement>) => {\n\t\t\thandleFiles(Array.from(event.target.files ?? []));\n\t\t}, [handleFiles]);\n\t\tconst { isDragging, dropTargetProps } = useFileDropTarget({ disabled, onFiles: handleFiles });\n\n\t\tconst triggerFileDialog = useCallback(() => {\n\t\t\t\tif (disabled) return;\n\t\t\t\tinputRef.current?.click();\n\t\t}, [disabled]);\n\n\t\tconst handleRemove = useCallback(() => {\n\t\t\t\tif (selected) {\n\t\t\t\t\t\tremove(selected.id);\n\t\t\t\t}\n\t\t\t\tonValueChange?.(undefined);\n\t\t\t\tif (inputRef.current) {\n\t\t\t\t\t\tinputRef.current.value = '';\n\t\t\t\t}\n\t\t}, [selected, remove, onValueChange]);\n\n\t\treturn (\n\t\t\t\t<div className={cn('image-upload--component', 'grid gap-space-md')} style={wrapperStyle}>\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\tref={(node) => { inputRef.current = node; if (typeof forwardedRef === \"function\") forwardedRef(node); else if (forwardedRef) forwardedRef.current = node; }}\n\t\t\t\t\t\t\t\tid={inputId}\n\t\t\t\t\t\t\t\ttype=\"file\"\n\t\t\t\t\t\t\t\tclassName=\"sr-only\"\n\t\t\t\t\t\t\t\t// The visible button is the keyboard affordance; an invisible\n\t\t\t\t\t\t\t\t// second Tab stop would have no focus indicator.\n\t\t\t\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\t\t\t\taria-label={selectOrChangeButtonLabel}\n\t\t\t\t\t\t\t\taccept={accept}\n\t\t\t\t\t\t\t\tmultiple={multiple}\n\t\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\t\tonChange={handleInput}\n\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t<div className={cn(layout === 'inline' ? 'flex flex-wrap items-start gap-space-xl' : 'grid gap-space-md')}>\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t{...dropTargetProps}\n\t\t\t\t\t\t\t\t\t\tdata-dragging={isDragging || undefined}\n\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t'relative overflow-hidden rounded-surface border transition-colors',\n\t\t\t\t\t\t\t\t\t\t\t\tlayout === 'inline' ? 'flex-shrink-0 w-full' : 'w-full',\n\t\t\t\t\t\t\t\t\t\t\t\taspectClass,\n\t\t\t\t\t\t\t\t\t\t\t\thasPreview\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? 'border-border bg-muted'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Same dashed control boundary as Dropzone and AvatarUpload.\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'border-dashed bg-background text-muted-foreground',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tuploadDropTargetRecipes.idle,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\tinvalid && uploadDropTargetRecipes.invalid,\n\t\t\t\t\t\t\t\t\t\t\t\t!disabled && isDragging && uploadDropTargetRecipes.dragging\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\tstyle={inlinePreviewStyle}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{hasPreview && previewUrl ? (\n\t\t\t\t\t\t\t\t\t\t\t\t<img\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsrc={previewUrl}\n\t\t\t\t\t\t\t\t\t\t\t\talt={previewAlt}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn('absolute inset-0 box-border h-full w-full', imgFitClass)}\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"absolute inset-0 flex items-center justify-center\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ImageIcon aria-hidden className=\"size-icon-lg\" />\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t<div className={cn('grid gap-space-sm', layout === 'inline' && 'flex-1 min-w-0 basis-40')}>\n\t\t\t\t\t\t\t\t\t\t<div className=\"flex flex-wrap items-center gap-space-md\">\n\t <Button\n\t type=\"button\"\n\t tone=\"secondary\"\n\t buttonStyle=\"outline\"\n\t onClick={triggerFileDialog}\n\t disabled={disabled}\n\t >\n\t {selectOrChangeButtonLabel}\n\t </Button>\n\t\t\t\t\t\t\t\t\t\t\t\t{!selected && !!hasPreview && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\">{strings.keepCurrent}</Text>\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t\t\t{!!acceptedExtensionsLabel && (\n\t\t\t\t\t\t\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{strings.supportsTemplate\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.replace('{ext}', acceptedExtensionsLabel)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.replace('{size}', String(MAX_FILE_SIZE_MB))}\n\t\t\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t\t\t\t{!!selected && (\n\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"grid gap-space-2xs\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Text weight=\"medium\" title={selected.name} className=\"truncate\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{selected.name}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{selected.formattedSize}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{!!multiple && files.length > 1 && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{strings.moreFiles(files.length - 1)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttone=\"destructive\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={handleRemove}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"justify-self-start\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{strings.remove}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t\t\t\t{!selected && !hasPreview && (\n\t\t\t\t\t\t\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\">{strings.noSelection}</Text>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t{/* Validation errors */}\n\t\t\t\t\t\t{rejections.length > 0 && (\n\t\t\t\t\t\t\t\t<div className=\"image-upload--errors grid gap-space-2xs\" role=\"alert\" aria-live=\"polite\">\n\t\t\t\t\t\t\t\t\t\t{rejections.map((rejection, index) => (\n\t\t\t\t\t\t\t\t\t\t\t\t<Text key={`${rejection.file.name}-${rejection.code}-${index}`} size=\"xs\" type=\"error\">\n\t\t\t\t\t\t\t{getImageUploadRejectionMessage(rejection, strings, formatSize)}\n\t\t\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t);\n}\n\nconst ImageUpload = React.forwardRef<HTMLInputElement, ImageUploadProps>(ImageUploadImpl);\nImageUpload.displayName = 'ImageUpload';\n\nexport { ImageUpload };\n","import * as React from 'react';\n/**\n * AvatarUpload — round avatar picker. Click or drag a file onto the circle to\n * upload; an X button (visible on hover) clears the selection. Honours\n * controlled `value` (a `File`), and reflects an existing `initialPreviewUrl`\n * when no file is staged. Use for profile photos / org logos where the\n * preview is small and the only meaningful interaction is replace + clear.\n *\n * Pair with a separate \"remove from server\" handler if your data model\n * needs to delete a previously persisted image (this component only manages\n * the local staged file).\n *\n * Strings overridable for i18n.\n */\nimport { useCallback, useEffect, useId, useMemo, useRef, useState} from 'react';\nimport type { ChangeEvent, ForwardedRef} from 'react';\nimport { Camera, X } from 'lucide-react';\nimport { Text } from '../../typography';\nimport { useFiles, type FileRejection } from '../../../hooks/use-files';\nimport { useStrings, type StringsProp } from '../../../lib/strings';\nimport { useDensityConfig, type ComponentScale } from '../../../lib/ui-provider';\nimport { resolveComponentScale } from '../../../lib/ui-provider/scale';\nimport { cn } from '../../../lib/utils';\nimport { fieldAffordanceRecipes } from '../../../lib/field-affordance-recipes';\nimport { useFileDropTarget } from './use-file-drop-target';\nimport { uploadDropTargetRecipes } from './upload.recipes';\n\nexport type AvatarUploadSize = ComponentScale;\n\nexport interface AvatarUploadStrings {\n\tchange: string;\n\tremove: string;\n\thint: string;\n\tdragOver: string;\n\tinvalidType: (fileName: string, extension: string) => string;\n\ttooSmall: (fileName: string, minimum: string) => string;\n\ttooLarge: (fileName: string, maximum: string) => string;\n\ttooMany: (fileName: string, maximum: number) => string;\n\tduplicate: (fileName: string) => string;\n\tcustomValidationFailed: (fileName: string) => string;\n}\n\nexport const defaultAvatarUploadStrings: AvatarUploadStrings = {\n\tchange: 'Change photo',\n\tremove: 'Remove photo',\n\thint: 'Click or drop an image',\n\tdragOver: 'Drop image to upload',\n\tinvalidType: (fileName, extension) => `${fileName} uses an unsupported .${extension || 'unknown'} file type.`,\n\ttooSmall: (fileName, minimum) => `${fileName} is smaller than ${minimum}.`,\n\ttooLarge: (fileName, maximum) => `${fileName} is larger than ${maximum}.`,\n\ttooMany: (fileName, maximum) => `${fileName} exceeds the limit of ${maximum} images.`,\n\tduplicate: (fileName) => `${fileName} is already selected.`,\n\tcustomValidationFailed: (fileName) => `${fileName} did not pass validation.`,\n};\n\nfunction getAvatarUploadRejectionMessage(\n\trejection: FileRejection,\n\tstrings: AvatarUploadStrings,\n\tformatSize: (bytes: number) => string,\n) {\n\tconst { file, code, details } = rejection;\n\tswitch (code) {\n\t\tcase 'invalid-type':\n\t\t\treturn strings.invalidType(file.name, details.extension ?? '');\n\t\tcase 'too-small':\n\t\t\treturn strings.tooSmall(file.name, formatSize(details.minimumBytes ?? 0));\n\t\tcase 'too-large':\n\t\t\treturn strings.tooLarge(file.name, formatSize(details.maximumBytes ?? 0));\n\t\tcase 'too-many':\n\t\t\treturn strings.tooMany(file.name, details.maximumFiles ?? 1);\n\t\tcase 'duplicate':\n\t\t\treturn strings.duplicate(file.name);\n\t\tcase 'custom':\n\t\t\treturn details.customMessage ?? strings.customValidationFailed(file.name);\n\t}\n}\n\nexport interface AvatarUploadProps {\n\t/** Selected file. Controlled. */\n\tvalue?: File;\n\tonValueChange?: (file?: File) => void;\n\t/** Image shown before anything is chosen — an existing avatar. */\n\tinitialPreviewUrl?: string;\n\t/** Accepted MIME types or extensions. */\n\taccept?: string;\n\t/** Disables the control and blocks drops. */\n\tdisabled?: boolean;\n\t/** Applies the invalid styling. */\n\tinvalid?: boolean;\n\t/** Diameter preset for the avatar. */\n\tsize?: AvatarUploadSize;\n\tclassName?: string;\n\t/** Overrides the upload and remove copy. */\n\tstrings?: StringsProp<AvatarUploadStrings>;\n\t/** Initials shown when no preview is available. */\n\tinitials?: string;\n}\n\nconst SIZE_PX: Record<AvatarUploadSize, { box: string; icon: string; remove: string }> = {\n\tsm: { box: 'size-upload-avatar-small', icon: 'size-icon', remove: 'size-control-clear' },\n\tmd: { box: 'size-upload-avatar', icon: 'size-icon-lg', remove: 'size-action' },\n\tlg: { box: 'size-upload-avatar-large', icon: 'size-icon-lg', remove: 'size-action-lg' },\n};\n\nfunction AvatarUploadImpl(\n\t{\n\tvalue,\n\tonValueChange,\n\tinitialPreviewUrl,\n\taccept = '.png,.jpg,.jpeg,.gif,.webp',\n\tdisabled = false,\n\tinvalid = false,\n\tsize: sizeProp,\n\tclassName,\n\tstrings: stringsProp,\n\tinitials,\n}: AvatarUploadProps,\n\tforwardedRef: ForwardedRef<HTMLInputElement>,\n) {\n\tconst { defaultScale } = useDensityConfig();\n\tconst size = resolveComponentScale(sizeProp, defaultScale);\n\tconst strings = useStrings(defaultAvatarUploadStrings, stringsProp);\n\tconst inputId = useId();\n\tconst inputRef = useRef<HTMLInputElement | null>(null);\n\tconst sizes = SIZE_PX[size];\n\n\tconst { files, setFiles, removeAll, formatSize, rejections } = useFiles({\n\t\tmaxFiles: 1,\n\t\tallowedExtensions: useMemo(\n\t\t\t() =>\n\t\t\t\taccept\n\t\t\t\t\t.split(',')\n\t\t\t\t\t.map((s) => s.trim().replace(/^\\./, '').toLowerCase())\n\t\t\t\t\t.filter(Boolean),\n\t\t\t[accept],\n\t\t),\n\t});\n\n\tuseEffect(() => {\n\t\tif (value) setFiles([value]);\n\t\telse removeAll();\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [value]);\n\n\tconst selected = files[0];\n\tconst [filePreviewUrl, setFilePreviewUrl] = useState<string | undefined>(undefined);\n\n\tuseEffect(() => {\n\t\tconst file = selected?.file ?? value;\n\t\tif (!file) {\n\t\t\tsetFilePreviewUrl(undefined);\n\t\t\treturn;\n\t\t}\n\t\tconst url = URL.createObjectURL(file);\n\t\tsetFilePreviewUrl(url);\n\t\treturn () => URL.revokeObjectURL(url);\n\t}, [selected, value]);\n\n\tconst previewUrl = filePreviewUrl ?? initialPreviewUrl;\n\tconst hasPreview = Boolean(previewUrl);\n\n\tconst handleInput = useCallback(\n\t\t(e: ChangeEvent<HTMLInputElement>) => {\n\t\t\tconst list = e.target.files;\n\t\t\tif (!list || list.length === 0) return;\n\t\t\tconst result = setFiles(list);\n\t\t\tconst acceptedFile = result.accepted[0]?.file;\n\t\t\tif (acceptedFile) onValueChange?.(acceptedFile);\n\t\t\tif (inputRef.current) inputRef.current.value = '';\n\t\t},\n\t\t[onValueChange, setFiles],\n\t);\n\n\tconst handleRemove = useCallback(() => {\n\t\tremoveAll();\n\t\tonValueChange?.(undefined);\n\t\tif (inputRef.current) inputRef.current.value = '';\n\t}, [onValueChange, removeAll]);\n\n\tconst handleFiles = useCallback((incoming: File[]) => {\n\t\tconst result = setFiles(incoming);\n\t\tconst acceptedFile = result.accepted[0]?.file;\n\t\tif (acceptedFile) onValueChange?.(acceptedFile);\n\t}, [onValueChange, setFiles]);\n\tconst { isDragging, dropTargetProps } = useFileDropTarget({ disabled, onFiles: handleFiles });\n\n\treturn (\n\t\t// Intrinsic width, aligned to the field's start edge even inside a stretching stack.\n\t\t// The circle, hint and errors share that start edge, so a hint wider than the\n\t\t// circle never pushes it off the label's edge.\n\t\t<div className={cn('avatar-upload--component', 'inline-flex w-fit flex-col items-start gap-space-md self-start', className)}>\n\t\t\t<div\n\t\t\t\t{...dropTargetProps}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'group relative flex shrink-0 items-center justify-center rounded-full',\n\t\t\t\t\t'border transition-colors duration-150 outline-none',\n\t\t\t\t\t// Keyboard focus only: a pointer click on the file input draws no ring.\n\t\t\t\t\t'has-[input:focus-visible]:ring-3',\n\t\t\t\t\thasPreview\n\t\t\t\t\t\t? 'border-border bg-muted'\n\t\t\t\t\t\t: cn(\n\t\t\t\t\t\t\t\t// The empty drop target shares the upload family's dashed control boundary.\n\t\t\t\t\t\t\t\t'border-dashed bg-muted',\n\t\t\t\t\t\t\t\t!disabled && uploadDropTargetRecipes.hover,\n\t\t\t\t\t\t\t\tuploadDropTargetRecipes.idle,\n\t\t\t\t\t\t\t),\n\t\t\t\t\tinvalid ? cn(uploadDropTargetRecipes.invalid, uploadDropTargetRecipes.focus.input.invalid) : uploadDropTargetRecipes.focus.input.valid,\n\t\t\t\t\tdisabled && 'cursor-not-allowed opacity-50',\n\t\t\t\t\t!disabled && isDragging && uploadDropTargetRecipes.dragging,\n\t\t\t\t\tsizes.box,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t<input\n\t\t\t\t\tid={inputId}\n\t\t\t\t\tref={(node) => { inputRef.current = node; if (typeof forwardedRef === \"function\") forwardedRef(node); else if (forwardedRef) forwardedRef.current = node; }}\n\t\t\t\t\ttype=\"file\"\n\t\t\t\t\tclassName=\"absolute inset-0 z-10 size-full cursor-pointer opacity-0 disabled:cursor-not-allowed\"\n\t\t\t\t\taria-label={strings.change}\n\t\t\t\t\taria-invalid={invalid || undefined}\n\t\t\t\t\taccept={accept}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tonChange={handleInput}\n\t\t\t\t/>\n\n\t\t\t\t{/* Only the visual preview is circularly clipped; removal and focus\n\t\t\t\t remain outside that clip as space and density scale independently. */}\n\t\t\t\t<div className=\"pointer-events-none absolute inset-0 flex items-center justify-center overflow-hidden rounded-full\">\n\t\t\t\t\t{hasPreview && previewUrl ? (\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tsrc={previewUrl}\n\t\t\t\t\t\t\talt={strings.change}\n\t\t\t\t\t\t\tclassName=\"absolute inset-0 size-full object-cover\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : initials ? (\n\t\t\t\t\t\t<Text size={size === 'sm' ? 'sm' : size === 'lg' ? 'lg' : 'base'} weight=\"medium\" lineHeight=\"none\">\n\t\t\t\t\t\t\t{initials}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<Camera className={cn(sizes.icon, 'text-muted-foreground')} aria-hidden=\"true\" />\n\t\t\t\t\t)}\n\n\t\t\t\t\t{/* Hover overlay: a plain inverse scrim, dark in both themes, keeps the\n\t\t\t\t\t glyph legible over any photo without blurring it. */}\n\t\t\t\t\t{!disabled && hasPreview && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"absolute inset-0 hidden items-center justify-center bg-inverse-background/60 text-inverse-foreground group-hover:flex\"\n\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Camera className={sizes.icon} />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\n\t\t\t\t{/* Remove pill */}\n\t\t\t\t{!disabled && hasPreview && (\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\taria-label={strings.remove}\n\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\thandleRemove();\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\tfieldAffordanceRecipes.target,\n\t\t\t\t\t\t\tfieldAffordanceRecipes.focus,\n\t\t\t\t\t\t\t'absolute end-0.5 top-0.5 z-10 bg-card text-card-foreground shadow-sm ring-1 ring-border',\n\t\t\t\t\t\t\t'opacity-100 transition-opacity sm:opacity-0 sm:group-hover:opacity-100 group-focus-within:opacity-100 focus-visible:opacity-100',\n\t\t\t\t\t\t\tsizes.remove,\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<X className={fieldAffordanceRecipes.icon} />\n\t\t\t\t\t</button>\n\t\t\t\t)}\n\n\t\t\t\t{!disabled && !hasPreview && isDragging && (\n\t\t\t\t\t<Text size=\"xs\" weight=\"medium\" className=\"absolute inset-x-0 bottom-1.5 text-center text-primary-accent\">\n\t\t\t\t\t\t{strings.dragOver}\n\t\t\t\t\t</Text>\n\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t{!hasPreview && (\n\t\t\t\t<Text size=\"xs\" type=\"secondary\">\n\t\t\t\t\t{strings.hint}\n\t\t\t\t</Text>\n\t\t\t)}\n\t\t\t{rejections.length > 0 && (\n\t\t\t\t<div className=\"avatar-upload--errors grid gap-space-2xs\" role=\"alert\" aria-live=\"polite\">\n\t\t\t\t\t{rejections.map((rejection, index) => (\n\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\tkey={`${rejection.file.name}-${rejection.code}-${index}`}\n\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\ttype=\"error\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{getAvatarUploadRejectionMessage(rejection, strings, formatSize)}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nconst AvatarUpload = React.forwardRef<HTMLInputElement, AvatarUploadProps>(AvatarUploadImpl);\nAvatarUpload.displayName = 'AvatarUpload';\n\nexport { AvatarUpload };\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils-B6kKb8jB.js","names":["tokenClassGroups","\"gap\"","\"h\"","\"mx\"","\"p\"","\"pb\"","\"pt\"","\"px\"","\"py\"","\"right\"","\"rounded\"","\"size\"","\"m\"","\"ml\"","\"ms\"","\"mt\"","\"my\"","\"top\"","\"inset\"","\"w\"","\"bottom\"","\"ps\"","\"end\"","\"text\"","\"font\"","\"pe\"","\"me\"","\"left\"","\"mb\"","\"mr\"","\"pl\"","\"pr\"","\"start\"","tokenCandidates","twMerge","extendTailwindMerge","BEM_HOOK","shippedTokenCandidates","before","prefix","suffix","after","tokenUtilities","groups","group","suffixes","isUnavailableTokenCandidate","depth","start","index","candidate","utility","cn","inputs","classes","clsx","hooks","entry","opaque","survivors","lastUtilityIndex","emitted"],"sources":["../src/lib/token-merge.generated.ts","../src/lib/utils.ts"],"sourcesContent":["/* Generated from emitted contract/library CSS; do not edit. */\nexport const tokenClassGroups = {\n \"gap\": [\n {\n \"gap\": [\n \"space-lg\",\n \"space-md\",\n \"space-sm\",\n \"dense\",\n \"normal\",\n \"space-2xl\",\n \"space-2xs\",\n \"space-3xl\",\n \"space-xl\",\n \"space-xs\"\n ]\n }\n ],\n \"h\": [\n {\n \"h\": [\n \"action-sm\",\n \"control\",\n \"control-lg\",\n \"control-sm\",\n \"space-md\",\n \"control-file\",\n \"action\",\n \"action-lg\",\n \"action-xs\",\n \"icon\",\n \"icon-lg\",\n \"icon-sm\",\n \"shell-header\"\n ]\n }\n ],\n \"min-h\": [\n {\n \"min-h\": [\n \"action-lg\",\n \"shell-header\",\n \"action-xs\",\n \"control\",\n \"action\",\n \"action-sm\",\n \"control-lg\",\n \"control-sm\",\n \"icon\",\n \"icon-lg\",\n \"textarea\",\n \"textarea-sm\"\n ]\n }\n ],\n \"mx\": [\n {\n \"mx\": [\n \"space-2xs\",\n \"space-md\",\n \"space-sm\",\n \"row-x\",\n \"space-xs\",\n \"space-2xl\",\n \"space-lg\",\n \"space-xl\"\n ]\n }\n ],\n \"p\": [\n {\n \"p\": [\n \"surface\",\n \"surface-lg\",\n \"surface-xs\",\n \"space-md\",\n \"space-2xl\",\n \"space-2xs\",\n \"space-lg\",\n \"space-sm\",\n \"space-xl\",\n \"space-xs\",\n \"surface-sm\"\n ]\n }\n ],\n \"pb\": [\n {\n \"pb\": [\n \"surface\",\n \"surface-lg\",\n \"surface-xs\",\n \"space-xs\",\n \"space-md\",\n \"space-lg\",\n \"space-2xl\",\n \"space-2xs\",\n \"space-sm\",\n \"space-xl\",\n \"surface-sm\"\n ]\n }\n ],\n \"pt\": [\n {\n \"pt\": [\n \"surface\",\n \"surface-lg\",\n \"surface-xs\",\n \"space-md\",\n \"space-lg\",\n \"space-2xl\",\n \"space-2xs\",\n \"space-sm\",\n \"space-xl\",\n \"space-xs\",\n \"surface-sm\"\n ]\n }\n ],\n \"px\": [\n {\n \"px\": [\n \"control-sm\",\n \"row-x\",\n \"surface-xs\",\n \"space-xs\",\n \"control\",\n \"control-xs\",\n \"space-2xl\",\n \"space-2xs\",\n \"space-lg\",\n \"space-md\",\n \"space-sm\",\n \"space-xl\",\n \"surface\",\n \"surface-lg\",\n \"surface-sm\"\n ]\n }\n ],\n \"py\": [\n {\n \"py\": [\n \"row-y\",\n \"space-2xs\",\n \"control-y-offset\",\n \"row-y-lg\",\n \"row-y-sm\",\n \"space-2xl\",\n \"space-lg\",\n \"space-md\",\n \"space-sm\",\n \"space-xl\",\n \"space-xs\",\n \"surface\",\n \"surface-lg\",\n \"surface-sm\",\n \"surface-xs\"\n ]\n }\n ],\n \"right\": [\n {\n \"right\": [\n \"space-sm\",\n \"control-px\",\n \"space-2xl\",\n \"space-2xs\",\n \"space-lg\",\n \"space-md\",\n \"space-xl\",\n \"space-xs\"\n ]\n }\n ],\n \"rounded\": [\n {\n \"rounded\": [\n \"radius\",\n \"surface\",\n \"radius-xs\",\n \"radius-lg\",\n \"radius-md\",\n \"radius-sm\",\n \"radius-xl\"\n ]\n }\n ],\n \"size\": [\n {\n \"size\": [\n \"action-xs\",\n \"action\",\n \"icon\",\n \"icon-lg\",\n \"icon-sm\",\n \"icon-md\",\n \"avatar-lg\",\n \"avatar-sm\",\n \"action-lg\",\n \"action-sm\",\n \"avatar\",\n \"control\",\n \"control-clear\",\n \"control-clear-icon\",\n \"control-lg\",\n \"control-sm\",\n \"shell-header-control\",\n \"upload-avatar\",\n \"upload-avatar-large\",\n \"upload-avatar-small\"\n ]\n }\n ],\n \"m\": [\n {\n \"m\": [\n \"space-xs\",\n \"space-2xl\",\n \"space-2xs\",\n \"space-lg\",\n \"space-md\",\n \"space-sm\",\n \"space-xl\"\n ]\n }\n ],\n \"ml\": [\n {\n \"ml\": [\n \"space-sm\",\n \"space-md\",\n \"control-gap-small\",\n \"space-2xl\",\n \"space-2xs\",\n \"space-lg\",\n \"space-xl\",\n \"space-xs\"\n ]\n }\n ],\n \"ms\": [\n {\n \"ms\": [\n \"space-xl\",\n \"space-lg\",\n \"space-xs\",\n \"space-2xs\",\n \"space-2xl\",\n \"space-md\",\n \"space-sm\"\n ]\n }\n ],\n \"mt\": [\n {\n \"mt\": [\n \"space-md\",\n \"space-xl\",\n \"space-xs\",\n \"space-2xl\",\n \"space-2xs\",\n \"space-lg\",\n \"space-sm\"\n ]\n }\n ],\n \"my\": [\n {\n \"my\": [\n \"space-sm\",\n \"space-xs\",\n \"space-2xl\",\n \"space-2xs\",\n \"space-lg\",\n \"space-md\",\n \"space-xl\"\n ]\n }\n ],\n \"space-x\": [\n {\n \"space-x\": [\n \"space-sm\",\n \"space-md\"\n ]\n }\n ],\n \"gap-x\": [\n {\n \"gap-x\": [\n \"dense\",\n \"normal\",\n \"space-2xl\",\n \"space-2xs\",\n \"space-3xl\",\n \"space-lg\",\n \"space-md\",\n \"space-sm\",\n \"space-xl\",\n \"space-xs\"\n ]\n }\n ],\n \"gap-y\": [\n {\n \"gap-y\": [\n \"dense\",\n \"normal\",\n \"space-2xl\",\n \"space-2xs\",\n \"space-3xl\",\n \"space-lg\",\n \"space-md\",\n \"space-sm\",\n \"space-xl\",\n \"space-xs\"\n ]\n }\n ],\n \"top\": [\n {\n \"top\": [\n \"space-2xl\",\n \"action-sm-center\",\n \"action-xs-center\",\n \"action-lg-center\",\n \"action-center\",\n \"control-y-offset\",\n \"shell-header\",\n \"space-2xs\",\n \"space-lg\",\n \"space-md\",\n \"space-sm\",\n \"space-xl\",\n \"space-xs\"\n ]\n }\n ],\n \"inset\": [\n {\n \"inset\": [\n \"space-xs\",\n \"space-2xl\",\n \"space-2xs\",\n \"space-lg\",\n \"space-md\",\n \"space-sm\",\n \"space-xl\"\n ]\n }\n ],\n \"inset-y\": [\n {\n \"inset-y\": [\n \"space-md\",\n \"space-2xl\",\n \"space-2xs\",\n \"space-lg\",\n \"space-sm\",\n \"space-xl\",\n \"space-xs\"\n ]\n }\n ],\n \"w\": [\n {\n \"w\": [\n \"space-2xs\",\n \"shell-sidebar-icon-padded\",\n \"action-sm\",\n \"control\",\n \"control-clear\",\n \"control-lg\",\n \"control-sm\",\n \"shell-sidebar\"\n ]\n }\n ],\n \"bottom\": [\n {\n \"bottom\": [\n \"control-y-offset\",\n \"space-2xl\",\n \"space-2xs\",\n \"space-lg\",\n \"space-md\",\n \"space-sm\",\n \"space-xl\",\n \"space-xs\"\n ]\n }\n ],\n \"translate-x\": [\n {\n \"translate-x\": [\n \"space-lg\"\n ]\n }\n ],\n \"ps\": [\n {\n \"ps\": [\n \"control-icon\",\n \"surface\",\n \"space-sm\",\n \"control\",\n \"control-addon\",\n \"control-addon-sm\",\n \"control-icon-sm\",\n \"control-sm\",\n \"control-xs\",\n \"row-x\",\n \"space-2xl\",\n \"space-2xs\",\n \"space-lg\",\n \"space-md\",\n \"space-xl\",\n \"space-xs\",\n \"surface-lg\",\n \"surface-sm\",\n \"surface-xs\"\n ]\n }\n ],\n \"end\": [\n {\n \"end\": [\n \"control-icon\",\n \"space-2xl\",\n \"space-2xs\",\n \"space-lg\",\n \"space-md\",\n \"space-sm\",\n \"space-xl\",\n \"space-xs\"\n ]\n }\n ],\n \"font-size\": [\n {\n \"text\": [\n \"pxs\",\n \"xxs\"\n ]\n }\n ],\n \"font-family\": [\n {\n \"font\": [\n \"heading\"\n ]\n }\n ],\n \"rounded-l\": [\n {\n \"rounded-l\": [\n \"radius\"\n ]\n }\n ],\n \"rounded-r\": [\n {\n \"rounded-r\": [\n \"radius\"\n ]\n }\n ],\n \"rounded-t\": [\n {\n \"rounded-t\": [\n \"radius\",\n \"radius-sm\",\n \"surface\"\n ]\n }\n ],\n \"rounded-b\": [\n {\n \"rounded-b\": [\n \"radius\",\n \"surface\"\n ]\n }\n ],\n \"pe\": [\n {\n \"pe\": [\n \"space-sm\",\n \"surface\",\n \"action-sm\",\n \"control\",\n \"control-actions\",\n \"control-actions-sm\",\n \"control-addon\",\n \"control-addon-sm\",\n \"control-count\",\n \"control-count-sm\",\n \"control-icon\",\n \"control-icon-sm\",\n \"control-sm\",\n \"control-xs\",\n \"row-x\",\n \"space-2xl\",\n \"space-2xs\",\n \"space-lg\",\n \"space-md\",\n \"space-xl\",\n \"space-xs\",\n \"surface-lg\",\n \"surface-sm\",\n \"surface-xs\"\n ]\n }\n ],\n \"me\": [\n {\n \"me\": [\n \"space-xs\",\n \"space-2xs\",\n \"space-2xl\",\n \"space-lg\",\n \"space-md\",\n \"space-sm\",\n \"space-xl\"\n ]\n }\n ],\n \"inset-x\": [\n {\n \"inset-x\": [\n \"space-2xl\",\n \"space-2xs\",\n \"space-lg\",\n \"space-md\",\n \"space-sm\",\n \"space-xl\",\n \"space-xs\"\n ]\n }\n ],\n \"left\": [\n {\n \"left\": [\n \"space-2xl\",\n \"space-2xs\",\n \"space-lg\",\n \"space-md\",\n \"space-sm\",\n \"space-xl\",\n \"space-xs\"\n ]\n }\n ],\n \"space-y\": [\n {\n \"space-y\": [\n \"space-2xs\",\n \"space-2xl\",\n \"space-lg\",\n \"space-md\",\n \"space-sm\",\n \"space-xl\",\n \"space-xs\"\n ]\n }\n ],\n \"max-w\": [\n {\n \"max-w\": [\n \"content-2xl\",\n \"content-lg\",\n \"content-md\",\n \"content-sm\",\n \"content-xl\"\n ]\n }\n ],\n \"mb\": [\n {\n \"mb\": [\n \"space-2xl\",\n \"space-2xs\",\n \"space-lg\",\n \"space-md\",\n \"space-sm\",\n \"space-xl\",\n \"space-xs\"\n ]\n }\n ],\n \"min-w\": [\n {\n \"min-w\": [\n \"action\",\n \"action-lg\",\n \"action-sm\",\n \"action-xs\"\n ]\n }\n ],\n \"mr\": [\n {\n \"mr\": [\n \"control-gap\",\n \"space-2xl\",\n \"space-2xs\",\n \"space-lg\",\n \"space-md\",\n \"space-sm\",\n \"space-xl\",\n \"space-xs\"\n ]\n }\n ],\n \"pl\": [\n {\n \"pl\": [\n \"row-x\",\n \"space-2xl\",\n \"space-2xs\",\n \"space-lg\",\n \"space-md\",\n \"space-sm\",\n \"space-xl\",\n \"space-xs\",\n \"surface\",\n \"surface-lg\",\n \"surface-sm\",\n \"surface-xs\"\n ]\n }\n ],\n \"pr\": [\n {\n \"pr\": [\n \"row-x\",\n \"space-2xl\",\n \"space-2xs\",\n \"space-lg\",\n \"space-md\",\n \"space-sm\",\n \"space-xl\",\n \"space-xs\",\n \"surface\",\n \"surface-lg\",\n \"surface-sm\",\n \"surface-xs\"\n ]\n }\n ],\n \"rounded-e\": [\n {\n \"rounded-e\": [\n \"radius\"\n ]\n }\n ],\n \"rounded-s\": [\n {\n \"rounded-s\": [\n \"radius\"\n ]\n }\n ],\n \"start\": [\n {\n \"start\": [\n \"space-2xl\",\n \"space-2xs\",\n \"space-lg\",\n \"space-md\",\n \"space-sm\",\n \"space-xl\",\n \"space-xs\"\n ]\n }\n ],\n \"translate-y\": [\n {\n \"translate-y\": [\n \"space-lg\"\n ]\n }\n ]\n};\nexport const tokenCandidates = [\n [\"!\",\"gap\",\"space-lg\",\"\"],\n [\"!\",\"gap\",\"space-md\",\"\"],\n [\"!\",\"gap\",\"space-sm\",\"\"],\n [\"!\",\"h\",\"action-sm\",\"\"],\n [\"!\",\"h\",\"control\",\"\"],\n [\"!\",\"h\",\"control-lg\",\"\"],\n [\"!\",\"h\",\"control-sm\",\"\"],\n [\"!\",\"min-h\",\"action-lg\",\"\"],\n [\"!\",\"mx\",\"space-2xs\",\"\"],\n [\"!\",\"mx\",\"space-md\",\"\"],\n [\"!\",\"mx\",\"space-sm\",\"\"],\n [\"!\",\"p\",\"surface\",\"\"],\n [\"!\",\"p\",\"surface-lg\",\"\"],\n [\"!\",\"p\",\"surface-xs\",\"\"],\n [\"!\",\"pb\",\"surface\",\"\"],\n [\"!\",\"pb\",\"surface-lg\",\"\"],\n [\"!\",\"pb\",\"surface-xs\",\"\"],\n [\"!\",\"pt\",\"surface\",\"\"],\n [\"!\",\"pt\",\"surface-lg\",\"\"],\n [\"!\",\"pt\",\"surface-xs\",\"\"],\n [\"!\",\"px\",\"control-sm\",\"\"],\n [\"!\",\"px\",\"row-x\",\"\"],\n [\"!\",\"py\",\"row-y\",\"\"],\n [\"!\",\"right\",\"space-sm\",\"\"],\n [\"!\",\"rounded\",\"radius\",\"\"],\n [\"!\",\"rounded\",\"surface\",\"\"],\n [\"!\",\"size\",\"action-xs\",\"\"],\n [\"*:data-[slot=select-value]:\",\"gap\",\"space-sm\",\"\"],\n [\"-\",\"m\",\"space-xs\",\"\"],\n [\"-\",\"ml\",\"space-sm\",\"\"],\n [\"-\",\"ms\",\"space-xl\",\"\"],\n [\"-\",\"mt\",\"space-md\",\"\"],\n [\"-\",\"mt\",\"space-xl\",\"\"],\n [\"-\",\"mt\",\"space-xs\",\"\"],\n [\"-\",\"mx\",\"row-x\",\"\"],\n [\"-\",\"mx\",\"space-xs\",\"\"],\n [\"-\",\"my\",\"space-sm\",\"\"],\n [\"-\",\"my\",\"space-xs\",\"\"],\n [\"-\",\"space-x\",\"space-sm\",\"\"],\n [\"2xl:\",\"gap\",\"dense\",\"\"],\n [\"2xl:\",\"gap\",\"normal\",\"\"],\n [\"2xl:\",\"gap\",\"space-2xl\",\"\"],\n [\"2xl:\",\"gap\",\"space-2xs\",\"\"],\n [\"2xl:\",\"gap\",\"space-3xl\",\"\"],\n [\"2xl:\",\"gap\",\"space-lg\",\"\"],\n [\"2xl:\",\"gap\",\"space-md\",\"\"],\n [\"2xl:\",\"gap\",\"space-sm\",\"\"],\n [\"2xl:\",\"gap\",\"space-xl\",\"\"],\n [\"2xl:\",\"gap\",\"space-xs\",\"\"],\n [\"2xl:\",\"gap-x\",\"dense\",\"\"],\n [\"2xl:\",\"gap-x\",\"normal\",\"\"],\n [\"2xl:\",\"gap-x\",\"space-2xl\",\"\"],\n [\"2xl:\",\"gap-x\",\"space-2xs\",\"\"],\n [\"2xl:\",\"gap-x\",\"space-3xl\",\"\"],\n [\"2xl:\",\"gap-x\",\"space-lg\",\"\"],\n [\"2xl:\",\"gap-x\",\"space-md\",\"\"],\n [\"2xl:\",\"gap-x\",\"space-sm\",\"\"],\n [\"2xl:\",\"gap-x\",\"space-xl\",\"\"],\n [\"2xl:\",\"gap-x\",\"space-xs\",\"\"],\n [\"2xl:\",\"gap-y\",\"dense\",\"\"],\n [\"2xl:\",\"gap-y\",\"normal\",\"\"],\n [\"2xl:\",\"gap-y\",\"space-2xl\",\"\"],\n [\"2xl:\",\"gap-y\",\"space-2xs\",\"\"],\n [\"2xl:\",\"gap-y\",\"space-3xl\",\"\"],\n [\"2xl:\",\"gap-y\",\"space-lg\",\"\"],\n [\"2xl:\",\"gap-y\",\"space-md\",\"\"],\n [\"2xl:\",\"gap-y\",\"space-sm\",\"\"],\n [\"2xl:\",\"gap-y\",\"space-xl\",\"\"],\n [\"2xl:\",\"gap-y\",\"space-xs\",\"\"],\n [\"@2xl/event-calendar-header:\",\"gap\",\"space-xl\",\"\"],\n [\"@3xl/app-shell:\",\"gap\",\"space-md\",\"\"],\n [\"@3xl/app-shell:\",\"px\",\"surface-xs\",\"\"],\n [\"@3xl:\",\"top\",\"space-2xl\",\"\"],\n [\"@5xl/stacked-shell:\",\"gap\",\"space-2xl\",\"\"],\n [\"@5xl/stacked-shell:\",\"gap\",\"space-md\",\"\"],\n [\"@5xl/stacked-shell:\",\"min-h\",\"shell-header\",\"\"],\n [\"@max-[16rem]/metric-card:\",\"px\",\"space-xs\",\"\"],\n [\"@max-[4rem]/calendar-event:\",\"min-h\",\"action-xs\",\"\"],\n [\"@max-[4rem]/calendar-event:\",\"py\",\"space-2xs\",\"\"],\n [\"@max-md:\",\"size\",\"action\",\"\"],\n [\"@md/auth-method-switch:\",\"gap\",\"space-md\",\"\"],\n [\"@md/auth-method-switch:\",\"px\",\"control\",\"\"],\n [\"@md/order-line-item:\",\"gap-x\",\"space-xl\",\"\"],\n [\"@sm/alert:[&:not(:has(>svg))>[data-slot=alert-action]]:\",\"ms\",\"space-lg\",\"\"],\n [\"[&.border-b]:!\",\"pb\",\"surface\",\"\"],\n [\"[&.border-t]:!\",\"pt\",\"surface\",\"\"],\n [\"[&>.badge--component]:-\",\"my\",\"space-xs\",\"\"],\n [\"[&>.copyable--component]:-\",\"my\",\"space-sm\",\"\"],\n [\"[&>kbd]:\",\"rounded\",\"radius\",\"\"],\n [\"[&>svg:not([class*='size-'])]:\",\"size\",\"icon\",\"\"],\n [\"[&>svg:not([class*='size-'])]:\",\"size\",\"icon-lg\",\"\"],\n [\"[&>svg:not([class*='size-'])]:\",\"size\",\"icon-sm\",\"\"],\n [\"[&>svg]:\",\"size\",\"icon\",\"\"],\n [\"[&>svg]:\",\"size\",\"icon-lg\",\"\"],\n [\"[&>svg]:\",\"size\",\"icon-md\",\"\"],\n [\"[&>svg]:\",\"size\",\"icon-sm\",\"\"],\n [\"[&_.metadata-list--grid]:\",\"gap\",\"space-sm\",\"\"],\n [\"[&_[cmdk-group-heading]]:\",\"pb\",\"space-xs\",\"\"],\n [\"[&_[cmdk-group-heading]]:\",\"pt\",\"space-md\",\"\"],\n [\"[&_[cmdk-group-heading]]:\",\"px\",\"row-x\",\"\"],\n [\"[&_[data-slot=command-input-wrapper]]:\",\"p\",\"space-md\",\"\"],\n [\"[&_[data-slot=progress-track]]:\",\"h\",\"space-md\",\"\"],\n [\"[&_a]:\",\"rounded\",\"radius-xs\",\"\"],\n [\"[&_svg:not([class*='size-'])]:\",\"size\",\"icon\",\"\"],\n [\"[&_svg:not([class*='size-'])]:\",\"size\",\"icon-lg\",\"\"],\n [\"[&_svg:not([class*='size-'])]:\",\"size\",\"icon-sm\",\"\"],\n [\"[&_svg:not([class*=\\\\'size-\\\\'])]:\",\"size\",\"icon\",\"\"],\n [\"[&_svg:not([class*=size-])]:\",\"size\",\"icon\",\"\"],\n [\"[&_svg]:\",\"size\",\"icon\",\"\"],\n [\"[.border-b]:\",\"pb\",\"space-md\",\"\"],\n [\"[.border-t]:\",\"pt\",\"space-md\",\"\"],\n [\"after:-\",\"inset\",\"space-xs\",\"\"],\n [\"after:\",\"rounded\",\"radius\",\"\"],\n [\"before:\",\"inset-y\",\"space-md\",\"\"],\n [\"before:\",\"my\",\"space-xs\",\"\"],\n [\"before:\",\"w\",\"space-2xs\",\"\"],\n [\"\",\"bottom\",\"control-y-offset\",\"\"],\n [\"\",\"bottom\",\"space-2xl\",\"\"],\n [\"\",\"bottom\",\"space-2xs\",\"\"],\n [\"\",\"bottom\",\"space-lg\",\"\"],\n [\"\",\"bottom\",\"space-md\",\"\"],\n [\"\",\"bottom\",\"space-sm\",\"\"],\n [\"\",\"bottom\",\"space-xl\",\"\"],\n [\"\",\"bottom\",\"space-xs\",\"\"],\n [\"data-[collapsible=icon]:\",\"w\",\"shell-sidebar-icon-padded\",\"\"],\n [\"data-[direction=back]:starting:-\",\"translate-x\",\"space-lg\",\"\"],\n [\"data-[direction=forward]:starting:\",\"translate-x\",\"space-lg\",\"\"],\n [\"data-[orientation=horizontal]:\",\"min-h\",\"control\",\"\"],\n [\"data-[size=default]:\",\"h\",\"control\",\"\"],\n [\"data-[size=lg]:\",\"size\",\"avatar-lg\",\"\"],\n [\"data-[size=sm]:\",\"h\",\"control-sm\",\"\"],\n [\"data-[size=sm]:\",\"size\",\"avatar-sm\",\"\"],\n [\"data-inset:\",\"ps\",\"control-icon\",\"\"],\n [\"\",\"end\",\"control-icon\",\"\"],\n [\"\",\"end\",\"space-2xl\",\"\"],\n [\"\",\"end\",\"space-2xs\",\"\"],\n [\"\",\"end\",\"space-2xs\",\"!\"],\n [\"\",\"end\",\"space-lg\",\"\"],\n [\"\",\"end\",\"space-md\",\"\"],\n [\"\",\"end\",\"space-sm\",\"\"],\n [\"\",\"end\",\"space-sm\",\"!\"],\n [\"\",\"end\",\"space-xl\",\"\"],\n [\"\",\"end\",\"space-xs\",\"\"],\n [\"file:\",\"h\",\"control-file\",\"\"],\n [\"file:\",\"px\",\"control\",\"\"],\n [\"file:\",\"rounded\",\"radius\",\"\"],\n [\"file:\",\"text\",\"pxs\",\"\"],\n [\"first:\",\"ps\",\"surface\",\"\"],\n [\"\",\"font\",\"heading\",\"\"],\n [\"\",\"gap\",\"dense\",\"\"],\n [\"\",\"gap\",\"normal\",\"\"],\n [\"\",\"gap\",\"space-2xl\",\"\"],\n [\"\",\"gap\",\"space-2xs\",\"\"],\n [\"\",\"gap\",\"space-3xl\",\"\"],\n [\"\",\"gap\",\"space-lg\",\"\"],\n [\"\",\"gap\",\"space-md\",\"\"],\n [\"\",\"gap\",\"space-sm\",\"\"],\n [\"\",\"gap\",\"space-xl\",\"\"],\n [\"\",\"gap\",\"space-xs\",\"\"],\n [\"\",\"gap-x\",\"dense\",\"\"],\n [\"\",\"gap-x\",\"normal\",\"\"],\n [\"\",\"gap-x\",\"space-2xl\",\"\"],\n [\"\",\"gap-x\",\"space-2xs\",\"\"],\n [\"\",\"gap-x\",\"space-3xl\",\"\"],\n [\"\",\"gap-x\",\"space-lg\",\"\"],\n [\"\",\"gap-x\",\"space-md\",\"\"],\n [\"\",\"gap-x\",\"space-sm\",\"\"],\n [\"\",\"gap-x\",\"space-xl\",\"\"],\n [\"\",\"gap-x\",\"space-xs\",\"\"],\n [\"\",\"gap-y\",\"dense\",\"\"],\n [\"\",\"gap-y\",\"normal\",\"\"],\n [\"\",\"gap-y\",\"space-2xl\",\"\"],\n [\"\",\"gap-y\",\"space-2xs\",\"\"],\n [\"\",\"gap-y\",\"space-3xl\",\"\"],\n [\"\",\"gap-y\",\"space-lg\",\"\"],\n [\"\",\"gap-y\",\"space-md\",\"\"],\n [\"\",\"gap-y\",\"space-sm\",\"\"],\n [\"\",\"gap-y\",\"space-xl\",\"\"],\n [\"\",\"gap-y\",\"space-xs\",\"\"],\n [\"group-data-[collapsible=icon]:\",\"px\",\"control-sm\",\"!\"],\n [\"group-data-[collapsible=icon]:\",\"size\",\"action\",\"!\"],\n [\"group-data-[collapsible=icon]:\",\"size\",\"action-lg\",\"!\"],\n [\"group-data-[collapsible=icon]:\",\"size\",\"action-sm\",\"!\"],\n [\"group-data-[collapsible=icon]:\",\"w\",\"shell-sidebar-icon-padded\",\"\"],\n [\"group-data-[orientation=horizontal]/toggle-group:data-[spacing=0]:first:\",\"rounded-l\",\"radius\",\"\"],\n [\"group-data-[orientation=horizontal]/toggle-group:data-[spacing=0]:last:\",\"rounded-r\",\"radius\",\"\"],\n [\"group-data-[orientation=vertical]/toggle-group:data-[spacing=0]:first:\",\"rounded-t\",\"radius\",\"\"],\n [\"group-data-[orientation=vertical]/toggle-group:data-[spacing=0]:last:\",\"rounded-b\",\"radius\",\"\"],\n [\"group-data-[size=xs]/item:[&_svg:not([class*='size-'])]:\",\"size\",\"icon-sm\",\"\"],\n [\"group-data-[size=xs]/item:\",\"gap\",\"dense\",\"\"],\n [\"group-data-[size=xs]/item:\",\"gap\",\"normal\",\"\"],\n [\"group-data-[size=xs]/item:\",\"rounded\",\"radius\",\"\"],\n [\"group-data-[spacing=0]/toggle-group:\",\"px\",\"control-sm\",\"\"],\n [\"group-data-[variant=chips]/tabs-list:\",\"h\",\"action-sm\",\"\"],\n [\"group-data-[variant=chips]/tabs-list:\",\"px\",\"control-sm\",\"\"],\n [\"group-data-[variant=floating]:\",\"rounded\",\"surface\",\"\"],\n [\"group-has-[>input]/input-group:\",\"pb\",\"space-md\",\"\"],\n [\"group-has-[>input]/input-group:\",\"pt\",\"space-md\",\"\"],\n [\"group-has-data-[sidebar=menu-action]/menu-item:\",\"px\",\"control-sm\",\"!\"],\n [\"group-has-data-[size=lg]/avatar-group:[&>svg]:\",\"size\",\"icon-lg\",\"\"],\n [\"group-has-data-[size=lg]/avatar-group:\",\"size\",\"avatar-lg\",\"\"],\n [\"group-has-data-[size=sm]/avatar-group:[&>svg]:\",\"size\",\"icon-sm\",\"\"],\n [\"group-has-data-[size=sm]/avatar-group:\",\"size\",\"avatar-sm\",\"\"],\n [\"\",\"h\",\"action\",\"\"],\n [\"\",\"h\",\"action-lg\",\"\"],\n [\"\",\"h\",\"action-sm\",\"\"],\n [\"\",\"h\",\"action-xs\",\"\"],\n [\"\",\"h\",\"control\",\"\"],\n [\"\",\"h\",\"control-file\",\"\"],\n [\"\",\"h\",\"control-lg\",\"\"],\n [\"\",\"h\",\"control-sm\",\"\"],\n [\"\",\"h\",\"icon\",\"\"],\n [\"\",\"h\",\"icon-lg\",\"\"],\n [\"\",\"h\",\"icon-sm\",\"\"],\n [\"\",\"h\",\"shell-header\",\"\"],\n [\"has-[>[data-align=block-end]]:[&>input]:\",\"pt\",\"space-lg\",\"\"],\n [\"has-[>[data-align=block-start]]:[&>input]:\",\"pb\",\"space-lg\",\"\"],\n [\"has-[>[data-align=inline-end]]:[&>input]:\",\"pe\",\"space-sm\",\"\"],\n [\"has-[>[data-align=inline-start]]:[&>input]:\",\"ps\",\"space-sm\",\"\"],\n [\"has-[>button]:-\",\"me\",\"space-xs\",\"\"],\n [\"has-[>button]:-\",\"ms\",\"space-xs\",\"\"],\n [\"has-[>kbd]:-\",\"me\",\"space-2xs\",\"\"],\n [\"has-[>kbd]:-\",\"ms\",\"space-2xs\",\"\"],\n [\"has-[>svg]:\",\"gap-x\",\"space-lg\",\"\"],\n [\"has-data-[slot=alert-dialog-media]:\",\"gap-x\",\"space-2xl\",\"\"],\n [\"\",\"inset\",\"space-2xl\",\"\"],\n [\"\",\"inset\",\"space-2xs\",\"\"],\n [\"\",\"inset\",\"space-lg\",\"\"],\n [\"\",\"inset\",\"space-md\",\"\"],\n [\"\",\"inset\",\"space-sm\",\"\"],\n [\"\",\"inset\",\"space-xl\",\"\"],\n [\"\",\"inset\",\"space-xs\",\"\"],\n [\"\",\"inset-x\",\"space-2xl\",\"\"],\n [\"\",\"inset-x\",\"space-2xs\",\"\"],\n [\"\",\"inset-x\",\"space-lg\",\"\"],\n [\"\",\"inset-x\",\"space-md\",\"\"],\n [\"\",\"inset-x\",\"space-sm\",\"\"],\n [\"\",\"inset-x\",\"space-xl\",\"\"],\n [\"\",\"inset-x\",\"space-xs\",\"\"],\n [\"\",\"inset-y\",\"space-2xl\",\"\"],\n [\"\",\"inset-y\",\"space-2xs\",\"\"],\n [\"\",\"inset-y\",\"space-lg\",\"\"],\n [\"\",\"inset-y\",\"space-md\",\"\"],\n [\"\",\"inset-y\",\"space-sm\",\"\"],\n [\"\",\"inset-y\",\"space-xl\",\"\"],\n [\"\",\"inset-y\",\"space-xs\",\"\"],\n [\"last:\",\"pe\",\"surface\",\"\"],\n [\"\",\"left\",\"space-2xl\",\"\"],\n [\"\",\"left\",\"space-2xs\",\"\"],\n [\"\",\"left\",\"space-lg\",\"\"],\n [\"\",\"left\",\"space-md\",\"\"],\n [\"\",\"left\",\"space-sm\",\"\"],\n [\"\",\"left\",\"space-xl\",\"\"],\n [\"\",\"left\",\"space-xs\",\"\"],\n [\"lg:\",\"gap\",\"dense\",\"\"],\n [\"lg:\",\"gap\",\"normal\",\"\"],\n [\"lg:\",\"gap\",\"space-2xl\",\"\"],\n [\"lg:\",\"gap\",\"space-2xs\",\"\"],\n [\"lg:\",\"gap\",\"space-3xl\",\"\"],\n [\"lg:\",\"gap\",\"space-lg\",\"\"],\n [\"lg:\",\"gap\",\"space-md\",\"\"],\n [\"lg:\",\"gap\",\"space-sm\",\"\"],\n [\"lg:\",\"gap\",\"space-xl\",\"\"],\n [\"lg:\",\"gap\",\"space-xs\",\"\"],\n [\"lg:\",\"gap-x\",\"dense\",\"\"],\n [\"lg:\",\"gap-x\",\"normal\",\"\"],\n [\"lg:\",\"gap-x\",\"space-2xl\",\"\"],\n [\"lg:\",\"gap-x\",\"space-2xs\",\"\"],\n [\"lg:\",\"gap-x\",\"space-3xl\",\"\"],\n [\"lg:\",\"gap-x\",\"space-lg\",\"\"],\n [\"lg:\",\"gap-x\",\"space-md\",\"\"],\n [\"lg:\",\"gap-x\",\"space-sm\",\"\"],\n [\"lg:\",\"gap-x\",\"space-xl\",\"\"],\n [\"lg:\",\"gap-x\",\"space-xs\",\"\"],\n [\"lg:\",\"gap-y\",\"dense\",\"\"],\n [\"lg:\",\"gap-y\",\"normal\",\"\"],\n [\"lg:\",\"gap-y\",\"space-2xl\",\"\"],\n [\"lg:\",\"gap-y\",\"space-2xs\",\"\"],\n [\"lg:\",\"gap-y\",\"space-3xl\",\"\"],\n [\"lg:\",\"gap-y\",\"space-lg\",\"\"],\n [\"lg:\",\"gap-y\",\"space-md\",\"\"],\n [\"lg:\",\"gap-y\",\"space-sm\",\"\"],\n [\"lg:\",\"gap-y\",\"space-xl\",\"\"],\n [\"lg:\",\"gap-y\",\"space-xs\",\"\"],\n [\"lg:\",\"space-y\",\"space-2xs\",\"\"],\n [\"lg:\",\"top\",\"space-2xl\",\"\"],\n [\"\",\"m\",\"space-2xl\",\"\"],\n [\"\",\"m\",\"space-2xs\",\"\"],\n [\"\",\"m\",\"space-lg\",\"\"],\n [\"\",\"m\",\"space-md\",\"\"],\n [\"\",\"m\",\"space-sm\",\"\"],\n [\"\",\"m\",\"space-xl\",\"\"],\n [\"\",\"m\",\"space-xs\",\"\"],\n [\"max-sm:\",\"size\",\"action\",\"\"],\n [\"max-sm:\",\"size\",\"action-sm\",\"\"],\n [\"\",\"max-w\",\"content-2xl\",\"\"],\n [\"\",\"max-w\",\"content-lg\",\"\"],\n [\"\",\"max-w\",\"content-md\",\"\"],\n [\"\",\"max-w\",\"content-sm\",\"\"],\n [\"\",\"max-w\",\"content-xl\",\"\"],\n [\"\",\"mb\",\"space-2xl\",\"\"],\n [\"\",\"mb\",\"space-2xs\",\"\"],\n [\"\",\"mb\",\"space-lg\",\"\"],\n [\"\",\"mb\",\"space-md\",\"\"],\n [\"\",\"mb\",\"space-sm\",\"\"],\n [\"\",\"mb\",\"space-xl\",\"\"],\n [\"\",\"mb\",\"space-xs\",\"\"],\n [\"md:\",\"gap\",\"dense\",\"\"],\n [\"md:\",\"gap\",\"normal\",\"\"],\n [\"md:\",\"gap\",\"space-2xl\",\"\"],\n [\"md:\",\"gap\",\"space-2xs\",\"\"],\n [\"md:\",\"gap\",\"space-3xl\",\"\"],\n [\"md:\",\"gap\",\"space-lg\",\"\"],\n [\"md:\",\"gap\",\"space-md\",\"\"],\n [\"md:\",\"gap\",\"space-sm\",\"\"],\n [\"md:\",\"gap\",\"space-xl\",\"\"],\n [\"md:\",\"gap\",\"space-xs\",\"\"],\n [\"md:\",\"gap-x\",\"dense\",\"\"],\n [\"md:\",\"gap-x\",\"normal\",\"\"],\n [\"md:\",\"gap-x\",\"space-2xl\",\"\"],\n [\"md:\",\"gap-x\",\"space-2xs\",\"\"],\n [\"md:\",\"gap-x\",\"space-3xl\",\"\"],\n [\"md:\",\"gap-x\",\"space-lg\",\"\"],\n [\"md:\",\"gap-x\",\"space-md\",\"\"],\n [\"md:\",\"gap-x\",\"space-sm\",\"\"],\n [\"md:\",\"gap-x\",\"space-xl\",\"\"],\n [\"md:\",\"gap-x\",\"space-xs\",\"\"],\n [\"md:\",\"gap-y\",\"dense\",\"\"],\n [\"md:\",\"gap-y\",\"normal\",\"\"],\n [\"md:\",\"gap-y\",\"space-2xl\",\"\"],\n [\"md:\",\"gap-y\",\"space-2xs\",\"\"],\n [\"md:\",\"gap-y\",\"space-3xl\",\"\"],\n [\"md:\",\"gap-y\",\"space-lg\",\"\"],\n [\"md:\",\"gap-y\",\"space-md\",\"\"],\n [\"md:\",\"gap-y\",\"space-sm\",\"\"],\n [\"md:\",\"gap-y\",\"space-xl\",\"\"],\n [\"md:\",\"gap-y\",\"space-xs\",\"\"],\n [\"md:\",\"m\",\"space-md\",\"\"],\n [\"md:\",\"p\",\"surface-lg\",\"\"],\n [\"md:peer-data-[variant=inset]:\",\"m\",\"space-md\",\"\"],\n [\"md:peer-data-[variant=inset]:peer-data-[state=collapsed]:\",\"ml\",\"space-md\",\"\"],\n [\"md:peer-data-[variant=inset]:\",\"rounded\",\"surface\",\"\"],\n [\"md:\",\"pt\",\"space-md\",\"\"],\n [\"md:\",\"rounded\",\"surface\",\"\"],\n [\"\",\"me\",\"space-2xl\",\"\"],\n [\"\",\"me\",\"space-2xs\",\"\"],\n [\"\",\"me\",\"space-lg\",\"\"],\n [\"\",\"me\",\"space-md\",\"\"],\n [\"\",\"me\",\"space-sm\",\"\"],\n [\"\",\"me\",\"space-xl\",\"\"],\n [\"\",\"me\",\"space-xs\",\"\"],\n [\"\",\"min-h\",\"action\",\"\"],\n [\"\",\"min-h\",\"action-lg\",\"\"],\n [\"\",\"min-h\",\"action-sm\",\"\"],\n [\"\",\"min-h\",\"action-xs\",\"\"],\n [\"\",\"min-h\",\"control\",\"\"],\n [\"\",\"min-h\",\"control-lg\",\"\"],\n [\"\",\"min-h\",\"control-sm\",\"\"],\n [\"\",\"min-h\",\"icon\",\"\"],\n [\"\",\"min-h\",\"icon-lg\",\"\"],\n [\"\",\"min-h\",\"shell-header\",\"\"],\n [\"\",\"min-h\",\"textarea\",\"\"],\n [\"\",\"min-h\",\"textarea-sm\",\"\"],\n [\"\",\"min-w\",\"action\",\"\"],\n [\"\",\"min-w\",\"action-lg\",\"\"],\n [\"\",\"min-w\",\"action-sm\",\"\"],\n [\"\",\"min-w\",\"action-xs\",\"\"],\n [\"\",\"ml\",\"control-gap-small\",\"\"],\n [\"\",\"ml\",\"space-2xl\",\"\"],\n [\"\",\"ml\",\"space-2xs\",\"\"],\n [\"\",\"ml\",\"space-lg\",\"\"],\n [\"\",\"ml\",\"space-md\",\"\"],\n [\"\",\"ml\",\"space-sm\",\"\"],\n [\"\",\"ml\",\"space-xl\",\"\"],\n [\"\",\"ml\",\"space-xs\",\"\"],\n [\"\",\"mr\",\"control-gap\",\"\"],\n [\"\",\"mr\",\"space-2xl\",\"\"],\n [\"\",\"mr\",\"space-2xs\",\"\"],\n [\"\",\"mr\",\"space-lg\",\"\"],\n [\"\",\"mr\",\"space-md\",\"\"],\n [\"\",\"mr\",\"space-sm\",\"\"],\n [\"\",\"mr\",\"space-xl\",\"\"],\n [\"\",\"mr\",\"space-xs\",\"\"],\n [\"\",\"ms\",\"space-2xl\",\"\"],\n [\"\",\"ms\",\"space-2xs\",\"\"],\n [\"\",\"ms\",\"space-lg\",\"\"],\n [\"\",\"ms\",\"space-md\",\"\"],\n [\"\",\"ms\",\"space-sm\",\"\"],\n [\"\",\"ms\",\"space-xl\",\"\"],\n [\"\",\"ms\",\"space-xs\",\"\"],\n [\"\",\"mt\",\"space-2xl\",\"\"],\n [\"\",\"mt\",\"space-2xs\",\"\"],\n [\"\",\"mt\",\"space-lg\",\"\"],\n [\"\",\"mt\",\"space-md\",\"\"],\n [\"\",\"mt\",\"space-sm\",\"\"],\n [\"\",\"mt\",\"space-xl\",\"\"],\n [\"\",\"mt\",\"space-xs\",\"\"],\n [\"\",\"mx\",\"space-2xl\",\"\"],\n [\"\",\"mx\",\"space-2xs\",\"\"],\n [\"\",\"mx\",\"space-lg\",\"\"],\n [\"\",\"mx\",\"space-md\",\"\"],\n [\"\",\"mx\",\"space-sm\",\"\"],\n [\"\",\"mx\",\"space-xl\",\"\"],\n [\"\",\"mx\",\"space-xs\",\"\"],\n [\"\",\"my\",\"space-2xl\",\"\"],\n [\"\",\"my\",\"space-2xs\",\"\"],\n [\"\",\"my\",\"space-lg\",\"\"],\n [\"\",\"my\",\"space-md\",\"\"],\n [\"\",\"my\",\"space-sm\",\"\"],\n [\"\",\"my\",\"space-xl\",\"\"],\n [\"\",\"my\",\"space-xs\",\"\"],\n [\"\",\"p\",\"space-2xl\",\"\"],\n [\"\",\"p\",\"space-2xs\",\"\"],\n [\"\",\"p\",\"space-lg\",\"\"],\n [\"\",\"p\",\"space-md\",\"\"],\n [\"\",\"p\",\"space-sm\",\"\"],\n [\"\",\"p\",\"space-xl\",\"\"],\n [\"\",\"p\",\"space-xs\",\"\"],\n [\"\",\"p\",\"surface\",\"\"],\n [\"\",\"p\",\"surface-lg\",\"\"],\n [\"\",\"p\",\"surface-sm\",\"\"],\n [\"\",\"p\",\"surface-xs\",\"\"],\n [\"\",\"pb\",\"space-2xl\",\"\"],\n [\"\",\"pb\",\"space-2xs\",\"\"],\n [\"\",\"pb\",\"space-lg\",\"\"],\n [\"\",\"pb\",\"space-md\",\"\"],\n [\"\",\"pb\",\"space-sm\",\"\"],\n [\"\",\"pb\",\"space-xl\",\"\"],\n [\"\",\"pb\",\"space-xs\",\"\"],\n [\"\",\"pb\",\"surface\",\"\"],\n [\"\",\"pb\",\"surface-lg\",\"\"],\n [\"\",\"pb\",\"surface-sm\",\"\"],\n [\"\",\"pb\",\"surface-xs\",\"\"],\n [\"\",\"pe\",\"action-sm\",\"\"],\n [\"\",\"pe\",\"control\",\"\"],\n [\"\",\"pe\",\"control-actions\",\"\"],\n [\"\",\"pe\",\"control-actions-sm\",\"\"],\n [\"\",\"pe\",\"control-addon\",\"\"],\n [\"\",\"pe\",\"control-addon-sm\",\"\"],\n [\"\",\"pe\",\"control-count\",\"\"],\n [\"\",\"pe\",\"control-count-sm\",\"\"],\n [\"\",\"pe\",\"control-icon\",\"\"],\n [\"\",\"pe\",\"control-icon-sm\",\"\"],\n [\"\",\"pe\",\"control-sm\",\"\"],\n [\"\",\"pe\",\"control-xs\",\"\"],\n [\"\",\"pe\",\"row-x\",\"\"],\n [\"\",\"pe\",\"space-2xl\",\"\"],\n [\"\",\"pe\",\"space-2xs\",\"\"],\n [\"\",\"pe\",\"space-lg\",\"\"],\n [\"\",\"pe\",\"space-md\",\"\"],\n [\"\",\"pe\",\"space-sm\",\"\"],\n [\"\",\"pe\",\"space-xl\",\"\"],\n [\"\",\"pe\",\"space-xs\",\"\"],\n [\"\",\"pe\",\"surface\",\"\"],\n [\"\",\"pe\",\"surface-lg\",\"\"],\n [\"\",\"pe\",\"surface-sm\",\"\"],\n [\"\",\"pe\",\"surface-xs\",\"\"],\n [\"peer-data-[sidebar=menu-sub-button]/menu-sub-button:\",\"top\",\"action-sm-center\",\"!\"],\n [\"peer-data-[sidebar=menu-sub-button]/menu-sub-button:\",\"top\",\"action-xs-center\",\"!\"],\n [\"peer-data-[size=lg]/menu-button:\",\"top\",\"action-lg-center\",\"!\"],\n [\"peer-data-[size=sm]/menu-button:\",\"top\",\"action-sm-center\",\"!\"],\n [\"\",\"pl\",\"row-x\",\"\"],\n [\"\",\"pl\",\"space-2xl\",\"\"],\n [\"\",\"pl\",\"space-2xs\",\"\"],\n [\"\",\"pl\",\"space-lg\",\"\"],\n [\"\",\"pl\",\"space-md\",\"\"],\n [\"\",\"pl\",\"space-sm\",\"\"],\n [\"\",\"pl\",\"space-xl\",\"\"],\n [\"\",\"pl\",\"space-xs\",\"\"],\n [\"\",\"pl\",\"surface\",\"\"],\n [\"\",\"pl\",\"surface-lg\",\"\"],\n [\"\",\"pl\",\"surface-sm\",\"\"],\n [\"\",\"pl\",\"surface-xs\",\"\"],\n [\"\",\"pr\",\"row-x\",\"\"],\n [\"\",\"pr\",\"space-2xl\",\"\"],\n [\"\",\"pr\",\"space-2xs\",\"\"],\n [\"\",\"pr\",\"space-lg\",\"\"],\n [\"\",\"pr\",\"space-md\",\"\"],\n [\"\",\"pr\",\"space-sm\",\"\"],\n [\"\",\"pr\",\"space-xl\",\"\"],\n [\"\",\"pr\",\"space-xs\",\"\"],\n [\"\",\"pr\",\"surface\",\"\"],\n [\"\",\"pr\",\"surface-lg\",\"\"],\n [\"\",\"pr\",\"surface-sm\",\"\"],\n [\"\",\"pr\",\"surface-xs\",\"\"],\n [\"\",\"ps\",\"control\",\"\"],\n [\"\",\"ps\",\"control-addon\",\"\"],\n [\"\",\"ps\",\"control-addon-sm\",\"\"],\n [\"\",\"ps\",\"control-icon\",\"\"],\n [\"\",\"ps\",\"control-icon-sm\",\"\"],\n [\"\",\"ps\",\"control-sm\",\"\"],\n [\"\",\"ps\",\"control-xs\",\"\"],\n [\"\",\"ps\",\"row-x\",\"\"],\n [\"\",\"ps\",\"space-2xl\",\"\"],\n [\"\",\"ps\",\"space-2xs\",\"\"],\n [\"\",\"ps\",\"space-lg\",\"\"],\n [\"\",\"ps\",\"space-md\",\"\"],\n [\"\",\"ps\",\"space-sm\",\"\"],\n [\"\",\"ps\",\"space-xl\",\"\"],\n [\"\",\"ps\",\"space-xs\",\"\"],\n [\"\",\"ps\",\"surface\",\"\"],\n [\"\",\"ps\",\"surface-lg\",\"\"],\n [\"\",\"ps\",\"surface-sm\",\"\"],\n [\"\",\"ps\",\"surface-xs\",\"\"],\n [\"\",\"pt\",\"space-2xl\",\"\"],\n [\"\",\"pt\",\"space-2xs\",\"\"],\n [\"\",\"pt\",\"space-lg\",\"\"],\n [\"\",\"pt\",\"space-md\",\"\"],\n [\"\",\"pt\",\"space-sm\",\"\"],\n [\"\",\"pt\",\"space-xl\",\"\"],\n [\"\",\"pt\",\"space-xs\",\"\"],\n [\"\",\"pt\",\"surface\",\"\"],\n [\"\",\"pt\",\"surface-lg\",\"\"],\n [\"\",\"pt\",\"surface-sm\",\"\"],\n [\"\",\"pt\",\"surface-xs\",\"\"],\n [\"\",\"px\",\"control\",\"\"],\n [\"\",\"px\",\"control-sm\",\"\"],\n [\"\",\"px\",\"control-xs\",\"\"],\n [\"\",\"px\",\"row-x\",\"\"],\n [\"\",\"px\",\"space-2xl\",\"\"],\n [\"\",\"px\",\"space-2xs\",\"\"],\n [\"\",\"px\",\"space-lg\",\"\"],\n [\"\",\"px\",\"space-md\",\"\"],\n [\"\",\"px\",\"space-sm\",\"\"],\n [\"\",\"px\",\"space-xl\",\"\"],\n [\"\",\"px\",\"space-xs\",\"\"],\n [\"\",\"px\",\"surface\",\"\"],\n [\"\",\"px\",\"surface-lg\",\"\"],\n [\"\",\"px\",\"surface-sm\",\"\"],\n [\"\",\"px\",\"surface-xs\",\"\"],\n [\"\",\"py\",\"control-y-offset\",\"\"],\n [\"\",\"py\",\"row-y\",\"\"],\n [\"\",\"py\",\"row-y-lg\",\"\"],\n [\"\",\"py\",\"row-y-sm\",\"\"],\n [\"\",\"py\",\"space-2xl\",\"\"],\n [\"\",\"py\",\"space-2xs\",\"\"],\n [\"\",\"py\",\"space-lg\",\"\"],\n [\"\",\"py\",\"space-md\",\"\"],\n [\"\",\"py\",\"space-sm\",\"\"],\n [\"\",\"py\",\"space-xl\",\"\"],\n [\"\",\"py\",\"space-xs\",\"\"],\n [\"\",\"py\",\"surface\",\"\"],\n [\"\",\"py\",\"surface-lg\",\"\"],\n [\"\",\"py\",\"surface-sm\",\"\"],\n [\"\",\"py\",\"surface-xs\",\"\"],\n [\"\",\"right\",\"control-px\",\"\"],\n [\"\",\"right\",\"space-2xl\",\"\"],\n [\"\",\"right\",\"space-2xs\",\"\"],\n [\"\",\"right\",\"space-lg\",\"\"],\n [\"\",\"right\",\"space-md\",\"\"],\n [\"\",\"right\",\"space-sm\",\"\"],\n [\"\",\"right\",\"space-xl\",\"\"],\n [\"\",\"right\",\"space-xs\",\"\"],\n [\"\",\"rounded-b\",\"surface\",\"\"],\n [\"\",\"rounded-e\",\"radius\",\"\"],\n [\"\",\"rounded\",\"radius\",\"\"],\n [\"\",\"rounded\",\"radius-lg\",\"\"],\n [\"\",\"rounded\",\"radius-md\",\"\"],\n [\"\",\"rounded\",\"radius-sm\",\"\"],\n [\"\",\"rounded\",\"radius-xl\",\"\"],\n [\"\",\"rounded\",\"radius-xs\",\"\"],\n [\"\",\"rounded-s\",\"radius\",\"\"],\n [\"\",\"rounded\",\"surface\",\"\"],\n [\"\",\"rounded-t\",\"radius-sm\",\"\"],\n [\"\",\"rounded-t\",\"surface\",\"\"],\n [\"rtl:data-[direction=back]:starting:\",\"translate-x\",\"space-lg\",\"\"],\n [\"rtl:data-[direction=forward]:starting:-\",\"translate-x\",\"space-lg\",\"\"],\n [\"\",\"size\",\"action\",\"\"],\n [\"\",\"size\",\"action-lg\",\"\"],\n [\"\",\"size\",\"action-sm\",\"\"],\n [\"\",\"size\",\"action-xs\",\"\"],\n [\"\",\"size\",\"avatar\",\"\"],\n [\"\",\"size\",\"avatar-lg\",\"\"],\n [\"\",\"size\",\"avatar-sm\",\"\"],\n [\"\",\"size\",\"control\",\"\"],\n [\"\",\"size\",\"control-clear\",\"\"],\n [\"\",\"size\",\"control-clear-icon\",\"\"],\n [\"\",\"size\",\"control-lg\",\"\"],\n [\"\",\"size\",\"control-sm\",\"\"],\n [\"\",\"size\",\"icon\",\"\"],\n [\"\",\"size\",\"icon-lg\",\"\"],\n [\"\",\"size\",\"icon-md\",\"\"],\n [\"\",\"size\",\"icon-sm\",\"\"],\n [\"\",\"size\",\"shell-header-control\",\"\"],\n [\"\",\"size\",\"upload-avatar\",\"\"],\n [\"\",\"size\",\"upload-avatar-large\",\"\"],\n [\"\",\"size\",\"upload-avatar-small\",\"\"],\n [\"sm:!\",\"pe\",\"control\",\"\"],\n [\"sm:!\",\"pe\",\"control-sm\",\"\"],\n [\"sm:!\",\"ps\",\"control\",\"\"],\n [\"sm:!\",\"ps\",\"control-sm\",\"\"],\n [\"sm:\",\"gap\",\"dense\",\"\"],\n [\"sm:\",\"gap\",\"normal\",\"\"],\n [\"sm:\",\"gap\",\"space-2xl\",\"\"],\n [\"sm:\",\"gap\",\"space-2xs\",\"\"],\n [\"sm:\",\"gap\",\"space-3xl\",\"\"],\n [\"sm:\",\"gap\",\"space-lg\",\"\"],\n [\"sm:\",\"gap\",\"space-md\",\"\"],\n [\"sm:\",\"gap\",\"space-sm\",\"\"],\n [\"sm:\",\"gap\",\"space-xl\",\"\"],\n [\"sm:\",\"gap\",\"space-xs\",\"\"],\n [\"sm:\",\"gap-x\",\"dense\",\"\"],\n [\"sm:\",\"gap-x\",\"normal\",\"\"],\n [\"sm:\",\"gap-x\",\"space-2xl\",\"\"],\n [\"sm:\",\"gap-x\",\"space-2xs\",\"\"],\n [\"sm:\",\"gap-x\",\"space-3xl\",\"\"],\n [\"sm:\",\"gap-x\",\"space-lg\",\"\"],\n [\"sm:\",\"gap-x\",\"space-md\",\"\"],\n [\"sm:\",\"gap-x\",\"space-sm\",\"\"],\n [\"sm:\",\"gap-x\",\"space-xl\",\"\"],\n [\"sm:\",\"gap-x\",\"space-xs\",\"\"],\n [\"sm:\",\"gap-y\",\"dense\",\"\"],\n [\"sm:\",\"gap-y\",\"normal\",\"\"],\n [\"sm:\",\"gap-y\",\"space-2xl\",\"\"],\n [\"sm:\",\"gap-y\",\"space-2xs\",\"\"],\n [\"sm:\",\"gap-y\",\"space-3xl\",\"\"],\n [\"sm:\",\"gap-y\",\"space-lg\",\"\"],\n [\"sm:\",\"gap-y\",\"space-md\",\"\"],\n [\"sm:\",\"gap-y\",\"space-sm\",\"\"],\n [\"sm:\",\"gap-y\",\"space-xl\",\"\"],\n [\"sm:\",\"gap-y\",\"space-xs\",\"\"],\n [\"sm:\",\"ms\",\"space-lg\",\"\"],\n [\"sm:\",\"px\",\"control-sm\",\"\"],\n [\"sm:\",\"px\",\"surface-lg\",\"\"],\n [\"\",\"space-x\",\"space-md\",\"\"],\n [\"\",\"space-y\",\"space-2xl\",\"\"],\n [\"\",\"space-y\",\"space-2xs\",\"\"],\n [\"\",\"space-y\",\"space-lg\",\"\"],\n [\"\",\"space-y\",\"space-md\",\"\"],\n [\"\",\"space-y\",\"space-sm\",\"\"],\n [\"\",\"space-y\",\"space-xl\",\"\"],\n [\"\",\"space-y\",\"space-xs\",\"\"],\n [\"\",\"start\",\"space-2xl\",\"\"],\n [\"\",\"start\",\"space-2xs\",\"\"],\n [\"\",\"start\",\"space-lg\",\"\"],\n [\"\",\"start\",\"space-md\",\"\"],\n [\"\",\"start\",\"space-sm\",\"\"],\n [\"\",\"start\",\"space-xl\",\"\"],\n [\"\",\"start\",\"space-xs\",\"\"],\n [\"starting:\",\"translate-y\",\"space-lg\",\"\"],\n [\"\",\"text\",\"pxs\",\"\"],\n [\"\",\"text\",\"xxs\",\"\"],\n [\"\",\"top\",\"action-center\",\"\"],\n [\"\",\"top\",\"action-center\",\"!\"],\n [\"\",\"top\",\"action-lg-center\",\"\"],\n [\"\",\"top\",\"action-sm-center\",\"\"],\n [\"\",\"top\",\"action-xs-center\",\"\"],\n [\"\",\"top\",\"control-y-offset\",\"\"],\n [\"\",\"top\",\"shell-header\",\"\"],\n [\"\",\"top\",\"space-2xl\",\"\"],\n [\"\",\"top\",\"space-2xs\",\"\"],\n [\"\",\"top\",\"space-lg\",\"\"],\n [\"\",\"top\",\"space-md\",\"\"],\n [\"\",\"top\",\"space-sm\",\"\"],\n [\"\",\"top\",\"space-xl\",\"\"],\n [\"\",\"top\",\"space-xs\",\"\"],\n [\"\",\"w\",\"action-sm\",\"\"],\n [\"\",\"w\",\"control\",\"\"],\n [\"\",\"w\",\"control-clear\",\"\"],\n [\"\",\"w\",\"control-lg\",\"\"],\n [\"\",\"w\",\"control-sm\",\"\"],\n [\"\",\"w\",\"shell-sidebar\",\"\"],\n [\"\",\"w\",\"shell-sidebar-icon-padded\",\"\"],\n [\"xl:\",\"gap\",\"dense\",\"\"],\n [\"xl:\",\"gap\",\"normal\",\"\"],\n [\"xl:\",\"gap\",\"space-2xl\",\"\"],\n [\"xl:\",\"gap\",\"space-2xs\",\"\"],\n [\"xl:\",\"gap\",\"space-3xl\",\"\"],\n [\"xl:\",\"gap\",\"space-lg\",\"\"],\n [\"xl:\",\"gap\",\"space-md\",\"\"],\n [\"xl:\",\"gap\",\"space-sm\",\"\"],\n [\"xl:\",\"gap\",\"space-xl\",\"\"],\n [\"xl:\",\"gap\",\"space-xs\",\"\"],\n [\"xl:\",\"gap-x\",\"dense\",\"\"],\n [\"xl:\",\"gap-x\",\"normal\",\"\"],\n [\"xl:\",\"gap-x\",\"space-2xl\",\"\"],\n [\"xl:\",\"gap-x\",\"space-2xs\",\"\"],\n [\"xl:\",\"gap-x\",\"space-3xl\",\"\"],\n [\"xl:\",\"gap-x\",\"space-lg\",\"\"],\n [\"xl:\",\"gap-x\",\"space-md\",\"\"],\n [\"xl:\",\"gap-x\",\"space-sm\",\"\"],\n [\"xl:\",\"gap-x\",\"space-xl\",\"\"],\n [\"xl:\",\"gap-x\",\"space-xs\",\"\"],\n [\"xl:\",\"gap-y\",\"dense\",\"\"],\n [\"xl:\",\"gap-y\",\"normal\",\"\"],\n [\"xl:\",\"gap-y\",\"space-2xl\",\"\"],\n [\"xl:\",\"gap-y\",\"space-2xs\",\"\"],\n [\"xl:\",\"gap-y\",\"space-3xl\",\"\"],\n [\"xl:\",\"gap-y\",\"space-lg\",\"\"],\n [\"xl:\",\"gap-y\",\"space-md\",\"\"],\n [\"xl:\",\"gap-y\",\"space-sm\",\"\"],\n [\"xl:\",\"gap-y\",\"space-xl\",\"\"],\n [\"xl:\",\"gap-y\",\"space-xs\",\"\"]\n];\n","import { clsx, type ClassValue } from \"clsx\"\nimport { extendTailwindMerge } from \"tailwind-merge\"\n\nimport { tokenClassGroups, tokenCandidates } from \"./token-merge.generated\"\n\n/**\n * Extend tailwind-merge so it knows our token-backed utilities\n * (`text-xxs`, `text-sm`, `h-control`, `px-control`, etc. defined in\n * css/token layers against CSS variables) belong to the same groups as\n * native Tailwind utilities.\n *\n * Without this, twMerge either groups custom text sizes with text-color\n * utilities or fails to dedupe token spacing against primitive defaults.\n */\nconst twMerge = extendTailwindMerge<\"arbitrary..font-size\">({\n\textend: {\n\t\tclassGroups: tokenClassGroups,\n\t\tconflictingClassGroups: {\n\t\t\t\"font-size\": [\"arbitrary..font-size\"],\n\t\t\t\"arbitrary..font-size\": [\"font-size\"],\n\t\t},\n\t},\n})\n\n/*\n * Rule 24's DOM contract: every public component stamps a\n * `{kebab-name}--component` hook, and named regions add `--header`, `--title`\n * and friends. Those are structural markers for consumers to select on, not\n * utilities — but tailwind-merge only sees a string, so a hook like\n * `text-button--component` reads as a `text-*` colour utility and annihilates\n * against the real colour beside it. Whichever came second won, silently:\n * TextButton lost its hook, TextLink lost its type colour.\n *\n * So hooks never reach tailwind-merge. The shape is deliberately strict —\n * kebab segments either side of one `--`, and nothing else — which excludes\n * every utility that merely contains dashes: `bg-[var(--brand)]` and\n * `text-(--brand)` carry brackets or parens, variants carry a colon, and\n * negative utilities lead with `-`.\n */\nconst BEM_HOOK = /^[a-z][a-z0-9]*(?:-[a-z0-9]+)*--[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/\nconst shippedTokenCandidates = new Set(tokenCandidates.map(([before, prefix, suffix, after]) => `${before}${prefix}-${suffix}${after}`))\nconst tokenUtilities = new Set(Object.values(tokenClassGroups).flatMap(groups => groups.flatMap(group => Object.entries(group).flatMap(([prefix, suffixes]) => suffixes.map(suffix => `${prefix}-${suffix}`)))))\n\nfunction isUnavailableTokenCandidate(candidate: string) {\n\tlet depth = 0\n\tlet start = 0\n\tfor (let index = 0; index < candidate.length; index++) {\n\t\tif (candidate[index] === '[' || candidate[index] === '(') depth++\n\t\telse if (candidate[index] === ']' || candidate[index] === ')') depth--\n\t\telse if (candidate[index] === ':' && depth === 0) start = index + 1\n\t}\n\tconst utility = candidate.slice(start).replace(/^!?-?/, '').replace(/!$/, '')\n\treturn tokenUtilities.has(utility) && !shippedTokenCandidates.has(candidate)\n}\n\nexport function cn(...inputs: ClassValue[]) {\n\tconst classes = clsx(inputs).split(/\\s+/).filter(Boolean)\n\tconst hooks = new Set(classes.filter((entry) => BEM_HOOK.test(entry)))\n\tconst opaque = new Set(classes.filter(isUnavailableTokenCandidate))\n\tif (hooks.size === 0 && opaque.size === 0) return twMerge(classes.join(' '))\n\n\t// Merge only real utilities, then preserve their last occurrence positions.\n\t// Keeping an earlier duplicate can move leading-none before a later text\n\t// size, making another cn() call discard a line height that already won.\n\t// Hooks keep their first position independently of utility precedence.\n\tconst survivors = new Set(\n\t\ttwMerge(classes.filter((entry) => !hooks.has(entry) && !opaque.has(entry)).join(' ')).split(/\\s+/).filter(Boolean),\n\t)\n\tconst lastUtilityIndex = new Map(classes.map((entry, index) => [entry, index]))\n\tconst emitted = new Set<string>()\n\n\treturn classes\n\t\t.filter((entry, index) => {\n\t\t\tif (emitted.has(entry)) return false\n\t\t\tif (!hooks.has(entry) && !opaque.has(entry) && !survivors.has(entry)) return false\n\t\t\tif (!hooks.has(entry) && lastUtilityIndex.get(entry) !== index) return false\n\t\t\temitted.add(entry)\n\t\t\treturn true\n\t\t})\n\t\t.join(' ')\n}\n"],"mappings":";;;AACA,IAAaA,IAAmB;CAC9BC,KAAO,CACL,EACEA,KAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACAC,GAAK,CACH,EACEA,GAAK;EACH;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACA,SAAS,CACP,EACE,SAAS;EACP;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACAC,IAAM,CACJ,EACEA,IAAM;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACAC,GAAK,CACH,EACEA,GAAK;EACH;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACAC,IAAM,CACJ,EACEA,IAAM;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACAC,IAAM,CACJ,EACEA,IAAM;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACAC,IAAM,CACJ,EACEA,IAAM;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACAC,IAAM,CACJ,EACEA,IAAM;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACAC,OAAS,CACP,EACEA,OAAS;EACP;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACAC,SAAW,CACT,EACEA,SAAW;EACT;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACAC,MAAQ,CACN,EACEA,MAAQ;EACN;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACAC,GAAK,CACH,EACEA,GAAK;EACH;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACAC,IAAM,CACJ,EACEA,IAAM;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACAC,IAAM,CACJ,EACEA,IAAM;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACAC,IAAM,CACJ,EACEA,IAAM;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACAC,IAAM,CACJ,EACEA,IAAM;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACA,WAAW,CACT,EACE,WAAW,CACT,YACA,UACF,EACF,CACF;CACA,SAAS,CACP,EACE,SAAS;EACP;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACA,SAAS,CACP,EACE,SAAS;EACP;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACAC,KAAO,CACL,EACEA,KAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACAC,OAAS,CACP,EACEA,OAAS;EACP;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACA,WAAW,CACT,EACE,WAAW;EACT;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACAC,GAAK,CACH,EACEA,GAAK;EACH;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACAC,QAAU,CACR,EACEA,QAAU;EACR;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACA,eAAe,CACb,EACE,eAAe,CACb,UACF,EACF,CACF;CACAC,IAAM,CACJ,EACEA,IAAM;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACAC,KAAO,CACL,EACEA,KAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACA,aAAa,CACX,EACEC,MAAQ,CACN,OACA,KACF,EACF,CACF;CACA,eAAe,CACb,EACEC,MAAQ,CACN,SACF,EACF,CACF;CACA,aAAa,CACX,EACE,aAAa,CACX,QACF,EACF,CACF;CACA,aAAa,CACX,EACE,aAAa,CACX,QACF,EACF,CACF;CACA,aAAa,CACX,EACE,aAAa;EACX;EACA;EACA;CACF,EACF,CACF;CACA,aAAa,CACX,EACE,aAAa,CACX,UACA,SACF,EACF,CACF;CACAC,IAAM,CACJ,EACEA,IAAM;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACAC,IAAM,CACJ,EACEA,IAAM;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACA,WAAW,CACT,EACE,WAAW;EACT;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACAC,MAAQ,CACN,EACEA,MAAQ;EACN;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACA,WAAW,CACT,EACE,WAAW;EACT;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACA,SAAS,CACP,EACE,SAAS;EACP;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACAC,IAAM,CACJ,EACEA,IAAM;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACA,SAAS,CACP,EACE,SAAS;EACP;EACA;EACA;EACA;CACF,EACF,CACF;CACAC,IAAM,CACJ,EACEA,IAAM;EACJ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,EACF,CACF;CACAC,IAAM,CACJ,EACEA,I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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"value-typography-uAmWUAL1.js","names":["useInRunningText","formatWithMinusSign","formatter","value","part","formatNumber","options","locale","formatPercentage","ratio","scaled","DURATION_FACTORS","DURATION_INPUT_FACTORS","formatDuration","maximumFractionDigits","minimumFractionDigits","safeMaxParts","maxParts","negative","totalMilliseconds","from","zeroUnit","unitProbe","populatedUnitIndexes","index","factor","amount","roundingIncrement","remaining","startIndex","milliseconds","parts","isLastPart","signedAmount","useValueTypography","inText","props","role","emptyValueTypography","resolved","explicitWeight"],"sources":["../src/lib/format.ts","../src/components/primitives/value-typography.ts"],"sourcesContent":["/**\n * Shared formatting constants and helpers for display components.\n *\n * `EMPTY` — em-dash used as the canonical placeholder for missing/null values\n * across Money and the package's display primitives. Keeping it\n * centralised lets the library swap to \"—\" / \"N/A\" / locale-specific glyphs in\n * one place if needed.\n *\n * `formatCurrency` / `formatNumber` / `formatPercentage` / `formatDuration`\n * are thin wrappers around `Intl.NumberFormat` plus a duration helper. They\n * default to the user's resolved locale (`undefined` → system default) but\n * accept a `locale` override so callers can pin output for tests or\n * dual-currency UIs.\n */\nexport const EMPTY = '—';\n\n/** U+2212 MINUS SIGN. Intl emits U+002D HYPHEN-MINUS for negatives in most locales. */\nexport const MINUS_SIGN = '\\u2212';\n\n/**\n * Formats with Intl and draws a negative sign as U+2212, the typographic minus\n * commerce surfaces already use: it has the width of a digit, so signed values\n * align in tabular columns. Only the hyphen-minus inside the `minusSign` part\n * changes, so locale minus forms and bidi marks (fa, he, ar) survive.\n */\nexport function formatWithMinusSign(formatter: Intl.NumberFormat, value: number): string {\n\treturn formatter\n\t\t.formatToParts(value)\n\t\t.map((part) => (part.type === 'minusSign' ? part.value.replace('-', MINUS_SIGN) : part.value))\n\t\t.join('');\n}\n\nexport interface FormatNumberOptions {\n\tlocale?: string;\n\tminimumFractionDigits?: number;\n\tmaximumFractionDigits?: number;\n\tnotation?: Intl.NumberFormatOptions['notation'];\n}\n\nexport function formatNumber(value: number, options: FormatNumberOptions = {}): string {\n\tif (!Number.isFinite(value)) return EMPTY;\n\tconst {\n\t\tlocale,\n\t\tminimumFractionDigits,\n\t\tmaximumFractionDigits,\n\t\tnotation,\n\t} = options;\n\treturn formatWithMinusSign(new Intl.NumberFormat(locale, {\n\t\tminimumFractionDigits,\n\t\tmaximumFractionDigits,\n\t\tnotation,\n\t}), value);\n}\n\nexport interface FormatCurrencyOptions extends FormatNumberOptions {\n\tcurrency?: string;\n\tcurrencyDisplay?: 'symbol' | 'narrowSymbol' | 'code' | 'name';\n}\n\nexport function formatCurrency(value: number, options: FormatCurrencyOptions = {}): string {\n\tif (!Number.isFinite(value)) return EMPTY;\n\tconst {\n\t\tlocale,\n\t\tcurrency = 'EUR',\n\t\tcurrencyDisplay = 'symbol',\n\t\tminimumFractionDigits,\n\t\tmaximumFractionDigits,\n\t\tnotation,\n\t} = options;\n\ttry {\n\t\treturn formatWithMinusSign(new Intl.NumberFormat(locale, {\n\t\t\tstyle: 'currency',\n\t\t\tcurrency,\n\t\t\tcurrencyDisplay,\n\t\t\tminimumFractionDigits,\n\t\t\tmaximumFractionDigits,\n\t\t\tnotation,\n\t\t}), value);\n\t} catch {\n\t\t// Unknown / unsupported currency code — fall back to plain number + code suffix.\n\t\treturn `${formatNumber(value, options)} ${currency}`;\n\t}\n}\n\nexport interface FormatPercentageOptions extends FormatNumberOptions {\n\t/** When true, treat `value` as already a percentage (e.g. 12.5 → \"12.5%\"). Default: false (0.125 → \"12.5%\"). */\n\tscaled?: boolean;\n}\n\nexport function formatPercentage(value: number, options: FormatPercentageOptions = {}): string {\n\tif (!Number.isFinite(value)) return EMPTY;\n\tconst { locale, minimumFractionDigits, maximumFractionDigits = 1, scaled = false } = options;\n\tconst ratio = scaled ? value / 100 : value;\n\treturn formatWithMinusSign(new Intl.NumberFormat(locale, {\n\t\tstyle: 'percent',\n\t\tminimumFractionDigits,\n\t\tmaximumFractionDigits,\n\t}), ratio);\n}\n\n/** Input and display options for localized duration formatting. Seconds and\n * narrow units are the calibrated defaults. */\nexport type DurationUnit = 'milliseconds' | 'seconds' | 'minutes' | 'hours' | 'days';\nexport type DurationUnitDisplay = 'narrow' | 'short' | 'long';\n\nexport interface FormatDurationOptions {\n\t/** Unit used by the incoming value. Defaults to seconds. */\n\tfrom?: DurationUnit;\n\t/** BCP-47 locale passed to Intl.NumberFormat. */\n\tlocale?: string;\n\t/** Number of non-zero units to show. Defaults to all five units. */\n\tmaxParts?: number;\n\t/** Intl unit-label style. `narrow` provides the compact `1h 5m` default. */\n\tunitDisplay?: DurationUnitDisplay;\n\tminimumFractionDigits?: number;\n\tmaximumFractionDigits?: number;\n}\n\nconst DURATION_FACTORS = [\n\t{ unit: 'day', milliseconds: 86_400_000 },\n\t{ unit: 'hour', milliseconds: 3_600_000 },\n\t{ unit: 'minute', milliseconds: 60_000 },\n\t{ unit: 'second', milliseconds: 1_000 },\n\t{ unit: 'millisecond', milliseconds: 1 },\n] as const;\n\nconst DURATION_INPUT_FACTORS: Record<DurationUnit, number> = {\n\tmilliseconds: 1,\n\tseconds: 1_000,\n\tminutes: 60_000,\n\thours: 3_600_000,\n\tdays: 86_400_000,\n};\n\n/**\n * Format a duration into localized unit parts. Values use seconds and compact\n * unit labels by default; pass `from` to select another input unit.\n */\nexport function formatDuration(value: number, options: FormatDurationOptions = {}): string {\n\tif (!Number.isFinite(value)) return EMPTY;\n\n\tconst {\n\t\tfrom = 'seconds',\n\t\tlocale,\n\t\tmaxParts = DURATION_FACTORS.length,\n\t\tunitDisplay = 'narrow',\n\t\tminimumFractionDigits,\n\t} = options;\n\tconst maximumFractionDigits = Math.max(\n\t\tminimumFractionDigits ?? 0,\n\t\toptions.maximumFractionDigits ?? 0,\n\t);\n\tconst safeMaxParts = Math.max(1, Math.floor(maxParts));\n\tconst negative = value < 0;\n\tlet totalMilliseconds = Math.abs(value) * DURATION_INPUT_FACTORS[from];\n\n\t// The calibrated seconds default rounds to the nearest whole second unless\n\t// fractional precision is explicitly requested, including below one second.\n\tif (\n\t\tfrom === 'seconds'\n\t\t&& options.minimumFractionDigits === undefined\n\t\t&& options.maximumFractionDigits === undefined\n\t) {\n\t\ttotalMilliseconds = Math.round(totalMilliseconds / 1_000) * 1_000;\n\t}\n\n\tif (totalMilliseconds === 0) {\n\t\tconst zeroUnit = from === 'milliseconds' ? 'millisecond' : 'second';\n\t\treturn new Intl.NumberFormat(locale, {\n\t\t\tstyle: 'unit',\n\t\t\tunit: zeroUnit,\n\t\t\tunitDisplay,\n\t\t\tminimumFractionDigits,\n\t\t\tmaximumFractionDigits,\n\t\t}).format(0);\n\t}\n\n\t// Round at the smallest unit that will be displayed before decomposing the\n\t// value. This lets carries propagate normally instead of producing invalid\n\t// output such as `59m 60s` or `23h 60m` at a max-parts boundary.\n\tlet unitProbe = totalMilliseconds;\n\tconst populatedUnitIndexes: number[] = [];\n\tfor (let index = 0; index < DURATION_FACTORS.length; index += 1) {\n\t\tconst factor = DURATION_FACTORS[index];\n\t\tconst amount = Math.floor(unitProbe / factor.milliseconds);\n\t\tif (amount > 0) populatedUnitIndexes.push(index);\n\t\tunitProbe -= amount * factor.milliseconds;\n\t}\n\tconst roundingUnitIndex = populatedUnitIndexes[\n\t\tMath.min(safeMaxParts, populatedUnitIndexes.length) - 1\n\t] ?? DURATION_FACTORS.length - 1;\n\tconst roundingUnit = DURATION_FACTORS[roundingUnitIndex];\n\tconst roundingIncrement = roundingUnit.milliseconds / (10 ** maximumFractionDigits);\n\ttotalMilliseconds = Math.round(totalMilliseconds / roundingIncrement) * roundingIncrement;\n\n\tif (totalMilliseconds === 0) {\n\t\tconst zeroUnit = from === 'milliseconds' ? 'millisecond' : 'second';\n\t\treturn new Intl.NumberFormat(locale, {\n\t\t\tstyle: 'unit',\n\t\t\tunit: zeroUnit,\n\t\t\tunitDisplay,\n\t\t\tminimumFractionDigits,\n\t\t\tmaximumFractionDigits,\n\t\t}).format(0);\n\t}\n\n\tlet remaining = totalMilliseconds;\n\n\tconst startIndex = Math.max(\n\t\t0,\n\t\tDURATION_FACTORS.findIndex(({ milliseconds }) => remaining >= milliseconds),\n\t);\n\tconst parts: string[] = [];\n\n\tfor (let index = startIndex; index < DURATION_FACTORS.length && parts.length < safeMaxParts; index += 1) {\n\t\tconst factor = DURATION_FACTORS[index];\n\t\tconst isLastPart = parts.length === safeMaxParts - 1 || index === DURATION_FACTORS.length - 1;\n\t\tconst amount = isLastPart ? remaining / factor.milliseconds : Math.floor(remaining / factor.milliseconds);\n\t\tconst visibleAmount = isLastPart\n\t\t\t? Math.round(amount * (10 ** maximumFractionDigits)) / (10 ** maximumFractionDigits)\n\t\t\t: amount;\n\t\tif (visibleAmount <= 0) continue;\n\n\t\tconst signedAmount = negative && parts.length === 0 ? -amount : amount;\n\t\tparts.push(formatWithMinusSign(new Intl.NumberFormat(locale, {\n\t\t\tstyle: 'unit',\n\t\t\tunit: factor.unit,\n\t\t\tunitDisplay,\n\t\t\tminimumFractionDigits: isLastPart ? minimumFractionDigits : 0,\n\t\t\tmaximumFractionDigits: isLastPart ? maximumFractionDigits : 0,\n\t\t}), signedAmount));\n\t\tremaining -= Math.floor(amount) * factor.milliseconds;\n\t}\n\n\treturn parts.join(' ');\n}\n","import type { TextSize } from '../../lib/ui-provider';\nimport { useInRunningText } from '../typography/running-text';\nimport type { TextProps } from '../typography/text';\n\ntype TextType = NonNullable<TextProps['type']>;\ntype TextWeight = NonNullable<TextProps['weight']>;\ntype TextLineHeight = NonNullable<TextProps['lineHeight']>;\n\n/** Typography props a value primitive accepts and passes to `Text`. */\nexport interface ValueTypographyProps {\n\tsize?: TextSize;\n\ttype?: TextProps['type'];\n\tweight?: TextProps['weight'];\n\tlineHeight?: TextProps['lineHeight'];\n}\n\n/** Resolved typography; `undefined` size means the provider default. */\nexport interface ValueTypography {\n\tsize: TextSize | undefined;\n\ttype: TextType;\n\tweight: TextWeight;\n\tlineHeight: TextLineHeight | undefined;\n}\n\n/** Standalone role of a value primitive. */\nexport interface ValueTypographyRole {\n\t/** Colour role outside running text. */\n\ttype: TextType;\n\t/** Weight outside running text. */\n\tweight: TextWeight;\n\t/** Size outside running text; the provider default when omitted. */\n\tsize?: TextSize;\n\t/**\n\t * Keep the colour role inside running text. Secondary, muted and empty values\n\t * stay recessive in a sentence; ordinary values take the sentence colour.\n\t */\n\tkeepType?: boolean;\n\t/**\n\t * Leading inside running text. Defaults to the surrounding leading. A span in\n\t * another font family (monospace) uses `none` so its own ascent and descent\n\t * never grow the sentence's line box; the line keeps the sentence leading.\n\t */\n\tinTextLineHeight?: TextLineHeight;\n}\n\n/**\n * Resolves what a value primitive passes to `Text`. Explicit props always win.\n * Inside running text (a `Text`, `Heading`, label, link or value parent) unset\n * size, colour, weight and leading inherit the surrounding text, so an SKU or an\n * amount in a sentence matches the words around it. A standalone value keeps\n * its role defaults and the provider text size.\n */\nexport function useValueTypography(props: ValueTypographyProps, role: ValueTypographyRole): ValueTypography {\n\tconst inText = useInRunningText();\n\treturn {\n\t\tsize: props.size ?? (inText ? 'inherit' : role.size),\n\t\ttype: props.type ?? (inText && !role.keepType ? 'inherit' : role.type),\n\t\tweight: props.weight ?? (inText ? 'inherit' : role.weight),\n\t\tlineHeight: props.lineHeight ?? (inText ? role.inTextLineHeight ?? 'inherit' : undefined),\n\t};\n}\n\n/**\n * The shared missing-value treatment (`EmptyValue`): secondary colour and a\n * regular weight at the value's size. An explicit weight is kept; inside\n * running text the weight follows the sentence.\n */\nexport function emptyValueTypography(resolved: ValueTypography, explicitWeight: TextProps['weight']): ValueTypography {\n\treturn {\n\t\t...resolved,\n\t\ttype: 'secondary',\n\t\tweight: explicitWeight ?? (resolved.weight === 'inherit' ? 'inherit' : 'regular'),\n\t};\n}\n"],"mappings":"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"}
|