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
|
@@ -7,8 +7,6 @@ snapshot, the architecture manifest, selection guidance, and the live preview re
|
|
|
7
7
|
|
|
8
8
|
| module | tier | profile | reference |
|
|
9
9
|
| --- | --- | --- | --- |
|
|
10
|
-
| `admin/patterns/access` | Blocks | admin | [API](./admin--patterns--access.md) |
|
|
11
|
-
| `admin/patterns/commerce` | Blocks | admin | [API](./admin--patterns--commerce.md) |
|
|
12
10
|
| `base/accordion` | Base | general | [API](./base--accordion.md) |
|
|
13
11
|
| `base/action-menu` | Base | general | [API](./base--action-menu.md) |
|
|
14
12
|
| `base/alert-dialog` | Base | general | [API](./base--alert-dialog.md) |
|
|
@@ -63,6 +61,11 @@ snapshot, the architecture manifest, selection guidance, and the live preview re
|
|
|
63
61
|
| `base/typography` | Base | general | [API](./base--typography.md) |
|
|
64
62
|
| `base/upload` | Base | general | [API](./base--upload.md) |
|
|
65
63
|
| `base/value-inputs` | Base | general | [API](./base--value-inputs.md) |
|
|
64
|
+
| `blocks/admin/access` | Blocks | admin | [API](./blocks--admin--access.md) |
|
|
65
|
+
| `blocks/admin/commerce` | Blocks | admin | [API](./blocks--admin--commerce.md) |
|
|
66
|
+
| `blocks/analytics` | Blocks | general | [API](./blocks--analytics.md) |
|
|
67
|
+
| `blocks/onboarding` | Blocks | general | [API](./blocks--onboarding.md) |
|
|
68
|
+
| `blocks/timelines` | Blocks | general | [API](./blocks--timelines.md) |
|
|
66
69
|
| `features/actions` | Features | general | [API](./features--actions.md) |
|
|
67
70
|
| `features/activities` | Features | general | [API](./features--activities.md) |
|
|
68
71
|
| `features/ai-chat` | Features | general | [API](./features--ai-chat.md) |
|
|
@@ -98,9 +101,6 @@ snapshot, the architecture manifest, selection guidance, and the live preview re
|
|
|
98
101
|
| `layout/settings` | Layout | general | [API](./layout--settings.md) |
|
|
99
102
|
| `layout/sidebar` | Layout | general | [API](./layout--sidebar.md) |
|
|
100
103
|
| `layout/workspace` | Layout | general | [API](./layout--workspace.md) |
|
|
101
|
-
| `patterns/analytics` | Blocks | general | [API](./patterns--analytics.md) |
|
|
102
|
-
| `patterns/onboarding` | Blocks | general | [API](./patterns--onboarding.md) |
|
|
103
|
-
| `patterns/timelines` | Blocks | general | [API](./patterns--timelines.md) |
|
|
104
104
|
| `primitives` | Primitives | general | [API](./primitives.md) |
|
|
105
105
|
| `theming` | Foundations | general | [API](./theming.md) |
|
|
106
106
|
| `ui-provider` | Foundations | general | [API](./ui-provider.md) |
|
|
@@ -15,7 +15,6 @@ Several titled sections share one column and the reader opens them one at a time
|
|
|
15
15
|
|
|
16
16
|
```tsx fragment — import-only example
|
|
17
17
|
import { Accordion } from "themelia-ui/base/accordion"
|
|
18
|
-
import "themelia-ui/base/accordion.css"
|
|
19
18
|
```
|
|
20
19
|
|
|
21
20
|
## Composition
|
|
@@ -188,7 +187,7 @@ import { Text } from "themelia-ui/base/typography"
|
|
|
188
187
|
|
|
189
188
|
export default function AccordionSurfaces() {
|
|
190
189
|
return (
|
|
191
|
-
<Stack
|
|
190
|
+
<Stack style={{ maxWidth: "34rem", width: "100%" }}>
|
|
192
191
|
{(["bordered", "card", "flat"] as const).map((surface) => (
|
|
193
192
|
<Stack key={surface} gap="sm">
|
|
194
193
|
<Text size="xs" type="secondary">
|
|
@@ -207,3 +206,53 @@ export default function AccordionSurfaces() {
|
|
|
207
206
|
)
|
|
208
207
|
}
|
|
209
208
|
```
|
|
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
|
+
```
|
|
@@ -15,7 +15,6 @@ A row, card or header offers the same set of actions repeatedly and the overflow
|
|
|
15
15
|
|
|
16
16
|
```tsx fragment — import-only example
|
|
17
17
|
import { ActionButtons } from "themelia-ui/base/action-menu"
|
|
18
|
-
import "themelia-ui/base/action-menu.css"
|
|
19
18
|
```
|
|
20
19
|
|
|
21
20
|
## Composition
|
|
@@ -43,7 +42,7 @@ Kind: interface.
|
|
|
43
42
|
|
|
44
43
|
| member | required | type | description / documented default |
|
|
45
44
|
| --- | :-: | --- | --- |
|
|
46
|
-
| `actions` | yes | `readonly ActionDefinition[]` | The same definitions `ActionMenu` takes, side by side rather than collapsed into a menu:<br>that is the point of the shape. Each entry's `tone` and `
|
|
45
|
+
| `actions` | yes | `readonly ActionDefinition[]` | The same definitions `ActionMenu` takes, side by side rather than collapsed into a menu:<br>that is the point of the shape. Each entry's `tone` and `appearance` carry through to<br>its button. |
|
|
47
46
|
| `max` | no | `number` | How many render as buttons before the rest collapse into an overflow menu built from<br>the same array. Unset, every definition is a button. |
|
|
48
47
|
| `strings` | no | `Partial<ActionMenuStrings>` | Overrides this toolbar's own copy: `strings.overflow` names the overflow menu's trigger. |
|
|
49
48
|
| `className` | no | `string` | |
|
|
@@ -73,7 +72,7 @@ One command, in the shape `ActionMenu`, `ActionButtons` and a card's `actions` a
|
|
|
73
72
|
| `onCheckedChange` | no | `(checked: boolean) => void` | |
|
|
74
73
|
| `group` | no | `string \| true` | Starts a new group, ruling off above this entry. A string also captions it; `true`<br>rules off without a heading (e.g. to set apart a sign-out or delete). |
|
|
75
74
|
| `tone` | no | `ButtonTone` | Semantic intent. `destructive` also moves the entry last and separates it. |
|
|
76
|
-
| `
|
|
75
|
+
| `appearance` | no | `ButtonAppearance \| "link"` | Treatment when the action renders as a button. `link` is a ghost that underlines. |
|
|
77
76
|
| `visible` | no | `boolean` | `false` omits the action entirely. @default true |
|
|
78
77
|
| `disabled` | no | `boolean` | |
|
|
79
78
|
| `closeOnSelect` | no | `boolean` | Overrides the menu's `closeOnSelect` for this entry. |
|
|
@@ -310,13 +309,13 @@ export default function ActionMenuExample() {
|
|
|
310
309
|
]
|
|
311
310
|
|
|
312
311
|
return (
|
|
313
|
-
<Stack direction="horizontal"
|
|
312
|
+
<Stack direction="horizontal" align="center">
|
|
314
313
|
<ActionMenu actions={actions} />
|
|
315
314
|
<ActionMenu actions={actions} label="Actions" icon={SettingsIcon} />
|
|
316
315
|
<ActionMenu
|
|
317
316
|
actions={actions}
|
|
318
317
|
renderTrigger={
|
|
319
|
-
<Button
|
|
318
|
+
<Button appearance="outline" tone="neutral">
|
|
320
319
|
Custom trigger
|
|
321
320
|
<ChevronDownIcon />
|
|
322
321
|
</Button>
|
|
@@ -345,17 +344,17 @@ const DESTRUCTIVE_FIRST: ActionDefinition[] = [
|
|
|
345
344
|
export default function ActionMenuOrder() {
|
|
346
345
|
return (
|
|
347
346
|
// The same delete-first array: default ordering on the left, `preserveOrder` on the right.
|
|
348
|
-
<Stack direction="horizontal"
|
|
347
|
+
<Stack direction="horizontal" align="center">
|
|
349
348
|
<ActionMenu
|
|
350
349
|
actions={DESTRUCTIVE_FIRST}
|
|
351
350
|
label="Sorted"
|
|
352
|
-
buttonProps={{ tone: "neutral",
|
|
351
|
+
buttonProps={{ tone: "neutral", appearance: "outline" }}
|
|
353
352
|
/>
|
|
354
353
|
<ActionMenu
|
|
355
354
|
actions={DESTRUCTIVE_FIRST}
|
|
356
355
|
preserveOrder
|
|
357
356
|
label="preserveOrder"
|
|
358
|
-
buttonProps={{ tone: "neutral",
|
|
357
|
+
buttonProps={{ tone: "neutral", appearance: "outline" }}
|
|
359
358
|
/>
|
|
360
359
|
</Stack>
|
|
361
360
|
)
|
|
@@ -375,7 +374,7 @@ import { Stack } from "themelia-ui/base/structure"
|
|
|
375
374
|
|
|
376
375
|
export default function ActionMenuWidth() {
|
|
377
376
|
return (
|
|
378
|
-
<Stack direction="horizontal"
|
|
377
|
+
<Stack direction="horizontal" align="center" wrap>
|
|
379
378
|
<ActionMenu
|
|
380
379
|
label="Shortcuts"
|
|
381
380
|
actions={[
|
|
@@ -404,7 +403,7 @@ export default function ActionMenuWidth() {
|
|
|
404
403
|
/>
|
|
405
404
|
<ActionMenu
|
|
406
405
|
renderTrigger={
|
|
407
|
-
<Button
|
|
406
|
+
<Button appearance="outline" tone="neutral" style={{ width: "16rem" }}>
|
|
408
407
|
Matches the trigger
|
|
409
408
|
<ChevronDownIcon />
|
|
410
409
|
</Button>
|
|
@@ -436,14 +435,14 @@ const TOOLBAR: ActionDefinition[] = [
|
|
|
436
435
|
{ label: "Duplicate", icon: ShareIcon, ...QUIET, onClick: () => {} },
|
|
437
436
|
{ label: "Export", icon: DownloadIcon, ...QUIET, onClick: () => {} },
|
|
438
437
|
{ label: "Archive", icon: ArchiveIcon, ...QUIET, onClick: () => {} },
|
|
439
|
-
{ label: "Delete", icon: TrashIcon,
|
|
438
|
+
{ label: "Delete", icon: TrashIcon, appearance: "outline", tone: "destructive", onClick: () => {} },
|
|
440
439
|
]
|
|
441
440
|
|
|
442
441
|
export default function ActionButtonsExample() {
|
|
443
442
|
return (
|
|
444
|
-
<Stack
|
|
443
|
+
<Stack style={{ width: "100%" }}>
|
|
445
444
|
{[5, 3, 1].map((max) => (
|
|
446
|
-
<Stack key={max} gap="
|
|
445
|
+
<Stack key={max} gap="sm">
|
|
447
446
|
<Text size="xs" type="secondary">max={max}</Text>
|
|
448
447
|
<ActionButtons actions={TOOLBAR} max={max} />
|
|
449
448
|
</Stack>
|
|
@@ -483,9 +482,9 @@ const INVOICES: Invoice[] = [
|
|
|
483
482
|
|
|
484
483
|
export default function ContextActions() {
|
|
485
484
|
return (
|
|
486
|
-
<Stack
|
|
485
|
+
<Stack style={{ width: "100%" }}>
|
|
487
486
|
{INVOICES.map((invoice) => (
|
|
488
|
-
<Stack key={invoice.number} gap="
|
|
487
|
+
<Stack key={invoice.number} gap="sm">
|
|
489
488
|
<Text size="xs" type="secondary">
|
|
490
489
|
{invoice.number} · {invoice.paid ? "paid, locked" : "unpaid"}
|
|
491
490
|
</Text>
|
|
@@ -15,7 +15,6 @@ Documenting or extending the alert-dialog anatomy itself inside base.
|
|
|
15
15
|
|
|
16
16
|
```tsx fragment — import-only example
|
|
17
17
|
import { AlertDialogAction } from "themelia-ui/base/alert-dialog"
|
|
18
|
-
import "themelia-ui/base/alert-dialog.css"
|
|
19
18
|
```
|
|
20
19
|
|
|
21
20
|
## Composition
|
|
@@ -91,9 +90,9 @@ import { Text } from "themelia-ui/base/typography"
|
|
|
91
90
|
|
|
92
91
|
export default function AlertDialog() {
|
|
93
92
|
return (
|
|
94
|
-
<Stack direction="horizontal">
|
|
93
|
+
<Stack gap="sm" direction="horizontal">
|
|
95
94
|
<Overlay>
|
|
96
|
-
<OverlayTrigger render={<Button tone="destructive"
|
|
95
|
+
<OverlayTrigger render={<Button tone="destructive" appearance="outline" />}>
|
|
97
96
|
Delete account
|
|
98
97
|
</OverlayTrigger>
|
|
99
98
|
<AlertDialogContent>
|
|
@@ -105,7 +104,7 @@ export default function AlertDialog() {
|
|
|
105
104
|
<Text type="secondary">Every project and invoice is removed permanently.</Text>
|
|
106
105
|
</OverlayBody>
|
|
107
106
|
<OverlayFooter>
|
|
108
|
-
<AlertDialogCancel render={<Button tone="neutral"
|
|
107
|
+
<AlertDialogCancel render={<Button tone="neutral" appearance="outline" />}>
|
|
109
108
|
Cancel
|
|
110
109
|
</AlertDialogCancel>
|
|
111
110
|
{/* The answer is an Action, not a second Cancel: they read the same only until a caller hooks the one that commits. */}
|
|
@@ -15,7 +15,6 @@ A media box must hold a fixed ratio while its width is decided by the layout.
|
|
|
15
15
|
|
|
16
16
|
```tsx fragment — import-only example
|
|
17
17
|
import { AspectRatio } from "themelia-ui/base/aspect-ratio"
|
|
18
|
-
import "themelia-ui/base/aspect-ratio.css"
|
|
19
18
|
```
|
|
20
19
|
|
|
21
20
|
## Composition
|
|
@@ -59,15 +58,15 @@ import { Text } from "themelia-ui/base/typography"
|
|
|
59
58
|
|
|
60
59
|
export default function AspectRatioExample() {
|
|
61
60
|
return (
|
|
62
|
-
<Stack direction="horizontal"
|
|
61
|
+
<Stack direction="horizontal" style={{ width: "100%" }}>
|
|
63
62
|
{[
|
|
64
63
|
{ ratio: 16 / 9, label: "16 / 9" },
|
|
65
64
|
{ ratio: 1, label: "1 / 1" },
|
|
66
65
|
{ ratio: 3 / 4, label: "3 / 4" },
|
|
67
66
|
].map((entry) => (
|
|
68
|
-
<Stack key={entry.label} gap="
|
|
67
|
+
<Stack key={entry.label} gap="sm" style={{ flex: 1 }}>
|
|
69
68
|
<AspectRatio ratio={entry.ratio}>
|
|
70
|
-
<div style={{ display: "grid", placeItems: "center", background: "var(--muted
|
|
69
|
+
<div style={{ display: "grid", placeItems: "center", background: "var(--muted)", borderRadius: "var(--radius)" }}>
|
|
71
70
|
<Text size="xs" type="secondary">{entry.label}</Text>
|
|
72
71
|
</div>
|
|
73
72
|
</AspectRatio>
|
|
@@ -15,12 +15,11 @@ Showing a person or entity as an image with an initials fallback, alone or stack
|
|
|
15
15
|
|
|
16
16
|
```tsx fragment — import-only example
|
|
17
17
|
import { Avatar } from "themelia-ui/base/avatar"
|
|
18
|
-
import "themelia-ui/base/avatar.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.
|
|
@@ -51,7 +50,8 @@ A small status mark on the disc's corner.
|
|
|
51
50
|
|
|
52
51
|
Kind: callable.
|
|
53
52
|
|
|
54
|
-
Shown when there is no image. Initials, not a placeholder glyph.
|
|
53
|
+
Shown when there is no image. Initials, not a placeholder glyph. They take the smaller
|
|
54
|
+
step on a small disc, and in a group, so the overlap doesn't clip them.
|
|
55
55
|
|
|
56
56
|
```text
|
|
57
57
|
({ className, ...props }: AvatarPrimitive.Fallback.Props) => React.JSX.Element
|
|
@@ -104,7 +104,7 @@ Kind: type.
|
|
|
104
104
|
An avatar keeps a size prop: it has no content to scale with.
|
|
105
105
|
|
|
106
106
|
```text
|
|
107
|
-
"default" | "sm"
|
|
107
|
+
"default" | "sm"
|
|
108
108
|
```
|
|
109
109
|
|
|
110
110
|
### `defaultStackedAvatarsStrings`
|
|
@@ -174,8 +174,8 @@ import { Stack } from "themelia-ui/base/structure"
|
|
|
174
174
|
|
|
175
175
|
export default function AvatarExample() {
|
|
176
176
|
return (
|
|
177
|
-
<Stack direction="horizontal"
|
|
178
|
-
{(["sm", "default"
|
|
177
|
+
<Stack direction="horizontal" align="center">
|
|
178
|
+
{(["sm", "default"] as const).map((size) => (
|
|
179
179
|
<Avatar key={size} size={size}>
|
|
180
180
|
<AvatarFallback>JM</AvatarFallback>
|
|
181
181
|
</Avatar>
|
|
@@ -206,7 +206,7 @@ const MEMBERS = [
|
|
|
206
206
|
|
|
207
207
|
export default function Stacked() {
|
|
208
208
|
return (
|
|
209
|
-
<Stack
|
|
209
|
+
<Stack>
|
|
210
210
|
<StackedAvatars users={MEMBERS} max={4} />
|
|
211
211
|
<StackedAvatars users={MEMBERS} max={2} />
|
|
212
212
|
<AvatarGroup>
|
|
@@ -15,12 +15,11 @@ A short status or count sits beside the thing it describes and carries a semanti
|
|
|
15
15
|
|
|
16
16
|
```tsx fragment — import-only example
|
|
17
17
|
import { Badge } from "themelia-ui/base/badge"
|
|
18
|
-
import "themelia-ui/base/badge.css"
|
|
19
18
|
```
|
|
20
19
|
|
|
21
20
|
## Composition
|
|
22
21
|
|
|
23
|
-
This module composes `base/slot`.
|
|
22
|
+
This module composes `base/slot`, `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.
|
|
@@ -32,19 +31,29 @@ outside the package and arrives through the public props, callbacks, slots, or a
|
|
|
32
31
|
Kind: callable.
|
|
33
32
|
|
|
34
33
|
```text
|
|
35
|
-
({ className, tone,
|
|
34
|
+
({ className, tone, appearance, render, dot, pending, pulse, children, ...props }: BadgeProps) => React.JSX.Element
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### `BadgeAppearance`
|
|
38
|
+
|
|
39
|
+
Kind: type.
|
|
40
|
+
|
|
41
|
+
Fill treatment. The tone supplies the hue; this decides how much of it is applied.
|
|
42
|
+
|
|
43
|
+
```text
|
|
44
|
+
"soft" | "solid" | "outline"
|
|
36
45
|
```
|
|
37
46
|
|
|
38
47
|
### `BadgeProps`
|
|
39
48
|
|
|
40
49
|
Kind: interface.
|
|
41
50
|
|
|
42
|
-
Extends: `React.ComponentProps<"span"
|
|
51
|
+
Extends: `React.ComponentProps<"span">`.
|
|
43
52
|
|
|
44
53
|
| member | required | type | description / documented default |
|
|
45
54
|
| --- | :-: | --- | --- |
|
|
46
|
-
| `tone` | no | `BadgeTone` | Semantic colour: what the badge means. `
|
|
47
|
-
| `
|
|
55
|
+
| `tone` | no | `BadgeTone` | Semantic colour: what the badge means. `appearance` decides how much of it is applied. |
|
|
56
|
+
| `appearance` | no | `BadgeAppearance` | How much of the tone is applied: a soft wash, a solid fill or an outline. |
|
|
48
57
|
| `dot` | no | `boolean` | A leading status dot in the badge's own tone. |
|
|
49
58
|
| `pending` | no | `boolean` | Draws the dot hollow, for a state that has not happened yet: "queued", not "failed". |
|
|
50
59
|
| `pulse` | no | `boolean` | Animates the dot, for a state that is actively changing. |
|
|
@@ -54,32 +63,54 @@ Extends: `React.ComponentProps<"span">`, `VariantProps<typeof badgeVariants>`.
|
|
|
54
63
|
|
|
55
64
|
Kind: type.
|
|
56
65
|
|
|
66
|
+
Semantic colour: the kit's one tone union.
|
|
67
|
+
|
|
57
68
|
```text
|
|
58
|
-
|
|
69
|
+
SemanticTone
|
|
59
70
|
```
|
|
60
71
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
Kind: type.
|
|
72
|
+
## Preview recipes
|
|
64
73
|
|
|
65
|
-
|
|
74
|
+
Preview route: Analytics — `/analytics`
|
|
66
75
|
|
|
67
|
-
|
|
68
|
-
"soft" | "solid" | "outline"
|
|
69
|
-
```
|
|
76
|
+
### Compose your own
|
|
70
77
|
|
|
71
|
-
|
|
78
|
+
```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
|
|
79
|
+
import { ArrowUpIcon, CreditCardIcon } from "lucide-react"
|
|
72
80
|
|
|
73
|
-
|
|
81
|
+
import { Badge } from "themelia-ui/base/badge"
|
|
82
|
+
import { Card } from "themelia-ui/base/cards"
|
|
83
|
+
import { Sparkline } from "themelia-ui/base/chart"
|
|
84
|
+
import { IconBadge } from "themelia-ui/base/display"
|
|
85
|
+
import { Stack } from "themelia-ui/base/structure"
|
|
86
|
+
import { DisplayLabel, Text } from "themelia-ui/base/typography"
|
|
87
|
+
import { Money } from "themelia-ui/primitives"
|
|
74
88
|
|
|
75
|
-
|
|
76
|
-
|
|
89
|
+
export default function AnalyticsBlueprint() {
|
|
90
|
+
return (
|
|
91
|
+
<Card style={{ maxWidth: "20rem" }}>
|
|
92
|
+
<Stack gap="sm">
|
|
93
|
+
<Stack direction="horizontal" align="center" gap="sm">
|
|
94
|
+
<IconBadge icon={CreditCardIcon} tone="primary" />
|
|
95
|
+
<DisplayLabel>Revenue</DisplayLabel>
|
|
96
|
+
</Stack>
|
|
97
|
+
<Stack direction="horizontal" align="center" justify="between" gap="sm">
|
|
98
|
+
<Money amount={48200} currency="EUR" size="xl" weight="semibold" />
|
|
99
|
+
<Badge tone="success">
|
|
100
|
+
<ArrowUpIcon />
|
|
101
|
+
12.4%
|
|
102
|
+
</Badge>
|
|
103
|
+
</Stack>
|
|
104
|
+
<Sparkline data={[18, 22, 19, 27, 24, 31, 29, 38]} tone="success" label="Revenue rising over eight weeks" />
|
|
105
|
+
<Text size="xs" type="secondary">
|
|
106
|
+
Net of refunds, this quarter
|
|
107
|
+
</Text>
|
|
108
|
+
</Stack>
|
|
109
|
+
</Card>
|
|
110
|
+
)
|
|
111
|
+
}
|
|
77
112
|
```
|
|
78
113
|
|
|
79
|
-
## Preview recipes
|
|
80
|
-
|
|
81
|
-
Preview route: Badge — `/badge`
|
|
82
|
-
|
|
83
114
|
### Tones
|
|
84
115
|
|
|
85
116
|
```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
|
|
@@ -91,13 +122,13 @@ const TONES: BadgeTone[] = ["neutral", "primary", "secondary", "success", "info"
|
|
|
91
122
|
|
|
92
123
|
export default function BadgeTones() {
|
|
93
124
|
return (
|
|
94
|
-
<Stack
|
|
95
|
-
{(["soft", "solid", "outline"] as const).map((
|
|
96
|
-
<Stack key={
|
|
97
|
-
<Text size="xs" type="secondary">{
|
|
125
|
+
<Stack style={{ width: "100%" }}>
|
|
126
|
+
{(["soft", "solid", "outline"] as const).map((appearance) => (
|
|
127
|
+
<Stack key={appearance} gap="sm">
|
|
128
|
+
<Text size="xs" type="secondary">{appearance}</Text>
|
|
98
129
|
<Stack direction="horizontal" gap="sm" wrap>
|
|
99
130
|
{TONES.map((tone) => (
|
|
100
|
-
<Badge key={tone} tone={tone}
|
|
131
|
+
<Badge key={tone} tone={tone} appearance={appearance}>{tone}</Badge>
|
|
101
132
|
))}
|
|
102
133
|
</Stack>
|
|
103
134
|
</Stack>
|
|
@@ -124,3 +155,104 @@ export default function BadgeDot() {
|
|
|
124
155
|
)
|
|
125
156
|
}
|
|
126
157
|
```
|
|
158
|
+
|
|
159
|
+
### Compose your own timeline
|
|
160
|
+
|
|
161
|
+
```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
|
|
162
|
+
import { RocketIcon, WrenchIcon } from "lucide-react"
|
|
163
|
+
|
|
164
|
+
import { Badge } from "themelia-ui/base/badge"
|
|
165
|
+
import { Stack } from "themelia-ui/base/structure"
|
|
166
|
+
import { Timeline, type TimelineItem } from "themelia-ui/base/timeline"
|
|
167
|
+
import { MonoValue } from "themelia-ui/primitives"
|
|
168
|
+
|
|
169
|
+
const RELEASES: TimelineItem[] = [
|
|
170
|
+
{
|
|
171
|
+
id: "3.1.0",
|
|
172
|
+
title: "Saved views",
|
|
173
|
+
timestamp: <MonoValue size="xs" type="secondary">v3.1.0</MonoValue>,
|
|
174
|
+
icon: RocketIcon,
|
|
175
|
+
status: "success",
|
|
176
|
+
description: "Filters and columns can be saved and shared with the team.",
|
|
177
|
+
children: (
|
|
178
|
+
<Stack direction="horizontal" gap="sm">
|
|
179
|
+
<Badge tone="success">Added</Badge>
|
|
180
|
+
<Badge tone="neutral">Tables</Badge>
|
|
181
|
+
</Stack>
|
|
182
|
+
),
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
id: "3.0.2",
|
|
186
|
+
title: "Faster exports",
|
|
187
|
+
timestamp: <MonoValue size="xs" type="secondary">v3.0.2</MonoValue>,
|
|
188
|
+
icon: WrenchIcon,
|
|
189
|
+
status: "neutral",
|
|
190
|
+
description: "Large exports stream instead of waiting for the whole file.",
|
|
191
|
+
},
|
|
192
|
+
]
|
|
193
|
+
|
|
194
|
+
export default function ChangelogBlueprint() {
|
|
195
|
+
return (
|
|
196
|
+
<Timeline items={RELEASES} />
|
|
197
|
+
)
|
|
198
|
+
}
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
### Compose your own permissions
|
|
202
|
+
|
|
203
|
+
```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
|
|
204
|
+
import { CheckIcon } from "lucide-react"
|
|
205
|
+
|
|
206
|
+
import { Badge } from "themelia-ui/base/badge"
|
|
207
|
+
import { VisuallyHidden } from "themelia-ui/base/display"
|
|
208
|
+
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "themelia-ui/base/table"
|
|
209
|
+
import { Text } from "themelia-ui/base/typography"
|
|
210
|
+
|
|
211
|
+
const ROLES = ["Owner", "Editor", "Viewer"] as const
|
|
212
|
+
const PERMISSIONS: { name: string; granted: readonly boolean[] }[] = [
|
|
213
|
+
{ name: "Edit projects", granted: [true, true, false] },
|
|
214
|
+
{ name: "Manage billing", granted: [true, false, false] },
|
|
215
|
+
{ name: "Export data", granted: [true, true, true] },
|
|
216
|
+
]
|
|
217
|
+
|
|
218
|
+
export default function RolesBlueprint() {
|
|
219
|
+
return (
|
|
220
|
+
<Table>
|
|
221
|
+
<TableHeader>
|
|
222
|
+
<TableRow>
|
|
223
|
+
<TableHead>Permission</TableHead>
|
|
224
|
+
{ROLES.map((role) => (
|
|
225
|
+
<TableHead key={role} align="center">
|
|
226
|
+
{role}
|
|
227
|
+
</TableHead>
|
|
228
|
+
))}
|
|
229
|
+
</TableRow>
|
|
230
|
+
</TableHeader>
|
|
231
|
+
<TableBody>
|
|
232
|
+
{PERMISSIONS.map((permission) => (
|
|
233
|
+
<TableRow key={permission.name}>
|
|
234
|
+
<TableCell>{permission.name}</TableCell>
|
|
235
|
+
{permission.granted.map((granted, index) => (
|
|
236
|
+
<TableCell key={ROLES[index]} align="center">
|
|
237
|
+
{granted ? (
|
|
238
|
+
<Badge tone="success">
|
|
239
|
+
<CheckIcon aria-hidden />
|
|
240
|
+
<VisuallyHidden>Granted</VisuallyHidden>
|
|
241
|
+
</Badge>
|
|
242
|
+
) : (
|
|
243
|
+
<>
|
|
244
|
+
<Text tag="span" type="secondary" aria-hidden>
|
|
245
|
+
—
|
|
246
|
+
</Text>
|
|
247
|
+
<VisuallyHidden>Not granted</VisuallyHidden>
|
|
248
|
+
</>
|
|
249
|
+
)}
|
|
250
|
+
</TableCell>
|
|
251
|
+
))}
|
|
252
|
+
</TableRow>
|
|
253
|
+
))}
|
|
254
|
+
</TableBody>
|
|
255
|
+
</Table>
|
|
256
|
+
)
|
|
257
|
+
}
|
|
258
|
+
```
|
|
@@ -15,7 +15,6 @@ A multi-select produces a selection whose actions must appear without shifting t
|
|
|
15
15
|
|
|
16
16
|
```tsx fragment — import-only example
|
|
17
17
|
import { BatchActionBar } from "themelia-ui/base/batch-action-bar"
|
|
18
|
-
import "themelia-ui/base/batch-action-bar.css"
|
|
19
18
|
```
|
|
20
19
|
|
|
21
20
|
## Composition
|
|
@@ -98,7 +97,7 @@ const DEMO_BOX: React.CSSProperties = {
|
|
|
98
97
|
transform: "translate(0)",
|
|
99
98
|
minHeight: "12rem",
|
|
100
99
|
width: "100%",
|
|
101
|
-
padding: "var(--
|
|
100
|
+
padding: "var(--padding)",
|
|
102
101
|
border: "var(--border-width) dashed var(--border)",
|
|
103
102
|
borderRadius: "var(--radius)",
|
|
104
103
|
}
|
|
@@ -107,9 +106,9 @@ export default function Floating() {
|
|
|
107
106
|
const [selected, setSelected] = useState(3)
|
|
108
107
|
|
|
109
108
|
return (
|
|
110
|
-
<Stack gap="
|
|
109
|
+
<Stack gap="sm" style={{ width: "100%" }}>
|
|
111
110
|
<Stack direction="horizontal" gap="sm" align="center">
|
|
112
|
-
<Button type="button" tone="neutral"
|
|
111
|
+
<Button type="button" tone="neutral" appearance="outline" onClick={() => setSelected((n) => n + 1)}>
|
|
113
112
|
Select one more
|
|
114
113
|
</Button>
|
|
115
114
|
<Text size="sm" type="secondary">
|
|
@@ -121,10 +120,10 @@ export default function Floating() {
|
|
|
121
120
|
The bar below is contained to this box for the demo. In an app it docks to the viewport.
|
|
122
121
|
</Text>
|
|
123
122
|
<BatchActionBar selectedCount={selected} totalCount={250} onClear={() => setSelected(0)}>
|
|
124
|
-
<Button type="button" tone="neutral"
|
|
123
|
+
<Button type="button" tone="neutral" appearance="ghost">
|
|
125
124
|
Export
|
|
126
125
|
</Button>
|
|
127
|
-
<Button type="button" tone="destructive"
|
|
126
|
+
<Button type="button" tone="destructive" appearance="ghost">
|
|
128
127
|
Delete
|
|
129
128
|
</Button>
|
|
130
129
|
</BatchActionBar>
|
|
@@ -148,7 +147,7 @@ export default function Inline() {
|
|
|
148
147
|
onClear={() => undefined}
|
|
149
148
|
strings={{ label: "Inline batch actions example" }}
|
|
150
149
|
>
|
|
151
|
-
<Button type="button" tone="neutral"
|
|
150
|
+
<Button type="button" tone="neutral" appearance="ghost">
|
|
152
151
|
Assign
|
|
153
152
|
</Button>
|
|
154
153
|
</BatchActionBar>
|