themelia-react-ui 1.0.2 → 2.0.1
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 +632 -1
- package/README.md +31 -13
- package/dist/accordion-B6a3vVgA.js +207 -0
- package/dist/accordion-B6a3vVgA.js.map +1 -0
- package/dist/action-menu-TzCoSlwL.js +280 -0
- package/dist/action-menu-TzCoSlwL.js.map +1 -0
- package/dist/{affordance-geometry.generated-CL84ZN9A.js → affordance-geometry.generated-B5iu-Mkr.js} +9 -3
- package/dist/affordance-geometry.generated-B5iu-Mkr.js.map +1 -0
- package/dist/{ai-artifact-DLVdK0Py.js → ai-artifact-BMJdv-6q.js} +389 -391
- package/dist/ai-artifact-BMJdv-6q.js.map +1 -0
- package/dist/{app-shell-C_fKpljx.js → app-shell-ZK5RWdo6.js} +4 -4
- package/dist/{app-shell-C_fKpljx.js.map → app-shell-ZK5RWdo6.js.map} +1 -1
- package/dist/attachment-BtfhGm8i.js +245 -0
- package/dist/attachment-BtfhGm8i.js.map +1 -0
- package/dist/{auth-CAQcasMV.js → auth-CYxKfo69.js} +239 -237
- package/dist/auth-CYxKfo69.js.map +1 -0
- package/dist/{avatar-Bu2HhitA.js → avatar-BBnEJIx8.js} +71 -68
- package/dist/avatar-BBnEJIx8.js.map +1 -0
- package/dist/badge-MrKVNzW9.js +93 -0
- package/dist/badge-MrKVNzW9.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/batch-action-bar.js +3 -0
- package/dist/base/buttons.js +2 -3
- package/dist/base/cards.js +2 -2
- package/dist/base/carousel.js +19 -19
- package/dist/base/carousel.js.map +1 -1
- package/dist/base/cascader.js +234 -224
- package/dist/base/cascader.js.map +1 -1
- package/dist/base/chart.js +1 -1
- package/dist/base/choice-inputs.js +3 -3
- package/dist/base/code-block.js +1 -1
- package/dist/base/combobox.js +1 -1
- package/dist/base/command.js +1 -1
- package/dist/base/copyable.js +1 -1
- package/dist/base/date-pickers.js +2 -2
- package/dist/base/display.js +7 -7
- package/dist/base/feedback.js +3 -3
- package/dist/base/forms-numeric.js +1 -1
- package/dist/base/forms.js +2 -2
- package/dist/base/inline-edit.js +81 -76
- 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/metadata-list.js +3 -0
- 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 +7 -4
- package/dist/base/qr-code.js.map +1 -1
- package/dist/base/repeaters.js +175 -174
- 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 +148 -138
- 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 +4 -4
- 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 +2 -2
- package/dist/batch-action-bar-BZGDG-Si.js +104 -0
- package/dist/batch-action-bar-BZGDG-Si.js.map +1 -0
- package/dist/blocks/admin.js +264 -253
- package/dist/blocks/admin.js.map +1 -1
- package/dist/blocks/ai.js +293 -323
- package/dist/blocks/ai.js.map +1 -1
- package/dist/blocks/analytics/usage-card.js +1 -1
- package/dist/blocks/analytics.js +596 -587
- 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 +2246 -1693
- package/dist/blocks/commerce.js.map +1 -1
- package/dist/blocks/data-display.js +3 -2
- package/dist/blocks/onboarding.js +50 -49
- package/dist/blocks/onboarding.js.map +1 -1
- package/dist/blocks/planning.js +82 -91
- package/dist/blocks/planning.js.map +1 -1
- package/dist/blocks/timelines.js +1 -1
- package/dist/breadcrumbs-D5t7I023.js +129 -0
- package/dist/breadcrumbs-D5t7I023.js.map +1 -0
- package/dist/{button-BZyfTvwm.js → button-QYwiyhD2.js} +15 -14
- package/dist/button-QYwiyhD2.js.map +1 -0
- package/dist/buttons-SbIcm1HJ.js +661 -0
- package/dist/buttons-SbIcm1HJ.js.map +1 -0
- package/dist/{cards-qGSErLw_.js → cards-CiiHpKYd.js} +8 -8
- package/dist/cards-CiiHpKYd.js.map +1 -0
- package/dist/{chart-Bsc5BICK.js → chart-QfrARkXl.js} +17 -15
- package/dist/chart-QfrARkXl.js.map +1 -0
- package/dist/checkbox-DhB6K0bK.js +36 -0
- package/dist/checkbox-DhB6K0bK.js.map +1 -0
- package/dist/choice-inputs-t6w3ATNz.js +766 -0
- package/dist/choice-inputs-t6w3ATNz.js.map +1 -0
- package/dist/code-block-Dgbu-CU3.js +185 -0
- package/dist/code-block-Dgbu-CU3.js.map +1 -0
- package/dist/{collapsible-ClvC7Bj3.js → collapsible-D8AEGU1-.js} +4 -4
- package/dist/{collapsible-ClvC7Bj3.js.map → collapsible-D8AEGU1-.js.map} +1 -1
- package/dist/{collection-content-D6S8cv_n.js → collection-content-uK16Grv0.js} +3 -3
- package/dist/{collection-content-D6S8cv_n.js.map → collection-content-uK16Grv0.js.map} +1 -1
- package/dist/{combobox-BFnbJJp3.js → combobox-2Ic8N9bL.js} +103 -98
- package/dist/combobox-2Ic8N9bL.js.map +1 -0
- package/dist/combobox-DLl0bfiq.js +867 -0
- package/dist/combobox-DLl0bfiq.js.map +1 -0
- package/dist/{command-BnmSchli.js → command-kNR20o7x.js} +34 -30
- package/dist/command-kNR20o7x.js.map +1 -0
- package/dist/{comments-u5L0OGip.js → comments-BpDuCUUu.js} +304 -301
- package/dist/comments-BpDuCUUu.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 +27 -5
- package/dist/components/base/action-menu/action-menu.recipes.d.ts +21 -0
- package/dist/components/base/action-menu/index.d.ts +1 -0
- 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 +6 -6
- package/dist/components/base/batch-action-bar/batch-action-bar.d.ts +50 -0
- package/dist/components/base/batch-action-bar/batch-action-bar.strings.d.ts +20 -0
- package/dist/components/base/batch-action-bar/index.d.ts +8 -0
- 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 +2 -2
- 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/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 +24 -3
- 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/datepicker.types.d.ts +13 -3
- package/dist/components/base/display/alert-dialog.d.ts +10 -3
- 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 +8 -5
- package/dist/components/base/display/icon-badge/icon-badge.d.ts +1 -1
- 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-sizing.d.ts +43 -8
- 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/metadata-list/index.d.ts +12 -0
- package/dist/components/{blocks/data-display/metadata → base/metadata-list}/metadata-list.d.ts +28 -25
- package/dist/components/{blocks/data-display/metadata → base/metadata-list}/metadata-value.d.ts +2 -2
- package/dist/components/base/navigation/dropdown-menu.d.ts +2 -2
- package/dist/components/base/navigation/index.d.ts +1 -1
- 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/index.d.ts +1 -0
- package/dist/components/base/navigation/page-header/page-header-commands.d.ts +73 -0
- package/dist/components/base/navigation/page-header/page-header.d.ts +30 -4
- 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 +10 -5
- package/dist/components/base/signature-pad/signature-pad.types.d.ts +5 -1
- package/dist/components/base/signature-pad/signature-pad.utils.d.ts +11 -3
- 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/text-inputs/field-clear-button.d.ts +6 -0
- package/dist/components/base/text-inputs/input-group.d.ts +2 -2
- package/dist/components/base/upload/upload.recipes.d.ts +33 -0
- package/dist/components/base/value-inputs/date-time-input.d.ts +4 -2
- package/dist/components/base/value-inputs/index.d.ts +5 -5
- package/dist/components/base/value-inputs/tags-input.d.ts +38 -12
- 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/use-metric-format-options.d.ts +3 -0
- package/dist/components/blocks/commerce/address-card/address-card.d.ts +1 -1
- package/dist/components/blocks/commerce/address-card/types.d.ts +4 -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/cart-summary/cart-summary.d.ts +3 -1
- package/dist/components/blocks/commerce/cart-summary/index.d.ts +2 -2
- package/dist/components/blocks/commerce/cart-summary/types.d.ts +6 -1
- package/dist/components/blocks/commerce/discount-stack/discount-stack.d.ts +3 -1
- package/dist/components/blocks/commerce/discount-stack/index.d.ts +2 -2
- package/dist/components/blocks/commerce/discount-stack/types.d.ts +16 -4
- package/dist/components/blocks/commerce/fulfillment-group/fulfillment-group.d.ts +5 -0
- package/dist/components/blocks/commerce/fulfillment-group/index.d.ts +2 -0
- package/dist/components/blocks/commerce/fulfillment-group/types.d.ts +43 -0
- package/dist/components/blocks/commerce/index.d.ts +13 -5
- package/dist/components/blocks/commerce/inventory-section/types.d.ts +4 -1
- package/dist/components/blocks/commerce/invoice-header/invoice-header.d.ts +1 -1
- package/dist/components/blocks/commerce/invoice-header/types.d.ts +4 -2
- package/dist/components/blocks/commerce/invoice-mini/invoice-mini.d.ts +1 -1
- package/dist/components/blocks/commerce/invoice-mini/types.d.ts +2 -1
- package/dist/components/blocks/commerce/loyalty-points/types.d.ts +1 -1
- package/dist/components/blocks/commerce/order-customer/index.d.ts +2 -0
- package/dist/components/blocks/commerce/order-customer/order-customer.d.ts +5 -0
- package/dist/components/blocks/commerce/order-customer/types.d.ts +48 -0
- package/dist/components/blocks/commerce/order-header/index.d.ts +2 -0
- package/dist/components/blocks/commerce/order-header/order-header.d.ts +5 -0
- package/dist/components/blocks/commerce/order-header/types.d.ts +37 -0
- package/dist/components/blocks/commerce/order-line-item/index.d.ts +2 -0
- package/dist/components/blocks/commerce/order-line-item/order-line-item.d.ts +5 -0
- package/dist/components/blocks/commerce/order-line-item/types.d.ts +46 -0
- package/dist/components/blocks/commerce/order-status/types.d.ts +4 -0
- package/dist/components/blocks/commerce/order-summary/index.d.ts +2 -0
- package/dist/components/blocks/commerce/order-summary/order-summary.d.ts +5 -0
- package/dist/components/blocks/commerce/order-summary/types.d.ts +42 -0
- package/dist/components/blocks/commerce/order-transactions/index.d.ts +2 -0
- package/dist/components/blocks/commerce/order-transactions/order-transactions.d.ts +5 -0
- package/dist/components/blocks/commerce/order-transactions/types.d.ts +46 -0
- package/dist/components/blocks/commerce/payment-method/index.d.ts +2 -2
- package/dist/components/blocks/commerce/payment-method/payment-method.d.ts +9 -1
- package/dist/components/blocks/commerce/payment-method/types.d.ts +14 -1
- package/dist/components/blocks/commerce/refund-status/index.d.ts +2 -2
- package/dist/components/blocks/commerce/refund-status/refund-status.d.ts +3 -1
- package/dist/components/blocks/commerce/refund-status/types.d.ts +6 -3
- 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/shared/address-lines.d.ts +21 -0
- package/dist/components/blocks/commerce/shared/line-thumbnail.d.ts +9 -0
- package/dist/components/blocks/commerce/shared/order-status.d.ts +51 -0
- package/dist/components/blocks/commerce/shipment-tracking/shipment-tracking.d.ts +1 -1
- package/dist/components/blocks/commerce/shipment-tracking/types.d.ts +27 -6
- package/dist/components/blocks/commerce/summary-panel/amount-row.d.ts +2 -0
- package/dist/components/blocks/commerce/summary-panel/index.d.ts +3 -0
- package/dist/components/blocks/commerce/summary-panel/summary-panel.d.ts +2 -0
- package/dist/components/blocks/commerce/summary-panel/types.d.ts +26 -0
- package/dist/components/blocks/commerce/tax-breakdown/tax-breakdown.d.ts +1 -1
- package/dist/components/blocks/commerce/tax-breakdown/types.d.ts +2 -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/inline-stat/inline-stat.d.ts +4 -1
- package/dist/components/blocks/data-display/metadata/index.d.ts +30 -4
- package/dist/components/features/activities/partials/activity-row.d.ts +6 -2
- package/dist/components/features/activities/partials/tone-tokens.d.ts +0 -6
- package/dist/components/features/global-search/partials/global-search-group-heading.d.ts +15 -0
- package/dist/components/features/global-search/partials/global-search-idle-state.d.ts +1 -1
- package/dist/components/features/global-search/partials/tone-palettes.d.ts +0 -5
- package/dist/components/features/kanban/kanban.d.ts +1 -1
- package/dist/components/features/kanban/kanban.strings.d.ts +1 -1
- package/dist/components/features/kanban/kanban.types.d.ts +2 -2
- package/dist/components/features/media-library/hooks/use-media-library.d.ts +1 -1
- package/dist/components/features/media-library/index.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 +4 -0
- package/dist/components/features/media-library/media-library.types.d.ts +74 -1
- package/dist/components/features/media-library/partials/media-library-partials.d.ts +3 -3
- package/dist/components/features/mentions/partials/mention-kind-toggles.d.ts +16 -0
- package/dist/components/features/overlays/alert-dialog.d.ts +1 -1
- package/dist/components/features/overlays/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/index.d.ts +1 -1
- package/dist/components/features/overlays/overlay-tone-icon.d.ts +37 -0
- package/dist/components/features/overlays/overlays.types.d.ts +62 -19
- package/dist/components/features/products/components/product-contract-overview.d.ts +5 -0
- package/dist/components/features/products/components/product-details-card.d.ts +5 -0
- package/dist/components/features/products/components/product-operations-card.d.ts +5 -0
- package/dist/components/features/products/components/product-option-action-menu.d.ts +5 -0
- package/dist/components/features/products/components/product-options-summary.d.ts +5 -0
- package/dist/components/features/products/components/product-policies-card.d.ts +5 -0
- package/dist/components/features/products/components/product-quote-preview-card.d.ts +5 -0
- package/dist/components/features/products/components/product-readiness-card.d.ts +5 -0
- package/dist/components/features/products/components/product-structure-card.d.ts +5 -0
- package/dist/components/features/products/components/product-variant-action-menu.d.ts +23 -1
- 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 +11 -3
- package/dist/components/features/resource/index.d.ts +1 -1
- package/dist/components/features/resource/resource.d.ts +1 -1
- package/dist/components/features/resource/resource.types.d.ts +34 -6
- package/dist/components/features/rich-text-editor/index.d.ts +2 -1
- package/dist/components/features/rich-text-editor/partials/image-nodes.d.ts +13 -0
- package/dist/components/features/rich-text-editor/partials/image-uploads.d.ts +66 -0
- package/dist/components/features/rich-text-editor/partials/inline-reference-node.d.ts +19 -0
- package/dist/components/features/rich-text-editor/rich-text-editor.recipes.d.ts +1 -1
- package/dist/components/features/rich-text-editor/rich-text-editor.strings.d.ts +14 -0
- package/dist/components/features/rich-text-editor/rich-text-editor.types.d.ts +45 -0
- package/dist/components/features/rich-text-editor/use-rich-text-images.d.ts +18 -0
- package/dist/components/features/sync/index.d.ts +26 -3
- 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 +32 -7
- package/dist/components/layout/page/index.d.ts +1 -1
- package/dist/components/layout/page/page.types.d.ts +51 -4
- package/dist/components/layout/page/partials/page-actions.d.ts +1 -0
- package/dist/components/layout/page/partials/page-header.d.ts +1 -1
- package/dist/components/layout/settings/settings.d.ts +16 -2
- package/dist/components/layout/workspace/workspace.types.d.ts +21 -4
- 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 +9 -1
- package/dist/components/typography/label.d.ts +3 -0
- package/dist/components/typography/rich-text/index.d.ts +1 -1
- package/dist/components/typography/rich-text/rich-text-tree.d.ts +19 -0
- package/dist/components/typography/rich-text/rich-text.d.ts +16 -0
- package/dist/components/typography/running-text.d.ts +12 -0
- package/dist/components/typography/text-link.d.ts +24 -1
- package/dist/components/typography/text.d.ts +12 -0
- package/dist/components/typography/text.styles.d.ts +35 -13
- package/dist/components/ui/button.d.ts +1 -1
- package/dist/components/ui/checkbox.d.ts +6 -0
- package/dist/components/ui/overlay.recipes.d.ts +6 -2
- package/dist/components/ui/select.d.ts +3 -1
- package/dist/components/ui/switch.d.ts +5 -0
- package/dist/{containers-DqB-bSYE.js → containers-DmWiJa2I.js} +36 -35
- package/dist/containers-DmWiJa2I.js.map +1 -0
- package/dist/{copyable-BTSByfmq.js → copyable-B3Gwgdqc.js} +6 -6
- package/dist/{copyable-BTSByfmq.js.map → copyable-B3Gwgdqc.js.map} +1 -1
- package/dist/data-display-DafIvCl5.js +960 -0
- package/dist/data-display-DafIvCl5.js.map +1 -0
- package/dist/date-BgK3bTdo.js +144 -0
- package/dist/date-BgK3bTdo.js.map +1 -0
- package/dist/date-picker-CF-DtUpF.js +1529 -0
- package/dist/date-picker-CF-DtUpF.js.map +1 -0
- package/dist/date-pickers-BmzxJl5l.js +174 -0
- package/dist/date-pickers-BmzxJl5l.js.map +1 -0
- package/dist/{display-CS6Hbk18.js → display-DsQTVzMz.js} +88 -87
- package/dist/display-DsQTVzMz.js.map +1 -0
- package/dist/{dropdown-menu-D-boNgGO.js → dropdown-menu-E2qmdC7o.js} +23 -16
- package/dist/dropdown-menu-E2qmdC7o.js.map +1 -0
- package/dist/features/activities.js +437 -521
- package/dist/features/activities.js.map +1 -1
- package/dist/features/ai-chat.js +174 -172
- package/dist/features/ai-chat.js.map +1 -1
- package/dist/features/async-preview.js +8 -8
- 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 +139 -138
- 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 -352
- package/dist/features/email-composer.js.map +1 -1
- package/dist/features/event-calendar.js +262 -269
- package/dist/features/event-calendar.js.map +1 -1
- package/dist/features/filters.js +1 -1
- package/dist/features/global-search.js +307 -310
- package/dist/features/global-search.js.map +1 -1
- package/dist/features/kanban.js +95 -97
- package/dist/features/kanban.js.map +1 -1
- package/dist/features/map.js +56 -57
- package/dist/features/map.js.map +1 -1
- package/dist/features/media-library.js +914 -824
- 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 +1272 -1311
- package/dist/features/products.js.map +1 -1
- package/dist/features/questionnaire.js +204 -194
- package/dist/features/questionnaire.js.map +1 -1
- package/dist/features/resource-assignment.js +103 -95
- package/dist/features/resource-assignment.js.map +1 -1
- package/dist/features/resource.js +77 -69
- package/dist/features/resource.js.map +1 -1
- package/dist/features/rich-text-editor.js +30 -11
- package/dist/features/rich-text-editor.js.map +1 -1
- package/dist/features/schema-form.js +193 -189
- 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 +455 -455
- package/dist/features/theme-tweaker.js.map +1 -1
- package/dist/feedback-qNuMBtRH.js +233 -0
- package/dist/feedback-qNuMBtRH.js.map +1 -0
- package/dist/field-affordance-recipes-qQeIf4lG.js +48 -0
- package/dist/field-affordance-recipes-qQeIf4lG.js.map +1 -0
- package/dist/field-state-recipes-BVA2CWHo.js +12 -0
- package/dist/field-state-recipes-BVA2CWHo.js.map +1 -0
- package/dist/{filters-D6FF8L6s.js → filters-BkHH53uv.js} +414 -412
- package/dist/filters-BkHH53uv.js.map +1 -0
- package/dist/focus-recipes-B653VaLq.js +12 -0
- package/dist/focus-recipes-B653VaLq.js.map +1 -0
- package/dist/{form-field-CZwrkP7m.js → form-field-DUt4UxSV.js} +7 -7
- package/dist/{form-field-CZwrkP7m.js.map → form-field-DUt4UxSV.js.map} +1 -1
- package/dist/form-sizing-By94KzXE.js +130 -0
- package/dist/form-sizing-By94KzXE.js.map +1 -0
- package/dist/{forms-B5NCbkSC.js → forms-Bzha-Y3B.js} +25 -25
- package/dist/forms-Bzha-Y3B.js.map +1 -0
- package/dist/forms-numeric-C0bvjRPZ.js +906 -0
- package/dist/forms-numeric-C0bvjRPZ.js.map +1 -0
- package/dist/{header-kxruN3RM.js → header-BOefOKd1.js} +38 -41
- package/dist/header-BOefOKd1.js.map +1 -0
- package/dist/{hooks-BrlnCwQd.js → hooks-9k_TtmKh.js} +2 -2
- package/dist/{hooks-BrlnCwQd.js.map → hooks-9k_TtmKh.js.map} +1 -1
- package/dist/{http-CdEIHyQf.js → http-D_6rOnzU.js} +2 -2
- package/dist/{http-CdEIHyQf.js.map → http-D_6rOnzU.js.map} +1 -1
- package/dist/icon-badge-CAuKupo9.js +55 -0
- package/dist/icon-badge-CAuKupo9.js.map +1 -0
- package/dist/index.js +7 -7
- package/dist/input-DWhBBBww.js +262 -0
- package/dist/input-DWhBBBww.js.map +1 -0
- package/dist/{input-vxcaNCYC.js → input-Ddi_LSYv.js} +3 -3
- package/dist/{input-vxcaNCYC.js.map → input-Ddi_LSYv.js.map} +1 -1
- package/dist/interaction-recipes-CHr0dJUs.js +24 -0
- package/dist/interaction-recipes-CHr0dJUs.js.map +1 -0
- package/dist/item-DEmDiTlD.js +265 -0
- package/dist/item-DEmDiTlD.js.map +1 -0
- package/dist/layer-recipes-CCpklYME.js +13 -0
- package/dist/layer-recipes-CCpklYME.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 +7 -1
- package/dist/lib/field-affordance-recipes.d.ts +41 -1
- package/dist/lib/field-state-recipes.d.ts +9 -6
- package/dist/lib/focus-recipes.d.ts +24 -0
- package/dist/lib/format.d.ts +9 -0
- package/dist/lib/interaction-recipes.d.ts +35 -0
- package/dist/lib/layer-recipes.d.ts +19 -0
- package/dist/lib/money-format.d.ts +30 -0
- package/dist/lib/motion-recipes.d.ts +1 -0
- package/dist/lib/overlay-anatomy-recipes.d.ts +2 -1
- package/dist/lib/safe-image-src.d.ts +10 -0
- package/dist/lib/sanitize-html.d.ts +15 -3
- package/dist/lib/surface-recipes.d.ts +48 -6
- package/dist/lib/token-merge.generated.d.ts +17 -14
- package/dist/lib/tone-recipes.d.ts +79 -0
- package/dist/lib/track-recipes.d.ts +1 -1
- package/dist/lib/ui-provider/hooks.d.ts +2 -1
- package/dist/lib/ui-provider/index.d.ts +2 -2
- 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 +14 -2
- package/dist/lib/utils.js +1 -1
- package/dist/media-gallery-DcTtAaeC.js +203 -0
- package/dist/media-gallery-DcTtAaeC.js.map +1 -0
- package/dist/mentions-D-uyCh01.js +568 -0
- package/dist/mentions-D-uyCh01.js.map +1 -0
- package/dist/{message-SZUNB1eX.js → message-CdHgIWKf.js} +5 -5
- package/dist/{message-SZUNB1eX.js.map → message-CdHgIWKf.js.map} +1 -1
- package/dist/metadata-list-X5rYAKSB.js +394 -0
- package/dist/metadata-list-X5rYAKSB.js.map +1 -0
- package/dist/{motion-recipes-B6jKXEcN.js → motion-recipes-ChBg4HBq.js} +3 -2
- package/dist/{motion-recipes-B6jKXEcN.js.map → motion-recipes-ChBg4HBq.js.map} +1 -1
- package/dist/navigation-D3KwXmaq.js +145 -0
- package/dist/navigation-D3KwXmaq.js.map +1 -0
- package/dist/navigation-HJf5zxlH.js +268 -0
- package/dist/navigation-HJf5zxlH.js.map +1 -0
- package/dist/{navigation-row-recipes-DQEXQcqY.js → navigation-row-recipes-BVowojQw.js} +2 -2
- package/dist/{navigation-row-recipes-DQEXQcqY.js.map → navigation-row-recipes-BVowojQw.js.map} +1 -1
- package/dist/number-DMhe-Vsk.js +352 -0
- package/dist/number-DMhe-Vsk.js.map +1 -0
- package/dist/overflow-tab-bar-sQHXLlwQ.js +280 -0
- package/dist/overflow-tab-bar-sQHXLlwQ.js.map +1 -0
- package/dist/overlay.recipes-8GHqmlb4.js +6 -0
- package/dist/overlay.recipes-8GHqmlb4.js.map +1 -0
- package/dist/overlays-I0axtYA6.js +999 -0
- package/dist/overlays-I0axtYA6.js.map +1 -0
- package/dist/{page-hGmT4nWK.js → page-B5dTH9gE.js} +79 -68
- package/dist/page-B5dTH9gE.js.map +1 -0
- package/dist/page-header-commands-DjzFEq3E.js +126 -0
- package/dist/page-header-commands-DjzFEq3E.js.map +1 -0
- package/dist/{pagination-NLGqRirf.js → pagination-3bPA_a6K.js} +19 -19
- package/dist/{pagination-NLGqRirf.js.map → pagination-3bPA_a6K.js.map} +1 -1
- package/dist/{popover-CghIYdQf.js → popover-Di55PyAI.js} +8 -8
- package/dist/popover-Di55PyAI.js.map +1 -0
- package/dist/{popover-menu-B4PoWhRl.js → popover-menu-B71Tn2Qz.js} +6 -6
- package/dist/{popover-menu-B4PoWhRl.js.map → popover-menu-B71Tn2Qz.js.map} +1 -1
- package/dist/{popover.recipes-QlD4JenO.js → popover.recipes-Bdyhj2db.js} +2 -2
- package/dist/{popover.recipes-QlD4JenO.js.map → popover.recipes-Bdyhj2db.js.map} +1 -1
- package/dist/primitives-B-CkiEMU.js +379 -0
- package/dist/primitives-B-CkiEMU.js.map +1 -0
- package/dist/primitives.js +5 -5
- package/dist/{progress-BroqrAyV.js → progress-rnS8-uAW.js} +11 -11
- package/dist/progress-rnS8-uAW.js.map +1 -0
- package/dist/{receipt-BuJynLgf.js → receipt-D0oswZ0p.js} +6 -6
- package/dist/{receipt-BuJynLgf.js.map → receipt-D0oswZ0p.js.map} +1 -1
- package/dist/rich-text-DvGulsNJ.js +78 -0
- package/dist/rich-text-DvGulsNJ.js.map +1 -0
- package/dist/rich-text-editor-sMU_Scqm.js +1204 -0
- package/dist/rich-text-editor-sMU_Scqm.js.map +1 -0
- package/dist/rich-text-editor.recipes-CadiF_Uu.js +88 -0
- package/dist/rich-text-editor.recipes-CadiF_Uu.js.map +1 -0
- package/dist/rich-text-editor.strings-CB59ekH2.js +38 -0
- package/dist/rich-text-editor.strings-CB59ekH2.js.map +1 -0
- package/dist/safe-image-src-C6kQSMBZ.js +17 -0
- package/dist/safe-image-src-C6kQSMBZ.js.map +1 -0
- package/dist/sanitize-html-DsQmI48u.js +92 -0
- package/dist/sanitize-html-DsQmI48u.js.map +1 -0
- package/dist/scroll-area-Bt_vXY2b.js +48 -0
- package/dist/scroll-area-Bt_vXY2b.js.map +1 -0
- package/dist/{separator-BNIgG3au.js → separator-C8DlRGwF.js} +4 -4
- package/dist/separator-C8DlRGwF.js.map +1 -0
- package/dist/{separator-BhtFyo4x.js → separator-CYHnjsAb.js} +2 -2
- package/dist/{separator-BhtFyo4x.js.map → separator-CYHnjsAb.js.map} +1 -1
- package/dist/services/actions/action-adapters.d.ts +22 -0
- package/dist/services/actions/index.d.ts +1 -1
- package/dist/services/actions.js +23 -6
- package/dist/services/actions.js.map +1 -1
- package/dist/settings-CQW3b-Cu.js +170 -0
- package/dist/settings-CQW3b-Cu.js.map +1 -0
- package/dist/sheet-4SEvVYzA.js +210 -0
- package/dist/sheet-4SEvVYzA.js.map +1 -0
- package/dist/{sidebar-CyR4XKwR.js → sidebar-C7WWR29L.js} +181 -180
- package/dist/sidebar-C7WWR29L.js.map +1 -0
- package/dist/sidebar-d7Dg80ln.js +511 -0
- package/dist/sidebar-d7Dg80ln.js.map +1 -0
- package/dist/{skeleton-3F0uhYn3.js → skeleton-Cz890JZF.js} +10 -10
- package/dist/skeleton-Cz890JZF.js.map +1 -0
- package/dist/smart-card-lFKxn5Hu.js +595 -0
- package/dist/smart-card-lFKxn5Hu.js.map +1 -0
- package/dist/{spinner-Cpf7oRkF.js → spinner-fa3h1Aif.js} +10 -8
- package/dist/spinner-fa3h1Aif.js.map +1 -0
- package/dist/{structure-CRdqVawd.js → structure-DC2dygdA.js} +3 -3
- package/dist/{structure-CRdqVawd.js.map → structure-DC2dygdA.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-BKRVW8Os.js +43 -0
- package/dist/surface-recipes-BKRVW8Os.js.map +1 -0
- package/dist/table-CIKyLUsy.js +163 -0
- package/dist/table-CIKyLUsy.js.map +1 -0
- package/dist/{table-CcRDZiLP.js → table-CrcLN9Io.js} +544 -530
- package/dist/table-CrcLN9Io.js.map +1 -0
- package/dist/tabs-DwBJfjxX.js +190 -0
- package/dist/tabs-DwBJfjxX.js.map +1 -0
- package/dist/{text-inputs-DsR56TR-.js → text-inputs-aaK9wcDT.js} +151 -155
- package/dist/text-inputs-aaK9wcDT.js.map +1 -0
- package/dist/{text.styles-Q4sGAIgA.js → text.styles-g4He6UIW.js} +17 -14
- package/dist/text.styles-g4He6UIW.js.map +1 -0
- package/dist/theme.css +16 -12
- package/dist/themes/green.css +24 -0
- package/dist/{timelines-D1pkt3se.js → timelines-C_SBwHNP.js} +154 -164
- package/dist/timelines-C_SBwHNP.js.map +1 -0
- package/dist/tone-recipes-CPoExcTE.js +70 -0
- package/dist/tone-recipes-CPoExcTE.js.map +1 -0
- package/dist/tooltip-CsfgrfS7.js +111 -0
- package/dist/tooltip-CsfgrfS7.js.map +1 -0
- package/dist/track-recipes-CDcKmndW.js +10 -0
- package/dist/track-recipes-CDcKmndW.js.map +1 -0
- package/dist/{tree-BtmYyMZV.js → tree-BiKhg8AY.js} +72 -70
- package/dist/tree-BiKhg8AY.js.map +1 -0
- package/dist/typography/rich-text.js +1 -1
- package/dist/typography-DTRkE9zL.js +117 -0
- package/dist/typography-DTRkE9zL.js.map +1 -0
- package/dist/typography.js +2 -2
- package/dist/{ui-provider-DRPn3qNl.js → ui-provider-1D_NSYzO.js} +30 -23
- package/dist/ui-provider-1D_NSYzO.js.map +1 -0
- package/dist/ui-provider.js +3 -3
- package/dist/{upload-CDbYw1WN.js → upload-BO8-CLN6.js} +294 -293
- package/dist/upload-BO8-CLN6.js.map +1 -0
- package/dist/{upload-queue-CNd_hH_a.js → upload-queue-EOC8g1gf.js} +133 -138
- package/dist/upload-queue-EOC8g1gf.js.map +1 -0
- package/dist/upload.recipes-BbxTqrCT.js +61 -0
- package/dist/upload.recipes-BbxTqrCT.js.map +1 -0
- package/dist/{usage-card-VyJLUwRr.js → usage-card-obRaBskq.js} +42 -43
- package/dist/{usage-card-VyJLUwRr.js.map → usage-card-obRaBskq.js.map} +1 -1
- package/dist/{utils-BvH9PSmq.js → utils-l5LpDw2z.js} +264 -62
- package/dist/utils-l5LpDw2z.js.map +1 -0
- package/dist/value-inputs-TAYMX111.js +947 -0
- package/dist/value-inputs-TAYMX111.js.map +1 -0
- package/dist/value-typography-b8wpz1eX.js +116 -0
- package/dist/value-typography-b8wpz1eX.js.map +1 -0
- package/dist/workspace-DH0v0KcB.js +407 -0
- package/dist/workspace-DH0v0KcB.js.map +1 -0
- package/docs/consumer-skill/SKILL.md +62 -50
- package/docs/consumer-skill/examples/app-layout.tsx +3 -5
- package/docs/consumer-skill/examples/composition.tsx +3 -3
- package/docs/consumer-skill/examples/detail.tsx +59 -13
- package/docs/consumer-skill/examples/edit.tsx +2 -2
- package/docs/consumer-skill/examples/layout-blocks.tsx +20 -0
- package/docs/consumer-skill/examples/manifest.json +28 -6
- package/docs/consumer-skill/examples/receipt.tsx +2 -2
- package/docs/consumer-skill/examples/scoped-directory.tsx +3 -3
- package/docs/consumer-skill/examples/website.tsx +1 -1
- package/docs/consumer-skill/references/agents-md.md +33 -0
- package/docs/consumer-skill/references/analytics.md +1 -1
- package/docs/consumer-skill/references/composition.md +139 -24
- package/docs/consumer-skill/references/design-contract.md +12 -3
- package/docs/consumer-skill/references/discovery.md +4 -0
- package/docs/consumer-skill/references/installation.md +33 -1
- package/docs/consumer-skill/references/integration.md +32 -1
- package/docs/consumer-skill/references/public-api.json +1051 -610
- package/docs/consumer-skill/references/review.md +44 -8
- package/docs/consumer-skill/references/theming.md +14 -4
- package/docs/consumer-skill/references/tokens.json +5 -2
- package/docs/consumer-skill/references/workflows.md +30 -9
- package/docs/consumer-skill/scripts/composition-policy.mjs +127 -6
- package/docs/consumer-skill/scripts/discovery.mjs +11 -3
- package/docs/consumer-skill/scripts/pin-button-defaults.mjs +95 -0
- package/docs/consumer-skill/scripts/surface-policy.mjs +139 -5
- package/package.json +13 -3
- package/dist/accordion-BRTcsp8J.js +0 -205
- package/dist/accordion-BRTcsp8J.js.map +0 -1
- package/dist/action-menu-Drxw_vJk.js +0 -265
- package/dist/action-menu-Drxw_vJk.js.map +0 -1
- package/dist/affordance-geometry.generated-CL84ZN9A.js.map +0 -1
- package/dist/ai-artifact-DLVdK0Py.js.map +0 -1
- package/dist/attachment-DbjUWsP0.js +0 -244
- package/dist/attachment-DbjUWsP0.js.map +0 -1
- package/dist/auth-CAQcasMV.js.map +0 -1
- package/dist/avatar-Bu2HhitA.js.map +0 -1
- package/dist/badge-CzId1Wlm.js +0 -92
- package/dist/badge-CzId1Wlm.js.map +0 -1
- package/dist/breadcrumbs-BuYz5SDU.js +0 -128
- package/dist/breadcrumbs-BuYz5SDU.js.map +0 -1
- package/dist/button-BZDasD04.js +0 -651
- package/dist/button-BZDasD04.js.map +0 -1
- package/dist/button-BZyfTvwm.js.map +0 -1
- package/dist/buttons-D_6KJvEE.js +0 -99
- package/dist/buttons-D_6KJvEE.js.map +0 -1
- package/dist/cards-qGSErLw_.js.map +0 -1
- package/dist/chart-Bsc5BICK.js.map +0 -1
- package/dist/checkbox-BQNDjUCh.js +0 -34
- package/dist/checkbox-BQNDjUCh.js.map +0 -1
- package/dist/choice-inputs-Mk3iWbhr.js +0 -725
- package/dist/choice-inputs-Mk3iWbhr.js.map +0 -1
- package/dist/code-block-DzHKRybS.js +0 -183
- package/dist/code-block-DzHKRybS.js.map +0 -1
- package/dist/combobox-BFnbJJp3.js.map +0 -1
- package/dist/combobox-hozNwUcc.js +0 -847
- package/dist/combobox-hozNwUcc.js.map +0 -1
- package/dist/command-BnmSchli.js.map +0 -1
- package/dist/comments-u5L0OGip.js.map +0 -1
- package/dist/containers-DqB-bSYE.js.map +0 -1
- package/dist/data-display-Bihs9Ven.js +0 -1342
- package/dist/data-display-Bihs9Ven.js.map +0 -1
- package/dist/date-DOKhJPu7.js +0 -140
- package/dist/date-DOKhJPu7.js.map +0 -1
- package/dist/date-picker-DzP5HQq7.js +0 -1541
- package/dist/date-picker-DzP5HQq7.js.map +0 -1
- package/dist/date-pickers-BpgGz7S-.js +0 -196
- package/dist/date-pickers-BpgGz7S-.js.map +0 -1
- package/dist/display-CS6Hbk18.js.map +0 -1
- package/dist/dropdown-menu-D-boNgGO.js.map +0 -1
- package/dist/feedback-CJkUAapr.js +0 -233
- package/dist/feedback-CJkUAapr.js.map +0 -1
- package/dist/field-affordance-recipes-uKY4MsZ_.js +0 -25
- package/dist/field-affordance-recipes-uKY4MsZ_.js.map +0 -1
- package/dist/field-state-recipes-DQQpiLWC.js +0 -11
- package/dist/field-state-recipes-DQQpiLWC.js.map +0 -1
- package/dist/filters-D6FF8L6s.js.map +0 -1
- package/dist/form-sizing-QP8aIRaW.js +0 -103
- package/dist/form-sizing-QP8aIRaW.js.map +0 -1
- package/dist/format-iamDSqs2.js +0 -110
- package/dist/format-iamDSqs2.js.map +0 -1
- package/dist/forms-B5NCbkSC.js.map +0 -1
- package/dist/forms-numeric-Crrm80Lm.js +0 -867
- package/dist/forms-numeric-Crrm80Lm.js.map +0 -1
- package/dist/header-kxruN3RM.js.map +0 -1
- package/dist/icon-badge-Btc6pQrp.js +0 -53
- package/dist/icon-badge-Btc6pQrp.js.map +0 -1
- package/dist/input-SX9V0AL3.js +0 -255
- package/dist/input-SX9V0AL3.js.map +0 -1
- package/dist/item-DE4YnuJx.js +0 -258
- package/dist/item-DE4YnuJx.js.map +0 -1
- package/dist/media-gallery-DLp3HAz0.js +0 -201
- package/dist/media-gallery-DLp3HAz0.js.map +0 -1
- package/dist/mentions-Cl0Kt_Pd.js +0 -565
- package/dist/mentions-Cl0Kt_Pd.js.map +0 -1
- package/dist/navigation-DnQSNMT0.js +0 -276
- package/dist/navigation-DnQSNMT0.js.map +0 -1
- package/dist/navigation-DyytsLRB.js +0 -265
- package/dist/navigation-DyytsLRB.js.map +0 -1
- package/dist/number-DasMFWEG.js +0 -269
- package/dist/number-DasMFWEG.js.map +0 -1
- package/dist/overlay.recipes-BxW5FIfK.js +0 -6
- package/dist/overlay.recipes-BxW5FIfK.js.map +0 -1
- package/dist/overlays-DUbs1KEi.js +0 -1011
- package/dist/overlays-DUbs1KEi.js.map +0 -1
- package/dist/page-hGmT4nWK.js.map +0 -1
- package/dist/page-header-D8nERkn5.js +0 -112
- package/dist/page-header-D8nERkn5.js.map +0 -1
- package/dist/popover-CghIYdQf.js.map +0 -1
- package/dist/primitives-C7ff0QaI.js +0 -337
- package/dist/primitives-C7ff0QaI.js.map +0 -1
- package/dist/progress-BroqrAyV.js.map +0 -1
- package/dist/rich-text-DlxDOtf4.js +0 -32
- package/dist/rich-text-DlxDOtf4.js.map +0 -1
- package/dist/rich-text-editor-BKyG7rWz.js +0 -574
- package/dist/rich-text-editor-BKyG7rWz.js.map +0 -1
- package/dist/rich-text-editor.recipes-B72Nfuze.js +0 -81
- package/dist/rich-text-editor.recipes-B72Nfuze.js.map +0 -1
- package/dist/rich-text-editor.strings-BpnIQgMl.js +0 -25
- package/dist/rich-text-editor.strings-BpnIQgMl.js.map +0 -1
- package/dist/sanitize-html-BG9FGe-j.js +0 -64
- package/dist/sanitize-html-BG9FGe-j.js.map +0 -1
- package/dist/scroll-area-D-pIhEKl.js +0 -47
- package/dist/scroll-area-D-pIhEKl.js.map +0 -1
- package/dist/separator-BNIgG3au.js.map +0 -1
- package/dist/settings-DOTOzeZ2.js +0 -161
- package/dist/settings-DOTOzeZ2.js.map +0 -1
- package/dist/sheet-BFhrNehm.js +0 -205
- package/dist/sheet-BFhrNehm.js.map +0 -1
- package/dist/sidebar-CyR4XKwR.js.map +0 -1
- package/dist/sidebar-SvGJ0Zwi.js +0 -506
- package/dist/sidebar-SvGJ0Zwi.js.map +0 -1
- package/dist/skeleton-3F0uhYn3.js.map +0 -1
- package/dist/smart-card-DjGVV2xr.js +0 -584
- package/dist/smart-card-DjGVV2xr.js.map +0 -1
- package/dist/spinner-Cpf7oRkF.js.map +0 -1
- package/dist/structure.recipes-Bqhf9oIh.js.map +0 -1
- package/dist/surface-recipes-Dd__PD-w.js +0 -28
- package/dist/surface-recipes-Dd__PD-w.js.map +0 -1
- package/dist/table-CLtJTxoR.js +0 -147
- package/dist/table-CLtJTxoR.js.map +0 -1
- package/dist/table-CcRDZiLP.js.map +0 -1
- package/dist/tabs-BNgu7g0u.js +0 -188
- package/dist/tabs-BNgu7g0u.js.map +0 -1
- package/dist/text-inputs-DsR56TR-.js.map +0 -1
- package/dist/text.styles-Q4sGAIgA.js.map +0 -1
- package/dist/timelines-D1pkt3se.js.map +0 -1
- package/dist/track-recipes-LLPNVwFg.js +0 -10
- package/dist/track-recipes-LLPNVwFg.js.map +0 -1
- package/dist/tree-BtmYyMZV.js.map +0 -1
- package/dist/typography-BxQgiZyw.js +0 -96
- package/dist/typography-BxQgiZyw.js.map +0 -1
- package/dist/ui-provider-DRPn3qNl.js.map +0 -1
- package/dist/upload-CDbYw1WN.js.map +0 -1
- package/dist/upload-queue-CNd_hH_a.js.map +0 -1
- package/dist/use-file-drop-target-BX7GnhoQ.js +0 -39
- package/dist/use-file-drop-target-BX7GnhoQ.js.map +0 -1
- package/dist/utils-BvH9PSmq.js.map +0 -1
- package/dist/value-inputs-D0KCrfVC.js +0 -840
- package/dist/value-inputs-D0KCrfVC.js.map +0 -1
- package/dist/workspace-CcR8r-Nt.js +0 -395
- package/dist/workspace-CcR8r-Nt.js.map +0 -1
- /package/dist/components/{blocks/data-display/metadata → base/metadata-list}/metadata-list.strings.d.ts +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,637 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
##
|
|
3
|
+
## 2.0.1 — 2026-10-18
|
|
4
|
+
|
|
5
|
+
One shared recipe and design-lint rule for each visual state, the fixes the new
|
|
6
|
+
drift checks found, and one command row and record-page recipe for every page
|
|
7
|
+
header. No public export or prop is removed. Additions: `header.tabs` on Page
|
|
8
|
+
(`PageHeaderTabs`); `primaryAction`, `secondaryActions`, `moreActionsLabel` and
|
|
9
|
+
`renderLink` on PageHeading, ResourceHeader, the resource shells and
|
|
10
|
+
SettingsShell, and `primaryAction` on WorkspaceRecordHeader;
|
|
11
|
+
`toPageHeaderAction` in `services/actions`; an optional `toggle` flag on
|
|
12
|
+
`ToolbarButtonConfig` and `RichTextEditorToolbarItem`; `context` on
|
|
13
|
+
`ActionMenu` (`ActionMenuContext`); an optional `actions.menuLabel` in DataTable
|
|
14
|
+
strings; `align` on ConfirmDialog and ActionDialog with UIProvider overlay
|
|
15
|
+
defaults; `selecting`, `defaultSelecting`, `onSelectingChange` and `onItemOpen`
|
|
16
|
+
on MediaLibrary; `useRichTextImages` and `images` on RichTextEditor and
|
|
17
|
+
RichText; the `themelia-react-ui/base/metadata-list` entrypoint; an optional
|
|
18
|
+
`fontFamily` on `signaturePadToSVG`; the `themelia-react-ui/base/batch-action-bar`
|
|
19
|
+
entrypoint; the order blocks, `SummaryPanel` and `AmountRow` in `blocks/commerce`;
|
|
20
|
+
`valueAlign` on MetadataList; `defaultValue`, `name` and ARIA props on TagsInput.
|
|
21
|
+
`PageActions`, `PageAction`,
|
|
22
|
+
`toPageAction`, `features/sync`, the standalone product region cards, the
|
|
23
|
+
`blocks/data-display` MetadataList exports and `ActivityRow` `moreLabel` are
|
|
24
|
+
deprecated.
|
|
25
|
+
|
|
26
|
+
### Upgrading from 2.0.0
|
|
27
|
+
|
|
28
|
+
- **Focus and control borders.** Library controls draw the soft `--input`
|
|
29
|
+
boundary and one shared focus indicator. Drop `ring-2`, `ring-offset-*` or
|
|
30
|
+
full-strength `ring-ring` focus classes passed to library controls; the
|
|
31
|
+
consumer checker reports them as `focus-ring-recipe`. Themes that override
|
|
32
|
+
`--ring` should keep it at 3:1 against their surfaces.
|
|
33
|
+
- **Page commands.** Replace a `PageActions` ribbon or hand-built buttons in a
|
|
34
|
+
header's `actions` with `primaryAction` (one) and ordered `secondaryActions`;
|
|
35
|
+
mark irreversible commands `destructive: true` and confirm them in the
|
|
36
|
+
handler. `actions` stays for non-command controls such as a period select.
|
|
37
|
+
Move section tabs placed at the top of a Page body into `header.tabs`. The
|
|
38
|
+
consumer checker reports the old shapes as `page-command-roles`.
|
|
39
|
+
- **Overflow trigger names.** Overflow triggers are named "More actions" by
|
|
40
|
+
default. This replaces "Open menu" (`ActionMenu` `strings.openMenuLabel`),
|
|
41
|
+
"Card actions" (Card `actionsLabel`), "Actions" (ContentBlock and DataTable
|
|
42
|
+
row menus) and "Page actions" (`PageActions` `strings.menuLabel`). Update
|
|
43
|
+
tests or automation that find these buttons by name, or pass the old copy
|
|
44
|
+
through those strings. The DataTable actions column header stays "Actions"
|
|
45
|
+
(`strings.actions.triggerLabel`); the row trigger's name moves to the new
|
|
46
|
+
`strings.actions.menuLabel`. Copy that sets only `triggerLabel`, as localized
|
|
47
|
+
tables did before, keeps naming the trigger with it.
|
|
48
|
+
- **Overflow trigger size and glyph.** An icon-only `ActionMenu` trigger now
|
|
49
|
+
follows `UIProvider.density.defaultScale` instead of always rendering at
|
|
50
|
+
`md`; pass `buttonProps.size` to match the controls beside it. The default
|
|
51
|
+
glyph is the horizontal ellipsis (`MoreHorizontal`) rather than
|
|
52
|
+
`MoreVertical`; `icon` still overrides it.
|
|
53
|
+
- **State styling.** Hover, selection, pressed, status-tint, divider, disabled,
|
|
54
|
+
motion, corner and stacking classes passed to library rows and tiles should
|
|
55
|
+
follow the shared roles below. Pressed toggles, including AI feedback votes,
|
|
56
|
+
editor formatting buttons and the editor's source view, show the accent fill
|
|
57
|
+
instead of a status colour or a solid primary fill. `HighlightedText`'s
|
|
58
|
+
default `highlightClassName` is the shared match mark: foreground text on the
|
|
59
|
+
warning tint.
|
|
60
|
+
- **MetadataList moved to base.** Import `MetadataList`, its item types and
|
|
61
|
+
default strings from `themelia-react-ui/base/metadata-list`. The
|
|
62
|
+
`themelia-react-ui/blocks/data-display` re-exports keep working and are
|
|
63
|
+
deprecated. Labels render semibold.
|
|
64
|
+
- **MediaLibrary opens before it selects.** Activating an asset (click, Enter,
|
|
65
|
+
Space) calls `onItemOpen` or shows the details panel. Selection is an explicit
|
|
66
|
+
mode: `selecting`, `defaultSelecting` and `onSelectingChange`. Picker dialogs
|
|
67
|
+
start selecting; pass `defaultSelecting` where a library relied on selecting
|
|
68
|
+
by default.
|
|
69
|
+
- **ConfirmDialog is centred.** ConfirmDialog and ActionDialog accept
|
|
70
|
+
`align: 'start' | 'center'`, resolved from the prop, then the UIProvider
|
|
71
|
+
`overlay.defaultConfirmAlign` / `overlay.defaultDialogAlign` defaults, then
|
|
72
|
+
center for ConfirmDialog and start for ActionDialog.
|
|
73
|
+
- **Deprecated: `themelia-react-ui/features/sync`.** `SyncRangeDialogForm` is
|
|
74
|
+
application-specific; use `SchemaForm` with `radio-cards` and
|
|
75
|
+
`checkbox-cards` fields. The entrypoint still ships.
|
|
76
|
+
- **Deprecated: standalone product region cards and row menus.** Render them
|
|
77
|
+
through `ProductOverview` slots and the `renderOptionActions` /
|
|
78
|
+
`renderVariantActions` options. They stay exported.
|
|
79
|
+
- **Deprecated: `ActivityRow` `moreLabel`.** The collapsed metadata preview it
|
|
80
|
+
labelled is gone; secondary detail opens with the details disclosure.
|
|
81
|
+
- **Selection bars are a `BatchActionBar`.** DataTable's default selection
|
|
82
|
+
toolbar now docks to the bottom of the viewport (`floating`); pass
|
|
83
|
+
`selectionToolbarPlacement="inline"` to keep it in the table. Its summary and
|
|
84
|
+
the new `totalRowCount` prop default to `pagination.total`, so server-paginated
|
|
85
|
+
tables count the whole result. Product variant tables show an inline bar only
|
|
86
|
+
while variants are selected; `renderBulkActions` now replaces the default
|
|
87
|
+
commands, as documented (return `null` to keep them), and Delete no longer
|
|
88
|
+
repeats the count.
|
|
89
|
+
- **MetadataList rows.** `layout="rows"` draws rules only with `itemSeparator`,
|
|
90
|
+
and values start their column on `2fr/3fr` tracks. Pass `valueAlign="end"` for
|
|
91
|
+
the previous right-aligned figures, such as money columns.
|
|
92
|
+
- **TagsInput.** Chips sit inside the field, before the text input in Tab order;
|
|
93
|
+
the count and clear-all move to a footer under the field, and the placeholder
|
|
94
|
+
shows only while the field is empty. The input stays enabled at `maxTags`.
|
|
95
|
+
- **Commerce DOM hooks.** RefundStatusCard, CartSummaryCard,
|
|
96
|
+
DiscountStackPreview, TaxBreakdownCard and ShipmentTracking render on `Card`
|
|
97
|
+
and lose the `content-block--*` classes and `data-component="content-block"`;
|
|
98
|
+
their own `--component` classes stay. ShipmentTracking and InvoiceHeader show
|
|
99
|
+
a visible title with the status chip in its suffix.
|
|
100
|
+
|
|
101
|
+
### Changes
|
|
102
|
+
|
|
103
|
+
- **Visual: the More actions menu ends the page header's command row.** Page
|
|
104
|
+
commands render as the secondary commands, then the primary command, then the
|
|
105
|
+
More actions menu (`[secondary…] [primary] [⋯]`); 2.0.0 placed the menu
|
|
106
|
+
between the secondary and primary commands. The menu trigger takes the
|
|
107
|
+
secondary treatment, an outline square at the commands' own height, including
|
|
108
|
+
under a compact `UIProvider` scale; it was a ghost glyph at the default size.
|
|
109
|
+
- **Visual: one overflow trigger.** Every overflow menu shares one `ActionMenu`
|
|
110
|
+
trigger recipe (`action-menu.recipes.ts`). It draws the `⋯` glyph, is named
|
|
111
|
+
"More actions", and is a square at the size of the controls beside it, or at
|
|
112
|
+
the provider scale when nothing sits beside it. `context="inline"`, the
|
|
113
|
+
default, is a quiet ghost square with a muted glyph for rows, cards and
|
|
114
|
+
footers. `context="commands"` is the outline square beside outline commands,
|
|
115
|
+
which the page header's More actions trigger now takes from the recipe.
|
|
116
|
+
Card headers, DataTable rows, Kanban items and the EmailComposer footer
|
|
117
|
+
follow the provider scale. Activity rows and ApiKeyList match their own
|
|
118
|
+
compact expand and add controls. `PageActions` uses the outline treatment at
|
|
119
|
+
its inline `size`. The library no longer hand-sets trigger sizes, styles or
|
|
120
|
+
glyphs.
|
|
121
|
+
- **The menu ends any row with a primary command.** The EmailComposer footer
|
|
122
|
+
renders `[Discard] … [Send] [⋯]`, where 2.0.0 placed the menu before Send.
|
|
123
|
+
Send and the menu wrap together, so the menu never sits alone on a narrow
|
|
124
|
+
line.
|
|
125
|
+
- **One menu per header, destructive commands last.** `ProductVariantDetails`
|
|
126
|
+
merges its default variant commands (Open, Edit, Duplicate, Delete) into the
|
|
127
|
+
card's own `actions` menu. Its header no longer shows a second, differently
|
|
128
|
+
sized `⋯`, and Delete sorts last. A custom `renderActions` still renders in
|
|
129
|
+
the header. The product variants bulk bar places Delete after Apply and any
|
|
130
|
+
`renderBulkActions` content.
|
|
131
|
+
- **Overflow trigger enforcement.** The `overflow-trigger` rule in
|
|
132
|
+
`check:contract` rejects overflow glyph imports outside the ActionMenu owner,
|
|
133
|
+
raw UI, pagination and the OverflowTabBar More tab. It also rejects icon-only
|
|
134
|
+
`ActionMenu` triggers that set `tone`, `buttonStyle`, `iconOnly` or
|
|
135
|
+
action-size classes through `buttonProps`.
|
|
136
|
+
`tests/browser/overflow-trigger.spec.ts` checks order, heights and every
|
|
137
|
+
opened menu at 390px and 1440px in light and dark.
|
|
138
|
+
- **One command row for every header.** PageHeading owns the role-based row,
|
|
139
|
+
and `PageHeaderAction` moves to `base/navigation` (still exported from
|
|
140
|
+
`layout/page`). Page and PageHeader pass their commands to it; ResourceHeader,
|
|
141
|
+
ResourceIndexShell, ResourceShowShell and TabbedResourceShell
|
|
142
|
+
(`ResourceHeaderCommandProps`), SettingsShell and WorkspaceRecordHeader take
|
|
143
|
+
the same `primaryAction` and `secondaryActions` and render the same row after
|
|
144
|
+
their custom `actions`. WorkspaceRecordHeader's `secondaryActions` accepts
|
|
145
|
+
command objects; rendered elements keep their previous cluster.
|
|
146
|
+
- **Section tabs in the page header.** `header.tabs` renders a record's
|
|
147
|
+
sections under the header's copy and commands with the shared OverflowTabBar:
|
|
148
|
+
`badge` shows a count, tabs that do not fit move into a More menu, the active
|
|
149
|
+
tab stays visible, and `onValueChange` switches the section or routes.
|
|
150
|
+
- **Deprecated `PageActions`.** Its ribbon defaulted inline commands to solid
|
|
151
|
+
secondary buttons beside a larger ghost menu trigger and collapsed by viewport
|
|
152
|
+
width. Pass commands by role instead, or use ActionButtons for a toolbar.
|
|
153
|
+
`toPageHeaderAction` adapts a resolved action to a role-based command, with a
|
|
154
|
+
destructive tone marking it destructive.
|
|
155
|
+
- **One record-page recipe.** The detail recipe, the resource-detail build
|
|
156
|
+
recipe and a new Page example show a record with one status badge,
|
|
157
|
+
role-based commands, a confirmed destructive command and section tabs with
|
|
158
|
+
counts. Catalogue examples for PageHeading, resources, workspaces, settings,
|
|
159
|
+
app shells and tables use role-based commands; the consumer docs no longer
|
|
160
|
+
recommend card dividers, footer command rows or decorative title icons.
|
|
161
|
+
- **Consumer checker.** `page-command-roles` also flags PageActions,
|
|
162
|
+
ActionButtons and ActionMenu in a header's `actions`, and covers PageHeading,
|
|
163
|
+
the resource shells, WorkspaceRecordHeader and SettingsShell.
|
|
164
|
+
`decorative-icon` flags a page `titleIcon` without a link or handler, and an
|
|
165
|
+
icon on more than one page command. `raw-button` no longer flags a native
|
|
166
|
+
button passed as a package owner's `render`, such as an Item row rendered as
|
|
167
|
+
a button; the owner keeps that root's focus edge and row anatomy. Local
|
|
168
|
+
components passing a native button are still reviewed.
|
|
169
|
+
- **Teaching material follows the house rules.** Catalogue examples, templates
|
|
170
|
+
and the shipped consumer examples use an untoned Button for neutral commands
|
|
171
|
+
(a `tone="secondary"` Button without `buttonStyle` renders solid), spell
|
|
172
|
+
neutral badges `tone="neutral"`, space siblings with Stack, Grid and
|
|
173
|
+
AdaptiveGrid instead of flex/grid gap divs or `space-y` margins, and drop
|
|
174
|
+
decorative title tiles. The order, product, customer, staff and overview
|
|
175
|
+
templates keep Page's default measure; the order template's fulfillment is
|
|
176
|
+
its `header.primaryAction`, the staff template's suspension is a
|
|
177
|
+
`destructive: true` secondary action confirmed by ConfirmDialog, and neither
|
|
178
|
+
repeats the header's status badge in a card or fact list.
|
|
179
|
+
- **Agent guidance closes the loop.** The consumer skill ships a project
|
|
180
|
+
instructions block (`references/agents-md.md`) to paste into an app's
|
|
181
|
+
`AGENTS.md`: under 2,000 characters, version-stamped in its start marker,
|
|
182
|
+
generated and verified by `check:skill`, and naming only scripts that ship
|
|
183
|
+
with the skill. The installed identity recipe reports the block as missing,
|
|
184
|
+
current or stale. SKILL.md and the review guide now make the composition
|
|
185
|
+
checker the agent's done condition (no errors on changed files, at most three
|
|
186
|
+
fix rounds, then the app's typecheck, lint and tests) with a five-line
|
|
187
|
+
hand-back, instead of calling it optional.
|
|
188
|
+
- **Consumer-skill evals.** `evals/consumer-skill` holds eight admin tasks,
|
|
189
|
+
five of them temptations such as a red Delete button or hand-made KPI cards,
|
|
190
|
+
each with a reference and a naive solution. `scripts/consumer-evals.mjs`
|
|
191
|
+
scores agent outputs with the shipped checker, imports and source patterns,
|
|
192
|
+
and `check:agent` proves every reference passes and every naive version fails.
|
|
193
|
+
- **Fix: destructive activity actions.** ActivityFeed row menus passed the
|
|
194
|
+
action tone as an unknown `variant` field, so a destructive action lost its
|
|
195
|
+
destructive treatment and its place at the end of the menu.
|
|
196
|
+
- **Visual: one control boundary and one focus indicator.** `--input` is the
|
|
197
|
+
single control boundary: fields, select and date triggers, checkboxes, radios,
|
|
198
|
+
switch tracks, upload targets and outline buttons all draw it, so adjoining
|
|
199
|
+
controls read as one family. It is now soft and translucent
|
|
200
|
+
(`oklch(0.28 0 0 / 15%)` in light, white at 15% in dark) and reads the same on
|
|
201
|
+
every surface, replacing the 3:1 gray of 2.0.0 (`oklch(0.62 0 0)`, white at
|
|
202
|
+
40% in dark) that made fields and selects read darker than the outline buttons
|
|
203
|
+
beside them; `--border` stays the divider color, and the repeater's empty
|
|
204
|
+
placeholder uses it. Every focused element draws one indicator from
|
|
205
|
+
`src/lib/focus-recipes.ts`: a 1px `--ring` edge at full strength (the
|
|
206
|
+
control's own border, an inset edge on borderless rows and regions, or an
|
|
207
|
+
outline just outside link and text-button glyphs) inside a soft 3px halo of
|
|
208
|
+
`--ring` at 50%. It replaces the 2px full-strength and offset rings, which
|
|
209
|
+
read as a heavier border. The edge carries the 3:1 contrast. An invalid field
|
|
210
|
+
keeps its destructive border at rest and while focused, where the halo turns
|
|
211
|
+
destructive; there is no resting halo. Focus on a MediaGallery tile is drawn
|
|
212
|
+
inside the tile, where its overflow clipping had hidden it. Design lint's
|
|
213
|
+
`focus-ring-recipe` rule (replacing `focus-ring-contrast`) rejects other focus
|
|
214
|
+
ring widths, offsets and halo strengths in library source and on imported
|
|
215
|
+
consumer controls. The contrast contract keeps `--ring` and `--sidebar-ring`
|
|
216
|
+
at 3:1 and checks `--input` against a 1.3:1 visibility floor on background,
|
|
217
|
+
card, popover, muted, accent and secondary surfaces.
|
|
218
|
+
- **Visual: one recipe per state family.** Each family that had several local
|
|
219
|
+
spellings now has one owner and a design-lint rule that cannot acquire
|
|
220
|
+
migration debt.
|
|
221
|
+
- Rows (navigation, lists, trees, results, menus) hover and select with
|
|
222
|
+
`--accent`, and the current location adds medium weight, so a hover never
|
|
223
|
+
reads as current. Ghost and outline buttons hover with the same fill and its
|
|
224
|
+
`--accent-foreground`; a component's own hover colour still wins.
|
|
225
|
+
- Toggles hover with `--muted` and press with `--accent`. Tables keep a
|
|
226
|
+
quieter `muted` ladder for stripes, hover and selection. Segmented tracks
|
|
227
|
+
lift the active segment to `--card`.
|
|
228
|
+
- Text never takes opacity: faded secondary text, which fell under 4.5:1, uses
|
|
229
|
+
the typography roles.
|
|
230
|
+
- Dividers are `--border` at full strength on surface edges and at 60% between
|
|
231
|
+
rows.
|
|
232
|
+
- Disabled content dims once, to 50%.
|
|
233
|
+
- Status and emphasis tints use one scale per tone
|
|
234
|
+
(`src/lib/tone-recipes.ts`): a wash for large surfaces, a tint for chips,
|
|
235
|
+
badges and icon tiles, and an edge, halo and line strength. The contrast
|
|
236
|
+
contract tests each tone's ink on its tint. Badges, alerts, avatars, icon
|
|
237
|
+
tiles, activity, search, calendar, timeline, commerce and AI blocks share
|
|
238
|
+
it. Search matches and edit diffs use one inline mark, and the heatmap and
|
|
239
|
+
distribution ruler keep their data ramps.
|
|
240
|
+
- Colour, border and shadow state changes keep the default 150ms transition.
|
|
241
|
+
- Corners derive from `--radius`: the fixed 4px `rounded` and the t-shirt
|
|
242
|
+
steps in raw UI, skeletons and chips are gone.
|
|
243
|
+
- Stacking uses one scale: raised, sticky, sticky over sticky, chrome and
|
|
244
|
+
overlay.
|
|
245
|
+
- SectionNav links gain the shared focus indicator, borderless Item rows draw
|
|
246
|
+
the focus edge inset, and the column-resize handle marks focus in the ring
|
|
247
|
+
colour.
|
|
248
|
+
- Neutral fills use one strength per role: a wash for quiet regions, a band
|
|
249
|
+
for header, toolbar and footer strips, a solid track, a neutral chip and
|
|
250
|
+
neutral markers. Twenty strengths become five. Table heads, toolbars, empty
|
|
251
|
+
states, AI panels, auth and workspace regions, tab tracks, meters and
|
|
252
|
+
carousel dots share them.
|
|
253
|
+
- Elevation uses one theme shadow per role: resting, card, raised, lifted and
|
|
254
|
+
modal. The command palette's 2xl shadow, two custom table-frame shadows
|
|
255
|
+
(which glowed in dark mode) and a shadow colour override are gone.
|
|
256
|
+
- Keyboard-shortcut hints in the header search trigger and the global search
|
|
257
|
+
footer share one key-cap style.
|
|
258
|
+
- Floating chips over media, lifted panels over the auth art and the chat
|
|
259
|
+
composer band are opaque.
|
|
260
|
+
- A drift census budgets each family's vocabulary in `check:design-lint`, and
|
|
261
|
+
a rendered role-parity browser check measures hover, current, disabled and
|
|
262
|
+
focus in light and dark.
|
|
263
|
+
- Rich-text toolbar toggles announce their state. Built-in format buttons and
|
|
264
|
+
the source view expose `aria-pressed`; undo and redo do not.
|
|
265
|
+
`ToolbarButtonConfig` and `RichTextEditorToolbarItem` gain an optional
|
|
266
|
+
`toggle` flag; an extra toolbar item with `isActive` is a toggle unless it
|
|
267
|
+
sets `toggle: false`.
|
|
268
|
+
- Item titles that cannot fit end in an ellipsis on their text. The title row is
|
|
269
|
+
a flex container, where `text-overflow` has no effect, so a long token was
|
|
270
|
+
clipped mid-glyph instead: an applied coupon `SPRING2026` read as `SPRING202`.
|
|
271
|
+
Truncating titles in citations, vendor profiles, gift cards and attachments
|
|
272
|
+
benefit too. The applied coupon also carries its full code as a `title`.
|
|
273
|
+
- **Overlays draw one rule per region boundary.** ActionDialog, ActionDrawer
|
|
274
|
+
and ConfirmDialog separate header, body and footer with a rule, and a dialog
|
|
275
|
+
without a body shows a single rule.
|
|
276
|
+
- **Rich text images.** RichTextEditor and RichText support images through
|
|
277
|
+
`useRichTextImages`: the consumer owns `upload(file, { signal })`; the library
|
|
278
|
+
owns toolbar, paste and drop insertion, the upload placeholder, cancel, retry
|
|
279
|
+
and remove, type and size limits, alt text and the http/https/blob/relative
|
|
280
|
+
source policy. `renderImage` draws read-only images with the consumer's
|
|
281
|
+
component.
|
|
282
|
+
- **RichTextEditor runs Tiptap.** Its runtime check required `EditorContent`
|
|
283
|
+
to be a function, but Tiptap 3 exports it as `React.memo`, so every editor
|
|
284
|
+
(rich text, comment, activity and email composers) silently rendered the
|
|
285
|
+
contenteditable fallback with formatting disabled. Picking a mention in Tiptap
|
|
286
|
+
now replaces its `@query` instead of appending after it, and the editor chip
|
|
287
|
+
keeps the `.rsc-mention` hook, so mention-chip.css draws it in both engines.
|
|
288
|
+
- **Mentions insert as atomic badge chips** removed by one Backspace. The
|
|
289
|
+
suggestion list and picker are more compact, and kind filters use the shared
|
|
290
|
+
toggle style.
|
|
291
|
+
- **Global search** builds its field on the public `InputGroup` and lays out
|
|
292
|
+
results, group headings and the footer with the compact Command recipe.
|
|
293
|
+
- **Activities open compact.** Rich rows show the headline and description;
|
|
294
|
+
metadata, changes, details, resource chips and inline actions appear together
|
|
295
|
+
behind "Show details".
|
|
296
|
+
- **Comments** no longer leave an empty band under each comment's action row.
|
|
297
|
+
- **Choice inputs centre on the label line.** Checkbox, radio, switch and
|
|
298
|
+
selected-card checks share one label-line track (questionnaire,
|
|
299
|
+
ApiTokenManager, card groups).
|
|
300
|
+
- **One plain X clears fields.** Input, Textarea, Cascader, Combobox and global
|
|
301
|
+
search clear actions, and TagsInput and Combobox chip removes, draw a plain X
|
|
302
|
+
instead of a circled X.
|
|
303
|
+
- **Cascader** draws Input's field frame and the shared Combobox affordance
|
|
304
|
+
track; its clear sits beside a chevron aligned with Select's.
|
|
305
|
+
- **Visual: Badge `sm` and `md` are 2px taller** (20px and 23px) at the same
|
|
306
|
+
type size; inline badges are unchanged, and TagsInput chips follow.
|
|
307
|
+
- **NavigationTabs** keeps the current tab lifted under hover and press;
|
|
308
|
+
inactive tabs change colour only.
|
|
309
|
+
- **SignaturePad** draws, exports and previews typed names in the pad's font
|
|
310
|
+
(theme sans by default) instead of `cursive`, and fits long names by font
|
|
311
|
+
size; `signaturePadToSVG` accepts an optional `fontFamily`.
|
|
312
|
+
- **Fixes:** Dropzone centres both copy lines; IconBadge sizes child glyphs with
|
|
313
|
+
its icon role (SmartAccordion medallions render at 16px); Alert's icon and
|
|
314
|
+
action columns use Toast's 8px gap; content typography fits images to the
|
|
315
|
+
column.
|
|
316
|
+
- **Catalogue:** the deprecated Sheet page, the products main-column, actions
|
|
317
|
+
and support-rail pages and the sync page are retired; their URLs redirect to
|
|
318
|
+
the overlays, product overview and SchemaForm pages.
|
|
319
|
+
- **BatchActionBar** (`themelia-react-ui/base/batch-action-bar`): one selection
|
|
320
|
+
bar with a count, bulk actions and Clear, `floating` (docked, lifted, opaque)
|
|
321
|
+
or `inline`. The count is a polite live region, Escape inside the bar clears,
|
|
322
|
+
and focus returns to the list (or `returnFocusRef`) when the bar goes away.
|
|
323
|
+
DataTable, product variants and MediaLibrary's new `bulkActions` use it; the
|
|
324
|
+
old sticky selection toolbar and its overlap with the sticky topbar are gone.
|
|
325
|
+
- **Order blocks** in `blocks/commerce`: `OrderHeader` (payment and fulfilment
|
|
326
|
+
status axes), `FulfillmentGroup`, `OrderLineItem`, `OrderSummary`,
|
|
327
|
+
`OrderTransactions` and `OrderCustomer`, with an Orders catalogue group and an
|
|
328
|
+
Order detail composition. The shared money ledger `SummaryPanel` and
|
|
329
|
+
`AmountRow` now draw CartSummaryCard, TaxBreakdownCard, DiscountStackPreview,
|
|
330
|
+
InvoiceHeader and OrderSummary: no tinted box, one rule above a grand total.
|
|
331
|
+
- **Commerce blocks follow the source kit.** ShipmentTracking has a copyable
|
|
332
|
+
tracking number (`onCopyTracking`) and a timestamped checkpoint rail whose
|
|
333
|
+
current step is `aria-current="step"`; RefundStatusCard is an ordered list of
|
|
334
|
+
stages; PaymentMethod gains `variant="row"` and speaks `strings.formatCard`
|
|
335
|
+
("Visa ending 4242"); CartSummaryCard falls back to initials on a failed image
|
|
336
|
+
and adds `strings.formatQuantity`; DiscountStackPreview takes an optional
|
|
337
|
+
`kind` and `id`. Blocks pass native attributes to their root. `CartSummary`,
|
|
338
|
+
`DiscountStack`, `RefundStatus` and `PaymentMethodCard` are added as the source
|
|
339
|
+
kit's names for the same components. `Timeline` items expose `data-status` and
|
|
340
|
+
mark the current item `aria-current="step"`.
|
|
341
|
+
- **MetadataList** labels wrap in every layout and stay semibold; inline
|
|
342
|
+
`itemSeparator` is a middle dot hidden from screen readers; `render` output
|
|
343
|
+
takes the value style; the info trigger no longer grows its line; `icon` takes
|
|
344
|
+
any `ComponentType<{ className?: string }>`.
|
|
345
|
+
- **TagsInput fixes.** Multi-tag paste commits every tag, `sortTags` removes the
|
|
346
|
+
right tag, object tags are created from an empty value, a refused entry no
|
|
347
|
+
longer traps Tab, IME composition no longer commits, a typed delimiter splits,
|
|
348
|
+
single-token paste is native, and focus moves to the neighbouring chip after a
|
|
349
|
+
removal. Refused entries stay in the draft and are announced
|
|
350
|
+
(`strings.notAdded`). New `defaultValue`, `name` (hidden `name[]` inputs) and
|
|
351
|
+
ARIA pass-through; `TagsInputStrings` and `defaultTagsInputStrings` are
|
|
352
|
+
exported.
|
|
353
|
+
|
|
354
|
+
## 2.0.0 — 2026-10-16
|
|
355
|
+
|
|
356
|
+
A major release. Untouched defaults now give a screen one deliberate primary
|
|
357
|
+
command, neutral surfaces where colour only states status, and the overlay
|
|
358
|
+
family for every dialog-like surface. Public exports and props are retained (the
|
|
359
|
+
contract check keeps every public symbol); what changes is defaults, appearance,
|
|
360
|
+
a few DOM hooks and some semantics.
|
|
361
|
+
|
|
362
|
+
### Upgrading from 1.x
|
|
363
|
+
|
|
364
|
+
- **Buttons.** An untoned `Button` is the neutral outline. Give each screen's
|
|
365
|
+
main command `tone="primary"`, run
|
|
366
|
+
`docs/consumer-skill/scripts/pin-button-defaults.mjs` (dry run by default,
|
|
367
|
+
`--write` to apply) to keep existing screens' look, or restore the old default
|
|
368
|
+
app-wide with `UIProvider` `button: { defaultTone: 'primary',
|
|
369
|
+
defaultButtonStyle: 'solid' }`.
|
|
370
|
+
- **Brand colour.** The default primary is near-black. Import
|
|
371
|
+
`themelia-react-ui/themes/green.css` after `style.css` to keep the green brand.
|
|
372
|
+
- **Badges.** An untoned `Badge` is neutral; `UIProvider`
|
|
373
|
+
`badge.defaultTone: 'primary'` restores the old default.
|
|
374
|
+
- **Page titles** are the route's `h1` at 20px; pass `headingTag="h2"` for a page
|
|
375
|
+
nested inside another titled page.
|
|
376
|
+
- **Overlays.** Replace the deprecated base `Sheet` exports with `ActionDrawer`
|
|
377
|
+
from `features/overlays`. `ConfirmDialog` shows its tone icon only with
|
|
378
|
+
`showIcon`. Scrims no longer blur, and dialog regions draw no header or footer
|
|
379
|
+
rules.
|
|
380
|
+
- **Formatted text.** Negative numbers print with a true minus (U+2212) instead
|
|
381
|
+
of a hyphen; update tests, snapshots or parsers that match formatted output.
|
|
382
|
+
- **Decorative icons and dividers** are gone from the library's own blocks,
|
|
383
|
+
features and templates. Public `icon`/media props and Card `headerDivider`/
|
|
384
|
+
`footerDivider` remain for products that need them; `adminStarterUIDefaults`
|
|
385
|
+
no longer turns card dividers on.
|
|
386
|
+
- **DOM hooks.** `InventorySectionCard` exposes card hooks instead of
|
|
387
|
+
`content-block--*`, and `seo-listing-card--score-icon` is removed.
|
|
388
|
+
|
|
389
|
+
### Changes
|
|
390
|
+
|
|
391
|
+
- **Breaking (visual): overlays have no blur and no static rules, and they are
|
|
392
|
+
the only dialog API.** The modal scrim is a plain `--overlay-backdrop` tint.
|
|
393
|
+
Dialog, alert-dialog and drawer regions draw no header/footer rules or tinted
|
|
394
|
+
footer: the shell owns a 20px outer inset and 16px between regions, and a
|
|
395
|
+
scrolling body shows a rule only on an edge that hides content. Surfaces use
|
|
396
|
+
one border on `bg-popover`; drawers draw one rule on their open edge. The
|
|
397
|
+
close button is centred on the first title line and comes last in the DOM, so
|
|
398
|
+
opening focuses the first field or action. `ConfirmDialog` matches
|
|
399
|
+
`ActionDialog` widths, supports `surfaceStyle` and shows no tone icon unless
|
|
400
|
+
`showIcon`; emphasis no longer tints the border; a non-modal `ActionDrawer`
|
|
401
|
+
stays open on page presses; `initialFocusRef` accepts nullable React 19 refs;
|
|
402
|
+
a string `trigger` renders a Button. The base `Sheet` exports are deprecated
|
|
403
|
+
in favour of `ActionDrawer`. DataTable's in-place `fullscreen` mode stays the
|
|
404
|
+
one modal surface outside the overlays: the table's own region is maximised,
|
|
405
|
+
so its scroll position, focus and column state survive, and the contract
|
|
406
|
+
check (`modal-owner`) rejects any other hand-built modal or borrowed
|
|
407
|
+
Dialog/Sheet in library source. The consumer skill (house rule 9 and a dialogs
|
|
408
|
+
section) and the checker (`raw-overlay-primitive` for `role="dialog"`,
|
|
409
|
+
`aria-modal`, `fixed inset-0` layers and modal libraries; `deprecated-owner`
|
|
410
|
+
from the public index) enforce the overlay owners. Nothing in the library uses
|
|
411
|
+
`backdrop-filter` any more: sticky table headers and toolbars, the form
|
|
412
|
+
actions bar, carousel controls and upload overlays are opaque.
|
|
413
|
+
- **Inline values follow running text.** Inside `Text`, `Heading`, `Label`,
|
|
414
|
+
`TextLink`, `ItemTitle`/`ItemDescription` and `CardDescription`, value
|
|
415
|
+
primitives (`Value`, `MonoValue`, `Money`, `Number`, `Percent`, `Duration`,
|
|
416
|
+
`FileSize`, `Dimensions`, dates, links) take the sentence's size, colour,
|
|
417
|
+
weight and leading unless a prop says otherwise; standalone use is unchanged.
|
|
418
|
+
`Initials` inherits by default. Text `type`/`weight`/`lineHeight` accept
|
|
419
|
+
`'inherit'`. Empty values share the `EmptyValue` treatment.
|
|
420
|
+
- Negative numbers print with a true minus (U+2212) in every formatter and
|
|
421
|
+
number primitive (`formatWithMinusSign` in `lib/format`).
|
|
422
|
+
- Form controls share one geometry and state contract: every field and
|
|
423
|
+
field-shaped trigger is the same height, radius, `--input` border, text size
|
|
424
|
+
(16px on touch) and 2px focus ring; a keyboard-focused invalid field shows a
|
|
425
|
+
full-strength destructive ring; select-like chevrons share
|
|
426
|
+
`selectToggleRecipes` (16px glyph centred where the Select draws it);
|
|
427
|
+
Textarea's first line aligns with an Input's text; field triggers no longer
|
|
428
|
+
take a button hover fill; disabled inputs lose the read-only fill. Checkbox
|
|
429
|
+
shows a dash when indeterminate; choice cards mark selection with the border
|
|
430
|
+
only; pill radios get roving arrow-key focus; DecimalInput steps with arrow
|
|
431
|
+
keys and keeps uncontrolled values; DatePicker gains `id`/`invalid` and no
|
|
432
|
+
longer reddens its label; DateTimeInput passes `stepMinutes` correctly;
|
|
433
|
+
Cascader gets an inline clear; Combobox Escape on a closed field keeps the
|
|
434
|
+
value and reaches the surrounding overlay. A Combobox reserves its whole
|
|
435
|
+
toggle (and clear) target plus the copy gap, so a long value never runs under
|
|
436
|
+
a target at any density. A one-line text button is exactly its action height
|
|
437
|
+
at every spacing and density (its block inset is capped); wrapped labels
|
|
438
|
+
still grow the button.
|
|
439
|
+
- Display and navigation: Badge follows its parent's alignment (no
|
|
440
|
+
`self-center`); flat/`padding="none"` Cards use the 16px header-to-body gap;
|
|
441
|
+
the default outline button border is visible in dark; `TextButton` md is
|
|
442
|
+
`text-sm`; ButtonGroup seams and corners are fixed; untoned ActionButtons are
|
|
443
|
+
neutral; menu group captions use the xs secondary role; OverflowTabBar gets
|
|
444
|
+
arrow/Home/End keys and the shared 36px recipe; active tabs read above the
|
|
445
|
+
track in dark; pagination links are 36px squares; accordion focus is inset
|
|
446
|
+
with no open tint; toaster status icons reach 5:1; code diffs use tints;
|
|
447
|
+
StackedAvatars fallbacks are neutral; tables render rules without preflight
|
|
448
|
+
and are a tab stop only while they overflow. `PageHeading` `withSeparator`
|
|
449
|
+
defaults to `false`.
|
|
450
|
+
- Typography: Heading `tracking-tight` from xl and `leading-tight` from 2xl;
|
|
451
|
+
link focus rings hug the text and follow wrapped lines; text, headings and
|
|
452
|
+
money align with logical start/end so they mirror in RTL.
|
|
453
|
+
- Scoped density: arbitrary values no longer read derived `--spacing-*` aliases
|
|
454
|
+
(resolved once on `:root`), so tracks, insets and offsets follow a
|
|
455
|
+
`data-density` scope.
|
|
456
|
+
|
|
457
|
+
- **Breaking (visual): visual restraint pass.** Icons now carry information
|
|
458
|
+
or are omitted, colour only states status, and spacing, not rules, separates
|
|
459
|
+
sections. Public `icon`/media props remain for consumers; the library's own
|
|
460
|
+
compositions stop passing decorative ones.
|
|
461
|
+
- Rows: a plain `Item` (default variant, no inline padding) in an `ItemGroup`
|
|
462
|
+
sits flush with the group's top and bottom edges, plain rows touch so their
|
|
463
|
+
density padding is the row spacing, and the default variant drops its
|
|
464
|
+
transparent 1px border so row text aligns with headings and labels above
|
|
465
|
+
it. Boxed `outline`/`muted` rows keep their gap. This fixes uneven space
|
|
466
|
+
around dividers and at card bottoms (8px above a rule against 17px below
|
|
467
|
+
it, 30px at a card's bottom against 20px at its top on the order page).
|
|
468
|
+
- Blocks and features no longer hard-code decorative icons on card titles
|
|
469
|
+
(address, payment method, order/refund status, tax breakdown, subscription,
|
|
470
|
+
voucher, coupon, cart, inventory, SEO listing, every product section, sensitive
|
|
471
|
+
actions, AI confirmation/tool call/package info/citation), on metadata and
|
|
472
|
+
list rows, inside inputs and badges, or on ordinary text buttons. Kept:
|
|
473
|
+
icon-only buttons, menu and navigation icons, affordances, search glyphs,
|
|
474
|
+
`+` on add commands, state glyphs, event-type markers and real media.
|
|
475
|
+
- Colour states status: kinds, categories and counts are neutral; live and
|
|
476
|
+
in-progress states use `info` instead of the near-black primary;
|
|
477
|
+
`LoyaltyPoints` `tierTone` defaults to `neutral` (was `warning`); activity
|
|
478
|
+
events without a status tone are neutral; product rows render
|
|
479
|
+
`tone="primary"` neutral; micro-grid single-series charts use `--chart-1`.
|
|
480
|
+
- No boxes inside cards and no section rules: tinted or bordered inset panels,
|
|
481
|
+
stat tiles and per-section dividers are gone across commerce, data-display,
|
|
482
|
+
AI, admin, product, activity, resource-assignment, schema-form, sync and
|
|
483
|
+
media-library compositions. One rule stays above financial grand totals.
|
|
484
|
+
Status chips sit beside their title (`titleSuffix`).
|
|
485
|
+
- Amounts and dates use the UI font with tabular figures; monospace stays for
|
|
486
|
+
identifiers and codes.
|
|
487
|
+
- Sentence-case default strings across commerce, admin, AI and dense-info
|
|
488
|
+
blocks (for example `Refund status`, `Tax breakdown`, `Redeem points`,
|
|
489
|
+
`View details`, `Edit role`, `Next step`). `DenseInfoStrings` gains an
|
|
490
|
+
optional `priority`.
|
|
491
|
+
- `ActivityLog` shows a category chip only when an entry passes `label` (it no
|
|
492
|
+
longer falls back to the raw `kind`), and date groups read `Yesterday` and
|
|
493
|
+
`October 14, 2026` instead of uppercase eyebrows with ordinals.
|
|
494
|
+
- `DateCell` and `DateMetaCell` `showIcon` default to `false`;
|
|
495
|
+
`GlobalSearchIdleState` headings have no default icons; `PageHeader` has no
|
|
496
|
+
separator after the back button; `AppSidebar` groups are separated by space
|
|
497
|
+
instead of rules; navigation count badges stay neutral when active.
|
|
498
|
+
- `OrderStatus` drops the facts that repeated its badge and timeline;
|
|
499
|
+
`LoyaltyPoints` shows Redeem only with `onRedeem`; vouchers show a balance
|
|
500
|
+
only when one is given; `InventorySectionCard` renders through `Card`, so its
|
|
501
|
+
`content-block--*` hooks become card hooks, and `seo-listing-card--score-icon`
|
|
502
|
+
is removed.
|
|
503
|
+
- Base fixes: `ActionMenu`'s icon-only trigger follows `buttonProps.size`;
|
|
504
|
+
Card `contentTop`/`contentBottom` share the content gap (`lg`, or
|
|
505
|
+
`contentGap`) instead of touching the body.
|
|
506
|
+
- Templates: `adminStarterUIDefaults` no longer turns on card header/footer
|
|
507
|
+
dividers; facts, line items, KPIs and commands lose decorative icons;
|
|
508
|
+
count/kind badges, repeated identity rows and repeated facts are removed.
|
|
509
|
+
- Guidance: house rule 7 and the Card anatomy reference cover decorative
|
|
510
|
+
icons and dividers; the composition checker warns (`decorative-icon`) on a
|
|
511
|
+
Card title icon or an icon on more than one MetadataList fact; AGENTS.md
|
|
512
|
+
records the visual restraint rules.
|
|
513
|
+
|
|
514
|
+
- **Breaking (visual): an untoned Button is now the neutral outline**
|
|
515
|
+
(`tone="secondary"`, `buttonStyle="outline"`), so a screen gets one deliberate
|
|
516
|
+
primary instead of a primary on every button. Give the main command
|
|
517
|
+
`tone="primary"`. A Button with a `tone` and no `buttonStyle` is now always
|
|
518
|
+
solid: `UIProvider` `button.defaultButtonStyle` applies only to buttons without
|
|
519
|
+
a tone. Run `docs/consumer-skill/scripts/pin-button-defaults.mjs` (dry run by
|
|
520
|
+
default, `--write` to apply, `--solid-only` to let untoned outline and ghost
|
|
521
|
+
buttons turn neutral) to keep existing screens' look, or restore the previous
|
|
522
|
+
default app-wide with `button: { defaultTone: 'primary', defaultButtonStyle:
|
|
523
|
+
'solid' }`. The library's own components keep their primary commands
|
|
524
|
+
explicitly; their untoned outline and ghost buttons (cascader, signature pad,
|
|
525
|
+
questionnaire navigation) are now neutral instead of brand-colored, and
|
|
526
|
+
`SubmitStateButton` keeps the primary role for submit.
|
|
527
|
+
- Add a 32px `3xl` structural gap step (`gap-space-3xl`, `gap-x-space-3xl`,
|
|
528
|
+
`gap-y-space-3xl`; `--spacing-space-3xl` scales with `--space-scale`) for page
|
|
529
|
+
rhythm. Page now separates its header from its body with `3xl` (was 24px), and
|
|
530
|
+
Stack/Grid/Section accept `gap="3xl"` between major sections. The utility
|
|
531
|
+
budget grows from 393 to 396 spellings for this one shared responsibility.
|
|
532
|
+
- **Breaking (visual): the default primary is neutral.** `--primary` is
|
|
533
|
+
near-black in light (`oklch(0.205 0 0)`) and near-white in dark, so the brand
|
|
534
|
+
no longer sits next to the success green (they were ΔE_OK 0.074 apart). The
|
|
535
|
+
previous green is the opt-in brand theme `themelia-react-ui/themes/green.css`:
|
|
536
|
+
import it after `style.css` to keep the old look. It sets primary, its
|
|
537
|
+
foreground, the dark primary accent and the first chart series, and passes
|
|
538
|
+
the same contrast contract. `--primary-accent` now follows `--primary` in
|
|
539
|
+
dark too.
|
|
540
|
+
- Form-control boundaries reach 3:1 contrast (WCAG 1.4.11): `--input` is
|
|
541
|
+
`oklch(0.62 0 0)` in light (was the divider color, 1.26:1) and white at 40% in
|
|
542
|
+
dark (was 15%), so inputs, selects, checkboxes, radios and switch tracks are
|
|
543
|
+
visible on every surface. `--border` stays the lighter divider color. The
|
|
544
|
+
contrast contract now checks `--input` at 3:1 on background, card, popover,
|
|
545
|
+
muted, accent and secondary surfaces. The repeater's empty placeholder uses
|
|
546
|
+
the divider border.
|
|
547
|
+
- Button labels wrap inside the available width instead of overflowing: the
|
|
548
|
+
action height is now a minimum for text buttons (icon-only buttons stay fixed
|
|
549
|
+
squares), and buttons cap at their container's width. Pass `truncate` to keep
|
|
550
|
+
one line with an ellipsis where a button cannot grow, such as a joined group
|
|
551
|
+
or dense toolbar. Components that size a button themselves (`h-auto`,
|
|
552
|
+
`h-full`) now also reset the minimum height, and the header search trigger
|
|
553
|
+
uses `size="sm"` instead of a height override.
|
|
554
|
+
- Add role-based page commands to PageHeader and `Page header`:
|
|
555
|
+
`primaryAction` (one solid primary command, trailing and always visible) and
|
|
556
|
+
ordered `secondaryActions` (two outline buttons, then a More actions menu).
|
|
557
|
+
Destructive secondary commands always move into that menu; below `sm` every
|
|
558
|
+
secondary command collapses into it through CSS. Commands carry no tone or
|
|
559
|
+
button style. `moreActionsLabel` names the menu; the new `PageHeaderAction`
|
|
560
|
+
type is exported from `layout/page` and `layout`. Existing `actions` and
|
|
561
|
+
`slots.actions` are unchanged: `actions` renders before the commands, and
|
|
562
|
+
`slots.actions` still replaces the whole region.
|
|
563
|
+
- Move the admin templates, consumer recipes and Page catalogue examples to the
|
|
564
|
+
role-based commands. Header buttons now share one size, and the stacked shell
|
|
565
|
+
recipe no longer repeats the page's Create record command in its navigation.
|
|
566
|
+
- The optional consumer checker warns (`page-command-roles`) when Page or
|
|
567
|
+
PageHeader `actions` hold command buttons, pointing to `primaryAction` and
|
|
568
|
+
`secondaryActions`. The analytics template's period filter is now a labelled
|
|
569
|
+
Select instead of a toggle button.
|
|
570
|
+
- Nested `UIProvider`s no longer throw. A nested provider inherits the nearest
|
|
571
|
+
provider's resolved defaults and overrides only the keys it sets, so
|
|
572
|
+
`AdminUIThemeProvider` works inside an application's root provider.
|
|
573
|
+
- Metric surfaces format currency, numbers and percentages with the same
|
|
574
|
+
formatter and UIProvider policy as `Money` (locale, default currency and
|
|
575
|
+
`formatMode`). A currency metric without a currency now uses the provider
|
|
576
|
+
default (`USD` by default) instead of EUR, and prints like Money
|
|
577
|
+
(`1,840.00 USD` by default) instead of `USD 1,840.00`. `formatMetricValue`
|
|
578
|
+
accepts optional `FormatMetricValueOptions`.
|
|
579
|
+
- Add `useMoneyFormatter()` to `primitives` for money in strings (labels,
|
|
580
|
+
toasts, activity text) with the Money rules; the templates use it instead of
|
|
581
|
+
hand-built `$x.xx USD` strings, and their tables use the Date primitive.
|
|
582
|
+
- `toTableAction` keeps running actions disabled and hidden actions hidden in
|
|
583
|
+
DataTable rows; `toMenuAction` carries `id`, `visible` and `group`.
|
|
584
|
+
- Themes declare `color-scheme`, so native scrollbars and form controls follow
|
|
585
|
+
dark mode. Light `--primary-accent` now follows `--primary`, so a rebrand
|
|
586
|
+
needs one root.
|
|
587
|
+
- Unit tests resolve the package's own imports from source, so `npm test` no
|
|
588
|
+
longer needs (or silently uses) a previous build.
|
|
589
|
+
- Page titles are the route's `h1` by default (was `h3`) and use the 20px
|
|
590
|
+
`text-xl` role (was 18px), so page and card titles (16px) read as distinct
|
|
591
|
+
levels. Pass `headingTag="h2"` for a page nested inside another titled page.
|
|
592
|
+
- Card and MediaLibrary plain-text titles are exposed as level-2 headings, so
|
|
593
|
+
assistive technology can move between surfaces. Title-suffix badges stay out
|
|
594
|
+
of the heading's name; custom title nodes keep their own semantics.
|
|
595
|
+
- An untoned Badge is now neutral (was primary), so only a deliberate tone
|
|
596
|
+
signals state. Set `UIProvider` `badge.defaultTone: 'primary'` to keep the
|
|
597
|
+
previous look. The Default address and payment-method badges are neutral too.
|
|
598
|
+
- `useMoneyFormatter(defaults)` binds screen defaults such as `currency` once;
|
|
599
|
+
each call can still override them. `MoneyFormatterOptions` is exported.
|
|
600
|
+
- The consumer skill opens with eight house rules (provider, Page, command
|
|
601
|
+
roles, Stack/Grid, typography and value primitives, semantic color, neutral
|
|
602
|
+
badges, Card slots). The checker adds review warnings for raw palette color
|
|
603
|
+
classes, native `<button>` and `<h1>`–`<h6>` elements, and pages with more
|
|
604
|
+
than one solid primary command. The orders and staff templates now have one
|
|
605
|
+
primary command each.
|
|
606
|
+
- The consumer skill's public index lists each family's deprecated names with
|
|
607
|
+
their replacements (`SmartCard`: "Use Card.", `SmartCardProps`: "Use
|
|
608
|
+
CardProps."), derived from `@deprecated` JSDoc. The finder leaves them out of
|
|
609
|
+
task recommendations and flags them when a query names one.
|
|
610
|
+
- Event calendar markers in narrow day cells keep the compact action height
|
|
611
|
+
(28px), so they meet the WCAG 2.2 24px target size instead of a 12px sliver.
|
|
612
|
+
- Regenerate `package-lock.json`: it pinned lightningcss 1.32.0 where the
|
|
613
|
+
package and Vite require `^1.33.0`, so `npm ci`, and with it CI, failed
|
|
614
|
+
before running any check.
|
|
615
|
+
|
|
616
|
+
## 1.0.3 — 2026-10-15
|
|
617
|
+
|
|
618
|
+
- Document layout-block ownership, horizontal Stack rows, responsive tracks and
|
|
619
|
+
parent adaptation; ship a typed region-composition recipe and route common
|
|
620
|
+
layout queries to the corresponding owners and focused guidance.
|
|
621
|
+
|
|
622
|
+
- Align template peer Card stacks with Page/TwoColumnLayout’s existing `2xl`
|
|
623
|
+
rhythm: 24px in both axes at default scale, including stacked mobile regions.
|
|
624
|
+
|
|
625
|
+
- Let AddressCard, PaymentMethod, SeoListingCard and ProductVariantsManager own
|
|
626
|
+
their framed Card anatomy through existing surface/padding/divider props.
|
|
627
|
+
Preserve unframed defaults and suppress inherited embedded header rules;
|
|
628
|
+
replace redundant template wrappers with one full-width Card boundary.
|
|
629
|
+
- Audit the admin templates: isolate overlay drafts, preserve staff save/discard
|
|
630
|
+
baselines, close mobile navigation, honor shell presets/density and repair
|
|
631
|
+
variant duplication/options persistence. Include templates in design lint and
|
|
632
|
+
installed-package typechecks; correct their documented scope and discovery.
|
|
633
|
+
- Keep long MetadataList row labels from squeezing monetary values out of narrow
|
|
634
|
+
panels, and use the semantic copy-gap recipe for label/value rhythm.
|
|
4
635
|
|
|
5
636
|
- Increase the shared surface-x/y defaults to 1.25rem: ordinary Card insets are
|
|
6
637
|
20px, compact surfaces 10px and large surfaces/page gutters 36px at default
|