themelia-react-ui 1.0.1 → 1.0.2
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/CHANGELOG.md +137 -0
- package/README.md +59 -13
- package/dist/{accordion-B-5Focs8.js → accordion-BRTcsp8J.js} +8 -8
- package/dist/accordion-BRTcsp8J.js.map +1 -0
- package/dist/{action-menu-Cx3SdfbN.js → action-menu-Drxw_vJk.js} +36 -36
- package/dist/action-menu-Drxw_vJk.js.map +1 -0
- package/dist/affordance-geometry.generated-CL84ZN9A.js +63 -0
- package/dist/affordance-geometry.generated-CL84ZN9A.js.map +1 -0
- package/dist/{ai-artifact-B5tPpXnS.js → ai-artifact-DLVdK0Py.js} +151 -155
- package/dist/ai-artifact-DLVdK0Py.js.map +1 -0
- package/dist/{app-shell-at8Kt4l_.js → app-shell-C_fKpljx.js} +11 -10
- package/dist/app-shell-C_fKpljx.js.map +1 -0
- package/dist/{attachment-BO2R47wn.js → attachment-DbjUWsP0.js} +12 -12
- package/dist/{attachment-BO2R47wn.js.map → attachment-DbjUWsP0.js.map} +1 -1
- package/dist/auth-CAQcasMV.js +723 -0
- package/dist/auth-CAQcasMV.js.map +1 -0
- package/dist/{avatar-Bpzty83c.js → avatar-Bu2HhitA.js} +6 -6
- package/dist/{avatar-Bpzty83c.js.map → avatar-Bu2HhitA.js.map} +1 -1
- package/dist/{badge-BZXZT9wd.js → badge-CzId1Wlm.js} +4 -4
- package/dist/{badge-BZXZT9wd.js.map → badge-CzId1Wlm.js.map} +1 -1
- package/dist/base/accordion.js +1 -1
- package/dist/base/action-menu.js +1 -1
- package/dist/base/attachment.js +1 -1
- package/dist/base/avatar.js +1 -1
- package/dist/base/badge.js +1 -1
- package/dist/base/buttons.js +3 -2
- package/dist/base/cards.js +3 -3
- package/dist/base/carousel.js +25 -27
- package/dist/base/carousel.js.map +1 -1
- package/dist/base/cascader.js +150 -148
- package/dist/base/cascader.js.map +1 -1
- package/dist/base/chart.js +1 -1
- package/dist/base/choice-inputs.js +2 -2
- package/dist/base/code-block.js +1 -1
- package/dist/base/combobox.js +1 -1
- package/dist/base/command.js +1 -1
- package/dist/base/copyable.js +1 -1
- package/dist/base/date-pickers.js +3 -3
- package/dist/base/display.js +7 -7
- package/dist/base/feedback.js +4 -4
- package/dist/base/forms-numeric.js +1 -1
- package/dist/base/forms.js +2 -2
- package/dist/base/inline-edit.js +40 -43
- package/dist/base/inline-edit.js.map +1 -1
- package/dist/base/item.js +1 -1
- package/dist/base/media-gallery.js +1 -1
- package/dist/base/navigation.js +6 -6
- package/dist/base/popover-menu.js +1 -1
- package/dist/base/popover.js +1 -1
- package/dist/base/qr-code.js +1 -1
- package/dist/base/repeaters.js +33 -33
- package/dist/base/repeaters.js.map +1 -1
- package/dist/base/sheet.js +1 -1
- package/dist/base/sidebar.js +1 -1
- package/dist/base/signature-pad.js +83 -81
- package/dist/base/signature-pad.js.map +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 +2 -2
- package/dist/base/toaster.js +6 -6
- package/dist/base/toaster.js.map +1 -1
- package/dist/base/tree.js +1 -1
- package/dist/base/upload-queue.js +1 -1
- package/dist/base/upload.js +3 -3
- package/dist/base/value-inputs.js +1 -1
- package/dist/blocks/admin.js +134 -134
- package/dist/blocks/admin.js.map +1 -1
- package/dist/blocks/ai.js +120 -117
- package/dist/blocks/ai.js.map +1 -1
- package/dist/blocks/analytics/usage-card.js +1 -1
- package/dist/blocks/analytics.js +510 -472
- package/dist/blocks/analytics.js.map +1 -1
- package/dist/blocks/collaboration.js +2 -2
- package/dist/blocks/commerce/receipt.js +1 -1
- package/dist/blocks/commerce.js +395 -383
- package/dist/blocks/commerce.js.map +1 -1
- package/dist/blocks/data-display.js +1 -1
- package/dist/blocks/onboarding.js +6 -6
- package/dist/blocks/onboarding.js.map +1 -1
- package/dist/blocks/planning.js +36 -36
- package/dist/blocks/planning.js.map +1 -1
- package/dist/blocks/timelines.js +1 -1
- package/dist/{breadcrumbs-DdQ_I5ra.js → breadcrumbs-BuYz5SDU.js} +9 -8
- package/dist/breadcrumbs-BuYz5SDU.js.map +1 -0
- package/dist/button-BZDasD04.js +651 -0
- package/dist/button-BZDasD04.js.map +1 -0
- package/dist/{button-BS6l5JUw.js → button-BZyfTvwm.js} +3 -3
- package/dist/button-BZyfTvwm.js.map +1 -0
- package/dist/buttons-D_6KJvEE.js +99 -0
- package/dist/buttons-D_6KJvEE.js.map +1 -0
- package/dist/{cards-Cum56XOF.js → cards-qGSErLw_.js} +12 -12
- package/dist/{cards-Cum56XOF.js.map → cards-qGSErLw_.js.map} +1 -1
- package/dist/chart-Bsc5BICK.js +150 -0
- package/dist/chart-Bsc5BICK.js.map +1 -0
- package/dist/{checkbox-BavDRjF7.js → checkbox-BQNDjUCh.js} +3 -3
- package/dist/checkbox-BQNDjUCh.js.map +1 -0
- package/dist/choice-inputs-Mk3iWbhr.js +725 -0
- package/dist/choice-inputs-Mk3iWbhr.js.map +1 -0
- package/dist/{code-block-xHKbAJDj.js → code-block-DzHKRybS.js} +23 -23
- package/dist/code-block-DzHKRybS.js.map +1 -0
- package/dist/{collapsible-DsnktFNv.js → collapsible-ClvC7Bj3.js} +3 -3
- package/dist/{collapsible-DsnktFNv.js.map → collapsible-ClvC7Bj3.js.map} +1 -1
- package/dist/{collection-content-C4fthJV_.js → collection-content-D6S8cv_n.js} +3 -3
- package/dist/{collection-content-C4fthJV_.js.map → collection-content-D6S8cv_n.js.map} +1 -1
- package/dist/{combobox-DEbdr-3u.js → combobox-BFnbJJp3.js} +18 -18
- package/dist/combobox-BFnbJJp3.js.map +1 -0
- package/dist/{combobox-xv3yJbzl.js → combobox-hozNwUcc.js} +313 -316
- package/dist/combobox-hozNwUcc.js.map +1 -0
- package/dist/{command-C0xe7u9B.js → command-BnmSchli.js} +9 -9
- package/dist/command-BnmSchli.js.map +1 -0
- package/dist/comments-u5L0OGip.js +1156 -0
- package/dist/comments-u5L0OGip.js.map +1 -0
- package/dist/components/base/buttons/button-group.recipes.d.ts +1 -1
- package/dist/components/base/buttons/button.recipes.d.ts +10 -19
- package/dist/components/base/buttons/use-pending-button-focus.d.ts +3 -0
- package/dist/components/base/cards/card.recipes.d.ts +13 -5
- package/dist/components/base/cards/partials/card-primitives.d.ts +9 -4
- package/dist/components/base/cards/smart-card.types.d.ts +1 -1
- package/dist/components/base/date-pickers/date-picker.recipes.d.ts +5 -18
- package/dist/components/base/date-pickers/datepicker.types.d.ts +3 -0
- package/dist/components/base/forms/form-field.d.ts +1 -0
- package/dist/components/base/forms/form-sizing.d.ts +3 -3
- package/dist/components/base/navigation/tabs.d.ts +3 -5
- package/dist/components/base/popover/popover.recipes.d.ts +3 -3
- package/dist/components/base/table/index.d.ts +1 -1
- package/dist/components/base/text-inputs/clear-native-field.d.ts +2 -0
- package/dist/components/base/text-inputs/input-trailing-action.d.ts +3 -0
- package/dist/components/blocks/analytics/types.d.ts +1 -1
- package/dist/components/blocks/collaboration/message/message.recipes.d.ts +12 -0
- package/dist/components/blocks/data-display/empty-state/partials/illustrations/document-stack.d.ts +1 -4
- package/dist/components/blocks/data-display/empty-state/partials/illustrations/inbox-clean.d.ts +1 -4
- package/dist/components/blocks/data-display/empty-state/partials/illustrations/index.d.ts +3 -3
- package/dist/components/blocks/data-display/empty-state/partials/illustrations/stacked-cards.d.ts +1 -6
- package/dist/components/features/combobox/components/error-message.d.ts +1 -1
- package/dist/components/features/comments/hooks/use-attachment-upload.d.ts +5 -0
- package/dist/components/features/filters/facets/search-facet.d.ts +0 -12
- package/dist/components/features/filters/facets/tags-facet.d.ts +1 -1
- package/dist/components/features/media-library/media-library.d.ts +1 -1
- package/dist/components/features/media-library/media-library.types.d.ts +9 -1
- package/dist/components/features/media-library/partials/media-library-partials.d.ts +1 -1
- package/dist/components/features/overlays/hooks/use-pending-overlay-focus.d.ts +2 -0
- package/dist/components/features/overlays/overlays.types.d.ts +5 -4
- package/dist/components/features/rich-text-editor/rich-text-editor.recipes.d.ts +2 -1
- package/dist/components/features/table/data-table.d.ts +1 -1
- package/dist/components/features/table/table.types.d.ts +1 -1
- package/dist/components/features/theme-tweaker/theme-provider-settings.d.ts +3 -1
- package/dist/components/layout/auth/auth.types.d.ts +1 -0
- package/dist/components/layout/page/page.d.ts +0 -1
- package/dist/components/layout/page/page.types.d.ts +9 -3
- package/dist/components/layout/sidebar/sidebar.context.d.ts +1 -1
- package/dist/components/layout/sidebar/sidebar.types.d.ts +4 -0
- package/dist/components/layout/workspace/workspace.types.d.ts +3 -0
- package/dist/components/typography/heading.d.ts +5 -2
- package/dist/components/typography/index.d.ts +1 -1
- package/dist/components/typography/text.styles.d.ts +10 -0
- package/dist/components/ui/popover.d.ts +1 -1
- package/dist/components/ui/sidebar.d.ts +1 -1
- package/dist/components/ui/table.d.ts +2 -1
- package/dist/container.recipes-D9t8MHR3.js +27 -0
- package/dist/container.recipes-D9t8MHR3.js.map +1 -0
- package/dist/{containers-6s-ucRQQ.js → containers-DqB-bSYE.js} +33 -56
- package/dist/containers-DqB-bSYE.js.map +1 -0
- package/dist/control-group-recipes-DBXmfh2E.js +21 -0
- package/dist/control-group-recipes-DBXmfh2E.js.map +1 -0
- package/dist/{copyable-B7SBXJMr.js → copyable-BTSByfmq.js} +6 -6
- package/dist/{copyable-B7SBXJMr.js.map → copyable-BTSByfmq.js.map} +1 -1
- package/dist/{data-display-cWIRdeaf.js → data-display-Bihs9Ven.js} +545 -332
- package/dist/data-display-Bihs9Ven.js.map +1 -0
- package/dist/{date-BFNMnrS5.js → date-DOKhJPu7.js} +4 -4
- package/dist/{date-BFNMnrS5.js.map → date-DOKhJPu7.js.map} +1 -1
- package/dist/{date-picker-CA6ogMQB.js → date-picker-DzP5HQq7.js} +492 -472
- package/dist/date-picker-DzP5HQq7.js.map +1 -0
- package/dist/date-pickers-BpgGz7S-.js +196 -0
- package/dist/date-pickers-BpgGz7S-.js.map +1 -0
- package/dist/{display-CFM5myut.js → display-CS6Hbk18.js} +8 -8
- package/dist/{display-CFM5myut.js.map → display-CS6Hbk18.js.map} +1 -1
- package/dist/{dropdown-menu-BlnyHr-9.js → dropdown-menu-D-boNgGO.js} +7 -7
- package/dist/{dropdown-menu-BlnyHr-9.js.map → dropdown-menu-D-boNgGO.js.map} +1 -1
- package/dist/features/activities.js +152 -141
- package/dist/features/activities.js.map +1 -1
- package/dist/features/ai-chat.js +182 -179
- package/dist/features/ai-chat.js.map +1 -1
- package/dist/features/async-preview.js +9 -9
- package/dist/features/async-preview.js.map +1 -1
- package/dist/features/combobox.js +1 -1
- package/dist/features/comments.js +1 -1
- package/dist/features/data-view.js +25 -23
- package/dist/features/data-view.js.map +1 -1
- package/dist/features/email-composer/engine.js +1 -1
- package/dist/features/email-composer.js +103 -104
- package/dist/features/email-composer.js.map +1 -1
- package/dist/features/event-calendar.js +375 -373
- package/dist/features/event-calendar.js.map +1 -1
- package/dist/features/filters.js +1 -1
- package/dist/features/global-search.js +222 -224
- package/dist/features/global-search.js.map +1 -1
- package/dist/features/kanban.js +29 -29
- package/dist/features/kanban.js.map +1 -1
- package/dist/features/map.js +59 -58
- package/dist/features/map.js.map +1 -1
- package/dist/features/media-library.js +856 -855
- package/dist/features/media-library.js.map +1 -1
- package/dist/features/mentions.js +1 -1
- package/dist/features/overlays.js +1 -1
- package/dist/features/products.js +1209 -1209
- package/dist/features/products.js.map +1 -1
- package/dist/features/questionnaire.js +52 -52
- package/dist/features/questionnaire.js.map +1 -1
- package/dist/features/resource-assignment.js +29 -31
- package/dist/features/resource-assignment.js.map +1 -1
- package/dist/features/resource.js +13 -13
- package/dist/features/resource.js.map +1 -1
- package/dist/features/rich-text-editor.js +2 -2
- package/dist/features/schema-form.js +82 -82
- package/dist/features/schema-form.js.map +1 -1
- package/dist/features/suggestions.js +3 -3
- package/dist/features/sync.js +4 -4
- package/dist/features/sync.js.map +1 -1
- package/dist/features/table.js +1 -1
- package/dist/features/theme-tweaker.js +456 -450
- package/dist/features/theme-tweaker.js.map +1 -1
- package/dist/{feedback-DWUkgEjR.js → feedback-CJkUAapr.js} +29 -29
- package/dist/feedback-CJkUAapr.js.map +1 -0
- package/dist/field-affordance-recipes-uKY4MsZ_.js +25 -0
- package/dist/field-affordance-recipes-uKY4MsZ_.js.map +1 -0
- package/dist/{field-state-recipes-CBTRt9Bt.js → field-state-recipes-DQQpiLWC.js} +3 -3
- package/dist/field-state-recipes-DQQpiLWC.js.map +1 -0
- package/dist/{filters-BhsUtsxW.js → filters-D6FF8L6s.js} +715 -720
- package/dist/filters-D6FF8L6s.js.map +1 -0
- package/dist/{form-field-Bn7ZH1rA.js → form-field-CZwrkP7m.js} +17 -9
- package/dist/form-field-CZwrkP7m.js.map +1 -0
- package/dist/{form-sizing-BWs70_a2.js → form-sizing-QP8aIRaW.js} +8 -5
- package/dist/form-sizing-QP8aIRaW.js.map +1 -0
- package/dist/{forms-B7pzS25o.js → forms-B5NCbkSC.js} +35 -35
- package/dist/{forms-B7pzS25o.js.map → forms-B5NCbkSC.js.map} +1 -1
- package/dist/forms-numeric-Crrm80Lm.js +867 -0
- package/dist/forms-numeric-Crrm80Lm.js.map +1 -0
- package/dist/{header-C59QZyxV.js → header-kxruN3RM.js} +53 -49
- package/dist/header-kxruN3RM.js.map +1 -0
- package/dist/{hooks-CM1Vp9Pe.js → hooks-BrlnCwQd.js} +2 -2
- package/dist/{hooks-CM1Vp9Pe.js.map → hooks-BrlnCwQd.js.map} +1 -1
- package/dist/{http-CLTVJc5I.js → http-CdEIHyQf.js} +2 -2
- package/dist/http-CdEIHyQf.js.map +1 -0
- package/dist/{icon-badge-Dv0RYQwj.js → icon-badge-Btc6pQrp.js} +4 -4
- package/dist/{icon-badge-Dv0RYQwj.js.map → icon-badge-Btc6pQrp.js.map} +1 -1
- package/dist/index.js +2 -2
- package/dist/input-SX9V0AL3.js +255 -0
- package/dist/input-SX9V0AL3.js.map +1 -0
- package/dist/input-vxcaNCYC.js +20 -0
- package/dist/input-vxcaNCYC.js.map +1 -0
- package/dist/{item-pJ0GsOiJ.js → item-DE4YnuJx.js} +18 -17
- package/dist/item-DE4YnuJx.js.map +1 -0
- package/dist/layout/app-shell.js +1 -1
- package/dist/layout/auth.js +1 -1
- package/dist/layout/containers.js +1 -1
- package/dist/layout/header.js +1 -1
- package/dist/layout/hooks.js +1 -1
- package/dist/layout/navigation.js +1 -1
- package/dist/layout/page.js +1 -1
- package/dist/layout/settings.js +1 -1
- package/dist/layout/sidebar.js +2 -2
- package/dist/layout/workspace.js +1 -1
- package/dist/layout.js +10 -10
- package/dist/lib/affordance-geometry.generated.d.ts +40 -9
- package/dist/lib/control-group-recipes.d.ts +22 -0
- package/dist/lib/field-affordance-recipes.d.ts +35 -2
- package/dist/lib/field-state-recipes.d.ts +2 -2
- package/dist/lib/navigation-row-recipes.d.ts +3 -2
- package/dist/lib/overlay-anatomy-recipes.d.ts +1 -1
- package/dist/lib/surface-recipes.d.ts +5 -2
- package/dist/lib/token-merge.generated.d.ts +144 -2
- package/dist/lib/ui-provider/types.d.ts +4 -2
- package/dist/lib/use-prefers-reduced-motion.d.ts +2 -0
- package/dist/lib/utils.js +1 -1
- package/dist/{media-gallery-DhDRgnVZ.js → media-gallery-DLp3HAz0.js} +75 -74
- package/dist/media-gallery-DLp3HAz0.js.map +1 -0
- package/dist/{mentions-B8Ko-fhS.js → mentions-Cl0Kt_Pd.js} +52 -50
- package/dist/{mentions-B8Ko-fhS.js.map → mentions-Cl0Kt_Pd.js.map} +1 -1
- package/dist/message-SZUNB1eX.js +127 -0
- package/dist/message-SZUNB1eX.js.map +1 -0
- package/dist/{navigation-DBEu4POU.js → navigation-DnQSNMT0.js} +64 -55
- package/dist/navigation-DnQSNMT0.js.map +1 -0
- package/dist/{navigation-BUIn2Qxx.js → navigation-DyytsLRB.js} +37 -37
- package/dist/navigation-DyytsLRB.js.map +1 -0
- package/dist/{navigation-row-recipes-GVh11KiT.js → navigation-row-recipes-DQEXQcqY.js} +3 -3
- package/dist/navigation-row-recipes-DQEXQcqY.js.map +1 -0
- package/dist/{number-BNT_BIzJ.js → number-DasMFWEG.js} +4 -4
- package/dist/{number-BNT_BIzJ.js.map → number-DasMFWEG.js.map} +1 -1
- package/dist/overlays-DUbs1KEi.js +1011 -0
- package/dist/overlays-DUbs1KEi.js.map +1 -0
- package/dist/{page-BV6ioQg3.js → page-hGmT4nWK.js} +75 -64
- package/dist/page-hGmT4nWK.js.map +1 -0
- package/dist/{page-header-DQRa0jug.js → page-header-D8nERkn5.js} +9 -9
- package/dist/page-header-D8nERkn5.js.map +1 -0
- package/dist/{pagination-C29vvt3I.js → pagination-NLGqRirf.js} +20 -20
- package/dist/pagination-NLGqRirf.js.map +1 -0
- package/dist/{popover-CoLDEg19.js → popover-CghIYdQf.js} +23 -22
- package/dist/popover-CghIYdQf.js.map +1 -0
- package/dist/{popover-menu-GLIQTJTx.js → popover-menu-B4PoWhRl.js} +6 -6
- package/dist/{popover-menu-GLIQTJTx.js.map → popover-menu-B4PoWhRl.js.map} +1 -1
- package/dist/{popover.recipes-zgBhMlUu.js → popover.recipes-QlD4JenO.js} +5 -5
- package/dist/popover.recipes-QlD4JenO.js.map +1 -0
- package/dist/{primitives-DKPOGVpj.js → primitives-C7ff0QaI.js} +120 -113
- package/dist/primitives-C7ff0QaI.js.map +1 -0
- package/dist/primitives.js +3 -3
- package/dist/{progress-BOe8l_FZ.js → progress-BroqrAyV.js} +10 -9
- package/dist/progress-BroqrAyV.js.map +1 -0
- package/dist/{receipt-BM8xsGFy.js → receipt-BuJynLgf.js} +8 -8
- package/dist/{receipt-BM8xsGFy.js.map → receipt-BuJynLgf.js.map} +1 -1
- package/dist/{rich-text-B7sBAdDG.js → rich-text-DlxDOtf4.js} +4 -4
- package/dist/{rich-text-B7sBAdDG.js.map → rich-text-DlxDOtf4.js.map} +1 -1
- package/dist/rich-text-editor-BKyG7rWz.js +574 -0
- package/dist/rich-text-editor-BKyG7rWz.js.map +1 -0
- package/dist/{rich-text-editor.recipes-DxvOE0Lp.js → rich-text-editor.recipes-B72Nfuze.js} +35 -26
- package/dist/rich-text-editor.recipes-B72Nfuze.js.map +1 -0
- package/dist/{scroll-area-BheMQ270.js → scroll-area-D-pIhEKl.js} +3 -3
- package/dist/scroll-area-D-pIhEKl.js.map +1 -0
- package/dist/{separator-Gk_WXH-l.js → separator-BNIgG3au.js} +3 -3
- package/dist/{separator-Gk_WXH-l.js.map → separator-BNIgG3au.js.map} +1 -1
- package/dist/{separator-DO0EbCEm.js → separator-BhtFyo4x.js} +2 -2
- package/dist/{separator-DO0EbCEm.js.map → separator-BhtFyo4x.js.map} +1 -1
- package/dist/services/actions.js +1 -1
- package/dist/{settings-BnCyyPOJ.js → settings-DOTOzeZ2.js} +10 -9
- package/dist/{settings-BnCyyPOJ.js.map → settings-DOTOzeZ2.js.map} +1 -1
- package/dist/{sheet-B-q914Ad.js → sheet-BFhrNehm.js} +11 -11
- package/dist/sheet-BFhrNehm.js.map +1 -0
- package/dist/{sidebar-DPR7fmqN.js → sidebar-CyR4XKwR.js} +219 -200
- package/dist/sidebar-CyR4XKwR.js.map +1 -0
- package/dist/{sidebar-C_2p3Tfj.js → sidebar-SvGJ0Zwi.js} +63 -58
- package/dist/sidebar-SvGJ0Zwi.js.map +1 -0
- package/dist/{skeleton-CmT1ppqb.js → skeleton-3F0uhYn3.js} +4 -4
- package/dist/{skeleton-CmT1ppqb.js.map → skeleton-3F0uhYn3.js.map} +1 -1
- package/dist/{smart-card-CYLn46e6.js → smart-card-DjGVV2xr.js} +171 -165
- package/dist/smart-card-DjGVV2xr.js.map +1 -0
- package/dist/{spinner-BY9HbUEh.js → spinner-Cpf7oRkF.js} +5 -5
- package/dist/{spinner-BY9HbUEh.js.map → spinner-Cpf7oRkF.js.map} +1 -1
- package/dist/{structure-MvKVq-oL.js → structure-CRdqVawd.js} +2 -2
- package/dist/{structure-MvKVq-oL.js.map → structure-CRdqVawd.js.map} +1 -1
- package/dist/style.css +1 -1
- package/dist/{surface-recipes-CQfRr-VL.js → surface-recipes-Dd__PD-w.js} +4 -3
- package/dist/surface-recipes-Dd__PD-w.js.map +1 -0
- package/dist/{table-DnlAJ-xR.js → table-CLtJTxoR.js} +17 -16
- package/dist/table-CLtJTxoR.js.map +1 -0
- package/dist/table-CcRDZiLP.js +1444 -0
- package/dist/table-CcRDZiLP.js.map +1 -0
- package/dist/tabs-BNgu7g0u.js +188 -0
- package/dist/tabs-BNgu7g0u.js.map +1 -0
- package/dist/text-inputs-DsR56TR-.js +330 -0
- package/dist/text-inputs-DsR56TR-.js.map +1 -0
- package/dist/{text.styles-BwB7vAF2.js → text.styles-Q4sGAIgA.js} +18 -10
- package/dist/text.styles-Q4sGAIgA.js.map +1 -0
- package/dist/theme.css +77 -115
- package/dist/{timelines-B9ICkQcV.js → timelines-D1pkt3se.js} +84 -78
- package/dist/timelines-D1pkt3se.js.map +1 -0
- package/dist/{tree-BdWSaoFT.js → tree-BtmYyMZV.js} +8 -8
- package/dist/{tree-BdWSaoFT.js.map → tree-BtmYyMZV.js.map} +1 -1
- package/dist/typography/rich-text.js +1 -1
- package/dist/typography-BxQgiZyw.js +96 -0
- package/dist/typography-BxQgiZyw.js.map +1 -0
- package/dist/typography.js +1 -1
- package/dist/{ui-provider-CftIB6TY.js → ui-provider-DRPn3qNl.js} +3 -2
- package/dist/ui-provider-DRPn3qNl.js.map +1 -0
- package/dist/ui-provider.js +1 -1
- package/dist/{upload-D8Za5x_c.js → upload-CDbYw1WN.js} +326 -323
- package/dist/upload-CDbYw1WN.js.map +1 -0
- package/dist/{upload-queue-hIIYBLS7.js → upload-queue-CNd_hH_a.js} +25 -25
- package/dist/upload-queue-CNd_hH_a.js.map +1 -0
- package/dist/{usage-card-DnmnJ58D.js → usage-card-VyJLUwRr.js} +53 -54
- package/dist/usage-card-VyJLUwRr.js.map +1 -0
- package/dist/utils-BvH9PSmq.js +4275 -0
- package/dist/utils-BvH9PSmq.js.map +1 -0
- package/dist/value-inputs-D0KCrfVC.js +840 -0
- package/dist/value-inputs-D0KCrfVC.js.map +1 -0
- package/dist/{workspace-C1PZmk8L.js → workspace-CcR8r-Nt.js} +115 -122
- package/dist/workspace-CcR8r-Nt.js.map +1 -0
- package/docs/consumer-skill/SKILL.md +110 -119
- package/docs/consumer-skill/examples/analytics.tsx +34 -0
- package/docs/consumer-skill/examples/app-layout.tsx +42 -12
- package/docs/consumer-skill/examples/detail.tsx +20 -4
- package/docs/consumer-skill/examples/manifest.json +13 -1
- package/docs/consumer-skill/examples/website.tsx +56 -0
- package/docs/consumer-skill/references/analytics.md +70 -0
- package/docs/consumer-skill/references/composition.md +116 -2
- package/docs/consumer-skill/references/design-contract.md +33 -7
- package/docs/consumer-skill/references/discovery.md +76 -5
- package/docs/consumer-skill/references/integration.md +14 -0
- package/docs/consumer-skill/references/public-api.json +2023 -218
- package/docs/consumer-skill/references/review.md +55 -3
- package/docs/consumer-skill/references/theming.md +52 -7
- package/docs/consumer-skill/references/tokens.json +177 -9
- package/docs/consumer-skill/references/workflows.md +32 -0
- package/docs/consumer-skill/scripts/check-composition.mjs +1 -1
- package/docs/consumer-skill/scripts/composition-policy.mjs +179 -17
- package/docs/consumer-skill/scripts/discovery.mjs +61 -9
- package/docs/consumer-skill/scripts/surface-policy.mjs +44 -0
- package/package.json +7 -4
- package/dist/accordion-B-5Focs8.js.map +0 -1
- package/dist/action-menu-Cx3SdfbN.js.map +0 -1
- package/dist/affordance-geometry.generated-D8Jcfb0G.js +0 -32
- package/dist/affordance-geometry.generated-D8Jcfb0G.js.map +0 -1
- package/dist/ai-artifact-B5tPpXnS.js.map +0 -1
- package/dist/app-shell-at8Kt4l_.js.map +0 -1
- package/dist/auth-OFwWSAap.js +0 -704
- package/dist/auth-OFwWSAap.js.map +0 -1
- package/dist/breadcrumbs-DdQ_I5ra.js.map +0 -1
- package/dist/button-BS6l5JUw.js.map +0 -1
- package/dist/buttons-Co6GavvM.js +0 -674
- package/dist/buttons-Co6GavvM.js.map +0 -1
- package/dist/chart-DVfcwQu6.js +0 -149
- package/dist/chart-DVfcwQu6.js.map +0 -1
- package/dist/checkbox-BavDRjF7.js.map +0 -1
- package/dist/choice-inputs-CC7XqPQO.js +0 -619
- package/dist/choice-inputs-CC7XqPQO.js.map +0 -1
- package/dist/code-block-xHKbAJDj.js.map +0 -1
- package/dist/combobox-DEbdr-3u.js.map +0 -1
- package/dist/combobox-xv3yJbzl.js.map +0 -1
- package/dist/command-C0xe7u9B.js.map +0 -1
- package/dist/comments-DviPLnwy.js +0 -1132
- package/dist/comments-DviPLnwy.js.map +0 -1
- package/dist/containers-6s-ucRQQ.js.map +0 -1
- package/dist/data-display-cWIRdeaf.js.map +0 -1
- package/dist/date-picker-CA6ogMQB.js.map +0 -1
- package/dist/date-pickers-BPIKLdsD.js +0 -224
- package/dist/date-pickers-BPIKLdsD.js.map +0 -1
- package/dist/feedback-DWUkgEjR.js.map +0 -1
- package/dist/field-affordance-recipes-IjzPrCTw.js +0 -17
- package/dist/field-affordance-recipes-IjzPrCTw.js.map +0 -1
- package/dist/field-state-recipes-CBTRt9Bt.js.map +0 -1
- package/dist/filters-BhsUtsxW.js.map +0 -1
- package/dist/form-field-Bn7ZH1rA.js.map +0 -1
- package/dist/form-sizing-BWs70_a2.js.map +0 -1
- package/dist/forms-numeric-BUBxELBv.js +0 -867
- package/dist/forms-numeric-BUBxELBv.js.map +0 -1
- package/dist/header-C59QZyxV.js.map +0 -1
- package/dist/http-CLTVJc5I.js.map +0 -1
- package/dist/input-WwYQZJzG.js +0 -202
- package/dist/input-WwYQZJzG.js.map +0 -1
- package/dist/input-ci9fIgFH.js +0 -20
- package/dist/input-ci9fIgFH.js.map +0 -1
- package/dist/item-pJ0GsOiJ.js.map +0 -1
- package/dist/media-gallery-DhDRgnVZ.js.map +0 -1
- package/dist/message-COsdEvXT.js +0 -108
- package/dist/message-COsdEvXT.js.map +0 -1
- package/dist/navigation-BUIn2Qxx.js.map +0 -1
- package/dist/navigation-DBEu4POU.js.map +0 -1
- package/dist/navigation-row-recipes-GVh11KiT.js.map +0 -1
- package/dist/overlays-B11wZka6.js +0 -982
- package/dist/overlays-B11wZka6.js.map +0 -1
- package/dist/page-BV6ioQg3.js.map +0 -1
- package/dist/page-header-DQRa0jug.js.map +0 -1
- package/dist/pagination-C29vvt3I.js.map +0 -1
- package/dist/popover-CoLDEg19.js.map +0 -1
- package/dist/popover.recipes-zgBhMlUu.js.map +0 -1
- package/dist/primitives-DKPOGVpj.js.map +0 -1
- package/dist/progress-BOe8l_FZ.js.map +0 -1
- package/dist/rich-text-editor-CoVrTiSv.js +0 -575
- package/dist/rich-text-editor-CoVrTiSv.js.map +0 -1
- package/dist/rich-text-editor.recipes-DxvOE0Lp.js.map +0 -1
- package/dist/scroll-area-BheMQ270.js.map +0 -1
- package/dist/select-B2mb-qN2.js +0 -108
- package/dist/select-B2mb-qN2.js.map +0 -1
- package/dist/sheet-B-q914Ad.js.map +0 -1
- package/dist/sidebar-C_2p3Tfj.js.map +0 -1
- package/dist/sidebar-DPR7fmqN.js.map +0 -1
- package/dist/smart-card-CYLn46e6.js.map +0 -1
- package/dist/surface-recipes-CQfRr-VL.js.map +0 -1
- package/dist/table-BS39xnlq.js +0 -1424
- package/dist/table-BS39xnlq.js.map +0 -1
- package/dist/table-DnlAJ-xR.js.map +0 -1
- package/dist/tabs-B5cNMWiP.js +0 -187
- package/dist/tabs-B5cNMWiP.js.map +0 -1
- package/dist/text-inputs-Dh9XGyiS.js +0 -331
- package/dist/text-inputs-Dh9XGyiS.js.map +0 -1
- package/dist/text.styles-BwB7vAF2.js.map +0 -1
- package/dist/timelines-B9ICkQcV.js.map +0 -1
- package/dist/typography-Cv8MT-82.js +0 -96
- package/dist/typography-Cv8MT-82.js.map +0 -1
- package/dist/ui-provider-CftIB6TY.js.map +0 -1
- package/dist/upload-D8Za5x_c.js.map +0 -1
- package/dist/upload-queue-hIIYBLS7.js.map +0 -1
- package/dist/usage-card-DnmnJ58D.js.map +0 -1
- package/dist/utils-C2EKeIw3.js +0 -72
- package/dist/utils-C2EKeIw3.js.map +0 -1
- package/dist/value-inputs-DX2dbxjj.js +0 -824
- package/dist/value-inputs-DX2dbxjj.js.map +0 -1
- package/dist/workspace-C1PZmk8L.js.map +0 -1
|
@@ -30,6 +30,7 @@ a detail workspace or a form; they need different information hierarchies.
|
|
|
30
30
|
| ResourceCell | Identity inside a table cell | Item for independent list entries; MetadataList for label/value facts about one subject |
|
|
31
31
|
| Page / application shell | Route identity, navigation, content bounds and page commands | Card for an independent subject within that route; do not repeat the same heading merely to frame a table |
|
|
32
32
|
| Card | One subject needs a frame and headed regions | `surface="flat" padding="none"` inside an existing boundary; nested DataTable uses its own `surface="flat"` |
|
|
33
|
+
| Metric / MetricGrid / MetricBar | A KPI needs formatted value, comparison/trend or peer layout | UsageCard for used/limit quotas; InlineStat for one plain fact, MetadataList for several record facts |
|
|
33
34
|
| FormField / InlineEdit | A field needs label/hint/error, or isolated save/cancel | Complete feature/overlay for a workflow; app form owns whole-record submission |
|
|
34
35
|
|
|
35
36
|
For a DataTable composition, put queries in `topbarContent`, exports or collection
|
|
@@ -74,6 +75,34 @@ and public anatomy, not imitate one screenshot.
|
|
|
74
75
|
|
|
75
76
|
Use the exact family declarations from public-api.json. Catalogue URLs and source folders are not import contracts.
|
|
76
77
|
|
|
78
|
+
For dashboard KPIs, revenue and statistic cards, read the focused
|
|
79
|
+
[analytics selection and recipe](analytics.md). Metric's card variant,
|
|
80
|
+
MetricGrid's default peers and UsageCard own their surfaces. A distinct custom
|
|
81
|
+
Card subject remains valid; compare the complete subject contract before rebuilding
|
|
82
|
+
formatting, hierarchy or request-state presentation from lower text primitives.
|
|
83
|
+
|
|
84
|
+
## Public websites and service overviews
|
|
85
|
+
|
|
86
|
+
Compose a landing page or public website from its content. `Container` owns the
|
|
87
|
+
centered measure and inline gutters; `Section` owns semantic content groups and
|
|
88
|
+
their sibling rhythm. Stack/Grid arrange copy, actions and peer subjects. Shared
|
|
89
|
+
Heading/Text roles preserve typography while heading tags express document order.
|
|
90
|
+
Choose `Page` when its route identity, commands and composition slots fit; choose
|
|
91
|
+
Container/Section when content leads. AppLayout supplies application chrome when
|
|
92
|
+
the product needs it. These are application choices, not required website shells.
|
|
93
|
+
|
|
94
|
+
The app owns section order, hero content, media, link destinations, responsive
|
|
95
|
+
placement and brand theming through existing semantic roots. Keep one inset owner:
|
|
96
|
+
Container supplies inline gutters, a site boundary may supply semantic block
|
|
97
|
+
padding, and each independently framed subject keeps Card's default inset.
|
|
98
|
+
|
|
99
|
+
A service offer or pricing option is a legitimate Card subject. Put its name and
|
|
100
|
+
description in the header, price through Money, and navigation in the footer seam.
|
|
101
|
+
Metric/MetricGrid represent observed KPIs and comparisons; a selling price belongs
|
|
102
|
+
to the offer's content. Preserve application-owned currency, billing terms and
|
|
103
|
+
destinations. See the typed [website recipe](../examples/website.tsx), which uses
|
|
104
|
+
ordinary document scrolling and a responsive service grid with real link actions.
|
|
105
|
+
|
|
77
106
|
## Typography and rich content
|
|
78
107
|
|
|
79
108
|
Choose Heading, Text, DisplayLabel, Label and TextLink from the published
|
|
@@ -101,15 +130,44 @@ the content owner. Embedded React UI can opt out of reading rhythm through
|
|
|
101
130
|
`not-typeset` or `data-not-typeset` on its subtree; those opt-outs do not bypass
|
|
102
131
|
HTML sanitization or establish a separate typography system.
|
|
103
132
|
|
|
133
|
+
### Visual heading emphasis
|
|
134
|
+
|
|
135
|
+
`Heading tag="h1"` preserves the compact admin default. For website/hero copy,
|
|
136
|
+
choose `size="3xl"` or `size="4xl"`; sections may use `size="xl"` or `"2xl"`.
|
|
137
|
+
The semantic tag, visual size and surrounding Section/Stack gap are independent.
|
|
138
|
+
Existing text-size classes remain supported overrides. Section owns rhythm,
|
|
139
|
+
Container owns measure/gutters, and application utilities may own a hero's outer
|
|
140
|
+
padding or background. No additional section/hero theme tokens are required.
|
|
141
|
+
See the [website example](../examples/website.tsx) for both hero and section emphasis.
|
|
142
|
+
|
|
143
|
+
|
|
104
144
|
## Card anatomy
|
|
105
145
|
|
|
106
146
|
Card surface="card" is the ordinary bordered surface; surface="framed" retains its ring recipe; surface="flat" padding="none" composes within an existing boundary. headerPlacement="frame" places title/icon/actions above an inset body, retaining default corners and using rounded-inner on that body.
|
|
107
147
|
|
|
148
|
+
Choose one ordinary Card surface through UIProvider's `card.defaultSurface` and
|
|
149
|
+
let sibling subjects inherit it. Explicit per-card surfaces win: mixing `card`
|
|
150
|
+
and `framed` intentionally changes their visible treatment. Header placement is
|
|
151
|
+
independent: `inside` keeps the heading with the body; `frame` puts context and
|
|
152
|
+
commands on the outer frame above the inset body. Use `icon={<Icon />}` for a
|
|
153
|
+
routine heading glyph and plain `title`; embedding raw SVG in title JSX bypasses
|
|
154
|
+
the owner's icon sizing. Custom titles remain appropriate for richer content.
|
|
155
|
+
|
|
108
156
|
Card `gap` owns spacing between regions; `contentGap` owns direct body-child
|
|
109
157
|
spacing; `textGap` owns title/supporting-copy rhythm. Region spacing defaults to
|
|
110
158
|
`xl` (`md` for `padding="none"`). Use a semantic region gap for compact cards
|
|
111
159
|
instead of resetting padding or adding local margins.
|
|
112
160
|
|
|
161
|
+
Ordinary independent cards omit `padding` and retain `md` (the full surface
|
|
162
|
+
inset, 20px at default roots). `sm` is half that inset (10px), for a deliberately
|
|
163
|
+
compact subject; it is not the default for forms, settings, metrics or resource
|
|
164
|
+
pages. Component size and
|
|
165
|
+
density do not choose Card padding. `lg` uses 1.8 times the inset (36px), while
|
|
166
|
+
`none` removes it. All sizes follow the surface roots and space-scale.
|
|
167
|
+
UIProvider can configure both
|
|
168
|
+
`card.defaultHeaderDivider` and `card.defaultFooterDivider`; explicit per-card
|
|
169
|
+
booleans win. Header/footer-only cards still render one shared divider.
|
|
170
|
+
|
|
113
171
|
Use titleSuffix for status/count/version badges. Long titles/suffixes wrap through the shared owner; no literal spaces/local margins to manufacture gaps. headerAction/actions are trailing controls, headerStart pre-title context. footerSlot/footer definitions own card-level actions; footerDivider owns the rule and inset. Do not simulate a footer inside children. SmartCard and ContentBlock are deprecated migration names; use Card in new code.
|
|
114
172
|
|
|
115
173
|
Reusable blocks/features stay card-free unless their explicit purpose is a card. Frame them at the composition boundary.
|
|
@@ -120,6 +178,18 @@ Shells own gutters, surfaces own padding, sections own rhythm, Stack/Grid own si
|
|
|
120
178
|
|
|
121
179
|
Grid exposes viewport columns; AdaptiveGrid responds to parent width and a semantic minimum column size. GridCell spans belong to the nearest Grid. Keep narrow DOM order meaningful. Horizontal Stack wraps by default; disable it only when overflow is intentionally handled. Tailwind is appropriate for min-w-0, positioning, overflow and drawing geometry.
|
|
122
180
|
|
|
181
|
+
Independent surfaces need peer rhythm, usually `gap="xl"`; Stack's default
|
|
182
|
+
`md` is general sibling spacing, not a card-grid prescription. Framed Card rings
|
|
183
|
+
extend outside layout rectangles, so two rings can consume a small DOM gap.
|
|
184
|
+
Inspect visible edge clearance in both axes rather than accepting token use alone.
|
|
185
|
+
Copy gaps normal/dense are for supporting text, not spacing independent cards.
|
|
186
|
+
|
|
187
|
+
MetadataList owns medium-weight labels and normal-weight routine values. Its
|
|
188
|
+
compact density tightens gaps/rows without shrinking primary values. Plain values
|
|
189
|
+
and typed descriptors retain the shared roles; React nodes, `display` and `render`
|
|
190
|
+
preserve supplied typography. Keep custom formatted values consistent with value
|
|
191
|
+
primitives rather than replacing labels and values with undifferentiated Text.
|
|
192
|
+
|
|
123
193
|
## Menus and controls
|
|
124
194
|
|
|
125
195
|
PopoverContent type="display" owns substantive-content padding; type="menu" compact collection padding around already-padded rows. Popover and Command share inset="default" and inset="compact" paradigms. Mixed searchable shells use inset="flush"; public header/search/list/footer anatomy owns its insets automatically. CommandInput composes the public Input for control geometry and focus styling; its search region adds only outer spacing. Do not pass padding through className, contentClassName or inline styles. Compact header controls and footer actions align with row highlight edges; header text and footer captions align with row labels. Use PopoverHeader start for a leading control and PopoverFooter caption for supporting content alongside trailing action children. Dividers use the same semantic recipe. density selects vertical row rhythm without changing inline padding. ActionMenu owns action definitions, PopoverMenu searchable selection, DropdownMenu bespoke menu anatomy. Shared appearance preserves their accessible menu/listbox/dialog behavior.
|
|
@@ -132,6 +202,13 @@ PopoverContent type="display" owns substantive-content padding; type="menu" comp
|
|
|
132
202
|
| density="compact" / "default" / "comfortable" | Collection row block rhythm, independent from inline spacing |
|
|
133
203
|
| size="sm" / "md" / "lg" | Supported control's scale; consult its declaration and provider precedence |
|
|
134
204
|
|
|
205
|
+
Input, Button, Select and filter-facet triggers share bounded inner corners
|
|
206
|
+
and corresponding heights; Card and popup shells use the global outer radius. Omitted sizes inherit the provider; explicit sizes win.
|
|
207
|
+
Keep action/control roots equal when those controls adjoin. Compact menu rows,
|
|
208
|
+
surface insets and control sizes remain independent; density can tighten the
|
|
209
|
+
inner-radius height bound without changing outer corners.
|
|
210
|
+
Inset segmented children use the supported compound owner's same-height frame.
|
|
211
|
+
|
|
135
212
|
PopoverContent defaults to display/default; Command defaults to compact. An explicit PopoverContent type controls anatomy; explicit inset controls padding and takes precedence over the type's inferred inset. Without type, compact implies menu, other insets imply display. Put type="menu" inset="flush" on PopoverContent for a headed searchable picker. Popover is the interaction root and receives no surface props. PopoverMenu already assembles that picker anatomy; use its declared selection/search props. ComboboxPopup is flush because ComboboxList owns its inset. Do not add another wrapper inset around a normal collection list.
|
|
136
213
|
|
|
137
214
|
At shipped roots, compact shell padding is 8px; row inline padding is 12px; default row block padding is 8px and minimum height 36px. Compact/comfortable rows use 6/10px block padding and 32/40px minimum heights. Content can grow when it wraps. These are token-derived measurements, not app constants. Flush compact header/footer shell padding matches the list (8px inline). Header text bodies without a leading control and footer captions add the row inset once, aligning text at 20px. Actions keep the 8px shell edge. Nested public slots do not repeat these insets.
|
|
@@ -150,8 +227,8 @@ Use exact themelia-react-ui paths. Presentation imports use blocks/<family>, rep
|
|
|
150
227
|
## Copy rhythm
|
|
151
228
|
|
|
152
229
|
For title/supporting-copy rhythm use `textGap="normal" | "dense"` on Card,
|
|
153
|
-
PageHeading and public surface headers
|
|
154
|
-
|
|
230
|
+
PageHeading and public surface headers. The installed token reference records
|
|
231
|
+
their unscaled defaults. Item/ItemContent and menu popover headers default to dense.
|
|
155
232
|
Stack/Grid accept the same semantic gaps, including responsive objects and
|
|
156
233
|
axis overrides. Keep surface insets and action-cluster gaps on their owners;
|
|
157
234
|
do not add a second margin to descriptions.
|
|
@@ -257,6 +334,43 @@ parent width while preserving main-before-aside DOM/focus order.
|
|
|
257
334
|
|
|
258
335
|
See the installed [workspace recipe](../examples/app-layout.tsx).
|
|
259
336
|
|
|
337
|
+
PageViewport owns scrolling and adds no padding. Page defaults to `gutter="lg"`
|
|
338
|
+
and `padding="lg"` (36px at shipped roots), so it owns inline/block space once.
|
|
339
|
+
`narrow` selects centered `md` width; explicit `maxWidth` wins. Header copy
|
|
340
|
+
defaults to dense; `textGap="normal"` is an explicit alternative. Do not assume
|
|
341
|
+
an app shell supplies gutters because it supplies a viewport. Set `gutter="none"`
|
|
342
|
+
only when an actual parent Container/surface supplies the inline inset, such as
|
|
343
|
+
StackedLayout's contained mode. Block padding remains independent.
|
|
344
|
+
That contained measure uses the same large gutter as Page; ordinary Container
|
|
345
|
+
defaults remain unchanged.
|
|
346
|
+
|
|
347
|
+
Select width from the task: a single focused resource/form can use `narrow`;
|
|
348
|
+
a record with a supporting aside can retain the default `lg` measure and use
|
|
349
|
+
TwoColumnLayout. A wide comparison/directory can deliberately use `maxWidth="full"`.
|
|
350
|
+
Setting full on every route defeats the resource measure. Do not remove Page's
|
|
351
|
+
gutters to make its title touch the sidebar; align the header and body through
|
|
352
|
+
the same Page. Density, container measure and page inset are separate choices.
|
|
353
|
+
The [detail recipe](../examples/detail.tsx) includes `AccountDetailPage`: a
|
|
354
|
+
centered resource measure, route-level commands, native Card icon/frame anatomy
|
|
355
|
+
and MetadataList facts, with no duplicated subject header or gutter.
|
|
356
|
+
|
|
357
|
+
Compose HeaderUserMenu in topbar `slots.headerEnd` or a local toolbar, and
|
|
358
|
+
SidebarNavigationUser in AppSidebar `slots.footer` when account access belongs
|
|
359
|
+
in navigation. Use SidebarWorkspaceDropdown for workspace links, or add a
|
|
360
|
+
custom control through `slots.headerEnd` alongside the logo. `headerStart` and
|
|
361
|
+
`headerEnd` stay inside the padded, fixed header; `slots.header` replaces it all.
|
|
362
|
+
`beforeNavigation` scrolls with the links. SidebarFooter owns its rule and inset.
|
|
363
|
+
LayoutSidebarProvider defaults to compact row gaps; explicit density still wins.
|
|
364
|
+
WorkspaceLayout owns its own bounded content inset; do not add a padded Page
|
|
365
|
+
inside it. WorkspaceRecordHeader and WorkspaceLocaleStrip align to the same
|
|
366
|
+
large inline surface role. Record copy supports textGap with a dense default.
|
|
367
|
+
Below 80rem of its own width, WorkspaceLayout scrolls header and body together;
|
|
368
|
+
above that boundary its main region scrolls beside the sidebar. Its rail appears
|
|
369
|
+
at 96rem. Supply header/drawer access to essential hidden regions on narrow
|
|
370
|
+
screens; this passive layout does not create a complete mobile workflow.
|
|
371
|
+
Do not infer workspace/user menus from a generic Avatar: choose their actual
|
|
372
|
+
published owners and supply permitted callbacks. The app owns user/workspace data.
|
|
373
|
+
|
|
260
374
|
## Task and usage summaries, editable fields
|
|
261
375
|
|
|
262
376
|
| Intent | Public owner | Composition boundary |
|
|
@@ -57,15 +57,36 @@ an explicitly expandable card retains its collapse region.
|
|
|
57
57
|
| `--space-scale` | Shared gaps, inline insets and surface padding | Row block/control-height density |
|
|
58
58
|
| `--density-scale` | Action/control heights and row block padding | Inline room or primary text hierarchy |
|
|
59
59
|
|
|
60
|
-
`--gap-normal` and `--gap-dense` default to 0.
|
|
60
|
+
`--gap-normal` and `--gap-dense` default to 0.25rem and 0.125rem. Their utilities
|
|
61
61
|
multiply once by `--space-scale`. Descriptions have no extra margin. These are
|
|
62
62
|
copy gaps; larger section and action-cluster gaps remain on their own owners.
|
|
63
63
|
The [token reference](tokens.json) records the installed defaults and vocabulary.
|
|
64
64
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
65
|
+
Outer Card, popup and Command shells use `rounded-radius`: the shadcn root,
|
|
66
|
+
12px by default. Input, Button, Select/facet triggers, collection highlights,
|
|
67
|
+
navigation rows and intentional nested bodies use the shared `rounded-inner`
|
|
68
|
+
role, 9px by default. It derives at 0.75× and is bounded by one quarter of the
|
|
69
|
+
smaller action/control base height, scaled by density. A larger global root
|
|
70
|
+
therefore cannot turn short controls into capsules. See [the exact theme
|
|
71
|
+
recipe](theming.md). Density can tighten the inner bound; it does not change
|
|
72
|
+
outer corners. Spacing scale and padding do not select another radius tier.
|
|
73
|
+
|
|
74
|
+
Use the public component defaults instead of adding radius classes to callers.
|
|
75
|
+
Joined edges may reset their meeting corners. Circular indicators and avatars
|
|
76
|
+
retain their shape; Badge retains its root-based recipe. Elevation uses the
|
|
77
|
+
existing shadow ladder, with family recipes selecting the tier; neither a
|
|
78
|
+
card/menu radius root nor a separate shadow root is needed.
|
|
79
|
+
|
|
80
|
+
For appearance feedback, compare the actual open/focused state with the requested
|
|
81
|
+
theme value. Inspect CSS radius resolution, dimensions, clipping, borders and
|
|
82
|
+
rings as well as the computed root. Correct the visible problem at its owner;
|
|
83
|
+
matching radius values alone do not establish that the result looks right.
|
|
84
|
+
|
|
85
|
+
For adjoining fields and actions, keep `--height-action` and `--height-control`
|
|
86
|
+
equal and choose corresponding supported sizes. Omit `size` to inherit the
|
|
87
|
+
provider scale; an explicit prop intentionally takes precedence. Feature wrappers
|
|
88
|
+
should preserve that inheritance rather than force `md` on one facet while its
|
|
89
|
+
neighbor inherits `sm`. Deliberately different action/field roots remain supported.
|
|
69
90
|
|
|
70
91
|
Structural dividers use one private recipe owner with explicit frame, anchored
|
|
71
92
|
and modal roles. They share the semantic `border` root; their established strength
|
|
@@ -102,12 +123,17 @@ for logical geometry, keyboard navigation and anchored positioning; see
|
|
|
102
123
|
3. Change an existing shared root at the intended [theme boundary](theming.md) when several related components should move together.
|
|
103
124
|
4. If the public API cannot express a recurring composition, request an additive seam at that owner. Keep genuinely application-specific geometry namespaced in the application.
|
|
104
125
|
|
|
105
|
-
|
|
106
|
-
|
|
126
|
+
Use Card's `padding` and slots, and Popover/Command/Select/Combobox's supported
|
|
127
|
+
inset and region props to correct shared padding. Preserve their internal recipe
|
|
128
|
+
instead of replacing it through `contentClassName`, inline styles, descendants and
|
|
107
129
|
forwarding wrappers. Likewise, do not locally replace fixed control typography
|
|
108
130
|
or make descriptions carry surrounding margins. The same restriction applies
|
|
109
131
|
to token-backed overrides: a semantic utility can still be used on the wrong owner.
|
|
110
132
|
|
|
133
|
+
For custom copy, use `<Stack gap="dense">` around a title and description rather
|
|
134
|
+
than `className="mt-space-sm"` on the description's Text. Preserve Text/Heading's
|
|
135
|
+
size and semantic-element APIs; move surrounding margins to the structure owner.
|
|
136
|
+
|
|
111
137
|
Theme inheritance belongs to CSS. Use ThemeScope for scoped portals; an explicit
|
|
112
138
|
portal container must live in the intended boundary. Provider defaults and app
|
|
113
139
|
callbacks do not form a parallel JavaScript styling system. Opening a popup is
|
|
@@ -14,11 +14,22 @@ node node_modules/themelia-react-ui/docs/consumer-skill/scripts/find-components.
|
|
|
14
14
|
|
|
15
15
|
For a copied skill, replace the script path with that copy's `scripts/find-components.mjs`. Copy the complete skill folder: the script resolves its adjacent `references/public-api.json` relative to itself, regardless of the working directory. It needs Node compatible with the package's engine requirement, not an npm/global CLI or extra dependency.
|
|
16
16
|
|
|
17
|
-
Queries accept multiple words, quoted or separate. Every term must match
|
|
17
|
+
Queries accept multiple words, quoted or separate. Every term must match metadata
|
|
18
|
+
as a word; `stat` does not match `state` or `status`. An unknown term produces
|
|
19
|
+
empty results. Exact imports and case-exact exported names such as `Table` or
|
|
20
|
+
`Empty` select their precise contract. Ordinary task nouns `table` and `empty`
|
|
21
|
+
retain DataTable/DataView and EmptyState alongside the base anatomy. Exported
|
|
22
|
+
types and helper symbols remain available by their exact API name; documented
|
|
23
|
+
component symbols and curated aliases drive task recommendations.
|
|
24
|
+
`--layer` filters the technical package layer: `foundations`, `base`, `layout`,
|
|
25
|
+
`blocks` or `features`. This differs from browse sections: Structure browses
|
|
26
|
+
Foundations but filters under `--layer base`. `--limit` accepts 1–100 and defaults
|
|
27
|
+
to 5. Invalid flags/options or incompatible indexes exit nonzero on stderr.
|
|
18
28
|
|
|
19
29
|
If a query returns no results, shorten it to the main responsibility or an exact
|
|
20
|
-
symbol, then remove the layer filter.
|
|
21
|
-
|
|
30
|
+
symbol, then remove the layer filter. No result does not prove the package lacks
|
|
31
|
+
that responsibility. Read the selected result's choose/avoid guidance and
|
|
32
|
+
alternatives, then follow `nextReads`; do not load every reference. For routine compact searchable selection, search
|
|
22
33
|
`PopoverMenu` or `compact searchable selection`; surface adjectives describe
|
|
23
34
|
variants, not permission to rebuild the owner's padding.
|
|
24
35
|
|
|
@@ -35,13 +46,73 @@ or `theme boundary`. Read choose/avoid and app-owned responsibilities before
|
|
|
35
46
|
deciding; a directory result does not require DataView when its workflow differs.
|
|
36
47
|
Unknown terms still return no result; no fuzzy API or guessed prop is invented.
|
|
37
48
|
|
|
38
|
-
|
|
49
|
+
Task language also includes `dashboard KPIs`, `dashboard metrics`, `revenue
|
|
50
|
+
overview`, `statistic cards`, `usage statistics` and `single resource page`.
|
|
51
|
+
`dark header` and `light header` select AppLayout shell composition.
|
|
52
|
+
KPI peers select MetricGrid/MetricBar guidance; one statistic card selects Metric;
|
|
53
|
+
usage quotas select the focused UsageCard leaf; a record route selects Page.
|
|
54
|
+
The [analytics reference](analytics.md) explains their boundary with simple
|
|
55
|
+
InlineStat facts, MetadataList and legitimate custom Card subjects.
|
|
56
|
+
|
|
57
|
+
`kpi`, `metric card`, `number card`, `statistics` and `stat` expose Metric.
|
|
58
|
+
`key value` and `details` retain MetadataList and InlineStat before helper rows.
|
|
59
|
+
`chat` includes Message/MessageBubble as well as AiChat: choose message presentation
|
|
60
|
+
or the complete prompt/conversation workflow according to the task. `markdown`
|
|
61
|
+
routes to RichText's sanitized `html` display contract; the application converts
|
|
62
|
+
Markdown to HTML. It does not introduce a Markdown parser or an invented renderer.
|
|
63
|
+
|
|
64
|
+
For `website landing page`, `public website` or `service overview`, discovery
|
|
65
|
+
selects Container/Section and the focused [website composition](composition.md#public-websites-and-service-overviews)
|
|
66
|
+
recipe. Choose Page instead when its route identity/command contract fits the
|
|
67
|
+
content; application chrome and analytics are separate responsibilities.
|
|
68
|
+
|
|
69
|
+
For geometry, `radius`, `border radius`, `control corners` and `control heights` select the existing UIProvider/theme
|
|
70
|
+
boundary guidance; `copy gaps` selects Structure. Their focused references explain
|
|
71
|
+
outer/inner corner roles, corresponding sizes, inherited defaults and normal/dense
|
|
72
|
+
copy rhythm even when no executable recipe matches the query. `page padding`
|
|
73
|
+
selects Page; `card padding` selects Card. Read those owners before adding local
|
|
74
|
+
gutters, reducing normal Card insets or rebuilding their headers/footers.
|
|
75
|
+
|
|
76
|
+
Output is deterministic JSON: package/version, query/options, total matching
|
|
77
|
+
families and bounded `results`. Each result includes exact `import`, packaged
|
|
78
|
+
`declaration`, technical `layer`, responsibility, required `optionalPeers`, match
|
|
79
|
+
kind, exact `matchedSymbols`, `relevantSymbols`, `nextReads` and up to three
|
|
80
|
+
relevant guidance entries. Exact symbol queries keep that symbol; intent queries
|
|
81
|
+
derive relevantSymbols from selected catalogue API sections and current public
|
|
82
|
+
exports. An exact family import retains the complete public symbol vocabulary.
|
|
83
|
+
Exact guide aliases precede generic overlap, and unrelated family pages
|
|
84
|
+
do not fill the result merely to reach three entries.
|
|
85
|
+
|
|
86
|
+
`nextReads.declaration` is relative to the installed package root.
|
|
87
|
+
`nextReads.references` and `nextReads.examples[].file` are relative to this
|
|
88
|
+
skill folder, so they also work with a complete copied skill. Examples report
|
|
89
|
+
their actual exported recipe names and the selected public symbols they use.
|
|
90
|
+
Recipe selection requires symbol overlap, not just a common family import.
|
|
91
|
+
This prevents a PageHeader selection from inheriting Page-only recipes. A
|
|
92
|
+
recipe's `optionalPeers` comes from its manifest and can include other families'
|
|
93
|
+
requirements beyond the selected owner's peers. Inspect it before copying. A
|
|
94
|
+
selected family with no matching recipe reports empty references/examples;
|
|
95
|
+
use its declaration and the [full index](public-api.json), without guessing.
|
|
96
|
+
|
|
97
|
+
Family sections/guidance placement follows browse responsibility. Guidance
|
|
98
|
+
carries jobs, tags, aliases, choose/avoid, app ownership, browse context, API
|
|
99
|
+
sections/symbols and alternatives resolved to exact imports. Results suggest
|
|
100
|
+
owners and focused reads; declarations establish actual props and behavior.
|
|
39
101
|
|
|
40
102
|
Read each declaration relative to the installed package root, for example `node_modules/themelia-react-ui/dist/components/base/cards/index.d.ts`, following its relative exports as needed. Copying this skill copies metadata, not the declaration tree: use declarations from the same installed package version. Never combine metadata from one version with another version's declarations.
|
|
41
103
|
|
|
42
104
|
`ThemeScope` has distinct contracts. Root and `themelia-react-ui/ui-provider` export the basic CSS-inheritance boundary with native div/style props and portal hosting. `themelia-react-ui/features/theme-tweaker` exports the advanced theme-definition scope. Inspect the result's responsibility and that exact family's declaration before selecting props.
|
|
43
105
|
|
|
44
|
-
The index retains
|
|
106
|
+
The index retains schemaVersion/discoveryVersion 1; optional family `recipes` and `references`
|
|
107
|
+
are compatible additions. Package identity/peers derive from the published
|
|
108
|
+
manifest, symbols/declarations from live exports, and jobs/guidance from the
|
|
109
|
+
consumer catalogue. Recipe metadata derives from the existing example manifest,
|
|
110
|
+
each export's actual use of exact public imports and reference-to-recipe section links; it adds no
|
|
111
|
+
independent task taxonomy. Older matching indexes without recipes still work
|
|
112
|
+
and return empty recipe reads. Utility/root responsibilities have explicit
|
|
113
|
+
owners when no catalogue family represents them. Optional peer requirements
|
|
114
|
+
follow transitive local imports, including type-only and resolved `@types` peers.
|
|
115
|
+
These describe whole-family requirements; tree shaking may produce a smaller graph.
|
|
45
116
|
|
|
46
117
|
Routing, records, translation, permissions and backend effects stay in the application. Discovery grants no publication or global installation authority.
|
|
47
118
|
|
|
@@ -18,6 +18,20 @@ Load intentional, scoped app overrides after the package stylesheet. Keep broad
|
|
|
18
18
|
|
|
19
19
|
UIProvider supplies stable mount-time defaults: explicit prop, provider default, fallback. Per-mount requests/data/callbacks stay on components. ThemeScope from themelia-react-ui/ui-provider places descendant portals inside its CSS boundary. A styled div does not relocate body portals; explicit Base UI portal containers take precedence.
|
|
20
20
|
|
|
21
|
+
For separated card regions, configure the single application provider with
|
|
22
|
+
`card: { defaultSurface: 'card', defaultHeaderDivider: true, defaultFooterDivider: true }`.
|
|
23
|
+
Explicit Card booleans, including false, override these defaults. Ordinary card
|
|
24
|
+
padding remains md, independent of density. The typed [workspace recipe](../examples/app-layout.tsx)
|
|
25
|
+
exports `workspaceUIDefaults` for that root configuration and composes the public
|
|
26
|
+
workspace/user controls. It does not mount another UIProvider inside the app.
|
|
27
|
+
|
|
28
|
+
Page owns inline/block insets and offers `narrow` for a centered resource page.
|
|
29
|
+
PageViewport owns scroll containment only. Check actual padding before passing
|
|
30
|
+
`gutter="none"`; a local guide claiming all shell viewports are padded contradicts
|
|
31
|
+
the installed contract. Fix that app policy through its own review rather than
|
|
32
|
+
compensating with card or field padding. Bounded AppSidebar instances use h-full
|
|
33
|
+
inside the shell's constrained column; standalone sidebars may use viewport height.
|
|
34
|
+
|
|
21
35
|
For RTL, pair the native DOM direction with `DirectionProvider` from the same
|
|
22
36
|
entrypoint. Native `dir` owns text flow and logical CSS geometry; the provider
|
|
23
37
|
owns Base UI keyboard navigation and popup positioning. It does not set `dir`.
|