themelia-ui 3.0.0 → 3.2.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 +60 -33
- package/.agents/skills/themelia-ui/manifest.json +23 -0
- package/.agents/skills/themelia-ui/references/api-compatibility.md +5 -4
- package/.agents/skills/themelia-ui/references/blocks.md +123 -0
- package/.agents/skills/themelia-ui/references/composition-ladder.md +8 -8
- package/.agents/skills/themelia-ui/references/composition.md +100 -19
- package/.agents/skills/themelia-ui/references/forms.md +23 -3
- package/.agents/skills/themelia-ui/references/framework-wiring.md +41 -13
- package/.agents/skills/themelia-ui/references/i18n.md +4 -2
- package/.agents/skills/themelia-ui/references/imports.md +104 -104
- package/.agents/skills/themelia-ui/references/installation.md +60 -31
- package/.agents/skills/themelia-ui/references/migration.md +156 -5
- package/.agents/skills/themelia-ui/references/provider-and-scoping.md +37 -25
- package/.agents/skills/themelia-ui/references/reference-workflows.md +43 -0
- package/.agents/skills/themelia-ui/references/structure-and-spacing.md +147 -0
- package/.agents/skills/themelia-ui/references/theming.md +174 -131
- package/.agents/skills/themelia-ui/references/troubleshooting.md +88 -30
- package/.agents/skills/themelia-ui/references/verification.md +60 -5
- package/CHANGELOG.md +212 -0
- package/README.md +48 -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-Cg2HhuBe.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-Ddhz43Bz.js +279 -0
- package/dist/chart-BkK3Xm10.js +201 -0
- package/dist/choice-inputs-NwRxvmZN.js +694 -0
- package/dist/combobox-519ubijc.js +292 -0
- package/dist/command-JjApYFds.js +156 -0
- package/dist/comments-CCQ2QRaU.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/forms/form-field.d.ts +2 -2
- 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 +4 -2
- package/dist/components/base/structure/grid.d.ts +10 -4
- package/dist/components/base/structure/index.d.ts +1 -1
- package/dist/components/base/structure/split.d.ts +4 -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/combobox/fetching-combobox.d.ts +2 -1
- package/dist/components/features/combobox/resource-combobox.d.ts +3 -0
- package/dist/components/features/combobox/use-suggestions.d.ts +7 -0
- 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-BwCwKIVM.js +685 -0
- package/dist/{dialog-CtFCuTUF.js → dialog-CAnwRNrm.js} +1 -1
- package/dist/display-a7AoX_u7.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 +328 -314
- 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-BhsTkWpZ.js} +386 -383
- package/dist/forms-C0WeNPFF.js +250 -0
- package/dist/forms-numeric-IwQ1ltNf.js +582 -0
- package/dist/hooks/use-native-dialog.d.ts +1 -1
- package/dist/index.js +2 -2
- package/dist/input-group-HS_Z0Ei_.js +119 -0
- package/dist/item-M2pmpWXh.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 +50 -46
- 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/lib/ui-provider/ui-scope.d.ts +1 -1
- package/dist/{mentions-BbsEHlcH.js → mentions-BOxbigwp.js} +113 -111
- package/dist/navigation-Bgu7Vc0M.js +622 -0
- package/dist/navigation-DiYACqpE.js +216 -0
- package/dist/overlay-BuQOl8aP.js +356 -0
- package/dist/{overlays-DvVoS3td.js → overlays-1sULyytH.js} +77 -75
- package/dist/popover-CA7SP_iz.js +127 -0
- package/dist/popover-menu-QXgQeWeG.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-CeH20dvr.js +445 -0
- package/dist/rich-text-editor-D_Ppm8yh.js +491 -0
- package/dist/{sheet-CKcmRbJ9.js → sheet-CJ1-OAla.js} +3 -3
- package/dist/sidebar-D8uGqxio.js +421 -0
- package/dist/skeleton-BTKNKTdj.js +173 -0
- package/dist/spinner-Tc1QCnxM.js +30 -0
- package/dist/{structure-D0WGQAP3.js → structure-CynEZ-OY.js} +15 -23
- package/dist/style.css +1 -1
- package/dist/styles/TOKENS.md +116 -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-B7dtIFUx.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-BR_jNgvz.js} +57 -49
- package/dist/{timelines-BB7550mz.js → timelines-DXG1BfIN.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-CYuoJykZ.js +968 -0
- package/dist/use-async-preview-BFwf9ElY.js +188 -0
- package/dist/value-inputs-ng8aVJJZ.js +728 -0
- package/docs/README.md +13 -3
- package/docs/build/browser-composition-fixture.ts +28 -0
- package/docs/build/recipes.md +11484 -10723
- package/docs/generated/component-index.json +9809 -9169
- 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 +84 -14
- 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 +320 -70
- 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 +317 -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} +15 -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} +57 -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 +71 -5
- package/docs/generated/components/features--comments.md +0 -1
- package/docs/generated/components/features--data-view.md +63 -8
- package/docs/generated/components/features--event-calendar.md +1 -2
- package/docs/generated/components/features--filters.md +11 -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 +105 -38
- package/docs/generated/components/features--mentions.md +7 -7
- package/docs/generated/components/features--overlays.md +75 -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 +42 -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 +41 -11
- package/docs/generated/components/layout--auth.md +8 -9
- package/docs/generated/components/layout--containers.md +40 -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 +33 -5
- package/docs/generated/components/layout--settings.md +0 -1
- package/docs/generated/components/layout--sidebar.md +47 -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 +96 -78
- package/docs/generated/composition-ladder.md +8 -8
- package/docs/generated/consumer-contract.json +5736 -0
- 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 +755 -810
- package/docs/generated/workflows/communications-overview/analytics/communications-reference.tsx +19 -0
- package/docs/generated/workflows/index.json +691 -0
- package/docs/generated/workflows/media-picking/media-library/media-picking-reference.tsx +63 -0
- package/docs/generated/workflows/media-picking/media-library/reference-data.ts +3 -0
- package/docs/generated/workflows/multi-section-form/form-workflow/multi-section-reference.tsx +46 -0
- package/docs/generated/workflows/nested-action-flow/action-overlays/nested-action-reference.tsx +39 -0
- package/docs/generated/workflows/record-detail/page-layout/record-detail-reference.tsx +24 -0
- package/docs/generated/workflows/resource-index/data-view/resource-index-reference.tsx +51 -0
- package/docs/generated/workflows/scoped-resource-selection/combobox/scoped-resource-reference.tsx +50 -0
- package/docs/generated/workflows/website-content-editor/media-library/reference-data.ts +3 -0
- package/docs/generated/workflows/website-content-editor/rich-text-editor/website-content-reference.tsx +33 -0
- package/docs/generated/workflows/workspace-navigation/app-shell/workspace-navigation-reference.tsx +26 -0
- package/docs/learn/api-compatibility.md +5 -4
- package/docs/learn/blocks.md +123 -0
- package/docs/learn/composition.md +100 -19
- package/docs/learn/forms.md +23 -3
- package/docs/learn/framework-wiring.md +41 -13
- package/docs/learn/i18n.md +4 -2
- package/docs/learn/installation.md +60 -31
- package/docs/learn/migration.md +156 -5
- package/docs/learn/provider-and-scoping.md +37 -25
- package/docs/learn/reference-workflows.md +43 -0
- package/docs/learn/structure-and-spacing.md +147 -0
- package/docs/learn/theming.md +174 -131
- package/docs/learn/troubleshooting.md +88 -30
- package/docs/learn/verification.md +60 -5
- package/package.json +42 -473
- package/scripts/consumer/codemod.mjs +50 -32
- package/scripts/consumer/contract-reader.mjs +42 -0
- package/scripts/consumer/css-scan.mjs +51 -0
- package/scripts/consumer/diagnose.mjs +136 -0
- package/scripts/consumer/find-component.mjs +30 -17
- package/scripts/consumer/install-skill.mjs +93 -11
- package/src/styles/TOKENS.md +116 -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
|
@@ -69,9 +69,10 @@ consumer on plain state never resolves react-hook-form.
|
|
|
69
69
|
|
|
70
70
|
## Field chrome
|
|
71
71
|
|
|
72
|
-
`FormField` renders
|
|
73
|
-
hint`. They replace each other rather than stacking
|
|
74
|
-
|
|
72
|
+
`FormField` renders at most **one** supporting message, resolved as `error || helperText ||
|
|
73
|
+
hint`. They replace each other rather than stacking. A message can wrap, and adding or
|
|
74
|
+
changing it can change field height; check long translated errors at narrow widths.
|
|
75
|
+
It also owns the wiring: it associates the label, points
|
|
75
76
|
`aria-describedby` at the supporting line, and sets `aria-invalid` on the control when there
|
|
76
77
|
is an error, without overriding any of these that the caller set explicitly. Errors are
|
|
77
78
|
announced politely (`role="status"`), so validation firing on each keystroke does not
|
|
@@ -80,6 +81,25 @@ interrupt typing.
|
|
|
80
81
|
`FieldGroup` covers several controls sharing one label and one supporting line — a date
|
|
81
82
|
range, a name split in two.
|
|
82
83
|
|
|
84
|
+
## Sections and completion
|
|
85
|
+
|
|
86
|
+
Use FormSection for an editable region inside a form, Card for an independent subject,
|
|
87
|
+
and ContentBlock for supporting read-only prose. Flat FormSections retain region padding;
|
|
88
|
+
an enclosing Stack can use `gap="none"` when that padding supplies the desired separation.
|
|
89
|
+
FieldGroup supplies fieldset/legend semantics. Each child FormField still needs a distinct
|
|
90
|
+
label. A section heading is not a field label.
|
|
91
|
+
|
|
92
|
+
A resolved promise is not evidence that validation succeeded. ActionDialog normally closes
|
|
93
|
+
after its confirmation callback resolves. Set `closeOnAsyncComplete={false}` when the app
|
|
94
|
+
resolves with errors, and close controlled `open` only after explicit success. For a native
|
|
95
|
+
form, use `formId` to associate the dialog's submit action with that form; avoid also invoking
|
|
96
|
+
the mutation in `onConfirm`. Native constraint validation, the submit handler and domain
|
|
97
|
+
validation then each have one owner. Prevent duplicate submissions while pending, retain
|
|
98
|
+
drafts after rejection and associate errors with the relevant field or root region.
|
|
99
|
+
|
|
100
|
+
See the complete [multi-section form and nested action](reference-workflows.md) sources.
|
|
101
|
+
For the inset and gap contract, see [Structure and spacing](structure-and-spacing.md#use-the-two-spacing-roles).
|
|
102
|
+
|
|
83
103
|
## Generated forms
|
|
84
104
|
|
|
85
105
|
When the fields come from a schema at runtime, use `features/schema-form`. When they are
|
|
@@ -22,7 +22,9 @@ cells. Write it once:
|
|
|
22
22
|
import type { LinkRenderer } from "themelia-ui/layout/sidebar"
|
|
23
23
|
|
|
24
24
|
export const renderLink: LinkRenderer = ({ href, children, active, disabled, external, ...rest }) =>
|
|
25
|
-
disabled || !href ? <span {...rest}>{children}</span>
|
|
25
|
+
disabled || !href ? <span {...rest}>{children}</span>
|
|
26
|
+
: external ? <a href={href} {...rest}>{children}</a>
|
|
27
|
+
: <AppLink to={href} {...rest}>{children}</AppLink>
|
|
26
28
|
```
|
|
27
29
|
|
|
28
30
|
Return one element and spread the rest of the props onto it: they carry the class, the
|
|
@@ -50,6 +52,20 @@ async lifecycle; the application decides cache invalidation, retries, and error
|
|
|
50
52
|
</ResourceIndexShell>
|
|
51
53
|
```
|
|
52
54
|
|
|
55
|
+
## Lookup and navigation lifetimes
|
|
56
|
+
|
|
57
|
+
Pass a stable `scopeKey` to ResourceCombobox, SuggestionsCombobox or useSuggestions when the lookup's workspace, locale or
|
|
58
|
+
permission context changes. Changing callback identity alone does not refetch. A scope
|
|
59
|
+
change aborts old work, hides old results/errors and refetches an eligible open query while
|
|
60
|
+
retaining query, controlled value and open state. Late responses from an old scope cannot
|
|
61
|
+
complete the current lookup. The app owns whether the selected id remains valid.
|
|
62
|
+
|
|
63
|
+
Sidebar workspace disclosure keeps the mobile sheet open. A selected workspace marked
|
|
64
|
+
`external: false` dismisses the sheet after selection; external destinations retain native
|
|
65
|
+
target/rel behavior. Forward renderer props, including the click handler, to the real link.
|
|
66
|
+
The app's router handles same-app addresses and preserves modifiers and new-tab gestures.
|
|
67
|
+
See the [workspace reference](reference-workflows.md).
|
|
68
|
+
|
|
53
69
|
## Permissions
|
|
54
70
|
|
|
55
71
|
Resolve authorization before constructing actions. Omit an action the user cannot perform;
|
|
@@ -58,29 +74,41 @@ through the module's tooltip or description seam.
|
|
|
58
74
|
|
|
59
75
|
## Translation
|
|
60
76
|
|
|
61
|
-
Supply
|
|
77
|
+
Supply component-owned copy through the selected API's documented `strings` prop. Passive
|
|
78
|
+
components whose copy comes from children need no strings object. Keep product copy
|
|
62
79
|
in application data or children. The default objects are exported so a locale can start
|
|
63
80
|
from the complete shape rather than guessing keys; see [Internationalization](i18n.md).
|
|
64
81
|
|
|
65
82
|
## Server rendering and client boundaries
|
|
66
83
|
|
|
67
|
-
|
|
68
|
-
`
|
|
69
|
-
|
|
70
|
-
|
|
84
|
+
Interactive and provider-dependent entrypoints carry `"use client"`, including
|
|
85
|
+
`themelia-ui/primitives` and `themelia-ui/ui-provider`; passive modules such as
|
|
86
|
+
`themelia-ui/base/structure` can remain server-pure. Inspect the exact published entrypoint
|
|
87
|
+
rather than inferring its boundary from its name. In a React Server Components framework, a server component
|
|
88
|
+
can render those client components with serializable props; callbacks, hooks and live
|
|
89
|
+
controlled state belong in an application client component. A provider can receive server
|
|
90
|
+
rendered children, so keep the boundary around the interactive region rather than the whole
|
|
91
|
+
page. Check your framework's serialization rules for config containing functions or modules.
|
|
92
|
+
|
|
93
|
+
Formatting helpers exported from `primitives` share its client boundary: do not call them
|
|
94
|
+
from an RSC server component as if they came from a server-pure subpath. Format server data
|
|
95
|
+
with the application's server utilities or render the corresponding display primitive.
|
|
96
|
+
`themelia-ui/theming` exports pure derivation helpers without a client directive. Exact
|
|
97
|
+
subpaths also keep optional peers isolated. Ordinary Node SSR can load and render the
|
|
98
|
+
component modules; that does not make their exports server-callable in RSC.
|
|
71
99
|
|
|
72
100
|
For CSP, portals, nested theme regions, and defaults, use
|
|
73
101
|
[Provider and scoping](provider-and-scoping.md). Do not recreate provider context in an
|
|
74
102
|
application adapter unless the documented public hooks are insufficient.
|
|
75
103
|
|
|
76
|
-
## Vite, Next.js, and CSS
|
|
104
|
+
## Vite, Next.js, and CSS
|
|
77
105
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
106
|
+
A component brings its own CSS, so there is no stylesheet to collect: it arrives through the
|
|
107
|
+
component's JavaScript, which your bundler processes. Frameworks that render on the server
|
|
108
|
+
with Vite, such as Astro, React Router, TanStack Start and Vike, list the package in
|
|
109
|
+
`ssr.noExternal`; see [Server rendering with Vite](installation.md#server-rendering-with-vite).
|
|
110
|
+
Parcel needs its `packageExports` option. Next.js needs nothing. Pages with no bundler link
|
|
111
|
+
`style.css`.
|
|
84
112
|
|
|
85
113
|
Server-rendered HTML and the client bundle must load the same theme tokens before hydration.
|
|
86
114
|
Apply the theme attribute and provider configuration from the same persisted value to avoid
|
|
@@ -5,8 +5,10 @@ overridable, and nothing in it inspects `navigator.language` or imports a transl
|
|
|
5
5
|
|
|
6
6
|
## Strings
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
Components that own visible or accessible copy document a `strings` prop; their modules
|
|
9
|
+
export the matching `*Strings` interface and `default*Strings` object. Passive structures
|
|
10
|
+
and components whose copy comes entirely from children need no strings object. Read the
|
|
11
|
+
selected API rather than adding `strings` by analogy:
|
|
10
12
|
|
|
11
13
|
```tsx fragment — shape only, not a program
|
|
12
14
|
<Copyable strings={{ copy: "Kopieren", copied: "Kopiert" }} value={apiKey} />
|
|
@@ -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
|
+
[Installation](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` |
|
|
@@ -4,16 +4,19 @@
|
|
|
4
4
|
npm install themelia-ui
|
|
5
5
|
```
|
|
6
6
|
|
|
7
|
-
React 19 and `react-dom` are required peers.
|
|
8
|
-
|
|
7
|
+
React 19 and `react-dom` are required peers. The package's regular dependencies install
|
|
8
|
+
automatically; additional peer packages are optional and resolved only by the modules
|
|
9
|
+
that need them. See [Optional peers](#optional-peers).
|
|
9
10
|
|
|
10
11
|
## Browser support
|
|
11
12
|
|
|
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"
|
|
13
|
+
Chrome and Edge 125, Firefox 121 and Safari 17.5 or newer. The stylesheets rely on
|
|
14
|
+
`round()`, `:has()`, `:dir()`, `color-mix()` and `light-dark()` with no fallback below those
|
|
15
|
+
versions. Entrance transitions use `@starting-style` and simply don't animate where it is
|
|
16
|
+
missing. If your bundler lowers CSS for older targets, keep `:dir()` and `light-dark()` out of
|
|
17
|
+
it: lowered, `:dir()` becomes a list of right-to-left languages and ignores `dir="rtl"`, and
|
|
18
|
+
`light-dark()` resolves where a theme variable is declared, so a dark region inside a light
|
|
19
|
+
page keeps the light colours.
|
|
17
20
|
|
|
18
21
|
## Import exactly what you use
|
|
19
22
|
|
|
@@ -36,41 +39,67 @@ The exact import for every module is in
|
|
|
36
39
|
|
|
37
40
|
## Loading the CSS
|
|
38
41
|
|
|
39
|
-
|
|
42
|
+
### In a bundled app
|
|
40
43
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
A component brings its own CSS. Import it from its subpath and nothing else: Vite, webpack,
|
|
45
|
+
Rspack and the frameworks built on them, such as Next.js and React Router, add its stylesheet
|
|
46
|
+
with its JavaScript, include each stylesheet once however many components need it, and leave
|
|
47
|
+
out the CSS of any module the application never imports. Your bundler processes the kit's CSS
|
|
48
|
+
like your own, so the note on lowering under [Browser support](#browser-support) applies to it.
|
|
49
|
+
|
|
50
|
+
Do not also import `themelia-ui/style.css` or a module stylesheet from JavaScript; that loads
|
|
51
|
+
the same rules twice. The upgrade codemod removes those imports.
|
|
46
52
|
|
|
47
|
-
|
|
48
|
-
|
|
53
|
+
Parcel reads a package's `exports` only when the application's `package.json` sets
|
|
54
|
+
`"@parcel/resolver-default": { "packageExports": true }`.
|
|
49
55
|
|
|
50
|
-
###
|
|
56
|
+
### Server rendering with Vite
|
|
57
|
+
|
|
58
|
+
Astro, React Router, TanStack Start, Vike and other frameworks that render on the server with
|
|
59
|
+
Vite hand installed packages to Node, which loads the kit without its CSS. List `themelia-ui`,
|
|
60
|
+
and any installed package that imports it, in `ssr.noExternal`, so Vite processes it:
|
|
61
|
+
|
|
62
|
+
```ts fragment — the consuming application's bundler config, not compiled against the package
|
|
63
|
+
// vite.config.ts, or the `vite` key of astro.config.mjs
|
|
64
|
+
export default {
|
|
65
|
+
ssr: { noExternal: ["themelia-ui"] },
|
|
66
|
+
}
|
|
67
|
+
```
|
|
51
68
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
69
|
+
Astro gathers a page's CSS on the server, so without this line it renders the kit unstyled.
|
|
70
|
+
React Router takes CSS from the client build; the line fixes its development server's first
|
|
71
|
+
render. Next.js needs nothing.
|
|
72
|
+
|
|
73
|
+
### Without a bundler
|
|
74
|
+
|
|
75
|
+
A page that links stylesheets directly links `style.css`, which includes `core.css`:
|
|
76
|
+
|
|
77
|
+
| Stylesheet | Contains |
|
|
78
|
+
| --- | --- |
|
|
79
|
+
| `themelia-ui/core.css` | Tokens, themes, typefaces, the base reset and the cascade layer order; no component rules |
|
|
80
|
+
| `themelia-ui/style.css` | `core.css` and every module, in one file |
|
|
56
81
|
|
|
57
82
|
### In Node
|
|
58
83
|
|
|
59
|
-
The package is ES modules
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
`
|
|
84
|
+
The package is ES modules. Its JavaScript imports its CSS through the package's private
|
|
85
|
+
`imports` map, which resolves to an empty module outside a bundler, so Node loads it as it
|
|
86
|
+
is, without the CSS. Test runners need no configuration for it, and CommonJS code on Node
|
|
87
|
+
20.19 or later can `require()` it; a server render needs configuration only where the
|
|
88
|
+
framework gathers CSS on the server, as in
|
|
89
|
+
[Server rendering with Vite](#server-rendering-with-vite). Jest is the exception: it needs
|
|
90
|
+
29.4 or newer, which resolves the `imports` map, and it transforms nothing in `node_modules`
|
|
91
|
+
by default, so exempt the package in `transformIgnorePatterns`.
|
|
63
92
|
|
|
64
93
|
### `core.css` on its own
|
|
65
94
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
95
|
+
Import `core.css` on its own when application CSS uses the tokens on a page without kit
|
|
96
|
+
components, or to place the kit's layers next to another layered stylesheet: import it from
|
|
97
|
+
JavaScript before that stylesheet. It is the file the components import, so a bundler keeps
|
|
98
|
+
one copy; an `@import` from a CSS file inlines a second one.
|
|
70
99
|
|
|
71
100
|
### Overriding the kit
|
|
72
101
|
|
|
73
|
-
Component rules live in the cascade layers `tokens,
|
|
102
|
+
Component rules live in the cascade layers `tokens, base, components, utilities`,
|
|
74
103
|
so unlayered application CSS wins over them whatever its order or specificity. Select with
|
|
75
104
|
the stable `data-slot` attributes and BEM hooks such as `{name}--component`, and select a
|
|
76
105
|
state with the attributes the primitives set (`data-open`, `data-checked`, `data-disabled`,
|
|
@@ -79,8 +108,8 @@ releases.
|
|
|
79
108
|
|
|
80
109
|
## Optional peers
|
|
81
110
|
|
|
82
|
-
Every peer other than
|
|
83
|
-
use it: a consumer who never imports `features/map` never resolves Leaflet.
|
|
111
|
+
Every peer other than `react` and `react-dom` is optional, and each is reachable only from
|
|
112
|
+
the modules that use it: a consumer who never imports `features/map` never resolves Leaflet.
|
|
84
113
|
|
|
85
114
|
The peer-to-module table is in [`docs/generated/imports.md`](imports.md).
|
|
86
115
|
|