themelia-react-ui 1.0.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +417 -0
- package/README.md +67 -16
- package/dist/{accordion-B-5Focs8.js → accordion-CQXVcd7Q.js} +15 -15
- package/dist/accordion-CQXVcd7Q.js.map +1 -0
- package/dist/action-menu-BTpyPWJ2.js +264 -0
- package/dist/action-menu-BTpyPWJ2.js.map +1 -0
- package/dist/affordance-geometry.generated-CCIXb2A1.js +68 -0
- package/dist/affordance-geometry.generated-CCIXb2A1.js.map +1 -0
- package/dist/{ai-artifact-B5tPpXnS.js → ai-artifact-2PQ2fItc.js} +206 -215
- package/dist/ai-artifact-2PQ2fItc.js.map +1 -0
- package/dist/{app-shell-at8Kt4l_.js → app-shell-BE_j8-AT.js} +11 -10
- package/dist/app-shell-BE_j8-AT.js.map +1 -0
- package/dist/{attachment-BO2R47wn.js → attachment-q69dlt5Y.js} +14 -14
- package/dist/attachment-q69dlt5Y.js.map +1 -0
- package/dist/auth-M3vGMgDR.js +723 -0
- package/dist/auth-M3vGMgDR.js.map +1 -0
- package/dist/{avatar-Bpzty83c.js → avatar-djdaaQ_s.js} +15 -13
- package/dist/avatar-djdaaQ_s.js.map +1 -0
- package/dist/{badge-BZXZT9wd.js → badge-0tATj-tW.js} +9 -9
- package/dist/badge-0tATj-tW.js.map +1 -0
- package/dist/base/accordion.js +1 -1
- package/dist/base/action-menu.js +1 -1
- package/dist/base/attachment.js +1 -1
- package/dist/base/avatar.js +1 -1
- package/dist/base/badge.js +1 -1
- package/dist/base/buttons.js +3 -2
- package/dist/base/cards.js +3 -3
- package/dist/base/carousel.js +33 -35
- package/dist/base/carousel.js.map +1 -1
- package/dist/base/cascader.js +246 -222
- package/dist/base/cascader.js.map +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 +3 -3
- package/dist/base/display.js +7 -7
- 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 +94 -92
- package/dist/base/inline-edit.js.map +1 -1
- package/dist/base/item.js +1 -1
- package/dist/base/media-gallery.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 +7 -4
- package/dist/base/qr-code.js.map +1 -1
- package/dist/base/repeaters.js +53 -53
- package/dist/base/repeaters.js.map +1 -1
- package/dist/base/sheet.js +1 -1
- package/dist/base/sidebar.js +1 -1
- package/dist/base/signature-pad.js +84 -82
- package/dist/base/signature-pad.js.map +1 -1
- package/dist/base/skeleton.js +1 -1
- package/dist/base/spinner.js +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 +7 -7
- 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/blocks/admin.js +228 -219
- package/dist/blocks/admin.js.map +1 -1
- package/dist/blocks/ai.js +182 -212
- package/dist/blocks/ai.js.map +1 -1
- package/dist/blocks/analytics/usage-card.js +1 -1
- package/dist/blocks/analytics.js +665 -620
- package/dist/blocks/analytics.js.map +1 -1
- package/dist/blocks/collaboration.js +2 -2
- package/dist/blocks/commerce/receipt.js +1 -1
- package/dist/blocks/commerce.js +1439 -1553
- package/dist/blocks/commerce.js.map +1 -1
- package/dist/blocks/data-display.js +1 -1
- package/dist/blocks/onboarding.js +6 -6
- package/dist/blocks/onboarding.js.map +1 -1
- package/dist/blocks/planning.js +88 -97
- package/dist/blocks/planning.js.map +1 -1
- package/dist/blocks/timelines.js +1 -1
- package/dist/{breadcrumbs-DdQ_I5ra.js → breadcrumbs-BG_FfMK4.js} +10 -9
- package/dist/breadcrumbs-BG_FfMK4.js.map +1 -0
- package/dist/button-BS3KDg00.js +674 -0
- package/dist/button-BS3KDg00.js.map +1 -0
- package/dist/{button-BS6l5JUw.js → button-R9CCoH7A.js} +3 -3
- package/dist/button-R9CCoH7A.js.map +1 -0
- package/dist/buttons-DS0ZIwJ_.js +99 -0
- package/dist/buttons-DS0ZIwJ_.js.map +1 -0
- package/dist/{cards-Cum56XOF.js → cards-QoJ4syG9.js} +12 -12
- package/dist/{cards-Cum56XOF.js.map → cards-QoJ4syG9.js.map} +1 -1
- package/dist/chart-DwYRKKc-.js +152 -0
- package/dist/chart-DwYRKKc-.js.map +1 -0
- package/dist/checkbox-B7ygNTYp.js +35 -0
- package/dist/checkbox-B7ygNTYp.js.map +1 -0
- package/dist/choice-inputs-DrJ17tpL.js +752 -0
- package/dist/choice-inputs-DrJ17tpL.js.map +1 -0
- package/dist/{code-block-xHKbAJDj.js → code-block-CD0B7M93.js} +27 -27
- package/dist/code-block-CD0B7M93.js.map +1 -0
- package/dist/{collapsible-DsnktFNv.js → collapsible-oMUGM4tr.js} +3 -3
- package/dist/{collapsible-DsnktFNv.js.map → collapsible-oMUGM4tr.js.map} +1 -1
- package/dist/{collection-content-C4fthJV_.js → collection-content-Ys-OZOkY.js} +3 -3
- package/dist/{collection-content-C4fthJV_.js.map → collection-content-Ys-OZOkY.js.map} +1 -1
- package/dist/combobox-6dvVny2q.js +272 -0
- package/dist/combobox-6dvVny2q.js.map +1 -0
- package/dist/combobox-CB7039j7.js +865 -0
- package/dist/combobox-CB7039j7.js.map +1 -0
- package/dist/{command-C0xe7u9B.js → command-kPMPjIxJ.js} +35 -31
- package/dist/command-kPMPjIxJ.js.map +1 -0
- package/dist/{comments-DviPLnwy.js → comments-You0Bzbr.js} +434 -409
- package/dist/comments-You0Bzbr.js.map +1 -0
- package/dist/components/base/accordion/accordion-variants.d.ts +3 -3
- package/dist/components/base/action-menu/action-menu.d.ts +7 -2
- package/dist/components/base/avatar/stacked-avatars.d.ts +5 -4
- package/dist/components/base/badge/badge.d.ts +1 -1
- package/dist/components/base/badge/badge.recipes.d.ts +4 -4
- package/dist/components/base/buttons/base-button.d.ts +7 -0
- package/dist/components/base/buttons/button-group.recipes.d.ts +2 -2
- package/dist/components/base/buttons/button.recipes.d.ts +10 -19
- package/dist/components/base/buttons/button.variants.d.ts +1 -0
- package/dist/components/base/buttons/loader-button.d.ts +3 -1
- package/dist/components/base/buttons/text-button.d.ts +2 -2
- package/dist/components/base/buttons/use-pending-button-focus.d.ts +3 -0
- package/dist/components/base/cards/card.recipes.d.ts +13 -5
- package/dist/components/base/cards/partials/card-primitives.d.ts +9 -4
- package/dist/components/base/cards/smart-card.types.d.ts +1 -1
- package/dist/components/base/carousel/carousel.d.ts +3 -1
- package/dist/components/base/chart/chart.d.ts +7 -7
- package/dist/components/base/choice-inputs/checkbox.d.ts +6 -7
- package/dist/components/base/choice-inputs/choice-types.d.ts +10 -1
- package/dist/components/base/choice-inputs/pill-radio-group.d.ts +9 -0
- package/dist/components/base/choice-inputs/select-popup.d.ts +9 -1
- package/dist/components/base/choice-inputs/switch-card.d.ts +1 -1
- package/dist/components/base/date-pickers/date-picker-field.d.ts +23 -0
- package/dist/components/base/date-pickers/date-picker.recipes.d.ts +5 -18
- package/dist/components/base/date-pickers/datepicker.types.d.ts +16 -3
- package/dist/components/base/display/alert-dialog.d.ts +8 -2
- package/dist/components/base/display/content-block.d.ts +4 -2
- package/dist/components/base/display/date-block.d.ts +1 -1
- package/dist/components/base/display/dialog.d.ts +12 -5
- package/dist/components/base/display/surface-title.d.ts +6 -1
- package/dist/components/base/feedback/alert.d.ts +1 -1
- package/dist/components/base/feedback/state-display.d.ts +5 -4
- package/dist/components/base/forms/form-field.d.ts +1 -0
- package/dist/components/base/forms/form-sizing.d.ts +35 -3
- package/dist/components/base/forms/workflow.d.ts +2 -0
- package/dist/components/base/forms-numeric/coordinates-input.d.ts +3 -0
- package/dist/components/base/forms-numeric/rounding-mode-select.d.ts +4 -1
- package/dist/components/base/navigation/dropdown-menu.d.ts +2 -2
- package/dist/components/base/navigation/language-switcher.d.ts +4 -1
- package/dist/components/base/navigation/overflow-tab-bar.d.ts +7 -0
- package/dist/components/base/navigation/page-header/page-header.d.ts +4 -1
- package/dist/components/base/navigation/tabs.d.ts +3 -5
- package/dist/components/base/popover/popover.recipes.d.ts +3 -3
- package/dist/components/base/qr-code/qr-code.d.ts +2 -0
- package/dist/components/base/sheet/index.d.ts +29 -1
- package/dist/components/base/sheet/sheet.d.ts +14 -5
- package/dist/components/base/spinner/spinner.d.ts +3 -2
- package/dist/components/base/structure/structure.types.d.ts +1 -1
- package/dist/components/base/table/index.d.ts +1 -1
- package/dist/components/base/text-inputs/clear-native-field.d.ts +2 -0
- package/dist/components/base/text-inputs/input-group.d.ts +2 -2
- package/dist/components/base/text-inputs/input-trailing-action.d.ts +3 -0
- package/dist/components/base/upload/upload.recipes.d.ts +11 -0
- package/dist/components/base/value-inputs/date-time-input.d.ts +4 -2
- package/dist/components/base/value-inputs/tags-input.d.ts +2 -0
- package/dist/components/blocks/admin/api-key-list/api-key-list.types.d.ts +1 -1
- package/dist/components/blocks/analytics/format-metric-value.d.ts +11 -1
- package/dist/components/blocks/analytics/index.d.ts +1 -1
- package/dist/components/blocks/analytics/types.d.ts +1 -1
- package/dist/components/blocks/analytics/use-metric-format-options.d.ts +3 -0
- package/dist/components/blocks/collaboration/message/message.recipes.d.ts +12 -0
- package/dist/components/blocks/commerce/address-card/address-card.d.ts +1 -1
- package/dist/components/blocks/commerce/address-card/types.d.ts +3 -1
- package/dist/components/blocks/commerce/booking-calendar-event-card/booking-calendar-event-card.d.ts +4 -0
- package/dist/components/blocks/commerce/booking-calendar-event-card/booking-calendar-event-card.types.d.ts +2 -2
- package/dist/components/blocks/commerce/discount-stack/types.d.ts +1 -1
- package/dist/components/blocks/commerce/inventory-section/types.d.ts +4 -1
- package/dist/components/blocks/commerce/loyalty-points/types.d.ts +1 -1
- package/dist/components/blocks/commerce/order-status/types.d.ts +4 -0
- package/dist/components/blocks/commerce/payment-method/payment-method.d.ts +1 -1
- package/dist/components/blocks/commerce/payment-method/types.d.ts +3 -1
- package/dist/components/blocks/commerce/seo-listing/seo-listing-card.d.ts +1 -1
- package/dist/components/blocks/commerce/seo-listing/types.d.ts +3 -1
- package/dist/components/blocks/commerce/vendor-profile/types.d.ts +4 -1
- package/dist/components/blocks/data-display/dense-info-card/dense-info.strings.d.ts +4 -1
- package/dist/components/blocks/data-display/empty-state/partials/illustrations/document-stack.d.ts +1 -4
- package/dist/components/blocks/data-display/empty-state/partials/illustrations/inbox-clean.d.ts +1 -4
- package/dist/components/blocks/data-display/empty-state/partials/illustrations/index.d.ts +3 -3
- package/dist/components/blocks/data-display/empty-state/partials/illustrations/stacked-cards.d.ts +1 -6
- package/dist/components/blocks/data-display/inline-stat/inline-stat.d.ts +4 -1
- package/dist/components/features/combobox/components/error-message.d.ts +1 -1
- package/dist/components/features/comments/hooks/use-attachment-upload.d.ts +5 -0
- package/dist/components/features/filters/facets/search-facet.d.ts +0 -12
- package/dist/components/features/filters/facets/tags-facet.d.ts +1 -1
- package/dist/components/features/global-search/partials/global-search-idle-state.d.ts +1 -1
- package/dist/components/features/media-library/media-library.d.ts +1 -1
- package/dist/components/features/media-library/media-library.types.d.ts +9 -1
- package/dist/components/features/media-library/partials/media-library-partials.d.ts +1 -1
- package/dist/components/features/overlays/alert-dialog.d.ts +1 -1
- package/dist/components/features/overlays/drawer.d.ts +1 -1
- package/dist/components/features/overlays/hooks/use-overlay-actions.d.ts +2 -2
- package/dist/components/features/overlays/hooks/use-overlay-visibility.d.ts +11 -4
- package/dist/components/features/overlays/hooks/use-pending-overlay-focus.d.ts +2 -0
- package/dist/components/features/overlays/overlay-tone-icon.d.ts +37 -0
- package/dist/components/features/overlays/overlays.types.d.ts +46 -22
- package/dist/components/features/products/components/product-variants-manager.d.ts +1 -1
- package/dist/components/features/products/partials/index.d.ts +1 -1
- package/dist/components/features/products/partials/product-metric-tile.d.ts +6 -0
- package/dist/components/features/products/partials/product-tone.d.ts +11 -1
- package/dist/components/features/products/products.types.d.ts +2 -1
- package/dist/components/features/rich-text-editor/rich-text-editor.recipes.d.ts +2 -1
- package/dist/components/features/table/data-table.d.ts +1 -1
- package/dist/components/features/table/partials/cell-renderers.d.ts +1 -1
- package/dist/components/features/table/table.types.d.ts +1 -1
- package/dist/components/features/theme-tweaker/theme-provider-settings.d.ts +3 -1
- package/dist/components/layout/auth/auth.types.d.ts +1 -0
- package/dist/components/layout/page/index.d.ts +1 -1
- package/dist/components/layout/page/page.d.ts +0 -1
- package/dist/components/layout/page/page.types.d.ts +62 -6
- package/dist/components/layout/page/partials/page-header-commands.d.ts +13 -0
- package/dist/components/layout/page/partials/page-header.d.ts +1 -1
- package/dist/components/layout/sidebar/sidebar.context.d.ts +1 -1
- package/dist/components/layout/sidebar/sidebar.types.d.ts +4 -0
- package/dist/components/layout/workspace/workspace.types.d.ts +3 -0
- package/dist/components/primitives/date.d.ts +16 -3
- package/dist/components/primitives/dimensions.d.ts +6 -0
- package/dist/components/primitives/duration.d.ts +6 -0
- package/dist/components/primitives/file-size.d.ts +6 -0
- package/dist/components/primitives/index.d.ts +1 -1
- package/dist/components/primitives/initials.d.ts +11 -2
- package/dist/components/primitives/link.d.ts +7 -0
- package/dist/components/primitives/money.d.ts +29 -7
- package/dist/components/primitives/number.d.ts +17 -0
- package/dist/components/primitives/value-typography.d.ts +54 -0
- package/dist/components/primitives/value.d.ts +31 -6
- package/dist/components/typography/heading.d.ts +13 -2
- package/dist/components/typography/index.d.ts +1 -1
- package/dist/components/typography/label.d.ts +3 -0
- package/dist/components/typography/running-text.d.ts +12 -0
- package/dist/components/typography/text-link.d.ts +23 -1
- package/dist/components/typography/text.d.ts +12 -0
- package/dist/components/typography/text.styles.d.ts +37 -5
- package/dist/components/ui/button.d.ts +1 -1
- package/dist/components/ui/checkbox.d.ts +5 -0
- package/dist/components/ui/overlay.recipes.d.ts +15 -2
- package/dist/components/ui/popover.d.ts +1 -1
- package/dist/components/ui/select.d.ts +3 -1
- package/dist/components/ui/sidebar.d.ts +1 -1
- package/dist/components/ui/switch.d.ts +5 -0
- package/dist/components/ui/table.d.ts +2 -1
- package/dist/container.recipes-D9t8MHR3.js +27 -0
- package/dist/container.recipes-D9t8MHR3.js.map +1 -0
- package/dist/{containers-6s-ucRQQ.js → containers-D_L4mTVb.js} +34 -57
- package/dist/containers-D_L4mTVb.js.map +1 -0
- package/dist/control-group-recipes-DBXmfh2E.js +21 -0
- package/dist/control-group-recipes-DBXmfh2E.js.map +1 -0
- package/dist/{copyable-B7SBXJMr.js → copyable-DDjTeW_j.js} +6 -6
- package/dist/{copyable-B7SBXJMr.js.map → copyable-DDjTeW_j.js.map} +1 -1
- package/dist/data-display-3xWQUnMA.js +1335 -0
- package/dist/data-display-3xWQUnMA.js.map +1 -0
- package/dist/date-picker-DrDFj8Lo.js +1527 -0
- package/dist/date-picker-DrDFj8Lo.js.map +1 -0
- package/dist/date-pickers-CnFCb0n2.js +174 -0
- package/dist/date-pickers-CnFCb0n2.js.map +1 -0
- package/dist/date-uf3z37Nm.js +144 -0
- package/dist/date-uf3z37Nm.js.map +1 -0
- package/dist/{display-CFM5myut.js → display-DrdvPwF0.js} +25 -25
- package/dist/display-DrdvPwF0.js.map +1 -0
- package/dist/{dropdown-menu-BlnyHr-9.js → dropdown-menu-CURh59jb.js} +22 -15
- package/dist/dropdown-menu-CURh59jb.js.map +1 -0
- package/dist/features/activities.js +177 -163
- package/dist/features/activities.js.map +1 -1
- package/dist/features/ai-chat.js +187 -183
- package/dist/features/ai-chat.js.map +1 -1
- package/dist/features/async-preview.js +9 -9
- 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 +25 -23
- package/dist/features/data-view.js.map +1 -1
- package/dist/features/email-composer/engine.js +1 -1
- package/dist/features/email-composer.js +353 -355
- package/dist/features/email-composer.js.map +1 -1
- package/dist/features/event-calendar.js +346 -354
- package/dist/features/event-calendar.js.map +1 -1
- package/dist/features/filters.js +1 -1
- package/dist/features/global-search.js +225 -227
- package/dist/features/global-search.js.map +1 -1
- package/dist/features/kanban.js +29 -29
- package/dist/features/kanban.js.map +1 -1
- package/dist/features/map.js +59 -58
- package/dist/features/map.js.map +1 -1
- package/dist/features/media-library.js +898 -900
- package/dist/features/media-library.js.map +1 -1
- package/dist/features/mentions.js +1 -1
- package/dist/features/overlays.js +1 -1
- package/dist/features/products.js +1412 -1444
- package/dist/features/products.js.map +1 -1
- package/dist/features/questionnaire.js +51 -49
- package/dist/features/questionnaire.js.map +1 -1
- package/dist/features/resource-assignment.js +103 -97
- package/dist/features/resource-assignment.js.map +1 -1
- package/dist/features/resource.js +13 -13
- package/dist/features/resource.js.map +1 -1
- package/dist/features/rich-text-editor.js +2 -2
- package/dist/features/schema-form.js +187 -183
- package/dist/features/schema-form.js.map +1 -1
- package/dist/features/suggestions.js +3 -3
- package/dist/features/sync.js +7 -7
- package/dist/features/sync.js.map +1 -1
- package/dist/features/table.js +1 -1
- package/dist/features/theme-tweaker.js +508 -503
- package/dist/features/theme-tweaker.js.map +1 -1
- package/dist/{feedback-DWUkgEjR.js → feedback-C7nR0UtT.js} +30 -31
- package/dist/feedback-C7nR0UtT.js.map +1 -0
- package/dist/field-affordance-recipes-CkOCdE2y.js +46 -0
- package/dist/field-affordance-recipes-CkOCdE2y.js.map +1 -0
- package/dist/{field-state-recipes-CBTRt9Bt.js → field-state-recipes-C-MFBX_8.js} +5 -5
- package/dist/field-state-recipes-C-MFBX_8.js.map +1 -0
- package/dist/{filters-BhsUtsxW.js → filters-Da-gNPsE.js} +760 -765
- package/dist/filters-Da-gNPsE.js.map +1 -0
- package/dist/{form-field-Bn7ZH1rA.js → form-field-VZRULhUK.js} +20 -12
- package/dist/form-field-VZRULhUK.js.map +1 -0
- package/dist/form-sizing-uWP4lzVh.js +126 -0
- package/dist/form-sizing-uWP4lzVh.js.map +1 -0
- package/dist/{forms-B7pzS25o.js → forms-DDeEnXSY.js} +38 -38
- package/dist/forms-DDeEnXSY.js.map +1 -0
- package/dist/forms-numeric-D3CO60IF.js +905 -0
- package/dist/forms-numeric-D3CO60IF.js.map +1 -0
- package/dist/{header-C59QZyxV.js → header-2ycNqGOR.js} +42 -37
- package/dist/header-2ycNqGOR.js.map +1 -0
- package/dist/{hooks-CM1Vp9Pe.js → hooks-DQ5SPwZw.js} +2 -2
- package/dist/{hooks-CM1Vp9Pe.js.map → hooks-DQ5SPwZw.js.map} +1 -1
- package/dist/{http-CLTVJc5I.js → http-CdEIHyQf.js} +2 -2
- package/dist/http-CdEIHyQf.js.map +1 -0
- package/dist/{icon-badge-Dv0RYQwj.js → icon-badge-DKlaKXoo.js} +4 -4
- package/dist/{icon-badge-Dv0RYQwj.js.map → icon-badge-DKlaKXoo.js.map} +1 -1
- package/dist/index.js +2 -2
- package/dist/input-BoLm9Hks.js +20 -0
- package/dist/input-BoLm9Hks.js.map +1 -0
- package/dist/input-DhQdBnV3.js +255 -0
- package/dist/input-DhQdBnV3.js.map +1 -0
- package/dist/item-xzh8Df65.js +264 -0
- package/dist/item-xzh8Df65.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 +10 -10
- package/dist/lib/affordance-geometry.generated.d.ts +46 -10
- package/dist/lib/control-group-recipes.d.ts +22 -0
- package/dist/lib/field-affordance-recipes.d.ts +70 -2
- package/dist/lib/field-state-recipes.d.ts +6 -4
- package/dist/lib/format.d.ts +9 -0
- package/dist/lib/money-format.d.ts +30 -0
- package/dist/lib/navigation-row-recipes.d.ts +3 -2
- package/dist/lib/overlay-anatomy-recipes.d.ts +2 -2
- package/dist/lib/surface-recipes.d.ts +13 -8
- package/dist/lib/token-merge.generated.d.ts +144 -2
- package/dist/lib/track-recipes.d.ts +1 -1
- package/dist/lib/ui-provider/provider.d.ts +7 -2
- package/dist/lib/ui-provider/store.d.ts +6 -2
- package/dist/lib/ui-provider/types.d.ts +9 -4
- package/dist/lib/use-prefers-reduced-motion.d.ts +2 -0
- package/dist/lib/utils.js +1 -1
- package/dist/media-gallery-DQUQ0m3O.js +201 -0
- package/dist/media-gallery-DQUQ0m3O.js.map +1 -0
- package/dist/{mentions-B8Ko-fhS.js → mentions-DwnO1hh4.js} +40 -39
- package/dist/{mentions-B8Ko-fhS.js.map → mentions-DwnO1hh4.js.map} +1 -1
- package/dist/message-YfFmbXNP.js +127 -0
- package/dist/message-YfFmbXNP.js.map +1 -0
- package/dist/{navigation-BUIn2Qxx.js → navigation-Cbp5V8gG.js} +27 -28
- package/dist/navigation-Cbp5V8gG.js.map +1 -0
- package/dist/navigation-Cs1npsPm.js +300 -0
- package/dist/navigation-Cs1npsPm.js.map +1 -0
- package/dist/{navigation-row-recipes-GVh11KiT.js → navigation-row-recipes-DlU-4QYO.js} +3 -3
- package/dist/navigation-row-recipes-DlU-4QYO.js.map +1 -0
- package/dist/number-CKRBYmZK.js +352 -0
- package/dist/number-CKRBYmZK.js.map +1 -0
- package/dist/overlay.recipes-CNO2S9V6.js +34 -0
- package/dist/overlay.recipes-CNO2S9V6.js.map +1 -0
- package/dist/overlays-DhZO7N-I.js +994 -0
- package/dist/overlays-DhZO7N-I.js.map +1 -0
- package/dist/page-C6R_8jFt.js +325 -0
- package/dist/page-C6R_8jFt.js.map +1 -0
- package/dist/{page-header-DQRa0jug.js → page-header-hUTzcRZX.js} +12 -12
- package/dist/page-header-hUTzcRZX.js.map +1 -0
- package/dist/{pagination-C29vvt3I.js → pagination-Cm0jqa3I.js} +21 -21
- package/dist/pagination-Cm0jqa3I.js.map +1 -0
- package/dist/{popover-CoLDEg19.js → popover-Dcv_9jxr.js} +23 -22
- package/dist/popover-Dcv_9jxr.js.map +1 -0
- package/dist/{popover-menu-GLIQTJTx.js → popover-menu-DnRFKnHP.js} +6 -6
- package/dist/{popover-menu-GLIQTJTx.js.map → popover-menu-DnRFKnHP.js.map} +1 -1
- package/dist/{popover.recipes-zgBhMlUu.js → popover.recipes-wmbvL8Ah.js} +5 -5
- package/dist/popover.recipes-wmbvL8Ah.js.map +1 -0
- package/dist/primitives-BHrwQXFC.js +379 -0
- package/dist/primitives-BHrwQXFC.js.map +1 -0
- package/dist/primitives.js +5 -5
- package/dist/{progress-BOe8l_FZ.js → progress-Br9WTFya.js} +12 -11
- package/dist/progress-Br9WTFya.js.map +1 -0
- package/dist/{receipt-BM8xsGFy.js → receipt-CV89q1fs.js} +8 -8
- package/dist/{receipt-BM8xsGFy.js.map → receipt-CV89q1fs.js.map} +1 -1
- package/dist/rich-text-editor-CF8QYt5p.js +574 -0
- package/dist/rich-text-editor-CF8QYt5p.js.map +1 -0
- package/dist/{rich-text-editor.recipes-DxvOE0Lp.js → rich-text-editor.recipes-CnrbmTS1.js} +35 -26
- package/dist/rich-text-editor.recipes-CnrbmTS1.js.map +1 -0
- package/dist/{rich-text-B7sBAdDG.js → rich-text-j-FGAeZW.js} +4 -4
- package/dist/{rich-text-B7sBAdDG.js.map → rich-text-j-FGAeZW.js.map} +1 -1
- package/dist/{scroll-area-BheMQ270.js → scroll-area-DRdr16Pt.js} +3 -3
- package/dist/scroll-area-DRdr16Pt.js.map +1 -0
- package/dist/{separator-DO0EbCEm.js → separator-BMEvwnSX.js} +2 -2
- package/dist/{separator-DO0EbCEm.js.map → separator-BMEvwnSX.js.map} +1 -1
- package/dist/{separator-Gk_WXH-l.js → separator-Do5GWDYi.js} +4 -4
- package/dist/separator-Do5GWDYi.js.map +1 -0
- package/dist/services/actions/action-adapters.d.ts +4 -0
- package/dist/services/actions.js +8 -3
- package/dist/services/actions.js.map +1 -1
- package/dist/{settings-BnCyyPOJ.js → settings-DHk0L2MF.js} +20 -19
- package/dist/settings-DHk0L2MF.js.map +1 -0
- package/dist/sheet-DRFNY1_D.js +207 -0
- package/dist/sheet-DRFNY1_D.js.map +1 -0
- package/dist/sidebar-Cb8WzOvE.js +511 -0
- package/dist/sidebar-Cb8WzOvE.js.map +1 -0
- package/dist/{sidebar-DPR7fmqN.js → sidebar-Crc9M9JV.js} +220 -201
- package/dist/sidebar-Crc9M9JV.js.map +1 -0
- package/dist/{skeleton-CmT1ppqb.js → skeleton-DVMXr15h.js} +5 -5
- package/dist/{skeleton-CmT1ppqb.js.map → skeleton-DVMXr15h.js.map} +1 -1
- package/dist/smart-card-Bek-TwUp.js +599 -0
- package/dist/smart-card-Bek-TwUp.js.map +1 -0
- package/dist/{spinner-BY9HbUEh.js → spinner-CmTAbEp0.js} +8 -6
- package/dist/spinner-CmTAbEp0.js.map +1 -0
- package/dist/{structure-MvKVq-oL.js → structure-hzCW-XsV.js} +3 -3
- package/dist/{structure-MvKVq-oL.js.map → structure-hzCW-XsV.js.map} +1 -1
- package/dist/{structure.recipes-Bqhf9oIh.js → structure.recipes-EPz60cU8.js} +37 -19
- package/dist/structure.recipes-EPz60cU8.js.map +1 -0
- package/dist/style.css +1 -1
- package/dist/surface-recipes-DOdoBXGm.js +28 -0
- package/dist/surface-recipes-DOdoBXGm.js.map +1 -0
- package/dist/table-D6zKeYQX.js +162 -0
- package/dist/table-D6zKeYQX.js.map +1 -0
- package/dist/table-Dn4XSrSB.js +1444 -0
- package/dist/table-Dn4XSrSB.js.map +1 -0
- package/dist/tabs-Dk8E_knt.js +189 -0
- package/dist/tabs-Dk8E_knt.js.map +1 -0
- package/dist/text-inputs-BFpku0Qd.js +331 -0
- package/dist/text-inputs-BFpku0Qd.js.map +1 -0
- package/dist/{text.styles-BwB7vAF2.js → text.styles-g4He6UIW.js} +26 -15
- package/dist/text.styles-g4He6UIW.js.map +1 -0
- package/dist/theme.css +90 -124
- package/dist/themes/green.css +24 -0
- package/dist/{timelines-B9ICkQcV.js → timelines-CxuAFIc2.js} +97 -104
- package/dist/timelines-CxuAFIc2.js.map +1 -0
- package/dist/track-recipes-CDcKmndW.js +10 -0
- package/dist/track-recipes-CDcKmndW.js.map +1 -0
- package/dist/{tree-BdWSaoFT.js → tree-BotPlyiD.js} +13 -13
- package/dist/{tree-BdWSaoFT.js.map → tree-BotPlyiD.js.map} +1 -1
- package/dist/typography/rich-text.js +1 -1
- package/dist/typography-CAr3dQhX.js +116 -0
- package/dist/typography-CAr3dQhX.js.map +1 -0
- package/dist/typography.js +2 -2
- package/dist/{ui-provider-CftIB6TY.js → ui-provider-D2_TeLqw.js} +22 -22
- package/dist/ui-provider-D2_TeLqw.js.map +1 -0
- package/dist/ui-provider.js +1 -1
- package/dist/{upload-D8Za5x_c.js → upload-B0WHW7ak.js} +278 -274
- package/dist/upload-B0WHW7ak.js.map +1 -0
- package/dist/{upload-queue-hIIYBLS7.js → upload-queue-BHZ_wBfd.js} +72 -75
- package/dist/upload-queue-BHZ_wBfd.js.map +1 -0
- package/dist/{usage-card-DnmnJ58D.js → usage-card-U0YBLTNT.js} +31 -33
- package/dist/usage-card-U0YBLTNT.js.map +1 -0
- package/dist/utils-Cospvlj1.js +4445 -0
- package/dist/utils-Cospvlj1.js.map +1 -0
- package/dist/value-inputs-CjfzGMsN.js +854 -0
- package/dist/value-inputs-CjfzGMsN.js.map +1 -0
- package/dist/value-typography-Deb3yQZg.js +116 -0
- package/dist/value-typography-Deb3yQZg.js.map +1 -0
- package/dist/{workspace-C1PZmk8L.js → workspace-YoFjXi6i.js} +97 -105
- package/dist/workspace-YoFjXi6i.js.map +1 -0
- package/docs/consumer-skill/SKILL.md +123 -119
- package/docs/consumer-skill/examples/analytics.tsx +34 -0
- package/docs/consumer-skill/examples/app-layout.tsx +42 -14
- package/docs/consumer-skill/examples/detail.tsx +20 -5
- package/docs/consumer-skill/examples/edit.tsx +1 -1
- package/docs/consumer-skill/examples/layout-blocks.tsx +20 -0
- package/docs/consumer-skill/examples/manifest.json +37 -3
- package/docs/consumer-skill/examples/scoped-directory.tsx +2 -2
- package/docs/consumer-skill/examples/website.tsx +56 -0
- package/docs/consumer-skill/references/analytics.md +70 -0
- package/docs/consumer-skill/references/composition.md +195 -9
- package/docs/consumer-skill/references/design-contract.md +33 -7
- package/docs/consumer-skill/references/discovery.md +80 -5
- package/docs/consumer-skill/references/installation.md +22 -0
- package/docs/consumer-skill/references/integration.md +46 -1
- package/docs/consumer-skill/references/public-api.json +2083 -237
- package/docs/consumer-skill/references/review.md +74 -6
- package/docs/consumer-skill/references/theming.md +59 -8
- package/docs/consumer-skill/references/tokens.json +180 -9
- package/docs/consumer-skill/references/workflows.md +34 -0
- package/docs/consumer-skill/scripts/check-composition.mjs +1 -1
- package/docs/consumer-skill/scripts/composition-policy.mjs +271 -18
- package/docs/consumer-skill/scripts/discovery.mjs +69 -9
- package/docs/consumer-skill/scripts/pin-button-defaults.mjs +95 -0
- package/docs/consumer-skill/scripts/surface-policy.mjs +44 -0
- package/package.json +11 -6
- package/dist/accordion-B-5Focs8.js.map +0 -1
- package/dist/action-menu-Cx3SdfbN.js +0 -265
- package/dist/action-menu-Cx3SdfbN.js.map +0 -1
- package/dist/affordance-geometry.generated-D8Jcfb0G.js +0 -32
- package/dist/affordance-geometry.generated-D8Jcfb0G.js.map +0 -1
- package/dist/ai-artifact-B5tPpXnS.js.map +0 -1
- package/dist/app-shell-at8Kt4l_.js.map +0 -1
- package/dist/attachment-BO2R47wn.js.map +0 -1
- package/dist/auth-OFwWSAap.js +0 -704
- package/dist/auth-OFwWSAap.js.map +0 -1
- package/dist/avatar-Bpzty83c.js.map +0 -1
- package/dist/badge-BZXZT9wd.js.map +0 -1
- package/dist/breadcrumbs-DdQ_I5ra.js.map +0 -1
- package/dist/button-BS6l5JUw.js.map +0 -1
- package/dist/buttons-Co6GavvM.js +0 -674
- package/dist/buttons-Co6GavvM.js.map +0 -1
- package/dist/chart-DVfcwQu6.js +0 -149
- package/dist/chart-DVfcwQu6.js.map +0 -1
- package/dist/checkbox-BavDRjF7.js +0 -34
- package/dist/checkbox-BavDRjF7.js.map +0 -1
- package/dist/choice-inputs-CC7XqPQO.js +0 -619
- package/dist/choice-inputs-CC7XqPQO.js.map +0 -1
- package/dist/code-block-xHKbAJDj.js.map +0 -1
- package/dist/combobox-DEbdr-3u.js +0 -273
- package/dist/combobox-DEbdr-3u.js.map +0 -1
- package/dist/combobox-xv3yJbzl.js +0 -850
- package/dist/combobox-xv3yJbzl.js.map +0 -1
- package/dist/command-C0xe7u9B.js.map +0 -1
- package/dist/comments-DviPLnwy.js.map +0 -1
- package/dist/containers-6s-ucRQQ.js.map +0 -1
- package/dist/data-display-cWIRdeaf.js +0 -1129
- package/dist/data-display-cWIRdeaf.js.map +0 -1
- package/dist/date-BFNMnrS5.js +0 -140
- package/dist/date-BFNMnrS5.js.map +0 -1
- package/dist/date-picker-CA6ogMQB.js +0 -1521
- package/dist/date-picker-CA6ogMQB.js.map +0 -1
- package/dist/date-pickers-BPIKLdsD.js +0 -224
- package/dist/date-pickers-BPIKLdsD.js.map +0 -1
- package/dist/display-CFM5myut.js.map +0 -1
- package/dist/dropdown-menu-BlnyHr-9.js.map +0 -1
- package/dist/feedback-DWUkgEjR.js.map +0 -1
- package/dist/field-affordance-recipes-IjzPrCTw.js +0 -17
- package/dist/field-affordance-recipes-IjzPrCTw.js.map +0 -1
- package/dist/field-state-recipes-CBTRt9Bt.js.map +0 -1
- package/dist/filters-BhsUtsxW.js.map +0 -1
- package/dist/form-field-Bn7ZH1rA.js.map +0 -1
- package/dist/form-sizing-BWs70_a2.js +0 -100
- package/dist/form-sizing-BWs70_a2.js.map +0 -1
- package/dist/format-iamDSqs2.js +0 -110
- package/dist/format-iamDSqs2.js.map +0 -1
- package/dist/forms-B7pzS25o.js.map +0 -1
- package/dist/forms-numeric-BUBxELBv.js +0 -867
- package/dist/forms-numeric-BUBxELBv.js.map +0 -1
- package/dist/header-C59QZyxV.js.map +0 -1
- package/dist/http-CLTVJc5I.js.map +0 -1
- package/dist/input-WwYQZJzG.js +0 -202
- package/dist/input-WwYQZJzG.js.map +0 -1
- package/dist/input-ci9fIgFH.js +0 -20
- package/dist/input-ci9fIgFH.js.map +0 -1
- package/dist/item-pJ0GsOiJ.js +0 -257
- package/dist/item-pJ0GsOiJ.js.map +0 -1
- package/dist/media-gallery-DhDRgnVZ.js +0 -200
- package/dist/media-gallery-DhDRgnVZ.js.map +0 -1
- package/dist/message-COsdEvXT.js +0 -108
- package/dist/message-COsdEvXT.js.map +0 -1
- package/dist/navigation-BUIn2Qxx.js.map +0 -1
- package/dist/navigation-DBEu4POU.js +0 -267
- package/dist/navigation-DBEu4POU.js.map +0 -1
- package/dist/navigation-row-recipes-GVh11KiT.js.map +0 -1
- package/dist/number-BNT_BIzJ.js +0 -269
- package/dist/number-BNT_BIzJ.js.map +0 -1
- package/dist/overlay.recipes-BxW5FIfK.js +0 -6
- package/dist/overlay.recipes-BxW5FIfK.js.map +0 -1
- package/dist/overlays-B11wZka6.js +0 -982
- package/dist/overlays-B11wZka6.js.map +0 -1
- package/dist/page-BV6ioQg3.js +0 -202
- package/dist/page-BV6ioQg3.js.map +0 -1
- package/dist/page-header-DQRa0jug.js.map +0 -1
- package/dist/pagination-C29vvt3I.js.map +0 -1
- package/dist/popover-CoLDEg19.js.map +0 -1
- package/dist/popover.recipes-zgBhMlUu.js.map +0 -1
- package/dist/primitives-DKPOGVpj.js +0 -330
- package/dist/primitives-DKPOGVpj.js.map +0 -1
- package/dist/progress-BOe8l_FZ.js.map +0 -1
- package/dist/rich-text-editor-CoVrTiSv.js +0 -575
- package/dist/rich-text-editor-CoVrTiSv.js.map +0 -1
- package/dist/rich-text-editor.recipes-DxvOE0Lp.js.map +0 -1
- package/dist/scroll-area-BheMQ270.js.map +0 -1
- package/dist/select-B2mb-qN2.js +0 -108
- package/dist/select-B2mb-qN2.js.map +0 -1
- package/dist/separator-Gk_WXH-l.js.map +0 -1
- package/dist/settings-BnCyyPOJ.js.map +0 -1
- package/dist/sheet-B-q914Ad.js +0 -205
- package/dist/sheet-B-q914Ad.js.map +0 -1
- package/dist/sidebar-C_2p3Tfj.js +0 -501
- package/dist/sidebar-C_2p3Tfj.js.map +0 -1
- package/dist/sidebar-DPR7fmqN.js.map +0 -1
- package/dist/smart-card-CYLn46e6.js +0 -578
- package/dist/smart-card-CYLn46e6.js.map +0 -1
- package/dist/spinner-BY9HbUEh.js.map +0 -1
- package/dist/structure.recipes-Bqhf9oIh.js.map +0 -1
- package/dist/surface-recipes-CQfRr-VL.js +0 -27
- package/dist/surface-recipes-CQfRr-VL.js.map +0 -1
- package/dist/table-BS39xnlq.js +0 -1424
- package/dist/table-BS39xnlq.js.map +0 -1
- package/dist/table-DnlAJ-xR.js +0 -146
- package/dist/table-DnlAJ-xR.js.map +0 -1
- package/dist/tabs-B5cNMWiP.js +0 -187
- package/dist/tabs-B5cNMWiP.js.map +0 -1
- package/dist/text-inputs-Dh9XGyiS.js +0 -331
- package/dist/text-inputs-Dh9XGyiS.js.map +0 -1
- package/dist/text.styles-BwB7vAF2.js.map +0 -1
- package/dist/timelines-B9ICkQcV.js.map +0 -1
- package/dist/track-recipes-LLPNVwFg.js +0 -10
- package/dist/track-recipes-LLPNVwFg.js.map +0 -1
- package/dist/typography-Cv8MT-82.js +0 -96
- package/dist/typography-Cv8MT-82.js.map +0 -1
- package/dist/ui-provider-CftIB6TY.js.map +0 -1
- package/dist/upload-D8Za5x_c.js.map +0 -1
- package/dist/upload-queue-hIIYBLS7.js.map +0 -1
- package/dist/usage-card-DnmnJ58D.js.map +0 -1
- package/dist/utils-C2EKeIw3.js +0 -72
- package/dist/utils-C2EKeIw3.js.map +0 -1
- package/dist/value-inputs-DX2dbxjj.js +0 -824
- package/dist/value-inputs-DX2dbxjj.js.map +0 -1
- package/dist/workspace-C1PZmk8L.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,422 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2.0.0 — 2026-10-16
|
|
4
|
+
|
|
5
|
+
A major release. Untouched defaults now give a screen one deliberate primary
|
|
6
|
+
command, neutral surfaces where colour only states status, and the overlay
|
|
7
|
+
family for every dialog-like surface. Public exports and props are retained (the
|
|
8
|
+
contract check keeps every public symbol); what changes is defaults, appearance,
|
|
9
|
+
a few DOM hooks and some semantics.
|
|
10
|
+
|
|
11
|
+
### Upgrading from 1.x
|
|
12
|
+
|
|
13
|
+
- **Buttons.** An untoned `Button` is the neutral outline. Give each screen's
|
|
14
|
+
main command `tone="primary"`, run
|
|
15
|
+
`docs/consumer-skill/scripts/pin-button-defaults.mjs` (dry run by default,
|
|
16
|
+
`--write` to apply) to keep existing screens' look, or restore the old default
|
|
17
|
+
app-wide with `UIProvider` `button: { defaultTone: 'primary',
|
|
18
|
+
defaultButtonStyle: 'solid' }`.
|
|
19
|
+
- **Brand colour.** The default primary is near-black. Import
|
|
20
|
+
`themelia-react-ui/themes/green.css` after `style.css` to keep the green brand.
|
|
21
|
+
- **Badges.** An untoned `Badge` is neutral; `UIProvider`
|
|
22
|
+
`badge.defaultTone: 'primary'` restores the old default.
|
|
23
|
+
- **Page titles** are the route's `h1` at 20px; pass `headingTag="h2"` for a page
|
|
24
|
+
nested inside another titled page.
|
|
25
|
+
- **Overlays.** Replace the deprecated base `Sheet` exports with `ActionDrawer`
|
|
26
|
+
from `features/overlays`. `ConfirmDialog` shows its tone icon only with
|
|
27
|
+
`showIcon`. Scrims no longer blur, and dialog regions draw no header or footer
|
|
28
|
+
rules.
|
|
29
|
+
- **Formatted text.** Negative numbers print with a true minus (U+2212) instead
|
|
30
|
+
of a hyphen; update tests, snapshots or parsers that match formatted output.
|
|
31
|
+
- **Decorative icons and dividers** are gone from the library's own blocks,
|
|
32
|
+
features and templates. Public `icon`/media props and Card `headerDivider`/
|
|
33
|
+
`footerDivider` remain for products that need them; `adminStarterUIDefaults`
|
|
34
|
+
no longer turns card dividers on.
|
|
35
|
+
- **DOM hooks.** `InventorySectionCard` exposes card hooks instead of
|
|
36
|
+
`content-block--*`, and `seo-listing-card--score-icon` is removed.
|
|
37
|
+
|
|
38
|
+
### Changes
|
|
39
|
+
|
|
40
|
+
- **Breaking (visual): overlays have no blur and no static rules, and they are
|
|
41
|
+
the only dialog API.** The modal scrim is a plain `--overlay-backdrop` tint.
|
|
42
|
+
Dialog, alert-dialog and drawer regions draw no header/footer rules or tinted
|
|
43
|
+
footer: the shell owns a 20px outer inset and 16px between regions, and a
|
|
44
|
+
scrolling body shows a rule only on an edge that hides content. Surfaces use
|
|
45
|
+
one border on `bg-popover`; drawers draw one rule on their open edge. The
|
|
46
|
+
close button is centred on the first title line and comes last in the DOM, so
|
|
47
|
+
opening focuses the first field or action. `ConfirmDialog` matches
|
|
48
|
+
`ActionDialog` widths, supports `surfaceStyle` and shows no tone icon unless
|
|
49
|
+
`showIcon`; emphasis no longer tints the border; a non-modal `ActionDrawer`
|
|
50
|
+
stays open on page presses; `initialFocusRef` accepts nullable React 19 refs;
|
|
51
|
+
a string `trigger` renders a Button. The base `Sheet` exports are deprecated
|
|
52
|
+
in favour of `ActionDrawer`. DataTable's in-place `fullscreen` mode stays the
|
|
53
|
+
one modal surface outside the overlays: the table's own region is maximised,
|
|
54
|
+
so its scroll position, focus and column state survive, and the contract
|
|
55
|
+
check (`modal-owner`) rejects any other hand-built modal or borrowed
|
|
56
|
+
Dialog/Sheet in library source. The consumer skill (house rule 9 and a dialogs
|
|
57
|
+
section) and the checker (`raw-overlay-primitive` for `role="dialog"`,
|
|
58
|
+
`aria-modal`, `fixed inset-0` layers and modal libraries; `deprecated-owner`
|
|
59
|
+
from the public index) enforce the overlay owners. Nothing in the library uses
|
|
60
|
+
`backdrop-filter` any more: sticky table headers and toolbars, the form
|
|
61
|
+
actions bar, carousel controls and upload overlays are opaque.
|
|
62
|
+
- **Inline values follow running text.** Inside `Text`, `Heading`, `Label`,
|
|
63
|
+
`TextLink`, `ItemTitle`/`ItemDescription` and `CardDescription`, value
|
|
64
|
+
primitives (`Value`, `MonoValue`, `Money`, `Number`, `Percent`, `Duration`,
|
|
65
|
+
`FileSize`, `Dimensions`, dates, links) take the sentence's size, colour,
|
|
66
|
+
weight and leading unless a prop says otherwise; standalone use is unchanged.
|
|
67
|
+
`Initials` inherits by default. Text `type`/`weight`/`lineHeight` accept
|
|
68
|
+
`'inherit'`. Empty values share the `EmptyValue` treatment.
|
|
69
|
+
- Negative numbers print with a true minus (U+2212) in every formatter and
|
|
70
|
+
number primitive (`formatWithMinusSign` in `lib/format`).
|
|
71
|
+
- Form controls share one geometry and state contract: every field and
|
|
72
|
+
field-shaped trigger is the same height, radius, `--input` border, text size
|
|
73
|
+
(16px on touch) and 2px focus ring; a keyboard-focused invalid field shows a
|
|
74
|
+
full-strength destructive ring; select-like chevrons share
|
|
75
|
+
`selectToggleRecipes` (16px glyph centred where the Select draws it);
|
|
76
|
+
Textarea's first line aligns with an Input's text; field triggers no longer
|
|
77
|
+
take a button hover fill; disabled inputs lose the read-only fill. Checkbox
|
|
78
|
+
shows a dash when indeterminate; choice cards mark selection with the border
|
|
79
|
+
only; pill radios get roving arrow-key focus; DecimalInput steps with arrow
|
|
80
|
+
keys and keeps uncontrolled values; DatePicker gains `id`/`invalid` and no
|
|
81
|
+
longer reddens its label; DateTimeInput passes `stepMinutes` correctly;
|
|
82
|
+
Cascader gets an inline clear; Combobox Escape on a closed field keeps the
|
|
83
|
+
value and reaches the surrounding overlay. A Combobox reserves its whole
|
|
84
|
+
toggle (and clear) target plus the copy gap, so a long value never runs under
|
|
85
|
+
a target at any density. A one-line text button is exactly its action height
|
|
86
|
+
at every spacing and density (its block inset is capped); wrapped labels
|
|
87
|
+
still grow the button.
|
|
88
|
+
- Display and navigation: Badge follows its parent's alignment (no
|
|
89
|
+
`self-center`); flat/`padding="none"` Cards use the 16px header-to-body gap;
|
|
90
|
+
the default outline button border is visible in dark; `TextButton` md is
|
|
91
|
+
`text-sm`; ButtonGroup seams and corners are fixed; untoned ActionButtons are
|
|
92
|
+
neutral; menu group captions use the xs secondary role; OverflowTabBar gets
|
|
93
|
+
arrow/Home/End keys and the shared 36px recipe; active tabs read above the
|
|
94
|
+
track in dark; pagination links are 36px squares; accordion focus is inset
|
|
95
|
+
with no open tint; toaster status icons reach 5:1; code diffs use tints;
|
|
96
|
+
StackedAvatars fallbacks are neutral; tables render rules without preflight
|
|
97
|
+
and are a tab stop only while they overflow. `PageHeading` `withSeparator`
|
|
98
|
+
defaults to `false`.
|
|
99
|
+
- Typography: Heading `tracking-tight` from xl and `leading-tight` from 2xl;
|
|
100
|
+
link focus rings hug the text and follow wrapped lines; text, headings and
|
|
101
|
+
money align with logical start/end so they mirror in RTL.
|
|
102
|
+
- Scoped density: arbitrary values no longer read derived `--spacing-*` aliases
|
|
103
|
+
(resolved once on `:root`), so tracks, insets and offsets follow a
|
|
104
|
+
`data-density` scope.
|
|
105
|
+
|
|
106
|
+
- **Breaking (visual): visual restraint pass.** Icons now carry information
|
|
107
|
+
or are omitted, colour only states status, and spacing, not rules, separates
|
|
108
|
+
sections. Public `icon`/media props remain for consumers; the library's own
|
|
109
|
+
compositions stop passing decorative ones.
|
|
110
|
+
- Rows: a plain `Item` (default variant, no inline padding) in an `ItemGroup`
|
|
111
|
+
sits flush with the group's top and bottom edges, plain rows touch so their
|
|
112
|
+
density padding is the row spacing, and the default variant drops its
|
|
113
|
+
transparent 1px border so row text aligns with headings and labels above
|
|
114
|
+
it. Boxed `outline`/`muted` rows keep their gap. This fixes uneven space
|
|
115
|
+
around dividers and at card bottoms (8px above a rule against 17px below
|
|
116
|
+
it, 30px at a card's bottom against 20px at its top on the order page).
|
|
117
|
+
- Blocks and features no longer hard-code decorative icons on card titles
|
|
118
|
+
(address, payment method, order/refund status, tax breakdown, subscription,
|
|
119
|
+
voucher, coupon, cart, inventory, SEO listing, every product section, sensitive
|
|
120
|
+
actions, AI confirmation/tool call/package info/citation), on metadata and
|
|
121
|
+
list rows, inside inputs and badges, or on ordinary text buttons. Kept:
|
|
122
|
+
icon-only buttons, menu and navigation icons, affordances, search glyphs,
|
|
123
|
+
`+` on add commands, state glyphs, event-type markers and real media.
|
|
124
|
+
- Colour states status: kinds, categories and counts are neutral; live and
|
|
125
|
+
in-progress states use `info` instead of the near-black primary;
|
|
126
|
+
`LoyaltyPoints` `tierTone` defaults to `neutral` (was `warning`); activity
|
|
127
|
+
events without a status tone are neutral; product rows render
|
|
128
|
+
`tone="primary"` neutral; micro-grid single-series charts use `--chart-1`.
|
|
129
|
+
- No boxes inside cards and no section rules: tinted or bordered inset panels,
|
|
130
|
+
stat tiles and per-section dividers are gone across commerce, data-display,
|
|
131
|
+
AI, admin, product, activity, resource-assignment, schema-form, sync and
|
|
132
|
+
media-library compositions. One rule stays above financial grand totals.
|
|
133
|
+
Status chips sit beside their title (`titleSuffix`).
|
|
134
|
+
- Amounts and dates use the UI font with tabular figures; monospace stays for
|
|
135
|
+
identifiers and codes.
|
|
136
|
+
- Sentence-case default strings across commerce, admin, AI and dense-info
|
|
137
|
+
blocks (for example `Refund status`, `Tax breakdown`, `Redeem points`,
|
|
138
|
+
`View details`, `Edit role`, `Next step`). `DenseInfoStrings` gains an
|
|
139
|
+
optional `priority`.
|
|
140
|
+
- `ActivityLog` shows a category chip only when an entry passes `label` (it no
|
|
141
|
+
longer falls back to the raw `kind`), and date groups read `Yesterday` and
|
|
142
|
+
`October 14, 2026` instead of uppercase eyebrows with ordinals.
|
|
143
|
+
- `DateCell` and `DateMetaCell` `showIcon` default to `false`;
|
|
144
|
+
`GlobalSearchIdleState` headings have no default icons; `PageHeader` has no
|
|
145
|
+
separator after the back button; `AppSidebar` groups are separated by space
|
|
146
|
+
instead of rules; navigation count badges stay neutral when active.
|
|
147
|
+
- `OrderStatus` drops the facts that repeated its badge and timeline;
|
|
148
|
+
`LoyaltyPoints` shows Redeem only with `onRedeem`; vouchers show a balance
|
|
149
|
+
only when one is given; `InventorySectionCard` renders through `Card`, so its
|
|
150
|
+
`content-block--*` hooks become card hooks, and `seo-listing-card--score-icon`
|
|
151
|
+
is removed.
|
|
152
|
+
- Base fixes: `ActionMenu`'s icon-only trigger follows `buttonProps.size`;
|
|
153
|
+
Card `contentTop`/`contentBottom` share the content gap (`lg`, or
|
|
154
|
+
`contentGap`) instead of touching the body.
|
|
155
|
+
- Templates: `adminStarterUIDefaults` no longer turns on card header/footer
|
|
156
|
+
dividers; facts, line items, KPIs and commands lose decorative icons;
|
|
157
|
+
count/kind badges, repeated identity rows and repeated facts are removed.
|
|
158
|
+
- Guidance: house rule 7 and the Card anatomy reference cover decorative
|
|
159
|
+
icons and dividers; the composition checker warns (`decorative-icon`) on a
|
|
160
|
+
Card title icon or an icon on more than one MetadataList fact; AGENTS.md
|
|
161
|
+
records the visual restraint rules.
|
|
162
|
+
|
|
163
|
+
- **Breaking (visual): an untoned Button is now the neutral outline**
|
|
164
|
+
(`tone="secondary"`, `buttonStyle="outline"`), so a screen gets one deliberate
|
|
165
|
+
primary instead of a primary on every button. Give the main command
|
|
166
|
+
`tone="primary"`. A Button with a `tone` and no `buttonStyle` is now always
|
|
167
|
+
solid: `UIProvider` `button.defaultButtonStyle` applies only to buttons without
|
|
168
|
+
a tone. Run `docs/consumer-skill/scripts/pin-button-defaults.mjs` (dry run by
|
|
169
|
+
default, `--write` to apply, `--solid-only` to let untoned outline and ghost
|
|
170
|
+
buttons turn neutral) to keep existing screens' look, or restore the previous
|
|
171
|
+
default app-wide with `button: { defaultTone: 'primary', defaultButtonStyle:
|
|
172
|
+
'solid' }`. The library's own components keep their primary commands
|
|
173
|
+
explicitly; their untoned outline and ghost buttons (cascader, signature pad,
|
|
174
|
+
questionnaire navigation) are now neutral instead of brand-colored, and
|
|
175
|
+
`SubmitStateButton` keeps the primary role for submit.
|
|
176
|
+
- Add a 32px `3xl` structural gap step (`gap-space-3xl`, `gap-x-space-3xl`,
|
|
177
|
+
`gap-y-space-3xl`; `--spacing-space-3xl` scales with `--space-scale`) for page
|
|
178
|
+
rhythm. Page now separates its header from its body with `3xl` (was 24px), and
|
|
179
|
+
Stack/Grid/Section accept `gap="3xl"` between major sections. The utility
|
|
180
|
+
budget grows from 393 to 396 spellings for this one shared responsibility.
|
|
181
|
+
- **Breaking (visual): the default primary is neutral.** `--primary` is
|
|
182
|
+
near-black in light (`oklch(0.205 0 0)`) and near-white in dark, so the brand
|
|
183
|
+
no longer sits next to the success green (they were ΔE_OK 0.074 apart). The
|
|
184
|
+
previous green is the opt-in brand theme `themelia-react-ui/themes/green.css`:
|
|
185
|
+
import it after `style.css` to keep the old look. It sets primary, its
|
|
186
|
+
foreground, the dark primary accent and the first chart series, and passes
|
|
187
|
+
the same contrast contract. `--primary-accent` now follows `--primary` in
|
|
188
|
+
dark too.
|
|
189
|
+
- Form-control boundaries reach 3:1 contrast (WCAG 1.4.11): `--input` is
|
|
190
|
+
`oklch(0.62 0 0)` in light (was the divider color, 1.26:1) and white at 40% in
|
|
191
|
+
dark (was 15%), so inputs, selects, checkboxes, radios and switch tracks are
|
|
192
|
+
visible on every surface. `--border` stays the lighter divider color. The
|
|
193
|
+
contrast contract now checks `--input` at 3:1 on background, card, popover,
|
|
194
|
+
muted, accent and secondary surfaces. The repeater's empty placeholder uses
|
|
195
|
+
the divider border.
|
|
196
|
+
- Button labels wrap inside the available width instead of overflowing: the
|
|
197
|
+
action height is now a minimum for text buttons (icon-only buttons stay fixed
|
|
198
|
+
squares), and buttons cap at their container's width. Pass `truncate` to keep
|
|
199
|
+
one line with an ellipsis where a button cannot grow, such as a joined group
|
|
200
|
+
or dense toolbar. Components that size a button themselves (`h-auto`,
|
|
201
|
+
`h-full`) now also reset the minimum height, and the header search trigger
|
|
202
|
+
uses `size="sm"` instead of a height override.
|
|
203
|
+
- Add role-based page commands to PageHeader and `Page header`:
|
|
204
|
+
`primaryAction` (one solid primary command, trailing and always visible) and
|
|
205
|
+
ordered `secondaryActions` (two outline buttons, then a More actions menu).
|
|
206
|
+
Destructive secondary commands always move into that menu; below `sm` every
|
|
207
|
+
secondary command collapses into it through CSS. Commands carry no tone or
|
|
208
|
+
button style. `moreActionsLabel` names the menu; the new `PageHeaderAction`
|
|
209
|
+
type is exported from `layout/page` and `layout`. Existing `actions` and
|
|
210
|
+
`slots.actions` are unchanged: `actions` renders before the commands, and
|
|
211
|
+
`slots.actions` still replaces the whole region.
|
|
212
|
+
- Move the admin templates, consumer recipes and Page catalogue examples to the
|
|
213
|
+
role-based commands. Header buttons now share one size, and the stacked shell
|
|
214
|
+
recipe no longer repeats the page's Create record command in its navigation.
|
|
215
|
+
- The optional consumer checker warns (`page-command-roles`) when Page or
|
|
216
|
+
PageHeader `actions` hold command buttons, pointing to `primaryAction` and
|
|
217
|
+
`secondaryActions`. The analytics template's period filter is now a labelled
|
|
218
|
+
Select instead of a toggle button.
|
|
219
|
+
- Nested `UIProvider`s no longer throw. A nested provider inherits the nearest
|
|
220
|
+
provider's resolved defaults and overrides only the keys it sets, so
|
|
221
|
+
`AdminUIThemeProvider` works inside an application's root provider.
|
|
222
|
+
- Metric surfaces format currency, numbers and percentages with the same
|
|
223
|
+
formatter and UIProvider policy as `Money` (locale, default currency and
|
|
224
|
+
`formatMode`). A currency metric without a currency now uses the provider
|
|
225
|
+
default (`USD` by default) instead of EUR, and prints like Money
|
|
226
|
+
(`1,840.00 USD` by default) instead of `USD 1,840.00`. `formatMetricValue`
|
|
227
|
+
accepts optional `FormatMetricValueOptions`.
|
|
228
|
+
- Add `useMoneyFormatter()` to `primitives` for money in strings (labels,
|
|
229
|
+
toasts, activity text) with the Money rules; the templates use it instead of
|
|
230
|
+
hand-built `$x.xx USD` strings, and their tables use the Date primitive.
|
|
231
|
+
- `toTableAction` keeps running actions disabled and hidden actions hidden in
|
|
232
|
+
DataTable rows; `toMenuAction` carries `id`, `visible` and `group`.
|
|
233
|
+
- Themes declare `color-scheme`, so native scrollbars and form controls follow
|
|
234
|
+
dark mode. Light `--primary-accent` now follows `--primary`, so a rebrand
|
|
235
|
+
needs one root.
|
|
236
|
+
- Unit tests resolve the package's own imports from source, so `npm test` no
|
|
237
|
+
longer needs (or silently uses) a previous build.
|
|
238
|
+
- Page titles are the route's `h1` by default (was `h3`) and use the 20px
|
|
239
|
+
`text-xl` role (was 18px), so page and card titles (16px) read as distinct
|
|
240
|
+
levels. Pass `headingTag="h2"` for a page nested inside another titled page.
|
|
241
|
+
- Card and MediaLibrary plain-text titles are exposed as level-2 headings, so
|
|
242
|
+
assistive technology can move between surfaces. Title-suffix badges stay out
|
|
243
|
+
of the heading's name; custom title nodes keep their own semantics.
|
|
244
|
+
- An untoned Badge is now neutral (was primary), so only a deliberate tone
|
|
245
|
+
signals state. Set `UIProvider` `badge.defaultTone: 'primary'` to keep the
|
|
246
|
+
previous look. The Default address and payment-method badges are neutral too.
|
|
247
|
+
- `useMoneyFormatter(defaults)` binds screen defaults such as `currency` once;
|
|
248
|
+
each call can still override them. `MoneyFormatterOptions` is exported.
|
|
249
|
+
- The consumer skill opens with eight house rules (provider, Page, command
|
|
250
|
+
roles, Stack/Grid, typography and value primitives, semantic color, neutral
|
|
251
|
+
badges, Card slots). The checker adds review warnings for raw palette color
|
|
252
|
+
classes, native `<button>` and `<h1>`–`<h6>` elements, and pages with more
|
|
253
|
+
than one solid primary command. The orders and staff templates now have one
|
|
254
|
+
primary command each.
|
|
255
|
+
- The consumer skill's public index lists each family's deprecated names with
|
|
256
|
+
their replacements (`SmartCard`: "Use Card.", `SmartCardProps`: "Use
|
|
257
|
+
CardProps."), derived from `@deprecated` JSDoc. The finder leaves them out of
|
|
258
|
+
task recommendations and flags them when a query names one.
|
|
259
|
+
- Event calendar markers in narrow day cells keep the compact action height
|
|
260
|
+
(28px), so they meet the WCAG 2.2 24px target size instead of a 12px sliver.
|
|
261
|
+
- Regenerate `package-lock.json`: it pinned lightningcss 1.32.0 where the
|
|
262
|
+
package and Vite require `^1.33.0`, so `npm ci`, and with it CI, failed
|
|
263
|
+
before running any check.
|
|
264
|
+
|
|
265
|
+
## 1.0.3 — 2026-10-15
|
|
266
|
+
|
|
267
|
+
- Document layout-block ownership, horizontal Stack rows, responsive tracks and
|
|
268
|
+
parent adaptation; ship a typed region-composition recipe and route common
|
|
269
|
+
layout queries to the corresponding owners and focused guidance.
|
|
270
|
+
|
|
271
|
+
- Align template peer Card stacks with Page/TwoColumnLayout’s existing `2xl`
|
|
272
|
+
rhythm: 24px in both axes at default scale, including stacked mobile regions.
|
|
273
|
+
|
|
274
|
+
- Let AddressCard, PaymentMethod, SeoListingCard and ProductVariantsManager own
|
|
275
|
+
their framed Card anatomy through existing surface/padding/divider props.
|
|
276
|
+
Preserve unframed defaults and suppress inherited embedded header rules;
|
|
277
|
+
replace redundant template wrappers with one full-width Card boundary.
|
|
278
|
+
- Audit the admin templates: isolate overlay drafts, preserve staff save/discard
|
|
279
|
+
baselines, close mobile navigation, honor shell presets/density and repair
|
|
280
|
+
variant duplication/options persistence. Include templates in design lint and
|
|
281
|
+
installed-package typechecks; correct their documented scope and discovery.
|
|
282
|
+
- Keep long MetadataList row labels from squeezing monetary values out of narrow
|
|
283
|
+
panels, and use the semantic copy-gap recipe for label/value rhythm.
|
|
284
|
+
|
|
285
|
+
- Increase the shared surface-x/y defaults to 1.25rem: ordinary Card insets are
|
|
286
|
+
20px, compact surfaces 10px and large surfaces/page gutters 36px at default
|
|
287
|
+
scale. Preserve independent row padding, control heights, copy gaps and radii.
|
|
288
|
+
- Keep UsageCard period tabs on the shared scrollable track in narrow cards,
|
|
289
|
+
preventing wrapped labels from escaping the header into usage figures.
|
|
290
|
+
|
|
291
|
+
## 1.0.2 — 2026-10-15
|
|
292
|
+
|
|
293
|
+
- Raise the default outer radius from 8px to 12px. Inputs, buttons, select/facet
|
|
294
|
+
triggers, collection highlights and navigation rows share a bounded 0.75× inner
|
|
295
|
+
role (normally 9px), derived from the same public root. The height/density bound
|
|
296
|
+
prevents short controls becoming capsules under large radius overrides.
|
|
297
|
+
- Enforce outer/inner ownership in repository and optional consumer checks;
|
|
298
|
+
verify painted corners, focus/selection, scoped portals and independent action/
|
|
299
|
+
field heights on desktop/mobile in both themes and densities. Preserve bounded
|
|
300
|
+
image-removal buttons and inner media-list focus targets while Card hit areas
|
|
301
|
+
retain outer corners.
|
|
302
|
+
- Explain the radius roles throughout consumer/maintainer skills and catalogue
|
|
303
|
+
guides. Route border-radius, page-padding and Card-anatomy searches to their
|
|
304
|
+
actual owners, declarations and focused composition references.
|
|
305
|
+
|
|
306
|
+
- Repair post-remediation findings at shared owners: independent media sizing,
|
|
307
|
+
complete directional spacing CSS/merge vocabulary, sRGB default colors,
|
|
308
|
+
dark sunken/sidebar roles, host-colored outline buttons and active feedback.
|
|
309
|
+
- Restore KPI and page-title hierarchy, square heatmap cells and grouped legend,
|
|
310
|
+
gift-card balances and strip layering. Align table/code/message/image insets
|
|
311
|
+
with their actual spacing roles and preserve standalone shell/Card fonts.
|
|
312
|
+
- Make calendar events compact and readable, retain mobile Today, portal tag
|
|
313
|
+
suggestions, and share compact inline actions across filters, products and
|
|
314
|
+
comments. Date pickers now inherit provider scale and accept an explicit size.
|
|
315
|
+
- Add typed Card region padding, remove caller inset overrides, improve real
|
|
316
|
+
flagship analytics examples, and strengthen discovery/consumer composition
|
|
317
|
+
checks with exact imports and practical skill examples.
|
|
318
|
+
- Close .ts recipe, Card-slot and SVG-embedded HTML lint gaps. Add focused
|
|
319
|
+
desktop/mobile light/dark checks and a finding-by-finding verification ledger.
|
|
320
|
+
- Pair Tooltip shell/arrow with inverse text in both themes. Wrap rich search
|
|
321
|
+
metadata without clipping currency or duplicating the wide value column.
|
|
322
|
+
- Consolidate corners under the single public shadcn radius root. Anchored
|
|
323
|
+
borders use the shared semantic boundary.
|
|
324
|
+
|
|
325
|
+
- Align ordinary controls and menu/command highlights through their shared
|
|
326
|
+
inner role. Keep compound fields and segmented toolbars within one sized
|
|
327
|
+
border; preserve provider sizing through filters, search and calendar controls.
|
|
328
|
+
- Tighten shared title/description defaults to normal 4px and dense 2px. Remove
|
|
329
|
+
typography margins and redundant Card region spacing without adding tokens.
|
|
330
|
+
- Make native inputs, navigation, color pickers, provider links and framed icons
|
|
331
|
+
own their box sizing independently of consumer resets. Keep search height and
|
|
332
|
+
keyboard focus stable when clearing; preserve inline collapsed activity metadata.
|
|
333
|
+
- Reject semantic-but-wrong radius/height overrides and copy margins. Route
|
|
334
|
+
consumer geometry discovery to focused references, and verify installed
|
|
335
|
+
package geometry across provider sizes, independent scales and both themes.
|
|
336
|
+
|
|
337
|
+
- Retire the final 87 spacing/control debt expressions through shared row,
|
|
338
|
+
surface, control and navigation owners; reject restored lint allowances.
|
|
339
|
+
Preserve fixed chart/illustration geometry with native SVG drawings.
|
|
340
|
+
- Align message continuations to actual media tracks, preserving rich avatar
|
|
341
|
+
slots, empty states, RTL and focus. Keep compact navigation text readable,
|
|
342
|
+
selected Item titles theme-aware, and documentation guides logically indented.
|
|
343
|
+
- Keep avatar removal reachable outside image clipping, preserve disabled
|
|
344
|
+
Sidebar targets through tooltips, retain heatmap civil dates across timezones,
|
|
345
|
+
and announce localized comment attachment rejection with safe reset/retry.
|
|
346
|
+
- Adapt auth split columns and panel visibility to the shell's own width;
|
|
347
|
+
keep feature copy shrinkable in narrow parents and scoped themes.
|
|
348
|
+
|
|
349
|
+
- Repair multiline/BEM class merging and derive property-aware merge namespaces
|
|
350
|
+
from actual CSS aliases. Verify utility emission alongside generated freshness.
|
|
351
|
+
- Close internal-import, static-template, passive-anatomy and omitted/default-gap
|
|
352
|
+
lint/checker gaps; improve component discovery without inventing unsupported APIs.
|
|
353
|
+
- Restore Button solid/tonal states, unreset field/list/font ownership, and
|
|
354
|
+
combined trailing-action geometry. Add concurrency and state-combination regressions.
|
|
355
|
+
- Add an optional Heading visual scale without changing semantic/default sizing;
|
|
356
|
+
restore prominent KPI values and native Metric navigation/actions.
|
|
357
|
+
- Consolidate table scroll/focus ownership, prioritize calendar titles by available
|
|
358
|
+
parent width, and review status foreground/elevation roles in both themes.
|
|
359
|
+
- Wire grouped/individual table resizing with real pointer/keyboard sizing,
|
|
360
|
+
inherited RTL direction and nonoverlapping sticky header rows. Strengthen
|
|
361
|
+
semantic focus contrast, including native field clear/reveal actions.
|
|
362
|
+
- Follow Slider's actual native input focus and attach the calendar day-button
|
|
363
|
+
ref, preserving arrow-key focus and visible indicators inside date pickers.
|
|
364
|
+
- Measure both field addon tracks naturally under independent scales; preserve
|
|
365
|
+
caller padding overrides without adding public theme variables.
|
|
366
|
+
- Add a finding-led drift guide with concrete reproductions, shared-owner
|
|
367
|
+
repairs, image review and executed behavior checks.
|
|
368
|
+
|
|
369
|
+
- Page owns larger `lg` inline/block insets, with `padding` and a centered
|
|
370
|
+
`narrow` resource-page mode; explicit width and gutter choices remain supported.
|
|
371
|
+
StackedLayout's contained measure owns the same large inline inset once.
|
|
372
|
+
- Page and workspace record headers default to dense supporting-copy rhythm.
|
|
373
|
+
Standard back controls remain beside the title while wrapped page commands
|
|
374
|
+
retain the full header width. Workspace content/header/footer share token insets.
|
|
375
|
+
Workspace regions adapt to parent width; narrow workspaces scroll long headers
|
|
376
|
+
with their body, while wide regions retain independent main scrolling.
|
|
377
|
+
- Add UIProvider card footer-divider defaults and the matching theme-editor
|
|
378
|
+
setting, preserving explicit overrides and one empty-body boundary. Ordinary
|
|
379
|
+
Card padding remains md.
|
|
380
|
+
- AppSidebar adds pinned headerStart/headerEnd slots, uses a separated footer,
|
|
381
|
+
and inherits compact navigation spacing from LayoutSidebarProvider by default.
|
|
382
|
+
- Enrich shell/account/workspace discovery, ship a complete shell recipe with
|
|
383
|
+
provider defaults, and add contextual compact-card/page-gutter review warnings.
|
|
384
|
+
Consumer guidance explicitly distinguishes Page padding from PageViewport scrolling.
|
|
385
|
+
- Card headers wrap by available content space rather than a named-container
|
|
386
|
+
breakpoint. App shell variants retain their width inside the sidebar provider;
|
|
387
|
+
UsageCard period headers no longer retain a vertical flex basis after wrapping.
|
|
388
|
+
- Preserve MetadataList primary value size in compact density. Separate framed
|
|
389
|
+
Card peers in provider/metadata examples and verify visible ring clearance.
|
|
390
|
+
Document card surface policy, header icon/placement and metadata hierarchy.
|
|
391
|
+
- Route KPI, revenue, statistics and quota discovery to the supported analytics
|
|
392
|
+
owners. Finder results link relevant symbols, focused references and recipe
|
|
393
|
+
exports; ship analytics and centered-resource recipes with installed checks.
|
|
394
|
+
- MonthYearPicker uses public Select menus for both nested selectors. Repair
|
|
395
|
+
confidence-dial centering, narrow table feedback, centered EmptyState copy,
|
|
396
|
+
floating email dismissal and responsive custom calendar event rendering.
|
|
397
|
+
- MediaLibrary adds titleSuffix and an optional onItemReplace request callback
|
|
398
|
+
for the inspected asset; unsupported replacement actions remain hidden.
|
|
399
|
+
- Pending overlay confirmations disable generated actions/dismissal and retain
|
|
400
|
+
modal keyboard focus; rejection restores retry. FormField no longer duplicates
|
|
401
|
+
a nested control's id onto a passive wrapper. Coupon/voucher previews exercise
|
|
402
|
+
validation, accepted results and removal through public callbacks.
|
|
403
|
+
- Dialog, confirmation and sheet title/description wrappers reset native margins,
|
|
404
|
+
keeping shared copy gaps correct without a consuming app's global preflight.
|
|
405
|
+
- Input and Textarea preserve loading when disabled is explicitly false, prevent
|
|
406
|
+
read-only clear actions, and clear registered/native values as well as form data.
|
|
407
|
+
- HeaderSearch truncates long placeholders within narrow parents; responsive
|
|
408
|
+
HeaderUserMenu triggers retain the signed-in user's full accessible name.
|
|
409
|
+
TaskCard retains its disclosure control beside wrapping header content.
|
|
410
|
+
- Add public-website discovery and a typed Container/Section service-page recipe,
|
|
411
|
+
preserving freedom to compose content without application chrome or KPI anatomy.
|
|
412
|
+
- InventorySection delegates responsive header wrapping to Card, preventing a
|
|
413
|
+
vertical flex basis from creating a large blank header on narrow screens.
|
|
414
|
+
- Analytics drawing follows live reduced-motion preferences with stable server
|
|
415
|
+
markup. Metric loading uses the shared Skeleton owner, and micro progress
|
|
416
|
+
disables its width transition when reduced motion is requested.
|
|
417
|
+
- Item owns border-box sizing, keeping padded Attachment rows inside Message
|
|
418
|
+
content even when an application has no global CSS reset.
|
|
419
|
+
|
|
3
420
|
## 1.0.1 — 2026-10-12
|
|
4
421
|
|
|
5
422
|
- Consumer guidance now assigns task, scope, information priority and command
|
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
A publishable React UI package built on Base UI and Tailwind, with shadcn-compatible themes and Themelia's public APIs. Routing, persistence, permissions and translations remain consumer-owned.
|
|
4
4
|
|
|
5
|
-
Package: **`themelia-react-ui`** · current version: **`
|
|
5
|
+
Package: **`themelia-react-ui`** · current version: **`2.0.0`** · MIT licensed.
|
|
6
6
|
The GitHub repository is `themelia-react-ui`; npm imports use `themelia-react-ui`.
|
|
7
7
|
|
|
8
8
|
Consuming apps start with [consumer setup](#consumer-setup) and the packaged
|
|
@@ -15,7 +15,7 @@ Commerce blocks include `Receipt` and `ReceiptItems` from `themelia-react-ui/blo
|
|
|
15
15
|
|
|
16
16
|
## Development
|
|
17
17
|
|
|
18
|
-
For repository development and verification, use Node 24.12+ within the Node 24 line, or Node 26, and npm.
|
|
18
|
+
For repository development and verification, use Node 24.12+ within the Node 24 line, or Node 26, and npm. 24.12.0 is the minimum; local checks ran on 26.3.1. The package consumer engine contract remains `>=22.12.0`, separate from the verification toolchain:
|
|
19
19
|
|
|
20
20
|
```sh
|
|
21
21
|
npm ci
|
|
@@ -31,6 +31,10 @@ The Vite React playground has foundations, a complete searchable catalogue, and
|
|
|
31
31
|
|
|
32
32
|
`check` runs source/documentation checks, lint/design/types/unit checks, one library build, built declaration/skill and source-map checks, the installed package harness, then one preview build, in order. `check:all` adds the curated browser regression suite against that fresh static output, with zero retries. `test:browser` rebuilds the preview and runs those regressions independently. Exactly `deep-visual-audit.spec.ts` and `deep-audit-slices.spec.ts` are evidence collectors: `collect:browser` runs them separately, and their successful collection does not establish visual acceptance. Regression screenshots use per-test Playwright output paths. Set `THEMELIA_EVIDENCE_OUTPUT` to an explicit durable directory only when preserving a review; collectors also accept `AUDIT_OUTPUT`.
|
|
33
33
|
|
|
34
|
+
For quality reviews, reproduce each finding, repair its shared owner, inspect the
|
|
35
|
+
rendered result and execute the relevant behavior. Record those results in a
|
|
36
|
+
finding ledger using the [drift review guide](docs/maintainer-skills/themelia-cn-quality/drift-audit.md).
|
|
37
|
+
|
|
34
38
|
Documentation refreshes are explicit: `docs:sync-preview` owns catalogue public symbols and authored literal selection guidance, `docs:sync-props` owns local prop names/types/required flags and branch constraints, and `docs:sync-skill` owns consumer references. Checks never refresh them. Existing props prose and defaults remain reviewed metadata; native fields and undisplayed historical nonpublic records remain imported evidence. Catalog digest fields retain their historical imported scope and are not freshness checks.
|
|
35
39
|
|
|
36
40
|
Browser verification requires Playwright Chromium. An existing executable can be supplied through `PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH`.
|
|
@@ -60,7 +64,7 @@ export function Example() {
|
|
|
60
64
|
<Card title="Account">
|
|
61
65
|
<Stack gap="lg">
|
|
62
66
|
<Input aria-label="Name" />
|
|
63
|
-
<Button onClick={() => {}}>Save</Button>
|
|
67
|
+
<Button tone="primary" onClick={() => {}}>Save</Button>
|
|
64
68
|
</Stack>
|
|
65
69
|
</Card>
|
|
66
70
|
</ThemeScope>
|
|
@@ -71,6 +75,8 @@ export function Example() {
|
|
|
71
75
|
|
|
72
76
|
`UIProvider` is isolated and mount-once; configuration resolves explicit prop → provider default → fallback. Use direct props for per-instance state. It supports formatting, money, dates, comments, typography, density, items, buttons, badges, cards, toasts and spinners. `ThemeScope` is a CSS inheritance host; portaled menus, tooltips and overlays stay inside the nearest scope. Explicit Base UI portal containers take precedence.
|
|
73
77
|
|
|
78
|
+
The default primary is near-black, so status colors never compete with it. For the Themelia green brand, also import `themelia-react-ui/themes/green.css` after `style.css`. For your own brand, set `--primary` and `--primary-foreground` (light and `.dark`) at the root or a `ThemeScope`; `--primary-accent` follows `--primary`.
|
|
79
|
+
|
|
74
80
|
Compiled `style.css` requires no source scanning and includes no global preflight. Your app supplies its reset. Load library CSS before app overrides. A Tailwind v4 application can additionally import `theme.css` after Tailwind to use the same mappings in its own classes; this editable file contains Tailwind directives and needs processing.
|
|
75
81
|
|
|
76
82
|
React component chunks preserve `"use client"` boundaries for frameworks such as Next App Router. Pure utilities remain server-usable. Navigation uses native links, callbacks and render composition supplied by the consuming app.
|
|
@@ -136,15 +142,15 @@ The common geometry controls are:
|
|
|
136
142
|
:root {
|
|
137
143
|
--space-scale: 1;
|
|
138
144
|
--density-scale: 1;
|
|
139
|
-
--gap-normal: 0.
|
|
140
|
-
--gap-dense: 0.
|
|
145
|
+
--gap-normal: 0.25rem;
|
|
146
|
+
--gap-dense: 0.125rem;
|
|
141
147
|
--height-action: 2.25rem;
|
|
142
148
|
--height-control: 2.25rem;
|
|
143
149
|
--control-x: 0.75rem;
|
|
144
150
|
--row-x: 0.75rem;
|
|
145
151
|
--row-y: 0.5rem;
|
|
146
|
-
--surface-x:
|
|
147
|
-
--surface-y:
|
|
152
|
+
--surface-x: 1.25rem;
|
|
153
|
+
--surface-y: 1.25rem;
|
|
148
154
|
}
|
|
149
155
|
```
|
|
150
156
|
|
|
@@ -153,7 +159,7 @@ The remaining roots cover icons/avatars, shell dimensions, content widths and ad
|
|
|
153
159
|
Each default has one owner. There is no legacy token pipeline, JavaScript style engine, underscore prefix, or button-specific palette. Shared action/control, row, surface and text recipes prevent components from acquiring unrelated spacing or color systems.
|
|
154
160
|
|
|
155
161
|
The additive copy-gap contract replaces scattered title/description gaps with
|
|
156
|
-
`--gap-normal` (
|
|
162
|
+
`--gap-normal` (4px) and `--gap-dense` (2px), scaled once by `--space-scale`.
|
|
157
163
|
Headed surfaces accept `textGap`, and Stack/Grid accept the same semantic gap
|
|
158
164
|
values. Existing spacing tiers and public roots remain available.
|
|
159
165
|
|
|
@@ -175,7 +181,7 @@ previous independent row tint. Existing explicit `indent` values are supported.
|
|
|
175
181
|
- Children override `Text.content`, including zero. Inverse text uses the inverse foreground pair across themes; primary text uses the readable brand accent.
|
|
176
182
|
- Primary button labels use the shared `text-sm` role across control sizes. Secondary buttons use the shadcn secondary surface/foreground pair.
|
|
177
183
|
- Filter presets and saved views retain the `FilterTabs`/`SavedViewTabs` APIs but expose pressed buttons rather than tabs without panels. Arrow/Home/End navigation selects presets; use `aria-pressed` instead of `aria-selected` when querying this control.
|
|
178
|
-
- Framed surfaces use their shared semantic border and outer-ring recipe; the `framed` variant and provider defaults remain available. Card
|
|
184
|
+
- Framed surfaces use their shared semantic border and outer-ring recipe; the `framed` variant and provider defaults remain available. Card headers wrap naturally when their title/copy and actions need more space, including inside differently named containers. Translated titles and suffix badges wrap within the leading region.
|
|
179
185
|
- PopoverMenu matches plain labels/descriptions by default, preserves explicit `searchValue` overrides, and accepts `contentLabel`/`contentLabelledBy` for its popup name. Custom rows receive actual highlight state and own their structured markup.
|
|
180
186
|
- AI copy feedback waits for a successful write. `onCopyError` and optional `strings.copyError` expose denied/unavailable writes; `onCopy` fires after success.
|
|
181
187
|
- Card, badge, overlay and form geometry follows canonical shared recipes instead of obsolete source CSS module defaults. Typography has no incidental margins; structures own layout spacing.
|
|
@@ -199,15 +205,46 @@ Use `titleSuffix` for card status, count and version badges. `headerStart` is fu
|
|
|
199
205
|
|
|
200
206
|
Application drawers use `ActionDrawer` and `useOverlayVisibility` from `themelia-react-ui/features/overlays`. Sheet is the structural foundation and remains available for lower-layer infrastructure and compatibility.
|
|
201
207
|
|
|
208
|
+
Page header commands are role-based: one `primaryAction` and ordered
|
|
209
|
+
`secondaryActions`, with overflow, destructive commands and narrow widths moved
|
|
210
|
+
into a More actions menu. Keep `actions` for non-command controls.
|
|
211
|
+
Page owns inline and block padding, defaulting to the large surface role;
|
|
212
|
+
PageViewport owns scrolling and supplies no inset. Use `Page narrow` for a
|
|
213
|
+
centered single resource; explicit `maxWidth` wins. Page headers use dense copy
|
|
214
|
+
gaps. Ordinary cards retain default `md` padding; configure header/footer rules
|
|
215
|
+
through UIProvider's `card.defaultHeaderDivider` and `card.defaultFooterDivider`.
|
|
216
|
+
AppSidebar offers pinned `slots.headerStart`/`headerEnd` around its workspace
|
|
217
|
+
region, compact navigation and a separated footer. The
|
|
218
|
+
[complete shell recipe](docs/consumer-skill/examples/app-layout.tsx) demonstrates
|
|
219
|
+
public workspace/account controls and application-owned callbacks.
|
|
220
|
+
|
|
221
|
+
Choose one ordinary card surface through `card.defaultSurface`; explicit per-card
|
|
222
|
+
surfaces win. Use Card's `icon` slot for routine header icons and `headerPlacement`
|
|
223
|
+
to choose inside/frame composition independently. Independent framed peers
|
|
224
|
+
usually use `gap="xl"`, since outer rings consume a smaller DOM gap.
|
|
225
|
+
MetadataList retains medium labels and normal primary values in both densities.
|
|
226
|
+
Dashboard KPIs use Metric/MetricGrid/MetricBar; quotas use the focused UsageCard
|
|
227
|
+
owner. See [analytics selection](docs/consumer-skill/references/analytics.md) and
|
|
228
|
+
the [resource page recipe](docs/consumer-skill/examples/detail.tsx).
|
|
229
|
+
|
|
230
|
+
The dated [whole-library review](docs/verification/2026-10-14-whole-library-review.md)
|
|
231
|
+
records repaired owners, rendered/interaction evidence and remaining coverage
|
|
232
|
+
limits separately from package checks.
|
|
233
|
+
|
|
202
234
|
Consumer integration guidance is available in [the package consumer skill](docs/consumer-skill/SKILL.md). The token contract budgets 23 structural roots and 77 package-owned roots; derived utilities are implementation recipes, not additional customization settings.
|
|
203
235
|
|
|
236
|
+
Content-led websites can compose Container, Section, Stack/Grid, shared typography
|
|
237
|
+
and ordinary Card subjects without app chrome. The packaged
|
|
238
|
+
[website recipe](docs/consumer-skill/examples/website.tsx) demonstrates service
|
|
239
|
+
offers and real navigation links using the same theme and inset owners.
|
|
240
|
+
|
|
204
241
|
|
|
205
|
-
Popover content uses `type="display"` for substantive content and `type="menu"` for collections. Mixed searchable menus use flush shells and compact region insets.
|
|
242
|
+
Popover content uses `type="display"` for substantive content and `type="menu"` for collections. Mixed searchable menus use flush shells and compact region insets. `--radius` defaults to 12px. Cards and popup/command shells use `rounded-radius`; controls, collection/navigation rows and nested bodies use the shared, height-bounded `rounded-inner` role (normally 9px). Both derive from the same public root. Consumers inherit these recipes; see the [theme contract](docs/consumer-skill/references/theming.md) for scaling and custom roots. No separate surface/control radius setting is introduced.
|
|
206
243
|
|
|
207
244
|
|
|
208
245
|
## Agent skill and consumer references
|
|
209
246
|
|
|
210
|
-
The npm tarball ships the complete [consumer skill](docs/consumer-skill/SKILL.md), [discovery](docs/consumer-skill/references/discovery.md), [composition](docs/consumer-skill/references/composition.md), [integration](docs/consumer-skill/references/integration.md), [theme extension](docs/consumer-skill/references/theming.md) and [workflow](docs/consumer-skill/references/workflows.md) references. Its generated [public index](docs/consumer-skill/references/public-api.json) records exact imports, symbols, declarations and peer requirements; [the recipe manifest](docs/consumer-skill/examples/manifest.json) identifies all
|
|
247
|
+
The npm tarball ships the complete [consumer skill](docs/consumer-skill/SKILL.md), [discovery](docs/consumer-skill/references/discovery.md), [composition](docs/consumer-skill/references/composition.md), [integration](docs/consumer-skill/references/integration.md), [theme extension](docs/consumer-skill/references/theming.md) and [workflow](docs/consumer-skill/references/workflows.md) references. Its generated [public index](docs/consumer-skill/references/public-api.json) records exact imports, symbols, declarations and peer requirements; [the recipe manifest](docs/consumer-skill/examples/manifest.json) identifies all runnable recipes and their basic/optional phases. It contains no preview source or maintainer audit screenshots.
|
|
211
248
|
|
|
212
249
|
After installing the package, find a family using its real portable script:
|
|
213
250
|
|
|
@@ -219,8 +256,8 @@ Resolve the installed package and compare copied guidance using the [installed s
|
|
|
219
256
|
|
|
220
257
|
Repository work uses the scoped [maintainer](docs/maintainer-skills/themelia-cn-maintainer/SKILL.md), [tokens](docs/maintainer-skills/themelia-cn-tokens/SKILL.md) and [quality](docs/maintainer-skills/themelia-cn-quality/SKILL.md) skills routed by [AGENTS.md](AGENTS.md). These repo-owned guides are excluded from the consumer package and do not replace separately installed skills.
|
|
221
258
|
|
|
222
|
-
There is one packaged consumer skill with
|
|
223
|
-
generated indexes,
|
|
259
|
+
There is one packaged consumer skill with nine focused prose references, two
|
|
260
|
+
generated indexes, fourteen typed recipe files and five helper scripts. Repository
|
|
224
261
|
maintainer skills remain separate. The consumer entrypoint starts from task,
|
|
225
262
|
context, information priority and command ownership and routes typography,
|
|
226
263
|
layouts, theming, state/integration and verification detail to the relevant owner.
|
|
@@ -233,11 +270,15 @@ is a warning and dynamic/external styling needs review. `check:agent` verifies
|
|
|
233
270
|
deterministic guidance infrastructure, not aesthetic judgment or new-task agent
|
|
234
271
|
performance. Keep app-specific policy separate from the versioned package skill.
|
|
235
272
|
|
|
236
|
-
|
|
273
|
+
Finder results include relevant symbols and focused next reads for declarations,
|
|
274
|
+
references and exported recipes. This reduces the need to infer a component's
|
|
275
|
+
purpose from its name or read every document before starting a screen.
|
|
237
276
|
|
|
238
|
-
|
|
277
|
+
Maintainers run `npm run docs:sync-skill` after changes to exports, types, selection guidance, peers or tokens. `npm run check:skill` requires a fresh library build and rejects stale source-backed references, built declaration exports and broken reference links. `prepack` checks source-backed references without rebuilding; `prepublishOnly` builds fresh assets and verifies built guidance. `check:package` verifies the complete shipped skill, strictly compiles the basic recipes without optional peers and every recipe with its required peers, and executes installed shell/resource-page and workflow checks.
|
|
239
278
|
|
|
240
|
-
`npm run
|
|
279
|
+
Build portable consumer documentation with `npm run build` followed by `npm run build:docs`. The generated [static entry](dist-docs/index.html) links to `dist-docs/2.0.0/` for the current version. Each version preserves the complete skill and all declaration files, supports search with the same finder, and uses relative links under any hosting subdirectory. Serve the entire artifact over HTTP; it needs no external CDN. Run `npm run check:static-docs` to check generated asset paths. The future hosting destination remains pending.
|
|
280
|
+
|
|
281
|
+
`npm run check:agent` runs focused agent-consumption fixtures and built skill alignment. `npm run check:release` performs the real serial local build/package/browser/agent/static-documentation gate; it does not publish or deploy. `npm run check:quick` runs the everyday core (contract, lint, design lint, typecheck, unit tests, build). See the [release guide](docs/releasing.md) and [draft changelog](CHANGELOG.md). There is no hosted CI; every check runs locally, when you choose. These commands verify locally; publication and deployment remain separate actions.
|
|
241
282
|
|
|
242
283
|
This package uses the [MIT license](LICENSE). Adapted shadcn/ui scaffolding retains its MIT attribution in [third-party notices](THIRD_PARTY_NOTICES.md). Package repository and issue metadata follow the configured Git remote. Repository-only links above describe checkout tooling; the complete consumer skill is shipped in the npm payload.
|
|
243
284
|
|
|
@@ -281,3 +322,13 @@ These families add no runtime dependencies or public token roots. AppSidebar's
|
|
|
281
322
|
`searchable` option and controlled branch expansion extend the existing sidebar;
|
|
282
323
|
routing and persistence remain consumer-owned. See the catalogue and packaged
|
|
283
324
|
consumer recipes for the exact contracts.
|
|
325
|
+
|
|
326
|
+
Heading keeps semantic `tag` separate from optional visual `size` (`sm`, `base`,
|
|
327
|
+
`lg`, `xl`, `2xl`, `3xl`, `4xl`), using existing typography variables. The admin
|
|
328
|
+
default remains `base`; website examples opt into larger emphasis. Metric card,
|
|
329
|
+
bordered, accent and colored values use that shared scale. A card metric's `href`
|
|
330
|
+
is a native link; `onClick` without `href` is a native action.
|
|
331
|
+
|
|
332
|
+
Base Table exposes `containerProps` for the single scroll/focus wrapper;
|
|
333
|
+
`className` and other native table attributes still apply to the table itself.
|
|
334
|
+
DataTable uses that same wrapper for its localized scroll-region name.
|