themelia-react-ui 2.0.4 → 2.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +211 -0
- package/MIGRATION.md +119 -0
- package/README.md +122 -20
- package/dist/{accordion-96o0pN62.js → accordion-0tQUZ20r.js} +13 -13
- package/dist/accordion-0tQUZ20r.js.map +1 -0
- package/dist/{action-menu-CHgs8vmj.js → action-menu-C0gjzLyE.js} +48 -45
- package/dist/action-menu-C0gjzLyE.js.map +1 -0
- package/dist/{affordance-geometry.generated-B8yGOr8-.js → affordance-geometry.generated-P-aVJisu.js} +36 -36
- package/dist/affordance-geometry.generated-P-aVJisu.js.map +1 -0
- package/dist/{ai-artifact-BZUGwBq6.js → ai-artifact-CGGpQryR.js} +281 -230
- package/dist/ai-artifact-CGGpQryR.js.map +1 -0
- package/dist/app-shell-EHuuRDGy.js +321 -0
- package/dist/app-shell-EHuuRDGy.js.map +1 -0
- package/dist/{attachment-DkoqHPPl.js → attachment-BCpA4e7i.js} +10 -10
- package/dist/{attachment-DkoqHPPl.js.map → attachment-BCpA4e7i.js.map} +1 -1
- package/dist/{auth-D2FVZ1MH.js → auth-B0girIk_.js} +49 -52
- package/dist/auth-B0girIk_.js.map +1 -0
- package/dist/{avatar-DWO_HHhB.js → avatar-B9Jnp-T-.js} +8 -8
- package/dist/avatar-B9Jnp-T-.js.map +1 -0
- package/dist/{badge-DErMA7ul.js → badge-wWauMgAt.js} +5 -5
- package/dist/{badge-DErMA7ul.js.map → badge-wWauMgAt.js.map} +1 -1
- package/dist/base/accordion.js +1 -1
- package/dist/base/action-menu.js +1 -1
- package/dist/base/attachment.js +1 -1
- package/dist/base/avatar.js +1 -1
- package/dist/base/badge.js +1 -1
- package/dist/base/batch-action-bar.js +1 -1
- package/dist/base/buttons.js +1 -1
- package/dist/base/cards.js +2 -2
- package/dist/base/carousel.js +3 -3
- package/dist/base/cascader.js +2 -372
- package/dist/base/chart.js +1 -1
- package/dist/base/choice-inputs.js +2 -2
- package/dist/base/code-block.js +1 -1
- package/dist/base/combobox.js +2 -2
- package/dist/base/command.js +1 -1
- package/dist/base/copyable.js +1 -1
- package/dist/base/date-pickers.js +2 -2
- package/dist/base/display.js +6 -6
- package/dist/base/feedback.js +4 -4
- package/dist/base/forms-numeric.js +1 -1
- package/dist/base/forms.js +2 -2
- package/dist/base/inline-edit.js +10 -10
- package/dist/base/item.js +1 -1
- package/dist/base/media-gallery.js +1 -1
- package/dist/base/metadata-list.js +1 -1
- package/dist/base/navigation.js +7 -7
- package/dist/base/popover-menu.js +1 -1
- package/dist/base/popover.js +1 -1
- package/dist/base/qr-code.js +1 -1
- package/dist/base/repeaters.js +200 -193
- package/dist/base/repeaters.js.map +1 -1
- package/dist/base/sheet.js +1 -1
- package/dist/base/sidebar.js +2 -2
- package/dist/base/signature-pad.js +8 -8
- package/dist/base/signature-pad.js.map +1 -1
- package/dist/base/skeleton.js +1 -1
- package/dist/base/spinner.js +6 -6
- package/dist/base/spinner.js.map +1 -1
- package/dist/base/structure.js +1 -1
- package/dist/base/table.js +1 -1
- package/dist/base/text-inputs.js +2 -2
- package/dist/base/toaster.js +36 -36
- package/dist/base/toaster.js.map +1 -1
- package/dist/base/tree.js +1 -1
- package/dist/base/upload-queue.js +1 -1
- package/dist/base/upload.js +3 -3
- package/dist/base/value-inputs.js +1 -1
- package/dist/{batch-action-bar-CdfIkCsV.js → batch-action-bar-BoqWIIpV.js} +7 -7
- package/dist/batch-action-bar-BoqWIIpV.js.map +1 -0
- package/dist/blocks/admin.js +21 -21
- package/dist/blocks/admin.js.map +1 -1
- package/dist/blocks/ai.js +267 -247
- package/dist/blocks/ai.js.map +1 -1
- package/dist/blocks/analytics/usage-card.js +1 -1
- package/dist/blocks/analytics.js +537 -543
- package/dist/blocks/analytics.js.map +1 -1
- package/dist/blocks/collaboration.js +1 -1
- package/dist/blocks/commerce/receipt.js +1 -1
- package/dist/blocks/commerce.js +1330 -1250
- package/dist/blocks/commerce.js.map +1 -1
- package/dist/blocks/data-display.js +2 -2
- package/dist/blocks/onboarding.js +6 -6
- package/dist/blocks/onboarding.js.map +1 -1
- package/dist/blocks/planning.js +11 -11
- package/dist/blocks/timelines.js +1 -1
- package/dist/{breadcrumbs-B-WFKecD.js → breadcrumbs-Bp9Ke7kd.js} +7 -7
- package/dist/breadcrumbs-Bp9Ke7kd.js.map +1 -0
- package/dist/{button-DkmK-z8E.js → button-ChBovTx0.js} +3 -3
- package/dist/button-ChBovTx0.js.map +1 -0
- package/dist/{buttons-BbfzgczK.js → buttons-DeW0bQeK.js} +16 -16
- package/dist/buttons-DeW0bQeK.js.map +1 -0
- package/dist/cards-CNXnmvV5.js +69 -0
- package/dist/cards-CNXnmvV5.js.map +1 -0
- package/dist/cascader-CrAl9zD5.js +439 -0
- package/dist/cascader-CrAl9zD5.js.map +1 -0
- package/dist/chart-I7ROnsl8.js +162 -0
- package/dist/chart-I7ROnsl8.js.map +1 -0
- package/dist/{checkbox-CzYUTPeJ.js → checkbox-MoyHIAPs.js} +3 -3
- package/dist/{checkbox-CzYUTPeJ.js.map → checkbox-MoyHIAPs.js.map} +1 -1
- package/dist/choice-inputs-DHGtx0QV.js +789 -0
- package/dist/choice-inputs-DHGtx0QV.js.map +1 -0
- package/dist/{code-block-CGNaUtAE.js → code-block-BSJyq9e-.js} +9 -9
- package/dist/code-block-BSJyq9e-.js.map +1 -0
- package/dist/{collapsible-Do4G0zcC.js → collapsible-BzJ91LUG.js} +5 -5
- package/dist/{collapsible-Do4G0zcC.js.map → collapsible-BzJ91LUG.js.map} +1 -1
- package/dist/{collection-content-C0e8SsTm.js → collection-content-CSnwtOTH.js} +3 -3
- package/dist/{collection-content-C0e8SsTm.js.map → collection-content-CSnwtOTH.js.map} +1 -1
- package/dist/combobox-Bcvu5J8O.js +363 -0
- package/dist/combobox-Bcvu5J8O.js.map +1 -0
- package/dist/combobox-C2JiSQPc.js +915 -0
- package/dist/combobox-C2JiSQPc.js.map +1 -0
- package/dist/{command-D8NrBj-b.js → command-9e52NPgK.js} +11 -11
- package/dist/command-9e52NPgK.js.map +1 -0
- package/dist/{comments-Di4w0H_S.js → comments-BsgErEqd.js} +44 -39
- package/dist/comments-BsgErEqd.js.map +1 -0
- package/dist/components/base/action-menu/action-menu.d.ts +7 -1
- package/dist/components/base/buttons/button-group.recipes.d.ts +2 -2
- package/dist/components/base/cards/card.recipes.d.ts +6 -4
- package/dist/components/base/cards/partials/card-primitives.d.ts +9 -2
- package/dist/components/base/cards/partials/smart-card-header-row.d.ts +3 -1
- package/dist/components/base/cards/smart-card.types.d.ts +3 -4
- package/dist/components/base/cascader/cascader-panel.d.ts +76 -0
- package/dist/components/base/chart/chart.d.ts +6 -1
- package/dist/components/base/choice-inputs/choice-types.d.ts +5 -1
- package/dist/components/base/choice-inputs/pill-radio-group.d.ts +7 -6
- package/dist/components/base/combobox/combobox-field.d.ts +2 -2
- package/dist/components/base/combobox/index.d.ts +4 -2
- package/dist/components/base/date-pickers/date-picker-internals.d.ts +3 -1
- package/dist/components/base/date-pickers/datepicker.types.d.ts +10 -4
- package/dist/components/base/date-pickers/time-picker.d.ts +17 -3
- package/dist/components/base/feedback/alert.d.ts +1 -1
- package/dist/components/base/feedback/state-display.d.ts +5 -1
- package/dist/components/base/feedback/state-display.strings.d.ts +9 -0
- package/dist/components/base/forms/form-field.d.ts +7 -2
- package/dist/components/base/forms/form-sizing.d.ts +7 -7
- package/dist/components/base/forms/workflow.d.ts +7 -1
- package/dist/components/base/forms-numeric/coordinates-input.d.ts +8 -1
- package/dist/components/base/forms-numeric/decimal-input.d.ts +2 -2
- package/dist/components/base/forms-numeric/dimensions-input.d.ts +4 -1
- package/dist/components/base/forms-numeric/numeric-composite-field.d.ts +12 -0
- package/dist/components/base/forms-numeric/weight-input.d.ts +6 -1
- package/dist/components/base/metadata-list/metadata-list.d.ts +1 -1
- package/dist/components/base/navigation/dropdown-menu.d.ts +1 -1
- package/dist/components/base/navigation/language-switcher.d.ts +12 -4
- package/dist/components/base/navigation/page-header/page-header-commands.d.ts +14 -7
- package/dist/components/base/navigation/page-header/page-header.d.ts +10 -3
- package/dist/components/base/popover/popover.d.ts +3 -3
- package/dist/components/base/popover/popover.recipes.d.ts +10 -6
- package/dist/components/base/repeaters/key-value-editor.d.ts +2 -1
- package/dist/components/base/sheet/sheet.d.ts +2 -0
- package/dist/components/base/sidebar/index.d.ts +1 -1
- package/dist/components/base/sidebar/sidebar.d.ts +29 -5
- package/dist/components/base/toaster/index.d.ts +1 -0
- package/dist/components/base/upload/avatar-upload.d.ts +2 -1
- package/dist/components/base/upload/image-upload.d.ts +2 -1
- package/dist/components/blocks/ai/ai-citation/types.d.ts +2 -0
- package/dist/components/blocks/ai/ai-file-tree/types.d.ts +1 -1
- package/dist/components/blocks/ai/ai-reasoning/types.d.ts +2 -0
- package/dist/components/blocks/ai/ai-sources/types.d.ts +2 -0
- package/dist/components/blocks/ai/ai-tool-call/types.d.ts +5 -1
- package/dist/components/blocks/ai/ai.strings.d.ts +2 -0
- package/dist/components/blocks/analytics/metric/metric.d.ts +4 -0
- package/dist/components/blocks/analytics/metric-comparison/metric-comparison.d.ts +4 -0
- package/dist/components/blocks/analytics/metric-grid/metric-grid.d.ts +4 -5
- package/dist/components/blocks/analytics/types.d.ts +2 -2
- package/dist/components/blocks/analytics/usage-card/usage-card.strings.d.ts +2 -0
- package/dist/components/blocks/commerce/cart-summary/cart-summary.d.ts +1 -1
- package/dist/components/blocks/commerce/cart-summary/types.d.ts +3 -1
- package/dist/components/blocks/commerce/discount-stack/discount-stack.d.ts +1 -1
- package/dist/components/blocks/commerce/discount-stack/types.d.ts +3 -1
- package/dist/components/blocks/commerce/fulfillment-group/fulfillment-group.d.ts +1 -1
- package/dist/components/blocks/commerce/fulfillment-group/types.d.ts +11 -2
- package/dist/components/blocks/commerce/index.d.ts +7 -6
- package/dist/components/blocks/commerce/inventory-section/inventory-section.d.ts +1 -1
- package/dist/components/blocks/commerce/inventory-section/types.d.ts +7 -2
- package/dist/components/blocks/commerce/invoice-header/index.d.ts +2 -1
- package/dist/components/blocks/commerce/invoice-header/invoice-header.d.ts +1 -1
- package/dist/components/blocks/commerce/invoice-header/types.d.ts +20 -6
- package/dist/components/blocks/commerce/invoice-line-items/invoice-line-items.d.ts +1 -1
- package/dist/components/blocks/commerce/invoice-line-items/types.d.ts +24 -7
- package/dist/components/blocks/commerce/invoice-mini/index.d.ts +2 -1
- package/dist/components/blocks/commerce/invoice-mini/types.d.ts +7 -1
- package/dist/components/blocks/commerce/order-customer/order-customer.d.ts +1 -1
- package/dist/components/blocks/commerce/order-customer/types.d.ts +9 -1
- package/dist/components/blocks/commerce/order-status/types.d.ts +4 -0
- package/dist/components/blocks/commerce/refund-status/refund-status.d.ts +1 -1
- package/dist/components/blocks/commerce/refund-status/types.d.ts +3 -1
- package/dist/components/blocks/commerce/shipment-tracking/shipment-tracking.d.ts +1 -1
- package/dist/components/blocks/commerce/shipment-tracking/types.d.ts +3 -1
- package/dist/components/blocks/commerce/tax-breakdown/tax-breakdown.d.ts +1 -1
- package/dist/components/blocks/commerce/tax-breakdown/types.d.ts +3 -1
- package/dist/components/blocks/data-display/empty-state/empty-state.types.d.ts +4 -3
- package/dist/components/features/activities/activities.types.d.ts +26 -13
- package/dist/components/features/activities/hooks/use-activity-resources.d.ts +2 -1
- package/dist/components/features/activities/partials/activity-marker.d.ts +7 -3
- package/dist/components/features/activities/partials/activity-row.d.ts +24 -0
- package/dist/components/features/ai-chat/hooks/use-ai-chat-scroll.d.ts +1 -1
- package/dist/components/features/appointment-calendar/appointment-calendar.d.ts +1 -1
- package/dist/components/features/appointment-calendar/appointment-calendar.types.d.ts +4 -2
- package/dist/components/features/combobox/async-resource-combobox.d.ts +2 -2
- package/dist/components/features/combobox/combobox.d.ts +2 -2
- package/dist/components/features/combobox/hooks/use-combobox-core.d.ts +2 -1
- package/dist/components/features/combobox/hooks/use-combobox-state.d.ts +1 -0
- package/dist/components/features/combobox/hooks/use-load-more.d.ts +1 -0
- package/dist/components/features/combobox/types.d.ts +37 -8
- package/dist/components/features/email-composer/types.d.ts +3 -1
- package/dist/components/features/event-calendar/colors.d.ts +2 -2
- package/dist/components/features/event-calendar/event-calendar.types.d.ts +4 -0
- package/dist/components/features/filters/facets/date-facet.d.ts +4 -2
- package/dist/components/features/filters/facets/range-facet.d.ts +12 -0
- package/dist/components/features/filters/facets/select-facet.d.ts +2 -1
- package/dist/components/features/filters/filters.strings.d.ts +4 -0
- package/dist/components/features/filters/filters.types.d.ts +6 -3
- package/dist/components/features/filters/partials/date-filter-content.d.ts +3 -2
- package/dist/components/features/filters/partials/filter-editor-header.d.ts +16 -0
- package/dist/components/features/filters/partials/filter-popover-content.d.ts +5 -3
- package/dist/components/features/filters/partials/nested-filter-options.d.ts +21 -0
- package/dist/components/features/filters/partials/range-filter-content.d.ts +12 -0
- package/dist/components/features/filters/partials/regular-filter-content.d.ts +2 -1
- package/dist/components/features/filters/utils/filter-utils.d.ts +25 -3
- package/dist/components/features/global-search/global-search.types.d.ts +2 -0
- package/dist/components/features/global-search/partials/global-search-input.d.ts +10 -0
- package/dist/components/features/global-search/partials/global-search-result-row.d.ts +7 -1
- package/dist/components/features/media-library/hooks/use-media-library.d.ts +1 -1
- package/dist/components/features/media-library/media-library.d.ts +1 -1
- package/dist/components/features/media-library/media-library.strings.d.ts +8 -0
- package/dist/components/features/media-library/media-library.types.d.ts +50 -12
- package/dist/components/features/media-library/partials/media-library-partials.d.ts +4 -4
- package/dist/components/features/mentions/hooks/use-mentions.d.ts +16 -1
- package/dist/components/features/mentions/partials/mention-inline-suggestions.d.ts +5 -1
- package/dist/components/features/mentions/utils/split-html-by-mentions.d.ts +1 -7
- package/dist/components/features/overlays/hooks/use-overlay-visibility.d.ts +2 -2
- package/dist/components/features/products/components/product-options-matrix.d.ts +1 -1
- package/dist/components/features/products/components/product-variant-editor.d.ts +1 -1
- package/dist/components/features/products/components/product-variants-manager.d.ts +1 -1
- package/dist/components/features/products/products.strings.d.ts +9 -1
- package/dist/components/features/products/products.types.d.ts +45 -8
- package/dist/components/features/questionnaire/questionnaire.types.d.ts +3 -0
- package/dist/components/features/resource/resource.d.ts +6 -2
- package/dist/components/features/resource/resource.types.d.ts +14 -1
- package/dist/components/features/rich-text-editor/form-rich-text-editor.d.ts +1 -1
- package/dist/components/features/rich-text-editor/partials/caret-helpers.d.ts +1 -1
- package/dist/components/features/rich-text-editor/partials/editor-field-aria.d.ts +14 -0
- package/dist/components/features/rich-text-editor/partials/image-uploads.d.ts +1 -1
- package/dist/components/features/rich-text-editor/partials/rich-text-editor-toolbar.d.ts +3 -1
- package/dist/components/features/rich-text-editor/rich-text-editor.recipes.d.ts +12 -2
- package/dist/components/features/rich-text-editor/rich-text-editor.types.d.ts +17 -3
- package/dist/components/features/schema-form/hooks/use-schema-form.d.ts +5 -1
- package/dist/components/features/schema-form/partials/schema-form-field.d.ts +3 -1
- package/dist/components/features/schema-form/schema-form.utils.d.ts +1 -1
- package/dist/components/features/suggestions/suggestions.types.d.ts +1 -1
- package/dist/components/features/table/data-table.d.ts +1 -1
- package/dist/components/features/table/index.d.ts +1 -0
- package/dist/components/features/table/partials/resource-cell.d.ts +22 -5
- package/dist/components/features/table/table-body.d.ts +1 -1
- package/dist/components/features/table/table-helpers.d.ts +6 -3
- package/dist/components/features/table/table.strings.d.ts +3 -0
- package/dist/components/features/table/table.types.d.ts +18 -2
- package/dist/components/layout/app-shell/app-shell.types.d.ts +35 -6
- package/dist/components/layout/app-shell/index.d.ts +1 -1
- package/dist/components/layout/app-shell/shell-regions.d.ts +27 -0
- package/dist/components/layout/app-shell/sidebar-inset-layout.d.ts +1 -1
- package/dist/components/layout/app-shell/stacked-layout.d.ts +1 -1
- package/dist/components/layout/app-shell/topbar-sidebar-layout.d.ts +1 -1
- package/dist/components/layout/containers/two-column-layout.d.ts +2 -0
- package/dist/components/layout/header/header.recipes.d.ts +6 -0
- package/dist/components/layout/header/header.types.d.ts +9 -8
- package/dist/components/layout/layout.types.d.ts +5 -3
- package/dist/components/layout/navigation/section-nav/section-nav.d.ts +5 -0
- package/dist/components/layout/navigation/side-nav.d.ts +3 -2
- package/dist/components/layout/normalize-layout-path.d.ts +1 -0
- package/dist/components/layout/page/index.d.ts +2 -1
- package/dist/components/layout/page/page.d.ts +1 -0
- package/dist/components/layout/page/page.strings.d.ts +11 -0
- package/dist/components/layout/page/page.types.d.ts +69 -17
- package/dist/components/layout/page/partials/page-header.d.ts +1 -1
- package/dist/components/layout/settings/settings.d.ts +10 -3
- package/dist/components/layout/sidebar/app-sidebar.d.ts +1 -1
- package/dist/components/layout/sidebar/components/sidebar-grouped-navigation.d.ts +1 -1
- package/dist/components/layout/sidebar/components/sidebar-navigation.d.ts +1 -1
- package/dist/components/layout/sidebar/index.d.ts +2 -1
- package/dist/components/layout/sidebar/sidebar-navigation-rail.d.ts +38 -0
- package/dist/components/layout/sidebar/sidebar.context.d.ts +6 -7
- package/dist/components/layout/sidebar/sidebar.types.d.ts +50 -10
- package/dist/components/layout/sidebar/sidebar.utils.d.ts +9 -1
- package/dist/components/layout/workspace/workspace.types.d.ts +8 -1
- package/dist/components/primitives/link.d.ts +3 -2
- package/dist/components/primitives/money.d.ts +1 -1
- package/dist/components/primitives/number.d.ts +1 -1
- package/dist/components/typography/rich-text/rich-text-tree.d.ts +7 -5
- package/dist/components/ui/alert-dialog.d.ts +2 -2
- package/dist/components/ui/combobox.d.ts +1 -1
- package/dist/components/ui/dialog.d.ts +2 -2
- package/dist/components/ui/overlay-layer.d.ts +18 -0
- package/dist/components/ui/sheet.d.ts +5 -1
- package/dist/components/ui/sidebar-state.d.ts +82 -0
- package/dist/components/ui/sidebar.d.ts +5 -17
- package/dist/{containers-CRmHf7GP.js → containers-CSdc32h9.js} +26 -18
- package/dist/containers-CSdc32h9.js.map +1 -0
- package/dist/{control-group-recipes-DBXmfh2E.js → control-group-recipes-fMuFo0H7.js} +6 -6
- package/dist/control-group-recipes-fMuFo0H7.js.map +1 -0
- package/dist/{copyable-CnGCZdX4.js → copyable-3fdHfMR3.js} +7 -7
- package/dist/{copyable-CnGCZdX4.js.map → copyable-3fdHfMR3.js.map} +1 -1
- package/dist/{data-display-D4oujtx0.js → data-display-Cmj-xZYl.js} +271 -279
- package/dist/data-display-Cmj-xZYl.js.map +1 -0
- package/dist/{date-Q7jnXxpk.js → date-Br0FicVv.js} +5 -5
- package/dist/{date-Q7jnXxpk.js.map → date-Br0FicVv.js.map} +1 -1
- package/dist/date-picker-CyQlFYsP.js +1617 -0
- package/dist/date-picker-CyQlFYsP.js.map +1 -0
- package/dist/date-pickers-tj2MXmXd.js +185 -0
- package/dist/date-pickers-tj2MXmXd.js.map +1 -0
- package/dist/{display-BB4BL_-K.js → display-CT_N2a3w.js} +9 -9
- package/dist/{display-BB4BL_-K.js.map → display-CT_N2a3w.js.map} +1 -1
- package/dist/dropdown-menu-C08iIugv.js +194 -0
- package/dist/dropdown-menu-C08iIugv.js.map +1 -0
- package/dist/features/activities.js +388 -326
- package/dist/features/activities.js.map +1 -1
- package/dist/features/ai-chat.js +46 -32
- package/dist/features/ai-chat.js.map +1 -1
- package/dist/features/appointment-calendar.js +130 -130
- package/dist/features/appointment-calendar.js.map +1 -1
- package/dist/features/async-preview.js +11 -10
- package/dist/features/async-preview.js.map +1 -1
- package/dist/features/combobox.js +1 -1
- package/dist/features/comments.js +1 -1
- package/dist/features/data-view.js +13 -13
- package/dist/features/data-view.js.map +1 -1
- package/dist/features/email-composer.js +243 -239
- package/dist/features/email-composer.js.map +1 -1
- package/dist/features/event-calendar.js +197 -199
- package/dist/features/event-calendar.js.map +1 -1
- package/dist/features/filters.js +2 -2
- package/dist/features/global-search.js +168 -143
- package/dist/features/global-search.js.map +1 -1
- package/dist/features/kanban.js +19 -30
- package/dist/features/kanban.js.map +1 -1
- package/dist/features/map/style.css +15 -0
- package/dist/features/map.js +369 -343
- package/dist/features/map.js.map +1 -1
- package/dist/features/media-library.js +1202 -975
- package/dist/features/media-library.js.map +1 -1
- package/dist/features/mentions.js +2 -2
- package/dist/features/overlays.js +1 -1
- package/dist/features/products.js +1270 -1183
- package/dist/features/products.js.map +1 -1
- package/dist/features/questionnaire.js +160 -153
- package/dist/features/questionnaire.js.map +1 -1
- package/dist/features/resource-assignment.js +8 -8
- package/dist/features/resource.js +119 -113
- package/dist/features/resource.js.map +1 -1
- package/dist/features/rich-text-editor.js +28 -19
- package/dist/features/rich-text-editor.js.map +1 -1
- package/dist/features/schema-form.js +297 -256
- package/dist/features/schema-form.js.map +1 -1
- package/dist/features/suggestions.js +57 -50
- package/dist/features/suggestions.js.map +1 -1
- package/dist/features/sync.js +3 -3
- package/dist/features/table.js +1 -1
- package/dist/features/theme-tweaker.js +470 -470
- package/dist/features/theme-tweaker.js.map +1 -1
- package/dist/feedback-Dzo1xtAU.js +246 -0
- package/dist/feedback-Dzo1xtAU.js.map +1 -0
- package/dist/{field-affordance-recipes-DjwGx8eM.js → field-affordance-recipes-D6H7tVJi.js} +5 -5
- package/dist/field-affordance-recipes-D6H7tVJi.js.map +1 -0
- package/dist/field-control-attributes-B6i335wr.js +18 -0
- package/dist/field-control-attributes-B6i335wr.js.map +1 -0
- package/dist/{field-state-recipes-BVA2CWHo.js → field-state-recipes-7sza8QbC.js} +4 -2
- package/dist/{field-state-recipes-BVA2CWHo.js.map → field-state-recipes-7sza8QbC.js.map} +1 -1
- package/dist/filters-Dl80yYtN.js +2415 -0
- package/dist/filters-Dl80yYtN.js.map +1 -0
- package/dist/form-field-CAPdwdnZ.js +74 -0
- package/dist/form-field-CAPdwdnZ.js.map +1 -0
- package/dist/{form-sizing-NXgjkmBG.js → form-sizing-CgcrUbLU.js} +5 -5
- package/dist/form-sizing-CgcrUbLU.js.map +1 -0
- package/dist/{forms-BV5m5aQF.js → forms-B3W8CH7-.js} +17 -13
- package/dist/forms-B3W8CH7-.js.map +1 -0
- package/dist/forms-numeric-CwjQJe-O.js +991 -0
- package/dist/forms-numeric-CwjQJe-O.js.map +1 -0
- package/dist/{header-BA697l4a.js → header-ZIIsRKxP.js} +145 -141
- package/dist/header-ZIIsRKxP.js.map +1 -0
- package/dist/header.recipes-BigdJjw1.js +6 -0
- package/dist/header.recipes-BigdJjw1.js.map +1 -0
- package/dist/hooks/use-files.d.ts +2 -0
- package/dist/{hooks-BQ-L7Uu2.js → hooks-BitHSh-Y.js} +27 -15
- package/dist/hooks-BitHSh-Y.js.map +1 -0
- package/dist/{icon-badge-COWbCCWu.js → icon-badge-npxF1SLX.js} +4 -4
- package/dist/{icon-badge-COWbCCWu.js.map → icon-badge-npxF1SLX.js.map} +1 -1
- package/dist/index.js +4 -5
- package/dist/{input-Cdw4k0fb.js → input-7KAc7XQL.js} +9 -9
- package/dist/{input-Cdw4k0fb.js.map → input-7KAc7XQL.js.map} +1 -1
- package/dist/input-DIREVYHs.js +21 -0
- package/dist/input-DIREVYHs.js.map +1 -0
- package/dist/{interaction-recipes-XR9ZpVYL.js → interaction-recipes-4wZ2tvfb.js} +2 -2
- package/dist/{interaction-recipes-XR9ZpVYL.js.map → interaction-recipes-4wZ2tvfb.js.map} +1 -1
- package/dist/item-FfWnaYST.js +278 -0
- package/dist/item-FfWnaYST.js.map +1 -0
- package/dist/layout/app-shell.js +1 -1
- package/dist/layout/auth.js +1 -1
- package/dist/layout/containers.js +1 -1
- package/dist/layout/header.js +1 -1
- package/dist/layout/hooks.js +1 -1
- package/dist/layout/navigation.js +1 -1
- package/dist/layout/page.js +2 -2
- package/dist/layout/settings.js +1 -1
- package/dist/layout/sidebar.js +3 -3
- package/dist/layout/workspace.js +1 -1
- package/dist/layout.js +12 -12
- package/dist/layout.types-E_GAApzO.js +30 -0
- package/dist/layout.types-E_GAApzO.js.map +1 -0
- package/dist/lib/affordance-geometry.generated.d.ts +35 -35
- package/dist/lib/control-group-recipes.d.ts +5 -5
- package/dist/lib/field-affordance-recipes.d.ts +2 -2
- package/dist/lib/field-control-attributes.d.ts +11 -0
- package/dist/lib/field-state-recipes.d.ts +2 -0
- package/dist/lib/format.d.ts +1 -0
- package/dist/lib/motion-recipes.d.ts +3 -0
- package/dist/lib/navigation-row-recipes.d.ts +7 -7
- package/dist/lib/overlay-anatomy-recipes.d.ts +3 -3
- package/dist/lib/portal-recipes.d.ts +3 -0
- package/dist/lib/surface-recipes.d.ts +1 -1
- package/dist/lib/token-merge.generated.d.ts +18 -15
- package/dist/lib/utils.js +1 -1
- package/dist/map-demo-tile.svg +1 -1
- package/dist/{media-gallery-CSl5W1Fy.js → media-gallery-C81DAnKI.js} +6 -6
- package/dist/{media-gallery-CSl5W1Fy.js.map → media-gallery-C81DAnKI.js.map} +1 -1
- package/dist/{mentions-RKOQaaIB.js → mentions-qOnedSt4.js} +237 -168
- package/dist/mentions-qOnedSt4.js.map +1 -0
- package/dist/message-BJHnn43M.js +135 -0
- package/dist/message-BJHnn43M.js.map +1 -0
- package/dist/{metadata-list-qVV7AVxa.js → metadata-list-XkqZ_UXH.js} +64 -64
- package/dist/metadata-list-XkqZ_UXH.js.map +1 -0
- package/dist/{motion-recipes-ChBg4HBq.js → motion-recipes-DitYv6P2.js} +10 -2
- package/dist/motion-recipes-DitYv6P2.js.map +1 -0
- package/dist/navigation-BgtPJAhi.js +288 -0
- package/dist/navigation-BgtPJAhi.js.map +1 -0
- package/dist/navigation-Bt-v7rWP.js +261 -0
- package/dist/navigation-Bt-v7rWP.js.map +1 -0
- package/dist/{navigation-row-recipes-WZEs-hYo.js → navigation-row-recipes-BGVLvU_O.js} +9 -9
- package/dist/navigation-row-recipes-BGVLvU_O.js.map +1 -0
- package/dist/normalize-layout-path-BmEgg6fu.js +14 -0
- package/dist/normalize-layout-path-BmEgg6fu.js.map +1 -0
- package/dist/{number-E_OiIfJz.js → number-CYqBcrSj.js} +79 -87
- package/dist/number-CYqBcrSj.js.map +1 -0
- package/dist/overflow-tab-bar-BQCA2Zn2.js +172 -0
- package/dist/overflow-tab-bar-BQCA2Zn2.js.map +1 -0
- package/dist/overlays-CC8zI3Du.js +1017 -0
- package/dist/overlays-CC8zI3Du.js.map +1 -0
- package/dist/page-BoQ1VaFJ.js +331 -0
- package/dist/page-BoQ1VaFJ.js.map +1 -0
- package/dist/page-header-commands-DIKspJfx.js +193 -0
- package/dist/page-header-commands-DIKspJfx.js.map +1 -0
- package/dist/{pagination-Ch8X_47u.js → pagination-Br8TdV9A.js} +7 -7
- package/dist/{pagination-Ch8X_47u.js.map → pagination-Br8TdV9A.js.map} +1 -1
- package/dist/popover-k8TdUcAt.js +201 -0
- package/dist/popover-k8TdUcAt.js.map +1 -0
- package/dist/{popover-menu-BYaCdFhf.js → popover-menu-yn-o0kyA.js} +7 -7
- package/dist/{popover-menu-BYaCdFhf.js.map → popover-menu-yn-o0kyA.js.map} +1 -1
- package/dist/{popover.recipes-D3j8R8Yp.js → popover.recipes-DJ0AkUan.js} +19 -12
- package/dist/popover.recipes-DJ0AkUan.js.map +1 -0
- package/dist/portal-recipes-DyUXqUtD.js +9 -0
- package/dist/portal-recipes-DyUXqUtD.js.map +1 -0
- package/dist/{primitives-Du64iDbb.js → primitives-BkkQjYl7.js} +23 -18
- package/dist/primitives-BkkQjYl7.js.map +1 -0
- package/dist/primitives.js +4 -4
- package/dist/{progress-BvF2oCdV.js → progress-DZFXXzPs.js} +9 -9
- package/dist/{progress-BvF2oCdV.js.map → progress-DZFXXzPs.js.map} +1 -1
- package/dist/{receipt-D789Jwyy.js → receipt-C7LhOg7Q.js} +7 -7
- package/dist/receipt-C7LhOg7Q.js.map +1 -0
- package/dist/rich-text-BnTzZjIo.js +45 -0
- package/dist/rich-text-BnTzZjIo.js.map +1 -0
- package/dist/{rich-text-editor-Cm1dpUpQ.js → rich-text-editor-CAurDwT5.js} +501 -424
- package/dist/rich-text-editor-CAurDwT5.js.map +1 -0
- package/dist/rich-text-editor-toolbar-DbXig7Jk.js +99 -0
- package/dist/rich-text-editor-toolbar-DbXig7Jk.js.map +1 -0
- package/dist/rich-text-tree-BqyQ_7-R.js +66 -0
- package/dist/rich-text-tree-BqyQ_7-R.js.map +1 -0
- package/dist/{sanitize-html-DsQmI48u.js → sanitize-html-BWkH4dLM.js} +29 -16
- package/dist/sanitize-html-BWkH4dLM.js.map +1 -0
- package/dist/{scroll-area-La5RXsEk.js → scroll-area-Bj6CRUif.js} +2 -2
- package/dist/{scroll-area-La5RXsEk.js.map → scroll-area-Bj6CRUif.js.map} +1 -1
- package/dist/{separator-DAEV0w65.js → separator-B9ewiCGO.js} +2 -2
- package/dist/{separator-DAEV0w65.js.map → separator-B9ewiCGO.js.map} +1 -1
- package/dist/{separator-GNfPG-90.js → separator-DM6gs2vu.js} +3 -3
- package/dist/{separator-GNfPG-90.js.map → separator-DM6gs2vu.js.map} +1 -1
- package/dist/services/actions.js +1 -1
- package/dist/settings-DZPHgpx4.js +155 -0
- package/dist/settings-DZPHgpx4.js.map +1 -0
- package/dist/sheet-C4DHsgLk.js +250 -0
- package/dist/sheet-C4DHsgLk.js.map +1 -0
- package/dist/sidebar-C8BnDwTH.js +709 -0
- package/dist/sidebar-C8BnDwTH.js.map +1 -0
- package/dist/sidebar-CmD6a-HK.js +1004 -0
- package/dist/sidebar-CmD6a-HK.js.map +1 -0
- package/dist/skeleton-DDgdhmu9.js +265 -0
- package/dist/skeleton-DDgdhmu9.js.map +1 -0
- package/dist/smart-card-B6vLxqa_.js +617 -0
- package/dist/smart-card-B6vLxqa_.js.map +1 -0
- package/dist/{structure-C0V0_Fyf.js → structure-DZJ2wbAU.js} +2 -2
- package/dist/{structure-C0V0_Fyf.js.map → structure-DZJ2wbAU.js.map} +1 -1
- package/dist/style.css +1 -1
- package/dist/{surface-recipes-BKRVW8Os.js → surface-recipes-C8mNycaY.js} +2 -2
- package/dist/{surface-recipes-BKRVW8Os.js.map → surface-recipes-C8mNycaY.js.map} +1 -1
- package/dist/{table-DH7rozUv.js → table-CBonSdTp.js} +573 -519
- package/dist/table-CBonSdTp.js.map +1 -0
- package/dist/{table-CpvnzJn9.js → table-CXSPHH25.js} +75 -71
- package/dist/table-CXSPHH25.js.map +1 -0
- package/dist/tabs-C4Kr_hCr.js +192 -0
- package/dist/tabs-C4Kr_hCr.js.map +1 -0
- package/dist/{text-inputs-DXItiR0O.js → text-inputs-jdkS3ReG.js} +18 -18
- package/dist/text-inputs-jdkS3ReG.js.map +1 -0
- package/dist/theme.css +40 -37
- package/dist/{timelines-DmtztAY_.js → timelines-CoPwdJP0.js} +13 -12
- package/dist/timelines-CoPwdJP0.js.map +1 -0
- package/dist/tooltip-31NwIpTo.js +113 -0
- package/dist/tooltip-31NwIpTo.js.map +1 -0
- package/dist/{tree-CV11PURP.js → tree-CeYVzdFE.js} +9 -9
- package/dist/{tree-CV11PURP.js.map → tree-CeYVzdFE.js.map} +1 -1
- package/dist/typography/rich-text.js +1 -1
- package/dist/{typography-CSyJrh28.js → typography-C7-YMW1S.js} +12 -12
- package/dist/{typography-CSyJrh28.js.map → typography-C7-YMW1S.js.map} +1 -1
- package/dist/typography.js +1 -1
- package/dist/ui-provider-C-74NVLc.js +178 -0
- package/dist/ui-provider-C-74NVLc.js.map +1 -0
- package/dist/ui-provider.js +2 -3
- package/dist/{upload-C9SA0X-8.js → upload-Hdm5gObf.js} +309 -296
- package/dist/upload-Hdm5gObf.js.map +1 -0
- package/dist/{upload-queue-DhQJiSRc.js → upload-queue-D0sYPuqo.js} +16 -14
- package/dist/upload-queue-D0sYPuqo.js.map +1 -0
- package/dist/{usage-card-DVTRDmGz.js → usage-card-9s8hLDfn.js} +24 -17
- package/dist/usage-card-9s8hLDfn.js.map +1 -0
- package/dist/{utils-CF3c95Io.js → utils-DhuoqFy4.js} +255 -165
- package/dist/utils-DhuoqFy4.js.map +1 -0
- package/dist/value-inputs-D3aPgq9H.js +980 -0
- package/dist/value-inputs-D3aPgq9H.js.map +1 -0
- package/dist/{value-typography-ClupF0Gz.js → value-typography-uSzzG9Gf.js} +32 -26
- package/dist/value-typography-uSzzG9Gf.js.map +1 -0
- package/dist/{workspace-9EFVXUyk.js → workspace-CC8Vchiu.js} +51 -50
- package/dist/workspace-CC8Vchiu.js.map +1 -0
- package/docs/consumer-skill/SKILL.md +4 -3
- package/docs/consumer-skill/agents/themelia-ui-designer.md +96 -0
- package/docs/consumer-skill/examples/app-layout.tsx +52 -1
- package/docs/consumer-skill/examples/commerce-lines.tsx +271 -0
- package/docs/consumer-skill/examples/custom-composition.tsx +21 -0
- package/docs/consumer-skill/examples/detail.tsx +5 -4
- package/docs/consumer-skill/examples/edit.tsx +3 -3
- package/docs/consumer-skill/examples/editable-sections.tsx +38 -0
- package/docs/consumer-skill/examples/index-table.tsx +4 -4
- package/docs/consumer-skill/examples/manifest.json +38 -1
- package/docs/consumer-skill/examples/product-media.tsx +41 -0
- package/docs/consumer-skill/examples/product-parts.tsx +81 -0
- package/docs/consumer-skill/examples/rhf-edit-page.tsx +1 -1
- package/docs/consumer-skill/examples/rhf-overlay-form.tsx +24 -11
- package/docs/consumer-skill/examples/token-domain-structure.tsx +68 -0
- package/docs/consumer-skill/references/agents-md.md +21 -19
- package/docs/consumer-skill/references/analytics.md +33 -1
- package/docs/consumer-skill/references/commerce-composition.md +97 -0
- package/docs/consumer-skill/references/component-contracts.json +21249 -14205
- package/docs/consumer-skill/references/composition-mapping.md +17 -3
- package/docs/consumer-skill/references/composition.md +177 -32
- package/docs/consumer-skill/references/critique-rubric.md +98 -0
- package/docs/consumer-skill/references/custom-composition.md +261 -0
- package/docs/consumer-skill/references/data-reading.md +79 -0
- package/docs/consumer-skill/references/design-contract.md +12 -9
- package/docs/consumer-skill/references/discovery.md +27 -3
- package/docs/consumer-skill/references/domain-structures.md +124 -0
- package/docs/consumer-skill/references/installation.md +62 -8
- package/docs/consumer-skill/references/integration.md +59 -1
- package/docs/consumer-skill/references/product-composition.md +94 -0
- package/docs/consumer-skill/references/public-api.json +3044 -445
- package/docs/consumer-skill/references/review.md +87 -10
- package/docs/consumer-skill/references/rhf-workflows.md +79 -0
- package/docs/consumer-skill/references/screen-archetypes.md +19 -7
- package/docs/consumer-skill/references/screen-decisions.md +126 -0
- package/docs/consumer-skill/references/theming.md +24 -20
- package/docs/consumer-skill/references/tokens.json +9 -9
- package/docs/consumer-skill/references/view-craft.md +153 -0
- package/docs/consumer-skill/references/view-spec.md +73 -0
- package/docs/consumer-skill/references/workflows.md +7 -1
- package/docs/consumer-skill/scripts/composition-policy.mjs +176 -26
- package/docs/consumer-skill/scripts/composition-schema.mjs +1 -1
- package/docs/consumer-skill/scripts/composition.mjs +61 -5
- package/docs/consumer-skill/scripts/discovery.mjs +54 -0
- package/docs/consumer-skill/scripts/inspect-component.mjs +1 -1
- package/docs/consumer-skill/scripts/inspection.mjs +73 -18
- package/docs/consumer-skill/scripts/setup-skills.mjs +79 -7
- package/docs/consumer-skill/scripts/surface-policy.mjs +5 -5
- package/docs/consumer-skills/themelia-components/SKILL.md +14 -13
- package/docs/consumer-skills/themelia-composition/SKILL.md +16 -17
- package/docs/consumer-skills/themelia-design/SKILL.md +55 -0
- package/docs/consumer-skills/themelia-foundation/SKILL.md +2 -1
- package/docs/consumer-skills/themelia-tokenization/SKILL.md +24 -17
- package/package.json +4 -2
- package/templates/admin-shell-template.tsx +1 -2
- package/templates/customers-template.tsx +18 -16
- package/dist/accordion-96o0pN62.js.map +0 -1
- package/dist/action-menu-CHgs8vmj.js.map +0 -1
- package/dist/affordance-geometry.generated-B8yGOr8-.js.map +0 -1
- package/dist/ai-artifact-BZUGwBq6.js.map +0 -1
- package/dist/app-shell-D63ATkIK.js +0 -237
- package/dist/app-shell-D63ATkIK.js.map +0 -1
- package/dist/auth-D2FVZ1MH.js.map +0 -1
- package/dist/avatar-DWO_HHhB.js.map +0 -1
- package/dist/base/cascader.js.map +0 -1
- package/dist/batch-action-bar-CdfIkCsV.js.map +0 -1
- package/dist/breadcrumbs-B-WFKecD.js.map +0 -1
- package/dist/button-DkmK-z8E.js.map +0 -1
- package/dist/buttons-BbfzgczK.js.map +0 -1
- package/dist/cards-4JTWqvVe.js +0 -68
- package/dist/cards-4JTWqvVe.js.map +0 -1
- package/dist/chart-C19flDQb.js +0 -155
- package/dist/chart-C19flDQb.js.map +0 -1
- package/dist/choice-inputs-JLtij2y4.js +0 -776
- package/dist/choice-inputs-JLtij2y4.js.map +0 -1
- package/dist/code-block-CGNaUtAE.js.map +0 -1
- package/dist/combobox-CBJDs6w_.js +0 -877
- package/dist/combobox-CBJDs6w_.js.map +0 -1
- package/dist/combobox-hbhSS18O.js +0 -355
- package/dist/combobox-hbhSS18O.js.map +0 -1
- package/dist/command-D8NrBj-b.js.map +0 -1
- package/dist/comments-Di4w0H_S.js.map +0 -1
- package/dist/containers-CRmHf7GP.js.map +0 -1
- package/dist/control-group-recipes-DBXmfh2E.js.map +0 -1
- package/dist/data-display-D4oujtx0.js.map +0 -1
- package/dist/date-picker-zOt1oNss.js +0 -1542
- package/dist/date-picker-zOt1oNss.js.map +0 -1
- package/dist/date-pickers-cj8IXbDC.js +0 -179
- package/dist/date-pickers-cj8IXbDC.js.map +0 -1
- package/dist/dropdown-menu-CjY8Vt7W.js +0 -193
- package/dist/dropdown-menu-CjY8Vt7W.js.map +0 -1
- package/dist/feedback-DZNL5Lg1.js +0 -239
- package/dist/feedback-DZNL5Lg1.js.map +0 -1
- package/dist/field-affordance-recipes-DjwGx8eM.js.map +0 -1
- package/dist/filters-BcT-uoFy.js +0 -2209
- package/dist/filters-BcT-uoFy.js.map +0 -1
- package/dist/form-field-CsgRmdit.js +0 -63
- package/dist/form-field-CsgRmdit.js.map +0 -1
- package/dist/form-sizing-NXgjkmBG.js.map +0 -1
- package/dist/forms-BV5m5aQF.js.map +0 -1
- package/dist/forms-numeric-Cd33AKbD.js +0 -906
- package/dist/forms-numeric-Cd33AKbD.js.map +0 -1
- package/dist/header-BA697l4a.js.map +0 -1
- package/dist/hooks-BQ-L7Uu2.js.map +0 -1
- package/dist/input-DOPL5_QE.js +0 -21
- package/dist/input-DOPL5_QE.js.map +0 -1
- package/dist/item-BvZ2DR_x.js +0 -277
- package/dist/item-BvZ2DR_x.js.map +0 -1
- package/dist/layout.types-Cn7aUzJp.js +0 -20
- package/dist/layout.types-Cn7aUzJp.js.map +0 -1
- package/dist/mentions-RKOQaaIB.js.map +0 -1
- package/dist/message-INU2xsxu.js +0 -128
- package/dist/message-INU2xsxu.js.map +0 -1
- package/dist/metadata-list-qVV7AVxa.js.map +0 -1
- package/dist/motion-recipes-ChBg4HBq.js.map +0 -1
- package/dist/navigation-BQNcg1jT.js +0 -269
- package/dist/navigation-BQNcg1jT.js.map +0 -1
- package/dist/navigation-DLF3E1IC.js +0 -145
- package/dist/navigation-DLF3E1IC.js.map +0 -1
- package/dist/navigation-row-recipes-WZEs-hYo.js.map +0 -1
- package/dist/number-E_OiIfJz.js.map +0 -1
- package/dist/overflow-tab-bar-CrbqMteP.js +0 -284
- package/dist/overflow-tab-bar-CrbqMteP.js.map +0 -1
- package/dist/overlays-BlKynmde.js +0 -1004
- package/dist/overlays-BlKynmde.js.map +0 -1
- package/dist/page-CIwNUtGr.js +0 -227
- package/dist/page-CIwNUtGr.js.map +0 -1
- package/dist/page-header-commands-DFMlNYzN.js +0 -128
- package/dist/page-header-commands-DFMlNYzN.js.map +0 -1
- package/dist/popover-uwzX2vo7.js +0 -198
- package/dist/popover-uwzX2vo7.js.map +0 -1
- package/dist/popover.recipes-D3j8R8Yp.js.map +0 -1
- package/dist/primitives-Du64iDbb.js.map +0 -1
- package/dist/receipt-D789Jwyy.js.map +0 -1
- package/dist/rich-text-CLJEf76s.js +0 -78
- package/dist/rich-text-CLJEf76s.js.map +0 -1
- package/dist/rich-text-editor-Cm1dpUpQ.js.map +0 -1
- package/dist/rich-text-editor-toolbar-L__e4x47.js +0 -94
- package/dist/rich-text-editor-toolbar-L__e4x47.js.map +0 -1
- package/dist/safe-image-src-C6kQSMBZ.js +0 -17
- package/dist/safe-image-src-C6kQSMBZ.js.map +0 -1
- package/dist/sanitize-html-DsQmI48u.js.map +0 -1
- package/dist/settings-BA2iboic.js +0 -174
- package/dist/settings-BA2iboic.js.map +0 -1
- package/dist/sheet-DoAxTb2J.js +0 -213
- package/dist/sheet-DoAxTb2J.js.map +0 -1
- package/dist/sidebar-ByqKR_W5.js +0 -512
- package/dist/sidebar-ByqKR_W5.js.map +0 -1
- package/dist/sidebar-D2iSnGJ7.js +0 -619
- package/dist/sidebar-D2iSnGJ7.js.map +0 -1
- package/dist/skeleton-CUj8O5Bd.js +0 -264
- package/dist/skeleton-CUj8O5Bd.js.map +0 -1
- package/dist/smart-card-CqkzQsK-.js +0 -614
- package/dist/smart-card-CqkzQsK-.js.map +0 -1
- package/dist/table-CpvnzJn9.js.map +0 -1
- package/dist/table-DH7rozUv.js.map +0 -1
- package/dist/tabs-eqVsJZWO.js +0 -191
- package/dist/tabs-eqVsJZWO.js.map +0 -1
- package/dist/text-inputs-DXItiR0O.js.map +0 -1
- package/dist/theme-scope-BJ6eE2xt.js +0 -50
- package/dist/theme-scope-BJ6eE2xt.js.map +0 -1
- package/dist/timelines-DmtztAY_.js.map +0 -1
- package/dist/tooltip-B4hjKtoV.js +0 -111
- package/dist/tooltip-B4hjKtoV.js.map +0 -1
- package/dist/ui-provider-CQCuCBcy.js +0 -136
- package/dist/ui-provider-CQCuCBcy.js.map +0 -1
- package/dist/upload-C9SA0X-8.js.map +0 -1
- package/dist/upload-queue-DhQJiSRc.js.map +0 -1
- package/dist/usage-card-DVTRDmGz.js.map +0 -1
- package/dist/use-mobile-vaLKwgyf.js +0 -15
- package/dist/use-mobile-vaLKwgyf.js.map +0 -1
- package/dist/utils-CF3c95Io.js.map +0 -1
- package/dist/value-inputs-C0o70p-U.js +0 -980
- package/dist/value-inputs-C0o70p-U.js.map +0 -1
- package/dist/value-typography-ClupF0Gz.js.map +0 -1
- package/dist/workspace-9EFVXUyk.js.map +0 -1
|
@@ -5,27 +5,54 @@ work. Read only the relevant workflow/declarations; this is not a new design sys
|
|
|
5
5
|
|
|
6
6
|
## Review the task and hierarchy
|
|
7
7
|
|
|
8
|
+
For a new or substantially repaired screen, review the
|
|
9
|
+
[screen decisions](screen-decisions.md) against the actual result. Identify the
|
|
10
|
+
user's decision, leading subject, visible versus overflow actions, navigation
|
|
11
|
+
reason and surface/inset owners. The answer should explain this screen, not
|
|
12
|
+
just name components or repeat an archetype.
|
|
13
|
+
|
|
8
14
|
- Can the user identify the subject, scope and next action? A contextual fact
|
|
9
15
|
may be repeated for a separate purpose, but should not compete with itself.
|
|
10
16
|
- Do independent records, facts, metrics and editable fields use appropriate
|
|
11
17
|
owners? Inspect an existing feature before reconstructing its lifecycle.
|
|
18
|
+
- Does the subject cover the entity parts relevant to the task, such as order
|
|
19
|
+
lines and selected variants, product options/variant combinations, or payment
|
|
20
|
+
allocations? State missing contracts and omitted scope. Neither a summary of
|
|
21
|
+
top-level fields nor a library feature's existence proves app coverage.
|
|
12
22
|
- Do primary commands have explicit emphasis and page/collection/record scope?
|
|
13
23
|
Keep bulk actions tied to selection. Secondary/destructive importance is semantic.
|
|
14
24
|
- Do rows lead with identity and useful decision information? Preserve access
|
|
15
25
|
to hidden facts without forcing every fact into a tall identity stack.
|
|
26
|
+
- Do comparisons, allocations, dependencies and exceptions stay close to the
|
|
27
|
+
facts and commands they affect? Could the user make the business decision
|
|
28
|
+
without reconstructing relationships across generic cards? An existing block
|
|
29
|
+
is a good fit when its meaning and arrangement fit; an app-owned subject may
|
|
30
|
+
combine public parts and JSX when the data needs a different structure.
|
|
16
31
|
- Does each gutter, inset and sibling/copy gap have one owner? Review the whole
|
|
17
32
|
parent/child chain. A token-backed utility on the wrong owner can still drift.
|
|
33
|
+
- Do flat and painted peer regions align at their intended content edges?
|
|
34
|
+
Transparency does not remove Card padding. Does mobile reading order lead
|
|
35
|
+
with the operational subject rather than burying it after long evidence?
|
|
36
|
+
- Do table headers, main values and supporting cell copy share an intentional
|
|
37
|
+
alignment? Inspect custom primitives inside cells; their own alignment and
|
|
38
|
+
inline/block defaults can override the cell. Using the right table owner
|
|
39
|
+
does not validate the caller's renderCell content.
|
|
18
40
|
- Does the same composition remain readable with long copy, translations,
|
|
19
41
|
empty/missing values and narrow parent width? Zero and unavailable differ.
|
|
20
42
|
|
|
21
43
|
These criteria allow different product layouts. Do not impose a universal card
|
|
22
44
|
count, row-line limit or one-column form rule. Emphasis is the exception: keep
|
|
23
|
-
one
|
|
45
|
+
one leading primary command per task/surface, so the next action stays obvious.
|
|
46
|
+
Independent forms can each own a primary submit. Fix a warning by reviewing its
|
|
47
|
+
scope and owner; a DOM-lookup submit handler or flattening every FormSection
|
|
48
|
+
does not establish a better composition.
|
|
24
49
|
|
|
25
50
|
## Done means
|
|
26
51
|
|
|
27
52
|
UI work is complete only with three separate proofs: source/API checks, inspected
|
|
28
|
-
rendered appearance and executed interactions.
|
|
53
|
+
rendered appearance and executed interactions. A correct but confusing hierarchy
|
|
54
|
+
or inappropriate action/surface choice is unfinished even when all checks pass.
|
|
55
|
+
Inspect one representative subject before replicating it across a screen. The source checker below must
|
|
29
56
|
report no errors on changed files, and the app's typecheck, lint and tests must
|
|
30
57
|
pass. Inspect the actual narrow/wide and light/dark states relevant to the change,
|
|
31
58
|
including opened surfaces; execute the affected callbacks, keyboard/focus and
|
|
@@ -63,7 +90,7 @@ command to app CI if useful; repository lint is not automatically installed.
|
|
|
63
90
|
Errors cover unknown package entrypoints/symbols and statically detected overrides
|
|
64
91
|
of protected Card/popup insets, Card badges in headerAction/headerStart rather
|
|
65
92
|
than titleSuffix, control geometry/typography, fixed DisplayLabel/Badge
|
|
66
|
-
roles, cross-role
|
|
93
|
+
roles, cross-role surface/default radius replacements, display-copy margins, or
|
|
67
94
|
redrawn focus indicators (another ring width, offset or halo strength) on imported controls. Intentional nested bodies,
|
|
68
95
|
circular owners and joined-edge corner resets retain their roles. Import ownership
|
|
69
96
|
follows lexical bindings, preserving locally shadowed application components. Imports of
|
|
@@ -80,12 +107,49 @@ disabled 50% treatment remain valid; component disabled props keep that dimming
|
|
|
80
107
|
with its owner.
|
|
81
108
|
|
|
82
109
|
Standalone compact Cards and Page gutter removal also produce review warnings.
|
|
110
|
+
`uncontained-table-in-card` follows tables through passive wrappers and known
|
|
111
|
+
slots in padded Card/FormSection/explicit ChartCard surfaces. It also warns on
|
|
112
|
+
tables in card/chart footers: place substantial tables in a body or peer layout
|
|
113
|
+
region, or deliberately use Card padding="none" and a flat table.
|
|
114
|
+
`form-actions-bar-placement` reviews a FormActionsBar under a padded surface or
|
|
115
|
+
in a footer that already owns geometry; put action nodes directly in the footer
|
|
116
|
+
or use an edge-to-edge bar in a zero-padding host. Both remain warnings because
|
|
117
|
+
custom hosts need contextual review.
|
|
118
|
+
`detached-filter-layout` recommends DataTable topbarContent for a sibling filter
|
|
119
|
+
strip, or DataView for the complete workflow. `wide-single-column-form` suggests
|
|
120
|
+
Page narrow for a simple form lacking explicit width or aside. On mixed/tabbed
|
|
121
|
+
routes, constrain only a form panel with Container maxWidth="md" gutter="none";
|
|
122
|
+
`dynamic-page-measure` warns about expressions that can resize the route header
|
|
123
|
+
along with the body. Deliberate responsive sizing remains valid. These contextual
|
|
124
|
+
warnings follow qualified import bindings; unrelated same-name components are
|
|
125
|
+
not evidence. Deprecated resource shells use the existing deprecated-owner
|
|
126
|
+
warning and direct new routes to Page.
|
|
83
127
|
Buttons placed in a Page or PageHeader `actions` region warn as well: pass
|
|
84
128
|
commands as `primaryAction` and ordered `secondaryActions` so the header owns
|
|
85
129
|
their emphasis, size and overflow. Non-command controls stay valid there.
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
130
|
+
For PageHeader's `slots.actions`, wrapping or returning the callback's
|
|
131
|
+
`defaultContent` retains that command behavior; a full replacement owns its
|
|
132
|
+
keyboard, overflow and action semantics. Inspect the compact menu below 40rem of
|
|
133
|
+
header width, including in a narrow parent on desktop: every command, including
|
|
134
|
+
primary, belongs in one More actions menu.
|
|
135
|
+
A Page with more than one solid primary command in the same task scope warns,
|
|
136
|
+
counting `header.primaryAction`, solid Button tone="primary", and
|
|
137
|
+
SubmitStateButton's default primary. Native forms (including a public owner's
|
|
138
|
+
native form `render`) and overlays own separate command scopes; exclusive
|
|
139
|
+
conditional branches use their maximum count. Local submits stay with their
|
|
140
|
+
form. `remote-header-form-submit` reviews header handlers that call
|
|
141
|
+
document.getElementById and requestSubmit, including same-file callback values;
|
|
142
|
+
a deliberate single full-page editor can keep its header submit with native
|
|
143
|
+
validation and appropriate form association.
|
|
144
|
+
|
|
145
|
+
`heavy-cell-disclosure` reviews Accordion, SmartAccordion, DataTable and CodeBlock
|
|
146
|
+
inside statically visible DataTable `columns.cell` renderers, separately from
|
|
147
|
+
column headers and portaled record details. Prefer a summary plus rowActions
|
|
148
|
+
opening an overlay or detail route; intentional accessible inline disclosure is
|
|
149
|
+
valid. `single-option-choice-group` suggests boolean controls for one static
|
|
150
|
+
choice, without banning two-option sets or filtered real choice domains.
|
|
151
|
+
|
|
152
|
+
Raw palette classes such as
|
|
89
153
|
`bg-blue-500`, `text-gray-600` or `border-white` warn on any element; use a
|
|
90
154
|
semantic surface/foreground pair or a status tone. A Card title icon and an icon on
|
|
91
155
|
more than one MetadataList fact warn as decoration; keep a glyph only when it
|
|
@@ -96,7 +160,9 @@ native button passed as a package owner's `render`, such as an Item row
|
|
|
96
160
|
rendered as a button, is that owner's root and does not warn.
|
|
97
161
|
Verified Card-owning Metric/card-grid, UsageCard and TaskCard compositions also
|
|
98
162
|
participate in nested-surface and peer-gap review. Metric without its card variant,
|
|
99
|
-
compact MetricGrid, flat TaskCard, ChartCard and Receipt do not establish
|
|
163
|
+
compact MetricGrid, flat TaskCard, default ChartCard and Receipt do not establish
|
|
164
|
+
a frame. FormSection has a Card by default; ChartCard establishes one only with
|
|
165
|
+
an explicit non-flat surface. Unknown surface values/spreads are not proof of a frame.
|
|
100
166
|
Direct framed/default Card peers, including GridCell-wrapped peers, in a statically
|
|
101
167
|
small Stack/Grid gap also warn; omitted gaps use the actual component defaults.
|
|
102
168
|
Review visible ring clearance and the application's ordinary surface policy.
|
|
@@ -111,9 +177,20 @@ Use existing app lint/typechecking for wider language, utility and accessibility
|
|
|
111
177
|
coverage. The script is deliberately small and does not replace them.
|
|
112
178
|
|
|
113
179
|
Coverage is limited to direct public imports, aliases/namespaces, native paragraph/
|
|
114
|
-
heading copy and same-file static classes/styles/props
|
|
115
|
-
|
|
116
|
-
|
|
180
|
+
heading copy and same-file static classes/styles/props/JSX slot values. Paired
|
|
181
|
+
and self-closing elements retain their slot owner; opaque app components and
|
|
182
|
+
known portals form separate regions. Inline cell renderers are inspected when
|
|
183
|
+
their JSX is available, without executing application code. Dynamic geometry,
|
|
184
|
+
classes and spread values are disclosed as unresolved where inspected;
|
|
185
|
+
cross-file wrappers, external CSS and runtime composition require review. Do not
|
|
186
|
+
treat an empty report as proof of complete compliance or taste. Test source
|
|
187
|
+
rules through analyzer findings, and UI behavior through executed outcomes;
|
|
188
|
+
regex assertions over app JSX cannot establish either visual quality or callbacks.
|
|
189
|
+
Local helpers invoked to produce JSX (for example `footerSlot={renderFooter()}`)
|
|
190
|
+
are not evaluated. Dynamically constructed whole header objects are disclosed
|
|
191
|
+
as unresolved; review their action scopes separately. Native ReactDOM
|
|
192
|
+
createPortal calls retain their lexical binding and start a separate rendered
|
|
193
|
+
region, like the supported public overlay owners.
|
|
117
194
|
|
|
118
195
|
## Rendered and interaction evidence
|
|
119
196
|
|
|
@@ -4,12 +4,40 @@ Use `react-hook-form` for form state in create/edit pages, settings and overlays
|
|
|
4
4
|
|
|
5
5
|
## Screen and state ownership
|
|
6
6
|
|
|
7
|
+
For expandable editing sections, inspect compound Accordion before rebuilding
|
|
8
|
+
Card + Collapsible. The [retained section recipe](../examples/editable-sections.tsx)
|
|
9
|
+
uses multiple expansion, validation badges and AccordionContent keepMounted.
|
|
10
|
+
Keep one stable app-owned form and open an invalid section before focusing its
|
|
11
|
+
field. Controlled form state retention and field DOM retention are separate
|
|
12
|
+
contracts; see [disclosure composition](custom-composition.md#disclosure-sections).
|
|
13
|
+
|
|
7
14
|
The complete [order edit page](../examples/rhf-edit-page.tsx) composes:
|
|
8
15
|
|
|
9
16
|
`Page render={<form ... />}` owns the native form, containing `DirtyStateBanner / ErrorSummary → TwoColumnLayout → FormSection → ControlledFormField → sticky FormActionsBar / SubmitStateButton`.
|
|
10
17
|
|
|
11
18
|
Page owns the route title/gutters and TwoColumnLayout owns peer rhythm. FormSection owns its surface and field gaps; do not wrap a framed FormSection in another Card. Inside an already padded boundary, use `surface="flat" padding="none"`. Inside an unpadded boundary, a flat FormSection keeps its ordinary inset; flat surface alone does not remove padding. `handleSubmit` validates and awaits persistence. `isSubmitting` drives the submit button and disabled fields; `isDirty` drives dirty feedback and pristine submit protection. An in-flight ref also blocks duplicate same-tick requests. Native form validation is disabled in these RHF examples so the schema/rules produce one consistent error source.
|
|
12
19
|
|
|
20
|
+
Choose each section's frame from its actual parent. Independent FormSections on
|
|
21
|
+
the page can keep their default card surface; flattening a section whose content
|
|
22
|
+
already consists of Cards does not require flattening unrelated sibling forms.
|
|
23
|
+
|
|
24
|
+
`FormActionsBar` owns a top divider, opaque background and surface inset. Use
|
|
25
|
+
`leading` for status and `trailing` (or `children`) for action nodes. In
|
|
26
|
+
`Card padding="none"`, flat FormSections keep their body inset and the bar sits
|
|
27
|
+
edge-to-edge after them. In an ordinary Card's `footerSlot` or FormSection's
|
|
28
|
+
`footer`, place the buttons directly: the host already owns the footer geometry.
|
|
29
|
+
`SubmitStateButton` defaults to `type="submit"` and primary tone; pass
|
|
30
|
+
`submitting`, `dirty` and `disableWhenPristine` for pending/pristine behavior.
|
|
31
|
+
|
|
32
|
+
Independent forms own independent submit commands. Keep a lookup beside its
|
|
33
|
+
input and settings saves with their edited fields; page command guidance does
|
|
34
|
+
not require moving these into `Page.header`. For a single full-page editor, a
|
|
35
|
+
deliberate header submit can use native form association (`type="submit"` and
|
|
36
|
+
`form` on a Button in a supported slot). Preserve browser validation and one
|
|
37
|
+
submit lifecycle; routine `document.getElementById(...).requestSubmit()` handlers
|
|
38
|
+
add unnecessary coupling. Tests should execute validation, pending, error/draft
|
|
39
|
+
retention and accepted persistence rather than assert a particular source string.
|
|
40
|
+
|
|
13
41
|
Page forwards `render` to its existing Container, so rendering it as the form preserves one width, gutter and query-boundary owner. Its body already spaces direct subjects; no extra Container or Stack is needed around the layout and action bar. `TwoColumnLayout adaptTo="container"` adapts to that Page width. A standalone form outside Page needs its own deliberate query boundary when it selects container adaptation.
|
|
14
42
|
|
|
15
43
|
Use `useFieldArray`'s stable `field.id` as the React key, preserve names such as `lines.${index}.quantity`, and set complete append defaults. Derive totals from `useWatch`; do not persist a second total that can drift. Collect nested client/server errors into ErrorSummary while keeping each field's local message. Use `setFocus` or summary links for focusable controls when the app's error-summary design requires it.
|
|
@@ -33,12 +61,63 @@ Mount an editor with `key={record.id}` when switching records. `defaultValues` e
|
|
|
33
61
|
| SliderField (public slider name) | scalar `value: number` | `onValueChange(value)`; `inputRef`, `onBlur` |
|
|
34
62
|
| ColorInput | `value: string` | `onValueChange(value)`; input `ref`, `onBlur` |
|
|
35
63
|
|
|
64
|
+
Set DatePicker's `mode` explicitly when binding its callback. `mode="single"`
|
|
65
|
+
narrows the output to `DateOutput`; range and multiple modes have their own
|
|
66
|
+
value/output shapes. The runtime's single-mode default does not narrow the
|
|
67
|
+
unified callback's contextual TypeScript type.
|
|
68
|
+
|
|
69
|
+
Bind an empty controlled date field with `value={field.value ?? undefined}`.
|
|
70
|
+
An external reset to that empty value clears single, multiple, range and
|
|
71
|
+
month/year selections. Do not also pass `defaultValue` unless restoring that
|
|
72
|
+
fallback is intentional; RHF's `defaultValues` owns the saved form baseline.
|
|
73
|
+
|
|
36
74
|
For numeric Input fields normalize `event.target.valueAsNumber` according to the schema (an empty field is NaN); keep numeric validation explicit. Date-only fields need an application serialization policy; do not turn a local calendar date into a UTC instant accidentally. DateTimeInput uses ISO instants. Use `modal={false}` on pickers inside modal forms to avoid competing focus traps.
|
|
37
75
|
|
|
38
76
|
ControlledFormField accepts a ReactNode error override or a name-based error getter, falling back to RHF validation. Its render callback's error argument remains string/undefined for compatibility. A direct supported control receives the generated label/control ID and supporting-text association automatically; omit routine `htmlFor`/`id` pairs. Each mount stays unique even when forms share field names. ToggleField and SwitchCard own their visible labels and forward the automatic supporting description to their editable control; omit an outer duplicate label.
|
|
39
77
|
|
|
78
|
+
Use `FormRichTextEditor` from `themelia-react-ui/features/rich-text-editor`
|
|
79
|
+
inside an RHF `FormProvider`. Pass its field name and wrap it in `FormField`
|
|
80
|
+
with the field's validation message. The binding handles touch, focus,
|
|
81
|
+
invalid and disabled state. Both editor modes use the same field association.
|
|
82
|
+
Native form data includes the committed HTML for enabled, named editors.
|
|
83
|
+
Switch from HTML source to rich text to commit a source draft.
|
|
84
|
+
|
|
85
|
+
WeightInput, DimensionsInput and CoordinatesInput can bind `field.onChange`
|
|
86
|
+
through `onValueChange` and `field.onBlur` through `onBlur`. Their legacy
|
|
87
|
+
event-shaped callbacks still receive the same value. Native `name` submits
|
|
88
|
+
one numeric string, using `widthxheightxdepth` for dimensions and
|
|
89
|
+
`latitude,longitude` for coordinates. The React callback retains the
|
|
90
|
+
selected string or object format.
|
|
91
|
+
|
|
92
|
+
TimePicker accepts the same direct `value` and `onValueChange` binding
|
|
93
|
+
and submits a named 24-hour value in either mode. Bind `field.onBlur`
|
|
94
|
+
to report leaving the complete picker, including its open popover.
|
|
95
|
+
|
|
96
|
+
### Empty selections
|
|
97
|
+
|
|
98
|
+
| Owner | Empty value |
|
|
99
|
+
| --- | --- |
|
|
100
|
+
| PillRadioGroup with `allowClear` | `null` |
|
|
101
|
+
| Combobox and AsyncResourceCombobox | `null` |
|
|
102
|
+
| MultiCombobox | An empty array |
|
|
103
|
+
| Select and RoundingModeSelect with `allowClear` | `undefined` |
|
|
104
|
+
| DateTimeInput | `undefined` |
|
|
105
|
+
| TimePicker | A controlled `null` shows an empty time. Editing emits aligned strings. |
|
|
106
|
+
|
|
107
|
+
Normalize nullable callbacks at the form boundary when the app uses one
|
|
108
|
+
empty value. An explicit `value={undefined}` keeps PillRadioGroup controlled.
|
|
109
|
+
Omit `value` to use its `defaultValue`. A shared clear sentinel would require
|
|
110
|
+
a major release.
|
|
111
|
+
|
|
40
112
|
Compound children own their nested association. SliderField's `id` and forwarded `ref` name its group, while `inputRef` names the native range. The binding recipe uses visible copy with an ID, `aria-labelledby` on SliderField and `supportingTextId`/`aria-describedby` for its hint or error. Keep explicit IDs per mount when a passive wrapper separates chrome from the editable control; do not point `htmlFor` at a group or infer one common ref target across control families.
|
|
41
113
|
|
|
114
|
+
FormField honors an explicit `htmlFor` target already declared in descendant JSX,
|
|
115
|
+
including arrays/fragments, without copying its ID or name onto the outer wrapper.
|
|
116
|
+
It does not inspect custom component bodies. If a compound creates its nested
|
|
117
|
+
controls internally, put it inside Stack or a native container and assign the
|
|
118
|
+
target ID and supporting-text attributes to the actual control. Direct controls
|
|
119
|
+
without an ID retain automatic association.
|
|
120
|
+
|
|
42
121
|
## Transport lifecycle
|
|
43
122
|
|
|
44
123
|
The app owns transport. RHF's submit callback must return a Promise spanning the complete request; otherwise `isSubmitting` drops early and repeated submissions become possible. The [callback bridge](../examples/rhf-transport.tsx) records success/errors/cancellation, then settles only from `onFinish`. It has no framework import or runtime dependency.
|
|
@@ -6,17 +6,29 @@ the application shell and every domain example. These are source assets at the
|
|
|
6
6
|
installed package's `templates/`; complete skill copying places them under the
|
|
7
7
|
shared skill's `templates/` and rebases the links below.
|
|
8
8
|
|
|
9
|
+
Start with [screen decisions](screen-decisions.md). Archetypes establish route responsibilities and supported seams. Inspect the
|
|
10
|
+
actual records before choosing their content regions. A detail page can combine
|
|
11
|
+
existing blocks with app-owned domain components and semantic JSX; comparisons,
|
|
12
|
+
allocations, dependencies and exceptions may need their own information
|
|
13
|
+
structure. Use [data-led composition](custom-composition.md#shape-the-subject-from-the-data)
|
|
14
|
+
to choose that structure. A dashboard does not require a metric-card row, and
|
|
15
|
+
a simple facts subject does not require a custom component.
|
|
16
|
+
|
|
9
17
|
| Screen | Main owner and regions | Starting blueprint | Application-owned state |
|
|
10
18
|
| --- | --- | --- | --- |
|
|
11
|
-
| Index / directory | Page
|
|
12
|
-
| Detail workspace | Page
|
|
13
|
-
| Settings / edit | `Page render={<form ... />}` →
|
|
14
|
-
|
|
|
19
|
+
| Index / directory | Page header/context → DataView, or FilterProvider → DataTable topbarContent={FilterLayout}; default lg, explicit xl/full for wide comparisons | [Scoped directory](../examples/scoped-directory.tsx), [index table](../examples/index-table.tsx) | URL/query, facets, paging, selection, bulk commands, loading/empty/error/retry |
|
|
20
|
+
| Detail workspace | Page narrow for simple detail; page identity and task subjects, optional aside for secondary context (xl); choose continuous/flat or framed subjects deliberately | [Orders](../../../templates/orders-template.tsx), [customers](../../../templates/customers-template.tsx), [record detail](../examples/detail.tsx) | Record snapshot, section/tab, permitted commands, overlay drafts, accepted server results |
|
|
21
|
+
| Settings / edit | `Page narrow render={<form ... />}` → FormSection → ControlledFormField → FormActionsBar; with support use Page aside or explicit maxWidth="xl" + TwoColumnLayout | [RHF edit page](../examples/rhf-edit-page.tsx), [RHF drawer](../examples/rhf-overlay-form.tsx) | RHF values, rules/schema, arrays, computed totals, transport/errors, saved baseline |
|
|
22
|
+
| Order / fulfillment detail | Page header owns order identity and commands; Alert for standing notices; FulfillmentGroup per status/location; ShipmentTracking; OrderCustomer, OrderSummary and OrderTransactions as aside cards | [Order and invoice map](commerce-composition.md), [order recipe](../examples/commerce-lines.tsx) | Order snapshot, fulfillment/refund commands, payment state, accepted results |
|
|
23
|
+
| Invoice / receivable detail | Page header with collection commands; one document Card → InvoiceHeader + InvoiceLineItems surface="flat"; settlement ledger, payment history and customer as separate subjects | [Order and invoice map](commerce-composition.md), [invoice recipe](../examples/commerce-lines.tsx) | Invoice values, tax policy, balance, payments and reminder/credit workflows |
|
|
24
|
+
| Product editor | Page → product identity/media/shared details → product option definitions → generated variant list/matrix and selected editing workflow; publishing context remains distinct | [Products](../../../templates/products-template.tsx) | Product snapshot, stable option/value IDs, combination identities, per-variant drafts, publishing validation and persistence |
|
|
15
25
|
| User access / permissions | Page → profile and role context → editable permission groups → save/discard feedback | [User permissions](../../../templates/user-permissions-template.tsx) | Role presets, permission draft, permitted commands, accepted-save/discard baseline and server enforcement |
|
|
16
|
-
| Analytics overview | Page period control → numeric MetricBar/MetricGrid → comparison
|
|
26
|
+
| Analytics overview | Page period control → numeric MetricBar/MetricGrid → ChartCard with Recharts series and comparison Cards → operations/usage regions | [Operations analytics](../../../templates/analytics-operations-template.tsx), [analytics states](../examples/analytics.tsx) | Period/query, metric formatting, accepted series, independent loading/error/retry states |
|
|
27
|
+
|
|
28
|
+
Page uses explicit maxWidth first, then narrow md (48rem), aside xl (80rem), otherwise lg (64rem). Settings navigation uses Page → SettingsShell → FormSection. Page owns its h1, gutters and direct-child rhythm; TwoColumnLayout owns the column split and peer-region rhythm. Stack/Grid own nested sibling gaps. Card owns framing and aligned header/body/footer insets. Authentication uses [AuthShell](authentication.md), and content sites use [Container/Section](../examples/website.tsx).
|
|
17
29
|
|
|
18
|
-
|
|
30
|
+
Keep FilterLayout inside DataTable topbarContent with variant="compact" and showClearFilters, under FilterProvider; DataView is the complete alternative. Table owns its frame/topbar/header band and sits directly in the layout. A deliberate Card host uses padding="none" and a flat table. Fixed scope belongs in page context or tabs, independently of removable criteria.
|
|
19
31
|
|
|
20
|
-
Headers carry one primary command and ordered secondary commands;
|
|
32
|
+
Headers carry one primary command and ordered secondary commands; below 40rem of header width all commands share one More actions trigger. Page header slots beforeTitle/titleSuffix/afterDescription/actions accept content or callbacks with {renderLink, defaultContent}. Compose status and facts with Badge/MetadataList; wrap or return actions defaultContent to retain the command row. Compatible direct actions add non-command controls. Put destructive commands behind ConfirmDialog. Longer create/edit work belongs in ActionDrawer; a short focused form uses ActionDialog. Preserve a snapshot until save succeeds. Templates are copyable application sources, not package component entrypoints.
|
|
21
33
|
|
|
22
34
|
Read only the relevant detail: [composition ownership](composition.md), [workflow states](workflows.md), [RHF transport and bindings](rhf-workflows.md), or [analytics contracts](analytics.md). The [review checklist](review.md) separates static checks from opened-surface and interaction evidence.
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# Decide the screen before selecting components
|
|
2
|
+
|
|
3
|
+
Use for a new business screen or a substantial composition repair. The public
|
|
4
|
+
API tells you what is supported; it does not decide what deserves prominence.
|
|
5
|
+
Settle the following in a few working notes before JSX. This is a design step,
|
|
6
|
+
not an approval gate or a required document for a small edit.
|
|
7
|
+
|
|
8
|
+
## Task, subject and priority
|
|
9
|
+
|
|
10
|
+
Name the user's job and the object being managed. Inspect a representative
|
|
11
|
+
record and an exception. Distinguish the product's structure from one selected
|
|
12
|
+
instance, current operational state from historical evidence, and editable
|
|
13
|
+
configuration from read-only facts.
|
|
14
|
+
|
|
15
|
+
Discover the task-specific owners and their supported parts before drawing those
|
|
16
|
+
regions. Use the [capability comparison](custom-composition.md#compare-capabilities-before-constructing-the-subject),
|
|
17
|
+
then let app markup express the relationships those owners must cooperate in.
|
|
18
|
+
Token-backed custom structure complements existing behavior; it does not replace
|
|
19
|
+
the discovery of a professionally supported subject/workflow.
|
|
20
|
+
|
|
21
|
+
Put the information needed for the immediate decision first in reading and DOM
|
|
22
|
+
order. Then show the supporting detail, then less frequent history or technical
|
|
23
|
+
evidence. A desktop aside must not bury the current balance or blocking exception
|
|
24
|
+
below several screens of history on mobile. A record can contain all required
|
|
25
|
+
fields and still have the wrong hierarchy.
|
|
26
|
+
|
|
27
|
+
For a catalogue product, product identity/media and shared details establish the
|
|
28
|
+
subject. Product-level option groups and values explain the generated variant
|
|
29
|
+
combinations; the variant list/matrix compares SKU, price, availability and
|
|
30
|
+
state. Editing one variant is a subordinate selection/workflow. A large selected
|
|
31
|
+
variant summary before the product's option structure instead resembles a buyer
|
|
32
|
+
picker. A storefront picker, a catalogue editor and an inventory workspace have
|
|
33
|
+
different priorities even when they use the same data.
|
|
34
|
+
|
|
35
|
+
An admin product workspace commonly needs distinct details, media-management
|
|
36
|
+
and variant work areas. Do not put a gallery beside prose simply because both
|
|
37
|
+
are available, or reproduce a storefront hero inside an operational editor.
|
|
38
|
+
Choose each region's role and placement first; selecting a dedicated component
|
|
39
|
+
does not decide that structure for you.
|
|
40
|
+
|
|
41
|
+
For a sold order line, purchased identity, selected options/SKU, quantity and
|
|
42
|
+
accepted amounts form one subject. Put a shortage, reservation or return beside
|
|
43
|
+
the affected goods. Do not repeat every zero-valued lifecycle counter as a
|
|
44
|
+
separate labeled stack. For an invoice, distinguish its issued legal document
|
|
45
|
+
from today's settlement/collection task; both can be present without giving
|
|
46
|
+
every source record equal prominence. See [domain coverage](custom-composition.md).
|
|
47
|
+
|
|
48
|
+
## Actions and navigation
|
|
49
|
+
|
|
50
|
+
Assign each command a scope (page, collection, selection, subject or row), then
|
|
51
|
+
consider frequency, importance, eligibility and consequence. Make the ordinary
|
|
52
|
+
next action easy to find. Less frequent alternatives belong in the same scope's
|
|
53
|
+
overflow menu when their visible buttons would compete with the subject. A
|
|
54
|
+
refund on an ordinary sold line is commonly a secondary contextual action; a
|
|
55
|
+
returns-processing workspace can legitimately make it primary. A single action
|
|
56
|
+
does not automatically need a menu, and several actions do not all need buttons.
|
|
57
|
+
|
|
58
|
+
Use Page's command API for page commands and its responsive overflow behavior.
|
|
59
|
+
Use the public Menu/rowActions owner for item commands; give an icon-only trigger
|
|
60
|
+
an accessible name that identifies the object. Confirmation belongs to the
|
|
61
|
+
consequential action, not to opening the menu. Never hide an essential action
|
|
62
|
+
solely behind pointer hover.
|
|
63
|
+
|
|
64
|
+
Optional navigation is a decision too. Do not add a back button just because
|
|
65
|
+
Page accepts backHref. Use it for an actual return journey with a known
|
|
66
|
+
destination and preserved list/draft context. A persistent navigation area or
|
|
67
|
+
breadcrumb may already supply orientation. Respect the requested navigation
|
|
68
|
+
pattern; do not combine several competing return mechanisms by default.
|
|
69
|
+
|
|
70
|
+
## Grouping, surfaces and alignment
|
|
71
|
+
|
|
72
|
+
Group facts that users need to read together. Choose a Card when a region is an
|
|
73
|
+
independent subject, a distinct object or a useful bounded work area. Continuous
|
|
74
|
+
sections of one subject can remain flat inside a shared surface. Neither every
|
|
75
|
+
heading nor every object in JSON requires a Card. Existing table/workflow owners
|
|
76
|
+
can already own their boundary; inspect before adding another frame.
|
|
77
|
+
|
|
78
|
+
Decide the inset owner separately from the surface's paint. Card
|
|
79
|
+
surface="flat" removes chrome and inherits its host; it retains the same default
|
|
80
|
+
md insets. Changing paint alone must not move a peer's content edge. Use
|
|
81
|
+
padding="none" when an existing ancestor already owns that inset, or when a
|
|
82
|
+
deliberately flush region is required—not as a synonym for transparency.
|
|
83
|
+
Compare heading, body and action start edges across peer regions. An unpadded
|
|
84
|
+
main heading next to an inset card heading is not aligned merely because their
|
|
85
|
+
outer grid cells align. Document-like rows and financial totals can use different
|
|
86
|
+
roles, but their intended label/value axes should remain clear.
|
|
87
|
+
|
|
88
|
+
For continuous sections of one subject, one padded host with unpadded internal
|
|
89
|
+
sections usually supplies the right rhythm. Stacking several padded flat Cards
|
|
90
|
+
adds both their block insets to the peer gap even though no painted boundary
|
|
91
|
+
explains that extra room. Keep shared inline alignment without accumulating
|
|
92
|
+
three inset owners along the vertical axis.
|
|
93
|
+
|
|
94
|
+
Assign page gutters to Page, surface insets to Card, peer gaps to Stack/Grid,
|
|
95
|
+
and specialized tracks to app-owned markup. Keep title/description copy close;
|
|
96
|
+
separate subjects with a larger gap. Fix the wrong owner before changing global
|
|
97
|
+
spacing or density. Use [token-backed domain structures](domain-structures.md)
|
|
98
|
+
when the standard layouts cannot express the data relationship directly.
|
|
99
|
+
|
|
100
|
+
## Prove the decision with the result
|
|
101
|
+
|
|
102
|
+
Build one representative subject before repeating it throughout the screen.
|
|
103
|
+
Inspect it at the actual narrow and wide parent widths: can the user identify
|
|
104
|
+
the object, understand its current state and find the next appropriate action?
|
|
105
|
+
Check the opened menu/editor and accepted/error state. Remove duplication and
|
|
106
|
+
low-value explanation rather than shrinking every text role to fit more data.
|
|
107
|
+
Test a second record whose structure or eligibility differs.
|
|
108
|
+
|
|
109
|
+
Type checks establish API compatibility. Source checkers establish their named
|
|
110
|
+
rules. Neither establishes a purposeful hierarchy, appropriate commands or a
|
|
111
|
+
professional surface composition. Treat a correct but confusing result as
|
|
112
|
+
unfinished; revise the composition, then record appearance and interaction proof
|
|
113
|
+
separately in [review](review.md).
|
|
114
|
+
|
|
115
|
+
## External context
|
|
116
|
+
|
|
117
|
+
These references explain useful distinctions; Themelia's APIs/tokens and the
|
|
118
|
+
actual product requirements remain authoritative:
|
|
119
|
+
|
|
120
|
+
- [Shopify's product model](https://shopify.dev/docs/apps/build/product-merchandising/products-and-collections)
|
|
121
|
+
separates product, options and purchasable variant combinations.
|
|
122
|
+
- [Carbon disclosures](https://www.carbondesignsystem.com/building-blocks/core/patterns/disclosures)
|
|
123
|
+
distinguishes a visible primary action from related disclosed alternatives.
|
|
124
|
+
- [GOV.UK back links](https://design-system.service.gov.uk/components/back-link/)
|
|
125
|
+
grounds return navigation in an actual multi-page journey. Its transaction
|
|
126
|
+
conventions are not a universal admin-shell prescription.
|
|
@@ -4,6 +4,10 @@ The [design contract](design-contract.md) records which geometry changes togethe
|
|
|
4
4
|
and which variant choices remain independent. Retheme shared responsibilities;
|
|
5
5
|
avoid overriding individual components to imitate another density or inset.
|
|
6
6
|
|
|
7
|
+
Set the application's document font and page background/foreground through the
|
|
8
|
+
[host CSS setup](installation.md#set-the-application-canvas). Importing package
|
|
9
|
+
styles defines theme roles without painting the document or resetting app markup.
|
|
10
|
+
|
|
7
11
|
Use shadcn semantic surfaces/foregrounds: background, card, popover, primary, secondary, muted, accent, destructive, border, input, ring, charts and sidebar. Central success/info/warning foreground pairs express states; never overload primary or statuses as decoration. `--input` is the shared resting control boundary: fields, select and date triggers, checkboxes, radios, switch tracks and outline buttons draw it. Its defaults follow shadcn neutral: `oklch(0.922 0 0)` in light mode and `oklch(1 0 0 / 15%)` in dark mode. `--border` remains the surface/divider role, and `--ring` owns the stronger focus indicator. No extra border variable or component opacity is needed. Resting borders have no blanket 3:1 requirement in this palette; focus retains its separate tested 3:1 contract. When rebranding, review resting, focused and invalid states on the actual surfaces; an application requiring stronger boundaries can override the existing `--input` role.
|
|
8
12
|
|
|
9
13
|
tokens.json distinguishes 23 structural roots, advanced typography/status settings, and derived utility spellings. A utility is not another public variable. Keep overrides in one stylesheet at root or ThemeScope, without copying computed CSS into JavaScript.
|
|
@@ -18,26 +22,18 @@ with opacity. Component disabled props own dimming; an extra faded wrapper can
|
|
|
18
22
|
multiply it. Brand colors should preserve the shared resting `--input` palette
|
|
19
23
|
and `--ring` focus role; review deliberate replacements on every host surface.
|
|
20
24
|
|
|
21
|
-
The default `--radius` is 0.75rem (12px). One public root drives two
|
|
22
|
-
|
|
25
|
+
The default `--radius` is 0.75rem (12px). One public root drives two corners;
|
|
26
|
+
component owners apply them, so ordinary callers add no radius class.
|
|
23
27
|
|
|
24
28
|
| Role | Owners | Default |
|
|
25
29
|
| --- | --- | --- |
|
|
26
|
-
| `rounded-radius` |
|
|
27
|
-
| `rounded-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
density-scale ÷ 4)`. The height bound keeps short controls restrained when an app
|
|
34
|
-
increases the global radius; a 0.75 multiplier alone would still produce capsules.
|
|
35
|
-
The smaller base height preserves a common inner radius when action and field
|
|
36
|
-
heights differ. Density scales that bound once: the default roots at density
|
|
37
|
-
0.875 yield 7.875px inner corners. Control size variants share the role; spacing
|
|
38
|
-
scale and surface padding do not change it. Do not override the derived alias as
|
|
39
|
-
another theme setting. Circular avatars/dots and joined-edge resets retain their
|
|
40
|
-
explicit shape mechanics; Badge retains its own root-based recipe.
|
|
30
|
+
| `rounded-radius` | The default: inputs, buttons, select/facet triggers, badges, collection/navigation rows and nested bodies | 12px (`--radius`) |
|
|
31
|
+
| `rounded-surface` | Cards, popup/command shells, dialogs and other outer surfaces | 16px (4/3 × `--radius`) |
|
|
32
|
+
| `rounded-radius-xs` / `-sm` / `-md` | Small mechanics only: checkboxes, kbd, tooltips, inline marks, skeleton bars | 0.4× / 0.6× / 0.8× |
|
|
33
|
+
|
|
34
|
+
Changing `--radius` changes every corner together. Density, spacing scale and
|
|
35
|
+
surface padding do not change it. Circular avatars/dots and joined-edge resets
|
|
36
|
+
retain their explicit shape mechanics.
|
|
41
37
|
|
|
42
38
|
CSS fits overlapping curves to the actual box, so computed values alone do not
|
|
43
39
|
prove the visible shape. Inspect settled corners, borders, clipping and focus
|
|
@@ -60,7 +56,7 @@ Action and editable-control heights are separate roles; keep roots equal for adj
|
|
|
60
56
|
Control heights are nominal floors when custom typography needs more room.
|
|
61
57
|
Native fields, Select and InputGroup frames fit their editable line plus the
|
|
62
58
|
border, and cap vertical padding to the space remaining in the nominal height.
|
|
63
|
-
The default 32/
|
|
59
|
+
The default 28/32/36px sizes (2rem roots, steps in eighths) and radius roles stay unchanged. Text actions grow
|
|
64
60
|
under their intentionally tighter leading, so independently enlarged type can
|
|
65
61
|
produce different fitted heights even with equal action/control roots. Check
|
|
66
62
|
type size, leading and height roots together when exact custom pairing matters.
|
|
@@ -74,9 +70,12 @@ control heights and copy gaps keep their independent roots.
|
|
|
74
70
|
| Actions versus fields | `--height-action` versus `--height-control`; default size uses the root times density-scale |
|
|
75
71
|
| Native field text inset | `--control-x` times space-scale; icons/add-ons use shared derived clearance |
|
|
76
72
|
| Collection inline inset | `--row-x` times space-scale |
|
|
77
|
-
|
|
|
73
|
+
| Item/table row block inset | `--row-y` times density-scale; compact/comfortable use 0.75/1.25 multipliers where supported |
|
|
74
|
+
| Anchored collection block inset | Default/comfortable use 0.75/1 × `--row-y` × density-scale; compact uses the spacing-scaled 2xs step |
|
|
78
75
|
| Surface tiers | `--surface-x` / `--surface-y`, times space-scale; xs/sm/md/lg use 1/2, 2/3, 1 and 4/3 |
|
|
79
|
-
| Menu header/footer inline inset |
|
|
76
|
+
| Menu header/footer inline inset | Compact bands use the md spacing step; plain header/footer copy adds the xs step. Leading controls and actions stay on the band edge. |
|
|
77
|
+
|
|
78
|
+
Rich display popovers use the surface roots (24px by default); compact menu/list shells use the md spacing role (8px), scaled once by --space-scale. Row inline padding and density stay independent.
|
|
80
79
|
|
|
81
80
|
Use discrete inset, density and size props for the component responsibility described in [composition](composition.md). CSS scales are independent continuous theme settings. Primary row text does not shrink to xs merely because a density is compact. Public Input and Command search retain normal desktop editable text; coarse-pointer devices use text-base at mobile and tablet widths. Typography components remain margin-free.
|
|
82
81
|
|
|
@@ -151,6 +150,11 @@ heavier border.
|
|
|
151
150
|
|
|
152
151
|
## Extend without drift
|
|
153
152
|
|
|
153
|
+
For Tailwind placement and drawing in app-owned composites, read
|
|
154
|
+
[app-owned composites](custom-composition.md#token-backed-placement-and-drawing).
|
|
155
|
+
That guide separates new content geometry from the public component anatomy
|
|
156
|
+
that still owns its surface, interaction and typography.
|
|
157
|
+
|
|
154
158
|
Reuse existing color, text, action/control, row, surface or shell responsibilities first. An app token stays app-owned, not a package knob. New package tokens require multiple consumers, one owner/default/purpose, contract/docs updates and scoped behavior verification. Never expand the budget to fix one preview.
|
|
155
159
|
|
|
156
160
|
Use public structures/utilities for custom composition. Missing API seams should be additive props/slots rather than copies of private code. Review light/dark foregrounds and opened portals. CSS owns theming, UIProvider stable display defaults, callbacks app state.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"package": "themelia-react-ui",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.6",
|
|
4
4
|
"structural": [
|
|
5
5
|
{
|
|
6
6
|
"name": "--space-scale",
|
|
@@ -24,12 +24,12 @@
|
|
|
24
24
|
},
|
|
25
25
|
{
|
|
26
26
|
"name": "--height-action",
|
|
27
|
-
"default": "
|
|
27
|
+
"default": "2rem",
|
|
28
28
|
"purpose": "Default button and action-trigger height."
|
|
29
29
|
},
|
|
30
30
|
{
|
|
31
31
|
"name": "--height-control",
|
|
32
|
-
"default": "
|
|
32
|
+
"default": "2rem",
|
|
33
33
|
"purpose": "Default input, select, and field-control height."
|
|
34
34
|
},
|
|
35
35
|
{
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
},
|
|
70
70
|
{
|
|
71
71
|
"name": "--shell-header-height",
|
|
72
|
-
"default": "
|
|
72
|
+
"default": "4rem",
|
|
73
73
|
"purpose": "Minimum height of the application header shell."
|
|
74
74
|
},
|
|
75
75
|
{
|
|
@@ -121,10 +121,10 @@
|
|
|
121
121
|
"radius": {
|
|
122
122
|
"name": "--radius",
|
|
123
123
|
"default": "0.75rem",
|
|
124
|
-
"purpose": "
|
|
124
|
+
"purpose": "Default 12px corner for controls, badges and rows; outer shells use 4/3 of it.",
|
|
125
125
|
"defaultUtility": "rounded-radius",
|
|
126
|
-
"
|
|
127
|
-
"
|
|
126
|
+
"surfaceUtility": "rounded-surface",
|
|
127
|
+
"surfaceFormula": "calc(var(--radius) * 4 / 3)"
|
|
128
128
|
},
|
|
129
129
|
"advanced": [
|
|
130
130
|
"--font-heading",
|
|
@@ -465,7 +465,7 @@
|
|
|
465
465
|
"rounded-radius-xs",
|
|
466
466
|
"rounded-radius-sm",
|
|
467
467
|
"rounded-radius-md",
|
|
468
|
-
"rounded-
|
|
468
|
+
"rounded-surface",
|
|
469
469
|
"rounded-radius-lg",
|
|
470
470
|
"rounded-radius-xl",
|
|
471
471
|
"h-action-xs",
|
|
@@ -532,7 +532,7 @@
|
|
|
532
532
|
"size-upload-avatar-small",
|
|
533
533
|
"size-upload-avatar",
|
|
534
534
|
"size-upload-avatar-large",
|
|
535
|
-
"rounded-
|
|
535
|
+
"rounded-radius"
|
|
536
536
|
],
|
|
537
537
|
"layout": [
|
|
538
538
|
"h-shell-header",
|