themelia-ui 3.0.0 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/skills/themelia-ui/SKILL.md +27 -29
- package/.agents/skills/themelia-ui/references/api-compatibility.md +3 -3
- package/.agents/skills/themelia-ui/references/composition.md +2 -18
- package/.agents/skills/themelia-ui/references/framework-wiring.md +8 -8
- package/.agents/skills/themelia-ui/references/imports.md +104 -104
- package/.agents/skills/themelia-ui/references/installation.md +55 -27
- package/.agents/skills/themelia-ui/references/migration.md +136 -5
- package/.agents/skills/themelia-ui/references/provider-and-scoping.md +13 -19
- package/.agents/skills/themelia-ui/references/theming.md +170 -131
- package/.agents/skills/themelia-ui/references/troubleshooting.md +62 -27
- package/.agents/skills/themelia-ui/references/verification.md +2 -3
- package/CHANGELOG.md +187 -0
- package/README.md +45 -60
- package/dist/accordion-CHuzMmWL.js +143 -0
- package/dist/{action-menu-BNLURfMK.js → action-menu-BwiL_F6I.js} +35 -33
- package/dist/{alert-dialog-BMVo6Z-8.js → alert-dialog-Bmo1YrTm.js} +1 -1
- package/dist/avatar-Dc_BNYfB.js +93 -0
- package/dist/badge-VlJVZjdm.js +45 -0
- package/dist/base/accordion.js +1 -1
- package/dist/base/action-menu.js +1 -1
- package/dist/base/alert-dialog.js +1 -1
- package/dist/base/aspect-ratio.js +3 -1
- package/dist/base/avatar.js +1 -1
- package/dist/base/badge.js +2 -2
- package/dist/base/batch-action-bar.js +1 -1
- package/dist/base/buttons.js +1 -1
- package/dist/base/cards.js +1 -1
- package/dist/base/carousel.js +6 -4
- package/dist/base/chart.js +1 -1
- package/dist/base/choice-inputs.js +1 -1
- package/dist/base/combobox.js +1 -1
- package/dist/base/command.js +1 -1
- package/dist/base/context-menu.js +22 -21
- package/dist/base/copyable.js +1 -1
- package/dist/base/date-pickers.js +1 -1
- package/dist/base/dialog.js +1 -1
- package/dist/base/display.js +1 -1
- package/dist/base/dropdown-menu.js +1 -1
- package/dist/base/feedback.js +1 -1
- package/dist/base/forms-numeric.js +1 -1
- package/dist/base/forms.js +1 -1
- package/dist/base/hover-card.js +26 -23
- package/dist/base/input-group.js +1 -1
- package/dist/base/item.js +1 -1
- package/dist/base/label.js +1 -1
- package/dist/base/menubar.js +20 -14
- package/dist/base/navigation-menu.js +47 -38
- package/dist/base/navigation.js +1 -1
- package/dist/base/otp-input.js +36 -30
- package/dist/base/overlay.js +1 -1
- package/dist/base/popover-menu.js +1 -1
- package/dist/base/popover.js +1 -1
- package/dist/base/qr-code.js +51 -47
- package/dist/base/repeaters.js +1 -1
- package/dist/base/resizable.js +2 -0
- package/dist/base/sheet.js +1 -1
- package/dist/base/sidebar.js +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 +1 -1
- package/dist/base/timeline.js +1 -1
- package/dist/base/toaster.js +1 -1
- package/dist/base/toggle.js +21 -15
- package/dist/base/toolbar.js +1 -1
- package/dist/base/tooltip.js +1 -1
- package/dist/base/typography.js +2 -2
- package/dist/base/upload.js +1 -1
- package/dist/base/value-inputs.js +1 -1
- package/dist/{batch-action-bar-BZYNKXdV.js → batch-action-bar-DZVMVW83.js} +11 -8
- package/dist/{admin/patterns → blocks/admin}/access.js +79 -76
- package/dist/blocks/admin/commerce.js +2493 -0
- package/dist/{patterns → blocks}/analytics.js +312 -303
- package/dist/{patterns → blocks}/onboarding.js +27 -23
- package/dist/{patterns → blocks}/timelines.js +1 -1
- package/dist/buttons-BX2JfL5X.js +173 -0
- package/dist/cards-DdiICdMM.js +279 -0
- package/dist/chart-BkK3Xm10.js +201 -0
- package/dist/choice-inputs-CCw-0gD6.js +694 -0
- package/dist/combobox-Byu8N-Oe.js +274 -0
- package/dist/command-CnB_IZSo.js +156 -0
- package/dist/comments-C6Y_ddMt.js +1443 -0
- package/dist/components/base/action-menu/action-menu.d.ts +1 -1
- package/dist/components/base/action-menu/action-menu.types.d.ts +2 -2
- package/dist/components/base/avatar/avatar.d.ts +5 -2
- package/dist/components/base/badge/badge.d.ts +10 -10
- package/dist/components/base/badge/badge.variants.d.ts +1 -2
- package/dist/components/base/badge/index.d.ts +1 -2
- package/dist/components/base/buttons/button.d.ts +9 -8
- package/dist/components/base/buttons/button.types.d.ts +2 -2
- package/dist/components/base/buttons/index.d.ts +1 -1
- package/dist/components/base/buttons/text-button.d.ts +1 -1
- package/dist/components/base/cards/card-actions.d.ts +1 -1
- package/dist/components/base/cards/card.d.ts +3 -1
- package/dist/components/base/cards/partials/card-header.d.ts +2 -1
- package/dist/components/base/choice-inputs/choice.types.d.ts +2 -2
- package/dist/components/base/choice-inputs/partials/choice-parts.d.ts +3 -3
- package/dist/components/base/command/command.d.ts +5 -2
- package/dist/components/base/display/icon-badge.d.ts +5 -3
- package/dist/components/base/display/index.d.ts +1 -1
- package/dist/components/base/display/metadata-list.d.ts +6 -6
- package/dist/components/base/display/metadata-value.d.ts +1 -1
- package/dist/components/base/display/separator.d.ts +2 -2
- package/dist/components/base/feedback/alert.d.ts +3 -2
- package/dist/components/base/feedback/empty.d.ts +5 -4
- package/dist/components/base/feedback/progress-circle.d.ts +2 -2
- package/dist/components/base/feedback/progress.d.ts +3 -1
- package/dist/components/base/input-group/input-group.d.ts +8 -10
- package/dist/components/base/item/item.d.ts +2 -2
- package/dist/components/base/overlay/index.d.ts +1 -1
- package/dist/components/base/overlay/overlay.types.d.ts +7 -5
- package/dist/components/base/qr-code/qr-code.d.ts +4 -4
- package/dist/components/base/sheet/sheet.d.ts +1 -1
- package/dist/components/base/sidebar/sidebar.d.ts +9 -13
- package/dist/components/base/spinner/spinner.d.ts +2 -2
- package/dist/components/base/structure/adaptive-grid.d.ts +3 -3
- package/dist/components/base/structure/bleed.d.ts +3 -2
- package/dist/components/base/structure/grid.d.ts +2 -2
- package/dist/components/base/structure/index.d.ts +1 -1
- package/dist/components/base/structure/split.d.ts +3 -3
- package/dist/components/base/structure/stack.d.ts +5 -5
- package/dist/components/base/structure/structure.maps.d.ts +2 -1
- package/dist/components/base/structure/structure.types.d.ts +10 -4
- package/dist/components/base/toggle/toggle.d.ts +2 -2
- package/dist/components/base/toolbar/toolbar.d.ts +3 -3
- package/dist/components/base/typography/index.d.ts +2 -0
- package/dist/components/base/typography/rich-text/rich-text.variants.d.ts +9 -0
- package/dist/components/base/typography/text/index.d.ts +1 -0
- package/dist/components/base/typography/text/text.d.ts +15 -8
- package/dist/components/base/typography/text/text.variants.d.ts +41 -0
- package/dist/components/base/value-inputs/color-input.d.ts +1 -7
- package/dist/components/base/value-inputs/slider.d.ts +2 -7
- package/dist/components/{admin/patterns → blocks/admin}/commerce/vendor-profile.d.ts +2 -1
- package/dist/components/{patterns → blocks}/analytics/analytics.strings.d.ts +2 -5
- package/dist/components/features/actions/action-adapters.d.ts +3 -3
- package/dist/components/features/actions/actions.types.d.ts +3 -5
- package/dist/components/features/actions/index.d.ts +1 -1
- package/dist/components/features/activities/activities-feed.d.ts +1 -1
- package/dist/components/features/activities/activities.types.d.ts +4 -4
- package/dist/components/features/activities/activity-parts.d.ts +3 -3
- package/dist/components/features/activities/activity-row.d.ts +4 -4
- package/dist/components/features/activities/index.d.ts +1 -1
- package/dist/components/features/ai-chat/ai-chat.types.d.ts +10 -3
- package/dist/components/features/ai-chat/ai-message-surfaces.d.ts +1 -1
- package/dist/components/features/ai-chat/ai-work-surfaces.d.ts +1 -1
- package/dist/components/features/combobox/combobox.strings.d.ts +2 -2
- package/dist/components/features/event-calendar/event-calendar.types.d.ts +3 -0
- package/dist/components/features/media-library/index.d.ts +1 -1
- package/dist/components/features/media-library/media-library-parts.d.ts +4 -3
- package/dist/components/features/media-library/media-library-views.d.ts +4 -3
- package/dist/components/features/media-library/media-library.d.ts +1 -1
- package/dist/components/features/media-library/media-library.strings.d.ts +12 -13
- package/dist/components/features/media-library/media-library.types.d.ts +11 -9
- package/dist/components/features/media-library/media-resource-gallery.d.ts +1 -1
- package/dist/components/features/media-library/use-media-library.d.ts +1 -4
- package/dist/components/features/overlays/action-overlay-frame.d.ts +1 -1
- package/dist/components/features/overlays/index.d.ts +1 -1
- package/dist/components/features/overlays/overlay-parts.d.ts +3 -3
- package/dist/components/features/overlays/overlays.types.d.ts +8 -7
- package/dist/components/features/rich-text-editor/index.d.ts +0 -1
- package/dist/components/features/table/data-table-body.d.ts +1 -1
- package/dist/components/features/table/data-table-expanded-row.d.ts +27 -0
- package/dist/components/features/table/data-table-header.d.ts +1 -1
- package/dist/components/features/table/data-table-size.d.ts +1 -1
- package/dist/components/features/table/data-table.d.ts +1 -1
- package/dist/components/features/table/index.d.ts +1 -1
- package/dist/components/features/table/table-helpers.d.ts +9 -3
- package/dist/components/features/table/table.strings.d.ts +11 -0
- package/dist/components/features/table/table.types.d.ts +60 -2
- package/dist/components/features/theme-tweaker/index.d.ts +1 -1
- package/dist/components/features/theme-tweaker/theme-tweaker.strings.d.ts +1 -1
- package/dist/components/features/theme-tweaker/theme-tweaker.types.d.ts +6 -10
- package/dist/components/features/theme-tweaker/theme-tweaker.utils.d.ts +22 -6
- package/dist/components/layout/app-shell/topbar-sidebar-layout.d.ts +1 -1
- package/dist/components/layout/auth/auth.d.ts +1 -1
- package/dist/components/layout/auth/auth.types.d.ts +1 -1
- package/dist/components/primitives/value.d.ts +3 -1
- package/dist/containers-B8d8U9GS.js +2 -0
- package/dist/{copyable-H1TUEY-H.js → copyable-D9Okb1w6.js} +12 -11
- package/dist/core.css +2 -2
- package/dist/css/access.css +2 -1
- package/dist/css/accordion.css +2 -1
- package/dist/css/action-menu.css +2 -1
- package/dist/css/activities.css +2 -1
- package/dist/css/ai-chat.css +2 -1
- package/dist/css/analytics.css +2 -1
- package/dist/css/app-shell.css +2 -1
- package/dist/css/aspect-ratio.css +2 -1
- package/dist/css/async-preview.css +2 -1
- package/dist/css/auth.css +2 -1
- package/dist/css/avatar.css +2 -1
- package/dist/css/badge.css +2 -1
- package/dist/css/batch-action-bar.css +2 -1
- package/dist/css/buttons.css +2 -1
- package/dist/css/cards.css +2 -1
- package/dist/css/carousel.css +2 -1
- package/dist/css/chart.css +2 -1
- package/dist/css/choice-inputs.css +2 -1
- package/dist/css/combobox.css +2 -1
- package/dist/css/combobox2.css +2 -1
- package/dist/css/command.css +2 -1
- package/dist/css/comments.css +2 -1
- package/dist/css/commerce.css +2 -1
- package/dist/css/containers.css +2 -1
- package/dist/css/copyable.css +2 -1
- package/dist/css/data-view.css +2 -1
- package/dist/css/date-pickers.css +2 -1
- package/dist/css/display.css +2 -1
- package/dist/css/dropdown-menu.css +2 -1
- package/dist/css/event-calendar.css +2 -1
- package/dist/css/feedback.css +2 -1
- package/dist/css/filters.css +2 -1
- package/dist/css/forms-numeric.css +2 -1
- package/dist/css/forms.css +2 -1
- package/dist/css/global-search.css +2 -1
- package/dist/css/header.css +2 -1
- package/dist/css/hover-card.css +2 -1
- package/dist/css/input-group.css +2 -1
- package/dist/css/item.css +2 -1
- package/dist/css/kanban.css +2 -1
- package/dist/css/label.css +2 -1
- package/dist/css/map.css +2 -1
- package/dist/css/media-library.css +2 -1
- package/dist/css/mentions.css +2 -1
- package/dist/css/menubar.css +2 -1
- package/dist/css/navigation-menu.css +2 -1
- package/dist/css/navigation.css +2 -1
- package/dist/css/navigation2.css +2 -1
- package/dist/css/onboarding.css +2 -1
- package/dist/css/otp-input.css +2 -1
- package/dist/css/overlay.css +2 -1
- package/dist/css/overlays.css +2 -1
- package/dist/css/page.css +2 -1
- package/dist/css/popover-menu.css +2 -1
- package/dist/css/popover.css +2 -1
- package/dist/css/primitives.css +2 -1
- package/dist/css/products.css +2 -1
- package/dist/css/qr-code.css +2 -1
- package/dist/css/repeaters.css +2 -1
- package/dist/css/resizable.css +2 -1
- package/dist/css/resource-assignment.css +2 -1
- package/dist/css/resource.css +2 -1
- package/dist/css/rich-text-editor.css +2 -1
- package/dist/css/schema-form.css +2 -1
- package/dist/css/sidebar.css +2 -1
- package/dist/css/sidebar2.css +2 -1
- package/dist/css/skeleton.css +2 -1
- package/dist/css/spinner.css +2 -1
- package/dist/css/structure.css +2 -1
- package/dist/css/sync.css +2 -1
- package/dist/css/table.css +2 -1
- package/dist/css/table2.css +2 -1
- package/dist/css/text-inputs.css +2 -1
- package/dist/css/theme-tweaker.css +2 -1
- package/dist/css/timeline.css +2 -1
- package/dist/css/timelines.css +2 -1
- package/dist/css/toaster.css +2 -1
- package/dist/css/toggle.css +2 -1
- package/dist/css/toolbar.css +2 -1
- package/dist/css/tooltip.css +2 -1
- package/dist/css/typography.css +2 -1
- package/dist/css/upload.css +2 -1
- package/dist/css/value-inputs.css +2 -1
- package/dist/css/workspace.css +2 -1
- package/dist/css-graph.json +1027 -0
- package/dist/date-pickers-C2HgjpFU.js +685 -0
- package/dist/{dialog-CtFCuTUF.js → dialog-0nRFg5Zs.js} +1 -1
- package/dist/display-BGN834xV.js +664 -0
- package/dist/dropdown-menu-Br8kvjrF.js +235 -0
- package/dist/empty.js +0 -0
- package/dist/features/actions.js +6 -6
- package/dist/features/activities.js +219 -216
- package/dist/features/ai-chat.js +593 -565
- package/dist/features/async-preview.js +105 -286
- package/dist/features/combobox.js +119 -117
- package/dist/features/comments.js +1 -1
- package/dist/features/data-view.js +56 -55
- package/dist/features/event-calendar.js +189 -185
- package/dist/features/filters.js +1 -1
- package/dist/features/global-search.js +259 -260
- package/dist/features/kanban.js +39 -37
- package/dist/features/map.js +357 -354
- package/dist/features/media-library.js +931 -931
- package/dist/features/mentions.js +1 -1
- package/dist/features/overlays.js +1 -1
- package/dist/features/products.js +950 -942
- package/dist/features/resource-assignment.js +39 -37
- package/dist/features/resource.js +70 -71
- package/dist/features/rich-text-editor.js +2 -2
- package/dist/features/schema-form.js +342 -338
- package/dist/features/sync.js +14 -12
- package/dist/features/table.js +1 -1
- package/dist/features/theme-tweaker.js +1002 -962
- package/dist/feedback-D4qVsKlD.js +430 -0
- package/dist/{filters-DOLKRSmb.js → filters-geLuSlFL.js} +386 -383
- package/dist/forms-NxbJK4Mh.js +250 -0
- package/dist/forms-numeric-C6NMdj6G.js +582 -0
- package/dist/index.js +2 -2
- package/dist/input-group-HS_Z0Ei_.js +119 -0
- package/dist/item-CuUJyETl.js +150 -0
- package/dist/{label-DumoMDm6.js → label-HOBXAscw.js} +7 -5
- package/dist/layout/app-shell.js +4 -2
- package/dist/layout/auth.js +102 -100
- package/dist/layout/header.js +190 -180
- package/dist/layout/navigation.js +1 -1
- package/dist/layout/page.js +18 -16
- package/dist/layout/settings.js +2 -2
- package/dist/layout/sidebar.js +43 -43
- package/dist/layout/workspace.js +71 -69
- package/dist/lib/action-presentation.d.ts +3 -3
- package/dist/lib/component-vocabulary.d.ts +2 -2
- package/dist/lib/css-length.d.ts +2 -0
- package/dist/lib/responsive.d.ts +1 -1
- package/dist/lib/theming/index.d.ts +1 -0
- package/dist/lib/theming/recipes.d.ts +2 -2
- package/dist/lib/theming/themes/dense.d.ts +3 -0
- package/dist/lib/theming/themes/editorial.d.ts +3 -0
- package/dist/lib/theming/themes/index.d.ts +8 -0
- package/dist/lib/theming/themes/pair.d.ts +7 -0
- package/dist/lib/theming/themes/sharp.d.ts +3 -0
- package/dist/lib/theming/themes/soft.d.ts +3 -0
- package/dist/lib/theming/themes/types.d.ts +12 -0
- package/dist/lib/ui-provider/index.d.ts +1 -1
- package/dist/lib/ui-provider/scope.d.ts +5 -8
- package/dist/lib/ui-provider/tokens.d.ts +11 -3
- package/dist/lib/ui-provider/tokens.generated.d.ts +6 -4
- package/dist/lib/ui-provider/types.d.ts +17 -19
- package/dist/{mentions-BbsEHlcH.js → mentions-oeYNv_j1.js} +113 -111
- package/dist/navigation-BTX5Ti0Z.js +622 -0
- package/dist/navigation-WYKjDhZq.js +216 -0
- package/dist/overlay-C8RAgi2_.js +356 -0
- package/dist/{overlays-DvVoS3td.js → overlays-9BxwFTou.js} +77 -75
- package/dist/popover-CA7SP_iz.js +127 -0
- package/dist/popover-menu-DcLeiw9r.js +192 -0
- package/dist/{primitives-D0bdDozz.js → primitives-BskKlf35.js} +181 -178
- package/dist/primitives.js +1 -1
- package/dist/profiles/admin.json +6 -36
- package/dist/profiles/general.json +6 -96
- package/dist/repeaters-DfptvbGA.js +445 -0
- package/dist/rich-text-editor-D_Ppm8yh.js +491 -0
- package/dist/{sheet-CKcmRbJ9.js → sheet-D-DVZH_b.js} +3 -3
- package/dist/sidebar-DXQOy_Cb.js +421 -0
- package/dist/skeleton-CubvHel9.js +173 -0
- package/dist/spinner-Tc1QCnxM.js +30 -0
- package/dist/{structure-D0WGQAP3.js → structure-B9Y5NkP_.js} +15 -22
- package/dist/style.css +1 -1
- package/dist/styles/TOKENS.md +115 -275
- package/dist/styles/animation.css +114 -0
- package/dist/styles/base.css +7 -6
- package/dist/styles/fields.css +45 -63
- package/dist/styles/focus.css +12 -0
- package/dist/styles/forced-colors.css +11 -10
- package/dist/styles/index.css +23 -30
- package/dist/styles/map.css +45 -34
- package/dist/styles/mentions.css +14 -52
- package/dist/styles/overlays.css +7 -7
- package/dist/styles/tailwind.css +76 -127
- package/dist/styles/targets.css +3 -3
- package/dist/styles/theme/colour.css +86 -0
- package/dist/styles/theme/density.css +31 -0
- package/dist/styles/theme/elevation.css +9 -0
- package/dist/styles/theme/layout.css +18 -0
- package/dist/styles/theme/motion.css +18 -0
- package/dist/styles/theme/shape.css +12 -0
- package/dist/styles/theme/size.css +10 -0
- package/dist/styles/theme/spacing.css +11 -0
- package/dist/styles/theme/typography.css +20 -0
- package/dist/styles/tone.css +61 -0
- package/dist/table-DT_20ity.js +1262 -0
- package/dist/table-Ds_eO9av.js +191 -0
- package/dist/tailwind.css +76 -127
- package/dist/text-inputs-BboE77nZ.js +395 -0
- package/dist/theming-C5ygF5uf.js +292 -0
- package/dist/theming.js +2 -2
- package/dist/{timeline-BdaGRyj-.js → timeline-BRZbSdhf.js} +57 -49
- package/dist/{timelines-BB7550mz.js → timelines-DczZKW5p.js} +69 -67
- package/dist/{toaster-bBMgXm8z.js → toaster-CXL8L7Mm.js} +106 -99
- package/dist/tokens.json +1027 -636
- package/dist/toolbar-DBK-c4yy.js +74 -0
- package/dist/tooltip-BPYP-jUm.js +76 -0
- package/dist/{typography-BkxEiwQ1.js → typography-DmeR05Er.js} +87 -53
- package/dist/{ui-provider-Cmoq6i_D.js → ui-provider-DpzLUD12.js} +117 -69
- package/dist/ui-provider.js +1 -1
- package/dist/upload-C_6mlbfl.js +968 -0
- package/dist/use-async-preview-BFwf9ElY.js +188 -0
- package/dist/value-inputs-CnO6RZeT.js +728 -0
- package/docs/README.md +2 -2
- package/docs/build/recipes.md +10992 -10628
- package/docs/generated/component-index.json +11133 -11624
- package/docs/generated/components/INDEX.md +5 -5
- package/docs/generated/components/base--accordion.md +51 -2
- package/docs/generated/components/base--action-menu.md +14 -15
- package/docs/generated/components/base--alert-dialog.md +3 -4
- package/docs/generated/components/base--aspect-ratio.md +3 -4
- package/docs/generated/components/base--avatar.md +7 -7
- package/docs/generated/components/base--badge.md +159 -27
- package/docs/generated/components/base--batch-action-bar.md +6 -7
- package/docs/generated/components/base--buttons.md +151 -47
- package/docs/generated/components/base--cards.md +107 -14
- package/docs/generated/components/base--carousel.md +1 -2
- package/docs/generated/components/base--chart.md +44 -8
- package/docs/generated/components/base--choice-inputs.md +10 -11
- package/docs/generated/components/base--combobox.md +3 -4
- package/docs/generated/components/base--command.md +6 -6
- package/docs/generated/components/base--context-menu.md +1 -2
- package/docs/generated/components/base--copyable.md +6 -7
- package/docs/generated/components/base--date-pickers.md +6 -7
- package/docs/generated/components/base--dialog.md +6 -7
- package/docs/generated/components/base--direction.md +1 -1
- package/docs/generated/components/base--display.md +234 -54
- package/docs/generated/components/base--dropdown-menu.md +6 -7
- package/docs/generated/components/base--feedback.md +71 -18
- package/docs/generated/components/base--forms-numeric.md +6 -7
- package/docs/generated/components/base--forms.md +12 -13
- package/docs/generated/components/base--hover-card.md +3 -4
- package/docs/generated/components/base--input-group.md +27 -30
- package/docs/generated/components/base--item.md +8 -9
- package/docs/generated/components/base--label.md +2 -3
- package/docs/generated/components/base--menubar.md +2 -4
- package/docs/generated/components/base--navigation-menu.md +2 -3
- package/docs/generated/components/base--navigation.md +2 -3
- package/docs/generated/components/base--otp-input.md +3 -4
- package/docs/generated/components/base--overlay.md +56 -47
- package/docs/generated/components/base--popover-menu.md +7 -8
- package/docs/generated/components/base--popover.md +9 -10
- package/docs/generated/components/base--qr-code.md +7 -8
- package/docs/generated/components/base--repeaters.md +6 -7
- package/docs/generated/components/base--resizable.md +2 -3
- package/docs/generated/components/base--sheet.md +12 -13
- package/docs/generated/components/base--sidebar.md +9 -11
- package/docs/generated/components/base--skeleton.md +6 -7
- package/docs/generated/components/base--slot.md +1 -1
- package/docs/generated/components/base--spinner.md +5 -7
- package/docs/generated/components/base--structure.md +264 -65
- package/docs/generated/components/base--table.md +61 -3
- package/docs/generated/components/base--text-inputs.md +17 -18
- package/docs/generated/components/base--timeline.md +45 -4
- package/docs/generated/components/base--toaster.md +43 -12
- package/docs/generated/components/base--toggle.md +11 -12
- package/docs/generated/components/base--toolbar.md +7 -8
- package/docs/generated/components/base--tooltip.md +5 -6
- package/docs/generated/components/base--typography.md +279 -32
- package/docs/generated/components/base--upload.md +8 -9
- package/docs/generated/components/base--value-inputs.md +9 -38
- package/docs/generated/components/{admin--patterns--access.md → blocks--admin--access.md} +5 -6
- package/docs/generated/components/{admin--patterns--commerce.md → blocks--admin--commerce.md} +40 -41
- package/docs/generated/components/{patterns--analytics.md → blocks--analytics.md} +13 -14
- package/docs/generated/components/{patterns--onboarding.md → blocks--onboarding.md} +6 -7
- package/docs/generated/components/{patterns--timelines.md → blocks--timelines.md} +6 -7
- package/docs/generated/components/features--actions.md +8 -18
- package/docs/generated/components/features--activities.md +31 -32
- package/docs/generated/components/features--ai-chat.md +15 -15
- package/docs/generated/components/features--async-preview.md +5 -6
- package/docs/generated/components/features--combobox.md +4 -5
- package/docs/generated/components/features--comments.md +0 -1
- package/docs/generated/components/features--data-view.md +4 -5
- package/docs/generated/components/features--event-calendar.md +1 -2
- package/docs/generated/components/features--filters.md +1 -2
- package/docs/generated/components/features--global-search.md +1 -2
- package/docs/generated/components/features--kanban.md +1 -2
- package/docs/generated/components/features--map.md +1 -2
- package/docs/generated/components/features--media-library.md +37 -38
- package/docs/generated/components/features--mentions.md +7 -7
- package/docs/generated/components/features--overlays.md +21 -22
- package/docs/generated/components/features--products.md +10 -11
- package/docs/generated/components/features--resource-assignment.md +2 -3
- package/docs/generated/components/features--resource.md +3 -4
- package/docs/generated/components/features--rich-text-editor.md +4 -13
- package/docs/generated/components/features--schema-form.md +1 -2
- package/docs/generated/components/features--sync.md +2 -3
- package/docs/generated/components/features--table.md +162 -12
- package/docs/generated/components/features--theme-tweaker.md +30 -15
- package/docs/generated/components/forms.md +2 -2
- package/docs/generated/components/layout--app-shell.md +10 -11
- package/docs/generated/components/layout--auth.md +8 -9
- package/docs/generated/components/layout--containers.md +0 -1
- package/docs/generated/components/layout--header.md +2 -3
- package/docs/generated/components/layout--navigation.md +0 -1
- package/docs/generated/components/layout--page.md +3 -4
- package/docs/generated/components/layout--settings.md +0 -1
- package/docs/generated/components/layout--sidebar.md +6 -7
- package/docs/generated/components/layout--workspace.md +3 -4
- package/docs/generated/components/primitives.md +128 -17
- package/docs/generated/components/theming.md +147 -4
- package/docs/generated/components/ui-provider.md +95 -77
- package/docs/generated/imports.md +104 -104
- package/docs/generated/migration-broad-imports.json +267 -90
- package/docs/generated/migration-broad-imports.md +266 -101
- package/docs/generated/migration-codemod.json +365 -70
- package/docs/generated/migration.md +665 -95
- package/docs/generated/profiles.md +27 -27
- package/docs/generated/public-api.md +104 -102
- package/docs/generated/recipes.json +585 -810
- package/docs/learn/api-compatibility.md +3 -3
- package/docs/learn/composition.md +2 -18
- package/docs/learn/framework-wiring.md +8 -8
- package/docs/learn/installation.md +55 -27
- package/docs/learn/migration.md +136 -5
- package/docs/learn/provider-and-scoping.md +13 -19
- package/docs/learn/theming.md +170 -131
- package/docs/learn/troubleshooting.md +62 -27
- package/docs/learn/verification.md +2 -3
- package/package.json +39 -473
- package/scripts/consumer/codemod.mjs +51 -12
- package/scripts/consumer/find-component.mjs +2 -4
- package/src/styles/TOKENS.md +115 -275
- package/dist/accordion-6YPJ9XRO.js +0 -135
- package/dist/admin/patterns/access.css +0 -15
- package/dist/admin/patterns/commerce.css +0 -29
- package/dist/admin/patterns/commerce.js +0 -2493
- package/dist/avatar-CS7zow2q.js +0 -85
- package/dist/badge-CxOuTfVr.js +0 -63
- package/dist/base/accordion.css +0 -3
- package/dist/base/action-menu.css +0 -6
- package/dist/base/alert-dialog.css +0 -4
- package/dist/base/aspect-ratio.css +0 -2
- package/dist/base/avatar.css +0 -4
- package/dist/base/badge.css +0 -2
- package/dist/base/batch-action-bar.css +0 -5
- package/dist/base/buttons.css +0 -4
- package/dist/base/cards.css +0 -13
- package/dist/base/carousel.css +0 -5
- package/dist/base/chart.css +0 -2
- package/dist/base/choice-inputs.css +0 -10
- package/dist/base/combobox.css +0 -3
- package/dist/base/command.css +0 -9
- package/dist/base/context-menu.css +0 -2
- package/dist/base/copyable.css +0 -6
- package/dist/base/date-pickers.css +0 -11
- package/dist/base/dialog.css +0 -4
- package/dist/base/display.css +0 -8
- package/dist/base/dropdown-menu.css +0 -2
- package/dist/base/feedback.css +0 -5
- package/dist/base/forms-numeric.css +0 -12
- package/dist/base/forms.css +0 -14
- package/dist/base/hover-card.css +0 -2
- package/dist/base/input-group.css +0 -6
- package/dist/base/item.css +0 -9
- package/dist/base/label.css +0 -3
- package/dist/base/menubar.css +0 -2
- package/dist/base/navigation-menu.css +0 -2
- package/dist/base/navigation.css +0 -12
- package/dist/base/otp-input.css +0 -9
- package/dist/base/overlay.css +0 -4
- package/dist/base/popover-menu.css +0 -11
- package/dist/base/popover.css +0 -3
- package/dist/base/qr-code.css +0 -2
- package/dist/base/repeaters.css +0 -18
- package/dist/base/resizable.css +0 -2
- package/dist/base/sheet.css +0 -4
- package/dist/base/sidebar.css +0 -12
- package/dist/base/skeleton.css +0 -9
- package/dist/base/spinner.css +0 -2
- package/dist/base/structure.css +0 -2
- package/dist/base/table.css +0 -3
- package/dist/base/text-inputs.css +0 -2
- package/dist/base/timeline.css +0 -9
- package/dist/base/toaster.css +0 -2
- package/dist/base/toggle.css +0 -2
- package/dist/base/toolbar.css +0 -5
- package/dist/base/tooltip.css +0 -2
- package/dist/base/typography.css +0 -2
- package/dist/base/upload.css +0 -10
- package/dist/base/value-inputs.css +0 -14
- package/dist/buttons-CqXKWty3.js +0 -179
- package/dist/cards-C6Ulbkw7.js +0 -271
- package/dist/chart-nomhJ87z.js +0 -193
- package/dist/choice-inputs-OUDn0kQw.js +0 -680
- package/dist/combobox-C8oP92bT.js +0 -266
- package/dist/command-Bp3B6pUu.js +0 -143
- package/dist/comments-CAnDlyXO.js +0 -1438
- package/dist/components/admin/patterns/index.d.ts +0 -2
- package/dist/components/features/rich-text-editor/exec-command-engine.d.ts +0 -2
- package/dist/components/patterns/index.d.ts +0 -3
- package/dist/css/styles.css +0 -1
- package/dist/date-pickers-DOwIT-Nk.js +0 -661
- package/dist/display-B3Q17h5z.js +0 -645
- package/dist/dropdown-menu-TyNLCLML.js +0 -223
- package/dist/features/actions.css +0 -11
- package/dist/features/activities.css +0 -25
- package/dist/features/ai-chat.css +0 -14
- package/dist/features/async-preview.css +0 -10
- package/dist/features/combobox.css +0 -12
- package/dist/features/comments.css +0 -24
- package/dist/features/data-view.css +0 -31
- package/dist/features/event-calendar.css +0 -17
- package/dist/features/filters.css +0 -24
- package/dist/features/global-search.css +0 -19
- package/dist/features/kanban.css +0 -7
- package/dist/features/map.css +0 -15
- package/dist/features/media-library.css +0 -27
- package/dist/features/mentions.css +0 -17
- package/dist/features/overlays.css +0 -11
- package/dist/features/products.css +0 -29
- package/dist/features/resource-assignment.css +0 -14
- package/dist/features/resource.css +0 -15
- package/dist/features/rich-text-editor.css +0 -8
- package/dist/features/schema-form.css +0 -22
- package/dist/features/sync.css +0 -11
- package/dist/features/table.css +0 -20
- package/dist/features/theme-tweaker.css +0 -27
- package/dist/feedback-DRerHGuV.js +0 -469
- package/dist/forms-CPrGGif_.js +0 -242
- package/dist/forms-numeric-CPVsL7Vf.js +0 -569
- package/dist/index.css +0 -3
- package/dist/input-group-BYe0rhoB.js +0 -126
- package/dist/item-B3yQ26as.js +0 -146
- package/dist/layout/app-shell.css +0 -13
- package/dist/layout/auth.css +0 -14
- package/dist/layout/containers.css +0 -2
- package/dist/layout/header.css +0 -20
- package/dist/layout/navigation.css +0 -11
- package/dist/layout/page.css +0 -15
- package/dist/layout/settings.css +0 -16
- package/dist/layout/sidebar.css +0 -16
- package/dist/layout/workspace.css +0 -15
- package/dist/navigation-CsqTA16F.js +0 -614
- package/dist/navigation-DzxzPuwg.js +0 -202
- package/dist/overlay-WQOsLd69.js +0 -345
- package/dist/patterns/analytics.css +0 -15
- package/dist/patterns/onboarding.css +0 -11
- package/dist/patterns/timelines.css +0 -11
- package/dist/popover-DriLnIFc.js +0 -123
- package/dist/popover-menu-C2UCMAe7.js +0 -189
- package/dist/primitives.css +0 -3
- package/dist/repeaters-DuP1N0nw.js +0 -438
- package/dist/rich-text-editor-BQXFe9oN.js +0 -595
- package/dist/sidebar-D0N6ckJL.js +0 -412
- package/dist/skeleton-DGR9df28.js +0 -172
- package/dist/spinner-CUAVFecI.js +0 -52
- package/dist/styles/FACTORS.md +0 -36
- package/dist/styles/SCOPES.md +0 -86
- package/dist/styles/themes/default.css +0 -164
- package/dist/styles/theming/animation.css +0 -143
- package/dist/styles/theming/colors.css +0 -97
- package/dist/styles/theming/feedback.css +0 -17
- package/dist/styles/theming/field.css +0 -21
- package/dist/styles/theming/focus.css +0 -88
- package/dist/styles/theming/layers.css +0 -13
- package/dist/styles/theming/layout.css +0 -21
- package/dist/styles/theming/motion.css +0 -42
- package/dist/styles/theming/overlay.css +0 -52
- package/dist/styles/theming/sizing.css +0 -118
- package/dist/styles/theming/text.css +0 -30
- package/dist/styles/theming/typography.css +0 -26
- package/dist/styles/tokens/components.css +0 -22
- package/dist/styles/tokens/foundation.css +0 -80
- package/dist/styles/tokens/layout.css +0 -19
- package/dist/styles/tokens/palette.css +0 -88
- package/dist/styles/tokens/primitives.css +0 -18
- package/dist/styles/tokens/states.css +0 -77
- package/dist/table-BC4qqsUb.js +0 -180
- package/dist/table-BHDpjajL.js +0 -982
- package/dist/text-inputs-DF_lD7pA.js +0 -385
- package/dist/theming-D6KRU7hO.js +0 -104
- package/dist/toolbar-DWRywF0R.js +0 -68
- package/dist/tooltip-t1VQQ2tZ.js +0 -73
- package/dist/upload-B38YZeFJ.js +0 -938
- package/dist/value-inputs-Q4ymjXlV.js +0 -716
- package/src/styles/FACTORS.md +0 -36
- package/src/styles/SCOPES.md +0 -86
- /package/dist/components/{admin/patterns → blocks/admin}/access/admin.strings.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/access/credential-list.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/access/index.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/access/role-permissions.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/access/sensitive-action.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/account.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/address-lines.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/booking.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/cart.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/commerce.strings.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/commerce.types.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/format-amount.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/index.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/inventory-section.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/invoice.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/loyalty.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/order-customer.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/order-detail.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/order-line-item.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/order-transactions.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/order.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/seo-listing.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/seo-score.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/summary-panel.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/analytics/activity-heatmap.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/analytics/analytics.types.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/analytics/chart-card.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/analytics/format-metric-value.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/analytics/index.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/analytics/metric-bar.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/analytics/metric-comparison.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/analytics/metric-gradient.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/analytics/metric-grid.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/analytics/metric-micro-grid.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/analytics/metric-skeleton.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/analytics/metric-trend-chip.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/analytics/metric.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/analytics/time-ruler.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/onboarding/checklist.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/onboarding/index.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/onboarding/onboarding.strings.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/timelines/changelog-timeline.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/timelines/index.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/timelines/milestones-timeline.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/timelines/steps.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/timelines/timelines.strings.d.ts +0 -0
- /package/dist/styles/{theming/breakpoints.css → breakpoints.css} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,192 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 3.1.0 — 2026-09-28
|
|
4
|
+
|
|
5
|
+
This release renames and removes public API. Read
|
|
6
|
+
[Upgrading to 3.1](docs/learn/migration.md#upgrading-to-31) before you upgrade, then run the
|
|
7
|
+
packaged codemod from your project, dry first:
|
|
8
|
+
|
|
9
|
+
```sh
|
|
10
|
+
node node_modules/themelia-ui/scripts/consumer/codemod.mjs --dry-run src/
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
### Breaking
|
|
14
|
+
|
|
15
|
+
- Blocks are published under `themelia-ui/blocks/`, the name the documentation, the
|
|
16
|
+
component index and the finder already use. `themelia-ui/patterns/analytics`,
|
|
17
|
+
`onboarding` and `timelines` are now `themelia-ui/blocks/analytics`, `onboarding` and
|
|
18
|
+
`timelines`; `themelia-ui/admin/patterns/access` and `commerce` are
|
|
19
|
+
`themelia-ui/blocks/admin/access` and `commerce`. The codemod rewrites JavaScript imports.
|
|
20
|
+
- Per-module CSS subpaths are removed. Component imports bring their stylesheets in bundled
|
|
21
|
+
apps; direct stylesheet links use `themelia-ui/style.css`.
|
|
22
|
+
- `ColorInputProps.emitHex` is removed; use `format="hex"`. The
|
|
23
|
+
`createExecCommandEngine` adapter is removed; RichTextEditor uses TipTap by default and
|
|
24
|
+
`createTiptapEngine` remains available for custom schemas.
|
|
25
|
+
- Complete `AnalyticsStrings`, `AsyncComboboxStrings` and `MediaLibraryStrings` translations
|
|
26
|
+
must provide all declared keys. `MediaLibraryState` requires its recovery and visible-selection
|
|
27
|
+
controls; `useMediaLibrary` supplies them.
|
|
28
|
+
- The theme is one level: about eighty variables declared once at `:root`, each colour a
|
|
29
|
+
`light-dark(light, dark)` pair, and every length, shadow, tint and duration in twos.
|
|
30
|
+
Components compute everything else where they use it, so a value set anywhere reaches every
|
|
31
|
+
component below it, and a dark region inside a light page needs no second set of values.
|
|
32
|
+
- The palette, the alpha steps (`--primary-10`), the spacing ladder (`--space-*`), the
|
|
33
|
+
control, icon and avatar ladders, the derived role variables, the dark twins, the
|
|
34
|
+
`--scale` and `--density-scale` factors, and `--font-serif`, which nothing read, are gone. The codemod renames each variable that
|
|
35
|
+
has a successor (`--control-h` to `--control-height`, `--size-icon` to `--icon-size`,
|
|
36
|
+
`--link-color` to `--link`) and reports the rest.
|
|
37
|
+
- A theme of your own is one `:root` block; the selector list for re-declaring colours at
|
|
38
|
+
every boundary is not needed.
|
|
39
|
+
- The `theming` cascade layer is gone: the order is `tokens, base, components, utilities`.
|
|
40
|
+
- `--animate-*` are gone. A `--keyframes-*` variable holds a keyframes name and you state
|
|
41
|
+
the timing: `animation: var(--keyframes-spin) 1s linear infinite`. The kit's keyframes
|
|
42
|
+
are named `themelia-*`, so a bare `spin` or `pulse` is no longer the kit's.
|
|
43
|
+
- `tokens.json` has no palette group; each colour is a token per mode, and shadows,
|
|
44
|
+
durations, the easing curve and the font stacks carry their DTCG types.
|
|
45
|
+
- Safari 17.5 or newer is required, for `light-dark()`.
|
|
46
|
+
- Fill style is `appearance` on every component that has one, so `tone` is colour,
|
|
47
|
+
`appearance` is fill and `variant` is structure:
|
|
48
|
+
- `buttonStyle` becomes `appearance` on `Button`, `TextButton`, `LoaderButton`,
|
|
49
|
+
`TooltipButton`, every component that forwards Button props, and action definitions.
|
|
50
|
+
`ButtonStyle` and `ActionButtonStyle` become `ButtonAppearance` and `ActionAppearance`,
|
|
51
|
+
provider defaults read `defaults.button.appearance`, and Button renders
|
|
52
|
+
`data-appearance` instead of `data-style`.
|
|
53
|
+
- `Badge`'s `variant` becomes `appearance` (`BadgeAppearance`); a metadata badge value's
|
|
54
|
+
`badgeVariant` becomes `badgeAppearance`. `badgeVariants` is no longer exported: a badge
|
|
55
|
+
takes its colour from its tone, so render a `Badge` (with `render` for a link) instead.
|
|
56
|
+
- `Toggle`'s and `SidebarMenuButton`'s `variant` become `appearance`; Toggle renders
|
|
57
|
+
`data-appearance` instead of `data-variant`.
|
|
58
|
+
- The overlays' and action modalities' `confirmStyle` becomes `confirmAppearance`
|
|
59
|
+
(`OverlayButtonAppearance`).
|
|
60
|
+
- Every size, padding and gap prop has two steps, `default` and `sm`:
|
|
61
|
+
- `gap`, `rowGap`, `columnGap` and `amount` on `Stack`, `Grid`, `AdaptiveGrid`, `Split` and
|
|
62
|
+
`Bleed` take `none`, `sm` (8px) or `default` (16px), and an unset `Stack` or `Split` gap
|
|
63
|
+
is now 16px instead of 8px.
|
|
64
|
+
- `maxWidth` and `sideWidth` take `default` (the content width), `sm`, `full`, `none` or a
|
|
65
|
+
CSS length; `AdaptiveGrid`'s `minColumnWidth` takes `default`, `sm` or a length. A free
|
|
66
|
+
string is no longer accepted, so a misspelt step cannot pass as a length.
|
|
67
|
+
- `ComponentScale` is `default | sm`: `Spinner`'s `size`, `Empty`'s and
|
|
68
|
+
`ResourceDetailsSection`'s `padding` and `DataTable`'s `size`. `md` is `default`; `lg` is
|
|
69
|
+
gone.
|
|
70
|
+
- `Avatar`, `SidebarMenuButton` and `AuthShell` lose `size="lg"`; `SidebarMenuButton`,
|
|
71
|
+
`SidebarMenuSubButton` and `AuthShell` name their middle step `default`.
|
|
72
|
+
- An overlay's, `SheetContent`'s and `ActionSheet`'s `size` takes `default`, `sm`, `full`
|
|
73
|
+
or a CSS length, and `length` and `inset` take a CSS length.
|
|
74
|
+
- `Slider` and `SliderField` have no `size`: under a finger the track and thumb grow into
|
|
75
|
+
a larger target by themselves. `InputGroupButton` has one size, and `iconOnly` makes it
|
|
76
|
+
square.
|
|
77
|
+
- `ActivityFeed`'s `itemSpacing` is `default | sm`.
|
|
78
|
+
- `density` belongs to the provider. `MetadataList`'s becomes `size` (`default | sm`, and
|
|
79
|
+
`data-size`), `MediaLibrary`'s and its parts' become `size`, `ActivityFeed`'s and its
|
|
80
|
+
rows' become `variant` (`data-variant`), and `AiTask`'s becomes `defaultExpanded`.
|
|
81
|
+
- An action modality's `size` and the `ActionOverlaySize` type are gone: nothing read them.
|
|
82
|
+
- `Text` drops `size="xxs"` and `weight="regular"`; write `xs` and `normal`.
|
|
83
|
+
- The ThemeTweaker writes one block in which each colour is a `light-dark()` pair, so an
|
|
84
|
+
exported theme follows `color-scheme` wherever it is applied:
|
|
85
|
+
- `ThemeSelectors` is `{ shared }`, and `createScopedThemeSelectors` returns it; the `light`
|
|
86
|
+
and `dark` selectors are gone.
|
|
87
|
+
- `themeToStyle(theme)` takes no mode: the style carries both halves.
|
|
88
|
+
- The default fields are the theme's variables, grouped into new `ThemeTweakerSection`s.
|
|
89
|
+
- The theming recipes write the theme's variables: `deriveThemePalette` sets `--link` and no
|
|
90
|
+
sidebar primary, `deriveThemeTypeScale` writes the type steps (Text pairs each step with its
|
|
91
|
+
line height), and `deriveThemeElevation` writes `--shadow` and `--shadow-lg`.
|
|
92
|
+
- The provider's `theme.colors` takes the theme's 38 colours (`SemanticToken`). `link-color`
|
|
93
|
+
is `link`, and `overlay-backdrop` is new. The `inverse-*` colours, `primary-accent`,
|
|
94
|
+
`destructive-accent`, `warning-accent` and `sidebar-primary*` are gone: an inverse region
|
|
95
|
+
is a nested provider with its own `colorScheme`, and a tone's text colour comes from its
|
|
96
|
+
tone. `theme.palette` and the `PaletteToken` type are gone with the palette.
|
|
97
|
+
- `MotionConfig.durations` takes `fast` and `normal`; `instant` is gone.
|
|
98
|
+
- The Tailwind bridge follows the theme. `p-padding`, `p-padding-sm`, `gap-gap` and
|
|
99
|
+
`gap-gap-sm` replace the spacing keys (`p-md` and the rest), `rounded` is the container
|
|
100
|
+
radius, and `animate-*`, `leading-*`, `tracking-*` and the shadow steps other than
|
|
101
|
+
`shadow` and `shadow-lg` are Tailwind's own again.
|
|
102
|
+
- Components bring their own CSS in a bundled app: importing a component from its subpath
|
|
103
|
+
adds its stylesheet, once, with one copy of `core.css`, and a module the application never
|
|
104
|
+
imports adds none. Remove JavaScript imports of `style.css` and of module stylesheets, which
|
|
105
|
+
now load the CSS twice; the codemod does it. Server rendering with Vite (Astro, React
|
|
106
|
+
Router, TanStack Start, Vike) needs the package in `ssr.noExternal`. With Tailwind, keep
|
|
107
|
+
`@import "tailwindcss"` and the bridge, and drop `@import "themelia-ui/style.css"` or
|
|
108
|
+
`@import "themelia-ui/core.css"` from the Tailwind entry. Pages with no bundler link
|
|
109
|
+
`style.css`. See [Upgrading to 3.1](docs/learn/migration.md#upgrading-to-31).
|
|
110
|
+
|
|
111
|
+
### Added
|
|
112
|
+
|
|
113
|
+
- Four ready-made themes in `themelia-ui/theming`, each a style rather than a colour: Soft,
|
|
114
|
+
Sharp, Dense and Editorial. A theme is a `ThemePreset` (a label, a description and the
|
|
115
|
+
provider config it sets), so it reaches past colour to radii, shadows, density, type, motion
|
|
116
|
+
and component defaults such as the card surface. Every theme's colours hold WCAG AA contrast
|
|
117
|
+
in both modes. The theme editor's `themeFromConfig()` loads a theme's colours and variables to
|
|
118
|
+
edit and export. The documentation site gains a Themes page and a Theme menu in its header.
|
|
119
|
+
- `Text` takes `heading`, the heading face (`--font-heading`) for a title that is not a
|
|
120
|
+
document heading. Card and dialog titles use it, so a theme's heading font reaches them.
|
|
121
|
+
- `DataTable` rows expand. `expandedRow` turns on a toggle at each row's start and the panel it
|
|
122
|
+
opens under the row: `render` draws the panel, and `onLoad` optionally fetches what it shows
|
|
123
|
+
when the row opens, with a skeleton meanwhile, the request aborted when the row closes, Retry
|
|
124
|
+
on failure and the result kept for the next open. `canExpand` leaves a row without a toggle,
|
|
125
|
+
`multiple: false` keeps one row open at a time, and `expanded`, `defaultExpanded` and
|
|
126
|
+
`onExpandedChange` control the open rows. The panel lines up with the first column, stays in
|
|
127
|
+
view on a table scrolled sideways, and keeps a panel that throws or suspends inside its row.
|
|
128
|
+
- `textClassName()` lends Text's classes to an element Text cannot wrap: a native control,
|
|
129
|
+
a button's label, a table cell. `Text` takes `mono` and `caps`.
|
|
130
|
+
- `AiShimmer` takes `size`, a step on the type scale as on `Text`.
|
|
131
|
+
- `richTextClassName()` lends RichText's prose surface to an element RichText cannot render,
|
|
132
|
+
such as an editor's content-editable root.
|
|
133
|
+
- Each block's page shows it composed from the lower tiers (analytics, timelines, onboarding,
|
|
134
|
+
access and commerce), for the case configuration does not reach.
|
|
135
|
+
|
|
136
|
+
### Changed
|
|
137
|
+
|
|
138
|
+
- `package.json` publishes modules through tier subpath patterns such as `./base/*`.
|
|
139
|
+
- Destructive is lighter in dark mode, so red text holds 4.5:1 on the hover fill, on its own
|
|
140
|
+
tint in a popover, and as a soft badge in a selected row.
|
|
141
|
+
- A framed Card's band is the item inset, and the surface inside it takes the concentric
|
|
142
|
+
corner, so a square-cornered theme keeps the band.
|
|
143
|
+
- `MetricTrendChip` and `MetricComparison` render `data-tone` as `success`, `destructive` or
|
|
144
|
+
`neutral`, the kit's tone names, instead of `positive` and `negative`.
|
|
145
|
+
- Checkboxes, radios and switches keep one size, 1.125rem, at every density.
|
|
146
|
+
- A disabled control shows the not-allowed cursor and dims; it no longer ignores the pointer.
|
|
147
|
+
- Menus take the radius of the control they open from: DropdownMenu, ContextMenu, ActionMenu,
|
|
148
|
+
Menubar, Select, Combobox, PopoverMenu, NavigationMenu and a Command inside a popover draw
|
|
149
|
+
`--radius-sm`, with rows at half of it inset by the other half, so the corners still nest.
|
|
150
|
+
Content popovers, hover cards and dialogs keep the container radius.
|
|
151
|
+
- Table headers are quieter: labels in the muted colour, with the sorted column's in the body
|
|
152
|
+
colour, a lighter band on `DataTable`, and 42px instead of 48px, following density. The whole
|
|
153
|
+
head cell sorts, and an unsorted column's arrow shows on hover or keyboard focus; touch
|
|
154
|
+
screens keep a faint one. `TableSkeleton` reserves the new height.
|
|
155
|
+
- A component used inside another, such as a Button in a menu, looks the same whatever order
|
|
156
|
+
a bundler emits the CSS in, and the same with `style.css` as in a bundled app.
|
|
157
|
+
|
|
158
|
+
### Fixed
|
|
159
|
+
|
|
160
|
+
- `MonoValue` renders in the monospaced face its documentation promises.
|
|
161
|
+
- `MapTooltip` draws its own surface; Leaflet's stylesheet left bare text on the map, and
|
|
162
|
+
its arrow points at the marker on every side.
|
|
163
|
+
- The fade at a scroll edge of `Carousel` and a scrolling `Table` lifts while the region
|
|
164
|
+
has focus, so it no longer hides the focus outline.
|
|
165
|
+
- `ResizableHandle` shows its active state while dragged again.
|
|
166
|
+
- A vertical `Slider` has its 10rem track; the track collapsed.
|
|
167
|
+
- Text in an `InputGroup` textarea is inset from the frame.
|
|
168
|
+
- A `Card` title with an info button lines up with one without.
|
|
169
|
+
- A default `Sheet` is 384px wide again; it rendered at 472px.
|
|
170
|
+
- Upload file sizes render at the small secondary size.
|
|
171
|
+
- A permission a role lacks, and a refund stage not yet reached, recede again.
|
|
172
|
+
- The AI composer draws one frame; it drew the field's frame inside its own.
|
|
173
|
+
- The breadcrumb bar no longer clips the sidebar trigger's focus outline, and the collapsed
|
|
174
|
+
sidebar rail no longer shows a sliver of each row's label.
|
|
175
|
+
- A nested provider with `density="default"` resets a density set further out; it kept the
|
|
176
|
+
outer one.
|
|
177
|
+
- A nested provider that sets `density` under a scaled one sizes that density at the
|
|
178
|
+
inherited scale; the outer lengths outranked the preset.
|
|
179
|
+
- Map controls sit on a ground and an edge of their own; over the tiles they were
|
|
180
|
+
see-through. An active drawing tool keeps its fill.
|
|
181
|
+
- A scrolling `DataTable`'s focus outline runs round the whole frame; its sticky header and
|
|
182
|
+
pinned columns painted over it.
|
|
183
|
+
- A failed attachment keeps its file name in view: the error shares the row, may widen the
|
|
184
|
+
chip to the tray, and shows in full on hover. Each attachment's link is named by its file;
|
|
185
|
+
every one was named "Download".
|
|
186
|
+
- The kit's animations run on a page that also loads Tailwind or tw-animate-css. Their
|
|
187
|
+
`spin`, `pulse`, `enter` and `exit` replaced the kit's keyframes, or the kit's replaced
|
|
188
|
+
theirs, whichever loaded last.
|
|
189
|
+
|
|
3
190
|
## 3.0.0 — 2026-09-27
|
|
4
191
|
|
|
5
192
|
A major release. The package is ES modules whose JavaScript imports no CSS, so each module's
|
package/README.md
CHANGED
|
@@ -14,7 +14,7 @@ themed through one set of CSS variables.
|
|
|
14
14
|
plugin is needed; applications that use Tailwind CSS v4 get a bridge to the theme.
|
|
15
15
|
- **Overrides without `!important`.** Component rules live in cascade layers, so a utility
|
|
16
16
|
in `className` or ordinary application CSS wins.
|
|
17
|
-
- **Import only what you use.** Every module has its own
|
|
17
|
+
- **Import only what you use.** Every module has its own subpath and brings only its own CSS.
|
|
18
18
|
Optional peers such as charts, maps and rich text are needed only by the modules that use
|
|
19
19
|
them.
|
|
20
20
|
- **Your application keeps its policy.** Routing, data fetching, persistence, permissions and
|
|
@@ -43,18 +43,17 @@ npm install themelia-ui
|
|
|
43
43
|
React 19 and `react-dom` are required peers. Every other peer is optional and needed only by
|
|
44
44
|
the modules that use it; the [import table](https://unpkg.com/themelia-ui/docs/generated/imports.md) lists which.
|
|
45
45
|
|
|
46
|
-
Themelia supports Chrome and Edge 125, Firefox 121 and Safari
|
|
46
|
+
Themelia supports Chrome and Edge 125, Firefox 121 and Safari 17.5 or newer. Builds and
|
|
47
47
|
server rendering need Node 20.19 or newer.
|
|
48
48
|
|
|
49
49
|
## Quick start
|
|
50
50
|
|
|
51
|
-
Put `UIProvider` at the root of the application
|
|
52
|
-
|
|
51
|
+
Put `UIProvider` at the root of the application and import each component from its module's
|
|
52
|
+
subpath. In a bundled app, a component brings its own CSS:
|
|
53
53
|
|
|
54
54
|
```tsx
|
|
55
55
|
import { Button } from "themelia-ui/base/buttons"
|
|
56
56
|
import { UIProvider } from "themelia-ui/ui-provider"
|
|
57
|
-
import "themelia-ui/style.css"
|
|
58
57
|
|
|
59
58
|
export function App() {
|
|
60
59
|
return (
|
|
@@ -65,7 +64,7 @@ export function App() {
|
|
|
65
64
|
}
|
|
66
65
|
```
|
|
67
66
|
|
|
68
|
-
|
|
67
|
+
Server rendering with Vite and pages with no bundler need one step more; see
|
|
69
68
|
[Load the CSS](#load-the-css).
|
|
70
69
|
|
|
71
70
|
## Load the CSS
|
|
@@ -73,42 +72,35 @@ export function App() {
|
|
|
73
72
|
The styles are precompiled CSS in cascade layers, declared in this order:
|
|
74
73
|
|
|
75
74
|
```css
|
|
76
|
-
@layer tokens,
|
|
75
|
+
@layer tokens, base, components, utilities;
|
|
77
76
|
```
|
|
78
77
|
|
|
79
|
-
|
|
78
|
+
**In a bundled app**, importing a component brings its stylesheet, once, and a module the
|
|
79
|
+
application never imports brings none. Do not also import `style.css` or a module stylesheet
|
|
80
|
+
from JavaScript; that loads the rules twice.
|
|
80
81
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
| `themelia-ui/style.css` | Everything: `core.css` and the rules of every module. |
|
|
84
|
-
| `themelia-ui/<module>.css`, such as `themelia-ui/base/buttons.css` | One module's rules and the stylesheets they build on. It imports `core.css` itself. |
|
|
85
|
-
| `themelia-ui/core.css` | The theme variables, the layer order, the Geist typefaces and the base element styles. No component rules. |
|
|
86
|
-
|
|
87
|
-
A module whose components draw nothing has no stylesheet. The
|
|
88
|
-
[import table](https://unpkg.com/themelia-ui/docs/generated/imports.md) lists the JavaScript and CSS path of every module.
|
|
82
|
+
**Server rendering with Vite** (Astro, React Router, TanStack Start, Vike) lists the package
|
|
83
|
+
in `ssr.noExternal`, or Vite hands it to Node without its CSS:
|
|
89
84
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
import; a bundler that handles CSS imports, such as Vite, webpack or Rspack, includes each file
|
|
94
|
-
once however many modules import it:
|
|
95
|
-
|
|
96
|
-
```tsx
|
|
97
|
-
import { Button } from "themelia-ui/base/buttons"
|
|
98
|
-
import "themelia-ui/base/buttons.css"
|
|
99
|
-
import { Page } from "themelia-ui/layout/page"
|
|
100
|
-
import "themelia-ui/layout/page.css"
|
|
85
|
+
```ts
|
|
86
|
+
// vite.config.ts, or the vite key of astro.config.mjs
|
|
87
|
+
export default { ssr: { noExternal: ["themelia-ui"] } }
|
|
101
88
|
```
|
|
102
89
|
|
|
103
|
-
|
|
104
|
-
|
|
90
|
+
**Without a bundler**, link `themelia-ui/style.css`; it includes `core.css`:
|
|
91
|
+
|
|
92
|
+
| Stylesheet | Contains |
|
|
93
|
+
| --- | --- |
|
|
94
|
+
| `themelia-ui/core.css` | The theme variables, the layer order, the Geist typefaces and the base element styles. No component rules. |
|
|
95
|
+
| `themelia-ui/style.css` | Everything: `core.css` and the rules of every module. |
|
|
105
96
|
|
|
106
97
|
### On the server and in tests
|
|
107
98
|
|
|
108
|
-
The package is ES modules
|
|
109
|
-
|
|
110
|
-
later can `require()` it
|
|
111
|
-
|
|
99
|
+
The package is ES modules. Outside a bundler its CSS imports resolve to an empty module, so
|
|
100
|
+
Node loads it without the CSS: Vitest needs no configuration, CommonJS code on Node 20.19 or
|
|
101
|
+
later can `require()` it, and a server render gets the CSS from the client build, or from
|
|
102
|
+
Vite through `ssr.noExternal` as above. Jest needs 29.4 or newer and transforms nothing in
|
|
103
|
+
`node_modules` by default: exempt the package in `transformIgnorePatterns`.
|
|
112
104
|
|
|
113
105
|
## Imports and tiers
|
|
114
106
|
|
|
@@ -122,7 +114,7 @@ up to complete blocks:
|
|
|
122
114
|
| Base | One control or concept, including `Text` and `Heading` | `themelia-ui/base/<module>` |
|
|
123
115
|
| Layout | Page and application shells | `themelia-ui/layout/<module>` |
|
|
124
116
|
| Features | An interaction lifecycle with controlled state | `themelia-ui/features/<module>` |
|
|
125
|
-
| Blocks | Subject-shaped compositions of the tiers above | `themelia-ui/
|
|
117
|
+
| Blocks | Subject-shaped compositions of the tiers above | `themelia-ui/blocks/<module>`, `themelia-ui/blocks/admin/<module>` |
|
|
126
118
|
|
|
127
119
|
```ts
|
|
128
120
|
import { UIProvider } from "themelia-ui/ui-provider"
|
|
@@ -130,7 +122,7 @@ import { Money } from "themelia-ui/primitives"
|
|
|
130
122
|
import { Button } from "themelia-ui/base/buttons"
|
|
131
123
|
import { Page } from "themelia-ui/layout/page"
|
|
132
124
|
import { DataTable } from "themelia-ui/features/table"
|
|
133
|
-
import { MetricGrid } from "themelia-ui/
|
|
125
|
+
import { MetricGrid } from "themelia-ui/blocks/analytics"
|
|
134
126
|
```
|
|
135
127
|
|
|
136
128
|
There are no tier barrels: `themelia-ui/base` does not exist, so one import never pulls in a
|
|
@@ -163,25 +155,22 @@ A nested `UIProvider` themes one region, and inherits whatever it does not set.
|
|
|
163
155
|
control, `UIRoot`, `UIScope`, `Scope` and `UIPortalHost` each do one of its jobs; see
|
|
164
156
|
[Provider and scoping](docs/learn/provider-and-scoping.md).
|
|
165
157
|
|
|
166
|
-
From CSS, set
|
|
167
|
-
|
|
168
|
-
|
|
158
|
+
From CSS, set any theme variable on `:root`. A colour holds both modes as
|
|
159
|
+
`light-dark(light, dark)`, and each element's `color-scheme` picks the half, so one
|
|
160
|
+
declaration reaches every region, a dark region inside a light page included:
|
|
169
161
|
|
|
170
162
|
```css
|
|
171
163
|
:root {
|
|
172
164
|
--radius: 1rem;
|
|
173
165
|
--radius-sm: 0.5rem;
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
:root, [data-ui-scope], [data-density], [data-theme], .light, .dark {
|
|
177
|
-
--primary: oklch(0.55 0.19 250);
|
|
178
|
-
--primary-foreground: oklch(0.985 0 0);
|
|
166
|
+
--primary: light-dark(oklch(0.55 0.19 250), oklch(0.72 0.14 250));
|
|
167
|
+
--primary-foreground: light-dark(oklch(0.985 0 0), oklch(0.2 0.03 250));
|
|
179
168
|
}
|
|
180
169
|
```
|
|
181
170
|
|
|
182
|
-
|
|
183
|
-
with `colorScheme: "system"`, the operating system's preference
|
|
184
|
-
|
|
171
|
+
A colour given one value is used in both modes. Dark mode follows `class="dark"`,
|
|
172
|
+
`data-theme="dark"` or, with `colorScheme: "system"`, the operating system's preference: each
|
|
173
|
+
sets `color-scheme`, and nothing is declared twice.
|
|
185
174
|
|
|
186
175
|
Beyond a few variables:
|
|
187
176
|
|
|
@@ -202,20 +191,19 @@ the bridge in the CSS entry that loads Tailwind:
|
|
|
202
191
|
|
|
203
192
|
```css
|
|
204
193
|
@import "tailwindcss";
|
|
205
|
-
@import "themelia-ui/style.css";
|
|
206
194
|
@import "themelia-ui/tailwind.css";
|
|
207
195
|
```
|
|
208
196
|
|
|
209
|
-
|
|
210
|
-
`themelia-ui/core.css`
|
|
197
|
+
The kit's own CSS arrives with its components. Do not `@import` `themelia-ui/style.css` or
|
|
198
|
+
`themelia-ui/core.css` here as well: that inlines a second copy.
|
|
211
199
|
|
|
212
200
|
The bridge is a Tailwind theme declaration generated from Themelia's variables. It does two
|
|
213
201
|
things:
|
|
214
202
|
|
|
215
|
-
1. Utilities read the live theme. `bg-primary`, `text-muted-foreground`, `rounded
|
|
216
|
-
|
|
217
|
-
through Themelia's variables at the element, so they follow dark mode,
|
|
218
|
-
and density.
|
|
203
|
+
1. Utilities read the live theme. `bg-primary`, `text-muted-foreground`, `rounded` (the
|
|
204
|
+
container radius), `rounded-sm` (the item radius), `p-padding`, `gap-gap-sm` and
|
|
205
|
+
`shadow-lg` resolve through Themelia's variables at the element, so they follow dark mode,
|
|
206
|
+
nested providers and density.
|
|
219
207
|
2. It keeps Tailwind's defaults from replacing the variables both define, such as
|
|
220
208
|
`--radius-sm`, `--text-sm` and `--font-sans`. Import it even if you never write one of
|
|
221
209
|
its utilities.
|
|
@@ -225,7 +213,7 @@ so a utility in `className` overrides a component's own rule. There is no need f
|
|
|
225
213
|
`!important` or `tailwind-merge`.
|
|
226
214
|
|
|
227
215
|
```tsx
|
|
228
|
-
<Button className="rounded-pill px-
|
|
216
|
+
<Button className="rounded-pill px-padding shadow-lg">Approve</Button>
|
|
229
217
|
```
|
|
230
218
|
|
|
231
219
|
## Overrides
|
|
@@ -265,11 +253,8 @@ action semantics, focus and the theme:
|
|
|
265
253
|
|
|
266
254
|
```tsx
|
|
267
255
|
import { Button } from "themelia-ui/base/buttons"
|
|
268
|
-
import "themelia-ui/base/buttons.css"
|
|
269
256
|
import { MetadataList } from "themelia-ui/base/display"
|
|
270
|
-
import "themelia-ui/base/display.css"
|
|
271
257
|
import { Page } from "themelia-ui/layout/page"
|
|
272
|
-
import "themelia-ui/layout/page.css"
|
|
273
258
|
|
|
274
259
|
function InvoiceDetail({ invoice, onCollectPayment }) {
|
|
275
260
|
return (
|
|
@@ -307,8 +292,8 @@ Search the catalogue that ships with the package, offline, by what the interface
|
|
|
307
292
|
node node_modules/themelia-ui/scripts/consumer/find-component.mjs "mobile filters for a table" --explain
|
|
308
293
|
```
|
|
309
294
|
|
|
310
|
-
Each match comes with its exact
|
|
311
|
-
|
|
295
|
+
Each match comes with its exact import and guidance on when to choose it and when to avoid
|
|
296
|
+
it. `--json` prints complete records, and `--help` lists the filters.
|
|
312
297
|
|
|
313
298
|
The package also ships a skill for coding assistants, built from the same catalogue:
|
|
314
299
|
|
|
@@ -340,7 +325,7 @@ under `node_modules/themelia-ui/docs`, and the links open the latest published c
|
|
|
340
325
|
|
|
341
326
|
- [Component catalogue](https://unpkg.com/themelia-ui/docs/generated/components/INDEX.md)
|
|
342
327
|
- [Public API index](https://unpkg.com/themelia-ui/docs/generated/public-api.md)
|
|
343
|
-
- [
|
|
328
|
+
- [Imports and optional peers](https://unpkg.com/themelia-ui/docs/generated/imports.md)
|
|
344
329
|
- [Theme variables](src/styles/TOKENS.md)
|
|
345
330
|
- [Recipes](https://unpkg.com/themelia-ui/docs/build/recipes.md)
|
|
346
331
|
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import "#core.css";
|
|
2
|
+
import { c as e, s as t } from "./typography-DmeR05Er.js";
|
|
3
|
+
import { t as n } from "./cx--CBrhWH0.js";
|
|
4
|
+
import { n as r } from "./ui-provider-DpzLUD12.js";
|
|
5
|
+
import { Accordion as i } from "@base-ui/react/accordion";
|
|
6
|
+
import { ChevronDownIcon as a } from "lucide-react";
|
|
7
|
+
import { jsx as o, jsxs as s } from "react/jsx-runtime";
|
|
8
|
+
import "#css/accordion.css";
|
|
9
|
+
var c = {
|
|
10
|
+
root: "accordion__root___hEph1",
|
|
11
|
+
surfaceBordered: "accordion__surfaceBordered___zgX5U",
|
|
12
|
+
surfaceCard: "accordion__surfaceCard___U4Iy7",
|
|
13
|
+
surfaceFlat: "accordion__surfaceFlat___qR6LI",
|
|
14
|
+
item: "accordion__item___3ML8e",
|
|
15
|
+
header: "accordion__header___OH-Pt",
|
|
16
|
+
trigger: "accordion__trigger___uSwje",
|
|
17
|
+
icon: "accordion__icon___LakYD",
|
|
18
|
+
panel: "accordion__panel___08Ioe",
|
|
19
|
+
content: "accordion__content___QPJl8",
|
|
20
|
+
row: "accordion__row___oCO96",
|
|
21
|
+
rowWithMedia: "accordion__rowWithMedia___0tYvT",
|
|
22
|
+
media: "accordion__media___uasy7",
|
|
23
|
+
mediaMedallion: "accordion__mediaMedallion___HST4U",
|
|
24
|
+
heading: "accordion__heading___l_NxV",
|
|
25
|
+
titleLine: "accordion__titleLine___Q0PVI",
|
|
26
|
+
badge: "accordion__badge___PHYok",
|
|
27
|
+
bodyWithMedia: "accordion__bodyWithMedia___jP5Gh",
|
|
28
|
+
bodyWithMedallion: "accordion__bodyWithMedallion___rRwpM"
|
|
29
|
+
}, l = {
|
|
30
|
+
bordered: c.surfaceBordered,
|
|
31
|
+
card: c.surfaceCard,
|
|
32
|
+
flat: c.surfaceFlat
|
|
33
|
+
};
|
|
34
|
+
function u(e) {
|
|
35
|
+
return typeof e == "string" || typeof e == "number" || typeof e == "bigint";
|
|
36
|
+
}
|
|
37
|
+
function d({ className: t, surface: a, items: s, media: u, children: d, ...f }) {
|
|
38
|
+
let p = r("accordion", {
|
|
39
|
+
surface: "bordered",
|
|
40
|
+
media: "inline"
|
|
41
|
+
}), m = a ?? p.surface, g = u ?? p.media;
|
|
42
|
+
return /* @__PURE__ */ o(i.Root, {
|
|
43
|
+
className: n("accordion--component", c.root, l[m], e({ size: "sm" }), t),
|
|
44
|
+
"data-surface": m,
|
|
45
|
+
...f,
|
|
46
|
+
children: d ?? s?.map((e) => /* @__PURE__ */ o(h, {
|
|
47
|
+
item: e,
|
|
48
|
+
media: g,
|
|
49
|
+
items: s
|
|
50
|
+
}, e.value))
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
function f({ className: e, ...t }) {
|
|
54
|
+
return /* @__PURE__ */ o(i.Item, {
|
|
55
|
+
className: n("accordion-item--component", c.item, e),
|
|
56
|
+
...t
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
function p({ className: r, children: l, ...d }) {
|
|
60
|
+
return /* @__PURE__ */ o(i.Header, {
|
|
61
|
+
className: c.header,
|
|
62
|
+
children: /* @__PURE__ */ s(i.Trigger, {
|
|
63
|
+
className: n("accordion-trigger--component", c.trigger, e({
|
|
64
|
+
size: "inherit",
|
|
65
|
+
weight: "medium"
|
|
66
|
+
}), r),
|
|
67
|
+
...d,
|
|
68
|
+
children: [u(l) ? /* @__PURE__ */ o(t, {
|
|
69
|
+
tag: "span",
|
|
70
|
+
size: "inherit",
|
|
71
|
+
weight: "medium",
|
|
72
|
+
children: l
|
|
73
|
+
}) : l, /* @__PURE__ */ o(a, {
|
|
74
|
+
"aria-hidden": !0,
|
|
75
|
+
className: c.icon
|
|
76
|
+
})]
|
|
77
|
+
})
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
function m({ className: r, children: a, ...s }) {
|
|
81
|
+
return /* @__PURE__ */ o(i.Panel, {
|
|
82
|
+
className: n("accordion-content--component", c.panel),
|
|
83
|
+
...s,
|
|
84
|
+
children: /* @__PURE__ */ o("div", {
|
|
85
|
+
className: n(c.content, e({
|
|
86
|
+
size: "inherit",
|
|
87
|
+
lineHeight: "relaxed"
|
|
88
|
+
}), r),
|
|
89
|
+
children: u(a) ? /* @__PURE__ */ o(t, {
|
|
90
|
+
tag: "div",
|
|
91
|
+
size: "inherit",
|
|
92
|
+
type: "secondary",
|
|
93
|
+
lineHeight: "relaxed",
|
|
94
|
+
children: a
|
|
95
|
+
}) : a
|
|
96
|
+
})
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
function h({ item: e, media: r, items: i }) {
|
|
100
|
+
let a = r !== "none" && i.some((e) => e.icon != null), l = a ? r === "medallion" ? c.bodyWithMedallion : c.bodyWithMedia : void 0;
|
|
101
|
+
return /* @__PURE__ */ s(f, {
|
|
102
|
+
value: e.value,
|
|
103
|
+
className: "accordion--item",
|
|
104
|
+
children: [/* @__PURE__ */ o(p, {
|
|
105
|
+
disabled: e.disabled,
|
|
106
|
+
className: "accordion--trigger",
|
|
107
|
+
children: /* @__PURE__ */ s("span", {
|
|
108
|
+
className: n(c.row, a && c.rowWithMedia),
|
|
109
|
+
children: [a && /* @__PURE__ */ o("span", {
|
|
110
|
+
"aria-hidden": !0,
|
|
111
|
+
className: n("accordion--media", c.media, r === "medallion" && e.icon != null && c.mediaMedallion),
|
|
112
|
+
children: e.icon
|
|
113
|
+
}), /* @__PURE__ */ s("span", {
|
|
114
|
+
className: n("accordion--heading", c.heading),
|
|
115
|
+
children: [/* @__PURE__ */ s("span", {
|
|
116
|
+
className: c.titleLine,
|
|
117
|
+
children: [u(e.title) ? /* @__PURE__ */ o(t, {
|
|
118
|
+
tag: "span",
|
|
119
|
+
size: "inherit",
|
|
120
|
+
weight: "medium",
|
|
121
|
+
className: "accordion--title",
|
|
122
|
+
children: e.title
|
|
123
|
+
}) : e.title, e.badge != null && /* @__PURE__ */ o("span", {
|
|
124
|
+
className: c.badge,
|
|
125
|
+
children: e.badge
|
|
126
|
+
})]
|
|
127
|
+
}), e.description != null && (u(e.description) ? /* @__PURE__ */ o(t, {
|
|
128
|
+
tag: "span",
|
|
129
|
+
size: "sm",
|
|
130
|
+
type: "secondary",
|
|
131
|
+
className: "accordion--description",
|
|
132
|
+
children: e.description
|
|
133
|
+
}) : e.description)]
|
|
134
|
+
})]
|
|
135
|
+
})
|
|
136
|
+
}), /* @__PURE__ */ o(m, {
|
|
137
|
+
className: n("accordion--content", l),
|
|
138
|
+
children: e.content
|
|
139
|
+
})]
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
//#endregion
|
|
143
|
+
export { p as i, m as n, f as r, d as t };
|