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
|
@@ -20,7 +20,7 @@ uses CSS Modules over Base UI, publishes exact module subpaths, and has no `ui/`
|
|
|
20
20
|
4. Prefer the highest ready module that owns the behavior, then customize it at the lowest
|
|
21
21
|
sufficient extension rung: prop → provider default → slot/render prop → composition →
|
|
22
22
|
consumer CSS → application-owned component.
|
|
23
|
-
5. Import the exact JavaScript subpath
|
|
23
|
+
5. Import the exact JavaScript subpath; in a bundled app its CSS comes with it.
|
|
24
24
|
6. Keep application policy in the application, then verify the composed result in its real
|
|
25
25
|
route, theme, density, data states, keyboard flow, and production bundle.
|
|
26
26
|
|
|
@@ -44,11 +44,9 @@ These paths exist after installation and are the source of truth:
|
|
|
44
44
|
| `node_modules/themelia-ui/docs/generated/components/INDEX.md` | module-by-module API references and recipes |
|
|
45
45
|
| `node_modules/themelia-ui/docs/generated/component-index.json` | machine-readable discovery records |
|
|
46
46
|
| `node_modules/themelia-ui/docs/generated/public-api.md` | every exported name and exact subpath |
|
|
47
|
-
| `node_modules/themelia-ui/docs/generated/imports.md` | every
|
|
47
|
+
| `node_modules/themelia-ui/docs/generated/imports.md` | every import and optional-peer owner |
|
|
48
48
|
| `node_modules/themelia-ui/docs/generated/recipes.json` | machine-readable live-preview examples |
|
|
49
|
-
| `node_modules/themelia-ui/src/styles/TOKENS.md` |
|
|
50
|
-
| `node_modules/themelia-ui/src/styles/FACTORS.md` | scale, spacing, density, and typography factors |
|
|
51
|
-
| `node_modules/themelia-ui/src/styles/SCOPES.md` | boundaries where derived tokens recompute |
|
|
49
|
+
| `node_modules/themelia-ui/src/styles/TOKENS.md` | the theme contract: every variable, its role, and what components compute from it |
|
|
52
50
|
| `node_modules/themelia-ui/docs/generated/migration.md` | every renamed or removed name, token and utility, with what replaces it |
|
|
53
51
|
| `node_modules/themelia-ui/scripts/consumer/codemod.mjs` | applies the mechanical half of an upgrade to your source |
|
|
54
52
|
|
|
@@ -67,11 +65,11 @@ node node_modules/themelia-ui/scripts/consumer/find-component.mjs --peer=@tansta
|
|
|
67
65
|
node node_modules/themelia-ui/scripts/consumer/find-component.mjs --help
|
|
68
66
|
```
|
|
69
67
|
|
|
70
|
-
It indexes 97 modules,
|
|
71
|
-
|
|
68
|
+
It indexes 97 modules, 395 attributed live recipes, and
|
|
69
|
+
119 live preview routes by public symbol, module id, recipe title, preview route,
|
|
72
70
|
component capabilities, descriptions, and positive selection guidance. Negative `avoidWhen` guidance is never treated as a
|
|
73
71
|
recommendation. `--json` includes the exact
|
|
74
|
-
`publicImport`, `
|
|
72
|
+
`publicImport`, `apiDoc`, optional peers, dependencies, and alternatives.
|
|
75
73
|
Use `--explain` to see matched components and why they fit. Component guidance identifies
|
|
76
74
|
curated decisions separately from module-level fallback; missing prop defaults are not inferred.
|
|
77
75
|
<!-- /GENERATED:search -->
|
|
@@ -102,9 +100,9 @@ Selection rules:
|
|
|
102
100
|
| Base (`base`) | 54 | one generic concept: text roles, controls, rows, passive structure | `themelia-ui/base/accordion` |
|
|
103
101
|
| Layout (`layout`) | 9 | page and application shells | `themelia-ui/layout/app-shell` |
|
|
104
102
|
| Features (`features`) | 24 | an owned interaction lifecycle — a context, a hook, a state machine | `themelia-ui/features/actions` |
|
|
105
|
-
| Blocks (`blocks`) | 5 | an arrangement rendering a subject; the admin blocks make up the admin profile | `themelia-ui/admin/
|
|
103
|
+
| Blocks (`blocks`) | 5 | an arrangement rendering a subject; the admin blocks make up the admin profile | `themelia-ui/blocks/admin/access` |
|
|
106
104
|
|
|
107
|
-
97 modules, 752 public components,
|
|
105
|
+
97 modules, 752 public components, 1072 exported symbols in total.
|
|
108
106
|
<!-- /GENERATED:tiers -->
|
|
109
107
|
|
|
110
108
|
Dependencies flow downward:
|
|
@@ -152,21 +150,21 @@ leaflet. Reach for a module by its own subpath and the question never comes up.
|
|
|
152
150
|
<!-- GENERATED:delivery by scripts/gen-agent-skill.mjs — do not edit between these markers. -->
|
|
153
151
|
```tsx compile
|
|
154
152
|
import { Button } from "themelia-ui/base/buttons"
|
|
155
|
-
import "themelia-ui/base/buttons.css"
|
|
156
153
|
```
|
|
157
154
|
|
|
158
|
-
**
|
|
159
|
-
|
|
155
|
+
**A component brings its own CSS.** In a bundled app (Vite, webpack, Rspack, Next.js, React
|
|
156
|
+
Router, Astro) importing the component is enough: its stylesheet arrives with its
|
|
157
|
+
JavaScript, once, and a module the application never imports brings none. Do not also
|
|
158
|
+
import `themelia-ui/style.css` or a module stylesheet from JavaScript; that loads the CSS twice.
|
|
160
159
|
|
|
161
|
-
**
|
|
162
|
-
`
|
|
163
|
-
Import `core.css` on its own only when application CSS needs the token contract before
|
|
164
|
-
any component stylesheet is loaded.
|
|
160
|
+
**Server rendering with Vite needs one line.** Astro, React Router, TanStack Start and Vike
|
|
161
|
+
list `themelia-ui` in `ssr.noExternal`; Astro renders the kit unstyled without it.
|
|
165
162
|
|
|
166
|
-
`themelia-ui/style.css
|
|
167
|
-
|
|
163
|
+
**No bundler:** link `themelia-ui/style.css`, which includes `core.css`. Node, Vitest and
|
|
164
|
+
`require()` load the JavaScript with no CSS setup; Jest needs 29.4 or newer, with the package
|
|
165
|
+
exempted in `transformIgnorePatterns`.
|
|
168
166
|
|
|
169
|
-
|
|
167
|
+
Consumer overrides need no ordering: the kit's component rules are layered, so ordinary
|
|
170
168
|
unlayered app CSS wins without specificity tricks.
|
|
171
169
|
<!-- /GENERATED:delivery -->
|
|
172
170
|
|
|
@@ -192,7 +190,7 @@ There are 15 optional peer packages. A consumer only needs the peers reachable f
|
|
|
192
190
|
| `react-hook-form` | `features/sync`, `forms-rhf` |
|
|
193
191
|
| `react-leaflet` | `features/map` |
|
|
194
192
|
| `react-leaflet-markercluster` | `features/map` |
|
|
195
|
-
| `recharts` | `base/chart`, `
|
|
193
|
+
| `recharts` | `base/chart`, `blocks/analytics` |
|
|
196
194
|
<!-- /GENERATED:peers -->
|
|
197
195
|
|
|
198
196
|
## Provider, scopes, themes, and portals
|
|
@@ -224,15 +222,15 @@ export function ScopedPreview() {
|
|
|
224
222
|
}
|
|
225
223
|
```
|
|
226
224
|
|
|
227
|
-
Theme through the public contract in `node_modules/themelia-ui/src/styles/TOKENS.md
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
225
|
+
Theme through the public contract in `node_modules/themelia-ui/src/styles/TOKENS.md`: about
|
|
226
|
+
eighty variables, declared once at `:root`, each colour a `light-dark(light, dark)` pair. Set
|
|
227
|
+
the ones you change on `:root` (or on any element, for a region); nothing below `:root`
|
|
228
|
+
declares them again. A denser region is the provider's `density` or `scale`, and type alone
|
|
229
|
+
is `typography.scale`. A component's own variables are private (`--_x`), never an override
|
|
230
|
+
surface.
|
|
233
231
|
|
|
234
|
-
|
|
235
|
-
|
|
232
|
+
Kit component rules are layered, so ordinary unlayered consumer CSS wins whatever its order,
|
|
233
|
+
without `!important`. Target stable documented `data-slot` or
|
|
236
234
|
BEM hooks, and Base UI's state attributes (`data-open`, `data-checked`, `data-disabled`,
|
|
237
235
|
`data-highlighted`, `data-popup-open`) for a state — not Radix's `[data-state="open"]`; never
|
|
238
236
|
target CSS Module hashes. If the application uses Tailwind
|
|
@@ -15,9 +15,9 @@ exported props/type members are compatibility surfaces. Public global theme toke
|
|
|
15
15
|
| a documented default changes | behavioural change; release notes required |
|
|
16
16
|
| component token or hashed CSS Module name changes | internal unless documented as an extension point |
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
3.1 removes obsolete aliases and adapters. Removed names do not stay available solely for an
|
|
19
|
+
upgrade window. A breaking release records the replacement in the migration reference and
|
|
20
|
+
the changelog; consumers pin the old version until they are ready to update.
|
|
21
21
|
|
|
22
22
|
A removal, a newly required member or an incompatible type change ships with a migration
|
|
23
23
|
record: the migration reference (`node_modules/themelia-ui/docs/generated/migration.md`) names each one with its
|
|
@@ -68,11 +68,8 @@ generic metadata, and an action without teaching the package what an invoice is:
|
|
|
68
68
|
|
|
69
69
|
```tsx compile
|
|
70
70
|
import { Button } from "themelia-ui/base/buttons"
|
|
71
|
-
import "themelia-ui/base/buttons.css"
|
|
72
71
|
import { MetadataList } from "themelia-ui/base/display"
|
|
73
|
-
import "themelia-ui/base/display.css"
|
|
74
72
|
import { Page } from "themelia-ui/layout/page"
|
|
75
|
-
import "themelia-ui/layout/page.css"
|
|
76
73
|
|
|
77
74
|
type Invoice = { id: string; number: string; customerName: string; status: string; dueLabel: string }
|
|
78
75
|
export function InvoiceDetail({ invoice, onCollectPayment }: {
|
|
@@ -111,10 +108,8 @@ callbacks, then open each linked module reference for the complete prop contract
|
|
|
111
108
|
### Dashboard
|
|
112
109
|
|
|
113
110
|
```tsx fragment — dashboard data and chart series come from the consuming application
|
|
114
|
-
import { MetricGrid } from "themelia-ui/
|
|
115
|
-
import "themelia-ui/patterns/analytics.css"
|
|
111
|
+
import { MetricGrid } from "themelia-ui/blocks/analytics"
|
|
116
112
|
import { Page } from "themelia-ui/layout/page"
|
|
117
|
-
import "themelia-ui/layout/page.css"
|
|
118
113
|
|
|
119
114
|
<Page header={{ title: "Overview", description: periodLabel }}>
|
|
120
115
|
<MetricGrid metrics={metrics} variant="card" />
|
|
@@ -128,7 +123,6 @@ window, permission-filtered figures, and what clicking a metric means.
|
|
|
128
123
|
|
|
129
124
|
```tsx fragment — columns, filters, records, paging, and mutations are consumer-owned
|
|
130
125
|
import { DataView, DataViewPagination } from "themelia-ui/features/data-view"
|
|
131
|
-
import "themelia-ui/features/data-view.css"
|
|
132
126
|
|
|
133
127
|
<DataView
|
|
134
128
|
data={records}
|
|
@@ -152,9 +146,7 @@ record type out of the package.
|
|
|
152
146
|
|
|
153
147
|
```tsx fragment — validation, field values, submit mutation, and product copy remain in the app
|
|
154
148
|
import { FormActionsBar, FormField, FormSection, SubmitStateButton } from "themelia-ui/base/forms"
|
|
155
|
-
import "themelia-ui/base/forms.css"
|
|
156
149
|
import { Input } from "themelia-ui/base/text-inputs"
|
|
157
|
-
import "themelia-ui/base/text-inputs.css"
|
|
158
150
|
|
|
159
151
|
<FormSection title="Billing" description="Where invoices go.">
|
|
160
152
|
<FormField label="Company" error={errors.company}>
|
|
@@ -171,7 +163,6 @@ adapter when React Hook Form already owns the state.
|
|
|
171
163
|
|
|
172
164
|
```tsx fragment — route matching and the router link renderer belong to the application
|
|
173
165
|
import { AsideNavShell } from "themelia-ui/layout/settings"
|
|
174
|
-
import "themelia-ui/layout/settings.css"
|
|
175
166
|
|
|
176
167
|
<AsideNavShell
|
|
177
168
|
title="Settings"
|
|
@@ -218,15 +209,10 @@ the entered value; pending state prevents a second submission.
|
|
|
218
209
|
```tsx compile
|
|
219
210
|
import { useState } from "react"
|
|
220
211
|
import { Card, CardHeader, CardContent } from "themelia-ui/base/cards"
|
|
221
|
-
import "themelia-ui/base/cards.css"
|
|
222
212
|
import { FormField } from "themelia-ui/base/forms"
|
|
223
|
-
import "themelia-ui/base/forms.css"
|
|
224
213
|
import { Input } from "themelia-ui/base/text-inputs"
|
|
225
|
-
import "themelia-ui/base/text-inputs.css"
|
|
226
214
|
import { Button } from "themelia-ui/base/buttons"
|
|
227
|
-
import "themelia-ui/base/buttons.css"
|
|
228
215
|
import { Stack } from "themelia-ui/base/structure"
|
|
229
|
-
import "themelia-ui/base/structure.css"
|
|
230
216
|
|
|
231
217
|
export function RenameRecord({ initialName, save }: {
|
|
232
218
|
initialName: string
|
|
@@ -248,7 +234,7 @@ export function RenameRecord({ initialName, save }: {
|
|
|
248
234
|
catch { setError("Could not save. Your changes are still here; try again.") }
|
|
249
235
|
finally { setPending(false) }
|
|
250
236
|
}}>
|
|
251
|
-
<Stack gap="
|
|
237
|
+
<Stack gap="sm">
|
|
252
238
|
<FormField label="Name" error={error}>
|
|
253
239
|
<Input value={name} disabled={pending} onChange={(event) => setName(event.target.value)} />
|
|
254
240
|
</FormField>
|
|
@@ -270,7 +256,6 @@ filtering contract to your query layer instead of filtering an already paged sub
|
|
|
270
256
|
```tsx compile
|
|
271
257
|
import { useState } from "react"
|
|
272
258
|
import { DataView, type DataViewProps } from "themelia-ui/features/data-view"
|
|
273
|
-
import "themelia-ui/features/data-view.css"
|
|
274
259
|
import { FilterType, FilterOperator, type ActiveFilter, type FilterConfig } from "themelia-ui/features/filters"
|
|
275
260
|
|
|
276
261
|
type RecordRow = { id: string; name: string; status: string }
|
|
@@ -298,7 +283,6 @@ edge fade through the public prop instead of adding a local mask or a second scr
|
|
|
298
283
|
|
|
299
284
|
```tsx compile
|
|
300
285
|
import { Tabs, TabList, Tab, TabPanel } from "themelia-ui/base/navigation"
|
|
301
|
-
import "themelia-ui/base/navigation.css"
|
|
302
286
|
|
|
303
287
|
export function SettingsTabs() {
|
|
304
288
|
return <Tabs defaultValue="general">
|
|
@@ -73,14 +73,14 @@ For CSP, portals, nested theme regions, and defaults, use
|
|
|
73
73
|
[Provider and scoping](provider-and-scoping.md). Do not recreate provider context in an
|
|
74
74
|
application adapter unless the documented public hooks are insufficient.
|
|
75
75
|
|
|
76
|
-
## Vite, Next.js, and CSS
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
76
|
+
## Vite, Next.js, and CSS
|
|
77
|
+
|
|
78
|
+
A component brings its own CSS, so there is no stylesheet to collect: it arrives through the
|
|
79
|
+
component's JavaScript, which your bundler processes. Frameworks that render on the server
|
|
80
|
+
with Vite, such as Astro, React Router, TanStack Start and Vike, list the package in
|
|
81
|
+
`ssr.noExternal`; see [Server rendering with Vite](installation.md#server-rendering-with-vite).
|
|
82
|
+
Parcel needs its `packageExports` option. Next.js needs nothing. Pages with no bundler link
|
|
83
|
+
`style.css`.
|
|
84
84
|
|
|
85
85
|
Server-rendered HTML and the client bundle must load the same theme tokens before hydration.
|
|
86
86
|
Apply the theme attribute and provider configuration from the same persisted value to avoid
|
|
@@ -6,115 +6,115 @@ Every module has one subpath. There are no tier barrels: `themelia-ui/base` and
|
|
|
6
6
|
siblings do not exist, because one specifier would pull an entire tier and every optional
|
|
7
7
|
peer inside it. The root carries the provider and the display primitives, both peer-free.
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
A component brings its own CSS in a bundled app. Pages with no bundler link `style.css`; see
|
|
10
|
+
docs/learn/installation.md.
|
|
11
11
|
|
|
12
12
|
## general profile — 95 modules
|
|
13
13
|
|
|
14
|
-
| module | import |
|
|
15
|
-
| --- | --- | --- |
|
|
16
|
-
| `base/accordion` | `themelia-ui/base/accordion` |
|
|
17
|
-
| `base/action-menu` | `themelia-ui/base/action-menu` |
|
|
18
|
-
| `base/alert-dialog` | `themelia-ui/base/alert-dialog` |
|
|
19
|
-
| `base/aspect-ratio` | `themelia-ui/base/aspect-ratio` |
|
|
20
|
-
| `base/avatar` | `themelia-ui/base/avatar` |
|
|
21
|
-
| `base/badge` | `themelia-ui/base/badge` |
|
|
22
|
-
| `base/batch-action-bar` | `themelia-ui/base/batch-action-bar` |
|
|
23
|
-
| `base/buttons` | `themelia-ui/base/buttons` |
|
|
24
|
-
| `base/cards` | `themelia-ui/base/cards` |
|
|
25
|
-
| `base/carousel` | `themelia-ui/base/carousel` |
|
|
26
|
-
| `base/chart` | `themelia-ui/base/chart` |
|
|
27
|
-
| `base/choice-inputs` | `themelia-ui/base/choice-inputs` |
|
|
28
|
-
| `base/combobox` | `themelia-ui/base/combobox` |
|
|
29
|
-
| `base/command` | `themelia-ui/base/command` |
|
|
30
|
-
| `base/context-menu` | `themelia-ui/base/context-menu` |
|
|
31
|
-
| `base/copyable` | `themelia-ui/base/copyable` |
|
|
32
|
-
| `base/date-pickers` | `themelia-ui/base/date-pickers` |
|
|
33
|
-
| `base/dialog` | `themelia-ui/base/dialog` |
|
|
34
|
-
| `base/direction` | `themelia-ui/base/direction` | — |
|
|
35
|
-
| `base/display` | `themelia-ui/base/display` |
|
|
36
|
-
| `base/dropdown-menu` | `themelia-ui/base/dropdown-menu` |
|
|
37
|
-
| `base/feedback` | `themelia-ui/base/feedback` |
|
|
38
|
-
| `base/forms` | `themelia-ui/base/forms` |
|
|
39
|
-
| `base/forms-numeric` | `themelia-ui/base/forms-numeric` |
|
|
40
|
-
| `base/hover-card` | `themelia-ui/base/hover-card` |
|
|
41
|
-
| `base/input-group` | `themelia-ui/base/input-group` |
|
|
42
|
-
| `base/item` | `themelia-ui/base/item` |
|
|
43
|
-
| `base/label` | `themelia-ui/base/label` |
|
|
44
|
-
| `base/menubar` | `themelia-ui/base/menubar` |
|
|
45
|
-
| `base/navigation` | `themelia-ui/base/navigation` |
|
|
46
|
-
| `base/navigation-menu` | `themelia-ui/base/navigation-menu` |
|
|
47
|
-
| `base/otp-input` | `themelia-ui/base/otp-input` |
|
|
48
|
-
| `base/overlay` | `themelia-ui/base/overlay` |
|
|
49
|
-
| `base/popover` | `themelia-ui/base/popover` |
|
|
50
|
-
| `base/popover-menu` | `themelia-ui/base/popover-menu` |
|
|
51
|
-
| `base/qr-code` | `themelia-ui/base/qr-code` |
|
|
52
|
-
| `base/repeaters` | `themelia-ui/base/repeaters` |
|
|
53
|
-
| `base/resizable` | `themelia-ui/base/resizable` |
|
|
54
|
-
| `base/sheet` | `themelia-ui/base/sheet` |
|
|
55
|
-
| `base/sidebar` | `themelia-ui/base/sidebar` |
|
|
56
|
-
| `base/skeleton` | `themelia-ui/base/skeleton` |
|
|
57
|
-
| `base/slot` | `themelia-ui/base/slot` | — |
|
|
58
|
-
| `base/spinner` | `themelia-ui/base/spinner` |
|
|
59
|
-
| `base/structure` | `themelia-ui/base/structure` |
|
|
60
|
-
| `base/table` | `themelia-ui/base/table` |
|
|
61
|
-
| `base/text-inputs` | `themelia-ui/base/text-inputs` |
|
|
62
|
-
| `base/timeline` | `themelia-ui/base/timeline` |
|
|
63
|
-
| `base/toaster` | `themelia-ui/base/toaster` |
|
|
64
|
-
| `base/toggle` | `themelia-ui/base/toggle` |
|
|
65
|
-
| `base/toolbar` | `themelia-ui/base/toolbar` |
|
|
66
|
-
| `base/tooltip` | `themelia-ui/base/tooltip` |
|
|
67
|
-
| `base/typography` | `themelia-ui/base/typography` |
|
|
68
|
-
| `base/upload` | `themelia-ui/base/upload` |
|
|
69
|
-
| `base/value-inputs` | `themelia-ui/base/value-inputs` |
|
|
70
|
-
| `
|
|
71
|
-
| `
|
|
72
|
-
| `
|
|
73
|
-
| `features/
|
|
74
|
-
| `features/
|
|
75
|
-
| `features/
|
|
76
|
-
| `features/
|
|
77
|
-
| `features/
|
|
78
|
-
| `features/
|
|
79
|
-
| `features/
|
|
80
|
-
| `features/
|
|
81
|
-
| `features/
|
|
82
|
-
| `features/
|
|
83
|
-
| `features/
|
|
84
|
-
| `features/
|
|
85
|
-
| `features/
|
|
86
|
-
| `features/
|
|
87
|
-
| `features/
|
|
88
|
-
| `features/
|
|
89
|
-
| `features/
|
|
90
|
-
| `features/
|
|
91
|
-
| `features/
|
|
92
|
-
| `features/
|
|
93
|
-
| `features/
|
|
94
|
-
| `
|
|
95
|
-
| `
|
|
96
|
-
| `
|
|
97
|
-
| `
|
|
98
|
-
| `
|
|
99
|
-
| `layout/
|
|
100
|
-
| `layout/
|
|
101
|
-
| `layout/
|
|
102
|
-
| `layout/
|
|
103
|
-
| `layout/
|
|
104
|
-
| `layout/
|
|
105
|
-
| `
|
|
106
|
-
| `
|
|
107
|
-
| `
|
|
108
|
-
| `primitives` | `themelia-ui/primitives` |
|
|
109
|
-
| `theming` | `themelia-ui/theming` | — |
|
|
110
|
-
| `ui-provider` | `themelia-ui/ui-provider` | — |
|
|
14
|
+
| module | import | optional peers |
|
|
15
|
+
| --- | --- | --- |
|
|
16
|
+
| `base/accordion` | `themelia-ui/base/accordion` | — |
|
|
17
|
+
| `base/action-menu` | `themelia-ui/base/action-menu` | — |
|
|
18
|
+
| `base/alert-dialog` | `themelia-ui/base/alert-dialog` | — |
|
|
19
|
+
| `base/aspect-ratio` | `themelia-ui/base/aspect-ratio` | — |
|
|
20
|
+
| `base/avatar` | `themelia-ui/base/avatar` | — |
|
|
21
|
+
| `base/badge` | `themelia-ui/base/badge` | — |
|
|
22
|
+
| `base/batch-action-bar` | `themelia-ui/base/batch-action-bar` | — |
|
|
23
|
+
| `base/buttons` | `themelia-ui/base/buttons` | — |
|
|
24
|
+
| `base/cards` | `themelia-ui/base/cards` | — |
|
|
25
|
+
| `base/carousel` | `themelia-ui/base/carousel` | — |
|
|
26
|
+
| `base/chart` | `themelia-ui/base/chart` | recharts |
|
|
27
|
+
| `base/choice-inputs` | `themelia-ui/base/choice-inputs` | — |
|
|
28
|
+
| `base/combobox` | `themelia-ui/base/combobox` | — |
|
|
29
|
+
| `base/command` | `themelia-ui/base/command` | — |
|
|
30
|
+
| `base/context-menu` | `themelia-ui/base/context-menu` | — |
|
|
31
|
+
| `base/copyable` | `themelia-ui/base/copyable` | — |
|
|
32
|
+
| `base/date-pickers` | `themelia-ui/base/date-pickers` | — |
|
|
33
|
+
| `base/dialog` | `themelia-ui/base/dialog` | — |
|
|
34
|
+
| `base/direction` | `themelia-ui/base/direction` | — |
|
|
35
|
+
| `base/display` | `themelia-ui/base/display` | — |
|
|
36
|
+
| `base/dropdown-menu` | `themelia-ui/base/dropdown-menu` | — |
|
|
37
|
+
| `base/feedback` | `themelia-ui/base/feedback` | — |
|
|
38
|
+
| `base/forms` | `themelia-ui/base/forms` | — |
|
|
39
|
+
| `base/forms-numeric` | `themelia-ui/base/forms-numeric` | — |
|
|
40
|
+
| `base/hover-card` | `themelia-ui/base/hover-card` | — |
|
|
41
|
+
| `base/input-group` | `themelia-ui/base/input-group` | — |
|
|
42
|
+
| `base/item` | `themelia-ui/base/item` | — |
|
|
43
|
+
| `base/label` | `themelia-ui/base/label` | — |
|
|
44
|
+
| `base/menubar` | `themelia-ui/base/menubar` | — |
|
|
45
|
+
| `base/navigation` | `themelia-ui/base/navigation` | — |
|
|
46
|
+
| `base/navigation-menu` | `themelia-ui/base/navigation-menu` | — |
|
|
47
|
+
| `base/otp-input` | `themelia-ui/base/otp-input` | — |
|
|
48
|
+
| `base/overlay` | `themelia-ui/base/overlay` | — |
|
|
49
|
+
| `base/popover` | `themelia-ui/base/popover` | — |
|
|
50
|
+
| `base/popover-menu` | `themelia-ui/base/popover-menu` | — |
|
|
51
|
+
| `base/qr-code` | `themelia-ui/base/qr-code` | — |
|
|
52
|
+
| `base/repeaters` | `themelia-ui/base/repeaters` | — |
|
|
53
|
+
| `base/resizable` | `themelia-ui/base/resizable` | — |
|
|
54
|
+
| `base/sheet` | `themelia-ui/base/sheet` | — |
|
|
55
|
+
| `base/sidebar` | `themelia-ui/base/sidebar` | — |
|
|
56
|
+
| `base/skeleton` | `themelia-ui/base/skeleton` | — |
|
|
57
|
+
| `base/slot` | `themelia-ui/base/slot` | — |
|
|
58
|
+
| `base/spinner` | `themelia-ui/base/spinner` | — |
|
|
59
|
+
| `base/structure` | `themelia-ui/base/structure` | — |
|
|
60
|
+
| `base/table` | `themelia-ui/base/table` | — |
|
|
61
|
+
| `base/text-inputs` | `themelia-ui/base/text-inputs` | — |
|
|
62
|
+
| `base/timeline` | `themelia-ui/base/timeline` | — |
|
|
63
|
+
| `base/toaster` | `themelia-ui/base/toaster` | — |
|
|
64
|
+
| `base/toggle` | `themelia-ui/base/toggle` | — |
|
|
65
|
+
| `base/toolbar` | `themelia-ui/base/toolbar` | — |
|
|
66
|
+
| `base/tooltip` | `themelia-ui/base/tooltip` | — |
|
|
67
|
+
| `base/typography` | `themelia-ui/base/typography` | — |
|
|
68
|
+
| `base/upload` | `themelia-ui/base/upload` | — |
|
|
69
|
+
| `base/value-inputs` | `themelia-ui/base/value-inputs` | — |
|
|
70
|
+
| `blocks/analytics` | `themelia-ui/blocks/analytics` | recharts |
|
|
71
|
+
| `blocks/onboarding` | `themelia-ui/blocks/onboarding` | — |
|
|
72
|
+
| `blocks/timelines` | `themelia-ui/blocks/timelines` | — |
|
|
73
|
+
| `features/actions` | `themelia-ui/features/actions` | — |
|
|
74
|
+
| `features/activities` | `themelia-ui/features/activities` | @tiptap/core, @tiptap/pm, @tiptap/starter-kit |
|
|
75
|
+
| `features/ai-chat` | `themelia-ui/features/ai-chat` | — |
|
|
76
|
+
| `features/async-preview` | `themelia-ui/features/async-preview` | — |
|
|
77
|
+
| `features/combobox` | `themelia-ui/features/combobox` | — |
|
|
78
|
+
| `features/comments` | `themelia-ui/features/comments` | @tiptap/core, @tiptap/pm, @tiptap/starter-kit |
|
|
79
|
+
| `features/data-view` | `themelia-ui/features/data-view` | @tanstack/react-table |
|
|
80
|
+
| `features/event-calendar` | `themelia-ui/features/event-calendar` | — |
|
|
81
|
+
| `features/filters` | `themelia-ui/features/filters` | — |
|
|
82
|
+
| `features/global-search` | `themelia-ui/features/global-search` | — |
|
|
83
|
+
| `features/kanban` | `themelia-ui/features/kanban` | @dnd-kit/core, @dnd-kit/sortable, @dnd-kit/utilities |
|
|
84
|
+
| `features/map` | `themelia-ui/features/map` | leaflet, leaflet-draw, leaflet.fullscreen, leaflet.markercluster, react-leaflet, react-leaflet-markercluster |
|
|
85
|
+
| `features/media-library` | `themelia-ui/features/media-library` | — |
|
|
86
|
+
| `features/mentions` | `themelia-ui/features/mentions` | — |
|
|
87
|
+
| `features/overlays` | `themelia-ui/features/overlays` | — |
|
|
88
|
+
| `features/products` | `themelia-ui/features/products` | @tanstack/react-table |
|
|
89
|
+
| `features/resource` | `themelia-ui/features/resource` | — |
|
|
90
|
+
| `features/resource-assignment` | `themelia-ui/features/resource-assignment` | — |
|
|
91
|
+
| `features/rich-text-editor` | `themelia-ui/features/rich-text-editor` | @tiptap/core, @tiptap/pm, @tiptap/starter-kit |
|
|
92
|
+
| `features/rich-text-editor/tiptap` | `themelia-ui/features/rich-text-editor/tiptap` | @tiptap/core, @tiptap/pm, @tiptap/starter-kit |
|
|
93
|
+
| `features/schema-form` | `themelia-ui/features/schema-form` | — |
|
|
94
|
+
| `features/sync` | `themelia-ui/features/sync` | react-hook-form |
|
|
95
|
+
| `features/table` | `themelia-ui/features/table` | @tanstack/react-table |
|
|
96
|
+
| `features/theme-tweaker` | `themelia-ui/features/theme-tweaker` | — |
|
|
97
|
+
| `forms` | `themelia-ui/forms` | — |
|
|
98
|
+
| `forms-rhf` | `themelia-ui/forms-rhf` | react-hook-form |
|
|
99
|
+
| `layout/app-shell` | `themelia-ui/layout/app-shell` | — |
|
|
100
|
+
| `layout/auth` | `themelia-ui/layout/auth` | — |
|
|
101
|
+
| `layout/containers` | `themelia-ui/layout/containers` | — |
|
|
102
|
+
| `layout/header` | `themelia-ui/layout/header` | — |
|
|
103
|
+
| `layout/navigation` | `themelia-ui/layout/navigation` | — |
|
|
104
|
+
| `layout/page` | `themelia-ui/layout/page` | — |
|
|
105
|
+
| `layout/settings` | `themelia-ui/layout/settings` | — |
|
|
106
|
+
| `layout/sidebar` | `themelia-ui/layout/sidebar` | — |
|
|
107
|
+
| `layout/workspace` | `themelia-ui/layout/workspace` | — |
|
|
108
|
+
| `primitives` | `themelia-ui/primitives` | — |
|
|
109
|
+
| `theming` | `themelia-ui/theming` | — |
|
|
110
|
+
| `ui-provider` | `themelia-ui/ui-provider` | — |
|
|
111
111
|
|
|
112
112
|
## admin profile — 2 modules
|
|
113
113
|
|
|
114
|
-
| module | import |
|
|
115
|
-
| --- | --- | --- |
|
|
116
|
-
| `admin/
|
|
117
|
-
| `admin/
|
|
114
|
+
| module | import | optional peers |
|
|
115
|
+
| --- | --- | --- |
|
|
116
|
+
| `blocks/admin/access` | `themelia-ui/blocks/admin/access` | — |
|
|
117
|
+
| `blocks/admin/commerce` | `themelia-ui/blocks/admin/commerce` | — |
|
|
118
118
|
|
|
119
119
|
## Optional peers — 15 of them
|
|
120
120
|
|
|
@@ -137,4 +137,4 @@ resolves it. Release verification rejects a module that reaches an undeclared pe
|
|
|
137
137
|
| `react-hook-form` | `features/sync`, `forms-rhf` |
|
|
138
138
|
| `react-leaflet` | `features/map` |
|
|
139
139
|
| `react-leaflet-markercluster` | `features/map` |
|
|
140
|
-
| `recharts` | `base/chart`, `
|
|
140
|
+
| `recharts` | `base/chart`, `blocks/analytics` |
|
|
@@ -9,11 +9,13 @@ by the module that needs it; see [Optional peers](#optional-peers).
|
|
|
9
9
|
|
|
10
10
|
## Browser support
|
|
11
11
|
|
|
12
|
-
Chrome and Edge 125, Firefox 121 and Safari
|
|
13
|
-
`round()`, `:has()`, `:dir()` and `
|
|
14
|
-
Entrance transitions use `@starting-style` and simply don't animate where it is
|
|
15
|
-
If your bundler lowers CSS for older targets, keep `:dir()` out of
|
|
16
|
-
list of right-to-left languages and ignores `dir="rtl"
|
|
12
|
+
Chrome and Edge 125, Firefox 121 and Safari 17.5 or newer. The stylesheets rely on
|
|
13
|
+
`round()`, `:has()`, `:dir()`, `color-mix()` and `light-dark()` with no fallback below those
|
|
14
|
+
versions. Entrance transitions use `@starting-style` and simply don't animate where it is
|
|
15
|
+
missing. If your bundler lowers CSS for older targets, keep `:dir()` and `light-dark()` out of
|
|
16
|
+
it: lowered, `:dir()` becomes a list of right-to-left languages and ignores `dir="rtl"`, and
|
|
17
|
+
`light-dark()` resolves where a theme variable is declared, so a dark region inside a light
|
|
18
|
+
page keeps the light colours.
|
|
17
19
|
|
|
18
20
|
## Import exactly what you use
|
|
19
21
|
|
|
@@ -36,41 +38,67 @@ The exact import for every module is in
|
|
|
36
38
|
|
|
37
39
|
## Loading the CSS
|
|
38
40
|
|
|
39
|
-
|
|
41
|
+
### In a bundled app
|
|
40
42
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
43
|
+
A component brings its own CSS. Import it from its subpath and nothing else: Vite, webpack,
|
|
44
|
+
Rspack and the frameworks built on them, such as Next.js and React Router, add its stylesheet
|
|
45
|
+
with its JavaScript, include each stylesheet once however many components need it, and leave
|
|
46
|
+
out the CSS of any module the application never imports. Your bundler processes the kit's CSS
|
|
47
|
+
like your own, so the note on lowering under [Browser support](#browser-support) applies to it.
|
|
48
|
+
|
|
49
|
+
Do not also import `themelia-ui/style.css` or a module stylesheet from JavaScript; that loads
|
|
50
|
+
the same rules twice. The upgrade codemod removes those imports.
|
|
46
51
|
|
|
47
|
-
|
|
48
|
-
|
|
52
|
+
Parcel reads a package's `exports` only when the application's `package.json` sets
|
|
53
|
+
`"@parcel/resolver-default": { "packageExports": true }`.
|
|
49
54
|
|
|
50
|
-
###
|
|
55
|
+
### Server rendering with Vite
|
|
56
|
+
|
|
57
|
+
Astro, React Router, TanStack Start, Vike and other frameworks that render on the server with
|
|
58
|
+
Vite hand installed packages to Node, which loads the kit without its CSS. List `themelia-ui`,
|
|
59
|
+
and any installed package that imports it, in `ssr.noExternal`, so Vite processes it:
|
|
60
|
+
|
|
61
|
+
```ts fragment — the consuming application's bundler config, not compiled against the package
|
|
62
|
+
// vite.config.ts, or the `vite` key of astro.config.mjs
|
|
63
|
+
export default {
|
|
64
|
+
ssr: { noExternal: ["themelia-ui"] },
|
|
65
|
+
}
|
|
66
|
+
```
|
|
51
67
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
68
|
+
Astro gathers a page's CSS on the server, so without this line it renders the kit unstyled.
|
|
69
|
+
React Router takes CSS from the client build; the line fixes its development server's first
|
|
70
|
+
render. Next.js needs nothing.
|
|
71
|
+
|
|
72
|
+
### Without a bundler
|
|
73
|
+
|
|
74
|
+
A page that links stylesheets directly links `style.css`, which includes `core.css`:
|
|
75
|
+
|
|
76
|
+
| Stylesheet | Contains |
|
|
77
|
+
| --- | --- |
|
|
78
|
+
| `themelia-ui/core.css` | Tokens, themes, typefaces, the base reset and the cascade layer order; no component rules |
|
|
79
|
+
| `themelia-ui/style.css` | `core.css` and every module, in one file |
|
|
56
80
|
|
|
57
81
|
### In Node
|
|
58
82
|
|
|
59
|
-
The package is ES modules
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
`
|
|
83
|
+
The package is ES modules. Its JavaScript imports its CSS through the package's private
|
|
84
|
+
`imports` map, which resolves to an empty module outside a bundler, so Node loads it as it
|
|
85
|
+
is, without the CSS. Test runners need no configuration for it, and CommonJS code on Node
|
|
86
|
+
20.19 or later can `require()` it; a server render needs configuration only where the
|
|
87
|
+
framework gathers CSS on the server, as in
|
|
88
|
+
[Server rendering with Vite](#server-rendering-with-vite). Jest is the exception: it needs
|
|
89
|
+
29.4 or newer, which resolves the `imports` map, and it transforms nothing in `node_modules`
|
|
90
|
+
by default, so exempt the package in `transformIgnorePatterns`.
|
|
63
91
|
|
|
64
92
|
### `core.css` on its own
|
|
65
93
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
94
|
+
Import `core.css` on its own when application CSS uses the tokens on a page without kit
|
|
95
|
+
components, or to place the kit's layers next to another layered stylesheet: import it from
|
|
96
|
+
JavaScript before that stylesheet. It is the file the components import, so a bundler keeps
|
|
97
|
+
one copy; an `@import` from a CSS file inlines a second one.
|
|
70
98
|
|
|
71
99
|
### Overriding the kit
|
|
72
100
|
|
|
73
|
-
Component rules live in the cascade layers `tokens,
|
|
101
|
+
Component rules live in the cascade layers `tokens, base, components, utilities`,
|
|
74
102
|
so unlayered application CSS wins over them whatever its order or specificity. Select with
|
|
75
103
|
the stable `data-slot` attributes and BEM hooks such as `{name}--component`, and select a
|
|
76
104
|
state with the attributes the primitives set (`data-open`, `data-checked`, `data-disabled`,
|