themelia-react-ui 2.0.1 → 2.0.2
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 +307 -131
- package/README.md +28 -8
- package/THIRD_PARTY_NOTICES.md +13 -0
- package/dist/{accordion-B6a3vVgA.js → accordion-Cjb6sx0G.js} +14 -13
- package/dist/accordion-Cjb6sx0G.js.map +1 -0
- package/dist/action-menu-CllU52Mm.js +280 -0
- package/dist/action-menu-CllU52Mm.js.map +1 -0
- package/dist/affordance-geometry.generated-tF36bREk.js +140 -0
- package/dist/affordance-geometry.generated-tF36bREk.js.map +1 -0
- package/dist/ai-artifact-DvTwDVyL.js +1148 -0
- package/dist/ai-artifact-DvTwDVyL.js.map +1 -0
- package/dist/{app-shell-ZK5RWdo6.js → app-shell-C4FhvCqF.js} +5 -5
- package/dist/{app-shell-ZK5RWdo6.js.map → app-shell-C4FhvCqF.js.map} +1 -1
- package/dist/attachment-BxDfL2mw.js +246 -0
- package/dist/attachment-BxDfL2mw.js.map +1 -0
- package/dist/{auth-CYxKfo69.js → auth-ax2BqjrI.js} +58 -54
- package/dist/auth-ax2BqjrI.js.map +1 -0
- package/dist/{avatar-BBnEJIx8.js → avatar-DAPlDvhJ.js} +7 -7
- package/dist/avatar-DAPlDvhJ.js.map +1 -0
- package/dist/{badge-MrKVNzW9.js → badge-HpFqoqSY.js} +40 -40
- package/dist/badge-HpFqoqSY.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 +1 -1
- package/dist/base/buttons.js +1 -1
- package/dist/base/cards.js +2 -2
- package/dist/base/carousel.js +40 -36
- package/dist/base/carousel.js.map +1 -1
- package/dist/base/cascader.js +92 -92
- package/dist/base/cascader.js.map +1 -1
- package/dist/base/chart.js +1 -1
- package/dist/base/choice-inputs.js +2 -2
- package/dist/base/code-block.js +1 -1
- package/dist/base/combobox.js +2 -2
- package/dist/base/command.js +1 -1
- package/dist/base/copyable.js +1 -1
- package/dist/base/date-pickers.js +2 -2
- package/dist/base/display.js +6 -6
- package/dist/base/feedback.js +3 -3
- package/dist/base/forms-numeric.js +1 -1
- package/dist/base/forms.js +2 -2
- package/dist/base/inline-edit.js +14 -14
- 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 +1 -1
- package/dist/base/navigation.js +6 -6
- package/dist/base/popover-menu.js +1 -1
- package/dist/base/popover.js +1 -1
- package/dist/base/qr-code.js +1 -1
- package/dist/base/repeaters.js +171 -176
- 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 +6 -6
- package/dist/base/skeleton.js +1 -1
- package/dist/base/spinner.js +79 -2
- package/dist/base/spinner.js.map +1 -0
- 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 +46 -45
- package/dist/base/toaster.js.map +1 -1
- package/dist/base/tree.js +1 -1
- package/dist/base/upload-queue.js +1 -1
- package/dist/base/upload.js +3 -3
- package/dist/base/value-inputs.js +1 -1
- package/dist/{batch-action-bar-BZGDG-Si.js → batch-action-bar-DnUJ21NQ.js} +6 -5
- package/dist/batch-action-bar-DnUJ21NQ.js.map +1 -0
- package/dist/blocks/admin.js +42 -42
- package/dist/blocks/admin.js.map +1 -1
- package/dist/blocks/ai.js +260 -240
- package/dist/blocks/ai.js.map +1 -1
- package/dist/blocks/analytics/usage-card.js +1 -1
- package/dist/blocks/analytics.js +620 -585
- 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 +1152 -1109
- package/dist/blocks/commerce.js.map +1 -1
- package/dist/blocks/data-display.js +2 -2
- package/dist/blocks/onboarding.js +48 -39
- package/dist/blocks/onboarding.js.map +1 -1
- package/dist/blocks/planning.js +13 -12
- package/dist/blocks/planning.js.map +1 -1
- package/dist/blocks/timelines.js +1 -1
- package/dist/{breadcrumbs-D5t7I023.js → breadcrumbs-C-oqs1sQ.js} +5 -5
- package/dist/breadcrumbs-C-oqs1sQ.js.map +1 -0
- package/dist/{button-QYwiyhD2.js → button-DVzspB_G.js} +2 -2
- package/dist/{button-QYwiyhD2.js.map → button-DVzspB_G.js.map} +1 -1
- package/dist/{buttons-SbIcm1HJ.js → buttons-DPZekJFu.js} +20 -15
- package/dist/buttons-DPZekJFu.js.map +1 -0
- package/dist/cards-BaBZR-AU.js +68 -0
- package/dist/cards-BaBZR-AU.js.map +1 -0
- package/dist/{chart-QfrARkXl.js → chart-ZOYyK2xG.js} +58 -55
- package/dist/chart-ZOYyK2xG.js.map +1 -0
- package/dist/{checkbox-DhB6K0bK.js → checkbox-AWIhNhmo.js} +2 -2
- package/dist/{checkbox-DhB6K0bK.js.map → checkbox-AWIhNhmo.js.map} +1 -1
- package/dist/{choice-inputs-t6w3ATNz.js → choice-inputs-CNHvARCJ.js} +49 -45
- package/dist/choice-inputs-CNHvARCJ.js.map +1 -0
- package/dist/{code-block-Dgbu-CU3.js → code-block-DeneBJR_.js} +8 -8
- package/dist/code-block-DeneBJR_.js.map +1 -0
- package/dist/{collapsible-D8AEGU1-.js → collapsible-C-_l4hpy.js} +3 -3
- package/dist/{collapsible-D8AEGU1-.js.map → collapsible-C-_l4hpy.js.map} +1 -1
- package/dist/{collection-content-uK16Grv0.js → collection-content-By56pLog.js} +3 -3
- package/dist/{collection-content-uK16Grv0.js.map → collection-content-By56pLog.js.map} +1 -1
- package/dist/combobox-C0EQW6dr.js +875 -0
- package/dist/combobox-C0EQW6dr.js.map +1 -0
- package/dist/combobox-xCQ2RMNE.js +309 -0
- package/dist/combobox-xCQ2RMNE.js.map +1 -0
- package/dist/{command-kNR20o7x.js → command-C25VMRII.js} +7 -7
- package/dist/{command-kNR20o7x.js.map → command-C25VMRII.js.map} +1 -1
- package/dist/{comments-BpDuCUUu.js → comments-BYYlTA8E.js} +114 -105
- package/dist/comments-BYYlTA8E.js.map +1 -0
- package/dist/components/base/badge/badge.recipes.d.ts +1 -1
- package/dist/components/base/buttons/loader-button.d.ts +2 -1
- package/dist/components/base/cards/card.recipes.d.ts +2 -3
- package/dist/components/base/cards/partials/smart-card-skeleton.d.ts +3 -13
- package/dist/components/base/cards/smart-card.types.d.ts +11 -4
- package/dist/components/base/chart/chart.d.ts +2 -5
- package/dist/components/base/combobox/combobox.strings.d.ts +7 -0
- package/dist/components/base/combobox/index.d.ts +30 -4
- package/dist/components/base/forms/form-sizing.d.ts +11 -3
- package/dist/components/base/navigation/pagination.d.ts +5 -2
- package/dist/components/base/popover/popover.recipes.d.ts +15 -1
- package/dist/components/base/table/index.d.ts +9 -2
- package/dist/components/base/text-inputs/input-group.d.ts +2 -2
- package/dist/components/blocks/ai/ai-shimmer/ai-shimmer.d.ts +1 -1
- package/dist/components/blocks/ai/ai-shimmer/types.d.ts +3 -0
- package/dist/components/blocks/commerce/fulfillment-group/types.d.ts +3 -1
- package/dist/components/blocks/data-display/inline-stat/inline-stat.d.ts +16 -8
- package/dist/components/features/activities/partials/activity-marker.d.ts +6 -3
- package/dist/components/features/appointment-calendar/appointment-calendar.d.ts +5 -0
- package/dist/components/features/appointment-calendar/appointment-calendar.types.d.ts +220 -0
- package/dist/components/features/appointment-calendar/appointment-calendar.utils.d.ts +41 -0
- package/dist/components/features/appointment-calendar/index.d.ts +3 -0
- package/dist/components/features/appointment-calendar/partials/appointment-agenda.d.ts +32 -0
- package/dist/components/features/appointment-calendar/partials/appointment-month.d.ts +13 -0
- package/dist/components/features/combobox/combobox.strings.d.ts +15 -1
- package/dist/components/features/combobox/types.d.ts +4 -0
- package/dist/components/features/media-library/media-library.strings.d.ts +2 -0
- package/dist/components/features/rich-text-editor/index.d.ts +1 -1
- package/dist/components/features/rich-text-editor/rich-text-editor.recipes.d.ts +6 -0
- package/dist/components/features/rich-text-editor/rich-text-editor.types.d.ts +9 -1
- package/dist/components/features/table/table-header.d.ts +1 -1
- package/dist/components/features/table/table.strings.d.ts +55 -1
- package/dist/components/features/table/table.types.d.ts +17 -4
- package/dist/components/features/theme-tweaker/theme-tweaker.types.d.ts +5 -0
- package/dist/components/primitives/number.d.ts +4 -2
- package/dist/components/primitives/value.d.ts +3 -1
- package/dist/components/typography/text-link.d.ts +4 -0
- package/dist/components/ui/combobox.d.ts +6 -2
- package/dist/components/ui/item.d.ts +8 -8
- package/dist/components/ui/tabs.d.ts +1 -1
- package/dist/{containers-DmWiJa2I.js → containers-Mu1LMGV1.js} +2 -2
- package/dist/{containers-DmWiJa2I.js.map → containers-Mu1LMGV1.js.map} +1 -1
- package/dist/{copyable-B3Gwgdqc.js → copyable-ClBuk_UK.js} +4 -4
- package/dist/{copyable-B3Gwgdqc.js.map → copyable-ClBuk_UK.js.map} +1 -1
- package/dist/{data-display-DafIvCl5.js → data-display-DT_khPl_.js} +98 -87
- package/dist/data-display-DT_khPl_.js.map +1 -0
- package/dist/{date-BgK3bTdo.js → date-DCrsDTZc.js} +5 -5
- package/dist/{date-BgK3bTdo.js.map → date-DCrsDTZc.js.map} +1 -1
- package/dist/{date-picker-CF-DtUpF.js → date-picker-ay0Pha_a.js} +594 -593
- package/dist/date-picker-ay0Pha_a.js.map +1 -0
- package/dist/date-pickers-Ccw8DL2b.js +175 -0
- package/dist/date-pickers-Ccw8DL2b.js.map +1 -0
- package/dist/{display-DsQTVzMz.js → display-hAc1HjpI.js} +49 -49
- package/dist/display-hAc1HjpI.js.map +1 -0
- package/dist/dropdown-menu-Cl4X7L5S.js +193 -0
- package/dist/dropdown-menu-Cl4X7L5S.js.map +1 -0
- package/dist/editable-text-recipe-Cn61kEcv.js +10 -0
- package/dist/editable-text-recipe-Cn61kEcv.js.map +1 -0
- package/dist/features/activities.js +398 -375
- package/dist/features/activities.js.map +1 -1
- package/dist/features/ai-chat.js +188 -179
- package/dist/features/ai-chat.js.map +1 -1
- package/dist/features/appointment-calendar.js +683 -0
- package/dist/features/appointment-calendar.js.map +1 -0
- package/dist/features/async-preview.js +109 -107
- 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 +137 -137
- package/dist/features/data-view.js.map +1 -1
- package/dist/features/email-composer.js +255 -255
- package/dist/features/email-composer.js.map +1 -1
- package/dist/features/event-calendar.js +254 -248
- package/dist/features/event-calendar.js.map +1 -1
- package/dist/features/filters.js +1 -1
- package/dist/features/global-search.js +35 -32
- package/dist/features/global-search.js.map +1 -1
- package/dist/features/kanban.js +118 -117
- package/dist/features/kanban.js.map +1 -1
- package/dist/features/map.js +233 -231
- package/dist/features/map.js.map +1 -1
- package/dist/features/media-library.js +789 -775
- 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 +922 -902
- package/dist/features/products.js.map +1 -1
- package/dist/features/questionnaire.js +28 -24
- package/dist/features/questionnaire.js.map +1 -1
- package/dist/features/resource-assignment.js +18 -15
- package/dist/features/resource-assignment.js.map +1 -1
- package/dist/features/resource.js +12 -12
- package/dist/features/resource.js.map +1 -1
- package/dist/features/rich-text-editor.js +2 -2
- package/dist/features/schema-form.js +15 -13
- package/dist/features/schema-form.js.map +1 -1
- package/dist/features/suggestions.js +3 -3
- package/dist/features/sync.js +11 -5
- package/dist/features/sync.js.map +1 -1
- package/dist/features/table.js +1 -1
- package/dist/features/theme-tweaker.js +493 -489
- package/dist/features/theme-tweaker.js.map +1 -1
- package/dist/feedback-BYIhtitP.js +239 -0
- package/dist/feedback-BYIhtitP.js.map +1 -0
- package/dist/{field-affordance-recipes-qQeIf4lG.js → field-affordance-recipes-DZhnIL_Y.js} +11 -18
- package/dist/field-affordance-recipes-DZhnIL_Y.js.map +1 -0
- package/dist/{filters-BkHH53uv.js → filters-BGfvjP4d.js} +589 -580
- package/dist/filters-BGfvjP4d.js.map +1 -0
- package/dist/{form-field-DUt4UxSV.js → form-field-CwH9y77i.js} +6 -5
- package/dist/form-field-CwH9y77i.js.map +1 -0
- package/dist/{form-sizing-By94KzXE.js → form-sizing-BdP_Mf5p.js} +39 -44
- package/dist/form-sizing-BdP_Mf5p.js.map +1 -0
- package/dist/{forms-Bzha-Y3B.js → forms-B9G_xwzi.js} +8 -8
- package/dist/{forms-Bzha-Y3B.js.map → forms-B9G_xwzi.js.map} +1 -1
- package/dist/{forms-numeric-C0bvjRPZ.js → forms-numeric-B_jraJaQ.js} +309 -309
- package/dist/forms-numeric-B_jraJaQ.js.map +1 -0
- package/dist/{header-BOefOKd1.js → header-CGXuhcRm.js} +160 -153
- package/dist/header-CGXuhcRm.js.map +1 -0
- package/dist/{hooks-9k_TtmKh.js → hooks-Dkz0K2WT.js} +2 -2
- package/dist/{hooks-9k_TtmKh.js.map → hooks-Dkz0K2WT.js.map} +1 -1
- package/dist/{icon-badge-CAuKupo9.js → icon-badge-DYKIwvOV.js} +4 -4
- package/dist/{icon-badge-CAuKupo9.js.map → icon-badge-DYKIwvOV.js.map} +1 -1
- package/dist/index.js +3 -3
- package/dist/input-CZw8iU99.js +21 -0
- package/dist/input-CZw8iU99.js.map +1 -0
- package/dist/input-DQdEd0YD.js +263 -0
- package/dist/input-DQdEd0YD.js.map +1 -0
- package/dist/{interaction-recipes-CHr0dJUs.js → interaction-recipes-XR9ZpVYL.js} +2 -1
- package/dist/interaction-recipes-XR9ZpVYL.js.map +1 -0
- package/dist/item-K5_ghvze.js +275 -0
- package/dist/item-K5_ghvze.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 +71 -0
- package/dist/lib/editable-text-recipe.d.ts +4 -4
- package/dist/lib/field-affordance-recipes.d.ts +2 -2
- package/dist/lib/interaction-recipes.d.ts +5 -0
- package/dist/lib/theme-mode-css.d.ts +7 -0
- package/dist/lib/tone-recipes.d.ts +8 -0
- package/dist/lib/ui-provider/types.d.ts +2 -2
- package/dist/lib/utils.js +1 -1
- package/dist/{media-gallery-DcTtAaeC.js → media-gallery-3zIVLMWH.js} +8 -8
- package/dist/media-gallery-3zIVLMWH.js.map +1 -0
- package/dist/{mentions-D-uyCh01.js → mentions-utuUvH1K.js} +144 -142
- package/dist/mentions-utuUvH1K.js.map +1 -0
- package/dist/{message-CdHgIWKf.js → message-DZ_ruyUV.js} +6 -5
- package/dist/message-DZ_ruyUV.js.map +1 -0
- package/dist/{metadata-list-X5rYAKSB.js → metadata-list-8N16ZMW_.js} +130 -119
- package/dist/metadata-list-8N16ZMW_.js.map +1 -0
- package/dist/{navigation-D3KwXmaq.js → navigation-Bnotn4AQ.js} +19 -19
- package/dist/navigation-Bnotn4AQ.js.map +1 -0
- package/dist/{navigation-HJf5zxlH.js → navigation-BzhHI3lo.js} +36 -35
- package/dist/navigation-BzhHI3lo.js.map +1 -0
- package/dist/{navigation-row-recipes-BVowojQw.js → navigation-row-recipes-BFLCk_Aq.js} +2 -2
- package/dist/{navigation-row-recipes-BVowojQw.js.map → navigation-row-recipes-BFLCk_Aq.js.map} +1 -1
- package/dist/{number-DMhe-Vsk.js → number-DbV1Dija.js} +36 -34
- package/dist/{number-DMhe-Vsk.js.map → number-DbV1Dija.js.map} +1 -1
- package/dist/{overflow-tab-bar-sQHXLlwQ.js → overflow-tab-bar-CWY7Nogn.js} +105 -103
- package/dist/overflow-tab-bar-CWY7Nogn.js.map +1 -0
- package/dist/{overlays-I0axtYA6.js → overlays-DNWmZrJ4.js} +14 -12
- package/dist/overlays-DNWmZrJ4.js.map +1 -0
- package/dist/{page-B5dTH9gE.js → page-Bgl1F560.js} +8 -8
- package/dist/{page-B5dTH9gE.js.map → page-Bgl1F560.js.map} +1 -1
- package/dist/{page-header-commands-DjzFEq3E.js → page-header-commands-DOb6WsfD.js} +5 -5
- package/dist/{page-header-commands-DjzFEq3E.js.map → page-header-commands-DOb6WsfD.js.map} +1 -1
- package/dist/pagination-BL25hu2s.js +158 -0
- package/dist/pagination-BL25hu2s.js.map +1 -0
- package/dist/{popover-Di55PyAI.js → popover-7_m66eYW.js} +8 -7
- package/dist/{popover-Di55PyAI.js.map → popover-7_m66eYW.js.map} +1 -1
- package/dist/popover-menu-B9WWygpa.js +100 -0
- package/dist/popover-menu-B9WWygpa.js.map +1 -0
- package/dist/{popover.recipes-Bdyhj2db.js → popover.recipes-D3j8R8Yp.js} +17 -10
- package/dist/popover.recipes-D3j8R8Yp.js.map +1 -0
- package/dist/{primitives-B-CkiEMU.js → primitives-BFK08r9M.js} +45 -44
- package/dist/primitives-BFK08r9M.js.map +1 -0
- package/dist/primitives.js +4 -4
- package/dist/{progress-rnS8-uAW.js → progress-B1VnCT0K.js} +5 -5
- package/dist/{progress-rnS8-uAW.js.map → progress-B1VnCT0K.js.map} +1 -1
- package/dist/{receipt-D0oswZ0p.js → receipt-BVSOH3Xo.js} +9 -6
- package/dist/{receipt-D0oswZ0p.js.map → receipt-BVSOH3Xo.js.map} +1 -1
- package/dist/{rich-text-DvGulsNJ.js → rich-text-GOUyKQ-s.js} +3 -3
- package/dist/{rich-text-DvGulsNJ.js.map → rich-text-GOUyKQ-s.js.map} +1 -1
- package/dist/{rich-text-editor-sMU_Scqm.js → rich-text-editor-cRLC-eBK.js} +418 -426
- package/dist/rich-text-editor-cRLC-eBK.js.map +1 -0
- package/dist/rich-text-editor-toolbar-DfXg0-VC.js +94 -0
- package/dist/rich-text-editor-toolbar-DfXg0-VC.js.map +1 -0
- package/dist/{scroll-area-Bt_vXY2b.js → scroll-area-DcI-M1UT.js} +2 -2
- package/dist/{scroll-area-Bt_vXY2b.js.map → scroll-area-DcI-M1UT.js.map} +1 -1
- package/dist/{separator-C8DlRGwF.js → separator-BDV-Y648.js} +3 -3
- package/dist/{separator-C8DlRGwF.js.map → separator-BDV-Y648.js.map} +1 -1
- package/dist/{separator-CYHnjsAb.js → separator-Bom7NsGO.js} +2 -2
- package/dist/{separator-CYHnjsAb.js.map → separator-Bom7NsGO.js.map} +1 -1
- package/dist/services/actions.js +1 -1
- package/dist/{settings-CQW3b-Cu.js → settings-ybnjVwbd.js} +20 -19
- package/dist/settings-ybnjVwbd.js.map +1 -0
- package/dist/{sheet-4SEvVYzA.js → sheet-CGpB3omz.js} +8 -7
- package/dist/{sheet-4SEvVYzA.js.map → sheet-CGpB3omz.js.map} +1 -1
- package/dist/{sidebar-d7Dg80ln.js → sidebar-A0ElHINE.js} +14 -13
- package/dist/{sidebar-d7Dg80ln.js.map → sidebar-A0ElHINE.js.map} +1 -1
- package/dist/{sidebar-C7WWR29L.js → sidebar-CPx_7YBa.js} +183 -182
- package/dist/sidebar-CPx_7YBa.js.map +1 -0
- package/dist/{skeleton-Cz890JZF.js → skeleton-Byjnt7qr.js} +3 -3
- package/dist/{skeleton-Cz890JZF.js.map → skeleton-Byjnt7qr.js.map} +1 -1
- package/dist/smart-card-DiC5aac3.js +604 -0
- package/dist/smart-card-DiC5aac3.js.map +1 -0
- package/dist/{structure-DC2dygdA.js → structure-BmisBK-3.js} +2 -2
- package/dist/{structure-DC2dygdA.js.map → structure-BmisBK-3.js.map} +1 -1
- package/dist/style.css +1 -1
- package/dist/table-BweFy_P9.js +1530 -0
- package/dist/table-BweFy_P9.js.map +1 -0
- package/dist/{table-CIKyLUsy.js → table-DsfzoUia.js} +75 -63
- package/dist/table-DsfzoUia.js.map +1 -0
- package/dist/{tabs-DwBJfjxX.js → tabs-CDocW5D1.js} +14 -13
- package/dist/tabs-CDocW5D1.js.map +1 -0
- package/dist/text-inputs-f9Ia-aCi.js +353 -0
- package/dist/text-inputs-f9Ia-aCi.js.map +1 -0
- package/dist/theme-mode-css-BB-_RYab.js +14 -0
- package/dist/theme-mode-css-BB-_RYab.js.map +1 -0
- package/dist/theme-scope-BJ6eE2xt.js +50 -0
- package/dist/theme-scope-BJ6eE2xt.js.map +1 -0
- package/dist/theme.css +285 -228
- package/dist/themes/green.css +16 -12
- package/dist/timelines-CwM_9IhD.js +457 -0
- package/dist/timelines-CwM_9IhD.js.map +1 -0
- package/dist/{tone-recipes-CPoExcTE.js → tone-recipes-BPsRAvhu.js} +5 -2
- package/dist/tone-recipes-BPsRAvhu.js.map +1 -0
- package/dist/{tooltip-CsfgrfS7.js → tooltip-yiRJUFjp.js} +4 -4
- package/dist/{tooltip-CsfgrfS7.js.map → tooltip-yiRJUFjp.js.map} +1 -1
- package/dist/{tree-BiKhg8AY.js → tree-WnKQzwbq.js} +9 -9
- package/dist/{tree-BiKhg8AY.js.map → tree-WnKQzwbq.js.map} +1 -1
- package/dist/typography/rich-text.js +1 -1
- package/dist/{typography-DTRkE9zL.js → typography-UTnveOEy.js} +6 -6
- package/dist/typography-UTnveOEy.js.map +1 -0
- package/dist/typography.js +2 -2
- package/dist/{ui-provider-1D_NSYzO.js → ui-provider-C_U0Xma4.js} +3 -3
- package/dist/ui-provider-C_U0Xma4.js.map +1 -0
- package/dist/ui-provider.js +2 -2
- package/dist/{upload-BO8-CLN6.js → upload-CXyxmQBP.js} +13 -12
- package/dist/upload-CXyxmQBP.js.map +1 -0
- package/dist/{upload-queue-EOC8g1gf.js → upload-queue-Boscubn9.js} +11 -9
- package/dist/upload-queue-Boscubn9.js.map +1 -0
- package/dist/{usage-card-obRaBskq.js → usage-card-BhO5eqkX.js} +53 -37
- package/dist/usage-card-BhO5eqkX.js.map +1 -0
- package/dist/{utils-l5LpDw2z.js → utils-BRhFDwuU.js} +59 -44
- package/dist/utils-BRhFDwuU.js.map +1 -0
- package/dist/{value-inputs-TAYMX111.js → value-inputs-DXPDjvBU.js} +268 -252
- package/dist/value-inputs-DXPDjvBU.js.map +1 -0
- package/dist/{value-typography-b8wpz1eX.js → value-typography-BP8OG6h5.js} +2 -2
- package/dist/{value-typography-b8wpz1eX.js.map → value-typography-BP8OG6h5.js.map} +1 -1
- package/dist/{workspace-DH0v0KcB.js → workspace-Cdrg7k9f.js} +34 -33
- package/dist/workspace-Cdrg7k9f.js.map +1 -0
- package/docs/consumer-skill/SKILL.md +2 -2
- package/docs/consumer-skill/references/agents-md.md +1 -1
- package/docs/consumer-skill/references/composition.md +8 -6
- package/docs/consumer-skill/references/integration.md +4 -3
- package/docs/consumer-skill/references/public-api.json +105 -2
- package/docs/consumer-skill/references/review.md +7 -0
- package/docs/consumer-skill/references/theming.md +71 -6
- package/docs/consumer-skill/references/tokens.json +1 -1
- package/docs/consumer-skill/references/workflows.md +25 -0
- package/docs/consumer-skill/scripts/composition-policy.mjs +3 -2
- package/docs/consumer-skill/scripts/surface-policy.mjs +11 -0
- package/package.json +8 -4
- package/dist/accordion-B6a3vVgA.js.map +0 -1
- package/dist/action-menu-TzCoSlwL.js +0 -280
- package/dist/action-menu-TzCoSlwL.js.map +0 -1
- package/dist/affordance-geometry.generated-B5iu-Mkr.js +0 -69
- package/dist/affordance-geometry.generated-B5iu-Mkr.js.map +0 -1
- package/dist/ai-artifact-BMJdv-6q.js +0 -1115
- package/dist/ai-artifact-BMJdv-6q.js.map +0 -1
- package/dist/attachment-BtfhGm8i.js +0 -245
- package/dist/attachment-BtfhGm8i.js.map +0 -1
- package/dist/auth-CYxKfo69.js.map +0 -1
- package/dist/avatar-BBnEJIx8.js.map +0 -1
- package/dist/badge-MrKVNzW9.js.map +0 -1
- package/dist/batch-action-bar-BZGDG-Si.js.map +0 -1
- package/dist/breadcrumbs-D5t7I023.js.map +0 -1
- package/dist/buttons-SbIcm1HJ.js.map +0 -1
- package/dist/cards-CiiHpKYd.js +0 -66
- package/dist/cards-CiiHpKYd.js.map +0 -1
- package/dist/chart-QfrARkXl.js.map +0 -1
- package/dist/choice-inputs-t6w3ATNz.js.map +0 -1
- package/dist/code-block-Dgbu-CU3.js.map +0 -1
- package/dist/combobox-2Ic8N9bL.js +0 -278
- package/dist/combobox-2Ic8N9bL.js.map +0 -1
- package/dist/combobox-DLl0bfiq.js +0 -867
- package/dist/combobox-DLl0bfiq.js.map +0 -1
- package/dist/comments-BpDuCUUu.js.map +0 -1
- package/dist/data-display-DafIvCl5.js.map +0 -1
- package/dist/date-picker-CF-DtUpF.js.map +0 -1
- package/dist/date-pickers-BmzxJl5l.js +0 -174
- package/dist/date-pickers-BmzxJl5l.js.map +0 -1
- package/dist/display-DsQTVzMz.js.map +0 -1
- package/dist/dropdown-menu-E2qmdC7o.js +0 -193
- package/dist/dropdown-menu-E2qmdC7o.js.map +0 -1
- package/dist/editable-text-recipe-Bkm6wKHp.js +0 -10
- package/dist/editable-text-recipe-Bkm6wKHp.js.map +0 -1
- package/dist/feedback-qNuMBtRH.js +0 -233
- package/dist/feedback-qNuMBtRH.js.map +0 -1
- package/dist/field-affordance-recipes-qQeIf4lG.js.map +0 -1
- package/dist/filters-BkHH53uv.js.map +0 -1
- package/dist/form-field-DUt4UxSV.js.map +0 -1
- package/dist/form-sizing-By94KzXE.js.map +0 -1
- package/dist/forms-numeric-C0bvjRPZ.js.map +0 -1
- package/dist/header-BOefOKd1.js.map +0 -1
- package/dist/input-DWhBBBww.js +0 -262
- package/dist/input-DWhBBBww.js.map +0 -1
- package/dist/input-Ddi_LSYv.js +0 -20
- package/dist/input-Ddi_LSYv.js.map +0 -1
- package/dist/interaction-recipes-CHr0dJUs.js.map +0 -1
- package/dist/item-DEmDiTlD.js +0 -265
- package/dist/item-DEmDiTlD.js.map +0 -1
- package/dist/media-gallery-DcTtAaeC.js.map +0 -1
- package/dist/mentions-D-uyCh01.js.map +0 -1
- package/dist/message-CdHgIWKf.js.map +0 -1
- package/dist/metadata-list-X5rYAKSB.js.map +0 -1
- package/dist/navigation-D3KwXmaq.js.map +0 -1
- package/dist/navigation-HJf5zxlH.js.map +0 -1
- package/dist/overflow-tab-bar-sQHXLlwQ.js.map +0 -1
- package/dist/overlays-I0axtYA6.js.map +0 -1
- package/dist/pagination-3bPA_a6K.js +0 -149
- package/dist/pagination-3bPA_a6K.js.map +0 -1
- package/dist/popover-menu-B71Tn2Qz.js +0 -99
- package/dist/popover-menu-B71Tn2Qz.js.map +0 -1
- package/dist/popover.recipes-Bdyhj2db.js.map +0 -1
- package/dist/primitives-B-CkiEMU.js.map +0 -1
- package/dist/rich-text-editor-sMU_Scqm.js.map +0 -1
- package/dist/rich-text-editor.recipes-CadiF_Uu.js +0 -88
- package/dist/rich-text-editor.recipes-CadiF_Uu.js.map +0 -1
- package/dist/settings-CQW3b-Cu.js.map +0 -1
- package/dist/sidebar-C7WWR29L.js.map +0 -1
- package/dist/smart-card-lFKxn5Hu.js +0 -595
- package/dist/smart-card-lFKxn5Hu.js.map +0 -1
- package/dist/spinner-fa3h1Aif.js +0 -80
- package/dist/spinner-fa3h1Aif.js.map +0 -1
- package/dist/table-CIKyLUsy.js.map +0 -1
- package/dist/table-CrcLN9Io.js +0 -1458
- package/dist/table-CrcLN9Io.js.map +0 -1
- package/dist/tabs-DwBJfjxX.js.map +0 -1
- package/dist/text-inputs-aaK9wcDT.js +0 -326
- package/dist/text-inputs-aaK9wcDT.js.map +0 -1
- package/dist/theme-scope-kStaAer0.js +0 -39
- package/dist/theme-scope-kStaAer0.js.map +0 -1
- package/dist/timelines-C_SBwHNP.js +0 -442
- package/dist/timelines-C_SBwHNP.js.map +0 -1
- package/dist/tone-recipes-CPoExcTE.js.map +0 -1
- package/dist/typography-DTRkE9zL.js.map +0 -1
- package/dist/ui-provider-1D_NSYzO.js.map +0 -1
- package/dist/upload-BO8-CLN6.js.map +0 -1
- package/dist/upload-queue-EOC8g1gf.js.map +0 -1
- package/dist/usage-card-obRaBskq.js.map +0 -1
- package/dist/utils-l5LpDw2z.js.map +0 -1
- package/dist/value-inputs-TAYMX111.js.map +0 -1
- package/dist/workspace-DH0v0KcB.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,311 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2.0.2 — 2026-10-21
|
|
4
|
+
|
|
5
|
+
Card dividers on by default, one rule per overlay region boundary, the
|
|
6
|
+
appointment calendar, and the fixes and shared recipes that followed 2.0.1. No
|
|
7
|
+
public export or prop is removed. Base UI is now the patched
|
|
8
|
+
`@base-ui/react@1.8.0-kpo.2` archive (see "Upgrading from 2.0.1"). Additions:
|
|
9
|
+
`align` on ConfirmDialog and ActionDialog with UIProvider overlay defaults;
|
|
10
|
+
`selecting`, `defaultSelecting`, `onSelectingChange`, `onItemOpen` and
|
|
11
|
+
`bulkActions` on MediaLibrary; `useRichTextImages` and `images` on RichTextEditor
|
|
12
|
+
and RichText; `bodyHeight` on RichTextEditor; the
|
|
13
|
+
`themelia-react-ui/base/metadata-list`, `themelia-react-ui/base/batch-action-bar`
|
|
14
|
+
and `themelia-react-ui/features/appointment-calendar` entrypoints; an optional
|
|
15
|
+
`fontFamily` on `signaturePadToSVG`; the order blocks, `SummaryPanel` and
|
|
16
|
+
`AmountRow` in `blocks/commerce`; `valueAlign` on MetadataList; `defaultValue`,
|
|
17
|
+
`name` and ARIA props on TagsInput; `density` on Table; `variant="chips"` on
|
|
18
|
+
TabsList; `valueWeight` on InlineStat and `size` on AiShimmer; screen-reader
|
|
19
|
+
label strings on Combobox, AsyncResourceCombobox, DataTable and MediaLibrary.
|
|
20
|
+
`features/sync`, the standalone product region cards, the `blocks/data-display`
|
|
21
|
+
MetadataList exports and `ActivityRow` `moreLabel` are deprecated.
|
|
22
|
+
|
|
23
|
+
### Audit update — 2026-10-24
|
|
24
|
+
|
|
25
|
+
- Layouts, blocks and features pair painted surfaces with their foregrounds;
|
|
26
|
+
owned primary copy inherits those roles while secondary, status and custom
|
|
27
|
+
content keep their intended colors. Existing sizing, spacing and radius
|
|
28
|
+
defaults remain unchanged.
|
|
29
|
+
- Bordered auth/workspace, metric, media/chat and event frames preserve their
|
|
30
|
+
geometry without a consumer CSS reset. Rich editor controls dim once, and a
|
|
31
|
+
disabled AI prompt suspends staged and custom actions as well as its input.
|
|
32
|
+
- Narrow checklist titles stay beside their status markers. Media detail regions
|
|
33
|
+
retain their content height and scroll in order without overlap. Flat Card
|
|
34
|
+
sections inherit their containing surface; search previews pair canvas ink.
|
|
35
|
+
- Owned field labels follow their containing surface across forms, helper fields,
|
|
36
|
+
repeaters, filters and questionnaires; the public Label defaults are preserved.
|
|
37
|
+
- MetadataList labels and primary values follow their containing surface in all
|
|
38
|
+
layouts; explicit secondary, link, status and custom content retain their roles.
|
|
39
|
+
Product catalogue viewports preserve native keyboard focus clearance.
|
|
40
|
+
- Compact table pagination resolves one size across its anatomy. Muted values
|
|
41
|
+
use the shared secondary role without an extra opacity tier; source and
|
|
42
|
+
consumer composition checks reject faded typography and primitive copy.
|
|
43
|
+
- Generated brand palettes retain the centralized input and focus roles instead
|
|
44
|
+
of replacing their contrast with a weak brand wash.
|
|
45
|
+
- Base composition now consistently follows the foreground of its card or
|
|
46
|
+
popover surface, including owned titles, values, upload copy and chart
|
|
47
|
+
tooltips. Native hosts retain their geometry without a consumer CSS reset.
|
|
48
|
+
- Card keeps full-width pre-title context, omits empty body regions, and reveals
|
|
49
|
+
clipped actions when keyboard focus enters them. CardSkeleton follows the
|
|
50
|
+
provider surface and accepts an optional `surface` override.
|
|
51
|
+
- Pagination resolves one shared size for links, previous/next and ellipsis;
|
|
52
|
+
PaginationEllipsis also accepts an optional `size`. Attachment focus corners
|
|
53
|
+
match their Item shell, and Empty media follows the existing media roots.
|
|
54
|
+
- Nested disabled content dims once; compound field affordances respect pending
|
|
55
|
+
and read-only state, including PhoneInput blur normalization. Carousel
|
|
56
|
+
preserves descendant editing keys, uncontrolled SliderField values stay
|
|
57
|
+
synchronized, and overflow links retain native href and keyboard behavior.
|
|
58
|
+
- Resting control boundaries now meet the shared 3:1 contrast floor, including
|
|
59
|
+
filled fields on supported surfaces. Divider and focus roles remain separate.
|
|
60
|
+
- Nested light/dark state utilities follow the nearest explicit mode boundary.
|
|
61
|
+
ThemeScope rebinds default aliases for explicitly supplied source roots while
|
|
62
|
+
preserving deliberate CSS/inline role overrides. This behavior uses container
|
|
63
|
+
style queries: Chromium 111+, Safari 18.1+ and Firefox 151+.
|
|
64
|
+
- Chart series and scoped theme exports follow the same mode boundary. Scoped
|
|
65
|
+
selector helpers add optional `modeScope` metadata while retaining their
|
|
66
|
+
existing selector strings. Package defaults use the theme cascade layer so
|
|
67
|
+
explicit utility classes can override them on a mode boundary.
|
|
68
|
+
- Enlarged editable typography can grow its shared field frame and reduce spare
|
|
69
|
+
vertical padding. Default control sizes and radius roles remain unchanged.
|
|
70
|
+
- Fullscreen table menus and dialogs retain keyboard ownership; sorted headers
|
|
71
|
+
expose direction/precedence; nested cell controls no longer activate the row.
|
|
72
|
+
Row callbacks also support Enter and Space with visible keyboard focus.
|
|
73
|
+
- Maintainer and packaged consumer guidance now cover surface inheritance at
|
|
74
|
+
owned text/label/value leaves, semantic text roles without extra opacity,
|
|
75
|
+
once-only disabled treatment, and stable post-interaction visual evidence.
|
|
76
|
+
The MetadataList evaluation uses its current base entrypoint.
|
|
77
|
+
|
|
78
|
+
### Upgrading from 2.0.1
|
|
79
|
+
|
|
80
|
+
- **Patched Base UI peer.** The `@base-ui/react` peer is pinned to
|
|
81
|
+
`1.8.0-kpo.2`, a patched build that adds `Combobox.Root.dismissLabel` and keeps
|
|
82
|
+
focus restored inside a parent popup when a nested popup closes. It is not on
|
|
83
|
+
the public registry: install the companion `base-ui-react-1.8.0-kpo.2.tgz`
|
|
84
|
+
beside this package, as the README describes.
|
|
85
|
+
- **MetadataList moved to base.** Import `MetadataList`, its item types and
|
|
86
|
+
default strings from `themelia-react-ui/base/metadata-list`. The
|
|
87
|
+
`themelia-react-ui/blocks/data-display` re-exports keep working and are
|
|
88
|
+
deprecated. Labels render semibold.
|
|
89
|
+
- **MediaLibrary opens before it selects.** Activating an asset (click, Enter,
|
|
90
|
+
Space) calls `onItemOpen` or shows the details panel. Selection is an explicit
|
|
91
|
+
mode: `selecting`, `defaultSelecting` and `onSelectingChange`. Picker dialogs
|
|
92
|
+
start selecting; pass `defaultSelecting` where a library relied on selecting
|
|
93
|
+
by default.
|
|
94
|
+
- **ConfirmDialog is centred.** ConfirmDialog and ActionDialog accept
|
|
95
|
+
`align: 'start' | 'center'`, resolved from the prop, then the UIProvider
|
|
96
|
+
`overlay.defaultConfirmAlign` / `overlay.defaultDialogAlign` defaults, then
|
|
97
|
+
center for ConfirmDialog and start for ActionDialog.
|
|
98
|
+
- **Deprecated: `themelia-react-ui/features/sync`.** `SyncRangeDialogForm` is
|
|
99
|
+
application-specific; use `SchemaForm` with `radio-cards` and
|
|
100
|
+
`checkbox-cards` fields. The entrypoint still ships.
|
|
101
|
+
- **Deprecated: standalone product region cards and row menus.** Render them
|
|
102
|
+
through `ProductOverview` slots and the `renderOptionActions` /
|
|
103
|
+
`renderVariantActions` options. They stay exported.
|
|
104
|
+
- **Deprecated: `ActivityRow` `moreLabel`.** The collapsed metadata preview it
|
|
105
|
+
labelled is gone; secondary detail opens with the details disclosure.
|
|
106
|
+
- **Selection bars are a `BatchActionBar`.** DataTable's default selection
|
|
107
|
+
toolbar now docks to the bottom of the viewport (`floating`); pass
|
|
108
|
+
`selectionToolbarPlacement="inline"` to keep it in the table. Its summary and
|
|
109
|
+
the new `totalRowCount` prop default to `pagination.total`, so server-paginated
|
|
110
|
+
tables count the whole result. Product variant tables show an inline bar only
|
|
111
|
+
while variants are selected; `renderBulkActions` now replaces the default
|
|
112
|
+
commands, as documented (return `null` to keep them), and Delete no longer
|
|
113
|
+
repeats the count.
|
|
114
|
+
- **MetadataList rows.** `layout="rows"` draws rules only with `itemSeparator`,
|
|
115
|
+
and values start their column on `2fr/3fr` tracks. Pass `valueAlign="end"` for
|
|
116
|
+
the previous right-aligned figures, such as money columns.
|
|
117
|
+
- **TagsInput.** Chips sit inside the field, before the text input in Tab order;
|
|
118
|
+
the count and clear-all move to a footer under the field, and the placeholder
|
|
119
|
+
shows only while the field is empty. The input stays enabled at `maxTags`.
|
|
120
|
+
- **Commerce DOM hooks.** RefundStatusCard, CartSummaryCard,
|
|
121
|
+
DiscountStackPreview, TaxBreakdownCard and ShipmentTracking render on `Card`
|
|
122
|
+
and lose the `content-block--*` classes and `data-component="content-block"`;
|
|
123
|
+
their own `--component` classes stay. ShipmentTracking and InvoiceHeader show
|
|
124
|
+
a visible title with the status chip in its suffix.
|
|
125
|
+
- **Shell width utilities.** `shell-sidebar-icon-current` and
|
|
126
|
+
`shell-sidebar-offcanvas-current` read their widths from `shell-sidebar-vars`;
|
|
127
|
+
apply them together on the same element, as the library's shells do.
|
|
128
|
+
- **Card dividers are on by default.** `card.defaultHeaderDivider` and
|
|
129
|
+
`card.defaultFooterDivider` now default to `true`, so framed cards rule their
|
|
130
|
+
header and footer apart. Flat, card-free structure (`surface="flat"`) and a
|
|
131
|
+
`headerPlacement="frame"` header still draw no rule unless asked, and
|
|
132
|
+
explicit per-card booleans still win. For the previous spacing-only look, set
|
|
133
|
+
both provider defaults to `false`, or pass `headerDivider={false}` /
|
|
134
|
+
`footerDivider={false}` on a card.
|
|
135
|
+
|
|
136
|
+
### Changes
|
|
137
|
+
|
|
138
|
+
- **Accessibility strings.** Combobox, AsyncResourceCombobox, DataTable and
|
|
139
|
+
MediaLibrary take strings for their screen-reader-only labels, including both
|
|
140
|
+
Combobox dismissal controls. Closing a nested popup no longer moves focus that
|
|
141
|
+
was already restored inside its parent popup.
|
|
142
|
+
- **Overlays draw one rule per region boundary.** ActionDialog, ActionDrawer
|
|
143
|
+
and ConfirmDialog separate header, body and footer with a rule, and a dialog
|
|
144
|
+
without a body shows a single rule.
|
|
145
|
+
- **Rich text images.** RichTextEditor and RichText support images through
|
|
146
|
+
`useRichTextImages`: the consumer owns `upload(file, { signal })`; the library
|
|
147
|
+
owns toolbar, paste and drop insertion, the upload placeholder, cancel, retry
|
|
148
|
+
and remove, type and size limits, alt text and the http/https/blob/relative
|
|
149
|
+
source policy. `renderImage` draws read-only images with the consumer's
|
|
150
|
+
component.
|
|
151
|
+
- **RichTextEditor runs Tiptap.** Its runtime check required `EditorContent`
|
|
152
|
+
to be a function, but Tiptap 3 exports it as `React.memo`, so every editor
|
|
153
|
+
(rich text, comment, activity and email composers) silently rendered the
|
|
154
|
+
contenteditable fallback with formatting disabled. Picking a mention in Tiptap
|
|
155
|
+
now replaces its `@query` instead of appending after it, and the editor chip
|
|
156
|
+
keeps the `.rsc-mention` hook, so mention-chip.css draws it in both engines.
|
|
157
|
+
- **Mentions insert as atomic badge chips** removed by one Backspace. The
|
|
158
|
+
suggestion list and picker are more compact, and kind filters use the shared
|
|
159
|
+
toggle style.
|
|
160
|
+
- **Global search** builds its field on the public `InputGroup` and lays out
|
|
161
|
+
results, group headings and the footer with the compact Command recipe.
|
|
162
|
+
- **Activities open compact.** Rich rows show the headline and description;
|
|
163
|
+
metadata, changes, details, resource chips and inline actions appear together
|
|
164
|
+
behind "Show details".
|
|
165
|
+
- **Comments** no longer leave an empty band under each comment's action row.
|
|
166
|
+
- **Choice inputs centre on the label line.** Checkbox, radio, switch and
|
|
167
|
+
selected-card checks share one label-line track (questionnaire,
|
|
168
|
+
ApiTokenManager, card groups).
|
|
169
|
+
- **One plain X clears fields.** Input, Textarea, Cascader, Combobox and global
|
|
170
|
+
search clear actions, and TagsInput and Combobox chip removes, draw a plain X
|
|
171
|
+
instead of a circled X.
|
|
172
|
+
- **Cascader** draws Input's field frame and the shared Combobox affordance
|
|
173
|
+
track; its clear sits beside a chevron aligned with Select's.
|
|
174
|
+
- **Visual: Badge `sm` and `md` are 2px taller** (20px and 23px) at the same
|
|
175
|
+
type size; inline badges are unchanged, and TagsInput chips follow.
|
|
176
|
+
- **NavigationTabs** keeps the current tab lifted under hover and press;
|
|
177
|
+
inactive tabs change colour only.
|
|
178
|
+
- **SignaturePad** draws, exports and previews typed names in the pad's font
|
|
179
|
+
(theme sans by default) instead of `cursive`, and fits long names by font
|
|
180
|
+
size; `signaturePadToSVG` accepts an optional `fontFamily`.
|
|
181
|
+
- **Fixes:** Dropzone centres both copy lines; IconBadge sizes child glyphs with
|
|
182
|
+
its icon role (SmartAccordion medallions render at 16px); Alert's icon and
|
|
183
|
+
action columns use Toast's 8px gap; content typography fits images to the
|
|
184
|
+
column.
|
|
185
|
+
- **Catalogue:** the deprecated Sheet page, the products main-column, actions
|
|
186
|
+
and support-rail pages and the sync page are retired; their URLs redirect to
|
|
187
|
+
the overlays, product overview and SchemaForm pages.
|
|
188
|
+
- **BatchActionBar** (`themelia-react-ui/base/batch-action-bar`): one selection
|
|
189
|
+
bar with a count, bulk actions and Clear, `floating` (docked, lifted, opaque)
|
|
190
|
+
or `inline`. The count is a polite live region, Escape inside the bar clears,
|
|
191
|
+
and focus returns to the list (or `returnFocusRef`) when the bar goes away.
|
|
192
|
+
DataTable, product variants and MediaLibrary's new `bulkActions` use it; the
|
|
193
|
+
old sticky selection toolbar and its overlap with the sticky topbar are gone.
|
|
194
|
+
- **Order blocks** in `blocks/commerce`: `OrderHeader` (payment and fulfilment
|
|
195
|
+
status axes), `FulfillmentGroup`, `OrderLineItem`, `OrderSummary`,
|
|
196
|
+
`OrderTransactions` and `OrderCustomer`, with an Orders catalogue group and an
|
|
197
|
+
Order detail composition. The shared money ledger `SummaryPanel` and
|
|
198
|
+
`AmountRow` now draw CartSummaryCard, TaxBreakdownCard, DiscountStackPreview,
|
|
199
|
+
InvoiceHeader and OrderSummary: no tinted box, one rule above a grand total.
|
|
200
|
+
- **Commerce blocks follow the source kit.** ShipmentTracking has a copyable
|
|
201
|
+
tracking number (`onCopyTracking`) and a timestamped checkpoint rail whose
|
|
202
|
+
current step is `aria-current="step"`; RefundStatusCard is an ordered list of
|
|
203
|
+
stages; PaymentMethod gains `variant="row"` and speaks `strings.formatCard`
|
|
204
|
+
("Visa ending 4242"); CartSummaryCard falls back to initials on a failed image
|
|
205
|
+
and adds `strings.formatQuantity`; DiscountStackPreview takes an optional
|
|
206
|
+
`kind` and `id`. Blocks pass native attributes to their root. `CartSummary`,
|
|
207
|
+
`DiscountStack`, `RefundStatus` and `PaymentMethodCard` are added as the source
|
|
208
|
+
kit's names for the same components. `Timeline` items expose `data-status` and
|
|
209
|
+
mark the current item `aria-current="step"`.
|
|
210
|
+
- **MetadataList** labels wrap in every layout and stay semibold; inline
|
|
211
|
+
`itemSeparator` is a middle dot hidden from screen readers; `render` output
|
|
212
|
+
takes the value style; the info trigger no longer grows its line; `icon` takes
|
|
213
|
+
any `ComponentType<{ className?: string }>`.
|
|
214
|
+
- **TagsInput fixes.** Multi-tag paste commits every tag, `sortTags` removes the
|
|
215
|
+
right tag, object tags are created from an empty value, a refused entry no
|
|
216
|
+
longer traps Tab, IME composition no longer commits, a typed delimiter splits,
|
|
217
|
+
single-token paste is native, and focus moves to the neighbouring chip after a
|
|
218
|
+
removal. Refused entries stay in the draft and are announced
|
|
219
|
+
(`strings.notAdded`). New `defaultValue`, `name` (hidden `name[]` inputs) and
|
|
220
|
+
ARIA pass-through; `TagsInputStrings` and `defaultTagsInputStrings` are
|
|
221
|
+
exported.
|
|
222
|
+
- **Order and commerce block fixes.** ShipmentTracking marks no checkpoint
|
|
223
|
+
current before the parcel reaches the first one. FulfillmentGroup keeps its
|
|
224
|
+
`items` rows when a conditional `children` renders nothing, takes Card's
|
|
225
|
+
default rules instead of forcing them, and accepts `headerDivider` /
|
|
226
|
+
`footerDivider`. OrderTransactions signs only money that moved (a failed
|
|
227
|
+
refund shows no minus), spells each kind out without a glyph tile or tinted
|
|
228
|
+
row, and draws no frame of its own inside a card. PaymentMethod's `row`
|
|
229
|
+
variant drops the credit-card tile, which misnamed wallets. Order status chips
|
|
230
|
+
match the rest of the library (no dot), and InvoiceHeader shows its dates as
|
|
231
|
+
facts rather than money rows.
|
|
232
|
+
- **Item as a button or link.** An `Item` given `render` renders its media,
|
|
233
|
+
content, title, description, actions, header and footer as spans, so a
|
|
234
|
+
button row holds valid phrasing content. Layout and `data-slot` hooks are
|
|
235
|
+
unchanged.
|
|
236
|
+
- **Theme fixes.** Light `--sidebar-primary` and its foreground follow
|
|
237
|
+
`--primary`, as dark already did, so a brand theme colours the sidebar
|
|
238
|
+
selection in both modes (the default theme is unchanged). `themes/green.css`
|
|
239
|
+
drops its `--chart-1` override, which restated the default. Theme Studio's
|
|
240
|
+
light warning accent matches the shipped token again.
|
|
241
|
+
- **Filter pill focus.** Active filter segments draw the inset focus recipe
|
|
242
|
+
instead of clearing the ring, so keyboard focus no longer looks like hover.
|
|
243
|
+
- **Icons follow `--icon`.** Sidebar, tabs, breadcrumb, item media, pagination,
|
|
244
|
+
avatar-group, toaster and chart-legend icons use the `size-icon*` roles
|
|
245
|
+
instead of fixed sizes; at the default `--icon` nothing moves.
|
|
246
|
+
- **Design checks.** Design lint judges every `*ClassName` slot prop like
|
|
247
|
+
`className`, adds an `icon-size` rule, and rejects a cleared focus ring with
|
|
248
|
+
no replacement edge. `check:contract` adds theme-mode checks: one value per
|
|
249
|
+
mode, mode-dependent aliases restated in `.dark`, no role that follows another
|
|
250
|
+
in one mode while copying its value in the other, and no brand-theme no-ops.
|
|
251
|
+
- **One owner for shared geometry.** The clear-target size, the action and
|
|
252
|
+
control size steps and the corner formulas that fields, the sidebar, toasts,
|
|
253
|
+
calendars, the key-value editor and MetadataList each wrote by hand now come
|
|
254
|
+
from the generated `affordanceGeometry` recipes, and `check:contract` keeps
|
|
255
|
+
the rich-content corners on the same formulas as the radius tokens. The
|
|
256
|
+
sidebar's collapsed and off-canvas widths are defined once by
|
|
257
|
+
`shell-sidebar-vars`; Workspace's sidebar column reads `--shell-sidebar-width`;
|
|
258
|
+
the mobile range-calendar cell follows density; the toaster's corner is the
|
|
259
|
+
shell radius role. BatchActionBar's dock offset and MetadataList's info target
|
|
260
|
+
no longer read `:root`-resolved aliases, so a scoped `ThemeScope` spacing or
|
|
261
|
+
density reaches them, and a new `root-alias` design-lint rule keeps such reads
|
|
262
|
+
out.
|
|
263
|
+
- **Shared components instead of hand-built copies.** AI, metric, giftcard and
|
|
264
|
+
checklist blocks frame with `Card` instead of hand-built shells; progress bars
|
|
265
|
+
across blocks and features are `Progress`; avatar, step and status discs are
|
|
266
|
+
`IconBadge`, `Avatar` or Badge `dot`; count pills and resource chips are
|
|
267
|
+
`Badge`; the media facts list is `MetadataList`; spacing chains are `Stack`
|
|
268
|
+
gaps; the map card uses the popover surface recipe and the AI prompt frame the
|
|
269
|
+
shared field-state recipes. MetricComparison drops its nested tiles.
|
|
270
|
+
- **Table density.** Base `Table` takes `density` (`compact`, `default`,
|
|
271
|
+
`comfortable`; also `data-density` on the table) and owns head and cell
|
|
272
|
+
insets; DataTable passes its `size` through it instead of overriding cells,
|
|
273
|
+
and headers lose the fixed `h-12`, so they follow density. Consumer
|
|
274
|
+
`cellClassName` padding now wins.
|
|
275
|
+
- **Typography through props.** `InlineStat` takes `valueWeight` and renders its
|
|
276
|
+
value in the provider text size; `AiShimmer` takes `size`; field labels share
|
|
277
|
+
one line box (`formLabelLineClass`); link-styled text shares the 0.2em
|
|
278
|
+
underline offset; library components set size, weight and leading through
|
|
279
|
+
`Text`/`Heading` props, and `no-restyle` now enforces that in library code.
|
|
280
|
+
- **Shared recipes for repeated choices.** Anchored surfaces (popovers, menus,
|
|
281
|
+
Select, Combobox, map and chart popups) take their viewport bound from the
|
|
282
|
+
shared surface recipe, and their widths from one `popoverWidthRecipes` scale;
|
|
283
|
+
the kanban card menu widens from 11rem to 12rem, the default filter popover
|
|
284
|
+
from 16rem to 18rem and ActionMenu's minimum from 9rem to 10rem. Status dots
|
|
285
|
+
use `dotRecipes` (6px beside text, 8px as a marker). The unread and stale
|
|
286
|
+
`theme` section of the token contract is removed.
|
|
287
|
+
- **Tabs chips.** `TabsList` takes `variant="chips"`: wrapping, trackless toggle
|
|
288
|
+
chips with the muted hover and accent pressed fill. Saved views and filter
|
|
289
|
+
presets use it instead of overriding the default track.
|
|
290
|
+
- **Smaller shared pieces.** AI source and citation numbers sit in `IconBadge`
|
|
291
|
+
(24px, up from a 20px hand-built disc). Native buttons that draw their own
|
|
292
|
+
shape start from `interactionRecipes.nativeButtonReset`.
|
|
293
|
+
- **Appointment calendar.** New `features/appointment-calendar` entrypoint:
|
|
294
|
+
`AppointmentCalendar` puts a month with category dots beside the day or week
|
|
295
|
+
agenda, with category and staff filters, booked and conflict counts and a
|
|
296
|
+
dismissible double-booking alert. Overlaps are found per staff member across
|
|
297
|
+
every category. `onAppointmentClick` opens a row, `appointmentActions` adds a
|
|
298
|
+
per-row commands menu, `onRangeChange` reports the days on screen for loading,
|
|
299
|
+
and `loading`, `error` and `onRetry` cover the agenda's states.
|
|
300
|
+
`renderAppointment` renders custom rows from a context with the category
|
|
301
|
+
colour, conflict, status, time, `open`, actions, a ready actions menu and
|
|
302
|
+
`defaultRender`; the calendar is generic over the app's appointment type.
|
|
303
|
+
`appointmentsOn`, `filterAppointments` and `findConflicts` are exported for
|
|
304
|
+
apps that pre-compute their own view.
|
|
305
|
+
- **Editor body height.** RichTextEditor takes `bodyHeight` (`control`, `field`
|
|
306
|
+
or `document`); `minHeight` still wins. The comment composer uses `field`, so
|
|
307
|
+
its empty editor is one textarea tall, 1rem taller than before.
|
|
308
|
+
|
|
3
309
|
## 2.0.1 — 2026-10-18
|
|
4
310
|
|
|
5
311
|
One shared recipe and design-lint rule for each visual state, the fixes the new
|
|
@@ -11,17 +317,7 @@ SettingsShell, and `primaryAction` on WorkspaceRecordHeader;
|
|
|
11
317
|
`toPageHeaderAction` in `services/actions`; an optional `toggle` flag on
|
|
12
318
|
`ToolbarButtonConfig` and `RichTextEditorToolbarItem`; `context` on
|
|
13
319
|
`ActionMenu` (`ActionMenuContext`); an optional `actions.menuLabel` in DataTable
|
|
14
|
-
strings
|
|
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.
|
|
320
|
+
strings. `PageActions`, `PageAction` and `toPageAction` are deprecated.
|
|
25
321
|
|
|
26
322
|
### Upgrading from 2.0.0
|
|
27
323
|
|
|
@@ -57,46 +353,6 @@ deprecated.
|
|
|
57
353
|
instead of a status colour or a solid primary fill. `HighlightedText`'s
|
|
58
354
|
default `highlightClassName` is the shared match mark: foreground text on the
|
|
59
355
|
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
356
|
|
|
101
357
|
### Changes
|
|
102
358
|
|
|
@@ -270,86 +526,6 @@ deprecated.
|
|
|
270
526
|
clipped mid-glyph instead: an applied coupon `SPRING2026` read as `SPRING202`.
|
|
271
527
|
Truncating titles in citations, vendor profiles, gift cards and attachments
|
|
272
528
|
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
529
|
|
|
354
530
|
## 2.0.0 — 2026-10-16
|
|
355
531
|
|
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
A publishable React UI package built on Base UI and Tailwind, with shadcn-compatible themes and Themelia's public APIs. Routing, persistence, permissions and translations remain consumer-owned.
|
|
4
4
|
|
|
5
|
-
Package: **`themelia-react-ui`** · current version: **`2.0.
|
|
5
|
+
Package: **`themelia-react-ui`** · current version: **`2.0.2`** · MIT licensed.
|
|
6
6
|
The GitHub repository is `themelia-react-ui`; npm imports use `themelia-react-ui`.
|
|
7
7
|
|
|
8
8
|
Consuming apps start with [consumer setup](#consumer-setup) and the packaged
|
|
@@ -41,7 +41,26 @@ Browser verification requires Playwright Chromium. An existing executable can be
|
|
|
41
41
|
|
|
42
42
|
## Consumer setup
|
|
43
43
|
|
|
44
|
-
Install a built tarball; use a registry release when available. React 19, React DOM 19, Base UI
|
|
44
|
+
Install a built tarball; use a registry release when available. React 19, React DOM 19, the declared Base UI peer and Lucide React 1 are required peers. Import exact family paths; there is no aggregate component barrel or public raw UI entrypoint.
|
|
45
|
+
|
|
46
|
+
Nested light/dark utilities use custom-property container style queries. Use
|
|
47
|
+
Chromium 111+, Safari 18.1+ or Firefox 151+ for this theme behavior. The nearest
|
|
48
|
+
mode class governs nested components and their scoped portals; see the
|
|
49
|
+
[theme guide](docs/consumer-skill/references/theming.md) for partial overrides.
|
|
50
|
+
|
|
51
|
+
Version 2.0.2 requires the companion `base-ui-react-1.8.0-kpo.2.tgz`
|
|
52
|
+
archive. It adds the public `Combobox.Root.dismissLabel` translation seam for both
|
|
53
|
+
screen-reader dismissal controls and preserves focus already restored inside a
|
|
54
|
+
parent popup when a nested popup closes. Install both versioned archives together; no
|
|
55
|
+
public registry release is required. The source checkout keeps the Base UI archive
|
|
56
|
+
beside `package.json` and pins it through the lockfile for reproducible `npm ci`.
|
|
57
|
+
|
|
58
|
+
```sh
|
|
59
|
+
npm install ./themelia-react-ui-2.0.2.tgz ./base-ui-react-1.8.0-kpo.2.tgz
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
The source checkout retains `base-ui-react-1.8.0-kpo.2.patch`; its upstream
|
|
63
|
+
provenance and license are recorded in `THIRD_PARTY_NOTICES.md`.
|
|
45
64
|
|
|
46
65
|
After the initial registry release, install into a React 19 application with:
|
|
47
66
|
|
|
@@ -95,7 +114,7 @@ The shipped stylesheet follows `prefers-reduced-motion` automatically for these
|
|
|
95
114
|
| Base | `base/<family>` — controls, forms, buttons, cards, structure, navigation, menus, feedback, display, tables, uploads and specialist controls |
|
|
96
115
|
| Layout | `layout`, `layout/<family>` — application shell, authentication, containers, page, settings, header, navigation, sidebar, workspace and hooks |
|
|
97
116
|
| Blocks | `blocks/admin`, `ai`, `analytics`, `commerce`, `data-display`, `onboarding`, `timelines` (each prefixed `blocks/`) |
|
|
98
|
-
| Features | `features/activities`, `ai-chat`, `async-preview`, `combobox`, `comments`, `data-view`, `email-composer`, `event-calendar`, `filters`, `global-search`, `kanban`, `map`, `media-library`, `mentions`, `overlays`, `products`, `resource`, `resource-assignment`, `rich-text-editor`, `schema-form`, `suggestions`, `sync` (deprecated), `table`, `theme-tweaker` (each prefixed `features/`) |
|
|
117
|
+
| Features | `features/activities`, `ai-chat`, `appointment-calendar`, `async-preview`, `combobox`, `comments`, `data-view`, `email-composer`, `event-calendar`, `filters`, `global-search`, `kanban`, `map`, `media-library`, `mentions`, `overlays`, `products`, `resource`, `resource-assignment`, `rich-text-editor`, `schema-form`, `suggestions`, `sync` (deprecated), `table`, `theme-tweaker` (each prefixed `features/`) |
|
|
99
118
|
|
|
100
119
|
The complete machine-readable entry inventory is `scripts/entries.json`. Dialogs and confirmations use `ActionDialog`, `ActionDrawer`, `ConfirmDialog` and visibility/action hooks from `features/overlays`.
|
|
101
120
|
|
|
@@ -201,7 +220,7 @@ The default development URL opens the full component catalogue. The focused foun
|
|
|
201
220
|
|
|
202
221
|
`Button` separates `tone` from `buttonStyle` (`solid`, `outline`, `ghost`); the catalogue shows their matrix, sizes and loading/disabled states. Icon-only controls may omit children when an accessible label or tooltip is supplied. Badges use compact typography and insets rather than inheriting action geometry.
|
|
203
222
|
|
|
204
|
-
Use `titleSuffix` for card status, count and version badges. `headerStart` is full-width pre-title context, and `headerAction`/`actions` own controls. Card owns token-spaced title/suffix wrapping for all surface modes. Give a card one quick control in `headerAction`, a command list in `actions` (its More actions menu) and the commit action in `footerSlot`;
|
|
223
|
+
Use `titleSuffix` for card status, count and version badges. `headerStart` is full-width pre-title context, and `headerAction`/`actions` own controls. Card owns token-spaced title/suffix wrapping for all surface modes. Give a card one quick control in `headerAction`, a command list in `actions` (its More actions menu) and the commit action in `footerSlot`; a framed card rules the footer off by default. Reserve body actions for a specific content step. Card owns aligned card insets, frames and expand/collapse behavior; Use `Card surface="flat" padding="none"` for card-free content hierarchy. ChartCard exposes `titleSuffix` too. Use `headerPlacement="frame"` for a header above an inset body. SmartCard and ContentBlock remain deprecated migration adapters; new code uses Card.
|
|
205
224
|
|
|
206
225
|
Application drawers use `ActionDrawer` and `useOverlayVisibility` from `themelia-react-ui/features/overlays`. Sheet is the structural foundation and remains available for lower-layer infrastructure and compatibility.
|
|
207
226
|
|
|
@@ -222,9 +241,10 @@ entries stay last.
|
|
|
222
241
|
Page owns inline and block padding, defaulting to the large surface role;
|
|
223
242
|
PageViewport owns scrolling and supplies no inset. Use `Page narrow` for a
|
|
224
243
|
centered single resource; explicit `maxWidth` wins. Page headers use dense copy
|
|
225
|
-
gaps. Ordinary cards retain default `md` padding and
|
|
226
|
-
footer by
|
|
227
|
-
|
|
244
|
+
gaps. Ordinary framed cards retain default `md` padding and rule header, body and
|
|
245
|
+
footer apart by default; flat, card-free structure draws no rule unless asked. Set
|
|
246
|
+
`card.defaultHeaderDivider` and `card.defaultFooterDivider` to `false` for an app
|
|
247
|
+
that separates card regions by spacing alone.
|
|
228
248
|
AppSidebar offers pinned `slots.headerStart`/`headerEnd` around its workspace
|
|
229
249
|
region, compact navigation and a separated footer. The
|
|
230
250
|
[complete shell recipe](docs/consumer-skill/examples/app-layout.tsx) demonstrates
|
|
@@ -289,7 +309,7 @@ purpose from its name or read every document before starting a screen.
|
|
|
289
309
|
|
|
290
310
|
Maintainers run `npm run docs:sync-skill` after changes to exports, types, selection guidance, peers or tokens. `npm run check:skill` requires a fresh library build and rejects stale source-backed references, built declaration exports and broken reference links. `prepack` checks source-backed references without rebuilding; `prepublishOnly` builds fresh assets and verifies built guidance. `check:package` verifies the complete shipped skill, strictly compiles the basic recipes without optional peers and every recipe with its required peers, and executes installed shell/resource-page and workflow checks.
|
|
291
311
|
|
|
292
|
-
Build portable consumer documentation with `npm run build` followed by `npm run build:docs`. The generated [static entry](dist-docs/index.html) links to `dist-docs/2.0.
|
|
312
|
+
Build portable consumer documentation with `npm run build` followed by `npm run build:docs`. The generated [static entry](dist-docs/index.html) links to `dist-docs/2.0.2/` for the current version. Each version preserves the complete skill and all declaration files, supports search with the same finder, and uses relative links under any hosting subdirectory. Serve the entire artifact over HTTP; it needs no external CDN. Run `npm run check:static-docs` to check generated asset paths. The future hosting destination remains pending.
|
|
293
313
|
|
|
294
314
|
`npm run check:agent` runs focused agent-consumption fixtures and built skill alignment. `npm run check:release` performs the real serial local build/package/browser/agent/static-documentation gate; it does not publish or deploy. `npm run check:quick` runs the everyday core (contract, lint, design lint, typecheck, unit tests, build). See the [release guide](docs/releasing.md) and [draft changelog](CHANGELOG.md). There is no hosted CI; every check runs locally, when you choose. These commands verify locally; publication and deployment remain separate actions.
|
|
295
315
|
|
package/THIRD_PARTY_NOTICES.md
CHANGED
|
@@ -27,6 +27,19 @@ SOFTWARE.
|
|
|
27
27
|
|
|
28
28
|
External dependencies retain their own licenses and notices in their packages.
|
|
29
29
|
|
|
30
|
+
## Base UI private accessibility build
|
|
31
|
+
|
|
32
|
+
This private build requires `@base-ui/react@1.8.0-kpo.2`, supplied as the companion
|
|
33
|
+
`base-ui-react-1.8.0-kpo.2.tgz` archive. It derives from the official Base UI v1.8.0
|
|
34
|
+
source at commit `47b40521eab921c2756bf9bdb0b0f07fbfdb8c8c`
|
|
35
|
+
([upstream source](https://github.com/mui/base-ui/tree/47b40521eab921c2756bf9bdb0b0f07fbfdb8c8c)).
|
|
36
|
+
The additive `Combobox.Root.dismissLabel` prop supplies both screen-reader
|
|
37
|
+
dismissal controls. The companion also guards delayed parent-popup focus
|
|
38
|
+
restoration so a nested popup can return focus to its original trigger.
|
|
39
|
+
The library source checkout retains the related patch as
|
|
40
|
+
`base-ui-react-1.8.0-kpo.2.patch`. Base UI's MIT license is retained inside the
|
|
41
|
+
companion archive; its copyright and permission notice remain unchanged.
|
|
42
|
+
|
|
30
43
|
## Email composer reference
|
|
31
44
|
|
|
32
45
|
The email composer public types and HTTP adapter adapt the supplied MIT-licensed
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { useStrings as e } from "./lib/strings.js";
|
|
3
|
-
import { t } from "./utils-
|
|
4
|
-
import {
|
|
3
|
+
import { t } from "./utils-BRhFDwuU.js";
|
|
4
|
+
import { c as n } from "./typography-UTnveOEy.js";
|
|
5
5
|
import { t as r } from "./focus-recipes-B653VaLq.js";
|
|
6
6
|
import { t as i } from "./motion-recipes-ChBg4HBq.js";
|
|
7
|
-
import { t as a } from "./structure-
|
|
8
|
-
import { t as o } from "./interaction-recipes-
|
|
7
|
+
import { t as a } from "./structure-BmisBK-3.js";
|
|
8
|
+
import { t as o } from "./interaction-recipes-XR9ZpVYL.js";
|
|
9
9
|
import { t as s } from "./disclosure-panel-B0HFNZ9x.js";
|
|
10
|
-
import { t as c } from "./icon-badge-
|
|
10
|
+
import { t as c } from "./icon-badge-DYKIwvOV.js";
|
|
11
11
|
import * as l from "react";
|
|
12
12
|
import { forwardRef as u } from "react";
|
|
13
13
|
import { jsx as d, jsxs as f } from "react/jsx-runtime";
|
|
@@ -45,7 +45,7 @@ function _({ className: e, children: n, ...r }) {
|
|
|
45
45
|
function v({ className: e, children: n, render: r, ...a }) {
|
|
46
46
|
return /* @__PURE__ */ d(m.Panel, {
|
|
47
47
|
"data-slot": "accordion-content",
|
|
48
|
-
className: t("accordion-content--component box-border text-
|
|
48
|
+
className: t("accordion-content--component box-border text-inherit h-(--accordion-panel-height)", i.disclosure, e),
|
|
49
49
|
...a,
|
|
50
50
|
render: (e, t) => /* @__PURE__ */ d(s, {
|
|
51
51
|
props: e,
|
|
@@ -61,7 +61,7 @@ function v({ className: e, children: n, render: r, ...a }) {
|
|
|
61
61
|
var y = l.forwardRef(function({ className: e, ...n }, r) {
|
|
62
62
|
return /* @__PURE__ */ d(h, {
|
|
63
63
|
ref: r,
|
|
64
|
-
className: t("accordion--component rounded-radius border-border bg-card", e),
|
|
64
|
+
className: t("accordion--component rounded-radius border-border bg-card text-card-foreground", e),
|
|
65
65
|
...n
|
|
66
66
|
});
|
|
67
67
|
});
|
|
@@ -78,7 +78,7 @@ var x = l.forwardRef(function({ className: e, children: i, ...a }, s) {
|
|
|
78
78
|
let c = typeof i == "string" || typeof i == "number" || typeof i == "bigint";
|
|
79
79
|
return /* @__PURE__ */ d(_, {
|
|
80
80
|
ref: s,
|
|
81
|
-
className: t("accordion-trigger--component min-h-action items-center gap-space-lg px-row-x py-row-y", `text-start text-sm font-medium transition-colors ${o.rowHover} hover:no-underline`, `focus-visible:z-10 ${r.inset}`, e),
|
|
81
|
+
className: t("accordion-trigger--component min-h-action items-center gap-space-lg px-row-x py-row-y", `text-start text-inherit text-sm font-medium transition-colors ${o.rowHover} hover:no-underline`, `focus-visible:z-10 ${r.inset}`, e),
|
|
82
82
|
...a,
|
|
83
83
|
children: c ? /* @__PURE__ */ d(n, {
|
|
84
84
|
tag: "span",
|
|
@@ -110,11 +110,11 @@ S.displayName = "AccordionContent";
|
|
|
110
110
|
//#endregion
|
|
111
111
|
//#region src/components/base/accordion/accordion-variants.ts
|
|
112
112
|
var C = {
|
|
113
|
-
card: "gap-space-md border-0 rounded-none bg-transparent overflow-visible",
|
|
114
|
-
bordered: "rounded-radius border border-border bg-card overflow-hidden",
|
|
115
|
-
flat: "border-0 rounded-none bg-transparent overflow-visible"
|
|
113
|
+
card: "gap-space-md border-0 rounded-none bg-transparent text-inherit overflow-visible",
|
|
114
|
+
bordered: "rounded-radius border border-border bg-card text-card-foreground overflow-hidden",
|
|
115
|
+
flat: "border-0 rounded-none bg-transparent text-inherit overflow-visible"
|
|
116
116
|
}, w = {
|
|
117
|
-
card: "border border-border bg-card rounded-radius overflow-hidden",
|
|
117
|
+
card: "border border-border bg-card text-card-foreground rounded-radius overflow-hidden",
|
|
118
118
|
bordered: "bg-transparent not-last:border-b border-border",
|
|
119
119
|
flat: "border-0 not-last:border-b-0 bg-transparent rounded-radius overflow-hidden"
|
|
120
120
|
}, T = "items-center gap-space-lg px-row-x py-row-y text-start hover:no-underline", E = {
|
|
@@ -153,6 +153,7 @@ var C = {
|
|
|
153
153
|
className: "flex min-w-0 flex-wrap items-center gap-x-space-md gap-y-space-xs",
|
|
154
154
|
children: [k(e.title) ? /* @__PURE__ */ d(n, {
|
|
155
155
|
tag: "span",
|
|
156
|
+
type: "inherit",
|
|
156
157
|
weight: "semibold",
|
|
157
158
|
className: "smart-accordion--title min-w-0",
|
|
158
159
|
children: e.title
|
|
@@ -204,4 +205,4 @@ function A({ iconStyle: e, icon: n, reserveSpace: r }) {
|
|
|
204
205
|
//#endregion
|
|
205
206
|
export { C as a, S as c, w as i, b as l, D as n, T as o, E as r, y as s, O as t, x as u };
|
|
206
207
|
|
|
207
|
-
//# sourceMappingURL=accordion-
|
|
208
|
+
//# sourceMappingURL=accordion-Cjb6sx0G.js.map
|