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
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { v as e } from "./ui-provider-C-74NVLc.js";
|
|
3
|
+
import { useStrings as t } from "./lib/strings.js";
|
|
4
|
+
import { t as n } from "./utils-DhuoqFy4.js";
|
|
5
|
+
import { n as r } from "./buttons-DeW0bQeK.js";
|
|
6
|
+
import { c as i } from "./typography-C7-YMW1S.js";
|
|
7
|
+
import { i as a } from "./text.styles-B64My8RZ.js";
|
|
8
|
+
import { t as o } from "./structure-DZJ2wbAU.js";
|
|
9
|
+
import { i as s } from "./tone-recipes-BPsRAvhu.js";
|
|
10
|
+
import { t as c } from "./row-recipes-DL8n7t_b.js";
|
|
11
|
+
import { t as l } from "./progress-DZFXXzPs.js";
|
|
12
|
+
import { t as u } from "./skeleton-DDgdhmu9.js";
|
|
13
|
+
import { forwardRef as d } from "react";
|
|
14
|
+
import { Fragment as f, jsx as p, jsxs as m } from "react/jsx-runtime";
|
|
15
|
+
import { AlertCircle as h, Loader2 as g } from "lucide-react";
|
|
16
|
+
import { cva as _ } from "class-variance-authority";
|
|
17
|
+
//#region src/components/ui/empty.tsx
|
|
18
|
+
function v({ className: e, ...t }) {
|
|
19
|
+
return /* @__PURE__ */ p("div", {
|
|
20
|
+
"data-slot": "empty",
|
|
21
|
+
className: n("box-border flex w-full min-w-0 flex-1 flex-col items-center justify-center text-center text-balance", e),
|
|
22
|
+
...t
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
function y({ className: e, ...t }) {
|
|
26
|
+
return /* @__PURE__ */ p("div", {
|
|
27
|
+
"data-slot": "empty-header",
|
|
28
|
+
className: n("flex max-w-sm flex-col items-center", e),
|
|
29
|
+
...t
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
var b = _("mb-space-md flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0", {
|
|
33
|
+
variants: { variant: {
|
|
34
|
+
default: "bg-transparent",
|
|
35
|
+
icon: "bg-muted text-foreground flex size-avatar-lg shrink-0 items-center justify-center rounded-radius [&_svg:not([class*='size-'])]:size-[calc(var(--icon)*1.5)]"
|
|
36
|
+
} },
|
|
37
|
+
defaultVariants: { variant: "default" }
|
|
38
|
+
});
|
|
39
|
+
function x({ className: e, variant: t = "default", ...r }) {
|
|
40
|
+
return /* @__PURE__ */ p("div", {
|
|
41
|
+
"data-slot": "empty-icon",
|
|
42
|
+
"data-variant": t,
|
|
43
|
+
className: n(b({
|
|
44
|
+
variant: t,
|
|
45
|
+
className: e
|
|
46
|
+
})),
|
|
47
|
+
...r
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
function S({ className: e, ...t }) {
|
|
51
|
+
return /* @__PURE__ */ p("div", {
|
|
52
|
+
"data-slot": "empty-title",
|
|
53
|
+
className: n("text-lg font-medium tracking-tight", e),
|
|
54
|
+
...t
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
function C({ className: e, ...t }) {
|
|
58
|
+
return /* @__PURE__ */ p("div", {
|
|
59
|
+
"data-slot": "empty-description",
|
|
60
|
+
className: n("text-sm/relaxed text-muted-foreground [&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4", e),
|
|
61
|
+
...t
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
function w({ className: e, ...t }) {
|
|
65
|
+
return /* @__PURE__ */ p("div", {
|
|
66
|
+
"data-slot": "empty-content",
|
|
67
|
+
className: n("text-sm flex w-full max-w-sm min-w-0 flex-col items-center text-balance", e),
|
|
68
|
+
...t
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
//#endregion
|
|
72
|
+
//#region src/components/base/feedback/empty.tsx
|
|
73
|
+
function T(e) {
|
|
74
|
+
return typeof e == "string" || typeof e == "number" || typeof e == "bigint";
|
|
75
|
+
}
|
|
76
|
+
function E({ className: e, ...t }) {
|
|
77
|
+
return /* @__PURE__ */ p(v, {
|
|
78
|
+
className: n("empty--component gap-space-lg rounded-surface p-surface", e),
|
|
79
|
+
...t
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
function D({ className: e, ...t }) {
|
|
83
|
+
return /* @__PURE__ */ p(y, {
|
|
84
|
+
className: n("empty-header--component gap-normal", e),
|
|
85
|
+
...t
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
function O({ className: e, ...t }) {
|
|
89
|
+
return /* @__PURE__ */ p(x, {
|
|
90
|
+
className: n("empty-media--component mb-space-sm", e),
|
|
91
|
+
...t
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
function k({ className: e, headingLevel: t = 3, role: r, "aria-level": a, children: o, ...s }) {
|
|
95
|
+
let c = r ?? "heading";
|
|
96
|
+
return /* @__PURE__ */ p(S, {
|
|
97
|
+
role: c,
|
|
98
|
+
"aria-level": a ?? (c === "heading" ? t : void 0),
|
|
99
|
+
className: n("empty-title--component tracking-normal", e),
|
|
100
|
+
...s,
|
|
101
|
+
children: T(o) ? /* @__PURE__ */ p(i, {
|
|
102
|
+
tag: "span",
|
|
103
|
+
size: "base",
|
|
104
|
+
weight: "semibold",
|
|
105
|
+
lineHeight: "tight",
|
|
106
|
+
children: o
|
|
107
|
+
}) : o
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
function A({ className: e, children: t, ...r }) {
|
|
111
|
+
return /* @__PURE__ */ p(C, {
|
|
112
|
+
className: n("empty-description--component", e),
|
|
113
|
+
...r,
|
|
114
|
+
children: T(t) ? /* @__PURE__ */ p(i, {
|
|
115
|
+
tag: "span",
|
|
116
|
+
type: "secondary",
|
|
117
|
+
lineHeight: "relaxed",
|
|
118
|
+
children: t
|
|
119
|
+
}) : t
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
function j({ className: e, children: t, ...r }) {
|
|
123
|
+
return /* @__PURE__ */ p(w, {
|
|
124
|
+
className: n("empty-content--component gap-space-md", e),
|
|
125
|
+
...r,
|
|
126
|
+
children: T(t) ? /* @__PURE__ */ p(i, { children: t }) : t
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
E.displayName = "Empty", D.displayName = "EmptyHeader", O.displayName = "EmptyMedia", k.displayName = "EmptyTitle", A.displayName = "EmptyDescription", j.displayName = "EmptyContent";
|
|
130
|
+
//#endregion
|
|
131
|
+
//#region src/components/base/feedback/state-display.strings.ts
|
|
132
|
+
var M = {
|
|
133
|
+
title: "Something went wrong",
|
|
134
|
+
description: "Please try again.",
|
|
135
|
+
retry: "Try again"
|
|
136
|
+
}, N = {
|
|
137
|
+
inline: "w-full max-w-full py-row-y",
|
|
138
|
+
panel: "w-full border"
|
|
139
|
+
}, P = {
|
|
140
|
+
neutral: "rounded-surface p-surface border-border bg-card text-card-foreground",
|
|
141
|
+
destructive: `rounded-radius px-row-x ${c.default} gap-x-space-lg ${s.destructive.edge} ${s.destructive.wash} text-card-foreground`
|
|
142
|
+
};
|
|
143
|
+
function F(e) {
|
|
144
|
+
return typeof e == "string" || typeof e == "number" || typeof e == "bigint";
|
|
145
|
+
}
|
|
146
|
+
var I = d(function({ componentClassName: t, variant: r, tone: s, icon: c, title: l, description: u, action: d, details: f, className: h, ...g }, _) {
|
|
147
|
+
let v = t.replace("--component", ""), { defaultTextSize: y } = e();
|
|
148
|
+
return /* @__PURE__ */ m("div", {
|
|
149
|
+
ref: _,
|
|
150
|
+
"data-variant": r,
|
|
151
|
+
"data-tone": s,
|
|
152
|
+
className: n(a({
|
|
153
|
+
size: y,
|
|
154
|
+
type: "inherit"
|
|
155
|
+
}), t, "box-border grid min-w-0 grid-cols-[auto_minmax(0,1fr)] items-start gap-x-space-sm", "sm:grid-cols-[auto_minmax(0,1fr)_auto]", N[r], r === "panel" && P[s], h),
|
|
156
|
+
...g,
|
|
157
|
+
children: [
|
|
158
|
+
/* @__PURE__ */ p("span", {
|
|
159
|
+
"aria-hidden": "true",
|
|
160
|
+
className: n(`${v}--icon`, "mt-space-2xs inline-flex size-icon shrink-0 items-center justify-center"),
|
|
161
|
+
children: c
|
|
162
|
+
}),
|
|
163
|
+
(l !== void 0 || u !== void 0) && /* @__PURE__ */ m("div", {
|
|
164
|
+
className: n(`${v}--message`, "grid min-w-0", r === "inline" ? "gap-dense" : "gap-normal"),
|
|
165
|
+
children: [l !== void 0 && (F(l) ? /* @__PURE__ */ p(i, {
|
|
166
|
+
tag: "span",
|
|
167
|
+
type: "inherit",
|
|
168
|
+
weight: "semibold",
|
|
169
|
+
className: n(`${v}--title`, "block min-w-0"),
|
|
170
|
+
children: l
|
|
171
|
+
}) : /* @__PURE__ */ p("div", {
|
|
172
|
+
className: n(`${v}--title`, "min-w-0"),
|
|
173
|
+
children: l
|
|
174
|
+
})), u !== void 0 && (F(u) ? /* @__PURE__ */ p(i, {
|
|
175
|
+
tag: "span",
|
|
176
|
+
size: r === "inline" ? "xs" : void 0,
|
|
177
|
+
type: "secondary",
|
|
178
|
+
className: n(`${v}--description`, "block min-w-0"),
|
|
179
|
+
children: u
|
|
180
|
+
}) : /* @__PURE__ */ p("div", {
|
|
181
|
+
className: n(`${v}--description`, "min-w-0"),
|
|
182
|
+
children: u
|
|
183
|
+
}))]
|
|
184
|
+
}),
|
|
185
|
+
d !== void 0 && /* @__PURE__ */ p("div", {
|
|
186
|
+
className: n(`${v}--action`, "col-start-2 row-start-2 mt-space-sm justify-self-start", "sm:col-start-3 sm:row-start-1 sm:mt-0 sm:justify-self-end sm:self-start"),
|
|
187
|
+
children: d
|
|
188
|
+
}),
|
|
189
|
+
f !== void 0 && /* @__PURE__ */ p(o, {
|
|
190
|
+
gap: "md",
|
|
191
|
+
className: n(`${v}--details`, "col-start-2 col-end-[-1] mt-space-md"),
|
|
192
|
+
children: f
|
|
193
|
+
})
|
|
194
|
+
]
|
|
195
|
+
});
|
|
196
|
+
});
|
|
197
|
+
I.displayName = "StateDisplayFrame";
|
|
198
|
+
var L = d(function({ label: e, description: t, progress: n, variant: r = "inline", skeleton: i = !1, lines: a = 3, icon: o, className: s, ...c }, d) {
|
|
199
|
+
let h = typeof n == "number" ? Math.min(100, Math.max(0, n)) : void 0;
|
|
200
|
+
return /* @__PURE__ */ p(I, {
|
|
201
|
+
ref: d,
|
|
202
|
+
role: "status",
|
|
203
|
+
"aria-live": "polite",
|
|
204
|
+
componentClassName: "loading-state--component",
|
|
205
|
+
variant: r,
|
|
206
|
+
tone: "neutral",
|
|
207
|
+
icon: o ?? /* @__PURE__ */ p(g, { className: "size-icon animate-spin text-muted-foreground" }),
|
|
208
|
+
title: e,
|
|
209
|
+
description: t,
|
|
210
|
+
details: h !== void 0 || i ? /* @__PURE__ */ m(f, { children: [h !== void 0 && /* @__PURE__ */ p(l, {
|
|
211
|
+
value: h,
|
|
212
|
+
size: "sm",
|
|
213
|
+
showValue: !1,
|
|
214
|
+
"aria-label": typeof e == "string" ? e : void 0
|
|
215
|
+
}), i === !0 ? /* @__PURE__ */ p(u, { lines: a }) : i] }) : void 0,
|
|
216
|
+
className: s,
|
|
217
|
+
...c
|
|
218
|
+
});
|
|
219
|
+
});
|
|
220
|
+
L.displayName = "LoadingState";
|
|
221
|
+
var R = d(function({ title: e, description: n, action: i, onRetry: a, retryLabel: o, strings: s, variant: c = "panel", icon: l, className: u, ...d }, f) {
|
|
222
|
+
let m = t(M, s), g = o === void 0 ? m.retry : o, _ = i ?? (a && g ? /* @__PURE__ */ p(r, {
|
|
223
|
+
type: "button",
|
|
224
|
+
size: c === "inline" ? "sm" : void 0,
|
|
225
|
+
onClick: a,
|
|
226
|
+
children: g
|
|
227
|
+
}) : void 0);
|
|
228
|
+
return /* @__PURE__ */ p(I, {
|
|
229
|
+
ref: f,
|
|
230
|
+
role: "alert",
|
|
231
|
+
componentClassName: "error-state--component",
|
|
232
|
+
variant: c,
|
|
233
|
+
tone: "destructive",
|
|
234
|
+
icon: l ?? /* @__PURE__ */ p(h, { className: "size-icon text-destructive" }),
|
|
235
|
+
title: e === void 0 ? m.title : e,
|
|
236
|
+
description: n === void 0 ? m.description : n,
|
|
237
|
+
action: _,
|
|
238
|
+
className: u,
|
|
239
|
+
...d
|
|
240
|
+
});
|
|
241
|
+
});
|
|
242
|
+
R.displayName = "ErrorState";
|
|
243
|
+
//#endregion
|
|
244
|
+
export { j as a, O as c, E as i, k as l, L as n, A as o, M as r, D as s, R as t };
|
|
245
|
+
|
|
246
|
+
//# sourceMappingURL=feedback-Dzo1xtAU.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feedback-Dzo1xtAU.js","names":["Empty","EmptyHeader","EmptyMedia","EmptyTitle","EmptyDescription","EmptyContent","isSimpleText","EmptyPrimitive","EmptyHeaderPrimitive","EmptyMediaPrimitive","EmptyTitlePrimitive","EmptyDescriptionPrimitive","EmptyContentPrimitive","_Fragment","useTypographyConfig","cn","Button","Text","resolveTextClassNames","Stack","toneRecipes","rowBlockPaddingClasses","Progress","ContentSkeleton","Fragment$1","Empty$1","props","className","EmptyHeader$1","emptyMediaVariants","cva","EmptyMedia$1","variant","EmptyTitle$1","EmptyDescription$1","EmptyContent$1","isSimpleText$1","value","Empty","EmptyHeader","EmptyMedia","EmptyTitle","ariaLevel","resolvedRole","role","headingLevel","children","EmptyDescription","EmptyContent","defaultErrorStateStrings","frameVariantClass","frameToneClass","isSimpleText","StateDisplayFrame","forwardRef","regionPrefix","componentClassName","tone","defaultTextSize","icon","title","description","action","details","LoadingState","resolvedProgress","progress","Loader2","label","skeleton","ErrorState","stringsProp","strings","useStrings","resolvedRetryLabel","retryLabel","retryAction","onRetry","AlertCircle"],"sources":["../src/components/ui/empty.tsx","../src/components/base/feedback/empty.tsx","../src/components/base/feedback/state-display.strings.ts","../src/components/base/feedback/state-display.tsx"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Empty({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty\"\n className={cn(\n // No border style here: without preflight a bare `border-dashed` paints a\n // 3px currentColor frame. Callers that want a frame add a semantic border.\n \"box-border flex w-full min-w-0 flex-1 flex-col items-center justify-center text-center text-balance\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction EmptyHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty-header\"\n className={cn(\n \"flex max-w-sm flex-col items-center\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst emptyMediaVariants = cva(\n \"mb-space-md flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n icon: \"bg-muted text-foreground flex size-avatar-lg shrink-0 items-center justify-center rounded-radius [&_svg:not([class*='size-'])]:size-[calc(var(--icon)*1.5)]\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction EmptyMedia({\n className,\n variant = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof emptyMediaVariants>) {\n return (\n <div\n data-slot=\"empty-icon\"\n data-variant={variant}\n className={cn(emptyMediaVariants({ variant, className }))}\n {...props}\n />\n )\n}\n\nfunction EmptyTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty-title\"\n className={cn(\"text-lg font-medium tracking-tight\", className)}\n {...props}\n />\n )\n}\n\nfunction EmptyDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <div\n data-slot=\"empty-description\"\n className={cn(\n \"text-sm/relaxed text-muted-foreground [&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction EmptyContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty-content\"\n className={cn(\n \"text-sm flex w-full max-w-sm min-w-0 flex-col items-center text-balance\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Empty,\n EmptyHeader,\n EmptyTitle,\n EmptyDescription,\n EmptyContent,\n EmptyMedia,\n}\n","/**\n * Tokenized low-level empty-state parts.\n *\n * Use the blocks `EmptyState` for an opinionated ready-made state. These\n * parts are for consumers that need to assemble their own media/content/action\n * anatomy without importing the internal shadcn primitive.\n */\nimport type { ComponentProps, ReactNode } from 'react';\n\nimport {\n\tEmpty as EmptyPrimitive,\n\tEmptyContent as EmptyContentPrimitive,\n\tEmptyDescription as EmptyDescriptionPrimitive,\n\tEmptyHeader as EmptyHeaderPrimitive,\n\tEmptyMedia as EmptyMediaPrimitive,\n\tEmptyTitle as EmptyTitlePrimitive,\n} from '../../ui/empty';\nimport { Text } from '../../typography';\nimport { cn } from '../../../lib/utils';\n\nexport type EmptyProps = ComponentProps<typeof EmptyPrimitive>;\nexport type EmptyContentProps = ComponentProps<typeof EmptyContentPrimitive>;\nexport type EmptyDescriptionProps = ComponentProps<typeof EmptyDescriptionPrimitive>;\nexport type EmptyHeaderProps = ComponentProps<typeof EmptyHeaderPrimitive>;\nexport type EmptyMediaProps = ComponentProps<typeof EmptyMediaPrimitive>;\nexport interface EmptyTitleProps extends ComponentProps<typeof EmptyTitlePrimitive> {\n\t/** Accessible heading level used by the default `role=\"heading\"` output. */\n\theadingLevel?: 2 | 3 | 4 | 5 | 6;\n}\n\nfunction isSimpleText(value: ReactNode): value is string | number | bigint {\n\treturn typeof value === 'string' || typeof value === 'number' || typeof value === 'bigint';\n}\n\n/** Root layout for a consumer-blocks empty state. */\nexport function Empty({ className, ...props }: EmptyProps) {\n\treturn (\n\t\t<EmptyPrimitive\n\t\t\tclassName={cn('empty--component gap-space-lg rounded-surface p-surface', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\n/** Centered title and description stack. */\nexport function EmptyHeader({ className, ...props }: EmptyHeaderProps) {\n\treturn <EmptyHeaderPrimitive className={cn('empty-header--component gap-normal', className)} {...props} />;\n}\n\n/** Optional icon or illustration region. */\nexport function EmptyMedia({ className, ...props }: EmptyMediaProps) {\n\treturn <EmptyMediaPrimitive className={cn('empty-media--component mb-space-sm', className)} {...props} />;\n}\n\n/** Empty-state heading calibrated to the admin typography scale. */\nexport function EmptyTitle({ className, headingLevel = 3, role, 'aria-level': ariaLevel, children, ...props }: EmptyTitleProps) {\n\tconst resolvedRole = role ?? 'heading';\n\treturn (\n\t\t<EmptyTitlePrimitive\n\t\t\trole={resolvedRole}\n\t\t\taria-level={ariaLevel ?? (resolvedRole === 'heading' ? headingLevel : undefined)}\n\t\t\tclassName={cn('empty-title--component tracking-normal', className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{isSimpleText(children) ? (\n\t\t\t\t<Text tag=\"span\" size=\"base\" weight=\"semibold\" lineHeight=\"tight\">\n\t\t\t\t\t{children}\n\t\t\t\t</Text>\n\t\t\t) : children}\n\t\t</EmptyTitlePrimitive>\n\t);\n}\n\n/** Supporting explanation for the absence of content. */\nexport function EmptyDescription({ className, children, ...props }: EmptyDescriptionProps) {\n\treturn (\n\t\t<EmptyDescriptionPrimitive className={cn('empty-description--component', className)} {...props}>\n\t\t\t{isSimpleText(children) ? (\n\t\t\t\t<Text tag=\"span\" type=\"secondary\" lineHeight=\"relaxed\">\n\t\t\t\t\t{children}\n\t\t\t\t</Text>\n\t\t\t) : children}\n\t\t</EmptyDescriptionPrimitive>\n\t);\n}\n\n/** Actions or next-step content rendered below the explanation. */\nexport function EmptyContent({ className, children, ...props }: EmptyContentProps) {\n\treturn (\n\t\t<EmptyContentPrimitive className={cn('empty-content--component gap-space-md', className)} {...props}>\n\t\t\t{isSimpleText(children) ? <Text>{children}</Text> : children}\n\t\t</EmptyContentPrimitive>\n\t);\n}\n\nEmpty.displayName = 'Empty';\nEmptyHeader.displayName = 'EmptyHeader';\nEmptyMedia.displayName = 'EmptyMedia';\nEmptyTitle.displayName = 'EmptyTitle';\nEmptyDescription.displayName = 'EmptyDescription';\nEmptyContent.displayName = 'EmptyContent';\n","export interface ErrorStateStrings {\n\t/** Default heading when no error-specific title was supplied. */\n\ttitle: string;\n\t/** Default guidance when no error-specific description was supplied. */\n\tdescription: string;\n\t/** Label of the recovery action when `onRetry` is supplied. */\n\tretry: string;\n}\n\nexport const defaultErrorStateStrings: ErrorStateStrings = {\n\ttitle: 'Something went wrong',\n\tdescription: 'Please try again.',\n\tretry: 'Try again',\n};\n","/**\n * Shared async-state presentations for bounded admin surfaces.\n *\n * `inline` is a compact, chrome-free status for menus, table regions, and\n * existing panels. `panel` owns one deliberate frame so consumers do not\n * have to recreate card padding around loading and error states. Loading and\n * error use the same icon/message/action grid, which keeps transitions between\n * states visually stable.\n */\nimport { AlertCircle, Loader2 } from 'lucide-react';\nimport {\n\tforwardRef,\n\ttype ComponentPropsWithoutRef,\n\ttype ReactNode,\n} from 'react';\n\nimport { Button } from '../buttons';\nimport { Stack } from '../structure';\nimport { Text } from '../../typography';\nimport { resolveTextClassNames } from '../../typography/text.styles';\nimport { useTypographyConfig } from '../../../lib/ui-provider';\nimport { cn } from '../../../lib/utils';\nimport { useStrings, type StringsProp } from '../../../lib/strings';\n\nimport { Progress } from './progress';\nimport { ContentSkeleton } from '../skeleton/skeleton';\nimport { toneRecipes } from '../../../lib/tone-recipes';\nimport { rowBlockPaddingClasses } from '../../../lib/row-recipes';\nimport { defaultErrorStateStrings, type ErrorStateStrings } from './state-display.strings';\n\nexport { defaultErrorStateStrings, type ErrorStateStrings } from './state-display.strings';\n\ntype DivProps = ComponentPropsWithoutRef<'div'>;\ntype StateDisplayVariant = 'inline' | 'panel';\ntype StateDisplayTone = 'neutral' | 'destructive';\n\ninterface StateDisplayFrameProps extends Omit<DivProps, 'title'> {\n\tcomponentClassName: string;\n\t/** `inline` is chrome-free; `panel` owns one framed surface. */\n\tvariant: StateDisplayVariant;\n\ttone: StateDisplayTone;\n\t/** Leading glyph beside the message. */\n\ticon: ReactNode;\n\t/** Heading above the description. */\n\ttitle?: ReactNode;\n\t/** Supporting copy under the label. */\n\tdescription?: ReactNode;\n\t/** Control offered alongside the message. */\n\taction?: ReactNode;\n\tdetails?: ReactNode;\n}\n\nconst frameVariantClass: Record<StateDisplayVariant, string> = {\n\tinline: 'w-full max-w-full py-row-y',\n\tpanel: 'w-full border',\n};\n\n// The neutral panel is a loading surface and keeps the surface inset. The tinted\n// destructive panel is a notice, so it takes Alert's row geometry (corner, row\n// insets and media gap) and a failure reads the same as a destructive Alert.\nconst frameToneClass: Record<StateDisplayTone, string> = {\n\tneutral: 'rounded-surface p-surface border-border bg-card text-card-foreground',\n\tdestructive: `rounded-radius px-row-x ${rowBlockPaddingClasses.default} gap-x-space-lg ${toneRecipes.destructive.edge} ${toneRecipes.destructive.wash} text-card-foreground`,\n};\n\nfunction isSimpleText(value: ReactNode): value is string | number | bigint {\n\treturn typeof value === 'string' || typeof value === 'number' || typeof value === 'bigint';\n}\n\nconst StateDisplayFrame = forwardRef<HTMLDivElement, StateDisplayFrameProps>(\n\tfunction StateDisplayFrame({\n\t\tcomponentClassName,\n\t\tvariant,\n\t\ttone,\n\t\ticon,\n\t\ttitle,\n\t\tdescription,\n\t\taction,\n\t\tdetails,\n\t\tclassName,\n\t\t...props\n\t}, ref) {\n\t\tconst regionPrefix = componentClassName.replace('--component', '');\n\t\tconst { defaultTextSize } = useTypographyConfig();\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tref={ref}\n\t\t\t\tdata-variant={variant}\n\t\t\t\tdata-tone={tone}\n\t\t\t\tclassName={cn(\n\t\t\t\t\tresolveTextClassNames({ size: defaultTextSize, type: 'inherit' }),\n\t\t\t\t\tcomponentClassName,\n\t\t\t\t\t'box-border grid min-w-0 grid-cols-[auto_minmax(0,1fr)] items-start gap-x-space-sm',\n\t\t\t\t\t'sm:grid-cols-[auto_minmax(0,1fr)_auto]',\n\t\t\t\t\tframeVariantClass[variant],\n\t\t\t\t\tvariant === 'panel' && frameToneClass[tone],\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<span\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t`${regionPrefix}--icon`,\n\t\t\t\t\t\t'mt-space-2xs inline-flex size-icon shrink-0 items-center justify-center',\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{icon}\n\t\t\t\t</span>\n\t\t\t\t{(title !== undefined || description !== undefined) && (\n\t\t\t\t\t<div className={cn(`${regionPrefix}--message`, 'grid min-w-0', variant === 'inline' ? 'gap-dense' : 'gap-normal')}>\n\t\t\t\t\t\t{title !== undefined && (\n\t\t\t\t\t\t\tisSimpleText(title) ? (\n\t\t\t\t\t\t\t\t<Text tag=\"span\" type=\"inherit\" weight=\"semibold\" className={cn(`${regionPrefix}--title`, 'block min-w-0')}>\n\t\t\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t) : <div className={cn(`${regionPrefix}--title`, 'min-w-0')}>{title}</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{description !== undefined && (\n\t\t\t\t\t\t\tisSimpleText(description) ? (\n\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t\t\t\t\tsize={variant === 'inline' ? 'xs' : undefined}\n\t\t\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\t\t\tclassName={cn(`${regionPrefix}--description`, 'block min-w-0')}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{description}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<div className={cn(`${regionPrefix}--description`, 'min-w-0')}>\n\t\t\t\t\t\t\t\t\t{description}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t{action !== undefined && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t`${regionPrefix}--action`,\n\t\t\t\t\t\t\t'col-start-2 row-start-2 mt-space-sm justify-self-start',\n\t\t\t\t\t\t\t'sm:col-start-3 sm:row-start-1 sm:mt-0 sm:justify-self-end sm:self-start',\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{action}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t{details !== undefined && (\n\t\t\t\t\t<Stack\n\t\t\t\t\t\tgap=\"md\"\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t`${regionPrefix}--details`,\n\t\t\t\t\t\t\t'col-start-2 col-end-[-1] mt-space-md',\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{details}\n\t\t\t\t\t</Stack>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t},\n);\nStateDisplayFrame.displayName = 'StateDisplayFrame';\n\nexport type LoadingStateVariant = StateDisplayVariant;\n\nexport interface LoadingStateProps extends DivProps {\n\t/** Primary line of the state message. */\n\tlabel?: ReactNode;\n\t/** Supporting copy under the label. */\n\tdescription?: ReactNode;\n\t/** Completion percentage, 0-100, for determinate loading. */\n\tprogress?: number;\n\t/** `inline` (default) for a chrome-free status inside an existing region; `panel` for one framed surface. */\n\tvariant?: LoadingStateVariant;\n\t/** Renders placeholder bars instead of a message. */\n\tskeleton?: boolean | ReactNode;\n\t/** How many skeleton bars to draw. */\n\tlines?: number;\n\t/** Leading glyph beside the message. Defaults to a spinning loader. */\n\ticon?: ReactNode;\n}\n\nexport const LoadingState = forwardRef<HTMLDivElement, LoadingStateProps>(\n\tfunction LoadingState({\n\t\tlabel,\n\t\tdescription,\n\t\tprogress,\n\t\tvariant = 'inline',\n\t\tskeleton = false,\n\t\tlines = 3,\n\t\ticon,\n\t\tclassName,\n\t\t...props\n\t}, ref) {\n\t\tconst resolvedProgress = typeof progress === 'number'\n\t\t\t? Math.min(100, Math.max(0, progress))\n\t\t\t: undefined;\n\t\tconst details = resolvedProgress !== undefined || skeleton\n\t\t\t? (\n\t\t\t\t<>\n\t\t\t\t\t{resolvedProgress !== undefined && (\n\t\t\t\t\t\t<Progress\n\t\t\t\t\t\t\tvalue={resolvedProgress}\n\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\tshowValue={false}\n\t\t\t\t\t\t\taria-label={typeof label === 'string' ? label : undefined}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t\t{skeleton === true ? <ContentSkeleton lines={lines} /> : skeleton}\n\t\t\t\t</>\n\t\t\t)\n\t\t\t: undefined;\n\n\t\treturn (\n\t\t\t<StateDisplayFrame\n\t\t\t\tref={ref}\n\t\t\t\trole=\"status\"\n\t\t\t\taria-live=\"polite\"\n\t\t\t\tcomponentClassName=\"loading-state--component\"\n\t\t\t\tvariant={variant}\n\t\t\t\ttone=\"neutral\"\n\t\t\t\ticon={icon ?? (\n\t\t\t\t\t<Loader2 className=\"size-icon animate-spin text-muted-foreground\" />\n\t\t\t\t)}\n\t\t\t\ttitle={label}\n\t\t\t\tdescription={description}\n\t\t\t\tdetails={details}\n\t\t\t\tclassName={className}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t);\n\t},\n);\nLoadingState.displayName = 'LoadingState';\n\nexport type ErrorStateVariant = StateDisplayVariant;\n\nexport interface ErrorStateProps extends Omit<DivProps, 'title'> {\n\t/** Default error copy. Explicit title, description and retryLabel props win. */\n\tstrings?: StringsProp<ErrorStateStrings>;\n\t/** Heading above the description. */\n\ttitle?: ReactNode;\n\t/** Supporting copy under the label. */\n\tdescription?: ReactNode;\n\t/** Control offered alongside the message. */\n\taction?: ReactNode;\n\t/** Renders a retry button (with `retryLabel`) that calls this. Ignored when `action` is set. */\n\tonRetry?: () => void;\n\t/** Copy for the retry action in the error state. */\n\tretryLabel?: ReactNode;\n\t/** `panel` (default) for one framed surface; `inline` for a chrome-free status inside an existing region. */\n\tvariant?: ErrorStateVariant;\n\t/** Leading glyph beside the message. Defaults to an alert icon. */\n\ticon?: ReactNode;\n}\n\nexport const ErrorState = forwardRef<HTMLDivElement, ErrorStateProps>(\n\tfunction ErrorState({\n\t\ttitle,\n\t\tdescription,\n\t\taction,\n\t\tonRetry,\n\t\tretryLabel,\n\t\tstrings: stringsProp,\n\t\tvariant = 'panel',\n\t\ticon,\n\t\tclassName,\n\t\t...props\n\t}, ref) {\n\t\tconst strings = useStrings(defaultErrorStateStrings, stringsProp);\n\t\tconst resolvedRetryLabel = retryLabel === undefined ? strings.retry : retryLabel;\n\t\t// Retrying recovers; it destroys nothing. The default (neutral outline)\n\t\t// button keeps red for the failure itself, not the way out of it.\n\t\tconst retryAction = action ?? (onRetry && resolvedRetryLabel ? (\n\t\t\t<Button\n\t\t\t\ttype=\"button\"\n\t\t\t\tsize={variant === 'inline' ? 'sm' : undefined}\n\t\t\t\tonClick={onRetry}\n\t\t\t>\n\t\t\t\t{resolvedRetryLabel}\n\t\t\t</Button>\n\t\t) : undefined);\n\n\t\treturn (\n\t\t\t<StateDisplayFrame\n\t\t\t\tref={ref}\n\t\t\t\trole=\"alert\"\n\t\t\t\tcomponentClassName=\"error-state--component\"\n\t\t\t\tvariant={variant}\n\t\t\t\ttone=\"destructive\"\n\t\t\t\ticon={icon ?? <AlertCircle className=\"size-icon text-destructive\" />}\n\t\t\t\ttitle={title === undefined ? strings.title : title}\n\t\t\t\tdescription={description === undefined ? strings.description : description}\n\t\t\t\taction={retryAction}\n\t\t\t\tclassName={className}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t);\n\t},\n);\nErrorState.displayName = 'ErrorState';\n"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as e } from "./affordance-geometry.generated-P-aVJisu.js";
|
|
2
2
|
import { t } from "./focus-recipes-B653VaLq.js";
|
|
3
|
-
import { t as n } from "./interaction-recipes-
|
|
3
|
+
import { t as n } from "./interaction-recipes-4wZ2tvfb.js";
|
|
4
4
|
import { XIcon as r } from "lucide-react";
|
|
5
5
|
//#region src/lib/field-affordance-recipes.ts
|
|
6
6
|
var i = r, a = {
|
|
@@ -38,4 +38,4 @@ var i = r, a = {
|
|
|
38
38
|
//#endregion
|
|
39
39
|
export { a as n, o as r, i as t };
|
|
40
40
|
|
|
41
|
-
//# sourceMappingURL=field-affordance-recipes-
|
|
41
|
+
//# sourceMappingURL=field-affordance-recipes-D6H7tVJi.js.map
|
package/dist/{field-affordance-recipes-DWcNcOjh.js.map → field-affordance-recipes-D6H7tVJi.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field-affordance-recipes-
|
|
1
|
+
{"version":3,"file":"field-affordance-recipes-D6H7tVJi.js","names":["affordanceGeometry","interactionRecipes","FieldClearGlyph","XIcon","fieldAffordanceRecipes","focusRecipes","selectToggleRecipes"],"sources":["../src/lib/field-affordance-recipes.ts"],"sourcesContent":["import { XIcon } from 'lucide-react';\nimport { affordanceGeometry } from './affordance-geometry.generated';\nimport { focusRecipes } from './focus-recipes';\nimport { interactionRecipes } from './interaction-recipes';\n\n/**\n * The one clear glyph: a plain X drawn at `fieldAffordanceRecipes.icon`, never a\n * circled X, so Input, Textarea, Cascader and Combobox clear actions match.\n */\nexport const FieldClearGlyph = XIcon;\n\n/** Field affordances have one target/clearance owner. Primitives own behavior. */\nexport const fieldAffordanceRecipes = {\n\t/** Content-sized targets for a chip/reaction that already owns its chrome. */\n\tinline: `${interactionRecipes.nativeButtonReset} inline-flex shrink-0 items-center justify-center rounded-radius outline-none transition-[color,box-shadow]`,\n\ttarget: `${interactionRecipes.nativeButtonReset} inline-flex size-control-clear shrink-0 items-center justify-center rounded-radius outline-none transition-[color,box-shadow]`,\n\tfocus: `focus-visible:z-10 ${focusRecipes.edge} disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50`,\n\tclear: 'text-muted-foreground hover:text-foreground',\n\ttoggle: 'text-muted-foreground hover:bg-accent hover:text-accent-foreground',\n\ticon: 'size-control-clear-icon shrink-0 max-h-full max-w-full',\n\tcentered: 'absolute top-1/2 -translate-y-1/2',\n\tclearEnd: affordanceGeometry.clearEnd,\n\tclearPadding: affordanceGeometry.clearPadding,\n\ttogglePadding: affordanceGeometry.togglePadding,\n\ttextareaCountPadding: affordanceGeometry.textareaCountPadding,\n\tmeasuredPadding: affordanceGeometry.measuredPadding,\n\tmeasuredStartPadding: affordanceGeometry.measuredStartPadding,\n\tpairedClearPadding: affordanceGeometry.pairedClearPadding,\n\tpairedIconPadding: affordanceGeometry.pairedIconPadding,\n\tpairedAddonPadding: affordanceGeometry.pairedAddonPadding,\n\tpairedCountPadding: affordanceGeometry.pairedCountPadding,\n} as const;\n\n/**\n * Select-like toggles share one chevron geometry: the glyph scales with the\n * control size, and the toggle track is offset by half the difference between\n * its 1.375rem target and the glyph, so the chevron centres where a Select\n * trigger draws its own (inside the 1px border plus the control padding).\n * Written from the root tokens so scoped density and spacing apply.\n */\nexport const selectToggleRecipes = {\n\ticon: { sm: 'size-icon-sm', md: 'size-icon', lg: 'size-icon-lg' },\n\ttrack: affordanceGeometry.selectToggleTrack,\n\t/**\n\t * Text clearance for an editable field with the toggle track: the track offset,\n\t * the whole 1.375rem target (not only its glyph) and the spaced copy gap, so a\n\t * value never runs under the target at any density or spacing.\n\t */\n\tpadding: affordanceGeometry.selectTogglePadding,\n\t/** The same clearance when a clear target precedes the toggle in the track. */\n\tclearPadding: {\n\t\tsm: 'pe-[calc((var(--control-x)*0.8333333+0.625rem)*var(--space-scale)+1px+(4.125rem*var(--density-scale)+var(--icon)*0.75)/2)]',\n\t\tmd: 'pe-[calc((var(--control-x)+0.625rem)*var(--space-scale)+1px+(4.125rem*var(--density-scale)+var(--icon))/2)]',\n\t\tlg: 'pe-[calc((var(--control-x)+0.625rem)*var(--space-scale)+1px+(4.125rem*var(--density-scale)+var(--icon)*1.25)/2)]',\n\t},\n} as const satisfies Record<string, Record<'sm' | 'md' | 'lg', string>>;\n"],"mappings":";;;;;AASA,IAAaE,IAAkBC,GAGlBC,IAAyB;CAErC,QAAQ,GAAGH,EAAmB,kBAAkB;CAChD,QAAQ,GAAGA,EAAmB,kBAAkB;CAChD,OAAO,sBAAsBI,EAAa,KAAK;CAC/C,OAAO;CACP,QAAQ;CACR,MAAM;CACN,UAAU;CACV,UAAUL,EAAmB;CAC7B,cAAcA,EAAmB;CACjC,eAAeA,EAAmB;CAClC,sBAAsBA,EAAmB;CACzC,iBAAiBA,EAAmB;CACpC,sBAAsBA,EAAmB;CACzC,oBAAoBA,EAAmB;CACvC,mBAAmBA,EAAmB;CACtC,oBAAoBA,EAAmB;CACvC,oBAAoBA,EAAmB;AACxC,GASaM,IAAsB;CAClC,MAAM;EAAE,IAAI;EAAgB,IAAI;EAAa,IAAI;CAAe;CAChE,OAAON,EAAmB;CAM1B,SAASA,EAAmB;CAE5B,cAAc;EACb,IAAI;EACJ,IAAI;EACJ,IAAI;CACL;AACD"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
//#region src/lib/field-control-attributes.ts
|
|
2
|
+
function e(e, t) {
|
|
3
|
+
let n = e ? !0 : t ?? e;
|
|
4
|
+
return {
|
|
5
|
+
invalid: !!(n && n !== "false"),
|
|
6
|
+
ariaInvalid: n
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
function t(e, ...t) {
|
|
10
|
+
if (e) return (n) => {
|
|
11
|
+
let { currentTarget: r, relatedTarget: i } = n;
|
|
12
|
+
!r.contains(i) && !t.some((e) => e.current?.contains(i)) && e(n);
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
//#endregion
|
|
16
|
+
export { e as n, t };
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=field-control-attributes-B6i335wr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field-control-attributes-B6i335wr.js","names":["resolveFieldInvalid","state","invalid","ariaInvalid","fieldBoundaryBlur","otherSurfaces","onBlur","event","currentTarget","relatedTarget","surface"],"sources":["../src/lib/field-control-attributes.ts"],"sourcesContent":["import type { AriaAttributes, FocusEventHandler, RefObject } from 'react';\n\nexport interface FieldControlAttributes extends Pick<AriaAttributes,\n\t'aria-label' | 'aria-labelledby' | 'aria-describedby' | 'aria-invalid'\n> {\n\t/** ID of the field's interactive target or group. */\n\tid?: string;\n}\n\nexport function resolveFieldInvalid(invalid: boolean | undefined, ariaInvalid: AriaAttributes['aria-invalid']) {\n\tconst state = invalid ? true : ariaInvalid ?? invalid;\n\treturn { invalid: Boolean(state && state !== 'false'), ariaInvalid: state };\n}\n\n/** Treat the visible field and its portaled content as one focus boundary. */\nexport function fieldBoundaryBlur<T extends HTMLElement>(\n\tonBlur: FocusEventHandler<T> | undefined,\n\t...otherSurfaces: RefObject<HTMLElement | null>[]\n): FocusEventHandler<T> | undefined {\n\tif (!onBlur) return undefined;\n\treturn event => {\n\t\tconst { currentTarget, relatedTarget } = event;\n\t\tif (!currentTarget.contains(relatedTarget) &&\n\t\t\t!otherSurfaces.some(surface => surface.current?.contains(relatedTarget))) {\n\t\t\tonBlur(event);\n\t\t}\n\t};\n}\n"],"mappings":";AASA,SAAgBA,EAAoB,GAA8B,GAA6C;CAC9G,IAAMC,IAAQC,IAAU,KAAOC,KAAeD;CAC9C,OAAO;EAAE,SAAS,GAAQD,KAASA,MAAU;EAAU,aAAaA;CAAM;AAC3E;AAGA,SAAgBG,EACf,GACA,GAAGC,GACgC;CACnC,IAAKC,GACL,QAAO,MAAS;EACf,IAAM,EAAE,kBAAe,qBAAkBC;EACzC,AAAI,CAACC,EAAc,SAASC,CAAa,KACxC,CAACJ,EAAc,MAAK,MAAWK,EAAQ,SAAS,SAASD,CAAa,CAAC,KACvEH,EAAOC,CAAK;CAEd;AACD"}
|
|
@@ -4,9 +4,11 @@ var t = {
|
|
|
4
4
|
focus: e.frame,
|
|
5
5
|
invalid: "aria-invalid:border-destructive aria-invalid:focus-visible:border-destructive aria-invalid:focus-visible:ring-destructive/30 dark:aria-invalid:focus-visible:ring-destructive/50",
|
|
6
6
|
groupFocus: "has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-3 has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50",
|
|
7
|
-
groupInvalid: "has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:has-[[data-slot=input-group-control]:focus-visible]:border-destructive has-[[data-slot][aria-invalid=true]]:has-[[data-slot=input-group-control]:focus-visible]:ring-destructive/30 dark:has-[[data-slot][aria-invalid=true]]:has-[[data-slot=input-group-control]:focus-visible]:ring-destructive/50"
|
|
7
|
+
groupInvalid: "has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:has-[[data-slot=input-group-control]:focus-visible]:border-destructive has-[[data-slot][aria-invalid=true]]:has-[[data-slot=input-group-control]:focus-visible]:ring-destructive/30 dark:has-[[data-slot][aria-invalid=true]]:has-[[data-slot=input-group-control]:focus-visible]:ring-destructive/50",
|
|
8
|
+
editorFocus: "has-[[data-slot=editor-field]:focus-visible]:border-ring has-[[data-slot=editor-field]:focus-visible]:ring-3 has-[[data-slot=editor-field]:focus-visible]:ring-ring/50",
|
|
9
|
+
editorInvalid: "has-[[data-slot=editor-field][aria-invalid=true]]:border-destructive has-[[data-slot=editor-field][aria-invalid=true]]:has-[[data-slot=editor-field]:focus-visible]:border-destructive has-[[data-slot=editor-field][aria-invalid=true]]:has-[[data-slot=editor-field]:focus-visible]:ring-destructive/30 dark:has-[[data-slot=editor-field][aria-invalid=true]]:has-[[data-slot=editor-field]:focus-visible]:ring-destructive/50"
|
|
8
10
|
};
|
|
9
11
|
//#endregion
|
|
10
12
|
export { t };
|
|
11
13
|
|
|
12
|
-
//# sourceMappingURL=field-state-recipes-
|
|
14
|
+
//# sourceMappingURL=field-state-recipes-7sza8QbC.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field-state-recipes-
|
|
1
|
+
{"version":3,"file":"field-state-recipes-7sza8QbC.js","names":["focusRecipes","fieldStateRecipes"],"sources":["../src/lib/field-state-recipes.ts"],"sourcesContent":["import { focusRecipes } from './focus-recipes';\n\n/** Native fields and field-shaped triggers share one frame-state contract.\n * Focus is the shared frame recipe: the 1px frame takes --ring inside a soft\n * halo. Validation marks the frame with the destructive border; a focused\n * invalid field keeps that border and shows the halo in the destructive color.\n * Editable values retain the semantic foreground. Compound fields apply the same\n * state to their outer frame, never each child.\n */\nexport const fieldStateRecipes = {\n\tfocus: focusRecipes.frame,\n\tinvalid: 'aria-invalid:border-destructive aria-invalid:focus-visible:border-destructive aria-invalid:focus-visible:ring-destructive/30 dark:aria-invalid:focus-visible:ring-destructive/50',\n\tgroupFocus: 'has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-3 has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50',\n\tgroupInvalid: 'has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:has-[[data-slot=input-group-control]:focus-visible]:border-destructive has-[[data-slot][aria-invalid=true]]:has-[[data-slot=input-group-control]:focus-visible]:ring-destructive/30 dark:has-[[data-slot][aria-invalid=true]]:has-[[data-slot=input-group-control]:focus-visible]:ring-destructive/50',\n\teditorFocus: 'has-[[data-slot=editor-field]:focus-visible]:border-ring has-[[data-slot=editor-field]:focus-visible]:ring-3 has-[[data-slot=editor-field]:focus-visible]:ring-ring/50',\n\teditorInvalid: 'has-[[data-slot=editor-field][aria-invalid=true]]:border-destructive has-[[data-slot=editor-field][aria-invalid=true]]:has-[[data-slot=editor-field]:focus-visible]:border-destructive has-[[data-slot=editor-field][aria-invalid=true]]:has-[[data-slot=editor-field]:focus-visible]:ring-destructive/30 dark:has-[[data-slot=editor-field][aria-invalid=true]]:has-[[data-slot=editor-field]:focus-visible]:ring-destructive/50',\n} as const;\n"],"mappings":";;AASA,IAAaC,IAAoB;CAChC,OAAOD,EAAa;CACpB,SAAS;CACT,YAAY;CACZ,cAAc;CACd,aAAa;CACb,eAAe;AAChB"}
|