themelia-ui 3.0.0 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/skills/themelia-ui/SKILL.md +60 -33
- package/.agents/skills/themelia-ui/manifest.json +23 -0
- package/.agents/skills/themelia-ui/references/api-compatibility.md +5 -4
- package/.agents/skills/themelia-ui/references/blocks.md +123 -0
- package/.agents/skills/themelia-ui/references/composition-ladder.md +8 -8
- package/.agents/skills/themelia-ui/references/composition.md +100 -19
- package/.agents/skills/themelia-ui/references/forms.md +23 -3
- package/.agents/skills/themelia-ui/references/framework-wiring.md +41 -13
- package/.agents/skills/themelia-ui/references/i18n.md +4 -2
- package/.agents/skills/themelia-ui/references/imports.md +104 -104
- package/.agents/skills/themelia-ui/references/installation.md +60 -31
- package/.agents/skills/themelia-ui/references/migration.md +156 -5
- package/.agents/skills/themelia-ui/references/provider-and-scoping.md +37 -25
- package/.agents/skills/themelia-ui/references/reference-workflows.md +43 -0
- package/.agents/skills/themelia-ui/references/structure-and-spacing.md +147 -0
- package/.agents/skills/themelia-ui/references/theming.md +174 -131
- package/.agents/skills/themelia-ui/references/troubleshooting.md +88 -30
- package/.agents/skills/themelia-ui/references/verification.md +60 -5
- package/CHANGELOG.md +212 -0
- package/README.md +48 -60
- package/dist/accordion-CHuzMmWL.js +143 -0
- package/dist/{action-menu-BNLURfMK.js → action-menu-BwiL_F6I.js} +35 -33
- package/dist/{alert-dialog-BMVo6Z-8.js → alert-dialog-Cg2HhuBe.js} +1 -1
- package/dist/avatar-Dc_BNYfB.js +93 -0
- package/dist/badge-VlJVZjdm.js +45 -0
- package/dist/base/accordion.js +1 -1
- package/dist/base/action-menu.js +1 -1
- package/dist/base/alert-dialog.js +1 -1
- package/dist/base/aspect-ratio.js +3 -1
- package/dist/base/avatar.js +1 -1
- package/dist/base/badge.js +2 -2
- package/dist/base/batch-action-bar.js +1 -1
- package/dist/base/buttons.js +1 -1
- package/dist/base/cards.js +1 -1
- package/dist/base/carousel.js +6 -4
- package/dist/base/chart.js +1 -1
- package/dist/base/choice-inputs.js +1 -1
- package/dist/base/combobox.js +1 -1
- package/dist/base/command.js +1 -1
- package/dist/base/context-menu.js +22 -21
- package/dist/base/copyable.js +1 -1
- package/dist/base/date-pickers.js +1 -1
- package/dist/base/dialog.js +1 -1
- package/dist/base/display.js +1 -1
- package/dist/base/dropdown-menu.js +1 -1
- package/dist/base/feedback.js +1 -1
- package/dist/base/forms-numeric.js +1 -1
- package/dist/base/forms.js +1 -1
- package/dist/base/hover-card.js +26 -23
- package/dist/base/input-group.js +1 -1
- package/dist/base/item.js +1 -1
- package/dist/base/label.js +1 -1
- package/dist/base/menubar.js +20 -14
- package/dist/base/navigation-menu.js +47 -38
- package/dist/base/navigation.js +1 -1
- package/dist/base/otp-input.js +36 -30
- package/dist/base/overlay.js +1 -1
- package/dist/base/popover-menu.js +1 -1
- package/dist/base/popover.js +1 -1
- package/dist/base/qr-code.js +51 -47
- package/dist/base/repeaters.js +1 -1
- package/dist/base/resizable.js +2 -0
- package/dist/base/sheet.js +1 -1
- package/dist/base/sidebar.js +1 -1
- package/dist/base/skeleton.js +1 -1
- package/dist/base/spinner.js +1 -1
- package/dist/base/structure.js +1 -1
- package/dist/base/table.js +1 -1
- package/dist/base/text-inputs.js +1 -1
- package/dist/base/timeline.js +1 -1
- package/dist/base/toaster.js +1 -1
- package/dist/base/toggle.js +21 -15
- package/dist/base/toolbar.js +1 -1
- package/dist/base/tooltip.js +1 -1
- package/dist/base/typography.js +2 -2
- package/dist/base/upload.js +1 -1
- package/dist/base/value-inputs.js +1 -1
- package/dist/{batch-action-bar-BZYNKXdV.js → batch-action-bar-DZVMVW83.js} +11 -8
- package/dist/{admin/patterns → blocks/admin}/access.js +79 -76
- package/dist/blocks/admin/commerce.js +2493 -0
- package/dist/{patterns → blocks}/analytics.js +312 -303
- package/dist/{patterns → blocks}/onboarding.js +27 -23
- package/dist/{patterns → blocks}/timelines.js +1 -1
- package/dist/buttons-BX2JfL5X.js +173 -0
- package/dist/cards-Ddhz43Bz.js +279 -0
- package/dist/chart-BkK3Xm10.js +201 -0
- package/dist/choice-inputs-NwRxvmZN.js +694 -0
- package/dist/combobox-519ubijc.js +292 -0
- package/dist/command-JjApYFds.js +156 -0
- package/dist/comments-CCQ2QRaU.js +1443 -0
- package/dist/components/base/action-menu/action-menu.d.ts +1 -1
- package/dist/components/base/action-menu/action-menu.types.d.ts +2 -2
- package/dist/components/base/avatar/avatar.d.ts +5 -2
- package/dist/components/base/badge/badge.d.ts +10 -10
- package/dist/components/base/badge/badge.variants.d.ts +1 -2
- package/dist/components/base/badge/index.d.ts +1 -2
- package/dist/components/base/buttons/button.d.ts +9 -8
- package/dist/components/base/buttons/button.types.d.ts +2 -2
- package/dist/components/base/buttons/index.d.ts +1 -1
- package/dist/components/base/buttons/text-button.d.ts +1 -1
- package/dist/components/base/cards/card-actions.d.ts +1 -1
- package/dist/components/base/cards/card.d.ts +3 -1
- package/dist/components/base/cards/partials/card-header.d.ts +2 -1
- package/dist/components/base/choice-inputs/choice.types.d.ts +2 -2
- package/dist/components/base/choice-inputs/partials/choice-parts.d.ts +3 -3
- package/dist/components/base/command/command.d.ts +5 -2
- package/dist/components/base/display/icon-badge.d.ts +5 -3
- package/dist/components/base/display/index.d.ts +1 -1
- package/dist/components/base/display/metadata-list.d.ts +6 -6
- package/dist/components/base/display/metadata-value.d.ts +1 -1
- package/dist/components/base/display/separator.d.ts +2 -2
- package/dist/components/base/feedback/alert.d.ts +3 -2
- package/dist/components/base/feedback/empty.d.ts +5 -4
- package/dist/components/base/feedback/progress-circle.d.ts +2 -2
- package/dist/components/base/feedback/progress.d.ts +3 -1
- package/dist/components/base/forms/form-field.d.ts +2 -2
- package/dist/components/base/input-group/input-group.d.ts +8 -10
- package/dist/components/base/item/item.d.ts +2 -2
- package/dist/components/base/overlay/index.d.ts +1 -1
- package/dist/components/base/overlay/overlay.types.d.ts +7 -5
- package/dist/components/base/qr-code/qr-code.d.ts +4 -4
- package/dist/components/base/sheet/sheet.d.ts +1 -1
- package/dist/components/base/sidebar/sidebar.d.ts +9 -13
- package/dist/components/base/spinner/spinner.d.ts +2 -2
- package/dist/components/base/structure/adaptive-grid.d.ts +3 -3
- package/dist/components/base/structure/bleed.d.ts +4 -2
- package/dist/components/base/structure/grid.d.ts +10 -4
- package/dist/components/base/structure/index.d.ts +1 -1
- package/dist/components/base/structure/split.d.ts +4 -3
- package/dist/components/base/structure/stack.d.ts +5 -5
- package/dist/components/base/structure/structure.maps.d.ts +2 -1
- package/dist/components/base/structure/structure.types.d.ts +10 -4
- package/dist/components/base/toggle/toggle.d.ts +2 -2
- package/dist/components/base/toolbar/toolbar.d.ts +3 -3
- package/dist/components/base/typography/index.d.ts +2 -0
- package/dist/components/base/typography/rich-text/rich-text.variants.d.ts +9 -0
- package/dist/components/base/typography/text/index.d.ts +1 -0
- package/dist/components/base/typography/text/text.d.ts +15 -8
- package/dist/components/base/typography/text/text.variants.d.ts +41 -0
- package/dist/components/base/value-inputs/color-input.d.ts +1 -7
- package/dist/components/base/value-inputs/slider.d.ts +2 -7
- package/dist/components/{admin/patterns → blocks/admin}/commerce/vendor-profile.d.ts +2 -1
- package/dist/components/{patterns → blocks}/analytics/analytics.strings.d.ts +2 -5
- package/dist/components/features/actions/action-adapters.d.ts +3 -3
- package/dist/components/features/actions/actions.types.d.ts +3 -5
- package/dist/components/features/actions/index.d.ts +1 -1
- package/dist/components/features/activities/activities-feed.d.ts +1 -1
- package/dist/components/features/activities/activities.types.d.ts +4 -4
- package/dist/components/features/activities/activity-parts.d.ts +3 -3
- package/dist/components/features/activities/activity-row.d.ts +4 -4
- package/dist/components/features/activities/index.d.ts +1 -1
- package/dist/components/features/ai-chat/ai-chat.types.d.ts +10 -3
- package/dist/components/features/ai-chat/ai-message-surfaces.d.ts +1 -1
- package/dist/components/features/ai-chat/ai-work-surfaces.d.ts +1 -1
- package/dist/components/features/combobox/combobox.strings.d.ts +2 -2
- package/dist/components/features/combobox/fetching-combobox.d.ts +2 -1
- package/dist/components/features/combobox/resource-combobox.d.ts +3 -0
- package/dist/components/features/combobox/use-suggestions.d.ts +7 -0
- package/dist/components/features/event-calendar/event-calendar.types.d.ts +3 -0
- package/dist/components/features/media-library/index.d.ts +1 -1
- package/dist/components/features/media-library/media-library-parts.d.ts +4 -3
- package/dist/components/features/media-library/media-library-views.d.ts +4 -3
- package/dist/components/features/media-library/media-library.d.ts +1 -1
- package/dist/components/features/media-library/media-library.strings.d.ts +12 -13
- package/dist/components/features/media-library/media-library.types.d.ts +11 -9
- package/dist/components/features/media-library/media-resource-gallery.d.ts +1 -1
- package/dist/components/features/media-library/use-media-library.d.ts +1 -4
- package/dist/components/features/overlays/action-overlay-frame.d.ts +1 -1
- package/dist/components/features/overlays/index.d.ts +1 -1
- package/dist/components/features/overlays/overlay-parts.d.ts +3 -3
- package/dist/components/features/overlays/overlays.types.d.ts +8 -7
- package/dist/components/features/rich-text-editor/index.d.ts +0 -1
- package/dist/components/features/table/data-table-body.d.ts +1 -1
- package/dist/components/features/table/data-table-expanded-row.d.ts +27 -0
- package/dist/components/features/table/data-table-header.d.ts +1 -1
- package/dist/components/features/table/data-table-size.d.ts +1 -1
- package/dist/components/features/table/data-table.d.ts +1 -1
- package/dist/components/features/table/index.d.ts +1 -1
- package/dist/components/features/table/table-helpers.d.ts +9 -3
- package/dist/components/features/table/table.strings.d.ts +11 -0
- package/dist/components/features/table/table.types.d.ts +60 -2
- package/dist/components/features/theme-tweaker/index.d.ts +1 -1
- package/dist/components/features/theme-tweaker/theme-tweaker.strings.d.ts +1 -1
- package/dist/components/features/theme-tweaker/theme-tweaker.types.d.ts +6 -10
- package/dist/components/features/theme-tweaker/theme-tweaker.utils.d.ts +22 -6
- package/dist/components/layout/app-shell/topbar-sidebar-layout.d.ts +1 -1
- package/dist/components/layout/auth/auth.d.ts +1 -1
- package/dist/components/layout/auth/auth.types.d.ts +1 -1
- package/dist/components/primitives/value.d.ts +3 -1
- package/dist/containers-B8d8U9GS.js +2 -0
- package/dist/{copyable-H1TUEY-H.js → copyable-D9Okb1w6.js} +12 -11
- package/dist/core.css +2 -2
- package/dist/css/access.css +2 -1
- package/dist/css/accordion.css +2 -1
- package/dist/css/action-menu.css +2 -1
- package/dist/css/activities.css +2 -1
- package/dist/css/ai-chat.css +2 -1
- package/dist/css/analytics.css +2 -1
- package/dist/css/app-shell.css +2 -1
- package/dist/css/aspect-ratio.css +2 -1
- package/dist/css/async-preview.css +2 -1
- package/dist/css/auth.css +2 -1
- package/dist/css/avatar.css +2 -1
- package/dist/css/badge.css +2 -1
- package/dist/css/batch-action-bar.css +2 -1
- package/dist/css/buttons.css +2 -1
- package/dist/css/cards.css +2 -1
- package/dist/css/carousel.css +2 -1
- package/dist/css/chart.css +2 -1
- package/dist/css/choice-inputs.css +2 -1
- package/dist/css/combobox.css +2 -1
- package/dist/css/combobox2.css +2 -1
- package/dist/css/command.css +2 -1
- package/dist/css/comments.css +2 -1
- package/dist/css/commerce.css +2 -1
- package/dist/css/containers.css +2 -1
- package/dist/css/copyable.css +2 -1
- package/dist/css/data-view.css +2 -1
- package/dist/css/date-pickers.css +2 -1
- package/dist/css/display.css +2 -1
- package/dist/css/dropdown-menu.css +2 -1
- package/dist/css/event-calendar.css +2 -1
- package/dist/css/feedback.css +2 -1
- package/dist/css/filters.css +2 -1
- package/dist/css/forms-numeric.css +2 -1
- package/dist/css/forms.css +2 -1
- package/dist/css/global-search.css +2 -1
- package/dist/css/header.css +2 -1
- package/dist/css/hover-card.css +2 -1
- package/dist/css/input-group.css +2 -1
- package/dist/css/item.css +2 -1
- package/dist/css/kanban.css +2 -1
- package/dist/css/label.css +2 -1
- package/dist/css/map.css +2 -1
- package/dist/css/media-library.css +2 -1
- package/dist/css/mentions.css +2 -1
- package/dist/css/menubar.css +2 -1
- package/dist/css/navigation-menu.css +2 -1
- package/dist/css/navigation.css +2 -1
- package/dist/css/navigation2.css +2 -1
- package/dist/css/onboarding.css +2 -1
- package/dist/css/otp-input.css +2 -1
- package/dist/css/overlay.css +2 -1
- package/dist/css/overlays.css +2 -1
- package/dist/css/page.css +2 -1
- package/dist/css/popover-menu.css +2 -1
- package/dist/css/popover.css +2 -1
- package/dist/css/primitives.css +2 -1
- package/dist/css/products.css +2 -1
- package/dist/css/qr-code.css +2 -1
- package/dist/css/repeaters.css +2 -1
- package/dist/css/resizable.css +2 -1
- package/dist/css/resource-assignment.css +2 -1
- package/dist/css/resource.css +2 -1
- package/dist/css/rich-text-editor.css +2 -1
- package/dist/css/schema-form.css +2 -1
- package/dist/css/sidebar.css +2 -1
- package/dist/css/sidebar2.css +2 -1
- package/dist/css/skeleton.css +2 -1
- package/dist/css/spinner.css +2 -1
- package/dist/css/structure.css +2 -1
- package/dist/css/sync.css +2 -1
- package/dist/css/table.css +2 -1
- package/dist/css/table2.css +2 -1
- package/dist/css/text-inputs.css +2 -1
- package/dist/css/theme-tweaker.css +2 -1
- package/dist/css/timeline.css +2 -1
- package/dist/css/timelines.css +2 -1
- package/dist/css/toaster.css +2 -1
- package/dist/css/toggle.css +2 -1
- package/dist/css/toolbar.css +2 -1
- package/dist/css/tooltip.css +2 -1
- package/dist/css/typography.css +2 -1
- package/dist/css/upload.css +2 -1
- package/dist/css/value-inputs.css +2 -1
- package/dist/css/workspace.css +2 -1
- package/dist/css-graph.json +1027 -0
- package/dist/date-pickers-BwCwKIVM.js +685 -0
- package/dist/{dialog-CtFCuTUF.js → dialog-CAnwRNrm.js} +1 -1
- package/dist/display-a7AoX_u7.js +664 -0
- package/dist/dropdown-menu-Br8kvjrF.js +235 -0
- package/dist/empty.js +0 -0
- package/dist/features/actions.js +6 -6
- package/dist/features/activities.js +219 -216
- package/dist/features/ai-chat.js +593 -565
- package/dist/features/async-preview.js +105 -286
- package/dist/features/combobox.js +328 -314
- package/dist/features/comments.js +1 -1
- package/dist/features/data-view.js +56 -55
- package/dist/features/event-calendar.js +189 -185
- package/dist/features/filters.js +1 -1
- package/dist/features/global-search.js +259 -260
- package/dist/features/kanban.js +39 -37
- package/dist/features/map.js +357 -354
- package/dist/features/media-library.js +931 -931
- package/dist/features/mentions.js +1 -1
- package/dist/features/overlays.js +1 -1
- package/dist/features/products.js +950 -942
- package/dist/features/resource-assignment.js +39 -37
- package/dist/features/resource.js +70 -71
- package/dist/features/rich-text-editor.js +2 -2
- package/dist/features/schema-form.js +342 -338
- package/dist/features/sync.js +14 -12
- package/dist/features/table.js +1 -1
- package/dist/features/theme-tweaker.js +1002 -962
- package/dist/feedback-D4qVsKlD.js +430 -0
- package/dist/{filters-DOLKRSmb.js → filters-BhsTkWpZ.js} +386 -383
- package/dist/forms-C0WeNPFF.js +250 -0
- package/dist/forms-numeric-IwQ1ltNf.js +582 -0
- package/dist/hooks/use-native-dialog.d.ts +1 -1
- package/dist/index.js +2 -2
- package/dist/input-group-HS_Z0Ei_.js +119 -0
- package/dist/item-M2pmpWXh.js +150 -0
- package/dist/{label-DumoMDm6.js → label-HOBXAscw.js} +7 -5
- package/dist/layout/app-shell.js +4 -2
- package/dist/layout/auth.js +102 -100
- package/dist/layout/header.js +190 -180
- package/dist/layout/navigation.js +1 -1
- package/dist/layout/page.js +18 -16
- package/dist/layout/settings.js +2 -2
- package/dist/layout/sidebar.js +50 -46
- package/dist/layout/workspace.js +71 -69
- package/dist/lib/action-presentation.d.ts +3 -3
- package/dist/lib/component-vocabulary.d.ts +2 -2
- package/dist/lib/css-length.d.ts +2 -0
- package/dist/lib/responsive.d.ts +1 -1
- package/dist/lib/theming/index.d.ts +1 -0
- package/dist/lib/theming/recipes.d.ts +2 -2
- package/dist/lib/theming/themes/dense.d.ts +3 -0
- package/dist/lib/theming/themes/editorial.d.ts +3 -0
- package/dist/lib/theming/themes/index.d.ts +8 -0
- package/dist/lib/theming/themes/pair.d.ts +7 -0
- package/dist/lib/theming/themes/sharp.d.ts +3 -0
- package/dist/lib/theming/themes/soft.d.ts +3 -0
- package/dist/lib/theming/themes/types.d.ts +12 -0
- package/dist/lib/ui-provider/index.d.ts +1 -1
- package/dist/lib/ui-provider/scope.d.ts +5 -8
- package/dist/lib/ui-provider/tokens.d.ts +11 -3
- package/dist/lib/ui-provider/tokens.generated.d.ts +6 -4
- package/dist/lib/ui-provider/types.d.ts +17 -19
- package/dist/lib/ui-provider/ui-scope.d.ts +1 -1
- package/dist/{mentions-BbsEHlcH.js → mentions-BOxbigwp.js} +113 -111
- package/dist/navigation-Bgu7Vc0M.js +622 -0
- package/dist/navigation-DiYACqpE.js +216 -0
- package/dist/overlay-BuQOl8aP.js +356 -0
- package/dist/{overlays-DvVoS3td.js → overlays-1sULyytH.js} +77 -75
- package/dist/popover-CA7SP_iz.js +127 -0
- package/dist/popover-menu-QXgQeWeG.js +192 -0
- package/dist/{primitives-D0bdDozz.js → primitives-BskKlf35.js} +181 -178
- package/dist/primitives.js +1 -1
- package/dist/profiles/admin.json +6 -36
- package/dist/profiles/general.json +6 -96
- package/dist/repeaters-CeH20dvr.js +445 -0
- package/dist/rich-text-editor-D_Ppm8yh.js +491 -0
- package/dist/{sheet-CKcmRbJ9.js → sheet-CJ1-OAla.js} +3 -3
- package/dist/sidebar-D8uGqxio.js +421 -0
- package/dist/skeleton-BTKNKTdj.js +173 -0
- package/dist/spinner-Tc1QCnxM.js +30 -0
- package/dist/{structure-D0WGQAP3.js → structure-CynEZ-OY.js} +15 -23
- package/dist/style.css +1 -1
- package/dist/styles/TOKENS.md +116 -275
- package/dist/styles/animation.css +114 -0
- package/dist/styles/base.css +7 -6
- package/dist/styles/fields.css +45 -63
- package/dist/styles/focus.css +12 -0
- package/dist/styles/forced-colors.css +11 -10
- package/dist/styles/index.css +23 -30
- package/dist/styles/map.css +45 -34
- package/dist/styles/mentions.css +14 -52
- package/dist/styles/overlays.css +7 -7
- package/dist/styles/tailwind.css +76 -127
- package/dist/styles/targets.css +3 -3
- package/dist/styles/theme/colour.css +86 -0
- package/dist/styles/theme/density.css +31 -0
- package/dist/styles/theme/elevation.css +9 -0
- package/dist/styles/theme/layout.css +18 -0
- package/dist/styles/theme/motion.css +18 -0
- package/dist/styles/theme/shape.css +12 -0
- package/dist/styles/theme/size.css +10 -0
- package/dist/styles/theme/spacing.css +11 -0
- package/dist/styles/theme/typography.css +20 -0
- package/dist/styles/tone.css +61 -0
- package/dist/table-B7dtIFUx.js +1262 -0
- package/dist/table-Ds_eO9av.js +191 -0
- package/dist/tailwind.css +76 -127
- package/dist/text-inputs-BboE77nZ.js +395 -0
- package/dist/theming-C5ygF5uf.js +292 -0
- package/dist/theming.js +2 -2
- package/dist/{timeline-BdaGRyj-.js → timeline-BR_jNgvz.js} +57 -49
- package/dist/{timelines-BB7550mz.js → timelines-DXG1BfIN.js} +69 -67
- package/dist/{toaster-bBMgXm8z.js → toaster-CXL8L7Mm.js} +106 -99
- package/dist/tokens.json +1027 -636
- package/dist/toolbar-DBK-c4yy.js +74 -0
- package/dist/tooltip-BPYP-jUm.js +76 -0
- package/dist/{typography-BkxEiwQ1.js → typography-DmeR05Er.js} +87 -53
- package/dist/{ui-provider-Cmoq6i_D.js → ui-provider-DpzLUD12.js} +117 -69
- package/dist/ui-provider.js +1 -1
- package/dist/upload-CYuoJykZ.js +968 -0
- package/dist/use-async-preview-BFwf9ElY.js +188 -0
- package/dist/value-inputs-ng8aVJJZ.js +728 -0
- package/docs/README.md +13 -3
- package/docs/build/browser-composition-fixture.ts +28 -0
- package/docs/build/recipes.md +11484 -10723
- package/docs/generated/component-index.json +9809 -9169
- package/docs/generated/components/INDEX.md +5 -5
- package/docs/generated/components/base--accordion.md +51 -2
- package/docs/generated/components/base--action-menu.md +14 -15
- package/docs/generated/components/base--alert-dialog.md +3 -4
- package/docs/generated/components/base--aspect-ratio.md +3 -4
- package/docs/generated/components/base--avatar.md +7 -7
- package/docs/generated/components/base--badge.md +159 -27
- package/docs/generated/components/base--batch-action-bar.md +6 -7
- package/docs/generated/components/base--buttons.md +151 -47
- package/docs/generated/components/base--cards.md +107 -14
- package/docs/generated/components/base--carousel.md +1 -2
- package/docs/generated/components/base--chart.md +44 -8
- package/docs/generated/components/base--choice-inputs.md +10 -11
- package/docs/generated/components/base--combobox.md +3 -4
- package/docs/generated/components/base--command.md +6 -6
- package/docs/generated/components/base--context-menu.md +1 -2
- package/docs/generated/components/base--copyable.md +6 -7
- package/docs/generated/components/base--date-pickers.md +6 -7
- package/docs/generated/components/base--dialog.md +6 -7
- package/docs/generated/components/base--direction.md +1 -1
- package/docs/generated/components/base--display.md +234 -54
- package/docs/generated/components/base--dropdown-menu.md +6 -7
- package/docs/generated/components/base--feedback.md +71 -18
- package/docs/generated/components/base--forms-numeric.md +6 -7
- package/docs/generated/components/base--forms.md +84 -14
- package/docs/generated/components/base--hover-card.md +3 -4
- package/docs/generated/components/base--input-group.md +27 -30
- package/docs/generated/components/base--item.md +8 -9
- package/docs/generated/components/base--label.md +2 -3
- package/docs/generated/components/base--menubar.md +2 -4
- package/docs/generated/components/base--navigation-menu.md +2 -3
- package/docs/generated/components/base--navigation.md +2 -3
- package/docs/generated/components/base--otp-input.md +3 -4
- package/docs/generated/components/base--overlay.md +56 -47
- package/docs/generated/components/base--popover-menu.md +7 -8
- package/docs/generated/components/base--popover.md +9 -10
- package/docs/generated/components/base--qr-code.md +7 -8
- package/docs/generated/components/base--repeaters.md +6 -7
- package/docs/generated/components/base--resizable.md +2 -3
- package/docs/generated/components/base--sheet.md +12 -13
- package/docs/generated/components/base--sidebar.md +9 -11
- package/docs/generated/components/base--skeleton.md +6 -7
- package/docs/generated/components/base--slot.md +1 -1
- package/docs/generated/components/base--spinner.md +5 -7
- package/docs/generated/components/base--structure.md +320 -70
- package/docs/generated/components/base--table.md +61 -3
- package/docs/generated/components/base--text-inputs.md +17 -18
- package/docs/generated/components/base--timeline.md +45 -4
- package/docs/generated/components/base--toaster.md +43 -12
- package/docs/generated/components/base--toggle.md +11 -12
- package/docs/generated/components/base--toolbar.md +7 -8
- package/docs/generated/components/base--tooltip.md +5 -6
- package/docs/generated/components/base--typography.md +317 -32
- package/docs/generated/components/base--upload.md +8 -9
- package/docs/generated/components/base--value-inputs.md +9 -38
- package/docs/generated/components/{admin--patterns--access.md → blocks--admin--access.md} +15 -6
- package/docs/generated/components/{admin--patterns--commerce.md → blocks--admin--commerce.md} +40 -41
- package/docs/generated/components/{patterns--analytics.md → blocks--analytics.md} +57 -14
- package/docs/generated/components/{patterns--onboarding.md → blocks--onboarding.md} +6 -7
- package/docs/generated/components/{patterns--timelines.md → blocks--timelines.md} +6 -7
- package/docs/generated/components/features--actions.md +8 -18
- package/docs/generated/components/features--activities.md +31 -32
- package/docs/generated/components/features--ai-chat.md +15 -15
- package/docs/generated/components/features--async-preview.md +5 -6
- package/docs/generated/components/features--combobox.md +71 -5
- package/docs/generated/components/features--comments.md +0 -1
- package/docs/generated/components/features--data-view.md +63 -8
- package/docs/generated/components/features--event-calendar.md +1 -2
- package/docs/generated/components/features--filters.md +11 -2
- package/docs/generated/components/features--global-search.md +1 -2
- package/docs/generated/components/features--kanban.md +1 -2
- package/docs/generated/components/features--map.md +1 -2
- package/docs/generated/components/features--media-library.md +105 -38
- package/docs/generated/components/features--mentions.md +7 -7
- package/docs/generated/components/features--overlays.md +75 -22
- package/docs/generated/components/features--products.md +10 -11
- package/docs/generated/components/features--resource-assignment.md +2 -3
- package/docs/generated/components/features--resource.md +3 -4
- package/docs/generated/components/features--rich-text-editor.md +42 -13
- package/docs/generated/components/features--schema-form.md +1 -2
- package/docs/generated/components/features--sync.md +2 -3
- package/docs/generated/components/features--table.md +162 -12
- package/docs/generated/components/features--theme-tweaker.md +30 -15
- package/docs/generated/components/forms.md +2 -2
- package/docs/generated/components/layout--app-shell.md +41 -11
- package/docs/generated/components/layout--auth.md +8 -9
- package/docs/generated/components/layout--containers.md +40 -1
- package/docs/generated/components/layout--header.md +2 -3
- package/docs/generated/components/layout--navigation.md +0 -1
- package/docs/generated/components/layout--page.md +33 -5
- package/docs/generated/components/layout--settings.md +0 -1
- package/docs/generated/components/layout--sidebar.md +47 -7
- package/docs/generated/components/layout--workspace.md +3 -4
- package/docs/generated/components/primitives.md +128 -17
- package/docs/generated/components/theming.md +147 -4
- package/docs/generated/components/ui-provider.md +96 -78
- package/docs/generated/composition-ladder.md +8 -8
- package/docs/generated/consumer-contract.json +5736 -0
- package/docs/generated/imports.md +104 -104
- package/docs/generated/migration-broad-imports.json +267 -90
- package/docs/generated/migration-broad-imports.md +266 -101
- package/docs/generated/migration-codemod.json +365 -70
- package/docs/generated/migration.md +665 -95
- package/docs/generated/profiles.md +27 -27
- package/docs/generated/public-api.md +104 -102
- package/docs/generated/recipes.json +755 -810
- package/docs/generated/workflows/communications-overview/analytics/communications-reference.tsx +19 -0
- package/docs/generated/workflows/index.json +691 -0
- package/docs/generated/workflows/media-picking/media-library/media-picking-reference.tsx +63 -0
- package/docs/generated/workflows/media-picking/media-library/reference-data.ts +3 -0
- package/docs/generated/workflows/multi-section-form/form-workflow/multi-section-reference.tsx +46 -0
- package/docs/generated/workflows/nested-action-flow/action-overlays/nested-action-reference.tsx +39 -0
- package/docs/generated/workflows/record-detail/page-layout/record-detail-reference.tsx +24 -0
- package/docs/generated/workflows/resource-index/data-view/resource-index-reference.tsx +51 -0
- package/docs/generated/workflows/scoped-resource-selection/combobox/scoped-resource-reference.tsx +50 -0
- package/docs/generated/workflows/website-content-editor/media-library/reference-data.ts +3 -0
- package/docs/generated/workflows/website-content-editor/rich-text-editor/website-content-reference.tsx +33 -0
- package/docs/generated/workflows/workspace-navigation/app-shell/workspace-navigation-reference.tsx +26 -0
- package/docs/learn/api-compatibility.md +5 -4
- package/docs/learn/blocks.md +123 -0
- package/docs/learn/composition.md +100 -19
- package/docs/learn/forms.md +23 -3
- package/docs/learn/framework-wiring.md +41 -13
- package/docs/learn/i18n.md +4 -2
- package/docs/learn/installation.md +60 -31
- package/docs/learn/migration.md +156 -5
- package/docs/learn/provider-and-scoping.md +37 -25
- package/docs/learn/reference-workflows.md +43 -0
- package/docs/learn/structure-and-spacing.md +147 -0
- package/docs/learn/theming.md +174 -131
- package/docs/learn/troubleshooting.md +88 -30
- package/docs/learn/verification.md +60 -5
- package/package.json +42 -473
- package/scripts/consumer/codemod.mjs +50 -32
- package/scripts/consumer/contract-reader.mjs +42 -0
- package/scripts/consumer/css-scan.mjs +51 -0
- package/scripts/consumer/diagnose.mjs +136 -0
- package/scripts/consumer/find-component.mjs +30 -17
- package/scripts/consumer/install-skill.mjs +93 -11
- package/src/styles/TOKENS.md +116 -275
- package/dist/accordion-6YPJ9XRO.js +0 -135
- package/dist/admin/patterns/access.css +0 -15
- package/dist/admin/patterns/commerce.css +0 -29
- package/dist/admin/patterns/commerce.js +0 -2493
- package/dist/avatar-CS7zow2q.js +0 -85
- package/dist/badge-CxOuTfVr.js +0 -63
- package/dist/base/accordion.css +0 -3
- package/dist/base/action-menu.css +0 -6
- package/dist/base/alert-dialog.css +0 -4
- package/dist/base/aspect-ratio.css +0 -2
- package/dist/base/avatar.css +0 -4
- package/dist/base/badge.css +0 -2
- package/dist/base/batch-action-bar.css +0 -5
- package/dist/base/buttons.css +0 -4
- package/dist/base/cards.css +0 -13
- package/dist/base/carousel.css +0 -5
- package/dist/base/chart.css +0 -2
- package/dist/base/choice-inputs.css +0 -10
- package/dist/base/combobox.css +0 -3
- package/dist/base/command.css +0 -9
- package/dist/base/context-menu.css +0 -2
- package/dist/base/copyable.css +0 -6
- package/dist/base/date-pickers.css +0 -11
- package/dist/base/dialog.css +0 -4
- package/dist/base/display.css +0 -8
- package/dist/base/dropdown-menu.css +0 -2
- package/dist/base/feedback.css +0 -5
- package/dist/base/forms-numeric.css +0 -12
- package/dist/base/forms.css +0 -14
- package/dist/base/hover-card.css +0 -2
- package/dist/base/input-group.css +0 -6
- package/dist/base/item.css +0 -9
- package/dist/base/label.css +0 -3
- package/dist/base/menubar.css +0 -2
- package/dist/base/navigation-menu.css +0 -2
- package/dist/base/navigation.css +0 -12
- package/dist/base/otp-input.css +0 -9
- package/dist/base/overlay.css +0 -4
- package/dist/base/popover-menu.css +0 -11
- package/dist/base/popover.css +0 -3
- package/dist/base/qr-code.css +0 -2
- package/dist/base/repeaters.css +0 -18
- package/dist/base/resizable.css +0 -2
- package/dist/base/sheet.css +0 -4
- package/dist/base/sidebar.css +0 -12
- package/dist/base/skeleton.css +0 -9
- package/dist/base/spinner.css +0 -2
- package/dist/base/structure.css +0 -2
- package/dist/base/table.css +0 -3
- package/dist/base/text-inputs.css +0 -2
- package/dist/base/timeline.css +0 -9
- package/dist/base/toaster.css +0 -2
- package/dist/base/toggle.css +0 -2
- package/dist/base/toolbar.css +0 -5
- package/dist/base/tooltip.css +0 -2
- package/dist/base/typography.css +0 -2
- package/dist/base/upload.css +0 -10
- package/dist/base/value-inputs.css +0 -14
- package/dist/buttons-CqXKWty3.js +0 -179
- package/dist/cards-C6Ulbkw7.js +0 -271
- package/dist/chart-nomhJ87z.js +0 -193
- package/dist/choice-inputs-OUDn0kQw.js +0 -680
- package/dist/combobox-C8oP92bT.js +0 -266
- package/dist/command-Bp3B6pUu.js +0 -143
- package/dist/comments-CAnDlyXO.js +0 -1438
- package/dist/components/admin/patterns/index.d.ts +0 -2
- package/dist/components/features/rich-text-editor/exec-command-engine.d.ts +0 -2
- package/dist/components/patterns/index.d.ts +0 -3
- package/dist/css/styles.css +0 -1
- package/dist/date-pickers-DOwIT-Nk.js +0 -661
- package/dist/display-B3Q17h5z.js +0 -645
- package/dist/dropdown-menu-TyNLCLML.js +0 -223
- package/dist/features/actions.css +0 -11
- package/dist/features/activities.css +0 -25
- package/dist/features/ai-chat.css +0 -14
- package/dist/features/async-preview.css +0 -10
- package/dist/features/combobox.css +0 -12
- package/dist/features/comments.css +0 -24
- package/dist/features/data-view.css +0 -31
- package/dist/features/event-calendar.css +0 -17
- package/dist/features/filters.css +0 -24
- package/dist/features/global-search.css +0 -19
- package/dist/features/kanban.css +0 -7
- package/dist/features/map.css +0 -15
- package/dist/features/media-library.css +0 -27
- package/dist/features/mentions.css +0 -17
- package/dist/features/overlays.css +0 -11
- package/dist/features/products.css +0 -29
- package/dist/features/resource-assignment.css +0 -14
- package/dist/features/resource.css +0 -15
- package/dist/features/rich-text-editor.css +0 -8
- package/dist/features/schema-form.css +0 -22
- package/dist/features/sync.css +0 -11
- package/dist/features/table.css +0 -20
- package/dist/features/theme-tweaker.css +0 -27
- package/dist/feedback-DRerHGuV.js +0 -469
- package/dist/forms-CPrGGif_.js +0 -242
- package/dist/forms-numeric-CPVsL7Vf.js +0 -569
- package/dist/index.css +0 -3
- package/dist/input-group-BYe0rhoB.js +0 -126
- package/dist/item-B3yQ26as.js +0 -146
- package/dist/layout/app-shell.css +0 -13
- package/dist/layout/auth.css +0 -14
- package/dist/layout/containers.css +0 -2
- package/dist/layout/header.css +0 -20
- package/dist/layout/navigation.css +0 -11
- package/dist/layout/page.css +0 -15
- package/dist/layout/settings.css +0 -16
- package/dist/layout/sidebar.css +0 -16
- package/dist/layout/workspace.css +0 -15
- package/dist/navigation-CsqTA16F.js +0 -614
- package/dist/navigation-DzxzPuwg.js +0 -202
- package/dist/overlay-WQOsLd69.js +0 -345
- package/dist/patterns/analytics.css +0 -15
- package/dist/patterns/onboarding.css +0 -11
- package/dist/patterns/timelines.css +0 -11
- package/dist/popover-DriLnIFc.js +0 -123
- package/dist/popover-menu-C2UCMAe7.js +0 -189
- package/dist/primitives.css +0 -3
- package/dist/repeaters-DuP1N0nw.js +0 -438
- package/dist/rich-text-editor-BQXFe9oN.js +0 -595
- package/dist/sidebar-D0N6ckJL.js +0 -412
- package/dist/skeleton-DGR9df28.js +0 -172
- package/dist/spinner-CUAVFecI.js +0 -52
- package/dist/styles/FACTORS.md +0 -36
- package/dist/styles/SCOPES.md +0 -86
- package/dist/styles/themes/default.css +0 -164
- package/dist/styles/theming/animation.css +0 -143
- package/dist/styles/theming/colors.css +0 -97
- package/dist/styles/theming/feedback.css +0 -17
- package/dist/styles/theming/field.css +0 -21
- package/dist/styles/theming/focus.css +0 -88
- package/dist/styles/theming/layers.css +0 -13
- package/dist/styles/theming/layout.css +0 -21
- package/dist/styles/theming/motion.css +0 -42
- package/dist/styles/theming/overlay.css +0 -52
- package/dist/styles/theming/sizing.css +0 -118
- package/dist/styles/theming/text.css +0 -30
- package/dist/styles/theming/typography.css +0 -26
- package/dist/styles/tokens/components.css +0 -22
- package/dist/styles/tokens/foundation.css +0 -80
- package/dist/styles/tokens/layout.css +0 -19
- package/dist/styles/tokens/palette.css +0 -88
- package/dist/styles/tokens/primitives.css +0 -18
- package/dist/styles/tokens/states.css +0 -77
- package/dist/table-BC4qqsUb.js +0 -180
- package/dist/table-BHDpjajL.js +0 -982
- package/dist/text-inputs-DF_lD7pA.js +0 -385
- package/dist/theming-D6KRU7hO.js +0 -104
- package/dist/toolbar-DWRywF0R.js +0 -68
- package/dist/tooltip-t1VQQ2tZ.js +0 -73
- package/dist/upload-B38YZeFJ.js +0 -938
- package/dist/value-inputs-Q4ymjXlV.js +0 -716
- package/src/styles/FACTORS.md +0 -36
- package/src/styles/SCOPES.md +0 -86
- /package/dist/components/{admin/patterns → blocks/admin}/access/admin.strings.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/access/credential-list.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/access/index.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/access/role-permissions.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/access/sensitive-action.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/account.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/address-lines.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/booking.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/cart.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/commerce.strings.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/commerce.types.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/format-amount.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/index.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/inventory-section.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/invoice.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/loyalty.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/order-customer.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/order-detail.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/order-line-item.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/order-transactions.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/order.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/seo-listing.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/seo-score.d.ts +0 -0
- /package/dist/components/{admin/patterns → blocks/admin}/commerce/summary-panel.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/analytics/activity-heatmap.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/analytics/analytics.types.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/analytics/chart-card.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/analytics/format-metric-value.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/analytics/index.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/analytics/metric-bar.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/analytics/metric-comparison.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/analytics/metric-gradient.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/analytics/metric-grid.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/analytics/metric-micro-grid.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/analytics/metric-skeleton.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/analytics/metric-trend-chip.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/analytics/metric.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/analytics/time-ruler.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/onboarding/checklist.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/onboarding/index.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/onboarding/onboarding.strings.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/timelines/changelog-timeline.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/timelines/index.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/timelines/milestones-timeline.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/timelines/steps.d.ts +0 -0
- /package/dist/components/{patterns → blocks}/timelines/timelines.strings.d.ts +0 -0
- /package/dist/styles/{theming/breakpoints.css → breakpoints.css} +0 -0
|
@@ -15,7 +15,6 @@ Rendering library-owned copy in a role — heading, body, label, link or sanitiz
|
|
|
15
15
|
|
|
16
16
|
```tsx fragment — import-only example
|
|
17
17
|
import { DisplayLabel } from "themelia-ui/base/typography"
|
|
18
|
-
import "themelia-ui/base/typography.css"
|
|
19
18
|
```
|
|
20
19
|
|
|
21
20
|
## Composition
|
|
@@ -95,6 +94,20 @@ script or event handlers into the page.
|
|
|
95
94
|
({ html, children, size, type, align, weight, lineHeight, tag, className, ...props }: RichTextProps) => import("react").JSX.Element | null
|
|
96
95
|
```
|
|
97
96
|
|
|
97
|
+
### `richTextClassName`
|
|
98
|
+
|
|
99
|
+
Kind: callable.
|
|
100
|
+
|
|
101
|
+
RichText's prose surface and type for an element RichText cannot render: an editor's
|
|
102
|
+
content-editable root, which its library creates. The leading defaults to `relaxed`, as on
|
|
103
|
+
RichText, so a body reads the same while it is edited and once it is posted.
|
|
104
|
+
|
|
105
|
+
editor.root.className = richTextClassName()
|
|
106
|
+
|
|
107
|
+
```text
|
|
108
|
+
({ lineHeight, ...options }?: TextClassNameOptions) => string
|
|
109
|
+
```
|
|
110
|
+
|
|
98
111
|
### `RichTextProps`
|
|
99
112
|
|
|
100
113
|
Kind: interface.
|
|
@@ -138,6 +151,38 @@ Kind: type.
|
|
|
138
151
|
"left" | "center" | "right"
|
|
139
152
|
```
|
|
140
153
|
|
|
154
|
+
### `textClassName`
|
|
155
|
+
|
|
156
|
+
Kind: callable.
|
|
157
|
+
|
|
158
|
+
Text's classes for an element Text cannot wrap: a native control's value, a button's label,
|
|
159
|
+
a table cell. One implementation of type, so a size or weight here is the same one Text
|
|
160
|
+
renders.
|
|
161
|
+
|
|
162
|
+
<button className={cx(styles.trigger, textClassName({ size: "sm", weight: "medium" }))}>
|
|
163
|
+
|
|
164
|
+
```text
|
|
165
|
+
({ size, ...options }?: TextClassNameOptions) => string
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### `TextClassNameOptions`
|
|
169
|
+
|
|
170
|
+
Kind: interface.
|
|
171
|
+
|
|
172
|
+
What `textClassName` takes: Text's props, without the element and the content.
|
|
173
|
+
|
|
174
|
+
| member | required | type | description / documented default |
|
|
175
|
+
| --- | :-: | --- | --- |
|
|
176
|
+
| `size` | no | `TextSize \| "default"` | Step on the type scale; unset, the provider's default size. |
|
|
177
|
+
| `weight` | no | `TextWeight` | |
|
|
178
|
+
| `lineHeight` | no | `TextLineHeight` | |
|
|
179
|
+
| `type` | no | `TextType` | Unset, no colour: the element keeps whatever colour its own rules give it. |
|
|
180
|
+
| `numeric` | no | `boolean` | |
|
|
181
|
+
| `truncate` | no | `boolean` | |
|
|
182
|
+
| `mono` | no | `boolean` | |
|
|
183
|
+
| `heading` | no | `boolean` | |
|
|
184
|
+
| `caps` | no | `boolean` | |
|
|
185
|
+
|
|
141
186
|
### `TextLineHeight`
|
|
142
187
|
|
|
143
188
|
Kind: type.
|
|
@@ -174,12 +219,15 @@ Extends: `Omit<React.HTMLAttributes<HTMLElement>, "children">`, `Pick<Partial<Re
|
|
|
174
219
|
| --- | :-: | --- | --- |
|
|
175
220
|
| `content` | no | `string` | Text as a plain string. Equivalent to passing it as `children`. |
|
|
176
221
|
| `type` | no | `TextType` | Semantic role, which selects the colour token. `main` for primary copy, `secondary`<br>for supporting copy (descriptions, captions, metadata). `inherit` selects none and takes<br>the parent's, for text inside a surface that already sets its own — a solid tab, a<br>tooltip, a coloured chip. Without it those places would drop Text and hand-roll a span,<br>which is how a kit ends up with two ways to set type. |
|
|
177
|
-
| `size` | no | `TextSize` | Step on the type scale. Omit it on primary content so the provider default flows;<br>`UIProvider`'s `typography.defaultTextSize` changes it. Reserve `xs` for support text<br>and metadata.
|
|
222
|
+
| `size` | no | `TextSize` | Step on the type scale. Omit it on primary content so the provider default flows;<br>`UIProvider`'s `typography.defaultTextSize` changes it. Reserve `xs` for support text<br>and metadata. @default "sm" |
|
|
178
223
|
| `align` | no | `TextAlign` | Horizontal alignment. |
|
|
179
|
-
| `lineHeight` | no | `TextLineHeight` | Leading
|
|
224
|
+
| `lineHeight` | no | `TextLineHeight` | Leading. Unset, each size step carries the line box paired with it; a value here<br>overrides that. `tight` and `none` suit dense rows and single-line values; `relaxed`<br>suits prose. @default paired |
|
|
180
225
|
| `numeric` | no | `boolean` | Tabular figures, so digits align in a column. Use for any value in a table. |
|
|
181
226
|
| `truncate` | no | `boolean` | Ellipsises the text at one line rather than wrapping. Makes the element a block with<br>`min-width: 0`, for the same reason `align` does; every flex box between it and the<br>constrained width also needs `min-width: 0` (`Stack` and `Grid` set it; a hand-rolled<br>flex div does not). `Heading` and every `primitives` value take it too. |
|
|
182
227
|
| `weight` | no | `TextWeight` | Font weight. |
|
|
228
|
+
| `mono` | no | `boolean` | The monospaced face, for identifiers, codes and keys. |
|
|
229
|
+
| `heading` | no | `boolean` | The heading face (`--font-heading`), for a title that is not a document heading: a<br>card's, a dialog's. A theme that sets a heading font reaches it here as in `Heading`. |
|
|
230
|
+
| `caps` | no | `boolean` | Uppercase with open tracking, for an overline or a keyboard hint. |
|
|
183
231
|
| `children` | no | `ReactNode` | Text content. Takes precedence over `content`. |
|
|
184
232
|
| `tag` | no | `"div" \| "p" \| "span" \| "label"` | Element to render: `span` inline, `p` for prose, `div` when it wraps blocks, `label`<br>for a form label. For headings use `Heading`. |
|
|
185
233
|
|
|
@@ -196,7 +244,7 @@ Kind: type.
|
|
|
196
244
|
Kind: type.
|
|
197
245
|
|
|
198
246
|
```text
|
|
199
|
-
"normal" | "
|
|
247
|
+
"normal" | "medium" | "semibold" | "bold"
|
|
200
248
|
```
|
|
201
249
|
|
|
202
250
|
## Preview recipes
|
|
@@ -232,6 +280,191 @@ export default function MenusInContext() {
|
|
|
232
280
|
}
|
|
233
281
|
```
|
|
234
282
|
|
|
283
|
+
### Compose your own
|
|
284
|
+
|
|
285
|
+
```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
|
|
286
|
+
import { ArrowUpIcon, CreditCardIcon } from "lucide-react"
|
|
287
|
+
|
|
288
|
+
import { Badge } from "themelia-ui/base/badge"
|
|
289
|
+
import { Card } from "themelia-ui/base/cards"
|
|
290
|
+
import { Sparkline } from "themelia-ui/base/chart"
|
|
291
|
+
import { IconBadge } from "themelia-ui/base/display"
|
|
292
|
+
import { Stack } from "themelia-ui/base/structure"
|
|
293
|
+
import { DisplayLabel, Text } from "themelia-ui/base/typography"
|
|
294
|
+
import { Money } from "themelia-ui/primitives"
|
|
295
|
+
|
|
296
|
+
export default function AnalyticsBlueprint() {
|
|
297
|
+
return (
|
|
298
|
+
<Card style={{ maxWidth: "20rem" }}>
|
|
299
|
+
<Stack gap="sm">
|
|
300
|
+
<Stack direction="horizontal" align="center" gap="sm">
|
|
301
|
+
<IconBadge icon={CreditCardIcon} tone="primary" />
|
|
302
|
+
<DisplayLabel>Revenue</DisplayLabel>
|
|
303
|
+
</Stack>
|
|
304
|
+
<Stack direction="horizontal" align="center" justify="between" gap="sm">
|
|
305
|
+
<Money amount={48200} currency="EUR" size="xl" weight="semibold" />
|
|
306
|
+
<Badge tone="success">
|
|
307
|
+
<ArrowUpIcon />
|
|
308
|
+
12.4%
|
|
309
|
+
</Badge>
|
|
310
|
+
</Stack>
|
|
311
|
+
<Sparkline data={[18, 22, 19, 27, 24, 31, 29, 38]} tone="success" label="Revenue rising over eight weeks" />
|
|
312
|
+
<Text size="xs" type="secondary">
|
|
313
|
+
Net of refunds, this quarter
|
|
314
|
+
</Text>
|
|
315
|
+
</Stack>
|
|
316
|
+
</Card>
|
|
317
|
+
)
|
|
318
|
+
}
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
### Compose your own checklist
|
|
322
|
+
|
|
323
|
+
```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
|
|
324
|
+
import { CheckIcon, CircleIcon } from "lucide-react"
|
|
325
|
+
|
|
326
|
+
import { Accordion } from "themelia-ui/base/accordion"
|
|
327
|
+
import { Button } from "themelia-ui/base/buttons"
|
|
328
|
+
import { IconBadge } from "themelia-ui/base/display"
|
|
329
|
+
import { Progress } from "themelia-ui/base/feedback"
|
|
330
|
+
import { Stack } from "themelia-ui/base/structure"
|
|
331
|
+
import { Text } from "themelia-ui/base/typography"
|
|
332
|
+
|
|
333
|
+
export default function ChecklistBlueprint() {
|
|
334
|
+
return (
|
|
335
|
+
<Stack style={{ maxWidth: "34rem", width: "100%" }}>
|
|
336
|
+
<Progress value={1} max={3} label="1 of 3 steps complete" />
|
|
337
|
+
<Accordion
|
|
338
|
+
media="medallion"
|
|
339
|
+
defaultValue={["invite"]}
|
|
340
|
+
items={[
|
|
341
|
+
{
|
|
342
|
+
value: "profile",
|
|
343
|
+
title: "Complete your profile",
|
|
344
|
+
icon: <IconBadge icon={CheckIcon} tone="success" shape="circle" />,
|
|
345
|
+
content: <Text type="secondary">Name, avatar and time zone are set.</Text>,
|
|
346
|
+
},
|
|
347
|
+
{
|
|
348
|
+
value: "invite",
|
|
349
|
+
title: "Invite your team",
|
|
350
|
+
icon: <IconBadge icon={CircleIcon} shape="circle" />,
|
|
351
|
+
content: (
|
|
352
|
+
<Stack gap="sm" align="start">
|
|
353
|
+
<Text type="secondary">Teammates see the same projects and saved views.</Text>
|
|
354
|
+
<Button>Send invites</Button>
|
|
355
|
+
</Stack>
|
|
356
|
+
),
|
|
357
|
+
},
|
|
358
|
+
{
|
|
359
|
+
value: "connect",
|
|
360
|
+
title: "Connect a data source",
|
|
361
|
+
icon: <IconBadge icon={CircleIcon} shape="circle" />,
|
|
362
|
+
content: <Text type="secondary">Postgres, a CSV upload or the REST API.</Text>,
|
|
363
|
+
},
|
|
364
|
+
]}
|
|
365
|
+
/>
|
|
366
|
+
</Stack>
|
|
367
|
+
)
|
|
368
|
+
}
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
### Compose your own permissions
|
|
372
|
+
|
|
373
|
+
```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
|
|
374
|
+
import { CheckIcon } from "lucide-react"
|
|
375
|
+
|
|
376
|
+
import { Badge } from "themelia-ui/base/badge"
|
|
377
|
+
import { VisuallyHidden } from "themelia-ui/base/display"
|
|
378
|
+
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "themelia-ui/base/table"
|
|
379
|
+
import { Text } from "themelia-ui/base/typography"
|
|
380
|
+
|
|
381
|
+
const ROLES = ["Owner", "Editor", "Viewer"] as const
|
|
382
|
+
const PERMISSIONS: { name: string; granted: readonly boolean[] }[] = [
|
|
383
|
+
{ name: "Edit projects", granted: [true, true, false] },
|
|
384
|
+
{ name: "Manage billing", granted: [true, false, false] },
|
|
385
|
+
{ name: "Export data", granted: [true, true, true] },
|
|
386
|
+
]
|
|
387
|
+
|
|
388
|
+
export default function RolesBlueprint() {
|
|
389
|
+
return (
|
|
390
|
+
<Table>
|
|
391
|
+
<TableHeader>
|
|
392
|
+
<TableRow>
|
|
393
|
+
<TableHead>Permission</TableHead>
|
|
394
|
+
{ROLES.map((role) => (
|
|
395
|
+
<TableHead key={role} align="center">
|
|
396
|
+
{role}
|
|
397
|
+
</TableHead>
|
|
398
|
+
))}
|
|
399
|
+
</TableRow>
|
|
400
|
+
</TableHeader>
|
|
401
|
+
<TableBody>
|
|
402
|
+
{PERMISSIONS.map((permission) => (
|
|
403
|
+
<TableRow key={permission.name}>
|
|
404
|
+
<TableCell>{permission.name}</TableCell>
|
|
405
|
+
{permission.granted.map((granted, index) => (
|
|
406
|
+
<TableCell key={ROLES[index]} align="center">
|
|
407
|
+
{granted ? (
|
|
408
|
+
<Badge tone="success">
|
|
409
|
+
<CheckIcon aria-hidden />
|
|
410
|
+
<VisuallyHidden>Granted</VisuallyHidden>
|
|
411
|
+
</Badge>
|
|
412
|
+
) : (
|
|
413
|
+
<>
|
|
414
|
+
<Text tag="span" type="secondary" aria-hidden>
|
|
415
|
+
—
|
|
416
|
+
</Text>
|
|
417
|
+
<VisuallyHidden>Not granted</VisuallyHidden>
|
|
418
|
+
</>
|
|
419
|
+
)}
|
|
420
|
+
</TableCell>
|
|
421
|
+
))}
|
|
422
|
+
</TableRow>
|
|
423
|
+
))}
|
|
424
|
+
</TableBody>
|
|
425
|
+
</Table>
|
|
426
|
+
)
|
|
427
|
+
}
|
|
428
|
+
```
|
|
429
|
+
|
|
430
|
+
### Website content reference
|
|
431
|
+
|
|
432
|
+
```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
|
|
433
|
+
import { useState } from "react"
|
|
434
|
+
import { Button } from "themelia-ui/base/buttons"
|
|
435
|
+
import { Card } from "themelia-ui/base/cards"
|
|
436
|
+
import { PillRadioGroup } from "themelia-ui/base/choice-inputs"
|
|
437
|
+
import { FormField } from "themelia-ui/base/forms"
|
|
438
|
+
import { Stack } from "themelia-ui/base/structure"
|
|
439
|
+
import { Input } from "themelia-ui/base/text-inputs"
|
|
440
|
+
import { RichText, Text } from "themelia-ui/base/typography"
|
|
441
|
+
import { MediaLibraryDialog, type MediaLibraryItem } from "themelia-ui/features/media-library"
|
|
442
|
+
import { RichTextEditor } from "themelia-ui/features/rich-text-editor"
|
|
443
|
+
import { SAMPLE_MEDIA } from "../media-library/reference-data"
|
|
444
|
+
|
|
445
|
+
export default function WebsiteContentReference() {
|
|
446
|
+
const [locale, setLocale] = useState("en")
|
|
447
|
+
const [drafts, setDrafts] = useState<Record<string, string>>({ en: "<p>Welcome to our workspace.</p>", ar: "<p>مرحباً بكم</p>" })
|
|
448
|
+
const [mediaOpen, setMediaOpen] = useState(false)
|
|
449
|
+
const [image, setImage] = useState<MediaLibraryItem>()
|
|
450
|
+
const [alt, setAlt] = useState("")
|
|
451
|
+
const [failed, setFailed] = useState(true)
|
|
452
|
+
const [pending, setPending] = useState(false)
|
|
453
|
+
const [message, setMessage] = useState("Drafts are local until saved")
|
|
454
|
+
return <Card title="Website content" description="Each locale owns a retained draft. Preview sanitizes HTML; the application also validates and sanitizes persisted content.">
|
|
455
|
+
<Stack>
|
|
456
|
+
<PillRadioGroup aria-label="Content locale" name="reference-content-locale" value={locale} onValueChange={value => value && setLocale(value)} options={[{ value: "en", label: "English" }, { value: "ar", label: "العربية" }]} />
|
|
457
|
+
<div dir={locale === "ar" ? "rtl" : "ltr"}><RichTextEditor value={drafts[locale] ?? ""} onValueChange={html => setDrafts(current => ({ ...current, [locale]: html }))} /></div>
|
|
458
|
+
<MediaLibraryDialog open={mediaOpen} trigger={<Button tone="neutral" appearance="outline">Choose hero media</Button>} onOpenChange={setMediaOpen} items={SAMPLE_MEDIA} selectionMode="single" confirmOnSelect allowUpload={false} onConfirm={items => { const item = items[0]; setImage(item); setAlt(item?.alt ?? ""); setMediaOpen(false) }} />
|
|
459
|
+
{image && <FormField label="Hero image alternative text" hint={image.name}><Input value={alt} onChange={event => setAlt(event.target.value)} /></FormField>}
|
|
460
|
+
<Stack direction="horizontal" wrap gap="sm"><Button disabled={pending} onClick={async () => { if (pending) return; setPending(true); await new Promise(resolve => setTimeout(resolve, 250)); setMessage(failed ? "Save failed. All locale drafts and image text remain here." : "Mock website save completed"); setPending(false) }}>Save website content</Button><Button tone="neutral" appearance="outline" onClick={() => setFailed(value => !value)}>Toggle save failure</Button></Stack>
|
|
461
|
+
<Text role="status">{message}</Text>
|
|
462
|
+
<RichText html={drafts[locale] ?? ""} />
|
|
463
|
+
</Stack>
|
|
464
|
+
</Card>
|
|
465
|
+
}
|
|
466
|
+
```
|
|
467
|
+
|
|
235
468
|
### The editor and what comes out
|
|
236
469
|
|
|
237
470
|
```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
|
|
@@ -258,14 +491,14 @@ export default function Editor() {
|
|
|
258
491
|
maxLength={280}
|
|
259
492
|
/>
|
|
260
493
|
|
|
261
|
-
<Stack gap="
|
|
494
|
+
<Stack gap="sm">
|
|
262
495
|
<DisplayLabel>Emitted HTML</DisplayLabel>
|
|
263
|
-
<Text size="xs" type="secondary" className={styles.source}>
|
|
496
|
+
<Text size="xs" type="secondary" mono className={styles.source}>
|
|
264
497
|
{body || "(empty)"}
|
|
265
498
|
</Text>
|
|
266
499
|
</Stack>
|
|
267
500
|
|
|
268
|
-
<Stack gap="
|
|
501
|
+
<Stack gap="sm">
|
|
269
502
|
<DisplayLabel>Rendered through RichText</DisplayLabel>
|
|
270
503
|
<RichText html={body} />
|
|
271
504
|
</Stack>
|
|
@@ -312,7 +545,7 @@ export default function EditorCompact() {
|
|
|
312
545
|
},
|
|
313
546
|
]}
|
|
314
547
|
footerSlot={
|
|
315
|
-
<Stack direction="horizontal" align="center" justify="between" gap="
|
|
548
|
+
<Stack direction="horizontal" align="center" justify="between" gap="sm">
|
|
316
549
|
<Text size="xs" type="secondary">
|
|
317
550
|
Markdown is not parsed — use the toolbar.
|
|
318
551
|
</Text>
|
|
@@ -326,7 +559,34 @@ export default function EditorCompact() {
|
|
|
326
559
|
}
|
|
327
560
|
```
|
|
328
561
|
|
|
329
|
-
###
|
|
562
|
+
### The factor
|
|
563
|
+
|
|
564
|
+
```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
|
|
565
|
+
import { Stack } from "themelia-ui/base/structure"
|
|
566
|
+
import { Text } from "themelia-ui/base/typography"
|
|
567
|
+
import { UIProvider } from "themelia-ui/ui-provider"
|
|
568
|
+
|
|
569
|
+
import { ControlRow } from "./_shared"
|
|
570
|
+
|
|
571
|
+
const FACTORS = [0.75, 0.875, 1, 1.125, 1.25] as const
|
|
572
|
+
|
|
573
|
+
export default function TheFactor() {
|
|
574
|
+
return (
|
|
575
|
+
<>
|
|
576
|
+
{FACTORS.map((scale) => (
|
|
577
|
+
<UIProvider key={scale} config={{ scale }}>
|
|
578
|
+
<Stack direction="horizontal" align="center">
|
|
579
|
+
<Text tag="span" size="xs" mono style={{ width: "4rem", flex: "none" }}>{scale}</Text>
|
|
580
|
+
<ControlRow />
|
|
581
|
+
</Stack>
|
|
582
|
+
</UIProvider>
|
|
583
|
+
))}
|
|
584
|
+
</>
|
|
585
|
+
)
|
|
586
|
+
}
|
|
587
|
+
```
|
|
588
|
+
|
|
589
|
+
### Type has its own factor
|
|
330
590
|
|
|
331
591
|
```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
|
|
332
592
|
import { Button } from "themelia-ui/base/buttons"
|
|
@@ -337,11 +597,11 @@ import { UIProvider } from "themelia-ui/ui-provider"
|
|
|
337
597
|
|
|
338
598
|
export default function TypeFactor() {
|
|
339
599
|
return (
|
|
340
|
-
<Stack
|
|
600
|
+
<Stack>
|
|
341
601
|
<Stack gap="sm">
|
|
342
602
|
<Text type="secondary" size="xs">typography.scale 0.875 — type shrinks, control geometry holds</Text>
|
|
343
603
|
<UIProvider config={{ typography: { scale: 0.875 } }}>
|
|
344
|
-
<Stack direction="horizontal" gap="
|
|
604
|
+
<Stack direction="horizontal" gap="sm" align="center" wrap>
|
|
345
605
|
<Text>Body copy at this factor.</Text>
|
|
346
606
|
<Button>Save</Button>
|
|
347
607
|
<Checkbox label="Check" defaultChecked />
|
|
@@ -351,7 +611,7 @@ export default function TypeFactor() {
|
|
|
351
611
|
<Stack gap="sm">
|
|
352
612
|
<Text type="secondary" size="xs">scale 0.875 + typography.scale 1 — geometry shrinks, type holds</Text>
|
|
353
613
|
<UIProvider config={{ scale: 0.875, typography: { scale: 1 } }}>
|
|
354
|
-
<Stack direction="horizontal" gap="
|
|
614
|
+
<Stack direction="horizontal" gap="sm" align="center" wrap>
|
|
355
615
|
<Text>Body copy at this factor.</Text>
|
|
356
616
|
<Button>Save</Button>
|
|
357
617
|
<Checkbox label="Check" defaultChecked />
|
|
@@ -363,37 +623,37 @@ export default function TypeFactor() {
|
|
|
363
623
|
}
|
|
364
624
|
```
|
|
365
625
|
|
|
366
|
-
###
|
|
626
|
+
### A factor, or one variable
|
|
367
627
|
|
|
368
628
|
```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
|
|
369
629
|
import { Stack } from "themelia-ui/base/structure"
|
|
370
630
|
import { Text } from "themelia-ui/base/typography"
|
|
371
|
-
import { Scope } from "themelia-ui/ui-provider"
|
|
631
|
+
import { Scope, UIProvider } from "themelia-ui/ui-provider"
|
|
372
632
|
|
|
373
633
|
import { ControlRow } from "./_shared"
|
|
374
634
|
|
|
375
635
|
export default function FactorChain() {
|
|
376
636
|
return (
|
|
377
|
-
<Stack
|
|
637
|
+
<Stack>
|
|
378
638
|
<Stack gap="sm">
|
|
379
639
|
<Text type="secondary" size="xs">default</Text>
|
|
380
640
|
<ControlRow />
|
|
381
641
|
</Stack>
|
|
382
642
|
<Stack gap="sm">
|
|
383
|
-
<Text type="secondary" size="xs"
|
|
384
|
-
<
|
|
643
|
+
<Text type="secondary" size="xs">scale: 0.875 — every length and type step</Text>
|
|
644
|
+
<UIProvider config={{ scale: 0.875 }}>
|
|
385
645
|
<ControlRow />
|
|
386
|
-
</
|
|
646
|
+
</UIProvider>
|
|
387
647
|
</Stack>
|
|
388
648
|
<Stack gap="sm">
|
|
389
|
-
<Text type="secondary" size="xs">--
|
|
390
|
-
<Scope vars={{ "--
|
|
649
|
+
<Text type="secondary" size="xs">--control-height: 2.5rem — every control, nothing else</Text>
|
|
650
|
+
<Scope vars={{ "--control-height": "2.5rem" }}>
|
|
391
651
|
<ControlRow />
|
|
392
652
|
</Scope>
|
|
393
653
|
</Stack>
|
|
394
654
|
<Stack gap="sm">
|
|
395
|
-
<Text type="secondary" size="xs">--
|
|
396
|
-
<Scope vars={{ "--
|
|
655
|
+
<Text type="secondary" size="xs">--radius-sm: 0 — every item corner</Text>
|
|
656
|
+
<Scope vars={{ "--radius-sm": "0" }}>
|
|
397
657
|
<ControlRow />
|
|
398
658
|
</Scope>
|
|
399
659
|
</Stack>
|
|
@@ -414,13 +674,13 @@ import { ControlRow } from "./_shared"
|
|
|
414
674
|
export default function Nesting() {
|
|
415
675
|
return (
|
|
416
676
|
<UIProvider config={{ scale: 1.125 }}>
|
|
417
|
-
<Stack
|
|
677
|
+
<Stack>
|
|
418
678
|
<Text type="secondary" size="sm">
|
|
419
679
|
Outer scope — 1.125
|
|
420
680
|
</Text>
|
|
421
681
|
<ControlRow />
|
|
422
682
|
<UIProvider config={{ scale: 0.8 }}>
|
|
423
|
-
<Stack gap="
|
|
683
|
+
<Stack gap="sm">
|
|
424
684
|
<Text type="secondary" size="sm">
|
|
425
685
|
Nested scope — 0.8
|
|
426
686
|
</Text>
|
|
@@ -433,12 +693,37 @@ export default function Nesting() {
|
|
|
433
693
|
}
|
|
434
694
|
```
|
|
435
695
|
|
|
696
|
+
### Density presets
|
|
697
|
+
|
|
698
|
+
```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
|
|
699
|
+
import { Stack } from "themelia-ui/base/structure"
|
|
700
|
+
import { Text } from "themelia-ui/base/typography"
|
|
701
|
+
import { UIProvider } from "themelia-ui/ui-provider"
|
|
702
|
+
|
|
703
|
+
import { ControlRow } from "./_shared"
|
|
704
|
+
|
|
705
|
+
export default function Density() {
|
|
706
|
+
return (
|
|
707
|
+
<>
|
|
708
|
+
{(["compact", "default", "comfortable"] as const).map((density) => (
|
|
709
|
+
<UIProvider key={density} config={{ density }}>
|
|
710
|
+
<Stack direction="horizontal" align="center">
|
|
711
|
+
<Text tag="span" size="xs" mono style={{ width: "7rem", flex: "none" }}>{density}</Text>
|
|
712
|
+
<ControlRow />
|
|
713
|
+
</Stack>
|
|
714
|
+
</UIProvider>
|
|
715
|
+
))}
|
|
716
|
+
</>
|
|
717
|
+
)
|
|
718
|
+
}
|
|
719
|
+
```
|
|
720
|
+
|
|
436
721
|
### Density
|
|
437
722
|
|
|
438
723
|
```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
|
|
439
724
|
import { Stack } from "themelia-ui/base/structure"
|
|
440
725
|
import { Text } from "themelia-ui/base/typography"
|
|
441
|
-
import {
|
|
726
|
+
import { UIScope } from "themelia-ui/ui-provider"
|
|
442
727
|
|
|
443
728
|
import { InvoiceTable } from "./_shared"
|
|
444
729
|
|
|
@@ -448,16 +733,16 @@ export default function TableScale() {
|
|
|
448
733
|
* Both, captioned. On its own the scoped table just looked like a table —
|
|
449
734
|
* the section asserted a difference the page gave the reader no way to see.
|
|
450
735
|
*/
|
|
451
|
-
<Stack
|
|
452
|
-
<Stack gap="
|
|
453
|
-
<Text size="xs" type="secondary"
|
|
736
|
+
<Stack style={{ width: "100%" }}>
|
|
737
|
+
<Stack gap="sm" style={{ width: "100%" }}>
|
|
738
|
+
<Text size="xs" type="secondary">density: default</Text>
|
|
454
739
|
<InvoiceTable />
|
|
455
740
|
</Stack>
|
|
456
|
-
<Stack gap="
|
|
457
|
-
<Text size="xs" type="secondary"
|
|
458
|
-
<
|
|
741
|
+
<Stack gap="sm" style={{ width: "100%" }}>
|
|
742
|
+
<Text size="xs" type="secondary">density: compact</Text>
|
|
743
|
+
<UIScope config={{ density: "compact" }} style={{ width: "100%" }}>
|
|
459
744
|
<InvoiceTable />
|
|
460
|
-
</
|
|
745
|
+
</UIScope>
|
|
461
746
|
</Stack>
|
|
462
747
|
</Stack>
|
|
463
748
|
)
|
|
@@ -15,12 +15,11 @@ The user contributes files — dropzone, avatar, image, or a tray with progress.
|
|
|
15
15
|
|
|
16
16
|
```tsx fragment — import-only example
|
|
17
17
|
import { AvatarUpload } from "themelia-ui/base/upload"
|
|
18
|
-
import "themelia-ui/base/upload.css"
|
|
19
18
|
```
|
|
20
19
|
|
|
21
20
|
## Composition
|
|
22
21
|
|
|
23
|
-
This module composes `base/badge`, `base/buttons`, `base/display`, `base/feedback`.
|
|
22
|
+
This module composes `base/badge`, `base/buttons`, `base/display`, `base/feedback`, `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.
|
|
@@ -569,7 +568,7 @@ export default function FileUploadExample() {
|
|
|
569
568
|
const [rejected, setRejected] = useState<FileRejection[]>([])
|
|
570
569
|
|
|
571
570
|
return (
|
|
572
|
-
<Stack
|
|
571
|
+
<Stack style={{ maxWidth: "34rem", width: "100%" }}>
|
|
573
572
|
<FormField label="Attachments" helperText="Drag files in, or click to browse.">
|
|
574
573
|
<FileUpload
|
|
575
574
|
multiple
|
|
@@ -621,8 +620,8 @@ export default function MediaUpload() {
|
|
|
621
620
|
const [error, setError] = useState<string>()
|
|
622
621
|
|
|
623
622
|
return (
|
|
624
|
-
<Stack direction={{ base: "vertical", sm: "horizontal" }}
|
|
625
|
-
<Stack
|
|
623
|
+
<Stack direction={{ base: "vertical", sm: "horizontal" }} align="start" style={{ width: "100%" }}>
|
|
624
|
+
<Stack style={{ maxWidth: "26rem", width: "100%" }}>
|
|
626
625
|
<FormField label="Profile photo" helperText="Nothing stored yet.">
|
|
627
626
|
<AvatarUpload />
|
|
628
627
|
</FormField>
|
|
@@ -632,7 +631,7 @@ export default function MediaUpload() {
|
|
|
632
631
|
onValueChange={() => setError(undefined)} />
|
|
633
632
|
</FormField>
|
|
634
633
|
</Stack>
|
|
635
|
-
<Stack
|
|
634
|
+
<Stack style={{ maxWidth: "26rem", width: "100%" }}>
|
|
636
635
|
<FormField label="Profile photo" helperText="Your current profile photo.">
|
|
637
636
|
<AvatarUpload previewUrl={SAMPLE_IMAGE_URL} />
|
|
638
637
|
</FormField>
|
|
@@ -657,7 +656,7 @@ export default function UploadQueue() {
|
|
|
657
656
|
const items = QUEUE
|
|
658
657
|
|
|
659
658
|
return (
|
|
660
|
-
<Stack style={{ maxWidth: "34rem", width: "100%" }}>
|
|
659
|
+
<Stack gap="sm" style={{ maxWidth: "34rem", width: "100%" }}>
|
|
661
660
|
<UploadProgressList items={items} onRetry={() => {}} onRemove={() => {}} />
|
|
662
661
|
</Stack>
|
|
663
662
|
)
|
|
@@ -676,7 +675,7 @@ export default function UploadTrayExample() {
|
|
|
676
675
|
const items = QUEUE
|
|
677
676
|
|
|
678
677
|
return (
|
|
679
|
-
<Stack style={{ maxWidth: "34rem", width: "100%" }}>
|
|
678
|
+
<Stack gap="sm" style={{ maxWidth: "34rem", width: "100%" }}>
|
|
680
679
|
<UploadTray
|
|
681
680
|
items={items}
|
|
682
681
|
onAddFiles={() => {}}
|
|
@@ -703,7 +702,7 @@ export default function MediaGalleryExample() {
|
|
|
703
702
|
const [images, setImages] = useState<File[]>(SAMPLE_IMAGES)
|
|
704
703
|
|
|
705
704
|
return (
|
|
706
|
-
<Stack style={{ maxWidth: "34rem", width: "100%" }}>
|
|
705
|
+
<Stack gap="sm" style={{ maxWidth: "34rem", width: "100%" }}>
|
|
707
706
|
<MediaGallery value={images} onValueChange={setImages} maxFiles={6} />
|
|
708
707
|
</Stack>
|
|
709
708
|
)
|