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
package/dist/styles/TOKENS.md
CHANGED
|
@@ -1,281 +1,122 @@
|
|
|
1
|
-
# The
|
|
2
|
-
|
|
3
|
-
The theme is `
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
--
|
|
49
|
-
--border-width
|
|
50
|
-
--radius
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
**
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
`--
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
1
|
+
# The theme contract
|
|
2
|
+
|
|
3
|
+
The theme is `src/styles/theme/*.css`: about eighty variables, declared once at `:root`. Every
|
|
4
|
+
colour is `light-dark(light, dark)`, and the element's `color-scheme` (set by `.light`,
|
|
5
|
+
`.dark`, `data-theme` or the operating system) picks the half. Component styles inherit
|
|
6
|
+
theme defaults rather than redeclaring them. Explicit scope overrides and density presets
|
|
7
|
+
replace the corresponding inherited values on their regions. A dark region inside a light
|
|
8
|
+
page needs no second set of colour declarations.
|
|
9
|
+
|
|
10
|
+
Components read the theme and compute the rest in the rule that uses it. The package's checks
|
|
11
|
+
fail on a `var()` nothing defines, a literal colour, radius, spacing or hairline in a
|
|
12
|
+
component module, and a rule keyed on `.dark` or `prefers-color-scheme`.
|
|
13
|
+
|
|
14
|
+
## What the theme owns
|
|
15
|
+
|
|
16
|
+
| File | Variables |
|
|
17
|
+
| --- | --- |
|
|
18
|
+
| `colour.css` | `--background`, `--foreground`, `--card`, `--popover`, `--muted`, `--accent`, `--border`, `--input`, `--ring`, the tones and their foregrounds, `--link`, `--chart-1`…`5`, the `--sidebar-*` set, `--overlay-backdrop`, and the tint strengths `--tint` and `--tint-strong` |
|
|
19
|
+
| `shape.css` | `--radius`, `--radius-sm`, `--radius-pill`, `--border-width` |
|
|
20
|
+
| `spacing.css` | `--padding`, `--padding-sm`, `--gap`, `--gap-sm` |
|
|
21
|
+
| `size.css` | `--control-height`, `--control-height-sm`, `--icon-size`, `--icon-size-sm` |
|
|
22
|
+
| `typography.css` | the font stacks, the type steps `--text-xs`…`--text-2xl`, and the type factor `--text-scale` |
|
|
23
|
+
| `elevation.css` | `--shadow`, `--shadow-lg` |
|
|
24
|
+
| `motion.css` | `--duration-fast`, `--duration`, `--ease`, `--disabled-opacity` |
|
|
25
|
+
| `layout.css` | the z tiers, `--sidebar-width`, `--header-height`, `--content-width`, `--overlay-backdrop-filter` |
|
|
26
|
+
| `density.css` | the `compact`, `default` and `comfortable` presets, keyed on `data-density` |
|
|
27
|
+
|
|
28
|
+
The colour names are shadcn's, so a shadcn theme drops in.
|
|
29
|
+
|
|
30
|
+
## Two of each
|
|
31
|
+
|
|
32
|
+
Every length, shadow, tint and duration comes as a pair. A value between or beyond them is
|
|
33
|
+
arithmetic on the pair in the rule that needs it, never a third variable.
|
|
34
|
+
|
|
35
|
+
| Pair | The first | The second |
|
|
36
|
+
| --- | --- | --- |
|
|
37
|
+
| `--radius`, `--radius-sm` | containers: cards, dialogs, popovers, menus, panels | anything inside one, or smaller: controls, rows, chips, badges, tooltips |
|
|
38
|
+
| `--padding`, `--padding-sm` | container insets | item insets: rows, cells, chips, fields |
|
|
39
|
+
| `--gap`, `--gap-sm` | between groups: fields, cards, sections | inside a group: icon and label, title and description |
|
|
40
|
+
| `--control-height`, `-sm` | every button, field, select and trigger | the dense step |
|
|
41
|
+
| `--icon-size`, `-sm` | icons beside text and in controls | icons in dense rows and chips |
|
|
42
|
+
| `--shadow`, `--shadow-lg` | raised: a framed card, a raised chip, a thumb, a hover lift | floating: popovers, menus, dialogs, toasts |
|
|
43
|
+
| `--tint`, `--tint-strong` | a soft fill: a selected row, a soft badge, a wash | a tinted line or edge |
|
|
44
|
+
| `--duration-fast`, `--duration` | state changes: hover, press, colour | entrances: popups, dialogs, panels |
|
|
45
|
+
|
|
46
|
+
**Corners.** `--radius-pill` is a shape, not a corner: switches, tracks, status dots. True
|
|
47
|
+
circles are `50%`. Every other corner is arithmetic: a nested corner is its container's
|
|
48
|
+
radius less the inset (`calc(var(--radius) - var(--padding-sm))`), an edge-to-edge child of a
|
|
49
|
+
bordered container is `calc(var(--radius) - var(--border-width))`, and a data mark or an
|
|
50
|
+
arrow tip is `calc(var(--radius-sm) / 4)`. A control is never smaller than its corner, and a
|
|
51
|
+
state (hover, focus, open, invalid) never sets a radius.
|
|
52
|
+
|
|
53
|
+
**Hairlines.** Every edge is `--border-width`; a mark (a quote bar, a drop line) and the
|
|
54
|
+
focus outline are twice it.
|
|
55
|
+
|
|
56
|
+
## Colour roles
|
|
57
|
+
|
|
58
|
+
**Grounds.** `--background` is the page, the app shell and content dialogs; `--card` every
|
|
59
|
+
in-flow framed region; `--popover` anchored popups and palettes; `--sidebar` the shell
|
|
60
|
+
sidebar. A surface that paints a ground sets `--surface-ground` to it, and a sticky cell or a
|
|
61
|
+
fade reads `var(--surface-ground, var(--background))` to match what it sits on.
|
|
62
|
+
|
|
63
|
+
**Fills.** `--muted` is a well or a placeholder. A strip (a card footer, a zebra stripe) is
|
|
64
|
+
`--muted` at `--tint-strong`; a track or a skeleton is `--foreground` at `--tint`, which lifts
|
|
65
|
+
off any ground.
|
|
66
|
+
|
|
67
|
+
**State.** `--accent` is the one hover and current fill: control hover, the menu cursor, an
|
|
68
|
+
open trigger, the current navigation item, row hover. Selected is `--primary` at `--tint`
|
|
69
|
+
(a large surface adds a `--primary` edge), and a checked mark is solid `--primary`. Selection
|
|
70
|
+
outranks hover. Current navigation is neutral; the brand colour is for a value the user chose.
|
|
71
|
+
|
|
72
|
+
**Tones.** A component with a `tone` renders `data-tone`, and the tone rule
|
|
73
|
+
(`src/styles/tone.css`) gives it three variables instead of a colour name: `--tone` (the
|
|
74
|
+
hue: a solid fill, a tint, a line), `--tone-foreground` (text on the solid fill) and
|
|
75
|
+
`--tone-ink` (the hue as text or a glyph, on the page or on its own tint). The ink is the hue
|
|
76
|
+
itself in dark mode; in light mode it mixes toward the text colour as far as the hue needs to
|
|
77
|
+
hold 4.5:1.
|
|
78
|
+
|
|
79
|
+
**Edges.** `--border` is every divider and frame; `--input` the frame of a control, and a
|
|
80
|
+
control's hover edge mixes it toward `--foreground`. An invalid control's edge and outline
|
|
81
|
+
are `--destructive`.
|
|
82
|
+
|
|
83
|
+
**Focus.** One rule (`src/styles/focus.css`) outlines every focused element in `--ring` at
|
|
84
|
+
twice the hairline, offset by the same. A component that clips its content draws the outline
|
|
85
|
+
inside (`outline-offset: calc(var(--border-width) * -2)`); one that shows focus another way (a
|
|
86
|
+
menu's highlight) removes the outline only beside that equivalent.
|
|
87
|
+
|
|
88
|
+
**Contrast.** `src/lib/theming/theme-contrast.test.ts` measures the theme's text and focus
|
|
89
|
+
pairs in both modes and fails below WCAG AA.
|
|
90
|
+
|
|
91
|
+
## Type
|
|
92
|
+
|
|
93
|
+
Type goes through `Text` and `Heading`. A module sets no `font-size`, `font-weight`,
|
|
94
|
+
`line-height`, `letter-spacing` or `font-family`; an element `Text` cannot wrap (a native
|
|
95
|
+
control, a button's label, a table cell) takes `textClassName({ size, weight, … })`. Each step
|
|
96
|
+
is `calc(var(--text-X) * var(--text-scale))` with its own line box, and colour reaches a
|
|
97
|
+
`Text` through its `type` prop, never a class.
|
|
98
|
+
|
|
99
|
+
## Density and scale
|
|
100
|
+
|
|
101
|
+
A `data-density` preset sets the four lengths and the two control heights on its element, so
|
|
102
|
+
a region is denser or roomier and type keeps its size. The provider's `scale` computes the
|
|
103
|
+
same lengths, the icon sizes and the type factor in JavaScript and writes them, rounded to
|
|
104
|
+
whole pixels; CSS multiplies one factor, `--text-scale`, inside Text.
|
|
93
105
|
|
|
94
106
|
## What components own
|
|
95
107
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
A name with one reader is indirection. Where a component adjusts a theme value, it does the
|
|
99
|
-
arithmetic in its own rule — `calc(var(--space-lg) * 2)` — rather than minting a name.
|
|
100
|
-
|
|
101
|
-
A token earns a NAME only when one of these is true:
|
|
102
|
-
|
|
103
|
-
| | |
|
|
104
|
-
|---|---|
|
|
105
|
-
| **arithmetic read by two or more rules** | a `calc()` whose readers must stay equal; a bare `var(--step)` is a pass-through however often it is read |
|
|
106
|
-
| **an extension point** | another file re-declares it, so inlining kills the override |
|
|
107
|
-
| **read from TS/TSX** | a runtime hook; the indirection is the API |
|
|
108
|
-
| **an `--animate-*`** | CSS Modules scope keyframe names; inlined, the animation dies |
|
|
109
|
-
| **a bare length a module may not hold** | a module may not hold raw px or rem spacing |
|
|
110
|
-
|
|
111
|
-
Everything else belongs in the rule that uses it, and still may not hold a colour literal:
|
|
112
|
-
colour always resolves through the palette.
|
|
113
|
-
|
|
114
|
-
**An extension point is anything another file re-declares**, including a one-line rule:
|
|
115
|
-
`.columns4 { --choice-card-min: 9rem; }` is how a variant re-points a token, and inlining
|
|
116
|
-
the default silently kills all three column variants.
|
|
117
|
-
|
|
118
|
-
There is no per-component scale factor. See [FACTORS.md](./FACTORS.md) for the three global
|
|
119
|
-
factors, and [SCOPES.md](./SCOPES.md) for why derived values are declared at every scope
|
|
120
|
-
boundary rather than once at `:root`.
|
|
121
|
-
|
|
122
|
-
## One token per role
|
|
123
|
-
|
|
124
|
-
Every visual role has one token or one recipe. Reach for the role, not for a value that
|
|
125
|
-
happens to look right, and never spell an ad hoc `color-mix()` step in a module: a pair the
|
|
126
|
-
kit uses is declared once in `theming/colors.css`.
|
|
127
|
-
|
|
128
|
-
**Grounds.** What a surface is painted with.
|
|
129
|
-
|
|
130
|
-
| token | role |
|
|
131
|
-
|---|---|
|
|
132
|
-
| `--background` | the page, the app shell, and content dialogs, sheets and drawers |
|
|
133
|
-
| `--card` | every in-flow framed region: Card, DataTable and DataView frames, the EventCalendar grid, panels |
|
|
134
|
-
| `--popover` | anchored popups, command palettes (CommandDialog, GlobalSearchDialog), a raised segmented chip |
|
|
135
|
-
| `--sidebar` | the shell sidebar |
|
|
136
|
-
| `--field-bg` | the resting fill of every field and box control (transparent by default) |
|
|
137
|
-
|
|
138
|
-
The **modal ground** is deliberate: a content dialog is the page brought forward and sits on
|
|
139
|
-
`--background`; a palette is a popup that happens to be modal and sits on `--popover`. A
|
|
140
|
-
dark lift for cards belongs in the theme's `--card`, never in one module.
|
|
141
|
-
|
|
142
|
-
`--surface-ground` is "the surface I sit on". A surface that paints a ground (Card, popups,
|
|
143
|
-
the sidebar, table and data-view frames) sets it; a sticky cell, a cut-out ring, an opaque
|
|
144
|
-
halo or a fade reads `var(--surface-ground, var(--background))`, so it matches whatever it
|
|
145
|
-
lands on. It is unset by default and reset at every colour island (SCOPES.md).
|
|
146
|
-
|
|
147
|
-
**Neutral fills.**
|
|
148
|
-
|
|
149
|
-
| token | role |
|
|
150
|
-
|---|---|
|
|
151
|
-
| `--muted` | a solid placeholder: media and thumbnail fallback, map canvas, QR fallback |
|
|
152
|
-
| `--muted-50` | a recessed well: muted ContentBlock and Item, summary and diff panels, code, table head and foot cells, segmented and enclosed-tab tracks, unread rows, the secondary Alert |
|
|
153
|
-
| `--muted-20` | a strip: Card, Overlay and GlobalSearch footers, zebra stripes, column-group bands, optional sections |
|
|
154
|
-
| `--muted-40` `-60` `-80` | the empty-state illustration ramp, nothing else |
|
|
155
|
-
| `--foreground-8` | a small neutral fill that must lift on any ground: avatar fallback, neutral IconBadge, tile or medallion, neutral chip, tag or mention, read-only plate |
|
|
156
|
-
| `--foreground-10` | skeletons |
|
|
157
|
-
| `--foreground-20` | every track or unfilled segment: Progress, Slider, Upload, metric and chip progress |
|
|
158
|
-
|
|
159
|
-
There is no muted step between these: a well is `-50`, a strip `-20`.
|
|
160
|
-
|
|
161
|
-
**State fills.** `--muted-*` and `--foreground-*` are never state fills.
|
|
162
|
-
|
|
163
|
-
| token | role |
|
|
164
|
-
|---|---|
|
|
165
|
-
| `--accent` | control hover (Toggle and clear or remove glyphs included), the popup cursor, a pressed toggle, an open popup trigger, the current navigation item |
|
|
166
|
-
| `--accent-50` | row and large-surface hover, add-slot hover, an open accordion item |
|
|
167
|
-
| `--sidebar-accent` `--sidebar-accent-50` | the same two roles inside the sidebar |
|
|
168
|
-
| `--primary-5` with a `--primary` edge | a selected large surface: choice card, switch card, locale tile, drop target |
|
|
169
|
-
| `--primary-10` | a selected row |
|
|
170
|
-
| `--primary` | a checked mark and solid selection |
|
|
171
|
-
| `--primary-accent` | state ink: check and busy icons, today, the radio ring |
|
|
172
|
-
|
|
173
|
-
Selection outranks hover: a selected item does not change on hover. Current navigation is
|
|
174
|
-
neutral (`--accent`, foreground ink, medium weight); the brand ladder is for a value the user
|
|
175
|
-
chose.
|
|
176
|
-
|
|
177
|
-
**Tone ladder.** For T in primary, info, success, warning and destructive:
|
|
178
|
-
|
|
179
|
-
| role | step | readers |
|
|
180
|
-
|---|---|---|
|
|
181
|
-
| solid fill | `--T` with `--T-foreground` | solid Button, Badge and IconBadge |
|
|
182
|
-
| ink | `--primary-accent`, `--info`, `--success`, `--warning-accent`, `--destructive-accent` | text, glyphs, dots, sparklines and bars on the page or on a tint |
|
|
183
|
-
| wash | `T-5`, warning `-10` | large panels: Alert, AI confirmation, a failed row, an applied coupon |
|
|
184
|
-
| soft | `T-10` | chips and tiles: Badge soft, mentions, IconBadge, trend and diff chips, calendar chips, timeline discs, ghost and outline hover |
|
|
185
|
-
| soft hover, halo | `T-20` | a linked soft chip's hover, the current-step and status halos |
|
|
186
|
-
| line | `T-30`, warning `-40` | callouts, soft chips, outline Buttons and Badges, metric panels, applied filters |
|
|
187
|
-
|
|
188
|
-
Warning's steps sit one higher because amber is light: a 10% amber wash lands where the
|
|
189
|
-
other hues land at 5%. `--primary-15`, `--primary-25` and `--primary-40` are not tone steps:
|
|
190
|
-
they belong to the range band, the analytics ruler and the media-tile selection ring.
|
|
191
|
-
There is no other soft or wash step in any hue. Badge and mention
|
|
192
|
-
chips do the arithmetic on one re-pointed hue (`--badge-hue`, `--ref-hue`) with the same
|
|
193
|
-
percentages.
|
|
194
|
-
|
|
195
|
-
**Edges.**
|
|
196
|
-
|
|
197
|
-
| token | role |
|
|
198
|
-
|---|---|
|
|
199
|
-
| `--border-width` | every hairline, rail and connector |
|
|
200
|
-
| `--border-width-strong` | marks only: a quote bar, the active-nav bar, a dot ring, a drop line |
|
|
201
|
-
| `--focus-ring-width` | focus only |
|
|
202
|
-
| `--border` | an outer edge: frames on the page, overlays, page-chrome bars, the Separator, rails, thumbnails |
|
|
203
|
-
| `--border-60` | an inner edge: header, footer and toolbar bands, section rules, nested frames, row rules, menu separators |
|
|
204
|
-
| `--control-border` `--control-border-hover` | the frame of a control in a row with fields: outline toggles and ToggleGroup, pill groups, filter pills, interactive chips, dashed add slots. Mixed separately for dark. A divider inside a control (a ButtonGroup separator, a filter pill's segments) is an inner rule, `--border-60` |
|
|
205
|
-
| `--foreground-20` | the hover edge of a clickable surface |
|
|
206
|
-
| `--invalid-ring-border` with `--invalid-ring` | every invalid edge. Focus adds the ring, invalid keeps its border, and hover never repaints it |
|
|
207
|
-
|
|
208
|
-
There is no edge colour between the two. No literal `1.5px` or `3px` edge.
|
|
209
|
-
|
|
210
|
-
**Elevation.**
|
|
211
|
-
|
|
212
|
-
| token | role |
|
|
213
|
-
|---|---|
|
|
214
|
-
| none | bordered or flat surfaces, field shells, sticky bars |
|
|
215
|
-
| `--shadow-xs` | resting lift: a framed Card's bezel, a raised chip, a thumb, a floating sidebar |
|
|
216
|
-
| `--shadow-sm` | hover lift for every clickable card and tile; controls over artwork |
|
|
217
|
-
| `--popover-shadow` | every anchored popup (select, combobox, mention panel, chart tooltip, map popup), never with a real border |
|
|
218
|
-
| `--shadow-lg` | free-floating transients: toast, drag ghost, floating batch bar, submenu |
|
|
219
|
-
| `--shadow-xl` | modals and palettes |
|
|
220
|
-
|
|
221
|
-
`--shadow-2xs`, `--shadow` and `--shadow-2xl` are kept for shadcn compatibility; no kit
|
|
222
|
-
surface reads them. A frosted sticky bar is opaque `--background`, then `--background-70`
|
|
223
|
-
with `blur(12px)` under `@supports`.
|
|
224
|
-
|
|
225
|
-
**Focus.** Controls take `--focus-ring`, or `--focus-ring-inset` under a clip. Fields and
|
|
226
|
-
field shells take `--field-focus-ring` with a `--focus-ring-color` border, keyed on the
|
|
227
|
-
control's `:focus-visible`; the rich-text editor and the AI composer are the multi-control
|
|
228
|
-
exception and light on `:focus-within`. Never read `--ring` directly. Every Sidebar
|
|
229
|
-
surface re-points `--focus-ring-color` to the theme's `--sidebar-ring` through the same
|
|
230
|
-
recipe (mixed toward `--sidebar-foreground` in light, unmixed in dark) and composes
|
|
231
|
-
`--focus-ring`, `--focus-ring-inset` and `--field-focus-ring` again from it. It also sets
|
|
232
|
-
`--surface-ground: var(--sidebar)`.
|
|
233
|
-
|
|
234
|
-
**Type.** Sizes come with their paired leading. `--leading-none` for fixed-height controls
|
|
235
|
-
and glyphs, `--leading-tight` for titles at base size and up, `--leading-relaxed` for prose;
|
|
236
|
-
`--leading-snug` never on `xs` or `sm`. Weight: normal for body; medium for labels, headers,
|
|
237
|
-
controls, badges, row and accordion titles; semibold for surface titles, Heading, card
|
|
238
|
-
titles and headline figures; bold for strong text and grand totals. `--tracking-widest` is
|
|
239
|
-
for uppercase and shortcuts, `--tracking-tight` for Heading `xl` and `2xl` only. Colour
|
|
240
|
-
reaches a `Text` through its `type` prop, never a module rule. Links read `--link-color` and
|
|
241
|
-
`--link-underline-offset`.
|
|
242
|
-
|
|
243
|
-
**Size.** Control heights and paddings go in matching pairs from the control ladder; a 24px
|
|
244
|
-
glyph button is `--control-h-2xs`. A chevron inside a control is `--size-icon`, a caret after
|
|
245
|
-
text `--size-icon-sm`. A head-of-row thumbnail is `--size-medallion`; a nav or menu row icon
|
|
246
|
-
is `--size-icon`; a status dot is `--space-md`. Gaps: control icon to label `--space-sm`, chip
|
|
247
|
-
icon to label `--space-xs`, sibling actions `--space-md`. Every derived multiple is rounded
|
|
248
|
-
to a whole pixel and lands on the 2px grid.
|
|
249
|
-
|
|
250
|
-
**Dark and inverse.** Small inverse chips flip with the theme (Tooltip, solid neutral
|
|
251
|
-
controls). Large inverse slabs stay dark in both modes: the inverse Alert and the toast read
|
|
252
|
-
`--inverse-*`, and the auth showcase panel is a `data-theme="dark"` scope. A QR code always
|
|
253
|
-
renders dark modules on light through `--inverse-background` and `--inverse-foreground`.
|
|
254
|
-
|
|
255
|
-
**Menus in dark.** `overlay.darkMenus` (default `true`) renders dropdown and context menus in
|
|
256
|
-
the dark scheme on a light page. It applies to command menus only: listboxes, selects,
|
|
257
|
-
comboboxes and pickers belong to the field that opened them and follow the page, like every
|
|
258
|
-
other popup.
|
|
259
|
-
|
|
260
|
-
## Shared surface and content rhythm
|
|
261
|
-
|
|
262
|
-
Retheme surface padding with `--surface-x` and `--surface-y`. Cards, choice cards, framed
|
|
263
|
-
ContentBlocks, popovers, hover cards, the form actions bar and overlay bodies share these
|
|
264
|
-
insets. Overlay headers and footers, and CardFooter, use 0.75 of the vertical inset
|
|
265
|
-
(`round(calc(var(--surface-py) * 0.75), 1px)`) and the body's horizontal inset; the overlay
|
|
266
|
-
header adds one `--space-2xs` above its title. Bands (a toolbar or header row inside a frame)
|
|
267
|
-
are `--row-py` by `--surface-px`; edge-to-edge rows, table cells included, take `--surface-px`
|
|
268
|
-
inline; list rows are `--row-py` by `--row-px`. Compact collection shells use half the inset.
|
|
108
|
+
A component's own variables are private and named `--_x`, declared on its root class or
|
|
109
|
+
inlined where used. A private name earns its place with one of:
|
|
269
110
|
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
111
|
+
- **arithmetic** read by two or more rules that must stay equal;
|
|
112
|
+
- **a variant** that re-points it (`.columns4 { --_min: 9rem; }`);
|
|
113
|
+
- **JavaScript** that writes it (`style={{ "--_progress-fill": … }}`);
|
|
114
|
+
- **another module** that sets it: `--_button-height`, `--_button-radius`, `--_card-px` and
|
|
115
|
+
`--_card-py`, `--_icon-badge-size`, `--_content-block-gap`, `--_overlay-max-width`.
|
|
274
116
|
|
|
275
|
-
|
|
276
|
-
(`initial`) by default, so each axis follows the shared surface controls; setting either
|
|
277
|
-
sets both axes for that surface. Do not add another component-specific padding variable for
|
|
278
|
-
the same job.
|
|
117
|
+
A bare `var(--gap)` behind another name is none of these; read the theme directly.
|
|
279
118
|
|
|
280
|
-
|
|
281
|
-
|
|
119
|
+
Animations name global keyframes through `--keyframes-*` (CSS Modules would rename a bare
|
|
120
|
+
name) and state their own timing: `animation: var(--keyframes-spin) 1s linear infinite`. The
|
|
121
|
+
keyframes are named `themelia-*`, so Tailwind's and tw-animate-css's `spin` or `enter` never
|
|
122
|
+
replace them.
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Animation. CSS Modules rename a keyframes name written in a module, so a module names these
|
|
3
|
+
* global keyframes through a variable and states the timing itself, where it resolves against
|
|
4
|
+
* the element's own durations (a scope with `motion.reduced` included):
|
|
5
|
+
*
|
|
6
|
+
* .content {
|
|
7
|
+
* animation: var(--keyframes-exit) var(--duration-fast) var(--ease);
|
|
8
|
+
* --_enter-opacity: 0;
|
|
9
|
+
* --_enter-scale: 0.95;
|
|
10
|
+
* }
|
|
11
|
+
* .content[data-open] { animation: var(--keyframes-enter) var(--duration-fast) var(--ease); }
|
|
12
|
+
*
|
|
13
|
+
* The enter and exit keyframes read private parameters with neutral fallbacks, so a surface
|
|
14
|
+
* sets only the axes it animates. The variables are `--keyframes-*` because Tailwind's
|
|
15
|
+
* `--animate-*` hold whole shorthands. The keyframes are `themelia-*` because Tailwind and
|
|
16
|
+
* tw-animate-css define a `spin`, `pulse`, `enter` and `exit` of their own, and keyframes of
|
|
17
|
+
* one name replace each other: whichever loads last would run for both.
|
|
18
|
+
*/
|
|
19
|
+
@layer tokens {
|
|
20
|
+
:root {
|
|
21
|
+
--keyframes-enter: themelia-enter;
|
|
22
|
+
--keyframes-exit: themelia-exit;
|
|
23
|
+
--keyframes-spin: themelia-spin;
|
|
24
|
+
--keyframes-pulse: themelia-pulse;
|
|
25
|
+
--keyframes-ping: themelia-ping;
|
|
26
|
+
--keyframes-progress: themelia-progress;
|
|
27
|
+
--keyframes-shimmer: themelia-shimmer;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
@keyframes themelia-enter {
|
|
32
|
+
from {
|
|
33
|
+
opacity: var(--_enter-opacity, 1);
|
|
34
|
+
transform: translate3d(var(--_enter-x, 0), var(--_enter-y, 0), 0) scale(var(--_enter-scale, 1));
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
@keyframes themelia-exit {
|
|
39
|
+
to {
|
|
40
|
+
opacity: var(--_exit-opacity, 1);
|
|
41
|
+
transform: translate3d(var(--_exit-x, 0), var(--_exit-y, 0), 0) scale(var(--_exit-scale, 1));
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/* Indeterminate progress: spinners and loader buttons. */
|
|
46
|
+
@keyframes themelia-spin {
|
|
47
|
+
to {
|
|
48
|
+
transform: rotate(360deg);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/* An expanding, fading halo, paired with a solid dot that stays put. */
|
|
53
|
+
@keyframes themelia-ping {
|
|
54
|
+
75%,
|
|
55
|
+
100% {
|
|
56
|
+
transform: scale(2);
|
|
57
|
+
opacity: 0;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/* Skeleton placeholders. */
|
|
62
|
+
@keyframes themelia-pulse {
|
|
63
|
+
50% {
|
|
64
|
+
opacity: 0.5;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/*
|
|
69
|
+
* The indeterminate bar's band. Translate percentages are of the band (40% of the track),
|
|
70
|
+
* so 250% carries it fully off the far edge. Keep in step with the band width.
|
|
71
|
+
*/
|
|
72
|
+
@keyframes themelia-progress {
|
|
73
|
+
from {
|
|
74
|
+
transform: translateX(-100%);
|
|
75
|
+
}
|
|
76
|
+
to {
|
|
77
|
+
transform: translateX(250%);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/* Right to left across a background twice the element's size: one pass per cycle. */
|
|
82
|
+
@keyframes themelia-shimmer {
|
|
83
|
+
from {
|
|
84
|
+
background-position: 200% 0;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
to {
|
|
88
|
+
background-position: -200% 0;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/*
|
|
93
|
+
* Native top-layer surfaces (dialog, alert dialog, sheet, drawer) use transitions plus
|
|
94
|
+
* `@starting-style`, not the keyframes above: the element leaves the top layer the moment
|
|
95
|
+
* `close()` runs, so only transitioning `overlay` and `display` (allow-discrete) keeps it
|
|
96
|
+
* there to animate out. Unsupported browsers show and hide it instantly.
|
|
97
|
+
*/
|
|
98
|
+
|
|
99
|
+
/* Motion here is decorative, so reduced motion removes it. */
|
|
100
|
+
@media (prefers-reduced-motion: reduce) {
|
|
101
|
+
/*
|
|
102
|
+
* Catches motion not written against the duration variables (spinners, skeletons, the
|
|
103
|
+
* progress crawl, third-party CSS). `0s` animations still fire their end events; `0s`
|
|
104
|
+
* transitions fire no `transitionend`, hence 0.01ms. A non-zero animation duration would
|
|
105
|
+
* make Base UI see both and warn on every Collapsible and Accordion.
|
|
106
|
+
*/
|
|
107
|
+
*,
|
|
108
|
+
*::before,
|
|
109
|
+
*::after {
|
|
110
|
+
animation-duration: 0s !important;
|
|
111
|
+
animation-iteration-count: 1 !important;
|
|
112
|
+
transition-duration: 0.01ms !important;
|
|
113
|
+
}
|
|
114
|
+
}
|
package/dist/styles/base.css
CHANGED
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
|
|
19
19
|
html {
|
|
20
20
|
font-family: var(--font-sans);
|
|
21
|
-
line-height:
|
|
21
|
+
line-height: calc(1.25 / 0.875);
|
|
22
22
|
-webkit-text-size-adjust: 100%;
|
|
23
23
|
tab-size: 4;
|
|
24
24
|
}
|
|
@@ -26,8 +26,9 @@
|
|
|
26
26
|
body {
|
|
27
27
|
background-color: var(--background);
|
|
28
28
|
color: var(--foreground);
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
/* Text's `sm` step: the size of anything the kit's own type does not reach. */
|
|
30
|
+
font-size: calc(var(--text-sm) * var(--text-scale));
|
|
31
|
+
line-height: calc(1.25 / 0.875);
|
|
31
32
|
-webkit-font-smoothing: antialiased;
|
|
32
33
|
-moz-osx-font-smoothing: grayscale;
|
|
33
34
|
}
|
|
@@ -39,7 +40,7 @@
|
|
|
39
40
|
}
|
|
40
41
|
|
|
41
42
|
:is(input, textarea, [contenteditable="true"]) {
|
|
42
|
-
caret-color: var(--primary
|
|
43
|
+
caret-color: var(--primary);
|
|
43
44
|
}
|
|
44
45
|
|
|
45
46
|
code,
|
|
@@ -75,8 +76,8 @@
|
|
|
75
76
|
mark {
|
|
76
77
|
margin-inline: -0.125em;
|
|
77
78
|
padding-inline: 0.125em;
|
|
78
|
-
/*
|
|
79
|
-
background-color: var(--warning-
|
|
79
|
+
/* The strong tint: a light one turns faint on a dark card. */
|
|
80
|
+
background-color: color-mix(in oklab, var(--warning) var(--tint-strong), transparent);
|
|
80
81
|
color: var(--foreground);
|
|
81
82
|
-webkit-box-decoration-break: clone;
|
|
82
83
|
box-decoration-break: clone;
|