themelia-ui 3.0.0 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/skills/themelia-ui/SKILL.md +27 -29
- package/.agents/skills/themelia-ui/references/api-compatibility.md +3 -3
- package/.agents/skills/themelia-ui/references/composition.md +2 -18
- package/.agents/skills/themelia-ui/references/framework-wiring.md +8 -8
- package/.agents/skills/themelia-ui/references/imports.md +104 -104
- package/.agents/skills/themelia-ui/references/installation.md +55 -27
- package/.agents/skills/themelia-ui/references/migration.md +136 -5
- package/.agents/skills/themelia-ui/references/provider-and-scoping.md +13 -19
- package/.agents/skills/themelia-ui/references/theming.md +170 -131
- package/.agents/skills/themelia-ui/references/troubleshooting.md +62 -27
- package/.agents/skills/themelia-ui/references/verification.md +2 -3
- package/CHANGELOG.md +187 -0
- package/README.md +45 -60
- package/dist/accordion-CHuzMmWL.js +143 -0
- package/dist/{action-menu-BNLURfMK.js → action-menu-BwiL_F6I.js} +35 -33
- package/dist/{alert-dialog-BMVo6Z-8.js → alert-dialog-Bmo1YrTm.js} +1 -1
- package/dist/avatar-Dc_BNYfB.js +93 -0
- package/dist/badge-VlJVZjdm.js +45 -0
- package/dist/base/accordion.js +1 -1
- package/dist/base/action-menu.js +1 -1
- package/dist/base/alert-dialog.js +1 -1
- package/dist/base/aspect-ratio.js +3 -1
- package/dist/base/avatar.js +1 -1
- package/dist/base/badge.js +2 -2
- package/dist/base/batch-action-bar.js +1 -1
- package/dist/base/buttons.js +1 -1
- package/dist/base/cards.js +1 -1
- package/dist/base/carousel.js +6 -4
- package/dist/base/chart.js +1 -1
- package/dist/base/choice-inputs.js +1 -1
- package/dist/base/combobox.js +1 -1
- package/dist/base/command.js +1 -1
- package/dist/base/context-menu.js +22 -21
- package/dist/base/copyable.js +1 -1
- package/dist/base/date-pickers.js +1 -1
- package/dist/base/dialog.js +1 -1
- package/dist/base/display.js +1 -1
- package/dist/base/dropdown-menu.js +1 -1
- package/dist/base/feedback.js +1 -1
- package/dist/base/forms-numeric.js +1 -1
- package/dist/base/forms.js +1 -1
- package/dist/base/hover-card.js +26 -23
- package/dist/base/input-group.js +1 -1
- package/dist/base/item.js +1 -1
- package/dist/base/label.js +1 -1
- package/dist/base/menubar.js +20 -14
- package/dist/base/navigation-menu.js +47 -38
- package/dist/base/navigation.js +1 -1
- package/dist/base/otp-input.js +36 -30
- package/dist/base/overlay.js +1 -1
- package/dist/base/popover-menu.js +1 -1
- package/dist/base/popover.js +1 -1
- package/dist/base/qr-code.js +51 -47
- package/dist/base/repeaters.js +1 -1
- package/dist/base/resizable.js +2 -0
- package/dist/base/sheet.js +1 -1
- package/dist/base/sidebar.js +1 -1
- package/dist/base/skeleton.js +1 -1
- package/dist/base/spinner.js +1 -1
- package/dist/base/structure.js +1 -1
- package/dist/base/table.js +1 -1
- package/dist/base/text-inputs.js +1 -1
- package/dist/base/timeline.js +1 -1
- package/dist/base/toaster.js +1 -1
- package/dist/base/toggle.js +21 -15
- package/dist/base/toolbar.js +1 -1
- package/dist/base/tooltip.js +1 -1
- package/dist/base/typography.js +2 -2
- package/dist/base/upload.js +1 -1
- package/dist/base/value-inputs.js +1 -1
- package/dist/{batch-action-bar-BZYNKXdV.js → batch-action-bar-DZVMVW83.js} +11 -8
- package/dist/{admin/patterns → blocks/admin}/access.js +79 -76
- package/dist/blocks/admin/commerce.js +2493 -0
- package/dist/{patterns → blocks}/analytics.js +312 -303
- package/dist/{patterns → blocks}/onboarding.js +27 -23
- package/dist/{patterns → blocks}/timelines.js +1 -1
- package/dist/buttons-BX2JfL5X.js +173 -0
- package/dist/cards-DdiICdMM.js +279 -0
- package/dist/chart-BkK3Xm10.js +201 -0
- package/dist/choice-inputs-CCw-0gD6.js +694 -0
- package/dist/combobox-Byu8N-Oe.js +274 -0
- package/dist/command-CnB_IZSo.js +156 -0
- package/dist/comments-C6Y_ddMt.js +1443 -0
- package/dist/components/base/action-menu/action-menu.d.ts +1 -1
- package/dist/components/base/action-menu/action-menu.types.d.ts +2 -2
- package/dist/components/base/avatar/avatar.d.ts +5 -2
- package/dist/components/base/badge/badge.d.ts +10 -10
- package/dist/components/base/badge/badge.variants.d.ts +1 -2
- package/dist/components/base/badge/index.d.ts +1 -2
- package/dist/components/base/buttons/button.d.ts +9 -8
- package/dist/components/base/buttons/button.types.d.ts +2 -2
- package/dist/components/base/buttons/index.d.ts +1 -1
- package/dist/components/base/buttons/text-button.d.ts +1 -1
- package/dist/components/base/cards/card-actions.d.ts +1 -1
- package/dist/components/base/cards/card.d.ts +3 -1
- package/dist/components/base/cards/partials/card-header.d.ts +2 -1
- package/dist/components/base/choice-inputs/choice.types.d.ts +2 -2
- package/dist/components/base/choice-inputs/partials/choice-parts.d.ts +3 -3
- package/dist/components/base/command/command.d.ts +5 -2
- package/dist/components/base/display/icon-badge.d.ts +5 -3
- package/dist/components/base/display/index.d.ts +1 -1
- package/dist/components/base/display/metadata-list.d.ts +6 -6
- package/dist/components/base/display/metadata-value.d.ts +1 -1
- package/dist/components/base/display/separator.d.ts +2 -2
- package/dist/components/base/feedback/alert.d.ts +3 -2
- package/dist/components/base/feedback/empty.d.ts +5 -4
- package/dist/components/base/feedback/progress-circle.d.ts +2 -2
- package/dist/components/base/feedback/progress.d.ts +3 -1
- package/dist/components/base/input-group/input-group.d.ts +8 -10
- package/dist/components/base/item/item.d.ts +2 -2
- package/dist/components/base/overlay/index.d.ts +1 -1
- package/dist/components/base/overlay/overlay.types.d.ts +7 -5
- package/dist/components/base/qr-code/qr-code.d.ts +4 -4
- package/dist/components/base/sheet/sheet.d.ts +1 -1
- package/dist/components/base/sidebar/sidebar.d.ts +9 -13
- package/dist/components/base/spinner/spinner.d.ts +2 -2
- package/dist/components/base/structure/adaptive-grid.d.ts +3 -3
- package/dist/components/base/structure/bleed.d.ts +3 -2
- package/dist/components/base/structure/grid.d.ts +2 -2
- package/dist/components/base/structure/index.d.ts +1 -1
- package/dist/components/base/structure/split.d.ts +3 -3
- package/dist/components/base/structure/stack.d.ts +5 -5
- package/dist/components/base/structure/structure.maps.d.ts +2 -1
- package/dist/components/base/structure/structure.types.d.ts +10 -4
- package/dist/components/base/toggle/toggle.d.ts +2 -2
- package/dist/components/base/toolbar/toolbar.d.ts +3 -3
- package/dist/components/base/typography/index.d.ts +2 -0
- package/dist/components/base/typography/rich-text/rich-text.variants.d.ts +9 -0
- package/dist/components/base/typography/text/index.d.ts +1 -0
- package/dist/components/base/typography/text/text.d.ts +15 -8
- package/dist/components/base/typography/text/text.variants.d.ts +41 -0
- package/dist/components/base/value-inputs/color-input.d.ts +1 -7
- package/dist/components/base/value-inputs/slider.d.ts +2 -7
- package/dist/components/{admin/patterns → blocks/admin}/commerce/vendor-profile.d.ts +2 -1
- package/dist/components/{patterns → blocks}/analytics/analytics.strings.d.ts +2 -5
- package/dist/components/features/actions/action-adapters.d.ts +3 -3
- package/dist/components/features/actions/actions.types.d.ts +3 -5
- package/dist/components/features/actions/index.d.ts +1 -1
- package/dist/components/features/activities/activities-feed.d.ts +1 -1
- package/dist/components/features/activities/activities.types.d.ts +4 -4
- package/dist/components/features/activities/activity-parts.d.ts +3 -3
- package/dist/components/features/activities/activity-row.d.ts +4 -4
- package/dist/components/features/activities/index.d.ts +1 -1
- package/dist/components/features/ai-chat/ai-chat.types.d.ts +10 -3
- package/dist/components/features/ai-chat/ai-message-surfaces.d.ts +1 -1
- package/dist/components/features/ai-chat/ai-work-surfaces.d.ts +1 -1
- package/dist/components/features/combobox/combobox.strings.d.ts +2 -2
- package/dist/components/features/event-calendar/event-calendar.types.d.ts +3 -0
- package/dist/components/features/media-library/index.d.ts +1 -1
- package/dist/components/features/media-library/media-library-parts.d.ts +4 -3
- package/dist/components/features/media-library/media-library-views.d.ts +4 -3
- package/dist/components/features/media-library/media-library.d.ts +1 -1
- package/dist/components/features/media-library/media-library.strings.d.ts +12 -13
- package/dist/components/features/media-library/media-library.types.d.ts +11 -9
- package/dist/components/features/media-library/media-resource-gallery.d.ts +1 -1
- package/dist/components/features/media-library/use-media-library.d.ts +1 -4
- package/dist/components/features/overlays/action-overlay-frame.d.ts +1 -1
- package/dist/components/features/overlays/index.d.ts +1 -1
- package/dist/components/features/overlays/overlay-parts.d.ts +3 -3
- package/dist/components/features/overlays/overlays.types.d.ts +8 -7
- package/dist/components/features/rich-text-editor/index.d.ts +0 -1
- package/dist/components/features/table/data-table-body.d.ts +1 -1
- package/dist/components/features/table/data-table-expanded-row.d.ts +27 -0
- package/dist/components/features/table/data-table-header.d.ts +1 -1
- package/dist/components/features/table/data-table-size.d.ts +1 -1
- package/dist/components/features/table/data-table.d.ts +1 -1
- package/dist/components/features/table/index.d.ts +1 -1
- package/dist/components/features/table/table-helpers.d.ts +9 -3
- package/dist/components/features/table/table.strings.d.ts +11 -0
- package/dist/components/features/table/table.types.d.ts +60 -2
- package/dist/components/features/theme-tweaker/index.d.ts +1 -1
- package/dist/components/features/theme-tweaker/theme-tweaker.strings.d.ts +1 -1
- package/dist/components/features/theme-tweaker/theme-tweaker.types.d.ts +6 -10
- package/dist/components/features/theme-tweaker/theme-tweaker.utils.d.ts +22 -6
- package/dist/components/layout/app-shell/topbar-sidebar-layout.d.ts +1 -1
- package/dist/components/layout/auth/auth.d.ts +1 -1
- package/dist/components/layout/auth/auth.types.d.ts +1 -1
- package/dist/components/primitives/value.d.ts +3 -1
- package/dist/containers-B8d8U9GS.js +2 -0
- package/dist/{copyable-H1TUEY-H.js → copyable-D9Okb1w6.js} +12 -11
- package/dist/core.css +2 -2
- package/dist/css/access.css +2 -1
- package/dist/css/accordion.css +2 -1
- package/dist/css/action-menu.css +2 -1
- package/dist/css/activities.css +2 -1
- package/dist/css/ai-chat.css +2 -1
- package/dist/css/analytics.css +2 -1
- package/dist/css/app-shell.css +2 -1
- package/dist/css/aspect-ratio.css +2 -1
- package/dist/css/async-preview.css +2 -1
- package/dist/css/auth.css +2 -1
- package/dist/css/avatar.css +2 -1
- package/dist/css/badge.css +2 -1
- package/dist/css/batch-action-bar.css +2 -1
- package/dist/css/buttons.css +2 -1
- package/dist/css/cards.css +2 -1
- package/dist/css/carousel.css +2 -1
- package/dist/css/chart.css +2 -1
- package/dist/css/choice-inputs.css +2 -1
- package/dist/css/combobox.css +2 -1
- package/dist/css/combobox2.css +2 -1
- package/dist/css/command.css +2 -1
- package/dist/css/comments.css +2 -1
- package/dist/css/commerce.css +2 -1
- package/dist/css/containers.css +2 -1
- package/dist/css/copyable.css +2 -1
- package/dist/css/data-view.css +2 -1
- package/dist/css/date-pickers.css +2 -1
- package/dist/css/display.css +2 -1
- package/dist/css/dropdown-menu.css +2 -1
- package/dist/css/event-calendar.css +2 -1
- package/dist/css/feedback.css +2 -1
- package/dist/css/filters.css +2 -1
- package/dist/css/forms-numeric.css +2 -1
- package/dist/css/forms.css +2 -1
- package/dist/css/global-search.css +2 -1
- package/dist/css/header.css +2 -1
- package/dist/css/hover-card.css +2 -1
- package/dist/css/input-group.css +2 -1
- package/dist/css/item.css +2 -1
- package/dist/css/kanban.css +2 -1
- package/dist/css/label.css +2 -1
- package/dist/css/map.css +2 -1
- package/dist/css/media-library.css +2 -1
- package/dist/css/mentions.css +2 -1
- package/dist/css/menubar.css +2 -1
- package/dist/css/navigation-menu.css +2 -1
- package/dist/css/navigation.css +2 -1
- package/dist/css/navigation2.css +2 -1
- package/dist/css/onboarding.css +2 -1
- package/dist/css/otp-input.css +2 -1
- package/dist/css/overlay.css +2 -1
- package/dist/css/overlays.css +2 -1
- package/dist/css/page.css +2 -1
- package/dist/css/popover-menu.css +2 -1
- package/dist/css/popover.css +2 -1
- package/dist/css/primitives.css +2 -1
- package/dist/css/products.css +2 -1
- package/dist/css/qr-code.css +2 -1
- package/dist/css/repeaters.css +2 -1
- package/dist/css/resizable.css +2 -1
- package/dist/css/resource-assignment.css +2 -1
- package/dist/css/resource.css +2 -1
- package/dist/css/rich-text-editor.css +2 -1
- package/dist/css/schema-form.css +2 -1
- package/dist/css/sidebar.css +2 -1
- package/dist/css/sidebar2.css +2 -1
- package/dist/css/skeleton.css +2 -1
- package/dist/css/spinner.css +2 -1
- package/dist/css/structure.css +2 -1
- package/dist/css/sync.css +2 -1
- package/dist/css/table.css +2 -1
- package/dist/css/table2.css +2 -1
- package/dist/css/text-inputs.css +2 -1
- package/dist/css/theme-tweaker.css +2 -1
- package/dist/css/timeline.css +2 -1
- package/dist/css/timelines.css +2 -1
- package/dist/css/toaster.css +2 -1
- package/dist/css/toggle.css +2 -1
- package/dist/css/toolbar.css +2 -1
- package/dist/css/tooltip.css +2 -1
- package/dist/css/typography.css +2 -1
- package/dist/css/upload.css +2 -1
- package/dist/css/value-inputs.css +2 -1
- package/dist/css/workspace.css +2 -1
- package/dist/css-graph.json +1027 -0
- package/dist/date-pickers-C2HgjpFU.js +685 -0
- package/dist/{dialog-CtFCuTUF.js → dialog-0nRFg5Zs.js} +1 -1
- package/dist/display-BGN834xV.js +664 -0
- package/dist/dropdown-menu-Br8kvjrF.js +235 -0
- package/dist/empty.js +0 -0
- package/dist/features/actions.js +6 -6
- package/dist/features/activities.js +219 -216
- package/dist/features/ai-chat.js +593 -565
- package/dist/features/async-preview.js +105 -286
- package/dist/features/combobox.js +119 -117
- package/dist/features/comments.js +1 -1
- package/dist/features/data-view.js +56 -55
- package/dist/features/event-calendar.js +189 -185
- package/dist/features/filters.js +1 -1
- package/dist/features/global-search.js +259 -260
- package/dist/features/kanban.js +39 -37
- package/dist/features/map.js +357 -354
- package/dist/features/media-library.js +931 -931
- package/dist/features/mentions.js +1 -1
- package/dist/features/overlays.js +1 -1
- package/dist/features/products.js +950 -942
- package/dist/features/resource-assignment.js +39 -37
- package/dist/features/resource.js +70 -71
- package/dist/features/rich-text-editor.js +2 -2
- package/dist/features/schema-form.js +342 -338
- package/dist/features/sync.js +14 -12
- package/dist/features/table.js +1 -1
- package/dist/features/theme-tweaker.js +1002 -962
- package/dist/feedback-D4qVsKlD.js +430 -0
- package/dist/{filters-DOLKRSmb.js → filters-geLuSlFL.js} +386 -383
- package/dist/forms-NxbJK4Mh.js +250 -0
- package/dist/forms-numeric-C6NMdj6G.js +582 -0
- package/dist/index.js +2 -2
- package/dist/input-group-HS_Z0Ei_.js +119 -0
- package/dist/item-CuUJyETl.js +150 -0
- package/dist/{label-DumoMDm6.js → label-HOBXAscw.js} +7 -5
- package/dist/layout/app-shell.js +4 -2
- package/dist/layout/auth.js +102 -100
- package/dist/layout/header.js +190 -180
- package/dist/layout/navigation.js +1 -1
- package/dist/layout/page.js +18 -16
- package/dist/layout/settings.js +2 -2
- package/dist/layout/sidebar.js +43 -43
- package/dist/layout/workspace.js +71 -69
- package/dist/lib/action-presentation.d.ts +3 -3
- package/dist/lib/component-vocabulary.d.ts +2 -2
- package/dist/lib/css-length.d.ts +2 -0
- package/dist/lib/responsive.d.ts +1 -1
- package/dist/lib/theming/index.d.ts +1 -0
- package/dist/lib/theming/recipes.d.ts +2 -2
- package/dist/lib/theming/themes/dense.d.ts +3 -0
- package/dist/lib/theming/themes/editorial.d.ts +3 -0
- package/dist/lib/theming/themes/index.d.ts +8 -0
- package/dist/lib/theming/themes/pair.d.ts +7 -0
- package/dist/lib/theming/themes/sharp.d.ts +3 -0
- package/dist/lib/theming/themes/soft.d.ts +3 -0
- package/dist/lib/theming/themes/types.d.ts +12 -0
- package/dist/lib/ui-provider/index.d.ts +1 -1
- package/dist/lib/ui-provider/scope.d.ts +5 -8
- package/dist/lib/ui-provider/tokens.d.ts +11 -3
- package/dist/lib/ui-provider/tokens.generated.d.ts +6 -4
- package/dist/lib/ui-provider/types.d.ts +17 -19
- package/dist/{mentions-BbsEHlcH.js → mentions-oeYNv_j1.js} +113 -111
- package/dist/navigation-BTX5Ti0Z.js +622 -0
- package/dist/navigation-WYKjDhZq.js +216 -0
- package/dist/overlay-C8RAgi2_.js +356 -0
- package/dist/{overlays-DvVoS3td.js → overlays-9BxwFTou.js} +77 -75
- package/dist/popover-CA7SP_iz.js +127 -0
- package/dist/popover-menu-DcLeiw9r.js +192 -0
- package/dist/{primitives-D0bdDozz.js → primitives-BskKlf35.js} +181 -178
- package/dist/primitives.js +1 -1
- package/dist/profiles/admin.json +6 -36
- package/dist/profiles/general.json +6 -96
- package/dist/repeaters-DfptvbGA.js +445 -0
- package/dist/rich-text-editor-D_Ppm8yh.js +491 -0
- package/dist/{sheet-CKcmRbJ9.js → sheet-D-DVZH_b.js} +3 -3
- package/dist/sidebar-DXQOy_Cb.js +421 -0
- package/dist/skeleton-CubvHel9.js +173 -0
- package/dist/spinner-Tc1QCnxM.js +30 -0
- package/dist/{structure-D0WGQAP3.js → structure-B9Y5NkP_.js} +15 -22
- package/dist/style.css +1 -1
- package/dist/styles/TOKENS.md +115 -275
- package/dist/styles/animation.css +114 -0
- package/dist/styles/base.css +7 -6
- package/dist/styles/fields.css +45 -63
- package/dist/styles/focus.css +12 -0
- package/dist/styles/forced-colors.css +11 -10
- package/dist/styles/index.css +23 -30
- package/dist/styles/map.css +45 -34
- package/dist/styles/mentions.css +14 -52
- package/dist/styles/overlays.css +7 -7
- package/dist/styles/tailwind.css +76 -127
- package/dist/styles/targets.css +3 -3
- package/dist/styles/theme/colour.css +86 -0
- package/dist/styles/theme/density.css +31 -0
- package/dist/styles/theme/elevation.css +9 -0
- package/dist/styles/theme/layout.css +18 -0
- package/dist/styles/theme/motion.css +18 -0
- package/dist/styles/theme/shape.css +12 -0
- package/dist/styles/theme/size.css +10 -0
- package/dist/styles/theme/spacing.css +11 -0
- package/dist/styles/theme/typography.css +20 -0
- package/dist/styles/tone.css +61 -0
- package/dist/table-DT_20ity.js +1262 -0
- package/dist/table-Ds_eO9av.js +191 -0
- package/dist/tailwind.css +76 -127
- package/dist/text-inputs-BboE77nZ.js +395 -0
- package/dist/theming-C5ygF5uf.js +292 -0
- package/dist/theming.js +2 -2
- package/dist/{timeline-BdaGRyj-.js → timeline-BRZbSdhf.js} +57 -49
- package/dist/{timelines-BB7550mz.js → timelines-DczZKW5p.js} +69 -67
- package/dist/{toaster-bBMgXm8z.js → toaster-CXL8L7Mm.js} +106 -99
- package/dist/tokens.json +1027 -636
- package/dist/toolbar-DBK-c4yy.js +74 -0
- package/dist/tooltip-BPYP-jUm.js +76 -0
- package/dist/{typography-BkxEiwQ1.js → typography-DmeR05Er.js} +87 -53
- package/dist/{ui-provider-Cmoq6i_D.js → ui-provider-DpzLUD12.js} +117 -69
- package/dist/ui-provider.js +1 -1
- package/dist/upload-C_6mlbfl.js +968 -0
- package/dist/use-async-preview-BFwf9ElY.js +188 -0
- package/dist/value-inputs-CnO6RZeT.js +728 -0
- package/docs/README.md +2 -2
- package/docs/build/recipes.md +10992 -10628
- package/docs/generated/component-index.json +11133 -11624
- package/docs/generated/components/INDEX.md +5 -5
- package/docs/generated/components/base--accordion.md +51 -2
- package/docs/generated/components/base--action-menu.md +14 -15
- package/docs/generated/components/base--alert-dialog.md +3 -4
- package/docs/generated/components/base--aspect-ratio.md +3 -4
- package/docs/generated/components/base--avatar.md +7 -7
- package/docs/generated/components/base--badge.md +159 -27
- package/docs/generated/components/base--batch-action-bar.md +6 -7
- package/docs/generated/components/base--buttons.md +151 -47
- package/docs/generated/components/base--cards.md +107 -14
- package/docs/generated/components/base--carousel.md +1 -2
- package/docs/generated/components/base--chart.md +44 -8
- package/docs/generated/components/base--choice-inputs.md +10 -11
- package/docs/generated/components/base--combobox.md +3 -4
- package/docs/generated/components/base--command.md +6 -6
- package/docs/generated/components/base--context-menu.md +1 -2
- package/docs/generated/components/base--copyable.md +6 -7
- package/docs/generated/components/base--date-pickers.md +6 -7
- package/docs/generated/components/base--dialog.md +6 -7
- package/docs/generated/components/base--direction.md +1 -1
- package/docs/generated/components/base--display.md +234 -54
- package/docs/generated/components/base--dropdown-menu.md +6 -7
- package/docs/generated/components/base--feedback.md +71 -18
- package/docs/generated/components/base--forms-numeric.md +6 -7
- package/docs/generated/components/base--forms.md +12 -13
- package/docs/generated/components/base--hover-card.md +3 -4
- package/docs/generated/components/base--input-group.md +27 -30
- package/docs/generated/components/base--item.md +8 -9
- package/docs/generated/components/base--label.md +2 -3
- package/docs/generated/components/base--menubar.md +2 -4
- package/docs/generated/components/base--navigation-menu.md +2 -3
- package/docs/generated/components/base--navigation.md +2 -3
- package/docs/generated/components/base--otp-input.md +3 -4
- package/docs/generated/components/base--overlay.md +56 -47
- package/docs/generated/components/base--popover-menu.md +7 -8
- package/docs/generated/components/base--popover.md +9 -10
- package/docs/generated/components/base--qr-code.md +7 -8
- package/docs/generated/components/base--repeaters.md +6 -7
- package/docs/generated/components/base--resizable.md +2 -3
- package/docs/generated/components/base--sheet.md +12 -13
- package/docs/generated/components/base--sidebar.md +9 -11
- package/docs/generated/components/base--skeleton.md +6 -7
- package/docs/generated/components/base--slot.md +1 -1
- package/docs/generated/components/base--spinner.md +5 -7
- package/docs/generated/components/base--structure.md +264 -65
- package/docs/generated/components/base--table.md +61 -3
- package/docs/generated/components/base--text-inputs.md +17 -18
- package/docs/generated/components/base--timeline.md +45 -4
- package/docs/generated/components/base--toaster.md +43 -12
- package/docs/generated/components/base--toggle.md +11 -12
- package/docs/generated/components/base--toolbar.md +7 -8
- package/docs/generated/components/base--tooltip.md +5 -6
- package/docs/generated/components/base--typography.md +279 -32
- package/docs/generated/components/base--upload.md +8 -9
- package/docs/generated/components/base--value-inputs.md +9 -38
- package/docs/generated/components/{admin--patterns--access.md → blocks--admin--access.md} +5 -6
- package/docs/generated/components/{admin--patterns--commerce.md → blocks--admin--commerce.md} +40 -41
- package/docs/generated/components/{patterns--analytics.md → blocks--analytics.md} +13 -14
- package/docs/generated/components/{patterns--onboarding.md → blocks--onboarding.md} +6 -7
- package/docs/generated/components/{patterns--timelines.md → blocks--timelines.md} +6 -7
- package/docs/generated/components/features--actions.md +8 -18
- package/docs/generated/components/features--activities.md +31 -32
- package/docs/generated/components/features--ai-chat.md +15 -15
- package/docs/generated/components/features--async-preview.md +5 -6
- package/docs/generated/components/features--combobox.md +4 -5
- package/docs/generated/components/features--comments.md +0 -1
- package/docs/generated/components/features--data-view.md +4 -5
- package/docs/generated/components/features--event-calendar.md +1 -2
- package/docs/generated/components/features--filters.md +1 -2
- package/docs/generated/components/features--global-search.md +1 -2
- package/docs/generated/components/features--kanban.md +1 -2
- package/docs/generated/components/features--map.md +1 -2
- package/docs/generated/components/features--media-library.md +37 -38
- package/docs/generated/components/features--mentions.md +7 -7
- package/docs/generated/components/features--overlays.md +21 -22
- package/docs/generated/components/features--products.md +10 -11
- package/docs/generated/components/features--resource-assignment.md +2 -3
- package/docs/generated/components/features--resource.md +3 -4
- package/docs/generated/components/features--rich-text-editor.md +4 -13
- package/docs/generated/components/features--schema-form.md +1 -2
- package/docs/generated/components/features--sync.md +2 -3
- package/docs/generated/components/features--table.md +162 -12
- package/docs/generated/components/features--theme-tweaker.md +30 -15
- package/docs/generated/components/forms.md +2 -2
- package/docs/generated/components/layout--app-shell.md +10 -11
- package/docs/generated/components/layout--auth.md +8 -9
- package/docs/generated/components/layout--containers.md +0 -1
- package/docs/generated/components/layout--header.md +2 -3
- package/docs/generated/components/layout--navigation.md +0 -1
- package/docs/generated/components/layout--page.md +3 -4
- package/docs/generated/components/layout--settings.md +0 -1
- package/docs/generated/components/layout--sidebar.md +6 -7
- package/docs/generated/components/layout--workspace.md +3 -4
- package/docs/generated/components/primitives.md +128 -17
- package/docs/generated/components/theming.md +147 -4
- package/docs/generated/components/ui-provider.md +95 -77
- package/docs/generated/imports.md +104 -104
- package/docs/generated/migration-broad-imports.json +267 -90
- package/docs/generated/migration-broad-imports.md +266 -101
- package/docs/generated/migration-codemod.json +365 -70
- package/docs/generated/migration.md +665 -95
- package/docs/generated/profiles.md +27 -27
- package/docs/generated/public-api.md +104 -102
- package/docs/generated/recipes.json +585 -810
- package/docs/learn/api-compatibility.md +3 -3
- package/docs/learn/composition.md +2 -18
- package/docs/learn/framework-wiring.md +8 -8
- package/docs/learn/installation.md +55 -27
- package/docs/learn/migration.md +136 -5
- package/docs/learn/provider-and-scoping.md +13 -19
- package/docs/learn/theming.md +170 -131
- package/docs/learn/troubleshooting.md +62 -27
- package/docs/learn/verification.md +2 -3
- package/package.json +39 -473
- package/scripts/consumer/codemod.mjs +51 -12
- package/scripts/consumer/find-component.mjs +2 -4
- package/src/styles/TOKENS.md +115 -275
- package/dist/accordion-6YPJ9XRO.js +0 -135
- package/dist/admin/patterns/access.css +0 -15
- package/dist/admin/patterns/commerce.css +0 -29
- package/dist/admin/patterns/commerce.js +0 -2493
- package/dist/avatar-CS7zow2q.js +0 -85
- package/dist/badge-CxOuTfVr.js +0 -63
- package/dist/base/accordion.css +0 -3
- package/dist/base/action-menu.css +0 -6
- package/dist/base/alert-dialog.css +0 -4
- package/dist/base/aspect-ratio.css +0 -2
- package/dist/base/avatar.css +0 -4
- package/dist/base/badge.css +0 -2
- package/dist/base/batch-action-bar.css +0 -5
- package/dist/base/buttons.css +0 -4
- package/dist/base/cards.css +0 -13
- package/dist/base/carousel.css +0 -5
- package/dist/base/chart.css +0 -2
- package/dist/base/choice-inputs.css +0 -10
- package/dist/base/combobox.css +0 -3
- package/dist/base/command.css +0 -9
- package/dist/base/context-menu.css +0 -2
- package/dist/base/copyable.css +0 -6
- package/dist/base/date-pickers.css +0 -11
- package/dist/base/dialog.css +0 -4
- package/dist/base/display.css +0 -8
- package/dist/base/dropdown-menu.css +0 -2
- package/dist/base/feedback.css +0 -5
- package/dist/base/forms-numeric.css +0 -12
- package/dist/base/forms.css +0 -14
- package/dist/base/hover-card.css +0 -2
- package/dist/base/input-group.css +0 -6
- package/dist/base/item.css +0 -9
- package/dist/base/label.css +0 -3
- package/dist/base/menubar.css +0 -2
- package/dist/base/navigation-menu.css +0 -2
- package/dist/base/navigation.css +0 -12
- package/dist/base/otp-input.css +0 -9
- package/dist/base/overlay.css +0 -4
- package/dist/base/popover-menu.css +0 -11
- package/dist/base/popover.css +0 -3
- package/dist/base/qr-code.css +0 -2
- package/dist/base/repeaters.css +0 -18
- package/dist/base/resizable.css +0 -2
- package/dist/base/sheet.css +0 -4
- package/dist/base/sidebar.css +0 -12
- package/dist/base/skeleton.css +0 -9
- package/dist/base/spinner.css +0 -2
- package/dist/base/structure.css +0 -2
- package/dist/base/table.css +0 -3
- package/dist/base/text-inputs.css +0 -2
- package/dist/base/timeline.css +0 -9
- package/dist/base/toaster.css +0 -2
- package/dist/base/toggle.css +0 -2
- package/dist/base/toolbar.css +0 -5
- package/dist/base/tooltip.css +0 -2
- package/dist/base/typography.css +0 -2
- package/dist/base/upload.css +0 -10
- package/dist/base/value-inputs.css +0 -14
- package/dist/buttons-CqXKWty3.js +0 -179
- package/dist/cards-C6Ulbkw7.js +0 -271
- package/dist/chart-nomhJ87z.js +0 -193
- package/dist/choice-inputs-OUDn0kQw.js +0 -680
- package/dist/combobox-C8oP92bT.js +0 -266
- package/dist/command-Bp3B6pUu.js +0 -143
- package/dist/comments-CAnDlyXO.js +0 -1438
- package/dist/components/admin/patterns/index.d.ts +0 -2
- package/dist/components/features/rich-text-editor/exec-command-engine.d.ts +0 -2
- package/dist/components/patterns/index.d.ts +0 -3
- package/dist/css/styles.css +0 -1
- package/dist/date-pickers-DOwIT-Nk.js +0 -661
- package/dist/display-B3Q17h5z.js +0 -645
- package/dist/dropdown-menu-TyNLCLML.js +0 -223
- package/dist/features/actions.css +0 -11
- package/dist/features/activities.css +0 -25
- package/dist/features/ai-chat.css +0 -14
- package/dist/features/async-preview.css +0 -10
- package/dist/features/combobox.css +0 -12
- package/dist/features/comments.css +0 -24
- package/dist/features/data-view.css +0 -31
- package/dist/features/event-calendar.css +0 -17
- package/dist/features/filters.css +0 -24
- package/dist/features/global-search.css +0 -19
- package/dist/features/kanban.css +0 -7
- package/dist/features/map.css +0 -15
- package/dist/features/media-library.css +0 -27
- package/dist/features/mentions.css +0 -17
- package/dist/features/overlays.css +0 -11
- package/dist/features/products.css +0 -29
- package/dist/features/resource-assignment.css +0 -14
- package/dist/features/resource.css +0 -15
- package/dist/features/rich-text-editor.css +0 -8
- package/dist/features/schema-form.css +0 -22
- package/dist/features/sync.css +0 -11
- package/dist/features/table.css +0 -20
- package/dist/features/theme-tweaker.css +0 -27
- package/dist/feedback-DRerHGuV.js +0 -469
- package/dist/forms-CPrGGif_.js +0 -242
- package/dist/forms-numeric-CPVsL7Vf.js +0 -569
- package/dist/index.css +0 -3
- package/dist/input-group-BYe0rhoB.js +0 -126
- package/dist/item-B3yQ26as.js +0 -146
- package/dist/layout/app-shell.css +0 -13
- package/dist/layout/auth.css +0 -14
- package/dist/layout/containers.css +0 -2
- package/dist/layout/header.css +0 -20
- package/dist/layout/navigation.css +0 -11
- package/dist/layout/page.css +0 -15
- package/dist/layout/settings.css +0 -16
- package/dist/layout/sidebar.css +0 -16
- package/dist/layout/workspace.css +0 -15
- package/dist/navigation-CsqTA16F.js +0 -614
- package/dist/navigation-DzxzPuwg.js +0 -202
- package/dist/overlay-WQOsLd69.js +0 -345
- package/dist/patterns/analytics.css +0 -15
- package/dist/patterns/onboarding.css +0 -11
- package/dist/patterns/timelines.css +0 -11
- package/dist/popover-DriLnIFc.js +0 -123
- package/dist/popover-menu-C2UCMAe7.js +0 -189
- package/dist/primitives.css +0 -3
- package/dist/repeaters-DuP1N0nw.js +0 -438
- package/dist/rich-text-editor-BQXFe9oN.js +0 -595
- package/dist/sidebar-D0N6ckJL.js +0 -412
- package/dist/skeleton-DGR9df28.js +0 -172
- package/dist/spinner-CUAVFecI.js +0 -52
- package/dist/styles/FACTORS.md +0 -36
- package/dist/styles/SCOPES.md +0 -86
- package/dist/styles/themes/default.css +0 -164
- package/dist/styles/theming/animation.css +0 -143
- package/dist/styles/theming/colors.css +0 -97
- package/dist/styles/theming/feedback.css +0 -17
- package/dist/styles/theming/field.css +0 -21
- package/dist/styles/theming/focus.css +0 -88
- package/dist/styles/theming/layers.css +0 -13
- package/dist/styles/theming/layout.css +0 -21
- package/dist/styles/theming/motion.css +0 -42
- package/dist/styles/theming/overlay.css +0 -52
- package/dist/styles/theming/sizing.css +0 -118
- package/dist/styles/theming/text.css +0 -30
- package/dist/styles/theming/typography.css +0 -26
- package/dist/styles/tokens/components.css +0 -22
- package/dist/styles/tokens/foundation.css +0 -80
- package/dist/styles/tokens/layout.css +0 -19
- package/dist/styles/tokens/palette.css +0 -88
- package/dist/styles/tokens/primitives.css +0 -18
- package/dist/styles/tokens/states.css +0 -77
- package/dist/table-BC4qqsUb.js +0 -180
- package/dist/table-BHDpjajL.js +0 -982
- package/dist/text-inputs-DF_lD7pA.js +0 -385
- package/dist/theming-D6KRU7hO.js +0 -104
- package/dist/toolbar-DWRywF0R.js +0 -68
- package/dist/tooltip-t1VQQ2tZ.js +0 -73
- package/dist/upload-B38YZeFJ.js +0 -938
- package/dist/value-inputs-Q4ymjXlV.js +0 -716
- package/src/styles/FACTORS.md +0 -36
- package/src/styles/SCOPES.md +0 -86
- /package/dist/components/{admin/patterns → blocks/admin}/access/admin.strings.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/access/credential-list.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/access/index.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/access/role-permissions.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/access/sensitive-action.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/account.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/address-lines.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/booking.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/cart.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/commerce.strings.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/commerce.types.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/format-amount.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/index.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/inventory-section.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/invoice.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/loyalty.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/order-customer.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/order-detail.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/order-line-item.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/order-transactions.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/order.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/seo-listing.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/seo-score.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/summary-panel.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/analytics/activity-heatmap.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/analytics/analytics.types.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/analytics/chart-card.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/analytics/format-metric-value.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/analytics/index.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/analytics/metric-bar.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/analytics/metric-comparison.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/analytics/metric-gradient.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/analytics/metric-grid.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/analytics/metric-micro-grid.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/analytics/metric-skeleton.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/analytics/metric-trend-chip.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/analytics/metric.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/analytics/time-ruler.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/onboarding/checklist.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/onboarding/index.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/onboarding/onboarding.strings.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/timelines/changelog-timeline.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/timelines/index.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/timelines/milestones-timeline.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/timelines/steps.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/timelines/timelines.strings.d.ts +0 -0
- /package/dist/styles/{theming/breakpoints.css → breakpoints.css} +0 -0
|
@@ -15,7 +15,6 @@ A region reports its own state — informational alert, empty, loading, error, o
|
|
|
15
15
|
|
|
16
16
|
```tsx fragment — import-only example
|
|
17
17
|
import { Alert } from "themelia-ui/base/feedback"
|
|
18
|
-
import "themelia-ui/base/feedback.css"
|
|
19
18
|
```
|
|
20
19
|
|
|
21
20
|
## Composition
|
|
@@ -113,8 +112,10 @@ The alert's heading. It inherits the alert's ink.
|
|
|
113
112
|
|
|
114
113
|
Kind: type.
|
|
115
114
|
|
|
115
|
+
Semantic colour: the kit's one tone union.
|
|
116
|
+
|
|
116
117
|
```text
|
|
117
|
-
|
|
118
|
+
SemanticTone
|
|
118
119
|
```
|
|
119
120
|
|
|
120
121
|
### `AlertVariant`
|
|
@@ -207,8 +208,8 @@ How the `media` slot is dressed.
|
|
|
207
208
|
|
|
208
209
|
Kind: type.
|
|
209
210
|
|
|
210
|
-
Breathing room: `sm` for panels and cells, `
|
|
211
|
-
provider density, which already reaches
|
|
211
|
+
Breathing room: `sm` for panels and cells, `default` for a card body or a page. Not
|
|
212
|
+
derived from provider density, which already reaches the paddings through the presets.
|
|
212
213
|
|
|
213
214
|
```text
|
|
214
215
|
ComponentScale
|
|
@@ -229,7 +230,7 @@ Extends: `Omit<React.ComponentProps<"div">, "title">`.
|
|
|
229
230
|
| `description` | no | `React.ReactNode \| false` | Why it is empty, or what will fill it. `false` hides it, for a title that already tells<br>the whole story. |
|
|
230
231
|
| `action` | no | `React.ReactNode` | Buttons or links offering the next step. An empty state that only explains is a dead<br>end. |
|
|
231
232
|
| `footer` | no | `React.ReactNode` | Quiet copy under the action — a hint, a learn-more, a shortcut. |
|
|
232
|
-
| `padding` | no | `EmptyPadding` | Breathing room, on both axes: `sm` for panels and cells, `
|
|
233
|
+
| `padding` | no | `EmptyPadding` | Breathing room, on both axes: `sm` for panels and cells, `default` for a card body or a<br>page. The inline padding is what keeps copy off a dashed edge. @default "default" |
|
|
233
234
|
| `border` | no | `boolean` | The dashed outline. Off by default; use it when the empty state stands in for a card's<br>body and the edge says "something goes here". |
|
|
234
235
|
| `strings` | no | `Partial<EmptyStrings>` | Overrides this state's own copy: `title`, `description`, and `ariaLabel`. The region<br>announces through `role="status"`, so a list that empties out while the reader is on the<br>page says so. |
|
|
235
236
|
|
|
@@ -336,7 +337,7 @@ attributes are then dropped rather than reporting 0%.
|
|
|
336
337
|
Kind: callable.
|
|
337
338
|
|
|
338
339
|
A determinate ring with the reading inside it, for tiles, scores and grids of small
|
|
339
|
-
measures.
|
|
340
|
+
measures. It has one size, big enough for a percentage in the hole; there is no size prop.
|
|
340
341
|
|
|
341
342
|
```text
|
|
342
343
|
({ value, max, tone, label, children, className, style, ...props }: ProgressCircleProps) => React.JSX.Element
|
|
@@ -373,8 +374,10 @@ Extends: `Omit<React.ComponentProps<"div">, "children">`.
|
|
|
373
374
|
|
|
374
375
|
Kind: type.
|
|
375
376
|
|
|
377
|
+
The tones a measure takes: the kit's tone union, without neutral and secondary.
|
|
378
|
+
|
|
376
379
|
```text
|
|
377
|
-
"primary" | "success" | "warning" | "destructive" | "info"
|
|
380
|
+
Extract<SemanticTone, "primary" | "success" | "warning" | "destructive" | "info">
|
|
378
381
|
```
|
|
379
382
|
|
|
380
383
|
### `SearchGlassIllustration`
|
|
@@ -458,7 +461,7 @@ export default function AlertLayout() {
|
|
|
458
461
|
<AlertTitle>With an action</AlertTitle>
|
|
459
462
|
<AlertDescription>Inline space is reserved on the trailing edge.</AlertDescription>
|
|
460
463
|
<AlertAction>
|
|
461
|
-
<Button tone="neutral"
|
|
464
|
+
<Button tone="neutral" appearance="ghost">
|
|
462
465
|
Undo
|
|
463
466
|
</Button>
|
|
464
467
|
</AlertAction>
|
|
@@ -472,6 +475,56 @@ export default function AlertLayout() {
|
|
|
472
475
|
}
|
|
473
476
|
```
|
|
474
477
|
|
|
478
|
+
### Compose your own checklist
|
|
479
|
+
|
|
480
|
+
```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
|
|
481
|
+
import { CheckIcon, CircleIcon } from "lucide-react"
|
|
482
|
+
|
|
483
|
+
import { Accordion } from "themelia-ui/base/accordion"
|
|
484
|
+
import { Button } from "themelia-ui/base/buttons"
|
|
485
|
+
import { IconBadge } from "themelia-ui/base/display"
|
|
486
|
+
import { Progress } from "themelia-ui/base/feedback"
|
|
487
|
+
import { Stack } from "themelia-ui/base/structure"
|
|
488
|
+
import { Text } from "themelia-ui/base/typography"
|
|
489
|
+
|
|
490
|
+
export default function ChecklistBlueprint() {
|
|
491
|
+
return (
|
|
492
|
+
<Stack style={{ maxWidth: "34rem", width: "100%" }}>
|
|
493
|
+
<Progress value={1} max={3} label="1 of 3 steps complete" />
|
|
494
|
+
<Accordion
|
|
495
|
+
media="medallion"
|
|
496
|
+
defaultValue={["invite"]}
|
|
497
|
+
items={[
|
|
498
|
+
{
|
|
499
|
+
value: "profile",
|
|
500
|
+
title: "Complete your profile",
|
|
501
|
+
icon: <IconBadge icon={CheckIcon} tone="success" shape="circle" />,
|
|
502
|
+
content: <Text type="secondary">Name, avatar and time zone are set.</Text>,
|
|
503
|
+
},
|
|
504
|
+
{
|
|
505
|
+
value: "invite",
|
|
506
|
+
title: "Invite your team",
|
|
507
|
+
icon: <IconBadge icon={CircleIcon} shape="circle" />,
|
|
508
|
+
content: (
|
|
509
|
+
<Stack gap="sm" align="start">
|
|
510
|
+
<Text type="secondary">Teammates see the same projects and saved views.</Text>
|
|
511
|
+
<Button>Send invites</Button>
|
|
512
|
+
</Stack>
|
|
513
|
+
),
|
|
514
|
+
},
|
|
515
|
+
{
|
|
516
|
+
value: "connect",
|
|
517
|
+
title: "Connect a data source",
|
|
518
|
+
icon: <IconBadge icon={CircleIcon} shape="circle" />,
|
|
519
|
+
content: <Text type="secondary">Postgres, a CSV upload or the REST API.</Text>,
|
|
520
|
+
},
|
|
521
|
+
]}
|
|
522
|
+
/>
|
|
523
|
+
</Stack>
|
|
524
|
+
)
|
|
525
|
+
}
|
|
526
|
+
```
|
|
527
|
+
|
|
475
528
|
### Empty
|
|
476
529
|
|
|
477
530
|
```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
|
|
@@ -490,7 +543,7 @@ export default function EmptyExample() {
|
|
|
490
543
|
action={
|
|
491
544
|
<>
|
|
492
545
|
<Button>Create invoice</Button>
|
|
493
|
-
<Button tone="neutral"
|
|
546
|
+
<Button tone="neutral" appearance="outline">
|
|
494
547
|
Import
|
|
495
548
|
</Button>
|
|
496
549
|
</>
|
|
@@ -511,7 +564,7 @@ import { Grid } from "themelia-ui/base/structure"
|
|
|
511
564
|
|
|
512
565
|
export default function EmptyMedia() {
|
|
513
566
|
return (
|
|
514
|
-
<Grid columns={{ base: 1, md: 3 }}
|
|
567
|
+
<Grid columns={{ base: 1, md: 3 }}>
|
|
515
568
|
<Empty
|
|
516
569
|
padding="sm"
|
|
517
570
|
border
|
|
@@ -564,9 +617,9 @@ const ILLUSTRATIONS = [
|
|
|
564
617
|
|
|
565
618
|
export default function EmptyIllustrations() {
|
|
566
619
|
return (
|
|
567
|
-
<Grid columns={{ base: 1, sm: 2, lg: 3 }}
|
|
620
|
+
<Grid columns={{ base: 1, sm: 2, lg: 3 }}>
|
|
568
621
|
{ILLUSTRATIONS.map(({ name, Component, use }) => (
|
|
569
|
-
<Stack key={name} gap="
|
|
622
|
+
<Stack key={name} gap="sm" align="center">
|
|
570
623
|
<Component />
|
|
571
624
|
<Stack gap="none" align="center">
|
|
572
625
|
<Text size="sm" weight="medium">{name}</Text>
|
|
@@ -589,9 +642,9 @@ import { Stack } from "themelia-ui/base/structure"
|
|
|
589
642
|
|
|
590
643
|
export default function EmptyBorder() {
|
|
591
644
|
return (
|
|
592
|
-
<Stack
|
|
645
|
+
<Stack>
|
|
593
646
|
<Empty padding="sm" border media={<InboxIcon />} mediaVariant="icon" title="padding="sm"" description="A side panel, a table cell, a card body." />
|
|
594
|
-
<Empty
|
|
647
|
+
<Empty media={<InboxIcon />} mediaVariant="icon" title="padding="default"" description="A whole page, with no border." />
|
|
595
648
|
</Stack>
|
|
596
649
|
)
|
|
597
650
|
}
|
|
@@ -606,7 +659,7 @@ import { Stack } from "themelia-ui/base/structure"
|
|
|
606
659
|
|
|
607
660
|
export default function FormStates() {
|
|
608
661
|
return (
|
|
609
|
-
<Stack
|
|
662
|
+
<Stack>
|
|
610
663
|
<Card>
|
|
611
664
|
<CardContent>
|
|
612
665
|
<LoadingState />
|
|
@@ -640,7 +693,7 @@ import { Text } from "themelia-ui/base/typography"
|
|
|
640
693
|
export default function ProgressExample() {
|
|
641
694
|
return (
|
|
642
695
|
// Captioned: `label` is the accessible name and renders nothing.
|
|
643
|
-
<Stack
|
|
696
|
+
<Stack style={{ width: "100%" }}>
|
|
644
697
|
{[
|
|
645
698
|
{ value: 24, tone: undefined, caption: "value={24}" },
|
|
646
699
|
{ value: 64, tone: "info" as const, caption: 'value={64} tone="info"' },
|
|
@@ -648,7 +701,7 @@ export default function ProgressExample() {
|
|
|
648
701
|
{ value: 92, tone: "warning" as const, caption: 'value={92} tone="warning"' },
|
|
649
702
|
{ value: undefined, tone: undefined, caption: "no value — indeterminate" },
|
|
650
703
|
].map((row) => (
|
|
651
|
-
<Stack key={row.caption} gap="
|
|
704
|
+
<Stack key={row.caption} gap="sm">
|
|
652
705
|
<Text size="xs" type="secondary">{row.caption}</Text>
|
|
653
706
|
<Progress value={row.value} tone={row.tone} label={row.caption} />
|
|
654
707
|
</Stack>
|
|
@@ -667,7 +720,7 @@ import { Text } from "themelia-ui/base/typography"
|
|
|
667
720
|
|
|
668
721
|
export default function ProgressCircleExample() {
|
|
669
722
|
return (
|
|
670
|
-
<Stack direction="horizontal"
|
|
723
|
+
<Stack direction="horizontal" wrap>
|
|
671
724
|
{[
|
|
672
725
|
{ value: 24, tone: undefined },
|
|
673
726
|
{ value: 60, tone: "info" as const },
|
|
@@ -15,12 +15,11 @@ A numeric field carries a unit, currency or precision the input itself must enfo
|
|
|
15
15
|
|
|
16
16
|
```tsx fragment — import-only example
|
|
17
17
|
import { CoordinatesInput } from "themelia-ui/base/forms-numeric"
|
|
18
|
-
import "themelia-ui/base/forms-numeric.css"
|
|
19
18
|
```
|
|
20
19
|
|
|
21
20
|
## Composition
|
|
22
21
|
|
|
23
|
-
This module composes `base/choice-inputs`, `base/text-inputs`.
|
|
22
|
+
This module composes `base/choice-inputs`, `base/text-inputs`, `base/typography`.
|
|
24
23
|
|
|
25
24
|
Application policy—routing, fetching, persistence, permissions, and translation—stays
|
|
26
25
|
outside the package and arrives through the public props, callbacks, slots, or accessors below.
|
|
@@ -456,7 +455,7 @@ export default function Currency() {
|
|
|
456
455
|
const [currency, setCurrency] = useState("EUR")
|
|
457
456
|
|
|
458
457
|
return (
|
|
459
|
-
<Stack
|
|
458
|
+
<Stack style={{ maxWidth: "26rem", width: "100%" }}>
|
|
460
459
|
<FormField label="Invoice total">
|
|
461
460
|
<CurrencyInput
|
|
462
461
|
value={amount}
|
|
@@ -484,7 +483,7 @@ import { Stack } from "themelia-ui/base/structure"
|
|
|
484
483
|
|
|
485
484
|
export default function Decimal() {
|
|
486
485
|
return (
|
|
487
|
-
<Stack
|
|
486
|
+
<Stack style={{ maxWidth: "26rem", width: "100%" }}>
|
|
488
487
|
<FormField label="Plain" helperText="Commas become dots; extra decimals are refused.">
|
|
489
488
|
<DecimalInput defaultValue="12.5" decimalPlaces={2} />
|
|
490
489
|
</FormField>
|
|
@@ -516,7 +515,7 @@ export default function RoundingModeExample() {
|
|
|
516
515
|
const [mode, setMode] = useState<RoundingMode>("half-even")
|
|
517
516
|
|
|
518
517
|
return (
|
|
519
|
-
<Stack
|
|
518
|
+
<Stack style={{ maxWidth: "26rem", width: "100%" }}>
|
|
520
519
|
<FormField label="Rounding" helperText="Applies to the field below.">
|
|
521
520
|
<RoundingModeSelect
|
|
522
521
|
value={mode}
|
|
@@ -542,7 +541,7 @@ import { Stack } from "themelia-ui/base/structure"
|
|
|
542
541
|
|
|
543
542
|
export default function Percentage() {
|
|
544
543
|
return (
|
|
545
|
-
<Stack
|
|
544
|
+
<Stack style={{ maxWidth: "26rem", width: "100%" }}>
|
|
546
545
|
<FormField label="VAT rate">
|
|
547
546
|
<PercentageInput defaultValue="21" />
|
|
548
547
|
</FormField>
|
|
@@ -576,7 +575,7 @@ export default function Units() {
|
|
|
576
575
|
const [coordinates, setCoordinates] = useState<CoordinatesValue>({ latitude: "52.370216", longitude: "4.895168" })
|
|
577
576
|
|
|
578
577
|
return (
|
|
579
|
-
<Stack
|
|
578
|
+
<Stack style={{ maxWidth: "34rem", width: "100%" }}>
|
|
580
579
|
<FormField label="Shipping weight">
|
|
581
580
|
<WeightInput
|
|
582
581
|
value={weight}
|
|
@@ -15,7 +15,6 @@ Assembling a form's visible structure — label, control, support text, sections
|
|
|
15
15
|
|
|
16
16
|
```tsx fragment — import-only example
|
|
17
17
|
import { DirtyStateBanner } from "themelia-ui/base/forms"
|
|
18
|
-
import "themelia-ui/base/forms.css"
|
|
19
18
|
```
|
|
20
19
|
|
|
21
20
|
## Composition
|
|
@@ -304,7 +303,7 @@ import { Input } from "themelia-ui/base/text-inputs"
|
|
|
304
303
|
|
|
305
304
|
export default function FormFieldExample() {
|
|
306
305
|
return (
|
|
307
|
-
<Stack
|
|
306
|
+
<Stack style={{ maxWidth: "26rem", width: "100%" }}>
|
|
308
307
|
<FormField label="Email" required hint="We only use this for receipts.">
|
|
309
308
|
<Input type="email" placeholder="you@example.com" />
|
|
310
309
|
</FormField>
|
|
@@ -354,7 +353,7 @@ import { Input } from "themelia-ui/base/text-inputs"
|
|
|
354
353
|
|
|
355
354
|
export default function HorizontalFields() {
|
|
356
355
|
return (
|
|
357
|
-
<Stack
|
|
356
|
+
<Stack style={{ width: "100%" }}>
|
|
358
357
|
<FormField orientation="horizontal" label="Display name" hint="Shown on invoices.">
|
|
359
358
|
<Input defaultValue="Acme Corporation" />
|
|
360
359
|
</FormField>
|
|
@@ -378,7 +377,7 @@ export default function FieldGroupExample() {
|
|
|
378
377
|
return (
|
|
379
378
|
<div style={{ maxWidth: "34rem", width: "100%" }}>
|
|
380
379
|
<FieldGroup legend="Reporting period" description="Both ends are inclusive.">
|
|
381
|
-
<Stack direction="horizontal" gap="
|
|
380
|
+
<Stack direction="horizontal" gap="sm">
|
|
382
381
|
<FormField label="From">
|
|
383
382
|
<Input type="date" defaultValue="2026-03-01" />
|
|
384
383
|
</FormField>
|
|
@@ -403,12 +402,12 @@ import { Text } from "themelia-ui/base/typography"
|
|
|
403
402
|
|
|
404
403
|
export default function FormSectionExample() {
|
|
405
404
|
return (
|
|
406
|
-
<Stack
|
|
405
|
+
<Stack style={{ maxWidth: "34rem" }}>
|
|
407
406
|
<FormSection
|
|
408
407
|
title="Billing"
|
|
409
408
|
description="Where invoices go. Changing it does not change the shipping address."
|
|
410
409
|
actions={
|
|
411
|
-
<Button tone="neutral"
|
|
410
|
+
<Button tone="neutral" appearance="ghost">
|
|
412
411
|
Edit
|
|
413
412
|
</Button>
|
|
414
413
|
}
|
|
@@ -446,7 +445,7 @@ export default function FormActions() {
|
|
|
446
445
|
</Text>
|
|
447
446
|
}
|
|
448
447
|
>
|
|
449
|
-
<Button tone="neutral"
|
|
448
|
+
<Button tone="neutral" appearance="outline">
|
|
450
449
|
Discard
|
|
451
450
|
</Button>
|
|
452
451
|
<Button>Save</Button>
|
|
@@ -466,7 +465,7 @@ import { Stack } from "themelia-ui/base/structure"
|
|
|
466
465
|
|
|
467
466
|
export default function FormErrorSummary() {
|
|
468
467
|
return (
|
|
469
|
-
<Stack style={{ maxWidth: "34rem" }}>
|
|
468
|
+
<Stack gap="sm" style={{ maxWidth: "34rem" }}>
|
|
470
469
|
<ErrorSummary
|
|
471
470
|
errors={[
|
|
472
471
|
"Name is required.",
|
|
@@ -474,7 +473,7 @@ export default function FormErrorSummary() {
|
|
|
474
473
|
"VAT number does not match the selected country.",
|
|
475
474
|
]}
|
|
476
475
|
action={
|
|
477
|
-
<Button tone="neutral"
|
|
476
|
+
<Button tone="neutral" appearance="outline">
|
|
478
477
|
Review the first problem
|
|
479
478
|
</Button>
|
|
480
479
|
}
|
|
@@ -493,14 +492,14 @@ import { Stack } from "themelia-ui/base/structure"
|
|
|
493
492
|
|
|
494
493
|
export default function FormDirty() {
|
|
495
494
|
return (
|
|
496
|
-
<Stack
|
|
495
|
+
<Stack style={{ maxWidth: "34rem" }}>
|
|
497
496
|
{(["neutral", "info", "warning"] as const).map((tone) => (
|
|
498
497
|
<DirtyStateBanner
|
|
499
498
|
key={tone}
|
|
500
499
|
tone={tone}
|
|
501
500
|
actions={
|
|
502
501
|
<>
|
|
503
|
-
<Button tone="neutral"
|
|
502
|
+
<Button tone="neutral" appearance="outline">
|
|
504
503
|
Discard
|
|
505
504
|
</Button>
|
|
506
505
|
<Button>Save</Button>
|
|
@@ -526,13 +525,13 @@ export default function FormSubmitState() {
|
|
|
526
525
|
const [state, setState] = useState<SubmitState>("idle")
|
|
527
526
|
|
|
528
527
|
return (
|
|
529
|
-
<Stack direction="horizontal"
|
|
528
|
+
<Stack direction="horizontal" wrap align="center">
|
|
530
529
|
{(["idle", "submitting", "succeeded"] as SubmitState[]).map((s) => (
|
|
531
530
|
<SubmitStateButton key={s} state={s} />
|
|
532
531
|
))}
|
|
533
532
|
<Button
|
|
534
533
|
tone="neutral"
|
|
535
|
-
|
|
534
|
+
appearance="outline"
|
|
536
535
|
onClick={() => {
|
|
537
536
|
setState("submitting")
|
|
538
537
|
setTimeout(() => setState("succeeded"), 1200)
|
|
@@ -15,12 +15,11 @@ Hovering a reference reveals a preview the reader does not have to act on.
|
|
|
15
15
|
|
|
16
16
|
```tsx fragment — import-only example
|
|
17
17
|
import { HoverCard } from "themelia-ui/base/hover-card"
|
|
18
|
-
import "themelia-ui/base/hover-card.css"
|
|
19
18
|
```
|
|
20
19
|
|
|
21
20
|
## Composition
|
|
22
21
|
|
|
23
|
-
This module
|
|
22
|
+
This module composes `base/typography`.
|
|
24
23
|
|
|
25
24
|
Application policy—routing, fetching, persistence, permissions, and translation—stays
|
|
26
25
|
outside the package and arrives through the public props, callbacks, slots, or accessors below.
|
|
@@ -111,11 +110,11 @@ export default function HoverCardExample() {
|
|
|
111
110
|
@jane
|
|
112
111
|
</HoverCardTrigger>
|
|
113
112
|
<HoverCardContent>
|
|
114
|
-
<Stack direction="horizontal" gap="
|
|
113
|
+
<Stack direction="horizontal" gap="sm" align="start">
|
|
115
114
|
<Avatar>
|
|
116
115
|
<AvatarFallback>JM</AvatarFallback>
|
|
117
116
|
</Avatar>
|
|
118
|
-
<Stack gap="
|
|
117
|
+
<Stack gap="sm">
|
|
119
118
|
<Text weight="medium">Jane McDonald</Text>
|
|
120
119
|
<Text size="xs" type="secondary">Billing · joined March 2024</Text>
|
|
121
120
|
</Stack>
|
|
@@ -15,7 +15,6 @@ A control needs an affix inside its border — an icon, unit, prefix button or c
|
|
|
15
15
|
|
|
16
16
|
```tsx fragment — import-only example
|
|
17
17
|
import { InputGroup } from "themelia-ui/base/input-group"
|
|
18
|
-
import "themelia-ui/base/input-group.css"
|
|
19
18
|
```
|
|
20
19
|
|
|
21
20
|
## Composition
|
|
@@ -66,18 +65,20 @@ Kind: callable.
|
|
|
66
65
|
A quiet Button sized to sit inside the field rather than beside it.
|
|
67
66
|
|
|
68
67
|
```text
|
|
69
|
-
({ className, type, tone,
|
|
68
|
+
({ className, type, tone, appearance, iconOnly, ...props }: InputGroupButtonProps) => React.JSX.Element
|
|
70
69
|
```
|
|
71
70
|
|
|
72
71
|
### `InputGroupButtonProps`
|
|
73
72
|
|
|
74
73
|
Kind: interface.
|
|
75
74
|
|
|
76
|
-
|
|
75
|
+
One size, inset inside the field: a full-height Button would set the field's height rather
|
|
76
|
+
than fit in it. `iconOnly` makes it square.
|
|
77
|
+
|
|
78
|
+
Extends: `Omit<React.ComponentProps<typeof Button>, "type">`.
|
|
77
79
|
|
|
78
80
|
| member | required | type | description / documented default |
|
|
79
81
|
| --- | :-: | --- | --- |
|
|
80
|
-
| `size` | no | `"xs" \| "sm" \| "icon-xs" \| "icon-sm"` | The sizes that fit inside a field: two text sizes and their icon-only twins. A<br>full-height Button would set the field's height rather than fit in it, which is why<br>this is the one place the kit keeps a size prop on a control. |
|
|
81
82
|
| `type` | no | `"button" \| "submit" \| "reset"` | The native button type: `button` unless set, so pressing it never submits the form around the field. |
|
|
82
83
|
|
|
83
84
|
### `InputGroupInput`
|
|
@@ -111,8 +112,8 @@ React.ComponentProps<"div">
|
|
|
111
112
|
|
|
112
113
|
Kind: callable.
|
|
113
114
|
|
|
114
|
-
Secondary text at the
|
|
115
|
-
|
|
115
|
+
Secondary text at the field's size — a unit, a domain suffix, a counter. Text's `sm`, the
|
|
116
|
+
step every field control's value uses, so it cannot drift from the input beside it.
|
|
116
117
|
|
|
117
118
|
```text
|
|
118
119
|
({ className, ...props }: React.ComponentProps<"span">) => React.JSX.Element
|
|
@@ -161,7 +162,7 @@ import { Stack } from "themelia-ui/base/structure"
|
|
|
161
162
|
|
|
162
163
|
export default function InputGroupInline() {
|
|
163
164
|
return (
|
|
164
|
-
<Stack
|
|
165
|
+
<Stack style={{ maxWidth: "26rem" }}>
|
|
165
166
|
<InputGroup>
|
|
166
167
|
<InputGroupAddon>
|
|
167
168
|
<SearchIcon aria-hidden="true" />
|
|
@@ -182,7 +183,7 @@ export default function InputGroupInline() {
|
|
|
182
183
|
<InputGroup>
|
|
183
184
|
<InputGroupInput placeholder="Add a label" aria-label="Label" />
|
|
184
185
|
<InputGroupAddon align="inline-end">
|
|
185
|
-
<InputGroupButton
|
|
186
|
+
<InputGroupButton iconOnly aria-label="Add">
|
|
186
187
|
<ArrowRightIcon aria-hidden="true" />
|
|
187
188
|
</InputGroupButton>
|
|
188
189
|
</InputGroupAddon>
|
|
@@ -204,10 +205,10 @@ import { Stack } from "themelia-ui/base/structure"
|
|
|
204
205
|
|
|
205
206
|
export default function InputGroupBlock() {
|
|
206
207
|
return (
|
|
207
|
-
<Stack
|
|
208
|
+
<Stack style={{ maxWidth: "26rem" }}>
|
|
208
209
|
<InputGroup>
|
|
209
210
|
<InputGroupAddon align="block-start">
|
|
210
|
-
<InputGroupButton
|
|
211
|
+
<InputGroupButton iconOnly aria-label="Favourite">
|
|
211
212
|
<StarIcon aria-hidden="true" />
|
|
212
213
|
</InputGroupButton>
|
|
213
214
|
<InputGroupText>Internal note</InputGroupText>
|
|
@@ -222,7 +223,7 @@ export default function InputGroupBlock() {
|
|
|
222
223
|
}
|
|
223
224
|
```
|
|
224
225
|
|
|
225
|
-
###
|
|
226
|
+
### A button inside the shell
|
|
226
227
|
|
|
227
228
|
```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
|
|
228
229
|
import { ArrowRightIcon } from "lucide-react"
|
|
@@ -234,25 +235,21 @@ import { Stack } from "themelia-ui/base/structure"
|
|
|
234
235
|
|
|
235
236
|
export default function InputGroupButtons() {
|
|
236
237
|
return (
|
|
237
|
-
<Stack
|
|
238
|
-
|
|
239
|
-
<
|
|
240
|
-
|
|
241
|
-
<
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
</InputGroupButton>
|
|
253
|
-
</InputGroupAddon>
|
|
254
|
-
</InputGroup>
|
|
255
|
-
))}
|
|
238
|
+
<Stack style={{ maxWidth: "26rem" }}>
|
|
239
|
+
<InputGroup>
|
|
240
|
+
<InputGroupInput placeholder="A labelled button" aria-label="Coupon code" />
|
|
241
|
+
<InputGroupAddon align="inline-end">
|
|
242
|
+
<InputGroupButton>Apply</InputGroupButton>
|
|
243
|
+
</InputGroupAddon>
|
|
244
|
+
</InputGroup>
|
|
245
|
+
<InputGroup>
|
|
246
|
+
<InputGroupInput placeholder="An icon-only button" aria-label="Search" />
|
|
247
|
+
<InputGroupAddon align="inline-end">
|
|
248
|
+
<InputGroupButton iconOnly aria-label="Go">
|
|
249
|
+
<ArrowRightIcon aria-hidden="true" />
|
|
250
|
+
</InputGroupButton>
|
|
251
|
+
</InputGroupAddon>
|
|
252
|
+
</InputGroup>
|
|
256
253
|
</Stack>
|
|
257
254
|
)
|
|
258
255
|
}
|
|
@@ -15,7 +15,6 @@ A row carries identity — media, title, description and trailing actions — in
|
|
|
15
15
|
|
|
16
16
|
```tsx fragment — import-only example
|
|
17
17
|
import { Item } from "themelia-ui/base/item"
|
|
18
|
-
import "themelia-ui/base/item.css"
|
|
19
18
|
```
|
|
20
19
|
|
|
21
20
|
## Composition
|
|
@@ -31,8 +30,8 @@ outside the package and arrives through the public props, callbacks, slots, or a
|
|
|
31
30
|
|
|
32
31
|
Kind: callable.
|
|
33
32
|
|
|
34
|
-
A row — a list row, a menu row, a table row. No size prop: row height follows
|
|
35
|
-
|
|
33
|
+
A row — a list row, a menu row, a table row. No size prop: row height follows the
|
|
34
|
+
density, so use a denser scope for a denser list.
|
|
36
35
|
|
|
37
36
|
**Use when:** An identity row with a title, description, media and actions.
|
|
38
37
|
|
|
@@ -205,14 +204,14 @@ export default function ItemExample() {
|
|
|
205
204
|
import { Card } from "themelia-ui/base/cards"
|
|
206
205
|
import { Item, ItemContent, ItemDescription, ItemGroup, ItemTitle } from "themelia-ui/base/item"
|
|
207
206
|
import { Stack } from "themelia-ui/base/structure"
|
|
208
|
-
import {
|
|
207
|
+
import { UIScope } from "themelia-ui/ui-provider"
|
|
209
208
|
|
|
210
209
|
export default function CardsScale() {
|
|
211
210
|
return (
|
|
212
|
-
<Stack
|
|
213
|
-
{[
|
|
214
|
-
<
|
|
215
|
-
<Card surface="bordered" title={
|
|
211
|
+
<Stack style={{ width: "100%" }}>
|
|
212
|
+
{(["default", "compact"] as const).map((density) => (
|
|
213
|
+
<UIScope key={density} config={{ density }}>
|
|
214
|
+
<Card surface="bordered" title={`density="${density}"`}>
|
|
216
215
|
<ItemGroup>
|
|
217
216
|
<Item surface="bordered">
|
|
218
217
|
<ItemContent>
|
|
@@ -228,7 +227,7 @@ export default function CardsScale() {
|
|
|
228
227
|
</Item>
|
|
229
228
|
</ItemGroup>
|
|
230
229
|
</Card>
|
|
231
|
-
</
|
|
230
|
+
</UIScope>
|
|
232
231
|
))}
|
|
233
232
|
</Stack>
|
|
234
233
|
)
|
|
@@ -15,7 +15,6 @@ Naming a form control so the label and control are associated.
|
|
|
15
15
|
|
|
16
16
|
```tsx fragment — import-only example
|
|
17
17
|
import { Label } from "themelia-ui/base/label"
|
|
18
|
-
import "themelia-ui/base/label.css"
|
|
19
18
|
```
|
|
20
19
|
|
|
21
20
|
## Composition
|
|
@@ -53,8 +52,8 @@ import { Input } from "themelia-ui/base/text-inputs"
|
|
|
53
52
|
|
|
54
53
|
export default function LabelExample() {
|
|
55
54
|
return (
|
|
56
|
-
<Stack
|
|
57
|
-
<Stack gap="
|
|
55
|
+
<Stack style={{ maxWidth: "26rem", width: "100%" }}>
|
|
56
|
+
<Stack gap="sm">
|
|
58
57
|
<Label htmlFor="demo-email">Email</Label>
|
|
59
58
|
<Input id="demo-email" placeholder="name@example.com" />
|
|
60
59
|
</Stack>
|
|
@@ -15,16 +15,14 @@ An application-style menu bar sits persistently across the top of a workspace.
|
|
|
15
15
|
|
|
16
16
|
```tsx fragment — import-only example
|
|
17
17
|
import { Menubar } from "themelia-ui/base/menubar"
|
|
18
|
-
import "themelia-ui/base/menubar.css"
|
|
19
18
|
import { DropdownMenu } from "themelia-ui/base/dropdown-menu"
|
|
20
|
-
import "themelia-ui/base/dropdown-menu.css"
|
|
21
19
|
```
|
|
22
20
|
|
|
23
21
|
## Composition
|
|
24
22
|
|
|
25
|
-
This module
|
|
23
|
+
This module composes `base/typography`.
|
|
26
24
|
|
|
27
|
-
It is used together with `base/dropdown-menu`: import that module
|
|
25
|
+
It is used together with `base/dropdown-menu`: import that module too.
|
|
28
26
|
|
|
29
27
|
Application policy—routing, fetching, persistence, permissions, and translation—stays
|
|
30
28
|
outside the package and arrives through the public props, callbacks, slots, or accessors below.
|
|
@@ -15,12 +15,11 @@ Site navigation needs grouped panels of links under top-level triggers.
|
|
|
15
15
|
|
|
16
16
|
```tsx fragment — import-only example
|
|
17
17
|
import { NavigationMenu } from "themelia-ui/base/navigation-menu"
|
|
18
|
-
import "themelia-ui/base/navigation-menu.css"
|
|
19
18
|
```
|
|
20
19
|
|
|
21
20
|
## Composition
|
|
22
21
|
|
|
23
|
-
This module
|
|
22
|
+
This module composes `base/typography`.
|
|
24
23
|
|
|
25
24
|
Application policy—routing, fetching, persistence, permissions, and translation—stays
|
|
26
25
|
outside the package and arrives through the public props, callbacks, slots, or accessors below.
|
|
@@ -141,7 +140,7 @@ import { Stack } from "themelia-ui/base/structure"
|
|
|
141
140
|
|
|
142
141
|
export default function NavigationMenuExample() {
|
|
143
142
|
return (
|
|
144
|
-
<Stack direction="horizontal">
|
|
143
|
+
<Stack gap="sm" direction="horizontal">
|
|
145
144
|
<NavigationMenu aria-label="Documentation">
|
|
146
145
|
<NavigationMenuList>
|
|
147
146
|
<NavigationMenuItem>
|
|
@@ -15,7 +15,6 @@ Moving between sibling views or pages — tabs, breadcrumbs, pagination, page he
|
|
|
15
15
|
|
|
16
16
|
```tsx fragment — import-only example
|
|
17
17
|
import { Breadcrumbs } from "themelia-ui/base/navigation"
|
|
18
|
-
import "themelia-ui/base/navigation.css"
|
|
19
18
|
```
|
|
20
19
|
|
|
21
20
|
## Composition
|
|
@@ -521,7 +520,7 @@ export default function PageHeadingExample() {
|
|
|
521
520
|
description="Everything issued in this workspace, newest first."
|
|
522
521
|
actions={
|
|
523
522
|
<>
|
|
524
|
-
<Button tone="neutral"
|
|
523
|
+
<Button tone="neutral" appearance="outline">Export</Button>
|
|
525
524
|
<Button>New invoice</Button>
|
|
526
525
|
</>
|
|
527
526
|
}
|
|
@@ -733,7 +732,7 @@ export default function TabsScroll() {
|
|
|
733
732
|
return (
|
|
734
733
|
<>
|
|
735
734
|
<Switch checked={edgeFade} onChange={event => setEdgeFade(event.target.checked)} label="Fade overflowing edges" />
|
|
736
|
-
<Stack maxWidth="22rem">
|
|
735
|
+
<Stack gap="sm" maxWidth="22rem">
|
|
737
736
|
<Tabs defaultValue="overview">
|
|
738
737
|
<TabList label="Scrollable sections" variant="enclosed" edgeFade={edgeFade}>
|
|
739
738
|
{["Overview", "Activity", "Settings", "Billing", "Members", "Integrations", "Audit log"].map(label => <Tab key={label} value={label.toLowerCase()}>{label}</Tab>)}
|