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 @@ A trigger fetches its content when it opens, and needs loading, empty and error
|
|
|
15
15
|
|
|
16
16
|
```tsx fragment — import-only example
|
|
17
17
|
import { AsyncPreview } from "themelia-ui/features/async-preview"
|
|
18
|
-
import "themelia-ui/features/async-preview.css"
|
|
19
18
|
```
|
|
20
19
|
|
|
21
20
|
## Composition
|
|
@@ -473,8 +472,8 @@ export default function AsyncPreviewBasic() {
|
|
|
473
472
|
}
|
|
474
473
|
|
|
475
474
|
return (
|
|
476
|
-
<Stack direction="horizontal"
|
|
477
|
-
<Stack direction="horizontal"
|
|
475
|
+
<Stack direction="horizontal" wrap align="center">
|
|
476
|
+
<Stack direction="horizontal" wrap>
|
|
478
477
|
{Object.values(CUSTOMERS).map((customer) => (
|
|
479
478
|
<AsyncPreview.Root<Customer, { id: string }, "customer">
|
|
480
479
|
key={customer.id}
|
|
@@ -500,7 +499,7 @@ export default function AsyncPreviewBasic() {
|
|
|
500
499
|
<Stack direction="horizontal" gap="sm" align="center">
|
|
501
500
|
<Button
|
|
502
501
|
tone="neutral"
|
|
503
|
-
|
|
502
|
+
appearance="outline"
|
|
504
503
|
onClick={() => {
|
|
505
504
|
clearAsyncPreviewCache()
|
|
506
505
|
setLog([])
|
|
@@ -545,7 +544,7 @@ export default function AsyncPreviewStates() {
|
|
|
545
544
|
const failedOnce = useRef(false)
|
|
546
545
|
|
|
547
546
|
return (
|
|
548
|
-
<Stack direction="horizontal"
|
|
547
|
+
<Stack direction="horizontal" wrap>
|
|
549
548
|
<AsyncPreview.Root<Customer, null, "slow">
|
|
550
549
|
type="slow"
|
|
551
550
|
context={null}
|
|
@@ -602,7 +601,7 @@ export default function AsyncPreviewStates() {
|
|
|
602
601
|
<Text size="xs" type="secondary">
|
|
603
602
|
{(state.error as Error).message}
|
|
604
603
|
</Text>
|
|
605
|
-
<Button tone="neutral"
|
|
604
|
+
<Button tone="neutral" appearance="outline" onClick={state.refresh}>
|
|
606
605
|
Try again
|
|
607
606
|
</Button>
|
|
608
607
|
</>
|
|
@@ -15,7 +15,6 @@ Options arrive from a fetch, the field selects application resources, or it prop
|
|
|
15
15
|
|
|
16
16
|
```tsx fragment — import-only example
|
|
17
17
|
import { AsyncCombobox } from "themelia-ui/features/combobox"
|
|
18
|
-
import "themelia-ui/features/combobox.css"
|
|
19
18
|
```
|
|
20
19
|
|
|
21
20
|
## Composition
|
|
@@ -111,7 +110,7 @@ Kind: interface.
|
|
|
111
110
|
| `cancel` | yes | `string` | |
|
|
112
111
|
| `errorTitle` | yes | `string` | Announced when a fetch fails, above the retry control. |
|
|
113
112
|
| `retry` | yes | `string` | |
|
|
114
|
-
| `removeChip` |
|
|
113
|
+
| `removeChip` | yes | `(label: string) => string` | Accessible name for a multi-select chip's remove control. Takes the chip's label. |
|
|
115
114
|
|
|
116
115
|
### `AsyncMultiCombobox`
|
|
117
116
|
|
|
@@ -229,6 +228,16 @@ Browsable from the first keystroke, and preloaded on mount so the list is there
|
|
|
229
228
|
failed fetch replaces the list content, as `AsyncCombobox`'s `showListContent` does when
|
|
230
229
|
off, but keeps the selection and the query, for retry.
|
|
231
230
|
|
|
231
|
+
**Use when:** Resource selection with self-owned debounce, abort and scoped requests.
|
|
232
|
+
|
|
233
|
+
**Avoid when:** An existing application query/cache already owns lookup results.
|
|
234
|
+
|
|
235
|
+
**Compose:** Change scopeKey when workspace/tenant/parent changes; preserve query/open state and explicitly clear an invalid controlled selection.
|
|
236
|
+
|
|
237
|
+
**Capabilities:** resource selection; scoped resource lookup; pending empty error retry.
|
|
238
|
+
|
|
239
|
+
**Alternatives:** AsyncCombobox, SuggestionsCombobox.
|
|
240
|
+
|
|
232
241
|
```text
|
|
233
242
|
({ fetcher, onAfterFetch, onError, getKey, getLabel, limit, debounceMs, preload, minSearchLength, defaultValue, errorMessage, ...props }: ResourceComboboxProps<T>) => import("react").JSX.Element
|
|
234
243
|
```
|
|
@@ -281,6 +290,7 @@ Extends: `Omit<AsyncComboboxProps<T>, "items" | "selectedValue" | "onSelectedVal
|
|
|
281
290
|
| member | required | type | description / documented default |
|
|
282
291
|
| --- | :-: | --- | --- |
|
|
283
292
|
| `fetcher` | yes | `ResourceComboboxFetcher<T>` | Fetches the options for a query. Debounce, abort, and the race guard are owned for you,<br>and the query arrives trimmed. Honour `signal`, so an abort does not surface as a failure. |
|
|
293
|
+
| `scopeKey` | no | `string \| number` | Resource scope identity. A change aborts stale lookups and refetches the current<br>eligible query. The application owns clearing a selection invalid in the new scope. |
|
|
284
294
|
| `value` | no | `T \| null` | Controlled. Omit entirely to let the component own the selection. |
|
|
285
295
|
| `defaultValue` | no | `T \| null` | The starting selection when uncontrolled. Ignored once `value` is passed. |
|
|
286
296
|
| `onValueChange` | no | `(value: T \| null) => void` | |
|
|
@@ -439,6 +449,7 @@ Kind: interface.
|
|
|
439
449
|
| member | required | type | description / documented default |
|
|
440
450
|
| --- | :-: | --- | --- |
|
|
441
451
|
| `fetchData` | yes | `(query: string, context?: SuggestionsFetchContext) => MaybePromise<T[]>` | Fetches the suggestions for a query, as an array or a promise of one. Pass<br>`context.signal` to the request: it aborts when a newer query starts. |
|
|
452
|
+
| `scopeKey` | no | `string \| number` | Identity of the resource scope (workspace, tenant or parent record). Changing it<br>aborts previous work, hides its results/errors and immediately refetches an eligible<br>query. Compared with Object.is; callback identity alone never refetches. Selection,<br>query and open state survive: the application clears selections invalid in the new scope. |
|
|
442
453
|
| `minQueryLength` | no | `number` | Characters required before a request is issued, not counting surrounding whitespace.<br>Defaults to 1. |
|
|
443
454
|
| `debounceMs` | no | `number` | The quiet period that collapses a burst of typing into one request. Defaults to 300. |
|
|
444
455
|
| `requestDelay` | no | `number` | A further wait before the fetcher runs, after the loading state is showing (unlike<br>`debounceMs`, which delays deciding to fetch). For rate-limited endpoints. @default 0 |
|
|
@@ -476,6 +487,61 @@ Kind: interface.
|
|
|
476
487
|
|
|
477
488
|
Preview route: Combobox — `/combobox`
|
|
478
489
|
|
|
490
|
+
### Scoped resource selection
|
|
491
|
+
|
|
492
|
+
```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
|
|
493
|
+
import { useState } from "react"
|
|
494
|
+
import { Button } from "themelia-ui/base/buttons"
|
|
495
|
+
import { FormField } from "themelia-ui/base/forms"
|
|
496
|
+
import { Overlay, OverlayTrigger, OverlayContent, OverlayHeader, OverlayTitle, OverlayDescription, OverlayBody } from "themelia-ui/base/overlay"
|
|
497
|
+
import { Stack } from "themelia-ui/base/structure"
|
|
498
|
+
import { Text } from "themelia-ui/base/typography"
|
|
499
|
+
import { ResourceCombobox } from "themelia-ui/features/combobox"
|
|
500
|
+
|
|
501
|
+
type Resource = { id: string; label: string }
|
|
502
|
+
type Mode = "results" | "pending" | "empty" | "error"
|
|
503
|
+
|
|
504
|
+
export default function ScopedResourceReference() {
|
|
505
|
+
const [scope, setScope] = useState("A")
|
|
506
|
+
const [mode, setMode] = useState<Mode>("results")
|
|
507
|
+
const [query, setQuery] = useState("")
|
|
508
|
+
const [value, setValue] = useState<Resource | null>({ id: "A-1", label: "A project" })
|
|
509
|
+
const [selections, setSelections] = useState(0)
|
|
510
|
+
const [submissions, setSubmissions] = useState(0)
|
|
511
|
+
const [completions, setCompletions] = useState(0)
|
|
512
|
+
return <Overlay>
|
|
513
|
+
<OverlayTrigger render={<Button />}>Choose scoped resource</OverlayTrigger>
|
|
514
|
+
<OverlayContent>
|
|
515
|
+
<OverlayHeader><OverlayTitle>Assign resource</OverlayTitle><OverlayDescription>Lookup validity belongs to a workspace. The application decides whether a selected resource remains valid.</OverlayDescription></OverlayHeader>
|
|
516
|
+
<OverlayBody>
|
|
517
|
+
<form onSubmit={event => { event.preventDefault(); setSubmissions(count => count + 1) }}>
|
|
518
|
+
<Stack>
|
|
519
|
+
<Stack direction="horizontal" gap="sm" wrap>
|
|
520
|
+
{["A", "B"].map(key => <Button key={key} tone="neutral" appearance="outline" onClick={() => { setScope(key); setValue(null) }}>Workspace {key}</Button>)}
|
|
521
|
+
</Stack>
|
|
522
|
+
<Stack direction="horizontal" gap="sm" wrap>
|
|
523
|
+
{(["results", "pending", "empty", "error"] as const).map(key => <Button key={key} tone="neutral" appearance="ghost" onClick={() => setMode(key)}>{key}</Button>)}
|
|
524
|
+
</Stack>
|
|
525
|
+
<FormField label="Resource" hint={`Searching workspace ${scope}`}>
|
|
526
|
+
<ResourceCombobox<Resource> scopeKey={`${scope}:${mode}`} value={value} onValueChange={next => { setValue(next); setSelections(count => count + 1) }} searchValue={query} onSearchValueChange={setQuery} debounceMs={100} getKey={item => item.id} getLabel={item => item.label}
|
|
527
|
+
fetcher={async ({ query: search, signal }) => {
|
|
528
|
+
// The mock deliberately ignores abort; the picker must suppress its late answer.
|
|
529
|
+
void signal
|
|
530
|
+
await new Promise(resolve => setTimeout(resolve, mode === "pending" ? 2400 : scope === "A" ? 600 : 80))
|
|
531
|
+
if (mode === "error") throw new Error("Lookup unavailable")
|
|
532
|
+
return mode === "empty" || (search && !"project".includes(search.toLowerCase())) ? [] : [{ id: `${scope}-1`, label: `${scope} project` }]
|
|
533
|
+
}} onAfterFetch={() => setCompletions(count => count + 1)} />
|
|
534
|
+
</FormField>
|
|
535
|
+
<Button type="submit">Assign</Button>
|
|
536
|
+
<Text role="status">Selections {selections}; submissions {submissions}; completions {completions}</Text>
|
|
537
|
+
</Stack>
|
|
538
|
+
</form>
|
|
539
|
+
</OverlayBody>
|
|
540
|
+
</OverlayContent>
|
|
541
|
+
</Overlay>
|
|
542
|
+
}
|
|
543
|
+
```
|
|
544
|
+
|
|
479
545
|
### A picker that fetches
|
|
480
546
|
|
|
481
547
|
```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
|
|
@@ -487,7 +553,7 @@ import { searchCountries, type Country } from "./data"
|
|
|
487
553
|
|
|
488
554
|
export default function ComboboxPicker() {
|
|
489
555
|
return (
|
|
490
|
-
<Stack style={{ maxWidth: "26rem", width: "100%" }}>
|
|
556
|
+
<Stack gap="sm" style={{ maxWidth: "26rem", width: "100%" }}>
|
|
491
557
|
<FormField label="Destination" helperText="Open it to browse, or type to search.">
|
|
492
558
|
<ResourceCombobox<Country>
|
|
493
559
|
fetcher={searchCountries}
|
|
@@ -514,7 +580,7 @@ import { matching, wait, type Country } from "./data"
|
|
|
514
580
|
|
|
515
581
|
export default function Suggestions() {
|
|
516
582
|
return (
|
|
517
|
-
<Stack style={{ maxWidth: "26rem", width: "100%" }}>
|
|
583
|
+
<Stack gap="sm" style={{ maxWidth: "26rem", width: "100%" }}>
|
|
518
584
|
<FormField label="Search">
|
|
519
585
|
<SuggestionsCombobox<Country>
|
|
520
586
|
fetchData={async (needle, context) => {
|
|
@@ -547,7 +613,7 @@ export default function ResourceComboboxExample() {
|
|
|
547
613
|
const [failing, setFailing] = useState(true)
|
|
548
614
|
|
|
549
615
|
return (
|
|
550
|
-
<Stack
|
|
616
|
+
<Stack style={{ maxWidth: "26rem", width: "100%" }}>
|
|
551
617
|
<FormField label="Country (self-fetching)">
|
|
552
618
|
<ResourceCombobox<Country>
|
|
553
619
|
// No preload, so the error does not appear on mount.
|
|
@@ -15,7 +15,6 @@ People discuss a record in a thread, with a composer and attachments.
|
|
|
15
15
|
|
|
16
16
|
```tsx fragment — import-only example
|
|
17
17
|
import { CommentAttachmentChip } from "themelia-ui/features/comments"
|
|
18
|
-
import "themelia-ui/features/comments.css"
|
|
19
18
|
```
|
|
20
19
|
|
|
21
20
|
## Optional peers
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
# `features/data-view`
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
A resource collection needs search, filters, saved views, table controls and paging.
|
|
6
6
|
|
|
7
7
|
## Selection
|
|
8
8
|
|
|
9
|
-
- **Use when:**
|
|
10
|
-
- **Avoid when:**
|
|
9
|
+
- **Use when:** A resource collection needs search, filters, saved views, table controls and paging.
|
|
10
|
+
- **Avoid when:** Only tabular behavior is needed inside an existing application-owned browser shell.
|
|
11
11
|
- **Consider instead:** `features/table`, `base/table`
|
|
12
12
|
- **Stability:** stable.
|
|
13
13
|
|
|
@@ -15,7 +15,6 @@ One dataset is presented through switchable views with saved tabs, a toolbar and
|
|
|
15
15
|
|
|
16
16
|
```tsx fragment — import-only example
|
|
17
17
|
import { DataView } from "themelia-ui/features/data-view"
|
|
18
|
-
import "themelia-ui/features/data-view.css"
|
|
19
18
|
```
|
|
20
19
|
|
|
21
20
|
## Optional peers
|
|
@@ -366,6 +365,62 @@ Kind: interface.
|
|
|
366
365
|
|
|
367
366
|
Preview route: Data view & data table — `/data-view`
|
|
368
367
|
|
|
368
|
+
### Server resource index reference
|
|
369
|
+
|
|
370
|
+
```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
|
|
371
|
+
import { useEffect, useRef, useState } from "react"
|
|
372
|
+
import { Button } from "themelia-ui/base/buttons"
|
|
373
|
+
import { Stack } from "themelia-ui/base/structure"
|
|
374
|
+
import { Heading, Text } from "themelia-ui/base/typography"
|
|
375
|
+
import { DataView, type DataViewProps } from "themelia-ui/features/data-view"
|
|
376
|
+
import { FilterType, type ActiveFilter, type FilterConfig } from "themelia-ui/features/filters"
|
|
377
|
+
|
|
378
|
+
type RecordRow = { id: string; name: string; status: string; searchTerms: string }
|
|
379
|
+
const RECORDS: RecordRow[] = Array.from({ length: 6 }, (_, index) => ({ id: `r${index + 1}`, name: `Resource ${index + 1}`, status: index % 2 ? "Closed" : "Open", searchTerms: "hidden reference term" }))
|
|
380
|
+
const COLUMNS: DataViewProps<RecordRow>["columns"] = [{ accessorKey: "name", header: "Resource" }, { accessorKey: "status", header: "Status" }]
|
|
381
|
+
const FILTERS: FilterConfig[] = [{ key: "search", label: "Search hidden metadata and resource names", type: FilterType.SEARCH }, { key: "status", label: "Publication and review status with a long translated label", type: FilterType.SELECT, options: [{ value: "Open", label: "Open" }, { value: "Closed", label: "Closed" }] }]
|
|
382
|
+
|
|
383
|
+
export default function ResourceIndexReference() {
|
|
384
|
+
const [filters, setFilters] = useState<ActiveFilter[]>([])
|
|
385
|
+
const [page, setPage] = useState(0)
|
|
386
|
+
const [rows, setRows] = useState<RecordRow[]>([])
|
|
387
|
+
const [hasNext, setHasNext] = useState(false)
|
|
388
|
+
const [pending, setPending] = useState(true)
|
|
389
|
+
const [error, setError] = useState<string>()
|
|
390
|
+
const [refresh, setRefresh] = useState(0)
|
|
391
|
+
const [selection, setSelection] = useState<Record<string, true>>({})
|
|
392
|
+
const [answeredQuery, setAnsweredQuery] = useState("")
|
|
393
|
+
const [commands, setCommands] = useState("")
|
|
394
|
+
const failNext = useRef(false)
|
|
395
|
+
useEffect(() => {
|
|
396
|
+
let active = true
|
|
397
|
+
async function load() {
|
|
398
|
+
setPending(true); setError(undefined)
|
|
399
|
+
await new Promise(resolve => setTimeout(resolve, 250))
|
|
400
|
+
if (!active) return
|
|
401
|
+
if (failNext.current) { failNext.current = false; setError("Refresh failed. Previous rows remain available."); setPending(false); return }
|
|
402
|
+
const search = filters.find(filter => filter.key === "search")?.value[0]?.toLowerCase() ?? ""
|
|
403
|
+
const status = filters.find(filter => filter.key === "status")?.value[0]
|
|
404
|
+
const matches = RECORDS.filter(row => `${row.name} ${row.searchTerms}`.toLowerCase().includes(search) && (!status || row.status === status))
|
|
405
|
+
setAnsweredQuery(search); setRows(matches.slice(page * 2, page * 2 + 2)); setHasNext(matches.length > page * 2 + 2); setPending(false)
|
|
406
|
+
}
|
|
407
|
+
void load()
|
|
408
|
+
return () => { active = false }
|
|
409
|
+
}, [filters, page, refresh])
|
|
410
|
+
return <div style={{ width: "100%", minWidth: 0, maxWidth: "48rem" }}>
|
|
411
|
+
<Stack>
|
|
412
|
+
<Heading level={3}>Resource index</Heading>
|
|
413
|
+
<Text type="secondary">Server matching includes fields absent from the visible columns. Totals are unknown; selection applies to the current page.</Text>
|
|
414
|
+
{error && <Text role="alert" type="error">{error}</Text>}
|
|
415
|
+
<DataView data={rows} columns={COLUMNS} filtering={{ filters: FILTERS, activeFilters: filters, onFilterChange: next => { setFilters(next); setPage(0); setSelection({}) }, filterRows: ({ data }) => [...data], isFiltering: pending }}
|
|
416
|
+
table={{ enableColumnVisibility: true, enableRowSelection: true, getRowId: row => row.id, rowSelection: selection, onRowSelectionChange: setSelection, bulkActions: ({ selectedRows }) => <Button onClick={() => setCommands(`Selected-page command: ${selectedRows.map(row => row.id).join(", ")}`)}>Archive selected page rows</Button> }}
|
|
417
|
+
slots={{ topbarEnd: <Stack direction="horizontal" gap="sm" wrap><Button tone="neutral" appearance="outline" disabled={pending} onClick={() => setRefresh(count => count + 1)}>Refresh</Button><Button tone="neutral" appearance="outline" onClick={() => { failNext.current = true; setRefresh(count => count + 1) }}>Fail next refresh</Button><Button tone="neutral" appearance="outline" onClick={() => setCommands(`Export current page: ${rows.map(row => row.id).join(", ")}`)}>Export page</Button></Stack>, footer: <Stack direction="horizontal" wrap align="center"><Text>Total unknown; page {page + 1}</Text><Button disabled={pending || page === 0} onClick={() => { setPage(value => value - 1); setSelection({}) }}>Previous page</Button><Button disabled={pending || !hasNext} onClick={() => { setPage(value => value + 1); setSelection({}) }}>Next page</Button></Stack> }} />
|
|
418
|
+
<Text role="status">{pending ? "Loading page" : `${rows.length} rows supplied by server; matched ${answeredQuery || "all"}`}{commands && `; ${commands}`}</Text>
|
|
419
|
+
</Stack>
|
|
420
|
+
</div>
|
|
421
|
+
}
|
|
422
|
+
```
|
|
423
|
+
|
|
369
424
|
### An index
|
|
370
425
|
|
|
371
426
|
```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
|
|
@@ -386,7 +441,7 @@ const keepPage = ({ data }: { data: readonly Booking[] }) => data as Booking[]
|
|
|
386
441
|
|
|
387
442
|
function ResetViewButton({ disabled, onReset }: { disabled: boolean; onReset: () => void }) {
|
|
388
443
|
const { clearFilters } = useFilters()
|
|
389
|
-
return <Button tone="neutral"
|
|
444
|
+
return <Button tone="neutral" appearance="outline" disabled={disabled}
|
|
390
445
|
onClick={() => { clearFilters(); onReset() }}>Reset view</Button>
|
|
391
446
|
}
|
|
392
447
|
|
|
@@ -433,7 +488,7 @@ export default function DataViewExample() {
|
|
|
433
488
|
enableColumnVisibility: true,
|
|
434
489
|
getRowId: (row) => row.id,
|
|
435
490
|
emptyStateMessage: "No bookings match your filters",
|
|
436
|
-
emptyStateAction: <Button tone="neutral"
|
|
491
|
+
emptyStateAction: <Button tone="neutral" appearance="outline" onClick={() => updateFilters([])}>Clear filters</Button>,
|
|
437
492
|
}}
|
|
438
493
|
slots={{
|
|
439
494
|
topbarEnd: <ResetViewButton
|
|
@@ -480,7 +535,7 @@ export default function DataViewStates() {
|
|
|
480
535
|
<Select aria-label="Result state" value={requestState} className={styles.stateSelect}
|
|
481
536
|
options={[{ value: "ready", label: "Ready" }, { value: "pending", label: "Updating" }, { value: "error", label: "Failed" }]}
|
|
482
537
|
onValueChange={(value) => value && setRequestState(value)} />
|
|
483
|
-
{requestState === "error" && <Button tone="neutral"
|
|
538
|
+
{requestState === "error" && <Button tone="neutral" appearance="outline" onClick={() => setRequestState("ready")}>Restore results</Button>}
|
|
484
539
|
</Stack>
|
|
485
540
|
<DataView<Booking> data={BOOKINGS.slice(0, 3)} columns={indexColumns}
|
|
486
541
|
filtering={{ filters: FILTERS, activeFilters: recoveryFilters, onFilterChange: setRecoveryFilters,
|
|
@@ -488,7 +543,7 @@ export default function DataViewStates() {
|
|
|
488
543
|
filterRows: requestState === "error" ? () => { throw new Error("Preview matcher failure") } : undefined,
|
|
489
544
|
}}
|
|
490
545
|
table={{ getRowId: (row) => row.id, emptyStateMessage: "No bookings match your filters",
|
|
491
|
-
emptyStateAction: <Button tone="neutral"
|
|
546
|
+
emptyStateAction: <Button tone="neutral" appearance="outline" onClick={() => setRecoveryFilters([])}>Clear filters</Button> }} />
|
|
492
547
|
</>
|
|
493
548
|
)
|
|
494
549
|
}
|
|
@@ -8,14 +8,13 @@ Events are placed on a calendar the user navigates by period.
|
|
|
8
8
|
|
|
9
9
|
- **Use when:** Events are placed on a calendar the user navigates by period.
|
|
10
10
|
- **Avoid when:** The user is picking a date, or the sequence is chronological rather than spatial.
|
|
11
|
-
- **Consider instead:** `base/date-pickers`, `
|
|
11
|
+
- **Consider instead:** `base/date-pickers`, `blocks/timelines`
|
|
12
12
|
- **Stability:** stable.
|
|
13
13
|
|
|
14
14
|
## Import
|
|
15
15
|
|
|
16
16
|
```tsx fragment — import-only example
|
|
17
17
|
import { EventCalendar } from "themelia-ui/features/event-calendar"
|
|
18
|
-
import "themelia-ui/features/event-calendar.css"
|
|
19
18
|
```
|
|
20
19
|
|
|
21
20
|
## Composition
|
|
@@ -15,7 +15,6 @@ Users build predicates over fields, with operators, editors and pills.
|
|
|
15
15
|
|
|
16
16
|
```tsx fragment — import-only example
|
|
17
17
|
import { AsyncFilterEditor } from "themelia-ui/features/filters"
|
|
18
|
-
import "themelia-ui/features/filters.css"
|
|
19
18
|
```
|
|
20
19
|
|
|
21
20
|
## Composition
|
|
@@ -293,6 +292,16 @@ Kind: callable.
|
|
|
293
292
|
The default bar: saved tabs, search boxes, active pills, always-shown pills, the add button,
|
|
294
293
|
then Clear. For a custom bar, place the exported parts using `useFilterGroups()`.
|
|
295
294
|
|
|
295
|
+
**Use when:** Responsive filter controls shared between a desktop region and mobile sheet.
|
|
296
|
+
|
|
297
|
+
**Avoid when:** A complete resource browser already provides its filter layout, or the controls are page commands.
|
|
298
|
+
|
|
299
|
+
**Compose:** Share controlled filter state across presentations. Place create and export in action slots outside filter controls.
|
|
300
|
+
|
|
301
|
+
**Capabilities:** responsive filters; mobile sheet desktop filter region.
|
|
302
|
+
|
|
303
|
+
**Alternatives:** —.
|
|
304
|
+
|
|
296
305
|
```text
|
|
297
306
|
({ className, dynamicFilterOptions, loadingFilters, variant, showClearFilters, tabs, mobilePresentation, }: FilterLayoutProps) => import("react").JSX.Element
|
|
298
307
|
```
|
|
@@ -1103,7 +1112,7 @@ export default function Filters() {
|
|
|
1103
1112
|
return (
|
|
1104
1113
|
<>
|
|
1105
1114
|
<Stack direction="horizontal" gap="sm">
|
|
1106
|
-
<Button tone="neutral"
|
|
1115
|
+
<Button tone="neutral" appearance="outline" onClick={() => setNavigating((current) => !current)}>
|
|
1107
1116
|
{navigating ? "Resume filtering" : "Show pending state"}
|
|
1108
1117
|
</Button>
|
|
1109
1118
|
</Stack>
|
|
@@ -15,7 +15,6 @@ One search surface spans record types, with tabs, idle and empty states.
|
|
|
15
15
|
|
|
16
16
|
```tsx fragment — import-only example
|
|
17
17
|
import { GlobalSearch } from "themelia-ui/features/global-search"
|
|
18
|
-
import "themelia-ui/features/global-search.css"
|
|
19
18
|
```
|
|
20
19
|
|
|
21
20
|
## Composition
|
|
@@ -477,7 +476,7 @@ export default function Dialog() {
|
|
|
477
476
|
|
|
478
477
|
return (
|
|
479
478
|
<>
|
|
480
|
-
<Stack direction="horizontal" gap="
|
|
479
|
+
<Stack direction="horizontal" gap="sm" align="center">
|
|
481
480
|
<Button type="button" onClick={() => setOpen(true)}>Open the palette</Button>
|
|
482
481
|
<Text size="sm" type="secondary">Then press Escape, or click outside it.</Text>
|
|
483
482
|
</Stack>
|
|
@@ -15,7 +15,6 @@ Records move between columns by dragging, and the board owns that state.
|
|
|
15
15
|
|
|
16
16
|
```tsx fragment — import-only example
|
|
17
17
|
import { Kanban } from "themelia-ui/features/kanban"
|
|
18
|
-
import "themelia-ui/features/kanban.css"
|
|
19
18
|
```
|
|
20
19
|
|
|
21
20
|
## Optional peers
|
|
@@ -442,7 +441,7 @@ export default function KanbanExample() {
|
|
|
442
441
|
{(board[column.id] ?? []).map((card) => (
|
|
443
442
|
<KanbanItem key={card.id} value={card.id}>
|
|
444
443
|
<Card className={styles.card}>
|
|
445
|
-
<Stack direction="horizontal" align="start" gap="
|
|
444
|
+
<Stack direction="horizontal" align="start" gap="sm">
|
|
446
445
|
<KanbanItemHandle />
|
|
447
446
|
<Text size="sm" weight="medium" className={styles.cardTitle}>
|
|
448
447
|
{card.title}
|
|
@@ -15,7 +15,6 @@ Geographic data is displayed or drawn, including markers, shapes and draw contro
|
|
|
15
15
|
|
|
16
16
|
```tsx fragment — import-only example
|
|
17
17
|
import { Map } from "themelia-ui/features/map"
|
|
18
|
-
import "themelia-ui/features/map.css"
|
|
19
18
|
```
|
|
20
19
|
|
|
21
20
|
## Optional peers
|
|
@@ -838,7 +837,7 @@ export default function PlaceAutocompleteExample() {
|
|
|
838
837
|
|
|
839
838
|
return (
|
|
840
839
|
<>
|
|
841
|
-
<Stack maxWidth="24rem">
|
|
840
|
+
<Stack gap="sm" maxWidth="24rem">
|
|
842
841
|
<PlaceAutocomplete limit={5} onPlaceSelect={setPlace} />
|
|
843
842
|
</Stack>
|
|
844
843
|
{!!place && (
|