@kerfjs/ui 5.0.0-beta.55 → 5.0.0-beta.57
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/README.md +74 -41
- package/ai/application-ui-diagnostic-ids-v1.json +9 -1
- package/ai/application-ui-profile-sync.cjs +1 -1
- package/ai/application-ui-profile.defaults.json +63 -8
- package/ai/application-ui-profile.mjs +1 -1
- package/ai/compile-time-contracts-v1.json +2 -2
- package/ai/component-catalog.json +407 -80
- package/ai/component-catalog.schema.json +2 -0
- package/ai/component-class-owners.cjs +83 -0
- package/ai/component-composition-extension.d.ts +7 -0
- package/ai/component-composition-extension.schema.json +7 -0
- package/ai/{component-catalog-v2-overrides.json → component-composition-rules.json} +2 -1
- package/ai/{component-catalog-v2.d.ts → component-composition.d.ts} +9 -5
- package/ai/{component-catalog-v2.json → component-composition.json} +302 -61
- package/ai/{component-catalog-v2.schema.json → component-composition.schema.json} +21 -5
- package/ai/components/README.md +170 -0
- package/ai/components/application-tabs.md +65 -0
- package/ai/components/badge.md +72 -0
- package/ai/components/collapsible-panel.md +102 -0
- package/ai/components/content-item.md +90 -0
- package/ai/components/disclosure-arrow.md +77 -0
- package/ai/components/document-baseline.md +75 -0
- package/ai/components/empty-state.md +80 -0
- package/ai/components/feedback.md +71 -0
- package/ai/components/floating-toolbar.md +80 -0
- package/ai/components/foundation.md +65 -0
- package/ai/components/grid.md +93 -0
- package/ai/components/headers.md +63 -0
- package/ai/components/layout.md +75 -0
- package/ai/components/list-action-row.md +91 -0
- package/ai/components/list-header.md +89 -0
- package/ai/components/list-inset-control.md +74 -0
- package/ai/components/list-inset-text.md +72 -0
- package/ai/components/list-item.md +88 -0
- package/ai/components/list.md +103 -0
- package/ai/components/loading-spinner.md +72 -0
- package/ai/components/lucide-icon.md +66 -0
- package/ai/components/nav-stack.md +103 -0
- package/ai/components/pane.md +100 -0
- package/ai/components/popup-menu.md +82 -0
- package/ai/components/recipe-app-shell.md +57 -0
- package/ai/components/recipe-collapsible-sidebar.md +57 -0
- package/ai/components/recipe-compact-toolbar.md +57 -0
- package/ai/components/recipe-composer-form.md +57 -0
- package/ai/components/recipe-list-detail-dialog.md +57 -0
- package/ai/components/recipe-list-workspace-states.md +57 -0
- package/ai/components/recipe-loading-inspector.md +57 -0
- package/ai/components/recipe-navigation-sidebar.md +57 -0
- package/ai/components/recipe-navigation-stack.md +57 -0
- package/ai/components/recipe-workspace-header.md +57 -0
- package/ai/components/resize.md +101 -0
- package/ai/components/row.md +96 -0
- package/ai/components/segmented-control.md +82 -0
- package/ai/components/select.md +107 -0
- package/ai/components/skeleton.md +84 -0
- package/ai/components/spacer.md +86 -0
- package/ai/components/split-view.md +102 -0
- package/ai/components/state-banner.md +92 -0
- package/ai/components/sunken-panel.md +79 -0
- package/ai/components/surface-scaffold.md +78 -0
- package/ai/components/tab-bar.md +112 -0
- package/ai/components/tab-scaffold.md +94 -0
- package/ai/components/tabs.md +90 -0
- package/ai/components/text.md +82 -0
- package/ai/components/token-search-field.md +101 -0
- package/ai/components/toolbar-control-group.md +100 -0
- package/ai/components/toolbar-text.md +76 -0
- package/ai/components/toolbar.md +95 -0
- package/ai/components/value-table.md +72 -0
- package/ai/components/wa-accordion-item.md +55 -0
- package/ai/components/wa-accordion.md +65 -0
- package/ai/components/wa-animated-image.md +55 -0
- package/ai/components/wa-animation.md +55 -0
- package/ai/components/wa-avatar.md +55 -0
- package/ai/components/wa-badge.md +55 -0
- package/ai/components/wa-breadcrumb-item.md +53 -0
- package/ai/components/wa-breadcrumb.md +55 -0
- package/ai/components/wa-button-group.md +59 -0
- package/ai/components/wa-button.md +55 -0
- package/ai/components/wa-callout.md +58 -0
- package/ai/components/wa-card.md +59 -0
- package/ai/components/wa-carousel-item.md +53 -0
- package/ai/components/wa-carousel.md +55 -0
- package/ai/components/wa-checkbox-group.md +55 -0
- package/ai/components/wa-checkbox.md +55 -0
- package/ai/components/wa-color-picker.md +55 -0
- package/ai/components/wa-comparison.md +55 -0
- package/ai/components/wa-copy-button.md +55 -0
- package/ai/components/wa-details.md +61 -0
- package/ai/components/wa-dialog.md +59 -0
- package/ai/components/wa-divider.md +53 -0
- package/ai/components/wa-drawer.md +55 -0
- package/ai/components/wa-dropdown-item.md +60 -0
- package/ai/components/wa-dropdown.md +60 -0
- package/ai/components/wa-format-bytes.md +53 -0
- package/ai/components/wa-format-date.md +53 -0
- package/ai/components/wa-format-number.md +53 -0
- package/ai/components/wa-icon.md +58 -0
- package/ai/components/wa-include.md +53 -0
- package/ai/components/wa-input.md +59 -0
- package/ai/components/wa-intersection-observer.md +53 -0
- package/ai/components/wa-known-date.md +53 -0
- package/ai/components/wa-markdown.md +53 -0
- package/ai/components/wa-mutation-observer.md +53 -0
- package/ai/components/wa-number-input.md +55 -0
- package/ai/components/wa-option.md +59 -0
- package/ai/components/wa-otp-input.md +53 -0
- package/ai/components/wa-page.md +53 -0
- package/ai/components/wa-pagination.md +55 -0
- package/ai/components/wa-popover.md +55 -0
- package/ai/components/wa-popup.md +53 -0
- package/ai/components/wa-progress-bar.md +53 -0
- package/ai/components/wa-progress-ring.md +53 -0
- package/ai/components/wa-qr-code.md +53 -0
- package/ai/components/wa-radio-group.md +59 -0
- package/ai/components/wa-radio.md +55 -0
- package/ai/components/wa-random-content.md +53 -0
- package/ai/components/wa-rating.md +55 -0
- package/ai/components/wa-relative-time.md +53 -0
- package/ai/components/wa-resize-observer.md +53 -0
- package/ai/components/wa-scroller.md +53 -0
- package/ai/components/wa-select.md +63 -0
- package/ai/components/wa-skeleton.md +53 -0
- package/ai/components/wa-slider.md +55 -0
- package/ai/components/wa-spinner.md +58 -0
- package/ai/components/wa-split-panel.md +58 -0
- package/ai/components/wa-switch.md +53 -0
- package/ai/components/wa-tab-group.md +69 -0
- package/ai/components/wa-tab-panel.md +60 -0
- package/ai/components/wa-tab.md +59 -0
- package/ai/components/wa-tag.md +59 -0
- package/ai/components/wa-textarea.md +53 -0
- package/ai/components/wa-time-input.md +55 -0
- package/ai/components/wa-toast-item.md +60 -0
- package/ai/components/wa-toast.md +60 -0
- package/ai/components/wa-tooltip.md +55 -0
- package/ai/components/wa-tree-item.md +55 -0
- package/ai/components/wa-tree.md +55 -0
- package/ai/components/wa-zoomable-frame.md +55 -0
- package/ai/components/workbench.md +114 -0
- package/ai/public-api-signatures-v1.md +572 -101
- package/ai/skill.md +107 -52
- package/ai/webawesome-jsx-signatures-v1.md +8 -2
- package/analyzer/component-ownership.d.mts +56 -0
- package/analyzer/component-ownership.mjs +184 -0
- package/analyzer/index.d.mts +3 -0
- package/analyzer/index.mjs +274 -20
- package/analyzer/selectors.d.mts +21 -0
- package/analyzer/selectors.mjs +212 -0
- package/dist/app-tab.js +1 -1
- package/dist/badge.d.ts +35 -7
- package/dist/badge.js +1 -1
- package/dist/browser/catalog.js +25 -0
- package/dist/browser/collapsible-panel.js +7 -0
- package/dist/browser/content-item.js +3 -0
- package/dist/browser/nav-stack.js +8 -0
- package/dist/browser/select.js +1 -0
- package/dist/browser/split-view.js +10 -0
- package/dist/browser/tab-scaffold.js +4 -0
- package/dist/browser/workbench.js +10 -0
- package/dist/catalog-resources.d.ts +12 -1
- package/dist/catalog.d.ts +14 -3
- package/dist/catalog.js +53 -43
- package/dist/catalog.js.map +1 -1
- package/dist/{chunk-WZ2GLEY4.js → chunk-2G2ZJQYK.js} +2 -14
- package/dist/chunk-2G2ZJQYK.js.map +1 -0
- package/dist/{chunk-R754MHXX.js → chunk-553ASUK6.js} +8 -8
- package/dist/chunk-553ASUK6.js.map +1 -0
- package/dist/{chunk-D7GWXIAS.js → chunk-5I7QGQVT.js} +1 -1
- package/dist/chunk-5I7QGQVT.js.map +1 -0
- package/dist/{chunk-RNRUVPJ3.js → chunk-63ZWBGE3.js} +3 -2
- package/dist/chunk-63ZWBGE3.js.map +1 -0
- package/dist/{chunk-44IG7PFV.js → chunk-6CINWX2E.js} +3 -3
- package/dist/{chunk-44IG7PFV.js.map → chunk-6CINWX2E.js.map} +1 -1
- package/dist/{chunk-MTM43SJO.js → chunk-6YFHCLHG.js} +2 -2
- package/dist/chunk-6YFHCLHG.js.map +1 -0
- package/dist/{chunk-C2FAYFDE.js → chunk-AGXQQFKZ.js} +2 -2
- package/dist/{chunk-C2FAYFDE.js.map → chunk-AGXQQFKZ.js.map} +1 -1
- package/dist/{chunk-ATHXW6RP.js → chunk-AHEG27M7.js} +2 -2
- package/dist/{chunk-ATHXW6RP.js.map → chunk-AHEG27M7.js.map} +1 -1
- package/dist/chunk-BFPBS5Y4.js +250 -0
- package/dist/chunk-BFPBS5Y4.js.map +1 -0
- package/dist/{chunk-5OLVUEND.js → chunk-DG6G5EPF.js} +4 -6
- package/dist/chunk-DG6G5EPF.js.map +1 -0
- package/dist/{chunk-LZXQVUGN.js → chunk-EVYKTVBQ.js} +5 -14
- package/dist/chunk-EVYKTVBQ.js.map +1 -0
- package/dist/{chunk-7GUQYHKA.js → chunk-EZVNC4J6.js} +7 -1
- package/dist/chunk-EZVNC4J6.js.map +1 -0
- package/dist/{chunk-RNZAKSME.js → chunk-F4QMLOXJ.js} +5 -4
- package/dist/chunk-F4QMLOXJ.js.map +1 -0
- package/dist/{chunk-EAX2GSS4.js → chunk-G2RKFVRB.js} +54 -20
- package/dist/chunk-G2RKFVRB.js.map +1 -0
- package/dist/chunk-JCV4GXWB.js +249 -0
- package/dist/chunk-JCV4GXWB.js.map +1 -0
- package/dist/chunk-K47P7QZC.js +17 -0
- package/dist/chunk-K47P7QZC.js.map +1 -0
- package/dist/{chunk-HMQ2ZDGG.js → chunk-KROD7KZK.js} +3 -2
- package/dist/chunk-KROD7KZK.js.map +1 -0
- package/dist/{chunk-5NDQABWK.js → chunk-M7QV3IHH.js} +3 -1
- package/dist/chunk-M7QV3IHH.js.map +1 -0
- package/dist/chunk-MA73TA6D.js +42 -0
- package/dist/chunk-MA73TA6D.js.map +1 -0
- package/dist/{chunk-ZMBU522F.js → chunk-MEY33VWB.js} +2 -2
- package/dist/{chunk-ZMBU522F.js.map → chunk-MEY33VWB.js.map} +1 -1
- package/dist/chunk-MP2GDBQZ.js +50 -0
- package/dist/chunk-MP2GDBQZ.js.map +1 -0
- package/dist/{chunk-3NBL3OUQ.js → chunk-NAPE7WUS.js} +2 -2
- package/dist/chunk-NAPE7WUS.js.map +1 -0
- package/dist/{chunk-BSKEH3UC.js → chunk-NBYTIVHS.js} +2 -2
- package/dist/{chunk-BSKEH3UC.js.map → chunk-NBYTIVHS.js.map} +1 -1
- package/dist/{chunk-T22EM4ET.js → chunk-OUK6QRDR.js} +71 -31
- package/dist/chunk-OUK6QRDR.js.map +1 -0
- package/dist/chunk-PWXNJS2B.js +115 -0
- package/dist/chunk-PWXNJS2B.js.map +1 -0
- package/dist/{chunk-GUIHMIT2.js → chunk-QOWG4ZCL.js} +5 -4
- package/dist/chunk-QOWG4ZCL.js.map +1 -0
- package/dist/{chunk-5I22LMCV.js → chunk-VZOFZPSO.js} +2 -2
- package/dist/chunk-VZOFZPSO.js.map +1 -0
- package/dist/{chunk-4BIMLITI.js → chunk-WLG6SSNT.js} +5 -3
- package/dist/chunk-WLG6SSNT.js.map +1 -0
- package/dist/{chunk-NE5JAOQS.js → chunk-WOUF7YXM.js} +3 -3
- package/dist/{chunk-NE5JAOQS.js.map → chunk-WOUF7YXM.js.map} +1 -1
- package/dist/{chunk-N7FHFNT6.js → chunk-XCO6YCYM.js} +34 -5
- package/dist/chunk-XCO6YCYM.js.map +1 -0
- package/dist/{chunk-TZ5IHWB2.js → chunk-XDKAYSVD.js} +5 -3
- package/dist/chunk-XDKAYSVD.js.map +1 -0
- package/dist/collapsible-panel.d.ts +14 -3
- package/dist/collapsible-panel.js +13 -16
- package/dist/collapsible-panel.js.map +1 -1
- package/dist/content-item.d.ts +46 -0
- package/dist/content-item.js +4 -0
- package/dist/content-item.js.map +1 -0
- package/dist/css-values.d.ts +5 -11
- package/dist/css-values.js +1 -1
- package/dist/disclosure-arrow.d.ts +4 -1
- package/dist/disclosure-arrow.js +1 -1
- package/dist/floating-toolbar.d.ts +17 -6
- package/dist/floating-toolbar.js +1 -1
- package/dist/grid.js +1 -1
- package/dist/help-tags-register.d.ts +13 -0
- package/dist/help-tags-register.js +9 -0
- package/dist/help-tags-register.js.map +1 -0
- package/dist/index.d.ts +7 -5
- package/dist/index.js +29 -26
- package/dist/list-action-row.js +2 -1
- package/dist/list-header.d.ts +14 -1
- package/dist/list-header.js +1 -1
- package/dist/list-inset-control.d.ts +1 -1
- package/dist/list-inset-control.js +1 -1
- package/dist/list-inset-text.d.ts +3 -10
- package/dist/list-inset-text.js +1 -1
- package/dist/list-item.js +2 -1
- package/dist/list.d.ts +10 -3
- package/dist/list.js +1 -1
- package/dist/nav-stack.d.ts +50 -5
- package/dist/nav-stack.js +4 -1
- package/dist/pane.d.ts +37 -2
- package/dist/pane.js +1 -1
- package/dist/{panel-toolbar-BFQxFITu.d.ts → panel-toolbar-BN4x0rth.d.ts} +13 -1
- package/dist/popup-menu-register.js +3 -2
- package/dist/popup-menu-register.js.map +1 -1
- package/dist/popup-menu.js +1 -1
- package/dist/row.d.ts +1 -1
- package/dist/row.js +1 -1
- package/dist/select-register.js +70 -3
- package/dist/select-register.js.map +1 -1
- package/dist/select.d.ts +46 -8
- package/dist/select.js +2 -1
- package/dist/{divider-sides-BzB6rphT.d.ts → sides-BPSWde0A.d.ts} +1 -3
- package/dist/skeleton.js +1 -1
- package/dist/spacer.js +1 -1
- package/dist/split-view.d.ts +31 -3
- package/dist/split-view.js +34 -5
- package/dist/split-view.js.map +1 -1
- package/dist/state-banner.js +1 -1
- package/dist/styles/app-tab.css +31 -0
- package/dist/styles/badge.css +32 -11
- package/dist/styles/catalog/components/catalog-example.css +1 -1
- package/dist/styles/catalog/components/catalog-stage.css +1 -1
- package/dist/styles/collapsible-panel.css +199 -42
- package/dist/styles/content-item.css +30 -0
- package/dist/styles/floating-toolbar.css +26 -2
- package/dist/styles/foundation.css +28 -19
- package/dist/styles/layout.css +1 -21
- package/dist/styles/list-action-row.css +13 -1
- package/dist/styles/list-header.css +0 -12
- package/dist/styles/list-inset-text.css +1 -2
- package/dist/styles/list-item.css +14 -1
- package/dist/styles/list.css +5 -5
- package/dist/styles/nav-stack.css +63 -71
- package/dist/styles/pane.css +83 -1
- package/dist/styles/popup-menu.css +229 -0
- package/dist/styles/resizable-region.css +70 -15
- package/dist/styles/select.css +60 -19
- package/dist/styles/skeleton.css +30 -3
- package/dist/styles/split-view.css +31 -32
- package/dist/styles/state-banner.css +0 -19
- package/dist/styles/surface-scaffold.css +8 -3
- package/dist/styles/tab-bar.css +79 -28
- package/dist/styles/tab-scaffold.css +60 -14
- package/dist/styles/text.css +17 -1
- package/dist/styles/token-search-field.css +4 -4
- package/dist/styles/toolbar-control-group.css +143 -69
- package/dist/styles/toolbar-text.css +21 -0
- package/dist/styles/toolbar.css +22 -37
- package/dist/styles/value-table.css +19 -2
- package/dist/styles/webawesome.css +3 -1
- package/dist/styles/workbench.css +145 -42
- package/dist/tab-scaffold.d.ts +46 -2
- package/dist/tab-scaffold.js +52 -16
- package/dist/tab-scaffold.js.map +1 -1
- package/dist/token-search-field.d.ts +4 -2
- package/dist/token-search-field.js +1 -1
- package/dist/toolbar-text.d.ts +7 -1
- package/dist/toolbar-text.js +1 -1
- package/dist/toolbar.d.ts +20 -5
- package/dist/toolbar.js +1 -1
- package/dist/{types-D6vzj-VT.d.ts → types-BuHELdXR.d.ts} +39 -6
- package/dist/value-table.js +1 -1
- package/dist/webawesome.d.ts +7 -1
- package/dist/wire-catalog.d.ts +15 -2
- package/dist/wire-catalog.js +12 -2
- package/dist/wire-catalog.js.map +1 -1
- package/dist/wire-scroll-dividers.d.ts +69 -0
- package/dist/wire-scroll-dividers.js +3 -0
- package/dist/wire-scroll-dividers.js.map +1 -0
- package/dist/wire-token-search-fields.js +1 -1
- package/dist/workbench.d.ts +60 -22
- package/dist/workbench.js +1 -1
- package/docs/accessibility.md +116 -7
- package/docs/app-layouts.md +18 -8
- package/docs/catalog.md +26 -7
- package/docs/collapsible-panel.md +32 -9
- package/docs/component-contract.md +182 -30
- package/docs/component-selection.md +59 -46
- package/docs/design/templates/empty-state/with-action-dark.svg +1 -1
- package/docs/design/templates/empty-state/with-action.svg +1 -1
- package/docs/design/templates/empty-state-dark.svg +1 -1
- package/docs/design/templates/empty-state.svg +1 -1
- package/docs/design/templates/list/compact-dark.svg +1 -1
- package/docs/design/templates/list/compact.svg +1 -1
- package/docs/design/templates/list/stack-dark.svg +1 -1
- package/docs/design/templates/list/stack.svg +1 -1
- package/docs/design/templates/list-action-row/default-dark.svg +1 -1
- package/docs/design/templates/list-action-row/default.svg +1 -1
- package/docs/design/templates/list-action-row/selected-dark.svg +1 -1
- package/docs/design/templates/list-action-row/selected.svg +1 -1
- package/docs/design/templates/list-action-row-dark.svg +1 -1
- package/docs/design/templates/list-action-row.svg +1 -1
- package/docs/design/templates/list-dark.svg +1 -1
- package/docs/design/templates/list-item/default-dark.svg +1 -1
- package/docs/design/templates/list-item/default.svg +1 -1
- package/docs/design/templates/list-item/selected-dark.svg +1 -1
- package/docs/design/templates/list-item/selected.svg +1 -1
- package/docs/design/templates/list-item/trailing-dark.svg +1 -1
- package/docs/design/templates/list-item/trailing.svg +1 -1
- package/docs/design/templates/list-item-dark.svg +1 -1
- package/docs/design/templates/list-item.svg +1 -1
- package/docs/design/templates/list.svg +1 -1
- package/docs/design/templates/tab-bar/workspace-tabs-dark.svg +1 -1
- package/docs/design/templates/tab-bar/workspace-tabs.svg +1 -1
- package/docs/design/templates/tab-bar-dark.svg +1 -1
- package/docs/design/templates/tab-bar.svg +1 -1
- package/docs/design/templates/value-table/details-dark.svg +1 -1
- package/docs/design/templates/value-table/details.svg +1 -1
- package/docs/design/templates/value-table-dark.svg +1 -1
- package/docs/design/templates/value-table.svg +1 -1
- package/docs/design-philosophy.md +31 -4
- package/docs/examples/application-ui-profile.json +4 -4
- package/docs/examples/command-palette-adapter.tsx +3 -2
- package/docs/examples/{component-catalog-extension-v2.json → component-composition-extension.json} +3 -3
- package/docs/layout.md +148 -29
- package/docs/nav-stack.md +77 -3
- package/docs/recipes.md +4 -3
- package/docs/split-view.md +54 -5
- package/docs/tab-scaffold.md +73 -2
- package/docs/type-contracts.md +21 -20
- package/docs/ui-analyzer.md +99 -5
- package/docs/ui-doctor.md +10 -0
- package/docs/ux-demo.md +2 -2
- package/docs/webawesome-theme.md +1 -2
- package/docs/workbench.md +57 -11
- package/doctor/index.mjs +6 -1
- package/llms.txt +117 -24
- package/package.json +29 -6
- package/ux-demo/recipes/collapsible-sidebar.tsx +3 -3
- package/ux-demo/recipes/composer-form.tsx +0 -1
- package/ux-demo/recipes/list-detail-dialog.tsx +0 -2
- package/ux-demo/recipes/list-workspace-states.tsx +0 -1
- package/ux-demo/recipes/loading-inspector.tsx +0 -1
- package/ux-demo/recipes/navigation-sidebar.tsx +3 -2
- package/ux-demo/recipes/navigation-stack.tsx +3 -2
- package/ux-demo/recipes/workspace-header.tsx +0 -1
- package/ai/component-catalog-extension-v2.d.ts +0 -7
- package/ai/component-catalog-extension-v2.schema.json +0 -7
- package/dist/chunk-3NBL3OUQ.js.map +0 -1
- package/dist/chunk-4BIMLITI.js.map +0 -1
- package/dist/chunk-5I22LMCV.js.map +0 -1
- package/dist/chunk-5NDQABWK.js.map +0 -1
- package/dist/chunk-5OLVUEND.js.map +0 -1
- package/dist/chunk-7GUQYHKA.js.map +0 -1
- package/dist/chunk-D7GWXIAS.js.map +0 -1
- package/dist/chunk-DQA5FMOX.js +0 -85
- package/dist/chunk-DQA5FMOX.js.map +0 -1
- package/dist/chunk-EAX2GSS4.js.map +0 -1
- package/dist/chunk-GUIHMIT2.js.map +0 -1
- package/dist/chunk-HMQ2ZDGG.js.map +0 -1
- package/dist/chunk-LZXQVUGN.js.map +0 -1
- package/dist/chunk-MTM43SJO.js.map +0 -1
- package/dist/chunk-N7FHFNT6.js.map +0 -1
- package/dist/chunk-R754MHXX.js.map +0 -1
- package/dist/chunk-RNRUVPJ3.js.map +0 -1
- package/dist/chunk-RNZAKSME.js.map +0 -1
- package/dist/chunk-T22EM4ET.js.map +0 -1
- package/dist/chunk-TZ5IHWB2.js.map +0 -1
- package/dist/chunk-WZ2GLEY4.js.map +0 -1
- package/dist/chunk-XD7DWYXG.js +0 -34
- package/dist/chunk-XD7DWYXG.js.map +0 -1
package/README.md
CHANGED
|
@@ -97,7 +97,7 @@ primary region, while semantic positions and replacement content use explicit
|
|
|
97
97
|
named `SafeHtml` props such as `header`, `footer`, `leading`, `trailing`,
|
|
98
98
|
`icon`, and `action`. These named `SafeHtml` prop slots are ordinary typed
|
|
99
99
|
function-component props—not native `<slot>` elements, wrapper slot
|
|
100
|
-
components, or a generic `slots` object. The
|
|
100
|
+
components, or a generic `slots` object. The composition catalog publishes
|
|
101
101
|
sound prop bindings as `zone.jsx.prop`, allowing ESLint to validate statically
|
|
102
102
|
visible content and cardinality without guessing from zone names.
|
|
103
103
|
|
|
@@ -168,8 +168,8 @@ The same property-specific boundary applies beyond spacing: use `flex()` (or a
|
|
|
168
168
|
finite keyword) for `Row.flex`, `Grid.flex`, and `List.flex`; length builders and intrinsic-size keywords for
|
|
169
169
|
`Skeleton.width`/`height`; length builders for `Skeleton.radius`; and
|
|
170
170
|
a foreground color for `SelectChoice.color` — `uiColor()` with a foreground
|
|
171
|
-
token such as `success-on-quiet`, or `foregroundColorVar()` (fill
|
|
172
|
-
as `uiColor('success')` are rejected). These grammars are not
|
|
171
|
+
token such as `success-on-quiet`, or `foregroundColorVar()` (fill tokens such
|
|
172
|
+
as `uiColor('success-fill-quiet')` are rejected). These grammars are not
|
|
173
173
|
interchangeable. `ListItem` and `ListActionRow` deliberately expose no raw
|
|
174
174
|
`style` declarations; use `className`, public tokens, and component props.
|
|
175
175
|
|
|
@@ -197,6 +197,7 @@ interchangeable. `ListItem` and `ListActionRow` deliberately expose no raw
|
|
|
197
197
|
| `ListHeader` | `@kerfjs/ui/list-header` | `@kerfjs/ui/list-header.css` |
|
|
198
198
|
| `ListInsetControl` | `@kerfjs/ui/list-inset-control` | `@kerfjs/ui/list-inset-control.css` |
|
|
199
199
|
| `ListInsetText` | `@kerfjs/ui/list-inset-text` | `@kerfjs/ui/list-inset-text.css` |
|
|
200
|
+
| `ContentItem` | `@kerfjs/ui/content-item` | `@kerfjs/ui/content-item.css` |
|
|
200
201
|
| `Pane` | `@kerfjs/ui/pane` | `@kerfjs/ui/pane.css` |
|
|
201
202
|
| `NavStack` | `@kerfjs/ui/nav-stack` | `@kerfjs/ui/nav-stack.css` |
|
|
202
203
|
| `wireNavStack` | `@kerfjs/ui/wire-nav-stack` | — |
|
|
@@ -213,6 +214,7 @@ interchangeable. `ListItem` and `ListActionRow` deliberately expose no raw
|
|
|
213
214
|
| `AppTab` | `@kerfjs/ui/app-tab` | `@kerfjs/ui/app-tab.css` |
|
|
214
215
|
| `TabBar` | `@kerfjs/ui/tab-bar` | `@kerfjs/ui/tab-bar.css` |
|
|
215
216
|
| `wireTabBars`, `reorderTabs` | `@kerfjs/ui/wire-tab-bars` | — |
|
|
217
|
+
| `wireScrollDividers` | `@kerfjs/ui/wire-scroll-dividers` | — |
|
|
216
218
|
| `LoadingSpinner` | `@kerfjs/ui/loading-spinner` | `@kerfjs/ui/loading-spinner.css` |
|
|
217
219
|
| `Skeleton` | `@kerfjs/ui/skeleton` | `@kerfjs/ui/skeleton.css` |
|
|
218
220
|
| `SunkenPanel` | `@kerfjs/ui/sunken-panel` | `@kerfjs/ui/sunken-panel.css` |
|
|
@@ -249,9 +251,9 @@ moving focus or DOM identity. When a product wants fewer visible commands at
|
|
|
249
251
|
narrow widths, it chooses them: render a lower-priority command inside an
|
|
250
252
|
app-owned "More" `PopupMenu` (in a `single` group with `nestedDropdown`).
|
|
251
253
|
|
|
252
|
-
`DisclosureArrow` defaults to an 18px root-scaled decorative visual.
|
|
253
|
-
|
|
254
|
-
needs another size; the owning control still supplies interaction, naming, and
|
|
254
|
+
`DisclosureArrow` defaults to an 18px root-scaled decorative visual. Pass a
|
|
255
|
+
typed `size` (for example `size={remify(24)}` from `@kerfjs/ui/css-values`)
|
|
256
|
+
when a consumer needs another size; the owning control still supplies interaction, naming, and
|
|
255
257
|
expanded state. Kerf `Select` retains its independent Web Awesome expand-glyph
|
|
256
258
|
scale of `.5` through `--kui-disclosure-icon-scale`. Author replacement
|
|
257
259
|
`DisclosureArrow` icon content facing right before its configured direction
|
|
@@ -270,7 +272,19 @@ action at the logical end. Its visible action glyph defaults to 18px through
|
|
|
270
272
|
|
|
271
273
|
## Machine-readable catalog
|
|
272
274
|
|
|
273
|
-
AI
|
|
275
|
+
AI assistants should start from the generated markdown reference,
|
|
276
|
+
[`ai/components/README.md`](./ai/components/README.md): a one-line index of
|
|
277
|
+
every entry grouped like the catalog, plus one short page per entry
|
|
278
|
+
(`ai/components/<id>.md`) covering when to use and avoid it, imports and
|
|
279
|
+
CSS/registration side effects, where its exact props live, legal parents,
|
|
280
|
+
zones with their JSX props and child counts, app- and wiring-owned state,
|
|
281
|
+
geometry ownership, accessibility obligations, the styling boundary
|
|
282
|
+
(configure through props; never override internals), and its composition
|
|
283
|
+
diagnostics. The pages are projected from the two JSON catalogs by
|
|
284
|
+
`scripts/sync-component-docs.mjs` (`npm run catalog:sync`), and
|
|
285
|
+
`npm run check:catalog` fails when any page drifts.
|
|
286
|
+
|
|
287
|
+
Tools can retrieve the shipped [`ai/component-catalog.json`](./ai/component-catalog.json)
|
|
274
288
|
for the exhaustive component and composition inventory. It is the canonical
|
|
275
289
|
source for ids, public exports, purpose and selection guidance, relationships,
|
|
276
290
|
delivery and side effects, companion wiring, application-owned policy,
|
|
@@ -290,14 +304,16 @@ Keeping this as a companion artifact prevents per-entry selection facts from
|
|
|
290
304
|
duplicating presentation rules.
|
|
291
305
|
|
|
292
306
|
Tools that evaluate composition may additionally load
|
|
293
|
-
[`component-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
307
|
+
[`component-composition.json`](./ai/component-composition.json). It is a
|
|
308
|
+
generated composition layer beside `component-catalog.json`, not a newer
|
|
309
|
+
version of it: a deterministic, package-qualified projection of every
|
|
310
|
+
component-catalog entry with formal parent/context, zone/cardinality, child,
|
|
311
|
+
state ownership, wiring, responsive, layout, accessibility, public-boundary,
|
|
312
|
+
and stable-diagnostic fields. `component-catalog.json` remains the selection
|
|
313
|
+
and delivery surface. Composition defaults are
|
|
298
314
|
deliberately permissive; only documented objective rules receive an
|
|
299
315
|
authoritative override and enforceable diagnostic. The adjacent schema and
|
|
300
|
-
[`component-
|
|
316
|
+
[`component-composition.d.ts`](./ai/component-composition.d.ts) types describe
|
|
301
317
|
the same contract.
|
|
302
318
|
|
|
303
319
|
Applications and downstream design systems should publish the same facts for
|
|
@@ -313,9 +329,9 @@ tool reason about both sides of a composition using one vocabulary without
|
|
|
313
329
|
pretending app-local components are `@kerfjs/ui` exports.
|
|
314
330
|
|
|
315
331
|
Composition-aware consumers use
|
|
316
|
-
[`component-
|
|
332
|
+
[`component-composition-extension.schema.json`](./ai/component-composition-extension.schema.json),
|
|
317
333
|
its shipped TypeScript types, and the checked
|
|
318
|
-
[`component-
|
|
334
|
+
[`component-composition-extension.json`](./docs/examples/component-composition-extension.json)
|
|
319
335
|
example. Preserve each catalog's package and qualify every identity and
|
|
320
336
|
cross-catalog reference as `package:id`; never merge entries by bare id.
|
|
321
337
|
|
|
@@ -326,7 +342,7 @@ rejects. The package gate compiles one positive/negative consumer fixture agains
|
|
|
326
342
|
both source and declarations extracted from the real packed tarball. The
|
|
327
343
|
[compile-time contract guide](./docs/type-contracts.md) documents migrations and
|
|
328
344
|
the dynamic DOM/children relationships that remain runtime or catalog checks.
|
|
329
|
-
Packages scaffolded by `create-kerf-component` maintain this
|
|
345
|
+
Packages scaffolded by `create-kerf-component` maintain this composition input from
|
|
330
346
|
`kerf.components.json`: `npm run catalog:generate` emits the catalog and
|
|
331
347
|
`npm run catalog:check` verifies source files, named public exports, explicit
|
|
332
348
|
author decisions, and byte-for-byte drift. Tools index the generated consumer
|
|
@@ -349,9 +365,9 @@ token overrides, layout/responsive conventions, and narrow rule exceptions.
|
|
|
349
365
|
Profiles contain policy only—never product records, user data, or broad styling
|
|
350
366
|
waivers.
|
|
351
367
|
|
|
352
|
-
Catalog declarations always provide a
|
|
368
|
+
Catalog declarations always provide a `composition` location. Consumer
|
|
353
369
|
packages generated with composition-only metadata omit `selection`;
|
|
354
|
-
`@kerfjs/ui` continues to require its
|
|
370
|
+
`@kerfjs/ui` continues to require its `component-catalog.json` selection catalog.
|
|
355
371
|
|
|
356
372
|
Node-based AI and static-analysis tools may import the shipped discovery API
|
|
357
373
|
from `@kerfjs/ui/ai/application-ui-profile.mjs`. It discovers package defaults,
|
|
@@ -375,9 +391,12 @@ Run `kerf-ui-analyze --root . src` (or import
|
|
|
375
391
|
composition catalogs and application profile. It catches provable private
|
|
376
392
|
selector reach-through, unknown tokens, competing geometry owners, nested
|
|
377
393
|
scroll owners, and cataloged CSS-value violations in JavaScript/TypeScript
|
|
378
|
-
component calls and JSX
|
|
379
|
-
|
|
380
|
-
|
|
394
|
+
component calls and JSX, plus component-ownership overrides: CSS that makes
|
|
395
|
+
another package's component its subject, touches its private variables,
|
|
396
|
+
overrides a token its typed prop sets, or styles it through a hook class on
|
|
397
|
+
its root (`KUI-L019`–`KUI-L022`; forcing a component's dimensions is one such
|
|
398
|
+
restyle). It reports repeated insets, exceptional spacing shorthands, and
|
|
399
|
+
dynamic classes separately as review findings. Text, versioned JSON,
|
|
381
400
|
and SARIF outputs carry stable `KUI-L###` ids, repository-relative locations,
|
|
382
401
|
evidence, and ownership chains. See the [analyzer guide](./docs/ui-analyzer.md).
|
|
383
402
|
|
|
@@ -434,7 +453,10 @@ file.
|
|
|
434
453
|
|
|
435
454
|
`npm run check:css-ownership` keeps that boundary honest: application CSS may
|
|
436
455
|
style only application-owned structure, never package component classes or
|
|
437
|
-
Web Awesome descendants
|
|
456
|
+
Web Awesome descendants, and a package component's stylesheet styles only
|
|
457
|
+
itself (in a composing parent's context when needed) — never another kerf
|
|
458
|
+
component's root, the `wa-*` tags it renders, its variables, or a hook class on
|
|
459
|
+
its root. The UX catalog's `style.css` contains document-shell
|
|
438
460
|
mechanics only, recipes ship no stylesheets (`npm run check:recipes` rejects
|
|
439
461
|
route stylesheets, inline styles, and styling-only classes), and `catalog.css`
|
|
440
462
|
remains a
|
|
@@ -460,28 +482,35 @@ component browser imports. See [Document baseline](./docs/document-baseline.md).
|
|
|
460
482
|
|
|
461
483
|
## Pane and content geometry
|
|
462
484
|
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
an optional
|
|
466
|
-
|
|
485
|
+
Render `Pane` (`@kerfjs/ui/pane`) for a sidebar, main area, inspector, or
|
|
486
|
+
dialog: the same structural vocabulary everywhere. Its `.kui-pane` root is
|
|
487
|
+
unpadded and contains an optional header, one scrolling `.kui-pane__content`,
|
|
488
|
+
and an optional footer; the content slot already carries `.kui-content`, which
|
|
489
|
+
makes its major children a vertical stack with 24px gaps. Choose landmark
|
|
490
|
+
semantics with `element` / `contentElement` rather than writing the pane
|
|
491
|
+
classes onto your own elements — `eslint-plugin-kerfjs` reports a component's
|
|
492
|
+
anatomy class on an application-owned element as `KUI-L103`.
|
|
467
493
|
|
|
468
494
|
```tsx
|
|
469
|
-
<
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
<
|
|
478
|
-
|
|
479
|
-
</
|
|
495
|
+
<Pane
|
|
496
|
+
element="aside"
|
|
497
|
+
label="Workspace"
|
|
498
|
+
contentElement="nav"
|
|
499
|
+
header={<Toolbar label="Workspace" ... />}
|
|
500
|
+
>
|
|
501
|
+
<section>
|
|
502
|
+
<ListHeader label="Workspace" count={3} countLabel="3 workspaces" />
|
|
503
|
+
<ListItem action="open" label="Inbox" icon={inboxIcon} />
|
|
504
|
+
<ListItem action="open" label="Drafts" />
|
|
505
|
+
</section>
|
|
506
|
+
<ContentItem>Workspace details</ContentItem>
|
|
507
|
+
</Pane>
|
|
480
508
|
```
|
|
481
509
|
|
|
482
|
-
Ordinary children use
|
|
483
|
-
(transparent by default), 8px padding, and 12px
|
|
484
|
-
|
|
510
|
+
Ordinary children use `ContentItem` (`@kerfjs/ui/content-item`): 8px inline
|
|
511
|
+
margin, a real 1px border (transparent by default), 8px padding, and 12px
|
|
512
|
+
rounded corners. `shape="pill"` uses a 22px radius, and `frame="framed"` paints
|
|
513
|
+
the neutral border only when the item marks a real distinction. A component can expose a transparent border or
|
|
485
514
|
background without changing layout. `ListHeader` follows the same rule while
|
|
486
515
|
keeping its dormant title and count-or-badge cluster separate from its optional
|
|
487
516
|
44px action.
|
|
@@ -551,6 +580,10 @@ arrays support diagnostics, tooling, browser assertions, and package-owned
|
|
|
551
580
|
composition; they are not an application styling API. Application-owned CSS may
|
|
552
581
|
style new structure rendered by its own component, but it must not select a
|
|
553
582
|
nested Kerf or Web Awesome component. Add missing configuration to the owner.
|
|
583
|
+
Markup follows the same rule: write only an entry's `placeableClasses` (layout
|
|
584
|
+
utilities, `kui-app-root`, `kui-content-item` on a non-div carrier) onto your
|
|
585
|
+
own elements; any other public class recreates a component by class, which
|
|
586
|
+
`eslint-plugin-kerfjs` reports as `KUI-L103` with the component to render.
|
|
554
587
|
|
|
555
588
|
`StateBanner` has opinionated `neutral`, `info`, `pop`, `success`, `warning`,
|
|
556
589
|
and `danger` palettes. Override an individual banner with
|
|
@@ -646,7 +679,7 @@ import "@kerfjs/ui/webawesome.css";
|
|
|
646
679
|
import "@kerfjs/ui/select/register";
|
|
647
680
|
```
|
|
648
681
|
|
|
649
|
-
That boundary keeps Web Awesome and its custom-element side effects out of bundles that use unrelated components. Automated consumer-bundle tests enforce it. `PopupMenu` follows the same rule: import `@kerfjs/ui/popup-menu/register` once to register the dropdown, item, button, and divider elements it renders.
|
|
682
|
+
That boundary keeps Web Awesome and its custom-element side effects out of bundles that use unrelated components. Automated consumer-bundle tests enforce it. `PopupMenu` follows the same rule: import `@kerfjs/ui/popup-menu/register` once to register the dropdown, item, button, and divider elements it renders. Either registration also installs help tags: an icon-only Select, PopupMenu, or `aria-label`-named `<button>` in a `ToolbarControlGroup` shows its name in an `aria-hidden` tooltip on hover and keyboard focus. A toolbar with icon-only buttons but neither control imports `@kerfjs/ui/help-tags/register`, which registers only the tooltip.
|
|
650
683
|
Use `label` for a visible label or `ariaLabel` for a visually hidden name. A
|
|
651
684
|
nonempty visible label takes precedence when both are supplied. Kerf names the
|
|
652
685
|
actual shadow combobox without adding visible label spacing; this also works
|
|
@@ -47,9 +47,14 @@
|
|
|
47
47
|
"KUI-L016",
|
|
48
48
|
"KUI-L017",
|
|
49
49
|
"KUI-L018",
|
|
50
|
+
"KUI-L019",
|
|
51
|
+
"KUI-L020",
|
|
52
|
+
"KUI-L021",
|
|
53
|
+
"KUI-L022",
|
|
50
54
|
"KUI-L090",
|
|
51
55
|
"KUI-L101",
|
|
52
56
|
"KUI-L102",
|
|
57
|
+
"KUI-L103",
|
|
53
58
|
"KUI-L201",
|
|
54
59
|
"KUI-L202",
|
|
55
60
|
"KUI-L203",
|
|
@@ -97,5 +102,8 @@
|
|
|
97
102
|
"KUI-T009",
|
|
98
103
|
"KUI-T010",
|
|
99
104
|
"KUI-T011"
|
|
100
|
-
]
|
|
105
|
+
],
|
|
106
|
+
"retired": {
|
|
107
|
+
"KUI-L005": "Folded into KUI-L019: any application rule whose subject is a cataloged component, forced dimensions included. Kept in ids so existing profile exceptions that name it still load."
|
|
108
|
+
}
|
|
101
109
|
}
|
|
@@ -202,7 +202,7 @@ function validateApplicationUiProfile(profile, options = {}) {
|
|
|
202
202
|
add(
|
|
203
203
|
'KUI-P005',
|
|
204
204
|
`${path}.selection`,
|
|
205
|
-
'The @kerfjs/ui catalog requires its
|
|
205
|
+
'The @kerfjs/ui catalog requires its component-catalog.json selection location.',
|
|
206
206
|
);
|
|
207
207
|
for (const kind of ['selection', 'composition']) {
|
|
208
208
|
if (kind === 'selection' && !catalog[kind]) continue;
|
|
@@ -5,22 +5,77 @@
|
|
|
5
5
|
"catalogs": [
|
|
6
6
|
{
|
|
7
7
|
"package": "@kerfjs/ui",
|
|
8
|
-
"selection": {
|
|
8
|
+
"selection": {
|
|
9
|
+
"path": "./component-catalog.json",
|
|
10
|
+
"schemaVersion": 1
|
|
11
|
+
},
|
|
9
12
|
"composition": {
|
|
10
|
-
"path": "./component-
|
|
11
|
-
"schemaVersion":
|
|
13
|
+
"path": "./component-composition.json",
|
|
14
|
+
"schemaVersion": 1
|
|
12
15
|
}
|
|
13
16
|
}
|
|
14
17
|
],
|
|
15
18
|
"preferences": {
|
|
16
|
-
"application-shell": {
|
|
19
|
+
"application-shell": {
|
|
20
|
+
"preferred": "@kerfjs/ui:recipe-app-shell"
|
|
21
|
+
},
|
|
22
|
+
"application-tabs": {
|
|
23
|
+
"preferred": "@kerfjs/ui:tab-bar",
|
|
24
|
+
"avoid": [
|
|
25
|
+
"@kerfjs/ui:wa-tab-group",
|
|
26
|
+
"@kerfjs/ui:wa-tab",
|
|
27
|
+
"@kerfjs/ui:wa-tab-panel"
|
|
28
|
+
],
|
|
29
|
+
"rationale": "Render TabBar (or SegmentedControl for a view switch) instead of composing Web Awesome tabs directly."
|
|
30
|
+
},
|
|
31
|
+
"command-menu": {
|
|
32
|
+
"preferred": "@kerfjs/ui:popup-menu",
|
|
33
|
+
"avoid": ["@kerfjs/ui:wa-dropdown", "@kerfjs/ui:wa-dropdown-item"],
|
|
34
|
+
"rationale": "Render PopupMenu, which wraps wa-dropdown with the shared popup contract; use Select when choosing a value."
|
|
35
|
+
},
|
|
36
|
+
"embedded-media": {
|
|
37
|
+
"preferred": "@kerfjs/ui:content-item",
|
|
38
|
+
"avoid": [
|
|
39
|
+
"@kerfjs/ui:wa-animated-image",
|
|
40
|
+
"@kerfjs/ui:wa-comparison",
|
|
41
|
+
"@kerfjs/ui:wa-zoomable-frame"
|
|
42
|
+
],
|
|
43
|
+
"rationale": "Keep media behavior application-owned: place a native img, video, or iframe in a ContentItem. Record a narrow KUI-L301 profile exception only when a concrete product requirement needs this Web Awesome element."
|
|
44
|
+
},
|
|
17
45
|
"exclusive-choice": {
|
|
18
46
|
"preferred": "@kerfjs/ui:segmented-control",
|
|
19
|
-
"avoid": ["@kerfjs/ui:wa-button-group"]
|
|
47
|
+
"avoid": ["@kerfjs/ui:wa-button-group"],
|
|
48
|
+
"rationale": "Render SegmentedControl for one-of-N choices instead of a Web Awesome button group."
|
|
49
|
+
},
|
|
50
|
+
"hierarchy-navigation": {
|
|
51
|
+
"preferred": "@kerfjs/ui:list",
|
|
52
|
+
"avoid": ["@kerfjs/ui:wa-tree", "@kerfjs/ui:wa-tree-item"],
|
|
53
|
+
"rationale": "Present hierarchy as List rows (or NavStack drill-in levels). Record a narrow KUI-L301 profile exception only when the product requires tree behavior."
|
|
54
|
+
},
|
|
55
|
+
"icon": {
|
|
56
|
+
"preferred": "@kerfjs/ui:lucide-icon",
|
|
57
|
+
"avoid": ["@kerfjs/ui:wa-icon"],
|
|
58
|
+
"rationale": "Render LucideIcon; Web Awesome icons are not part of the Kerf icon contract."
|
|
20
59
|
},
|
|
21
|
-
"navigation-row": {
|
|
22
|
-
|
|
23
|
-
|
|
60
|
+
"navigation-row": {
|
|
61
|
+
"preferred": "@kerfjs/ui:list-item"
|
|
62
|
+
},
|
|
63
|
+
"panel-heading": {
|
|
64
|
+
"preferred": "@kerfjs/ui:toolbar"
|
|
65
|
+
},
|
|
66
|
+
"resizable-pane": {
|
|
67
|
+
"preferred": "@kerfjs/ui:resize",
|
|
68
|
+
"avoid": ["@kerfjs/ui:wa-split-panel"],
|
|
69
|
+
"rationale": "Render ResizableRegion for application panes instead of a Web Awesome split panel."
|
|
70
|
+
},
|
|
71
|
+
"structured-search": {
|
|
72
|
+
"preferred": "@kerfjs/ui:token-search-field"
|
|
73
|
+
},
|
|
74
|
+
"value-selection": {
|
|
75
|
+
"preferred": "@kerfjs/ui:select",
|
|
76
|
+
"avoid": ["@kerfjs/ui:wa-select", "@kerfjs/ui:wa-option"],
|
|
77
|
+
"rationale": "Render Select, which wraps wa-select and wa-option with Kerf's popup and spacing contract."
|
|
78
|
+
}
|
|
24
79
|
},
|
|
25
80
|
"theme": {
|
|
26
81
|
"colorScheme": "light",
|
|
@@ -289,7 +289,7 @@ export function validateApplicationUiProfile(
|
|
|
289
289
|
add(
|
|
290
290
|
'KUI-P005',
|
|
291
291
|
`${path}.selection`,
|
|
292
|
-
'The @kerfjs/ui catalog requires its
|
|
292
|
+
'The @kerfjs/ui catalog requires its component-catalog.json selection location.',
|
|
293
293
|
);
|
|
294
294
|
for (const kind of ['selection', 'composition']) {
|
|
295
295
|
if (kind === 'selection' && !catalog?.selection) continue;
|
|
@@ -79,7 +79,7 @@
|
|
|
79
79
|
"id": "KUI-T010",
|
|
80
80
|
"publicImport": "@kerfjs/ui",
|
|
81
81
|
"symbols": [
|
|
82
|
-
"
|
|
82
|
+
"Sides",
|
|
83
83
|
"StateBannerUrgency",
|
|
84
84
|
"TabActivation",
|
|
85
85
|
"TextVariant",
|
|
@@ -89,7 +89,7 @@
|
|
|
89
89
|
"ToolbarControlGroupTone"
|
|
90
90
|
],
|
|
91
91
|
"kind": "finite-vocabulary",
|
|
92
|
-
"summary": "Finite public variant vocabularies, including canonical
|
|
92
|
+
"summary": "Finite public variant vocabularies, including canonical edge combinations, are named exported unions rather than anonymous string sets."
|
|
93
93
|
},
|
|
94
94
|
{
|
|
95
95
|
"id": "KUI-T011",
|