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
|
@@ -15,7 +15,6 @@ Passive siblings need consistent spacing, a grid, or a stack — with no semanti
|
|
|
15
15
|
|
|
16
16
|
```tsx fragment — import-only example
|
|
17
17
|
import { AdaptiveGrid } from "themelia-ui/base/structure"
|
|
18
|
-
import "themelia-ui/base/structure.css"
|
|
19
18
|
```
|
|
20
19
|
|
|
21
20
|
## Composition
|
|
@@ -31,6 +30,16 @@ outside the package and arrives through the public props, callbacks, slots, or a
|
|
|
31
30
|
|
|
32
31
|
Kind: const.
|
|
33
32
|
|
|
33
|
+
**Use when:** Equal tracks should be added as minimum-width columns fit the available panel.
|
|
34
|
+
|
|
35
|
+
**Avoid when:** The design requires an explicit column count or a fixed summary rail.
|
|
36
|
+
|
|
37
|
+
**Compose:** Set minColumnWidth and shared gaps. Column count follows available width; responsive gap and alignment use viewport steps.
|
|
38
|
+
|
|
39
|
+
**Capabilities:** auto fit columns; minimum column width; responsive panel grid.
|
|
40
|
+
|
|
41
|
+
**Alternatives:** Grid, Split.
|
|
42
|
+
|
|
34
43
|
```text
|
|
35
44
|
React.ForwardRefExoticComponent<Omit<AdaptiveGridProps, "ref"> & React.RefAttributes<HTMLDivElement>>
|
|
36
45
|
```
|
|
@@ -51,7 +60,7 @@ Extends: `React.ComponentProps<"div">`.
|
|
|
51
60
|
|
|
52
61
|
| member | required | type | description / documented default |
|
|
53
62
|
| --- | :-: | --- | --- |
|
|
54
|
-
| `minColumnWidth` | no | `AdaptiveGridMinimum` | Minimum column width before another track is added. |
|
|
63
|
+
| `minColumnWidth` | no | `AdaptiveGridMinimum \| CssLength` | Minimum column width before another track is added: `default`, `sm` or a CSS length. |
|
|
55
64
|
| `gap` | no | `ResponsiveValue<StructureGap>` | |
|
|
56
65
|
| `align` | no | `ResponsiveValue<StructureAlign>` | |
|
|
57
66
|
|
|
@@ -59,6 +68,16 @@ Extends: `React.ComponentProps<"div">`.
|
|
|
59
68
|
|
|
60
69
|
Kind: const.
|
|
61
70
|
|
|
71
|
+
**Use when:** Intentional media or a rule must escape a known parent inset.
|
|
72
|
+
|
|
73
|
+
**Avoid when:** Removing duplicate wrapper padding or hiding accidental overflow.
|
|
74
|
+
|
|
75
|
+
**Compose:** Match amount to the actual inset. Shipped padding and gap pairs match; check custom themes and focus visibility.
|
|
76
|
+
|
|
77
|
+
**Capabilities:** edge to edge inset escape; inline block negative margins.
|
|
78
|
+
|
|
79
|
+
**Alternatives:** ContentBlock.
|
|
80
|
+
|
|
62
81
|
```text
|
|
63
82
|
React.ForwardRefExoticComponent<Omit<BleedProps, "ref"> & React.RefAttributes<HTMLDivElement>>
|
|
64
83
|
```
|
|
@@ -81,13 +100,33 @@ Extends: `React.ComponentProps<"div">`.
|
|
|
81
100
|
|
|
82
101
|
| member | required | type | description / documented default |
|
|
83
102
|
| --- | :-: | --- | --- |
|
|
84
|
-
| `amount` | no | `ResponsiveValue<StructureGap>` | How far to escape,
|
|
85
|
-
| `axis` | no | `BleedAxis` | Which way to escape; `both` covers every direction. Sideways is the common case: an<br>image bleeds across and keeps its vertical rhythm. |
|
|
103
|
+
| `amount` | no | `ResponsiveValue<StructureGap>` | How far to escape: one of the two gaps, which equal the two paddings. Match it to the<br>padding being cancelled — a surface padded by `--padding-sm` bleeds `sm` — so the two<br>move together under a density change. @default "none" |
|
|
104
|
+
| `axis` | no | `BleedAxis` | Which way to escape; `both` covers every direction. Sideways is the common case: an<br>image bleeds across and keeps its vertical rhythm. @default "inline" |
|
|
105
|
+
|
|
106
|
+
### `CssLength`
|
|
107
|
+
|
|
108
|
+
Kind: type.
|
|
109
|
+
|
|
110
|
+
A CSS length: a number with a unit or a percentage, or a math or `var()` expression.
|
|
111
|
+
|
|
112
|
+
```text
|
|
113
|
+
`${number}${"px" | "rem" | "em" | "ch" | "%" | "vw" | "vh" | "dvw" | "dvh" | "svw" | "svh" | "lvw" | "lvh"}` | `${"calc" | "min" | "max" | "clamp" | "var"}(${string})`
|
|
114
|
+
```
|
|
86
115
|
|
|
87
116
|
### `Grid`
|
|
88
117
|
|
|
89
118
|
Kind: const.
|
|
90
119
|
|
|
120
|
+
**Use when:** Passive siblings need an explicit responsive column count.
|
|
121
|
+
|
|
122
|
+
**Avoid when:** The column count should follow how many minimum-width tracks fit, or a feature already arranges its children.
|
|
123
|
+
|
|
124
|
+
**Compose:** Grid owns gaps, not child insets. It uses nearest-container thresholds when containment exists, otherwise viewport thresholds.
|
|
125
|
+
|
|
126
|
+
**Capabilities:** responsive columns; grid row column gaps; nearest container width.
|
|
127
|
+
|
|
128
|
+
**Alternatives:** AdaptiveGrid, Stack.
|
|
129
|
+
|
|
91
130
|
```text
|
|
92
131
|
React.ForwardRefExoticComponent<Omit<GridProps, "ref"> & React.RefAttributes<HTMLDivElement>>
|
|
93
132
|
```
|
|
@@ -96,6 +135,16 @@ React.ForwardRefExoticComponent<Omit<GridProps, "ref"> & React.RefAttributes<HTM
|
|
|
96
135
|
|
|
97
136
|
Kind: const.
|
|
98
137
|
|
|
138
|
+
**Use when:** A direct Grid child needs a numeric span or a full row.
|
|
139
|
+
|
|
140
|
+
**Avoid when:** The parent is not a Grid, or a span would exceed its current column count.
|
|
141
|
+
|
|
142
|
+
**Compose:** Coordinate numeric spans with the parent columns. GridCell spans use viewport steps even when Grid uses container steps.
|
|
143
|
+
|
|
144
|
+
**Capabilities:** responsive cell span; full row span.
|
|
145
|
+
|
|
146
|
+
**Alternatives:** Stack.
|
|
147
|
+
|
|
99
148
|
```text
|
|
100
149
|
React.ForwardRefExoticComponent<Omit<GridCellProps, "ref"> & React.RefAttributes<HTMLDivElement>>
|
|
101
150
|
```
|
|
@@ -108,7 +157,7 @@ Extends: `React.ComponentProps<"div">`.
|
|
|
108
157
|
|
|
109
158
|
| member | required | type | description / documented default |
|
|
110
159
|
| --- | :-: | --- | --- |
|
|
111
|
-
| `span` | no | `ResponsiveValue<GridSpan>` | Columns occupied. `full` spans whatever the grid currently has. |
|
|
160
|
+
| `span` | no | `ResponsiveValue<GridSpan>` | Columns occupied. `full` spans whatever the grid currently has, including in a<br>responsive object. Span breakpoints follow the viewport, not Grid's container. |
|
|
112
161
|
|
|
113
162
|
### `GridColumns`
|
|
114
163
|
|
|
@@ -126,12 +175,12 @@ Extends: `React.ComponentProps<"div">`.
|
|
|
126
175
|
|
|
127
176
|
| member | required | type | description / documented default |
|
|
128
177
|
| --- | :-: | --- | --- |
|
|
129
|
-
| `columns` | no | `ResponsiveValue<GridColumns>` | Defaults to one column, then two from the md
|
|
178
|
+
| `columns` | no | `ResponsiveValue<GridColumns>` | Defaults to one column, then two from md. Uses the nearest inline-size query<br>container when present (md = 32rem), otherwise the viewport (md = 48rem). |
|
|
130
179
|
| `gap` | no | `ResponsiveValue<StructureGap>` | |
|
|
131
180
|
| `rowGap` | no | `ResponsiveValue<StructureGap>` | |
|
|
132
181
|
| `columnGap` | no | `ResponsiveValue<StructureGap>` | |
|
|
133
182
|
| `align` | no | `ResponsiveValue<StructureAlign>` | |
|
|
134
|
-
| `maxWidth` | no | `ResponsiveValue<StructureWidth \|
|
|
183
|
+
| `maxWidth` | no | `ResponsiveValue<StructureWidth \| CssLength>` | Caps the grid's width — a content step, or any CSS length. Same scale as `Stack`. |
|
|
135
184
|
|
|
136
185
|
### `GridSpan`
|
|
137
186
|
|
|
@@ -155,6 +204,16 @@ T | Partial<Record<Breakpoint, T>>
|
|
|
155
204
|
|
|
156
205
|
Kind: const.
|
|
157
206
|
|
|
207
|
+
**Use when:** A fluid main region sits beside a constrained rail that collapses at a chosen viewport step.
|
|
208
|
+
|
|
209
|
+
**Avoid when:** Needing equal tracks or the standard semantic main/aside layout.
|
|
210
|
+
|
|
211
|
+
**Compose:** Supply main first and side second. side changes visual placement, not DOM order. Width is a rail maximum, with collapseBelow controlling stacking.
|
|
212
|
+
|
|
213
|
+
**Capabilities:** fluid main fixed rail; responsive two columns; collapse breakpoint.
|
|
214
|
+
|
|
215
|
+
**Alternatives:** TwoColumnLayout, Grid.
|
|
216
|
+
|
|
158
217
|
```text
|
|
159
218
|
React.ForwardRefExoticComponent<Omit<SplitProps, "ref"> & React.RefAttributes<HTMLDivElement>>
|
|
160
219
|
```
|
|
@@ -168,9 +227,9 @@ Extends: `React.ComponentProps<"div">`.
|
|
|
168
227
|
| member | required | type | description / documented default |
|
|
169
228
|
| --- | :-: | --- | --- |
|
|
170
229
|
| `side` | no | `SplitSide` | Which visual column is the fixed one. The DOM order never changes with it: the first<br>child is the main content and the second the side on both settings, so a reader<br>tabbing through reaches the content first either way. |
|
|
171
|
-
| `sideWidth` | no | `ResponsiveValue<StructureWidth \|
|
|
172
|
-
| `gap` | no | `ResponsiveValue<StructureGap>` | Space between the two columns. @default "
|
|
173
|
-
| `collapseBelow` | no | `"sm" \| "md" \| "lg" \| "xl" \| "never"` | Below this breakpoint the two columns become one. `never` keeps them side by side at<br>every width. |
|
|
230
|
+
| `sideWidth` | no | `ResponsiveValue<StructureWidth \| CssLength>` | The fixed column's width — a step or any CSS length. A maximum rather than an exact<br>size, so a narrow viewport shrinks the rail instead of squeezing the content beside it<br>to nothing. @default "18rem" |
|
|
231
|
+
| `gap` | no | `ResponsiveValue<StructureGap>` | Space between the two columns. @default "default" |
|
|
232
|
+
| `collapseBelow` | no | `"sm" \| "md" \| "lg" \| "xl" \| "never"` | Below this breakpoint the two columns become one. `never` keeps them side by side at<br>every width. @default "md" |
|
|
174
233
|
|
|
175
234
|
### `SplitSide`
|
|
176
235
|
|
|
@@ -190,7 +249,7 @@ Kind: const.
|
|
|
190
249
|
|
|
191
250
|
**Avoid when:** An existing component already owns the layout.
|
|
192
251
|
|
|
193
|
-
**Compose:** Use
|
|
252
|
+
**Compose:** Use gap, direction and alignment props; Stack adds no inset. Let child surfaces own padding.
|
|
194
253
|
|
|
195
254
|
**Capabilities:** vertical horizontal gap spacing; responsive arrangement.
|
|
196
255
|
|
|
@@ -209,11 +268,11 @@ Extends: `Omit<React.ComponentProps<"div">, "dir">`.
|
|
|
209
268
|
| member | required | type | description / documented default |
|
|
210
269
|
| --- | :-: | --- | --- |
|
|
211
270
|
| `direction` | no | `ResponsiveValue<StructureDirection>` | Main axis. @default "vertical" |
|
|
212
|
-
| `gap` | no | `ResponsiveValue<StructureGap>` | Space between children
|
|
271
|
+
| `gap` | no | `ResponsiveValue<StructureGap>` | Space between children: `default` between groups, `sm` inside one. @default "default" |
|
|
213
272
|
| `align` | no | `ResponsiveValue<StructureAlign>` | Cross-axis alignment. @default "stretch" |
|
|
214
273
|
| `justify` | no | `ResponsiveValue<StructureJustify>` | Main-axis distribution. @default "start" |
|
|
215
274
|
| `wrap` | no | `ResponsiveValue<boolean>` | Allows children to flow onto more than one line. @default false |
|
|
216
|
-
| `maxWidth` | no | `ResponsiveValue<StructureWidth \|
|
|
275
|
+
| `maxWidth` | no | `ResponsiveValue<StructureWidth \| CssLength>` | Caps the box's width — a content width (`default`, `sm`, `full`, `none`) or any CSS<br>length, such as a form's `26rem`. A field measure is a control decision rather than a<br>content one, which is why a raw length is allowed beside the scale. |
|
|
217
276
|
|
|
218
277
|
### `StructureAlign`
|
|
219
278
|
|
|
@@ -243,8 +302,11 @@ Kind: type.
|
|
|
243
302
|
|
|
244
303
|
Kind: type.
|
|
245
304
|
|
|
305
|
+
The two gaps: `default` between groups (fields, cards, sections), `sm` inside a group
|
|
306
|
+
(icon and label, title and description, a toolbar's controls). Unset is `default`.
|
|
307
|
+
|
|
246
308
|
```text
|
|
247
|
-
"none" | "
|
|
309
|
+
"none" | "sm" | "default"
|
|
248
310
|
```
|
|
249
311
|
|
|
250
312
|
### `StructureJustify`
|
|
@@ -259,16 +321,178 @@ Kind: type.
|
|
|
259
321
|
|
|
260
322
|
Kind: type.
|
|
261
323
|
|
|
262
|
-
|
|
263
|
-
as a field's ~26rem.
|
|
324
|
+
The content width (`default`), a narrow reading or form measure (`sm`), or any CSS length
|
|
325
|
+
for a control measure such as a field's ~26rem.
|
|
264
326
|
|
|
265
327
|
```text
|
|
266
|
-
"
|
|
328
|
+
"default" | "sm" | "full" | "none"
|
|
267
329
|
```
|
|
268
330
|
|
|
269
331
|
## Preview recipes
|
|
270
332
|
|
|
271
|
-
Preview route:
|
|
333
|
+
Preview route: Analytics — `/analytics`
|
|
334
|
+
|
|
335
|
+
### Compose your own
|
|
336
|
+
|
|
337
|
+
```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
|
|
338
|
+
import { ArrowUpIcon, CreditCardIcon } from "lucide-react"
|
|
339
|
+
|
|
340
|
+
import { Badge } from "themelia-ui/base/badge"
|
|
341
|
+
import { Card } from "themelia-ui/base/cards"
|
|
342
|
+
import { Sparkline } from "themelia-ui/base/chart"
|
|
343
|
+
import { IconBadge } from "themelia-ui/base/display"
|
|
344
|
+
import { Stack } from "themelia-ui/base/structure"
|
|
345
|
+
import { DisplayLabel, Text } from "themelia-ui/base/typography"
|
|
346
|
+
import { Money } from "themelia-ui/primitives"
|
|
347
|
+
|
|
348
|
+
export default function AnalyticsBlueprint() {
|
|
349
|
+
return (
|
|
350
|
+
<Card style={{ maxWidth: "20rem" }}>
|
|
351
|
+
<Stack gap="sm">
|
|
352
|
+
<Stack direction="horizontal" align="center" gap="sm">
|
|
353
|
+
<IconBadge icon={CreditCardIcon} tone="primary" />
|
|
354
|
+
<DisplayLabel>Revenue</DisplayLabel>
|
|
355
|
+
</Stack>
|
|
356
|
+
<Stack direction="horizontal" align="center" justify="between" gap="sm">
|
|
357
|
+
<Money amount={48200} currency="EUR" size="xl" weight="semibold" />
|
|
358
|
+
<Badge tone="success">
|
|
359
|
+
<ArrowUpIcon />
|
|
360
|
+
12.4%
|
|
361
|
+
</Badge>
|
|
362
|
+
</Stack>
|
|
363
|
+
<Sparkline data={[18, 22, 19, 27, 24, 31, 29, 38]} tone="success" label="Revenue rising over eight weeks" />
|
|
364
|
+
<Text size="xs" type="secondary">
|
|
365
|
+
Net of refunds, this quarter
|
|
366
|
+
</Text>
|
|
367
|
+
</Stack>
|
|
368
|
+
</Card>
|
|
369
|
+
)
|
|
370
|
+
}
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
### Compose your own timeline
|
|
374
|
+
|
|
375
|
+
```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
|
|
376
|
+
import { RocketIcon, WrenchIcon } from "lucide-react"
|
|
377
|
+
|
|
378
|
+
import { Badge } from "themelia-ui/base/badge"
|
|
379
|
+
import { Stack } from "themelia-ui/base/structure"
|
|
380
|
+
import { Timeline, type TimelineItem } from "themelia-ui/base/timeline"
|
|
381
|
+
import { MonoValue } from "themelia-ui/primitives"
|
|
382
|
+
|
|
383
|
+
const RELEASES: TimelineItem[] = [
|
|
384
|
+
{
|
|
385
|
+
id: "3.1.0",
|
|
386
|
+
title: "Saved views",
|
|
387
|
+
timestamp: <MonoValue size="xs" type="secondary">v3.1.0</MonoValue>,
|
|
388
|
+
icon: RocketIcon,
|
|
389
|
+
status: "success",
|
|
390
|
+
description: "Filters and columns can be saved and shared with the team.",
|
|
391
|
+
children: (
|
|
392
|
+
<Stack direction="horizontal" gap="sm">
|
|
393
|
+
<Badge tone="success">Added</Badge>
|
|
394
|
+
<Badge tone="neutral">Tables</Badge>
|
|
395
|
+
</Stack>
|
|
396
|
+
),
|
|
397
|
+
},
|
|
398
|
+
{
|
|
399
|
+
id: "3.0.2",
|
|
400
|
+
title: "Faster exports",
|
|
401
|
+
timestamp: <MonoValue size="xs" type="secondary">v3.0.2</MonoValue>,
|
|
402
|
+
icon: WrenchIcon,
|
|
403
|
+
status: "neutral",
|
|
404
|
+
description: "Large exports stream instead of waiting for the whole file.",
|
|
405
|
+
},
|
|
406
|
+
]
|
|
407
|
+
|
|
408
|
+
export default function ChangelogBlueprint() {
|
|
409
|
+
return (
|
|
410
|
+
<Timeline items={RELEASES} />
|
|
411
|
+
)
|
|
412
|
+
}
|
|
413
|
+
```
|
|
414
|
+
|
|
415
|
+
### Compose your own checklist
|
|
416
|
+
|
|
417
|
+
```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
|
|
418
|
+
import { CheckIcon, CircleIcon } from "lucide-react"
|
|
419
|
+
|
|
420
|
+
import { Accordion } from "themelia-ui/base/accordion"
|
|
421
|
+
import { Button } from "themelia-ui/base/buttons"
|
|
422
|
+
import { IconBadge } from "themelia-ui/base/display"
|
|
423
|
+
import { Progress } from "themelia-ui/base/feedback"
|
|
424
|
+
import { Stack } from "themelia-ui/base/structure"
|
|
425
|
+
import { Text } from "themelia-ui/base/typography"
|
|
426
|
+
|
|
427
|
+
export default function ChecklistBlueprint() {
|
|
428
|
+
return (
|
|
429
|
+
<Stack style={{ maxWidth: "34rem", width: "100%" }}>
|
|
430
|
+
<Progress value={1} max={3} label="1 of 3 steps complete" />
|
|
431
|
+
<Accordion
|
|
432
|
+
media="medallion"
|
|
433
|
+
defaultValue={["invite"]}
|
|
434
|
+
items={[
|
|
435
|
+
{
|
|
436
|
+
value: "profile",
|
|
437
|
+
title: "Complete your profile",
|
|
438
|
+
icon: <IconBadge icon={CheckIcon} tone="success" shape="circle" />,
|
|
439
|
+
content: <Text type="secondary">Name, avatar and time zone are set.</Text>,
|
|
440
|
+
},
|
|
441
|
+
{
|
|
442
|
+
value: "invite",
|
|
443
|
+
title: "Invite your team",
|
|
444
|
+
icon: <IconBadge icon={CircleIcon} shape="circle" />,
|
|
445
|
+
content: (
|
|
446
|
+
<Stack gap="sm" align="start">
|
|
447
|
+
<Text type="secondary">Teammates see the same projects and saved views.</Text>
|
|
448
|
+
<Button>Send invites</Button>
|
|
449
|
+
</Stack>
|
|
450
|
+
),
|
|
451
|
+
},
|
|
452
|
+
{
|
|
453
|
+
value: "connect",
|
|
454
|
+
title: "Connect a data source",
|
|
455
|
+
icon: <IconBadge icon={CircleIcon} shape="circle" />,
|
|
456
|
+
content: <Text type="secondary">Postgres, a CSV upload or the REST API.</Text>,
|
|
457
|
+
},
|
|
458
|
+
]}
|
|
459
|
+
/>
|
|
460
|
+
</Stack>
|
|
461
|
+
)
|
|
462
|
+
}
|
|
463
|
+
```
|
|
464
|
+
|
|
465
|
+
### Compose your own
|
|
466
|
+
|
|
467
|
+
```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
|
|
468
|
+
import { Button } from "themelia-ui/base/buttons"
|
|
469
|
+
import { Card } from "themelia-ui/base/cards"
|
|
470
|
+
import { MetadataList } from "themelia-ui/base/display"
|
|
471
|
+
import { Stack } from "themelia-ui/base/structure"
|
|
472
|
+
import { toast } from "themelia-ui/base/toaster"
|
|
473
|
+
import { Money } from "themelia-ui/primitives"
|
|
474
|
+
|
|
475
|
+
export default function CartSummaryBlueprint() {
|
|
476
|
+
return (
|
|
477
|
+
<Card title="Order summary" description="3 items" style={{ maxWidth: "24rem" }}>
|
|
478
|
+
<Stack>
|
|
479
|
+
<MetadataList
|
|
480
|
+
layout="rows"
|
|
481
|
+
items={[
|
|
482
|
+
{ label: "Subtotal", value: <Money amount={258} currency="EUR" /> },
|
|
483
|
+
{ label: "Shipping", value: <Money amount={4.8} currency="EUR" /> },
|
|
484
|
+
{ label: "Tax", value: <Money amount={51.6} currency="EUR" /> },
|
|
485
|
+
{ label: "Total", value: <Money amount={314.4} currency="EUR" weight="semibold" /> },
|
|
486
|
+
]}
|
|
487
|
+
/>
|
|
488
|
+
<Button onClick={() => toast("Checkout requested", { description: "Preview callback — connect this action to your application." })}>
|
|
489
|
+
Check out
|
|
490
|
+
</Button>
|
|
491
|
+
</Stack>
|
|
492
|
+
</Card>
|
|
493
|
+
)
|
|
494
|
+
}
|
|
495
|
+
```
|
|
272
496
|
|
|
273
497
|
### Scale
|
|
274
498
|
|
|
@@ -276,29 +500,29 @@ Preview route: Form field — `/form-field`
|
|
|
276
500
|
import { Stack } from "themelia-ui/base/structure"
|
|
277
501
|
import { Input, NativeSelect } from "themelia-ui/base/text-inputs"
|
|
278
502
|
import { MonoValue } from "themelia-ui/primitives"
|
|
279
|
-
import {
|
|
503
|
+
import { UIScope } from "themelia-ui/ui-provider"
|
|
280
504
|
|
|
281
505
|
export default function FormsScale() {
|
|
282
506
|
return (
|
|
283
|
-
<Stack
|
|
284
|
-
{[
|
|
285
|
-
<
|
|
286
|
-
<Stack direction="horizontal" gap="
|
|
507
|
+
<Stack style={{ width: "100%" }}>
|
|
508
|
+
{(["compact", "default", "comfortable"] as const).map((density) => (
|
|
509
|
+
<UIScope key={density} config={{ density }}>
|
|
510
|
+
<Stack direction="horizontal" gap="sm" align="center" justify="start">
|
|
287
511
|
{/* Widths on the wrappers: Input's style lands on the inner control, not its frame. */}
|
|
288
|
-
<MonoValue size="xs" style={{ width: "
|
|
289
|
-
{
|
|
512
|
+
<MonoValue size="xs" style={{ width: "6rem", flexShrink: 0 }}>
|
|
513
|
+
{density}
|
|
290
514
|
</MonoValue>
|
|
291
515
|
{/* Named even in a geometry demo: a placeholder is not a label. */}
|
|
292
516
|
<div style={{ width: "12rem", flexShrink: 0 }}>
|
|
293
|
-
<Input placeholder="Field" aria-label={`Example field at
|
|
517
|
+
<Input placeholder="Field" aria-label={`Example field at ${density} density`} />
|
|
294
518
|
</div>
|
|
295
519
|
<div style={{ width: "9rem", flexShrink: 0 }}>
|
|
296
|
-
<NativeSelect defaultValue="a" aria-label={`Example select at
|
|
520
|
+
<NativeSelect defaultValue="a" aria-label={`Example select at ${density} density`}>
|
|
297
521
|
<option value="a">Option</option>
|
|
298
522
|
</NativeSelect>
|
|
299
523
|
</div>
|
|
300
524
|
</Stack>
|
|
301
|
-
</
|
|
525
|
+
</UIScope>
|
|
302
526
|
))}
|
|
303
527
|
</Stack>
|
|
304
528
|
)
|
|
@@ -315,7 +539,7 @@ import { Demo } from "./_shared"
|
|
|
315
539
|
|
|
316
540
|
export default function OverlayPlacementExample() {
|
|
317
541
|
return (
|
|
318
|
-
<Stack direction="horizontal" gap="
|
|
542
|
+
<Stack direction="horizontal" gap="sm" wrap>
|
|
319
543
|
{(
|
|
320
544
|
["center", "inline-start", "inline-end", "block-start", "block-end"] as OverlayPlacement[]
|
|
321
545
|
).map((placement) => (
|
|
@@ -335,7 +559,7 @@ import { Demo } from "./_shared"
|
|
|
335
559
|
|
|
336
560
|
export default function OverlayDismissal() {
|
|
337
561
|
return (
|
|
338
|
-
<Stack direction="horizontal" gap="
|
|
562
|
+
<Stack direction="horizontal" gap="sm" wrap>
|
|
339
563
|
<Demo label="no backdrop dismiss" dismissal={{ backdrop: false }} />
|
|
340
564
|
<Demo label="no escape" dismissal={{ escape: false }} />
|
|
341
565
|
</Stack>
|
|
@@ -347,6 +571,7 @@ export default function OverlayDismissal() {
|
|
|
347
571
|
|
|
348
572
|
```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
|
|
349
573
|
import { Stack } from "themelia-ui/base/structure"
|
|
574
|
+
import { Text } from "themelia-ui/base/typography"
|
|
350
575
|
import { UIProvider } from "themelia-ui/ui-provider"
|
|
351
576
|
|
|
352
577
|
import { ControlRow } from "./_shared"
|
|
@@ -358,8 +583,8 @@ export default function TheFactor() {
|
|
|
358
583
|
<>
|
|
359
584
|
{FACTORS.map((scale) => (
|
|
360
585
|
<UIProvider key={scale} config={{ scale }}>
|
|
361
|
-
<Stack direction="horizontal"
|
|
362
|
-
<
|
|
586
|
+
<Stack direction="horizontal" align="center">
|
|
587
|
+
<Text tag="span" size="xs" mono style={{ width: "4rem", flex: "none" }}>{scale}</Text>
|
|
363
588
|
<ControlRow />
|
|
364
589
|
</Stack>
|
|
365
590
|
</UIProvider>
|
|
@@ -369,7 +594,7 @@ export default function TheFactor() {
|
|
|
369
594
|
}
|
|
370
595
|
```
|
|
371
596
|
|
|
372
|
-
### Type
|
|
597
|
+
### Type has its own factor
|
|
373
598
|
|
|
374
599
|
```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
|
|
375
600
|
import { Button } from "themelia-ui/base/buttons"
|
|
@@ -380,11 +605,11 @@ import { UIProvider } from "themelia-ui/ui-provider"
|
|
|
380
605
|
|
|
381
606
|
export default function TypeFactor() {
|
|
382
607
|
return (
|
|
383
|
-
<Stack
|
|
608
|
+
<Stack>
|
|
384
609
|
<Stack gap="sm">
|
|
385
610
|
<Text type="secondary" size="xs">typography.scale 0.875 — type shrinks, control geometry holds</Text>
|
|
386
611
|
<UIProvider config={{ typography: { scale: 0.875 } }}>
|
|
387
|
-
<Stack direction="horizontal" gap="
|
|
612
|
+
<Stack direction="horizontal" gap="sm" align="center" wrap>
|
|
388
613
|
<Text>Body copy at this factor.</Text>
|
|
389
614
|
<Button>Save</Button>
|
|
390
615
|
<Checkbox label="Check" defaultChecked />
|
|
@@ -394,7 +619,7 @@ export default function TypeFactor() {
|
|
|
394
619
|
<Stack gap="sm">
|
|
395
620
|
<Text type="secondary" size="xs">scale 0.875 + typography.scale 1 — geometry shrinks, type holds</Text>
|
|
396
621
|
<UIProvider config={{ scale: 0.875, typography: { scale: 1 } }}>
|
|
397
|
-
<Stack direction="horizontal" gap="
|
|
622
|
+
<Stack direction="horizontal" gap="sm" align="center" wrap>
|
|
398
623
|
<Text>Body copy at this factor.</Text>
|
|
399
624
|
<Button>Save</Button>
|
|
400
625
|
<Checkbox label="Check" defaultChecked />
|
|
@@ -406,37 +631,37 @@ export default function TypeFactor() {
|
|
|
406
631
|
}
|
|
407
632
|
```
|
|
408
633
|
|
|
409
|
-
###
|
|
634
|
+
### A factor, or one variable
|
|
410
635
|
|
|
411
636
|
```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
|
|
412
637
|
import { Stack } from "themelia-ui/base/structure"
|
|
413
638
|
import { Text } from "themelia-ui/base/typography"
|
|
414
|
-
import { Scope } from "themelia-ui/ui-provider"
|
|
639
|
+
import { Scope, UIProvider } from "themelia-ui/ui-provider"
|
|
415
640
|
|
|
416
641
|
import { ControlRow } from "./_shared"
|
|
417
642
|
|
|
418
643
|
export default function FactorChain() {
|
|
419
644
|
return (
|
|
420
|
-
<Stack
|
|
645
|
+
<Stack>
|
|
421
646
|
<Stack gap="sm">
|
|
422
647
|
<Text type="secondary" size="xs">default</Text>
|
|
423
648
|
<ControlRow />
|
|
424
649
|
</Stack>
|
|
425
650
|
<Stack gap="sm">
|
|
426
|
-
<Text type="secondary" size="xs"
|
|
427
|
-
<
|
|
651
|
+
<Text type="secondary" size="xs">scale: 0.875 — every length and type step</Text>
|
|
652
|
+
<UIProvider config={{ scale: 0.875 }}>
|
|
428
653
|
<ControlRow />
|
|
429
|
-
</
|
|
654
|
+
</UIProvider>
|
|
430
655
|
</Stack>
|
|
431
656
|
<Stack gap="sm">
|
|
432
|
-
<Text type="secondary" size="xs">--
|
|
433
|
-
<Scope vars={{ "--
|
|
657
|
+
<Text type="secondary" size="xs">--control-height: 2.5rem — every control, nothing else</Text>
|
|
658
|
+
<Scope vars={{ "--control-height": "2.5rem" }}>
|
|
434
659
|
<ControlRow />
|
|
435
660
|
</Scope>
|
|
436
661
|
</Stack>
|
|
437
662
|
<Stack gap="sm">
|
|
438
|
-
<Text type="secondary" size="xs">--
|
|
439
|
-
<Scope vars={{ "--
|
|
663
|
+
<Text type="secondary" size="xs">--radius-sm: 0 — every item corner</Text>
|
|
664
|
+
<Scope vars={{ "--radius-sm": "0" }}>
|
|
440
665
|
<ControlRow />
|
|
441
666
|
</Scope>
|
|
442
667
|
</Stack>
|
|
@@ -457,13 +682,13 @@ import { ControlRow } from "./_shared"
|
|
|
457
682
|
export default function Nesting() {
|
|
458
683
|
return (
|
|
459
684
|
<UIProvider config={{ scale: 1.125 }}>
|
|
460
|
-
<Stack
|
|
685
|
+
<Stack>
|
|
461
686
|
<Text type="secondary" size="sm">
|
|
462
687
|
Outer scope — 1.125
|
|
463
688
|
</Text>
|
|
464
689
|
<ControlRow />
|
|
465
690
|
<UIProvider config={{ scale: 0.8 }}>
|
|
466
|
-
<Stack gap="
|
|
691
|
+
<Stack gap="sm">
|
|
467
692
|
<Text type="secondary" size="sm">
|
|
468
693
|
Nested scope — 0.8
|
|
469
694
|
</Text>
|
|
@@ -480,6 +705,7 @@ export default function Nesting() {
|
|
|
480
705
|
|
|
481
706
|
```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
|
|
482
707
|
import { Stack } from "themelia-ui/base/structure"
|
|
708
|
+
import { Text } from "themelia-ui/base/typography"
|
|
483
709
|
import { UIProvider } from "themelia-ui/ui-provider"
|
|
484
710
|
|
|
485
711
|
import { ControlRow } from "./_shared"
|
|
@@ -489,8 +715,8 @@ export default function Density() {
|
|
|
489
715
|
<>
|
|
490
716
|
{(["compact", "default", "comfortable"] as const).map((density) => (
|
|
491
717
|
<UIProvider key={density} config={{ density }}>
|
|
492
|
-
<Stack direction="horizontal"
|
|
493
|
-
<
|
|
718
|
+
<Stack direction="horizontal" align="center">
|
|
719
|
+
<Text tag="span" size="xs" mono style={{ width: "7rem", flex: "none" }}>{density}</Text>
|
|
494
720
|
<ControlRow />
|
|
495
721
|
</Stack>
|
|
496
722
|
</UIProvider>
|
|
@@ -509,7 +735,7 @@ import { Panel } from "./_shared"
|
|
|
509
735
|
|
|
510
736
|
export default function SidebarVariantExample() {
|
|
511
737
|
return (
|
|
512
|
-
<Stack
|
|
738
|
+
<Stack>
|
|
513
739
|
<Panel variant="floating" />
|
|
514
740
|
<Panel variant="inset" />
|
|
515
741
|
</Stack>
|
|
@@ -531,7 +757,7 @@ export default function StackExample() {
|
|
|
531
757
|
<Box>vertical, gap sm</Box>
|
|
532
758
|
<Box>second</Box>
|
|
533
759
|
</Stack>
|
|
534
|
-
<Stack direction="horizontal" gap="
|
|
760
|
+
<Stack direction="horizontal" gap="sm" justify="between" align="center">
|
|
535
761
|
<Box>horizontal</Box>
|
|
536
762
|
<Box>justify between</Box>
|
|
537
763
|
<Box>align center</Box>
|
|
@@ -550,7 +776,7 @@ import { Box } from "./_shared"
|
|
|
550
776
|
|
|
551
777
|
export default function ResponsiveProps() {
|
|
552
778
|
return (
|
|
553
|
-
<Stack direction={{ base: "vertical", md: "horizontal" }} gap={{ base: "
|
|
779
|
+
<Stack direction={{ base: "vertical", md: "horizontal" }} gap={{ base: "sm", md: "default" }}>
|
|
554
780
|
<Box>stacks on small</Box>
|
|
555
781
|
<Box>row from md</Box>
|
|
556
782
|
<Box>gap grows too</Box>
|
|
@@ -568,13 +794,14 @@ import { Box } from "./_shared"
|
|
|
568
794
|
|
|
569
795
|
export default function GridExample() {
|
|
570
796
|
return (
|
|
571
|
-
<Grid columns={{ base: 1, md: 3 }} gap="
|
|
797
|
+
<Grid columns={{ base: 1, md: 3 }} gap="sm">
|
|
572
798
|
<GridCell span="full"><Box>span full</Box></GridCell>
|
|
573
799
|
<GridCell><Box>one</Box></GridCell>
|
|
574
800
|
<GridCell><Box>two</Box></GridCell>
|
|
575
801
|
<GridCell><Box>three</Box></GridCell>
|
|
576
802
|
<GridCell span={{ base: 1, md: 2 }}><Box>span 2 from md</Box></GridCell>
|
|
577
803
|
<GridCell><Box>four</Box></GridCell>
|
|
804
|
+
<GridCell span={{ base: 1, md: "full", xl: 2 }}><Box>responsive full row</Box></GridCell>
|
|
578
805
|
</Grid>
|
|
579
806
|
)
|
|
580
807
|
}
|
|
@@ -589,7 +816,7 @@ import { Box } from "./_shared"
|
|
|
589
816
|
|
|
590
817
|
export default function AdaptiveGridExample() {
|
|
591
818
|
return (
|
|
592
|
-
<AdaptiveGrid minColumnWidth="sm" gap="
|
|
819
|
+
<AdaptiveGrid minColumnWidth="sm" gap="sm">
|
|
593
820
|
{Array.from({ length: 6 }, (_, i) => (
|
|
594
821
|
<Box key={i}>card {i + 1}</Box>
|
|
595
822
|
))}
|
|
@@ -607,12 +834,12 @@ import { Box } from "./_shared"
|
|
|
607
834
|
|
|
608
835
|
export default function SplitExample() {
|
|
609
836
|
return (
|
|
610
|
-
<Stack
|
|
611
|
-
<Split sideWidth="14rem" gap="
|
|
837
|
+
<Stack style={{ width: "100%" }}>
|
|
838
|
+
<Split sideWidth="14rem" gap="sm">
|
|
612
839
|
<Box>main content, takes the rest</Box>
|
|
613
840
|
<Box>side, 14rem</Box>
|
|
614
841
|
</Split>
|
|
615
|
-
<Split side="start" sideWidth="14rem" gap="
|
|
842
|
+
<Split side="start" sideWidth="14rem" gap="sm">
|
|
616
843
|
<Box>main content — still first in the DOM</Box>
|
|
617
844
|
<Box>side, drawn on the left</Box>
|
|
618
845
|
</Split>
|
|
@@ -629,10 +856,10 @@ import { Text } from "themelia-ui/base/typography"
|
|
|
629
856
|
|
|
630
857
|
export default function BleedExample() {
|
|
631
858
|
return (
|
|
632
|
-
<div style={{ width: "100%", padding: "var(--
|
|
633
|
-
<Text size="xs" type="secondary">A surface padded by --
|
|
634
|
-
<Bleed amount="
|
|
635
|
-
<div style={{ background: "var(--muted)", padding: "var(--
|
|
859
|
+
<div style={{ width: "100%", padding: "var(--padding-sm)", border: "var(--border-width) solid var(--border)", borderRadius: "var(--radius-sm)" }}>
|
|
860
|
+
<Text size="xs" type="secondary">A surface padded by --padding-sm.</Text>
|
|
861
|
+
<Bleed amount="sm">
|
|
862
|
+
<div style={{ background: "var(--muted)", padding: "calc(var(--padding-sm) / 2) var(--padding-sm)", marginBlock: "calc(var(--gap-sm) / 2)" }}>
|
|
636
863
|
<Text size="xs">This band bleeds to both edges.</Text>
|
|
637
864
|
</div>
|
|
638
865
|
</Bleed>
|
|
@@ -647,7 +874,7 @@ export default function BleedExample() {
|
|
|
647
874
|
```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
|
|
648
875
|
import { Stack } from "themelia-ui/base/structure"
|
|
649
876
|
import { Text } from "themelia-ui/base/typography"
|
|
650
|
-
import {
|
|
877
|
+
import { UIScope } from "themelia-ui/ui-provider"
|
|
651
878
|
|
|
652
879
|
import { InvoiceTable } from "./_shared"
|
|
653
880
|
|
|
@@ -657,18 +884,41 @@ export default function TableScale() {
|
|
|
657
884
|
* Both, captioned. On its own the scoped table just looked like a table —
|
|
658
885
|
* the section asserted a difference the page gave the reader no way to see.
|
|
659
886
|
*/
|
|
660
|
-
<Stack
|
|
661
|
-
<Stack gap="
|
|
662
|
-
<Text size="xs" type="secondary"
|
|
887
|
+
<Stack style={{ width: "100%" }}>
|
|
888
|
+
<Stack gap="sm" style={{ width: "100%" }}>
|
|
889
|
+
<Text size="xs" type="secondary">density: default</Text>
|
|
663
890
|
<InvoiceTable />
|
|
664
891
|
</Stack>
|
|
665
|
-
<Stack gap="
|
|
666
|
-
<Text size="xs" type="secondary"
|
|
667
|
-
<
|
|
892
|
+
<Stack gap="sm" style={{ width: "100%" }}>
|
|
893
|
+
<Text size="xs" type="secondary">density: compact</Text>
|
|
894
|
+
<UIScope config={{ density: "compact" }} style={{ width: "100%" }}>
|
|
668
895
|
<InvoiceTable />
|
|
669
|
-
</
|
|
896
|
+
</UIScope>
|
|
670
897
|
</Stack>
|
|
671
898
|
</Stack>
|
|
672
899
|
)
|
|
673
900
|
}
|
|
674
901
|
```
|
|
902
|
+
|
|
903
|
+
### Colour islands
|
|
904
|
+
|
|
905
|
+
```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
|
|
906
|
+
import { Button } from "themelia-ui/base/buttons"
|
|
907
|
+
import { Card } from "themelia-ui/base/cards"
|
|
908
|
+
import { Grid } from "themelia-ui/base/structure"
|
|
909
|
+
import { UIProvider } from "themelia-ui/ui-provider"
|
|
910
|
+
|
|
911
|
+
export default function ColourIsland() {
|
|
912
|
+
return (
|
|
913
|
+
<Grid columns={{ base: 1, sm: 2 }}>
|
|
914
|
+
{(["light", "dark"] as const).map((colorScheme) => (
|
|
915
|
+
<UIProvider key={colorScheme} config={{ colorScheme }}>
|
|
916
|
+
<Card title={`A ${colorScheme} region`} description="Every colour inside resolves to this half.">
|
|
917
|
+
<Button>Continue</Button>
|
|
918
|
+
</Card>
|
|
919
|
+
</UIProvider>
|
|
920
|
+
))}
|
|
921
|
+
</Grid>
|
|
922
|
+
)
|
|
923
|
+
}
|
|
924
|
+
```
|