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 @@ Any activation control — including one that carries a loading state, a tooltip
|
|
|
15
15
|
|
|
16
16
|
```tsx fragment — import-only example
|
|
17
17
|
import { Button } from "themelia-ui/base/buttons"
|
|
18
|
-
import "themelia-ui/base/buttons.css"
|
|
19
18
|
```
|
|
20
19
|
|
|
21
20
|
## Composition
|
|
@@ -31,11 +30,21 @@ outside the package and arrives through the public props, callbacks, slots, or a
|
|
|
31
30
|
|
|
32
31
|
Kind: callable.
|
|
33
32
|
|
|
34
|
-
The kit's action primitive. No `size` prop by design: geometry follows the
|
|
35
|
-
so a denser region is a scope
|
|
33
|
+
The kit's action primitive. No `size` prop by design: geometry follows the provider's density
|
|
34
|
+
and scale, so a denser region is a scope.
|
|
36
35
|
|
|
37
36
|
```text
|
|
38
|
-
({ tone,
|
|
37
|
+
({ tone, appearance, iconOnly, fullWidth, loading, render, className, disabled, children, onClick, ...props }: ButtonProps) => React.JSX.Element
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### `ButtonAppearance`
|
|
41
|
+
|
|
42
|
+
Kind: type.
|
|
43
|
+
|
|
44
|
+
Fill treatment. Structural, independent of the tone's colour.
|
|
45
|
+
|
|
46
|
+
```text
|
|
47
|
+
"solid" | "outline" | "ghost"
|
|
39
48
|
```
|
|
40
49
|
|
|
41
50
|
### `ButtonGroup`
|
|
@@ -115,23 +124,13 @@ Extends: `Omit<React.ComponentProps<"button">, "children">`.
|
|
|
115
124
|
| member | required | type | description / documented default |
|
|
116
125
|
| --- | :-: | --- | --- |
|
|
117
126
|
| `tone` | no | `ButtonTone` | Semantic colour intent. Resolves through the provider when omitted, so `UIProvider`<br>defaults can change it. @default "primary" |
|
|
118
|
-
| `
|
|
127
|
+
| `appearance` | no | `ButtonAppearance` | Fill treatment, independent of `tone`. `UIProvider` defaults can change it. @default "solid" |
|
|
119
128
|
| `iconOnly` | no | `boolean` | Square button sized to its height. The label becomes the accessible name. |
|
|
120
129
|
| `fullWidth` | no | `boolean` | Stretches the button to its container's width. |
|
|
121
130
|
| `loading` | no | `boolean` | Shows a spinner and blocks interaction. The label keeps its space so the button does<br>not resize mid-action. |
|
|
122
131
|
| `render` | no | `React.ReactElement` | The element this button becomes — an anchor, a router link, a label. `children` stay<br>the content and keep the button's label wrapper, so a link still sizes like a button.<br>`render` is how every kit component changes its element, the contract Base UI's parts<br>already take.<br><br> <Button render={<a href="/settings" />}>Settings</Button> |
|
|
123
132
|
| `children` | no | `React.ReactNode` | |
|
|
124
133
|
|
|
125
|
-
### `ButtonStyle`
|
|
126
|
-
|
|
127
|
-
Kind: type.
|
|
128
|
-
|
|
129
|
-
Fill treatment. Structural, independent of the tone's colour.
|
|
130
|
-
|
|
131
|
-
```text
|
|
132
|
-
"solid" | "outline" | "ghost"
|
|
133
|
-
```
|
|
134
|
-
|
|
135
134
|
### `ButtonTone`
|
|
136
135
|
|
|
137
136
|
Kind: type.
|
|
@@ -182,7 +181,7 @@ React.ForwardRefExoticComponent<Omit<TextButtonProps, "ref"> & React.RefAttribut
|
|
|
182
181
|
Kind: type.
|
|
183
182
|
|
|
184
183
|
```text
|
|
185
|
-
Omit<ButtonProps, "tone" | "
|
|
184
|
+
Omit<ButtonProps, "tone" | "appearance" | "iconOnly" | "fullWidth"> & { tone?: ButtonTone; }
|
|
186
185
|
```
|
|
187
186
|
|
|
188
187
|
### `TooltipButton`
|
|
@@ -206,26 +205,108 @@ Extends: `ButtonProps`.
|
|
|
206
205
|
|
|
207
206
|
## Preview recipes
|
|
208
207
|
|
|
209
|
-
Preview route:
|
|
208
|
+
Preview route: Timelines, onboarding & admin — `/blocks-admin`
|
|
209
|
+
|
|
210
|
+
### Compose your own checklist
|
|
211
|
+
|
|
212
|
+
```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
|
|
213
|
+
import { CheckIcon, CircleIcon } from "lucide-react"
|
|
214
|
+
|
|
215
|
+
import { Accordion } from "themelia-ui/base/accordion"
|
|
216
|
+
import { Button } from "themelia-ui/base/buttons"
|
|
217
|
+
import { IconBadge } from "themelia-ui/base/display"
|
|
218
|
+
import { Progress } from "themelia-ui/base/feedback"
|
|
219
|
+
import { Stack } from "themelia-ui/base/structure"
|
|
220
|
+
import { Text } from "themelia-ui/base/typography"
|
|
221
|
+
|
|
222
|
+
export default function ChecklistBlueprint() {
|
|
223
|
+
return (
|
|
224
|
+
<Stack style={{ maxWidth: "34rem", width: "100%" }}>
|
|
225
|
+
<Progress value={1} max={3} label="1 of 3 steps complete" />
|
|
226
|
+
<Accordion
|
|
227
|
+
media="medallion"
|
|
228
|
+
defaultValue={["invite"]}
|
|
229
|
+
items={[
|
|
230
|
+
{
|
|
231
|
+
value: "profile",
|
|
232
|
+
title: "Complete your profile",
|
|
233
|
+
icon: <IconBadge icon={CheckIcon} tone="success" shape="circle" />,
|
|
234
|
+
content: <Text type="secondary">Name, avatar and time zone are set.</Text>,
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
value: "invite",
|
|
238
|
+
title: "Invite your team",
|
|
239
|
+
icon: <IconBadge icon={CircleIcon} shape="circle" />,
|
|
240
|
+
content: (
|
|
241
|
+
<Stack gap="sm" align="start">
|
|
242
|
+
<Text type="secondary">Teammates see the same projects and saved views.</Text>
|
|
243
|
+
<Button>Send invites</Button>
|
|
244
|
+
</Stack>
|
|
245
|
+
),
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
value: "connect",
|
|
249
|
+
title: "Connect a data source",
|
|
250
|
+
icon: <IconBadge icon={CircleIcon} shape="circle" />,
|
|
251
|
+
content: <Text type="secondary">Postgres, a CSV upload or the REST API.</Text>,
|
|
252
|
+
},
|
|
253
|
+
]}
|
|
254
|
+
/>
|
|
255
|
+
</Stack>
|
|
256
|
+
)
|
|
257
|
+
}
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
### Compose your own
|
|
261
|
+
|
|
262
|
+
```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
|
|
263
|
+
import { Button } from "themelia-ui/base/buttons"
|
|
264
|
+
import { Card } from "themelia-ui/base/cards"
|
|
265
|
+
import { MetadataList } from "themelia-ui/base/display"
|
|
266
|
+
import { Stack } from "themelia-ui/base/structure"
|
|
267
|
+
import { toast } from "themelia-ui/base/toaster"
|
|
268
|
+
import { Money } from "themelia-ui/primitives"
|
|
269
|
+
|
|
270
|
+
export default function CartSummaryBlueprint() {
|
|
271
|
+
return (
|
|
272
|
+
<Card title="Order summary" description="3 items" style={{ maxWidth: "24rem" }}>
|
|
273
|
+
<Stack>
|
|
274
|
+
<MetadataList
|
|
275
|
+
layout="rows"
|
|
276
|
+
items={[
|
|
277
|
+
{ label: "Subtotal", value: <Money amount={258} currency="EUR" /> },
|
|
278
|
+
{ label: "Shipping", value: <Money amount={4.8} currency="EUR" /> },
|
|
279
|
+
{ label: "Tax", value: <Money amount={51.6} currency="EUR" /> },
|
|
280
|
+
{ label: "Total", value: <Money amount={314.4} currency="EUR" weight="semibold" /> },
|
|
281
|
+
]}
|
|
282
|
+
/>
|
|
283
|
+
<Button onClick={() => toast("Checkout requested", { description: "Preview callback — connect this action to your application." })}>
|
|
284
|
+
Check out
|
|
285
|
+
</Button>
|
|
286
|
+
</Stack>
|
|
287
|
+
</Card>
|
|
288
|
+
)
|
|
289
|
+
}
|
|
290
|
+
```
|
|
210
291
|
|
|
211
292
|
### Tone × style
|
|
212
293
|
|
|
213
294
|
```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
|
|
214
|
-
import { Button, type
|
|
295
|
+
import { Button, type ButtonAppearance, type ButtonTone } from "themelia-ui/base/buttons"
|
|
215
296
|
|
|
216
297
|
const TONES: ButtonTone[] = [
|
|
217
298
|
"neutral", "primary", "secondary", "info", "success", "warning", "destructive",
|
|
218
299
|
]
|
|
219
300
|
|
|
220
|
-
const STYLES:
|
|
301
|
+
const STYLES: ButtonAppearance[] = ["solid", "outline", "ghost"]
|
|
221
302
|
|
|
222
303
|
export default function ToneStyle() {
|
|
223
304
|
return (
|
|
224
305
|
<>
|
|
225
|
-
{STYLES.map((
|
|
226
|
-
<div key={
|
|
306
|
+
{STYLES.map((appearance) => (
|
|
307
|
+
<div key={appearance} style={{ display: "flex", gap: ".5rem", flexWrap: "wrap" }}>
|
|
227
308
|
{TONES.map((tone) => (
|
|
228
|
-
<Button key={tone} tone={tone}
|
|
309
|
+
<Button key={tone} tone={tone} appearance={appearance}>
|
|
229
310
|
{tone}
|
|
230
311
|
</Button>
|
|
231
312
|
))}
|
|
@@ -260,7 +341,7 @@ export default function Scale() {
|
|
|
260
341
|
scale {scale}
|
|
261
342
|
</MonoValue>
|
|
262
343
|
<Button>Save</Button>
|
|
263
|
-
<Button tone="neutral"
|
|
344
|
+
<Button tone="neutral" appearance="outline">Cancel</Button>
|
|
264
345
|
<Button iconOnly aria-label="Add"><PlusIcon /></Button>
|
|
265
346
|
<Checkbox label="Also this" defaultChecked />
|
|
266
347
|
</div>
|
|
@@ -279,11 +360,11 @@ import { Stack } from "themelia-ui/base/structure"
|
|
|
279
360
|
|
|
280
361
|
export default function State() {
|
|
281
362
|
return (
|
|
282
|
-
<Stack direction="horizontal"
|
|
363
|
+
<Stack direction="horizontal" wrap align="center">
|
|
283
364
|
<Button>Save changes</Button>
|
|
284
365
|
<Button loading>Save changes</Button>
|
|
285
366
|
<Button disabled>Disabled</Button>
|
|
286
|
-
<Button tone="neutral"
|
|
367
|
+
<Button tone="neutral" appearance="outline" loading>
|
|
287
368
|
Loading
|
|
288
369
|
</Button>
|
|
289
370
|
</Stack>
|
|
@@ -301,10 +382,10 @@ import { Stack } from "themelia-ui/base/structure"
|
|
|
301
382
|
|
|
302
383
|
export default function IconOnly() {
|
|
303
384
|
return (
|
|
304
|
-
<Stack direction="horizontal"
|
|
385
|
+
<Stack direction="horizontal" wrap align="center">
|
|
305
386
|
<Button iconOnly aria-label="Add"><PlusIcon /></Button>
|
|
306
|
-
<Button tone="neutral"
|
|
307
|
-
<Button tone="destructive"
|
|
387
|
+
<Button tone="neutral" appearance="outline" iconOnly aria-label="Edit">✎</Button>
|
|
388
|
+
<Button tone="destructive" appearance="ghost" iconOnly aria-label="Delete">🗑</Button>
|
|
308
389
|
</Stack>
|
|
309
390
|
)
|
|
310
391
|
}
|
|
@@ -318,15 +399,15 @@ import { Stack } from "themelia-ui/base/structure"
|
|
|
318
399
|
|
|
319
400
|
export default function Group() {
|
|
320
401
|
return (
|
|
321
|
-
<Stack direction="horizontal"
|
|
402
|
+
<Stack direction="horizontal" wrap align="center">
|
|
322
403
|
<ButtonGroup>
|
|
323
|
-
<Button tone="neutral"
|
|
324
|
-
<Button tone="neutral"
|
|
325
|
-
<Button tone="neutral"
|
|
404
|
+
<Button tone="neutral" appearance="outline">Day</Button>
|
|
405
|
+
<Button tone="neutral" appearance="outline">Week</Button>
|
|
406
|
+
<Button tone="neutral" appearance="outline">Month</Button>
|
|
326
407
|
</ButtonGroup>
|
|
327
408
|
<ButtonGroup orientation="vertical">
|
|
328
|
-
<Button tone="neutral"
|
|
329
|
-
<Button tone="neutral"
|
|
409
|
+
<Button tone="neutral" appearance="outline">Top</Button>
|
|
410
|
+
<Button tone="neutral" appearance="outline">Bottom</Button>
|
|
330
411
|
</ButtonGroup>
|
|
331
412
|
</Stack>
|
|
332
413
|
)
|
|
@@ -342,18 +423,18 @@ import { Text } from "themelia-ui/base/typography"
|
|
|
342
423
|
|
|
343
424
|
export default function ButtonVariants() {
|
|
344
425
|
return (
|
|
345
|
-
<Stack direction="horizontal"
|
|
426
|
+
<Stack direction="horizontal" wrap align="center">
|
|
346
427
|
<Text size="xs" type="secondary">
|
|
347
428
|
Changed your mind? <TextButton>Undo the import</TextButton>
|
|
348
429
|
</Text>
|
|
349
430
|
<LoaderButton
|
|
350
431
|
tone="neutral"
|
|
351
|
-
|
|
432
|
+
appearance="outline"
|
|
352
433
|
onClick={() => new Promise((resolve) => setTimeout(resolve, 1200))}
|
|
353
434
|
>
|
|
354
435
|
Save and wait
|
|
355
436
|
</LoaderButton>
|
|
356
|
-
<TooltipButton tooltip="Archive this order" tone="neutral"
|
|
437
|
+
<TooltipButton tooltip="Archive this order" tone="neutral" appearance="outline">
|
|
357
438
|
Archive
|
|
358
439
|
</TooltipButton>
|
|
359
440
|
</Stack>
|
|
@@ -371,25 +452,25 @@ import { Stack } from "themelia-ui/base/structure"
|
|
|
371
452
|
|
|
372
453
|
export default function ButtonGroupParts() {
|
|
373
454
|
return (
|
|
374
|
-
<Stack direction="horizontal"
|
|
455
|
+
<Stack direction="horizontal" wrap align="center">
|
|
375
456
|
<ButtonGroup>
|
|
376
|
-
<Button tone="neutral"
|
|
457
|
+
<Button tone="neutral" appearance="outline">Day</Button>
|
|
377
458
|
<ButtonGroupSeparator />
|
|
378
|
-
<Button tone="neutral"
|
|
459
|
+
<Button tone="neutral" appearance="outline">Week</Button>
|
|
379
460
|
<ButtonGroupSeparator />
|
|
380
|
-
<Button tone="neutral"
|
|
461
|
+
<Button tone="neutral" appearance="outline">Month</Button>
|
|
381
462
|
</ButtonGroup>
|
|
382
463
|
<ButtonGroup>
|
|
383
464
|
<ButtonGroupText>Show</ButtonGroupText>
|
|
384
|
-
<Button tone="neutral"
|
|
385
|
-
<Button tone="neutral"
|
|
465
|
+
<Button tone="neutral" appearance="outline">All</Button>
|
|
466
|
+
<Button tone="neutral" appearance="outline">Open</Button>
|
|
386
467
|
</ButtonGroup>
|
|
387
468
|
</Stack>
|
|
388
469
|
)
|
|
389
470
|
}
|
|
390
471
|
```
|
|
391
472
|
|
|
392
|
-
### Type
|
|
473
|
+
### Type has its own factor
|
|
393
474
|
|
|
394
475
|
```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
|
|
395
476
|
import { Button } from "themelia-ui/base/buttons"
|
|
@@ -400,11 +481,11 @@ import { UIProvider } from "themelia-ui/ui-provider"
|
|
|
400
481
|
|
|
401
482
|
export default function TypeFactor() {
|
|
402
483
|
return (
|
|
403
|
-
<Stack
|
|
484
|
+
<Stack>
|
|
404
485
|
<Stack gap="sm">
|
|
405
486
|
<Text type="secondary" size="xs">typography.scale 0.875 — type shrinks, control geometry holds</Text>
|
|
406
487
|
<UIProvider config={{ typography: { scale: 0.875 } }}>
|
|
407
|
-
<Stack direction="horizontal" gap="
|
|
488
|
+
<Stack direction="horizontal" gap="sm" align="center" wrap>
|
|
408
489
|
<Text>Body copy at this factor.</Text>
|
|
409
490
|
<Button>Save</Button>
|
|
410
491
|
<Checkbox label="Check" defaultChecked />
|
|
@@ -414,7 +495,7 @@ export default function TypeFactor() {
|
|
|
414
495
|
<Stack gap="sm">
|
|
415
496
|
<Text type="secondary" size="xs">scale 0.875 + typography.scale 1 — geometry shrinks, type holds</Text>
|
|
416
497
|
<UIProvider config={{ scale: 0.875, typography: { scale: 1 } }}>
|
|
417
|
-
<Stack direction="horizontal" gap="
|
|
498
|
+
<Stack direction="horizontal" gap="sm" align="center" wrap>
|
|
418
499
|
<Text>Body copy at this factor.</Text>
|
|
419
500
|
<Button>Save</Button>
|
|
420
501
|
<Checkbox label="Check" defaultChecked />
|
|
@@ -426,6 +507,29 @@ export default function TypeFactor() {
|
|
|
426
507
|
}
|
|
427
508
|
```
|
|
428
509
|
|
|
510
|
+
### Colour islands
|
|
511
|
+
|
|
512
|
+
```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
|
|
513
|
+
import { Button } from "themelia-ui/base/buttons"
|
|
514
|
+
import { Card } from "themelia-ui/base/cards"
|
|
515
|
+
import { Grid } from "themelia-ui/base/structure"
|
|
516
|
+
import { UIProvider } from "themelia-ui/ui-provider"
|
|
517
|
+
|
|
518
|
+
export default function ColourIsland() {
|
|
519
|
+
return (
|
|
520
|
+
<Grid columns={{ base: 1, sm: 2 }}>
|
|
521
|
+
{(["light", "dark"] as const).map((colorScheme) => (
|
|
522
|
+
<UIProvider key={colorScheme} config={{ colorScheme }}>
|
|
523
|
+
<Card title={`A ${colorScheme} region`} description="Every colour inside resolves to this half.">
|
|
524
|
+
<Button>Continue</Button>
|
|
525
|
+
</Card>
|
|
526
|
+
</UIProvider>
|
|
527
|
+
))}
|
|
528
|
+
</Grid>
|
|
529
|
+
)
|
|
530
|
+
}
|
|
531
|
+
```
|
|
532
|
+
|
|
429
533
|
### Scoped theming
|
|
430
534
|
|
|
431
535
|
```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
|
|
@@ -15,7 +15,6 @@ A surface needs visible chrome — border, padding, header and footer regions.
|
|
|
15
15
|
|
|
16
16
|
```tsx fragment — import-only example
|
|
17
17
|
import { Card } from "themelia-ui/base/cards"
|
|
18
|
-
import "themelia-ui/base/cards.css"
|
|
19
18
|
```
|
|
20
19
|
|
|
21
20
|
## Composition
|
|
@@ -46,7 +45,7 @@ composing.
|
|
|
46
45
|
**Alternatives:** ContentBlock, Overlay.
|
|
47
46
|
|
|
48
47
|
```text
|
|
49
|
-
({ icon, title, titleSuffix, tooltip, description, surface, titleLevel, media, headerStart, headerEnd, headerAction, actions, alert, alertTone, contentTop, contentBottom, footerText, footerSlot, headerDivider, footerDivider, expandable, expanded, defaultExpanded, onExpandedChange, strings, className, children, ...props }: CardProps) => React.JSX.Element
|
|
48
|
+
({ icon, title, titleSuffix, tooltip, description, surface, titleLevel, titleSize, media, headerStart, headerEnd, headerAction, actions, alert, alertTone, contentTop, contentBottom, footerText, footerSlot, headerDivider, footerDivider, expandable, expanded, defaultExpanded, onExpandedChange, strings, className, children, ...props }: CardProps) => React.JSX.Element
|
|
50
49
|
```
|
|
51
50
|
|
|
52
51
|
### `CardAction`
|
|
@@ -76,7 +75,7 @@ Extends: `Omit<ComponentProps<"div">, "children">`.
|
|
|
76
75
|
|
|
77
76
|
| member | required | type | description / documented default |
|
|
78
77
|
| --- | :-: | --- | --- |
|
|
79
|
-
| `actions` | yes | `ActionDefinition[]` | The commands, as the overflow menu takes them. The first is the primary action; the rest<br>follow in outline unless an entry sets its own `
|
|
78
|
+
| `actions` | yes | `ActionDefinition[]` | The commands, as the overflow menu takes them. The first is the primary action; the rest<br>follow in outline unless an entry sets its own `appearance`. |
|
|
80
79
|
| `separator` | no | `boolean` | A rule above the strip, ruling it off from content that runs right into it. |
|
|
81
80
|
| `align` | no | `"start" \| "end" \| "between"` | Where the buttons sit along the strip. |
|
|
82
81
|
| `fullWidthPrimary` | no | `boolean` | Stretches the first action, for a card whose action is the point, or a narrow card where<br>two buttons will not fit. |
|
|
@@ -116,7 +115,7 @@ The header region: a title row with trailing controls, plus an optional full-wid
|
|
|
116
115
|
above. The title truncates rather than pushing the controls off the row.
|
|
117
116
|
|
|
118
117
|
```text
|
|
119
|
-
({ icon, title, titleSuffix, tooltip, tooltipLabel, description, headerStart, headerEnd, headerAction, divider, titleLevel, className, ...props }: Omit<React.ComponentProps<"div">, "title"> & { icon?: React.ReactNode; title?: React.ReactNode; titleSuffix?: React.ReactNode; tooltip?: React.ReactNode; tooltipLabel?: string; description?: React.ReactNode; headerStart?: React.ReactNode; headerEnd?: React.ReactNode; headerAction?: React.ReactNode; divider?: boolean; titleLevel?: 1 | 2 | 3 | 4 | 5 | 6; }) => React.JSX.Element
|
|
118
|
+
({ icon, title, titleSuffix, tooltip, tooltipLabel, description, headerStart, headerEnd, headerAction, divider, titleLevel, titleSize, className, ...props }: Omit<React.ComponentProps<"div">, "title"> & { icon?: React.ReactNode; title?: React.ReactNode; titleSuffix?: React.ReactNode; tooltip?: React.ReactNode; tooltipLabel?: string; description?: React.ReactNode; headerStart?: React.ReactNode; headerEnd?: React.ReactNode; headerAction?: React.ReactNode; divider?: boolean; titleLevel?: 1 | 2 | 3 | 4 | 5 | 6; titleSize?: "base" | "xl"; }) => React.JSX.Element
|
|
120
119
|
```
|
|
121
120
|
|
|
122
121
|
### `CardPrimaryAction`
|
|
@@ -160,6 +159,7 @@ Extends: `Omit<React.ComponentProps<"div">, "title">`.
|
|
|
160
159
|
| `headerAction` | no | `React.ReactNode` | A single control at the end of the header. Use `actions` for a list of commands. |
|
|
161
160
|
| `actions` | no | `CardAction[]` | Overflow commands, collapsed into one menu trigger and rendered by the shared<br>`ActionMenu`: a destructive entry moves last and is separated. |
|
|
162
161
|
| `titleLevel` | no | `1 \| 2 \| 3 \| 4 \| 5 \| 6` | Renders the title as a heading of this level, for a card that heads a page or a region.<br>Unset, the title is a span that heading navigation can't find. |
|
|
162
|
+
| `titleSize` | no | `"base" \| "xl"` | Title type size. `xl` is for a Card that heads a page, such as an auth form. |
|
|
163
163
|
| `media` | no | `React.ReactNode` | A full-bleed strip above the header — a cover image, a map, a brand band — clipped to<br>the card's top corners. |
|
|
164
164
|
| `alert` | no | `React.ReactNode` | Banner between header and content. A plain string is wrapped in an `Alert`. |
|
|
165
165
|
| `alertTone` | no | `CardAlertTone` | Tone of the alert band. |
|
|
@@ -301,6 +301,76 @@ export default function MenusInContext() {
|
|
|
301
301
|
}
|
|
302
302
|
```
|
|
303
303
|
|
|
304
|
+
### Compose your own
|
|
305
|
+
|
|
306
|
+
```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
|
|
307
|
+
import { ArrowUpIcon, CreditCardIcon } from "lucide-react"
|
|
308
|
+
|
|
309
|
+
import { Badge } from "themelia-ui/base/badge"
|
|
310
|
+
import { Card } from "themelia-ui/base/cards"
|
|
311
|
+
import { Sparkline } from "themelia-ui/base/chart"
|
|
312
|
+
import { IconBadge } from "themelia-ui/base/display"
|
|
313
|
+
import { Stack } from "themelia-ui/base/structure"
|
|
314
|
+
import { DisplayLabel, Text } from "themelia-ui/base/typography"
|
|
315
|
+
import { Money } from "themelia-ui/primitives"
|
|
316
|
+
|
|
317
|
+
export default function AnalyticsBlueprint() {
|
|
318
|
+
return (
|
|
319
|
+
<Card style={{ maxWidth: "20rem" }}>
|
|
320
|
+
<Stack gap="sm">
|
|
321
|
+
<Stack direction="horizontal" align="center" gap="sm">
|
|
322
|
+
<IconBadge icon={CreditCardIcon} tone="primary" />
|
|
323
|
+
<DisplayLabel>Revenue</DisplayLabel>
|
|
324
|
+
</Stack>
|
|
325
|
+
<Stack direction="horizontal" align="center" justify="between" gap="sm">
|
|
326
|
+
<Money amount={48200} currency="EUR" size="xl" weight="semibold" />
|
|
327
|
+
<Badge tone="success">
|
|
328
|
+
<ArrowUpIcon />
|
|
329
|
+
12.4%
|
|
330
|
+
</Badge>
|
|
331
|
+
</Stack>
|
|
332
|
+
<Sparkline data={[18, 22, 19, 27, 24, 31, 29, 38]} tone="success" label="Revenue rising over eight weeks" />
|
|
333
|
+
<Text size="xs" type="secondary">
|
|
334
|
+
Net of refunds, this quarter
|
|
335
|
+
</Text>
|
|
336
|
+
</Stack>
|
|
337
|
+
</Card>
|
|
338
|
+
)
|
|
339
|
+
}
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
### Compose your own
|
|
343
|
+
|
|
344
|
+
```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
|
|
345
|
+
import { Button } from "themelia-ui/base/buttons"
|
|
346
|
+
import { Card } from "themelia-ui/base/cards"
|
|
347
|
+
import { MetadataList } from "themelia-ui/base/display"
|
|
348
|
+
import { Stack } from "themelia-ui/base/structure"
|
|
349
|
+
import { toast } from "themelia-ui/base/toaster"
|
|
350
|
+
import { Money } from "themelia-ui/primitives"
|
|
351
|
+
|
|
352
|
+
export default function CartSummaryBlueprint() {
|
|
353
|
+
return (
|
|
354
|
+
<Card title="Order summary" description="3 items" style={{ maxWidth: "24rem" }}>
|
|
355
|
+
<Stack>
|
|
356
|
+
<MetadataList
|
|
357
|
+
layout="rows"
|
|
358
|
+
items={[
|
|
359
|
+
{ label: "Subtotal", value: <Money amount={258} currency="EUR" /> },
|
|
360
|
+
{ label: "Shipping", value: <Money amount={4.8} currency="EUR" /> },
|
|
361
|
+
{ label: "Tax", value: <Money amount={51.6} currency="EUR" /> },
|
|
362
|
+
{ label: "Total", value: <Money amount={314.4} currency="EUR" weight="semibold" /> },
|
|
363
|
+
]}
|
|
364
|
+
/>
|
|
365
|
+
<Button onClick={() => toast("Checkout requested", { description: "Preview callback — connect this action to your application." })}>
|
|
366
|
+
Check out
|
|
367
|
+
</Button>
|
|
368
|
+
</Stack>
|
|
369
|
+
</Card>
|
|
370
|
+
)
|
|
371
|
+
}
|
|
372
|
+
```
|
|
373
|
+
|
|
304
374
|
### Surfaces
|
|
305
375
|
|
|
306
376
|
```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
|
|
@@ -313,7 +383,7 @@ const SURFACES: CardSurface[] = ["card", "framed", "flat", "bordered"]
|
|
|
313
383
|
export default function CardSurfaces() {
|
|
314
384
|
return (
|
|
315
385
|
/* Two columns for four surfaces, so none sits alone on a row. */
|
|
316
|
-
<Grid columns={{ base: 1, sm: 2 }}
|
|
386
|
+
<Grid columns={{ base: 1, sm: 2 }} style={{ width: "100%" }}>
|
|
317
387
|
{SURFACES.map((surface) => (
|
|
318
388
|
<Card key={surface} surface={surface} title={surface} description="Supporting sentence.">
|
|
319
389
|
<Text type="secondary" size="sm">
|
|
@@ -340,7 +410,7 @@ import { Text } from "themelia-ui/base/typography"
|
|
|
340
410
|
|
|
341
411
|
export default function CardSlots() {
|
|
342
412
|
return (
|
|
343
|
-
<Stack
|
|
413
|
+
<Stack style={{ maxWidth: "34rem", width: "100%" }}>
|
|
344
414
|
<Card
|
|
345
415
|
icon={<CreditCardIcon />}
|
|
346
416
|
title="Primary payment method"
|
|
@@ -353,7 +423,7 @@ export default function CardSlots() {
|
|
|
353
423
|
{ label: "Remove", icon: <TrashIcon />, onClick: () => {}, tone: "destructive" },
|
|
354
424
|
]}
|
|
355
425
|
footerText="Updated 3 days ago"
|
|
356
|
-
footerSlot={<Button tone="neutral"
|
|
426
|
+
footerSlot={<Button tone="neutral" appearance="outline">Manage</Button>}
|
|
357
427
|
footerDivider
|
|
358
428
|
>
|
|
359
429
|
<Text type="secondary" size="sm">
|
|
@@ -387,7 +457,7 @@ import { Text } from "themelia-ui/base/typography"
|
|
|
387
457
|
export default function CardExpandable() {
|
|
388
458
|
return (
|
|
389
459
|
<Card expandable title="Terms of service" style={{ maxWidth: "34rem", width: "100%" }}>
|
|
390
|
-
<Stack gap="
|
|
460
|
+
<Stack gap="sm">
|
|
391
461
|
{Array.from({ length: 10 }, (_, i) => (
|
|
392
462
|
<Text key={i} type="secondary" size="sm">
|
|
393
463
|
Clause {i + 1}. Content that runs past the collapsed height, so the fade has
|
|
@@ -414,21 +484,21 @@ import { Text } from "themelia-ui/base/typography"
|
|
|
414
484
|
|
|
415
485
|
export default function CardHeaderSlots() {
|
|
416
486
|
return (
|
|
417
|
-
<Stack
|
|
487
|
+
<Stack style={{ maxWidth: "34rem", width: "100%" }}>
|
|
418
488
|
<Card
|
|
419
489
|
icon={<CreditCardIcon />}
|
|
420
490
|
title="Payment method"
|
|
421
491
|
titleSuffix={<Badge tone="success">Verified</Badge>}
|
|
422
492
|
tooltip="We store only the last four digits. The full number never reaches our servers."
|
|
423
493
|
headerAction={
|
|
424
|
-
<Button
|
|
494
|
+
<Button appearance="ghost" tone="neutral">
|
|
425
495
|
Change
|
|
426
496
|
</Button>
|
|
427
497
|
}
|
|
428
498
|
description="Charged on the first of the month."
|
|
429
499
|
headerDivider
|
|
430
500
|
footerText="Next charge 1 April"
|
|
431
|
-
footerSlot={<Button
|
|
501
|
+
footerSlot={<Button appearance="outline" tone="neutral">Invoices</Button>}
|
|
432
502
|
footerDivider
|
|
433
503
|
>
|
|
434
504
|
<Text size="sm" type="secondary">
|
|
@@ -450,7 +520,7 @@ import { Text } from "themelia-ui/base/typography"
|
|
|
450
520
|
|
|
451
521
|
export default function CardAlert() {
|
|
452
522
|
return (
|
|
453
|
-
<Stack
|
|
523
|
+
<Stack style={{ maxWidth: "34rem", width: "100%" }}>
|
|
454
524
|
<Card title="Domain" alert="Verification expires in 3 days." alertTone="warning">
|
|
455
525
|
<Text size="sm" type="secondary">
|
|
456
526
|
acme.com
|
|
@@ -475,7 +545,7 @@ import { TextLink } from "themelia-ui/base/typography"
|
|
|
475
545
|
|
|
476
546
|
export default function CardActions() {
|
|
477
547
|
return (
|
|
478
|
-
<Stack direction="horizontal"
|
|
548
|
+
<Stack direction="horizontal" wrap align="start">
|
|
479
549
|
<Card style={{ width: "18rem" }} title="Northwind Traders" description="Invoice #4417">
|
|
480
550
|
<CardFooter>
|
|
481
551
|
<CardActionStrip
|
|
@@ -506,7 +576,7 @@ import { Stack } from "themelia-ui/base/structure"
|
|
|
506
576
|
|
|
507
577
|
export default function CardSkeletonExample() {
|
|
508
578
|
return (
|
|
509
|
-
<Stack direction="horizontal"
|
|
579
|
+
<Stack direction="horizontal" wrap align="start">
|
|
510
580
|
<div style={{ width: "18rem" }}>
|
|
511
581
|
<CardSkeleton showHeader lines={3} label="Loading invoice" />
|
|
512
582
|
</div>
|
|
@@ -517,3 +587,26 @@ export default function CardSkeletonExample() {
|
|
|
517
587
|
)
|
|
518
588
|
}
|
|
519
589
|
```
|
|
590
|
+
|
|
591
|
+
### Colour islands
|
|
592
|
+
|
|
593
|
+
```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
|
|
594
|
+
import { Button } from "themelia-ui/base/buttons"
|
|
595
|
+
import { Card } from "themelia-ui/base/cards"
|
|
596
|
+
import { Grid } from "themelia-ui/base/structure"
|
|
597
|
+
import { UIProvider } from "themelia-ui/ui-provider"
|
|
598
|
+
|
|
599
|
+
export default function ColourIsland() {
|
|
600
|
+
return (
|
|
601
|
+
<Grid columns={{ base: 1, sm: 2 }}>
|
|
602
|
+
{(["light", "dark"] as const).map((colorScheme) => (
|
|
603
|
+
<UIProvider key={colorScheme} config={{ colorScheme }}>
|
|
604
|
+
<Card title={`A ${colorScheme} region`} description="Every colour inside resolves to this half.">
|
|
605
|
+
<Button>Continue</Button>
|
|
606
|
+
</Card>
|
|
607
|
+
</UIProvider>
|
|
608
|
+
))}
|
|
609
|
+
</Grid>
|
|
610
|
+
)
|
|
611
|
+
}
|
|
612
|
+
```
|
|
@@ -15,7 +15,6 @@ Peer items exceed the width and horizontal paging is the intended reading order.
|
|
|
15
15
|
|
|
16
16
|
```tsx fragment — import-only example
|
|
17
17
|
import { Carousel } from "themelia-ui/base/carousel"
|
|
18
|
-
import "themelia-ui/base/carousel.css"
|
|
19
18
|
```
|
|
20
19
|
|
|
21
20
|
## Composition
|
|
@@ -212,7 +211,7 @@ export default function Controls() {
|
|
|
212
211
|
<Carousel controls="overlay" label="Gallery">
|
|
213
212
|
{["One", "Two", "Three"].map((name) => (
|
|
214
213
|
<CarouselSlide key={name}>
|
|
215
|
-
<Stack align="center" justify="center" className={styles.slide}>
|
|
214
|
+
<Stack gap="sm" align="center" justify="center" className={styles.slide}>
|
|
216
215
|
<Text size="lg" weight="semibold">{name}</Text>
|
|
217
216
|
</Stack>
|
|
218
217
|
</CarouselSlide>
|