@kerfjs/ui 4.4.1 → 4.5.0-beta.1
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 +425 -42
- package/ai/application-ui-diagnostic-ids-v1.json +92 -0
- package/ai/application-ui-profile-sync.cjs +529 -0
- package/ai/application-ui-profile.d.mts +1 -0
- package/ai/application-ui-profile.d.ts +102 -0
- package/ai/application-ui-profile.defaults.json +41 -0
- package/ai/application-ui-profile.mjs +626 -0
- package/ai/application-ui-profile.schema.json +130 -0
- package/ai/catalog-authoring.json +25 -0
- package/ai/catalog-authoring.schema.json +61 -0
- package/ai/compile-time-contracts-v1.json +102 -0
- package/ai/compile-time-contracts-v1.schema.json +49 -0
- package/ai/component-catalog-extension-v2.d.ts +7 -0
- package/ai/component-catalog-extension-v2.schema.json +7 -0
- package/ai/component-catalog-extension.schema.json +79 -0
- package/ai/component-catalog-v2-overrides.json +319 -0
- package/ai/component-catalog-v2.d.ts +67 -0
- package/ai/component-catalog-v2.json +4675 -0
- package/ai/component-catalog-v2.schema.json +246 -0
- package/ai/component-catalog.json +5826 -0
- package/ai/component-catalog.schema.json +95 -0
- package/ai/public-api-signatures-v1.md +1719 -0
- package/ai/skill.md +129 -21
- package/ai/webawesome-jsx-signatures-v1.md +106 -0
- package/analyzer/cli.mjs +46 -0
- package/analyzer/index.d.mts +45 -0
- package/analyzer/index.mjs +737 -0
- package/analyzer/report.schema.json +66 -0
- package/dist/app-tab.d.ts +14 -2
- package/dist/app-tab.js +3 -1
- package/dist/browser/app-tab.js +3 -2
- package/dist/browser/disclosure-arrow.js +4 -0
- package/dist/browser/empty-state.js +3 -3
- package/dist/browser/floating-toolbar.js +3 -0
- package/dist/browser/list-action-row.js +4 -0
- package/dist/browser/list-header.js +6 -0
- package/dist/browser/list-inset-control.js +3 -0
- package/dist/browser/list-inset-text.js +3 -0
- package/dist/browser/list-item.js +4 -0
- package/dist/browser/list.js +3 -0
- package/dist/browser/loading-spinner.js +2 -2
- package/dist/browser/lucide-icon.js +2 -2
- package/dist/browser/pane.js +3 -0
- package/dist/browser/panel-header.js +7 -0
- package/dist/browser/resizable-region.js +2 -2
- package/dist/browser/segmented-control.js +3 -2
- package/dist/browser/select.js +4 -3
- package/dist/browser/skeleton.js +3 -0
- package/dist/browser/state-banner.js +3 -2
- package/dist/browser/sunken-panel.js +3 -0
- package/dist/browser/tab-bar.js +2 -2
- package/dist/browser/token-search-field.js +4 -0
- package/dist/browser/toolbar-control-group.js +2 -2
- package/dist/browser/toolbar-text.js +3 -2
- package/dist/browser/toolbar.js +2 -2
- package/dist/browser/value-table.js +3 -2
- package/dist/catalog-resources.d.ts +34 -0
- package/dist/catalog-resources.js +22 -0
- package/dist/catalog-resources.js.map +1 -0
- package/dist/catalog.d.ts +150 -0
- package/dist/catalog.js +377 -0
- package/dist/catalog.js.map +1 -0
- package/dist/chunk-5VTB2BKP.js +35 -0
- package/dist/chunk-5VTB2BKP.js.map +1 -0
- package/dist/chunk-6WTETUZ6.js +21 -0
- package/dist/chunk-6WTETUZ6.js.map +1 -0
- package/dist/chunk-7KEUJIIC.js +218 -0
- package/dist/chunk-7KEUJIIC.js.map +1 -0
- package/dist/chunk-7XRDUG4Y.js +58 -0
- package/dist/chunk-7XRDUG4Y.js.map +1 -0
- package/dist/chunk-B3A3IVO5.js +83 -0
- package/dist/chunk-B3A3IVO5.js.map +1 -0
- package/dist/chunk-DPDBVKNA.js +113 -0
- package/dist/chunk-DPDBVKNA.js.map +1 -0
- package/dist/chunk-FEAMR7S4.js +68 -0
- package/dist/chunk-FEAMR7S4.js.map +1 -0
- package/dist/chunk-FEY65TBV.js +15 -0
- package/dist/chunk-FEY65TBV.js.map +1 -0
- package/dist/{chunk-TRNBHPNW.js → chunk-IJBSZ4NX.js} +11 -8
- package/dist/chunk-IJBSZ4NX.js.map +1 -0
- package/dist/chunk-J5BFYY7Q.js +35 -0
- package/dist/chunk-J5BFYY7Q.js.map +1 -0
- package/dist/chunk-JRKSK2HX.js +79 -0
- package/dist/chunk-JRKSK2HX.js.map +1 -0
- package/dist/chunk-KWWR5VMS.js +45 -0
- package/dist/chunk-KWWR5VMS.js.map +1 -0
- package/dist/chunk-LPOMRC4C.js +25 -0
- package/dist/chunk-LPOMRC4C.js.map +1 -0
- package/dist/chunk-M7JBER5U.js +41 -0
- package/dist/chunk-M7JBER5U.js.map +1 -0
- package/dist/chunk-NENBUYX5.js +79 -0
- package/dist/chunk-NENBUYX5.js.map +1 -0
- package/dist/chunk-NWSEP5RT.js +117 -0
- package/dist/chunk-NWSEP5RT.js.map +1 -0
- package/dist/chunk-OJWWHFH3.js +426 -0
- package/dist/chunk-OJWWHFH3.js.map +1 -0
- package/dist/chunk-PSKN344N.js +114 -0
- package/dist/chunk-PSKN344N.js.map +1 -0
- package/dist/chunk-PX3YSS5C.js +32 -0
- package/dist/chunk-PX3YSS5C.js.map +1 -0
- package/dist/chunk-QO55FN2Y.js +20 -0
- package/dist/chunk-QO55FN2Y.js.map +1 -0
- package/dist/chunk-R7ZWUN64.js +38 -0
- package/dist/chunk-R7ZWUN64.js.map +1 -0
- package/dist/chunk-RKVQEH4J.js +61 -0
- package/dist/chunk-RKVQEH4J.js.map +1 -0
- package/dist/chunk-SRSJO5QE.js +40 -0
- package/dist/chunk-SRSJO5QE.js.map +1 -0
- package/dist/chunk-SYDMYBPG.js +31 -0
- package/dist/chunk-SYDMYBPG.js.map +1 -0
- package/dist/chunk-TB6DY7H5.js +25 -0
- package/dist/chunk-TB6DY7H5.js.map +1 -0
- package/dist/chunk-UFZKLBCF.js +108 -0
- package/dist/chunk-UFZKLBCF.js.map +1 -0
- package/dist/{chunk-MQIZAD4A.js → chunk-UKKSMZYT.js} +76 -22
- package/dist/chunk-UKKSMZYT.js.map +1 -0
- package/dist/chunk-W5L2JSBY.js +40 -0
- package/dist/chunk-W5L2JSBY.js.map +1 -0
- package/dist/chunk-Y45PPBDV.js +105 -0
- package/dist/chunk-Y45PPBDV.js.map +1 -0
- package/dist/chunk-Y6LYKFXY.js +43 -0
- package/dist/chunk-Y6LYKFXY.js.map +1 -0
- package/dist/collapsible-panel.d.ts +66 -0
- package/dist/collapsible-panel.js +63 -0
- package/dist/collapsible-panel.js.map +1 -0
- package/dist/device-class.d.ts +62 -0
- package/dist/device-class.js +103 -0
- package/dist/device-class.js.map +1 -0
- package/dist/disclosure-arrow.d.ts +14 -0
- package/dist/disclosure-arrow.js +4 -0
- package/dist/disclosure-arrow.js.map +1 -0
- package/dist/divider-sides-267FA7sY.d.ts +4 -0
- package/dist/empty-state.d.ts +1 -1
- package/dist/empty-state.js +1 -1
- package/dist/floating-toolbar.d.ts +28 -0
- package/dist/floating-toolbar.js +3 -0
- package/dist/floating-toolbar.js.map +1 -0
- package/dist/index.d.ts +20 -9
- package/dist/index.js +29 -18
- package/dist/list-action-row.d.ts +52 -0
- package/dist/list-action-row.js +5 -0
- package/dist/list-action-row.js.map +1 -0
- package/dist/list-header.d.ts +64 -0
- package/dist/list-header.js +7 -0
- package/dist/list-header.js.map +1 -0
- package/dist/list-inset-control.d.ts +16 -0
- package/dist/list-inset-control.js +3 -0
- package/dist/list-inset-control.js.map +1 -0
- package/dist/list-inset-text.d.ts +25 -0
- package/dist/list-inset-text.js +3 -0
- package/dist/list-inset-text.js.map +1 -0
- package/dist/list-item.d.ts +33 -0
- package/dist/list-item.js +5 -0
- package/dist/list-item.js.map +1 -0
- package/dist/list.d.ts +19 -0
- package/dist/list.js +3 -0
- package/dist/list.js.map +1 -0
- package/dist/loading-spinner.js +1 -1
- package/dist/nav-stack.d.ts +38 -0
- package/dist/nav-stack.js +5 -0
- package/dist/nav-stack.js.map +1 -0
- package/dist/pane.d.ts +49 -0
- package/dist/pane.js +4 -0
- package/dist/pane.js.map +1 -0
- package/dist/panel-header.d.ts +42 -0
- package/dist/panel-header.js +7 -0
- package/dist/panel-header.js.map +1 -0
- package/dist/resizable-region.d.ts +3 -1
- package/dist/resizable-region.js +1 -1
- package/dist/segmented-control.d.ts +8 -6
- package/dist/segmented-control.js +2 -1
- package/dist/select-register.d.ts +5 -1
- package/dist/select-register.js +3 -0
- package/dist/select-register.js.map +1 -1
- package/dist/select.d.ts +15 -6
- package/dist/select.js +2 -1
- package/dist/skeleton.d.ts +24 -0
- package/dist/skeleton.js +3 -0
- package/dist/skeleton.js.map +1 -0
- package/dist/split-view.d.ts +42 -0
- package/dist/split-view.js +81 -0
- package/dist/split-view.js.map +1 -0
- package/dist/state-banner.d.ts +8 -3
- package/dist/state-banner.js +2 -1
- package/dist/styles/app-tab.css +152 -0
- package/dist/styles/catalog.css +575 -0
- package/dist/styles/collapsible-panel.css +146 -0
- package/dist/styles/disclosure-arrow.css +23 -0
- package/dist/styles/empty-state.css +47 -0
- package/dist/styles/floating-toolbar.css +38 -0
- package/dist/styles/foundation.css +362 -0
- package/dist/styles/layout.css +55 -0
- package/dist/styles/list-action-row.css +160 -0
- package/dist/styles/list-header.css +160 -0
- package/dist/styles/list-inset-control.css +7 -0
- package/dist/styles/list-inset-text.css +14 -0
- package/dist/styles/list-item.css +123 -0
- package/dist/styles/list.css +43 -0
- package/dist/styles/loading-spinner.css +21 -0
- package/dist/styles/lucide-icon.css +6 -0
- package/dist/styles/nav-stack.css +111 -0
- package/dist/styles/pane.css +62 -0
- package/dist/styles/panel-header.css +64 -0
- package/dist/styles/resizable-region.css +111 -0
- package/{src → dist/styles}/segmented-control.css +58 -31
- package/dist/styles/select.css +140 -0
- package/dist/styles/skeleton.css +31 -0
- package/dist/styles/split-view.css +35 -0
- package/dist/styles/state-banner.css +198 -0
- package/dist/styles/styles.css +24 -0
- package/dist/styles/sunken-panel.css +22 -0
- package/dist/styles/tab-bar.css +45 -0
- package/dist/styles/tab-scaffold.css +84 -0
- package/dist/styles/token-search-field.css +289 -0
- package/dist/styles/toolbar-control-group.css +225 -0
- package/dist/styles/toolbar-text.css +92 -0
- package/dist/styles/toolbar.css +97 -0
- package/dist/styles/value-table.css +75 -0
- package/dist/styles/webawesome.css +399 -0
- package/dist/styles/workbench.css +94 -0
- package/dist/sunken-panel.d.ts +19 -0
- package/dist/sunken-panel.js +3 -0
- package/dist/sunken-panel.js.map +1 -0
- package/dist/tab-bar.d.ts +10 -2
- package/dist/tab-bar.js +1 -1
- package/dist/tab-scaffold.d.ts +30 -0
- package/dist/tab-scaffold.js +51 -0
- package/dist/tab-scaffold.js.map +1 -0
- package/dist/token-search-field.d.ts +59 -0
- package/dist/token-search-field.js +4 -0
- package/dist/token-search-field.js.map +1 -0
- package/dist/toolbar-control-group.d.ts +11 -5
- package/dist/toolbar-control-group.js +1 -1
- package/dist/toolbar-text.d.ts +31 -4
- package/dist/toolbar-text.js +2 -1
- package/dist/toolbar.d.ts +5 -3
- package/dist/toolbar.js +1 -1
- package/dist/value-table.d.ts +13 -3
- package/dist/value-table.js +2 -1
- package/dist/webawesome.d.ts +100 -0
- package/dist/webawesome.js +3 -0
- package/dist/webawesome.js.map +1 -0
- package/dist/wire-catalog.d.ts +57 -0
- package/dist/wire-catalog.js +302 -0
- package/dist/wire-catalog.js.map +1 -0
- package/dist/wire-nav-stack.d.ts +15 -0
- package/dist/wire-nav-stack.js +103 -0
- package/dist/wire-nav-stack.js.map +1 -0
- package/dist/wire-resizable-regions.d.ts +1 -1
- package/dist/wire-resizable-regions.js +1 -1
- package/dist/wire-sidebar.d.ts +43 -0
- package/dist/wire-sidebar.js +128 -0
- package/dist/wire-sidebar.js.map +1 -0
- package/dist/wire-tab-bars.d.ts +18 -2
- package/dist/wire-tab-bars.js +1 -1
- package/dist/wire-tab-scaffold.d.ts +11 -0
- package/dist/wire-tab-scaffold.js +21 -0
- package/dist/wire-tab-scaffold.js.map +1 -0
- package/dist/wire-token-search-fields.d.ts +111 -0
- package/dist/wire-token-search-fields.js +5 -0
- package/dist/wire-token-search-fields.js.map +1 -0
- package/dist/workbench.d.ts +33 -0
- package/dist/workbench.js +64 -0
- package/dist/workbench.js.map +1 -0
- package/docs/accessibility.md +124 -4
- package/docs/app-layouts.md +61 -0
- package/docs/catalog.md +364 -0
- package/docs/collapsible-panel.md +129 -0
- package/docs/component-contract.md +312 -5
- package/docs/component-selection.md +219 -0
- package/docs/design/templates/empty-state/filtered-dark.svg +1 -0
- package/docs/design/templates/empty-state/filtered.svg +1 -0
- package/docs/design/templates/empty-state/with-action-dark.svg +1 -0
- package/docs/design/templates/empty-state/with-action.svg +1 -0
- package/docs/design/templates/empty-state-dark.svg +1 -0
- package/docs/design/templates/empty-state.svg +1 -0
- package/docs/design/templates/list/compact-dark.svg +1 -0
- package/docs/design/templates/list/compact.svg +1 -0
- package/docs/design/templates/list/stack-dark.svg +1 -0
- package/docs/design/templates/list/stack.svg +1 -0
- package/docs/design/templates/list-action-row/default-dark.svg +1 -0
- package/docs/design/templates/list-action-row/default.svg +1 -0
- package/docs/design/templates/list-action-row/selected-dark.svg +1 -0
- package/docs/design/templates/list-action-row/selected.svg +1 -0
- package/docs/design/templates/list-action-row-dark.svg +1 -0
- package/docs/design/templates/list-action-row.svg +1 -0
- package/docs/design/templates/list-dark.svg +1 -0
- package/docs/design/templates/list-header/action-dark.svg +1 -0
- package/docs/design/templates/list-header/action.svg +1 -0
- package/docs/design/templates/list-header/count-dark.svg +1 -0
- package/docs/design/templates/list-header/count.svg +1 -0
- package/docs/design/templates/list-header/toggle-collapsed-dark.svg +1 -0
- package/docs/design/templates/list-header/toggle-collapsed.svg +1 -0
- package/docs/design/templates/list-header/toggle-expanded-dark.svg +1 -0
- package/docs/design/templates/list-header/toggle-expanded.svg +1 -0
- package/docs/design/templates/list-header-dark.svg +1 -0
- package/docs/design/templates/list-header.svg +1 -0
- package/docs/design/templates/list-item/default-dark.svg +1 -0
- package/docs/design/templates/list-item/default.svg +1 -0
- package/docs/design/templates/list-item/multiline-dark.svg +1 -0
- package/docs/design/templates/list-item/multiline.svg +1 -0
- package/docs/design/templates/list-item/selected-dark.svg +1 -0
- package/docs/design/templates/list-item/selected.svg +1 -0
- package/docs/design/templates/list-item/trailing-dark.svg +1 -0
- package/docs/design/templates/list-item/trailing.svg +1 -0
- package/docs/design/templates/list-item-dark.svg +1 -0
- package/docs/design/templates/list-item.svg +1 -0
- package/docs/design/templates/list.svg +1 -0
- package/docs/design/templates/panel-header/icon-actions-dark.svg +1 -0
- package/docs/design/templates/panel-header/icon-actions.svg +1 -0
- package/docs/design/templates/panel-header/icon-summary-actions-dark.svg +1 -0
- package/docs/design/templates/panel-header/icon-summary-actions.svg +1 -0
- package/docs/design/templates/panel-header/no-icon-dark.svg +1 -0
- package/docs/design/templates/panel-header/no-icon.svg +1 -0
- package/docs/design/templates/panel-header/page-heading-dark.svg +1 -0
- package/docs/design/templates/panel-header/page-heading.svg +1 -0
- package/docs/design/templates/panel-header/title-only-dark.svg +1 -0
- package/docs/design/templates/panel-header/title-only.svg +1 -0
- package/docs/design/templates/panel-header-dark.svg +1 -0
- package/docs/design/templates/panel-header.svg +1 -0
- package/docs/design/templates/segmented-control/equal-dark.svg +1 -0
- package/docs/design/templates/segmented-control/equal.svg +1 -0
- package/docs/design/templates/segmented-control/pill-small-dark.svg +1 -0
- package/docs/design/templates/segmented-control/pill-small.svg +1 -0
- package/docs/design/templates/segmented-control-dark.svg +1 -0
- package/docs/design/templates/segmented-control.svg +1 -0
- package/docs/design/templates/skeleton/avatar-dark.svg +1 -0
- package/docs/design/templates/skeleton/avatar.svg +1 -0
- package/docs/design/templates/skeleton/block-dark.svg +1 -0
- package/docs/design/templates/skeleton/block.svg +1 -0
- package/docs/design/templates/skeleton/lines-dark.svg +1 -0
- package/docs/design/templates/skeleton/lines.svg +1 -0
- package/docs/design/templates/skeleton-dark.svg +1 -0
- package/docs/design/templates/skeleton.svg +1 -0
- package/docs/design/templates/state-banner/danger-dark.svg +1 -0
- package/docs/design/templates/state-banner/danger.svg +1 -0
- package/docs/design/templates/state-banner/info-badge-dark.svg +1 -0
- package/docs/design/templates/state-banner/info-badge.svg +1 -0
- package/docs/design/templates/state-banner/info-dark.svg +1 -0
- package/docs/design/templates/state-banner/info.svg +1 -0
- package/docs/design/templates/state-banner/success-dark.svg +1 -0
- package/docs/design/templates/state-banner/success.svg +1 -0
- package/docs/design/templates/state-banner/warning-dark.svg +1 -0
- package/docs/design/templates/state-banner/warning.svg +1 -0
- package/docs/design/templates/state-banner-dark.svg +1 -0
- package/docs/design/templates/state-banner.svg +1 -0
- package/docs/design/templates/tab-bar/workspace-tabs-dark.svg +1 -0
- package/docs/design/templates/tab-bar/workspace-tabs.svg +1 -0
- package/docs/design/templates/tab-bar-dark.svg +1 -0
- package/docs/design/templates/tab-bar.svg +1 -0
- package/docs/design/templates/token-search-field/empty-dark.svg +1 -0
- package/docs/design/templates/token-search-field/empty.svg +1 -0
- package/docs/design/templates/token-search-field/tokens-dark.svg +1 -0
- package/docs/design/templates/token-search-field/tokens.svg +1 -0
- package/docs/design/templates/token-search-field-dark.svg +1 -0
- package/docs/design/templates/token-search-field.svg +1 -0
- package/docs/design/templates/toolbar/title-and-actions-dark.svg +1 -0
- package/docs/design/templates/toolbar/title-and-actions.svg +1 -0
- package/docs/design/templates/toolbar-control-group/borderless-single-dark.svg +1 -0
- package/docs/design/templates/toolbar-control-group/borderless-single.svg +1 -0
- package/docs/design/templates/toolbar-control-group/icon-buttons-dark.svg +1 -0
- package/docs/design/templates/toolbar-control-group/icon-buttons.svg +1 -0
- package/docs/design/templates/toolbar-control-group/push-buttons-dark.svg +1 -0
- package/docs/design/templates/toolbar-control-group/push-buttons.svg +1 -0
- package/docs/design/templates/toolbar-control-group/with-text-dark.svg +1 -0
- package/docs/design/templates/toolbar-control-group/with-text.svg +1 -0
- package/docs/design/templates/toolbar-control-group-dark.svg +1 -0
- package/docs/design/templates/toolbar-control-group.svg +1 -0
- package/docs/design/templates/toolbar-dark.svg +1 -0
- package/docs/design/templates/toolbar-text/default-dark.svg +1 -0
- package/docs/design/templates/toolbar-text/default.svg +1 -0
- package/docs/design/templates/toolbar-text/large-dark.svg +1 -0
- package/docs/design/templates/toolbar-text/large.svg +1 -0
- package/docs/design/templates/toolbar-text/small-dark.svg +1 -0
- package/docs/design/templates/toolbar-text/small.svg +1 -0
- package/docs/design/templates/toolbar-text-dark.svg +1 -0
- package/docs/design/templates/toolbar-text.svg +1 -0
- package/docs/design/templates/toolbar.svg +1 -0
- package/docs/design/templates/value-table/details-dark.svg +1 -0
- package/docs/design/templates/value-table/details.svg +1 -0
- package/docs/design/templates/value-table-dark.svg +1 -0
- package/docs/design/templates/value-table.svg +1 -0
- package/docs/design/templates.md +130 -0
- package/docs/design-philosophy.md +59 -1
- package/docs/device-class.md +54 -0
- package/docs/examples/application-ui-profile.json +60 -0
- package/docs/examples/command-palette-adapter.tsx +120 -0
- package/docs/examples/component-catalog-extension-v2.json +81 -0
- package/docs/examples/component-catalog-extension.json +45 -0
- package/docs/layout.md +150 -0
- package/docs/nav-stack.md +56 -0
- package/docs/recipes.md +167 -0
- package/docs/split-view.md +49 -0
- package/docs/sunken-panel.md +53 -0
- package/docs/tab-scaffold.md +50 -0
- package/docs/type-contracts.md +102 -0
- package/docs/ui-analyzer.md +86 -0
- package/docs/ui-doctor.md +84 -0
- package/docs/ui-evaluator.md +122 -0
- package/docs/ux-demo.md +23 -9
- package/docs/webawesome-theme.md +87 -7
- package/docs/workbench.md +73 -0
- package/doctor/cli.mjs +115 -0
- package/doctor/config.schema.json +68 -0
- package/doctor/eslint-diagnostics.d.mts +8 -0
- package/doctor/eslint-diagnostics.mjs +7 -0
- package/doctor/index.d.mts +116 -0
- package/doctor/index.mjs +1257 -0
- package/doctor/report.schema.json +118 -0
- package/evaluator/cli.mjs +89 -0
- package/evaluator/index.d.mts +90 -0
- package/evaluator/index.mjs +1138 -0
- package/evaluator/report.schema.json +152 -0
- package/llms.txt +197 -14
- package/package.json +228 -46
- package/traversal-exclusions.mjs +27 -0
- package/ux-demo/recipes/app-shell.tsx +228 -0
- package/ux-demo/recipes/collapsible-sidebar.tsx +223 -0
- package/ux-demo/recipes/compact-toolbar.tsx +145 -0
- package/ux-demo/recipes/composer-form.tsx +151 -0
- package/ux-demo/recipes/list-detail-dialog.tsx +181 -0
- package/ux-demo/recipes/list-workspace-states.tsx +183 -0
- package/ux-demo/recipes/loaders.ts +36 -0
- package/ux-demo/recipes/loading-inspector.tsx +164 -0
- package/ux-demo/recipes/mount-recipe.ts +64 -0
- package/ux-demo/recipes/navigation-sidebar.tsx +137 -0
- package/ux-demo/recipes/navigation-stack.tsx +118 -0
- package/ux-demo/recipes/recipes.css +448 -0
- package/ux-demo/recipes/types.ts +19 -0
- package/ux-demo/recipes/workspace-header.tsx +67 -0
- package/dist/browser/dialog-header.js +0 -3
- package/dist/browser/menu-header.js +0 -3
- package/dist/browser/menu-item.js +0 -3
- package/dist/browser/page-header.js +0 -3
- package/dist/chunk-2PES33HS.js +0 -13
- package/dist/chunk-2PES33HS.js.map +0 -1
- package/dist/chunk-3O7ZEUW2.js +0 -27
- package/dist/chunk-3O7ZEUW2.js.map +0 -1
- package/dist/chunk-4HHCYSGT.js +0 -79
- package/dist/chunk-4HHCYSGT.js.map +0 -1
- package/dist/chunk-55DATV3A.js +0 -10
- package/dist/chunk-55DATV3A.js.map +0 -1
- package/dist/chunk-723YNJBH.js +0 -17
- package/dist/chunk-723YNJBH.js.map +0 -1
- package/dist/chunk-DAFFDO33.js +0 -14
- package/dist/chunk-DAFFDO33.js.map +0 -1
- package/dist/chunk-GY5WH7TO.js +0 -10
- package/dist/chunk-GY5WH7TO.js.map +0 -1
- package/dist/chunk-MBR3TYNL.js +0 -14
- package/dist/chunk-MBR3TYNL.js.map +0 -1
- package/dist/chunk-MFKMHK5W.js +0 -10
- package/dist/chunk-MFKMHK5W.js.map +0 -1
- package/dist/chunk-MQIZAD4A.js.map +0 -1
- package/dist/chunk-NHXX4JI5.js +0 -28
- package/dist/chunk-NHXX4JI5.js.map +0 -1
- package/dist/chunk-OPCJRCYO.js +0 -19
- package/dist/chunk-OPCJRCYO.js.map +0 -1
- package/dist/chunk-T5XNMVOI.js +0 -24
- package/dist/chunk-T5XNMVOI.js.map +0 -1
- package/dist/chunk-TRNBHPNW.js.map +0 -1
- package/dist/chunk-VHW5YNIB.js +0 -17
- package/dist/chunk-VHW5YNIB.js.map +0 -1
- package/dist/chunk-VKH2JLDZ.js +0 -10
- package/dist/chunk-VKH2JLDZ.js.map +0 -1
- package/dist/chunk-WVPYVDXY.js +0 -15
- package/dist/chunk-WVPYVDXY.js.map +0 -1
- package/dist/chunk-WY4CAEPG.js +0 -14
- package/dist/chunk-WY4CAEPG.js.map +0 -1
- package/dist/dialog-header.d.ts +0 -14
- package/dist/dialog-header.js +0 -3
- package/dist/dialog-header.js.map +0 -1
- package/dist/menu-header.d.ts +0 -15
- package/dist/menu-header.js +0 -3
- package/dist/menu-header.js.map +0 -1
- package/dist/menu-item.d.ts +0 -22
- package/dist/menu-item.js +0 -3
- package/dist/menu-item.js.map +0 -1
- package/dist/page-header.d.ts +0 -9
- package/dist/page-header.js +0 -3
- package/dist/page-header.js.map +0 -1
- package/src/app-tab.css +0 -20
- package/src/dialog-header.css +0 -9
- package/src/empty-state.css +0 -6
- package/src/foundation.css +0 -106
- package/src/loading-spinner.css +0 -4
- package/src/lucide-icon.css +0 -1
- package/src/menu-header.css +0 -13
- package/src/menu-item.css +0 -12
- package/src/page-header.css +0 -3
- package/src/resizable-region.css +0 -19
- package/src/select.css +0 -18
- package/src/state-banner.css +0 -31
- package/src/styles.css +0 -18
- package/src/tab-bar.css +0 -4
- package/src/toolbar-control-group.css +0 -25
- package/src/toolbar-text.css +0 -4
- package/src/toolbar.css +0 -9
- package/src/value-table.css +0 -5
- package/src/webawesome.css +0 -178
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://raw.githubusercontent.com/brianwestphal/kerf/main/ui/analyzer/report.schema.json",
|
|
4
|
+
"title": "Kerf UI static analysis report",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": [
|
|
7
|
+
"schemaVersion",
|
|
8
|
+
"tool",
|
|
9
|
+
"root",
|
|
10
|
+
"files",
|
|
11
|
+
"profile",
|
|
12
|
+
"diagnostics",
|
|
13
|
+
"summary"
|
|
14
|
+
],
|
|
15
|
+
"properties": {
|
|
16
|
+
"schemaVersion": { "const": 1 },
|
|
17
|
+
"tool": {
|
|
18
|
+
"type": "object",
|
|
19
|
+
"required": ["name", "version"],
|
|
20
|
+
"properties": {
|
|
21
|
+
"name": { "type": "string" },
|
|
22
|
+
"version": { "type": "integer" }
|
|
23
|
+
},
|
|
24
|
+
"additionalProperties": false
|
|
25
|
+
},
|
|
26
|
+
"root": { "type": "string" },
|
|
27
|
+
"files": { "type": "array", "items": { "type": "string" } },
|
|
28
|
+
"profile": { "type": "object" },
|
|
29
|
+
"diagnostics": {
|
|
30
|
+
"type": "array",
|
|
31
|
+
"items": {
|
|
32
|
+
"type": "object",
|
|
33
|
+
"required": ["ruleId", "severity", "message", "location"],
|
|
34
|
+
"properties": {
|
|
35
|
+
"ruleId": { "pattern": "^KUI-L[0-9]{3}$" },
|
|
36
|
+
"severity": { "enum": ["error", "review"] },
|
|
37
|
+
"message": { "type": "string" },
|
|
38
|
+
"location": {
|
|
39
|
+
"type": "object",
|
|
40
|
+
"required": ["file", "line", "column"],
|
|
41
|
+
"properties": {
|
|
42
|
+
"file": { "type": "string" },
|
|
43
|
+
"line": { "type": "integer", "minimum": 1 },
|
|
44
|
+
"column": { "type": "integer", "minimum": 1 }
|
|
45
|
+
},
|
|
46
|
+
"additionalProperties": false
|
|
47
|
+
},
|
|
48
|
+
"evidence": {},
|
|
49
|
+
"chain": {}
|
|
50
|
+
},
|
|
51
|
+
"additionalProperties": false
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
"summary": {
|
|
55
|
+
"type": "object",
|
|
56
|
+
"required": ["errors", "review", "suppressed"],
|
|
57
|
+
"properties": {
|
|
58
|
+
"errors": { "type": "integer", "minimum": 0 },
|
|
59
|
+
"review": { "type": "integer", "minimum": 0 },
|
|
60
|
+
"suppressed": { "type": "integer", "minimum": 0 }
|
|
61
|
+
},
|
|
62
|
+
"additionalProperties": false
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
"additionalProperties": false
|
|
66
|
+
}
|
package/dist/app-tab.d.ts
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
import { SafeHtml } from 'kerfjs';
|
|
2
2
|
|
|
3
|
+
type AppTabRootAttributes = Readonly<Record<`data-${string}`, string | undefined> & {
|
|
4
|
+
'data-component'?: never;
|
|
5
|
+
'data-action'?: never;
|
|
6
|
+
'data-tab-id'?: never;
|
|
7
|
+
'data-selected'?: never;
|
|
8
|
+
'data-tab-dragging'?: never;
|
|
9
|
+
'data-tab-drop-position'?: never;
|
|
10
|
+
}>;
|
|
3
11
|
interface AppTabProps {
|
|
4
12
|
id: string;
|
|
5
13
|
name: string;
|
|
@@ -8,11 +16,15 @@ interface AppTabProps {
|
|
|
8
16
|
draggable?: boolean;
|
|
9
17
|
leading?: SafeHtml;
|
|
10
18
|
trailing?: SafeHtml;
|
|
19
|
+
/** Decorative dormant content for the close button. Must not contain interactive descendants. */
|
|
20
|
+
closeIcon?: SafeHtml;
|
|
11
21
|
selectAction?: string;
|
|
12
22
|
closeAction?: string;
|
|
13
23
|
className?: string;
|
|
14
|
-
|
|
24
|
+
/** Render as an unanimated loading skeleton, disabling select/close and dragging. */
|
|
25
|
+
placeholder?: boolean;
|
|
26
|
+
rootAttributes?: AppTabRootAttributes;
|
|
15
27
|
}
|
|
16
|
-
declare function AppTab({ id, name, selected, closable, draggable, leading, trailing, selectAction, closeAction, className, rootAttributes }: AppTabProps): SafeHtml;
|
|
28
|
+
declare function AppTab({ id, name, selected, closable, draggable, leading, trailing, closeIcon, selectAction, closeAction, className, placeholder, rootAttributes, }: AppTabProps): SafeHtml;
|
|
17
29
|
|
|
18
30
|
export { AppTab, type AppTabProps };
|
package/dist/app-tab.js
CHANGED
package/dist/browser/app-tab.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import '
|
|
2
|
-
import '
|
|
3
|
-
import '
|
|
1
|
+
import '../styles/foundation.css';
|
|
2
|
+
import '../styles/loading-spinner.css';
|
|
3
|
+
import '../styles/empty-state.css';
|
|
4
4
|
export * from '../empty-state.js';
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import '
|
|
2
|
-
import '
|
|
1
|
+
import '../styles/foundation.css';
|
|
2
|
+
import '../styles/loading-spinner.css';
|
|
3
3
|
export * from '../loading-spinner.js';
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import '
|
|
2
|
-
import '
|
|
1
|
+
import '../styles/foundation.css';
|
|
2
|
+
import '../styles/lucide-icon.css';
|
|
3
3
|
export * from '../lucide-icon.js';
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import '
|
|
2
|
-
import '
|
|
1
|
+
import '../styles/foundation.css';
|
|
2
|
+
import '../styles/resizable-region.css';
|
|
3
3
|
export * from '../resizable-region.js';
|
package/dist/browser/select.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import '
|
|
2
|
-
import '
|
|
3
|
-
import '
|
|
1
|
+
import '../styles/foundation.css';
|
|
2
|
+
import '../styles/lucide-icon.css';
|
|
3
|
+
import '../styles/skeleton.css';
|
|
4
|
+
import '../styles/select.css';
|
|
4
5
|
export * from '../select.js';
|
package/dist/browser/tab-bar.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import '
|
|
2
|
-
import '
|
|
1
|
+
import '../styles/foundation.css';
|
|
2
|
+
import '../styles/tab-bar.css';
|
|
3
3
|
export * from '../tab-bar.js';
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import '
|
|
2
|
-
import '
|
|
1
|
+
import '../styles/foundation.css';
|
|
2
|
+
import '../styles/toolbar-control-group.css';
|
|
3
3
|
export * from '../toolbar-control-group.js';
|
package/dist/browser/toolbar.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import '
|
|
2
|
-
import '
|
|
1
|
+
import '../styles/foundation.css';
|
|
2
|
+
import '../styles/toolbar.css';
|
|
3
3
|
export * from '../toolbar.js';
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { CatalogResource } from './catalog.js';
|
|
2
|
+
import 'kerfjs';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Standard resource labels for a Kerf catalog detail footer. Keep these labels
|
|
6
|
+
* stable across catalogs so people and AI-generated integrations see the same
|
|
7
|
+
* choices in the same vocabulary.
|
|
8
|
+
*/
|
|
9
|
+
type CatalogResourceKind = 'demoSource' | 'componentSource' | 'designTemplate' | 'guidance' | 'integrationGuidance';
|
|
10
|
+
type CatalogGuidanceKind = 'guidance' | 'integrationGuidance';
|
|
11
|
+
interface CatalogResourceTarget {
|
|
12
|
+
href: string;
|
|
13
|
+
/** Optional monospace detail, normally the repository-relative source path. */
|
|
14
|
+
detail?: string;
|
|
15
|
+
}
|
|
16
|
+
interface CatalogResourcesInput {
|
|
17
|
+
/** Required source for the runnable demonstration. */
|
|
18
|
+
demoSource: CatalogResourceTarget;
|
|
19
|
+
/** Source for the production component; omit for recipes and integrations. */
|
|
20
|
+
componentSource?: CatalogResourceTarget;
|
|
21
|
+
/** Optional design-tool template associated with the component. */
|
|
22
|
+
designTemplate?: CatalogResourceTarget;
|
|
23
|
+
/** Required UI or integration guidance. */
|
|
24
|
+
guidance: CatalogResourceTarget;
|
|
25
|
+
/** Use `integrationGuidance` when the component implementation is upstream. */
|
|
26
|
+
guidanceKind?: CatalogGuidanceKind;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Build the standard catalog resource group in its canonical order: demo,
|
|
30
|
+
* component, optional design template, then guidance.
|
|
31
|
+
*/
|
|
32
|
+
declare function catalogResources(input: CatalogResourcesInput): CatalogResource[];
|
|
33
|
+
|
|
34
|
+
export { type CatalogGuidanceKind, type CatalogResourceKind, type CatalogResourceTarget, type CatalogResourcesInput, catalogResources };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// src/catalog-resources.ts
|
|
2
|
+
function catalogResources(input) {
|
|
3
|
+
const resources = [
|
|
4
|
+
{ label: "Demo source", ...input.demoSource }
|
|
5
|
+
];
|
|
6
|
+
if (input.componentSource)
|
|
7
|
+
resources.push({
|
|
8
|
+
label: "Component source",
|
|
9
|
+
...input.componentSource
|
|
10
|
+
});
|
|
11
|
+
if (input.designTemplate)
|
|
12
|
+
resources.push({ label: "Design template", ...input.designTemplate });
|
|
13
|
+
resources.push({
|
|
14
|
+
label: input.guidanceKind === "integrationGuidance" ? "Integration guidance" : "Guidance",
|
|
15
|
+
...input.guidance
|
|
16
|
+
});
|
|
17
|
+
return resources;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export { catalogResources };
|
|
21
|
+
|
|
22
|
+
//# sourceMappingURL=catalog-resources.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/catalog-resources.ts"],"names":[],"mappings":";AAuCO,SAAS,iBACd,KAAA,EACmB;AACnB,EAAA,MAAM,SAAA,GAA+B;AAAA,IACnC,EAAE,KAAA,EAAO,aAAA,EAAe,GAAG,MAAM,UAAA;AAAW,GAC9C;AACA,EAAA,IAAI,KAAA,CAAM,eAAA;AACR,IAAA,SAAA,CAAU,IAAA,CAAK;AAAA,MACb,KAAA,EAAO,kBAAA;AAAA,MACP,GAAG,KAAA,CAAM;AAAA,KACV,CAAA;AACH,EAAA,IAAI,KAAA,CAAM,cAAA;AACR,IAAA,SAAA,CAAU,KAAK,EAAE,KAAA,EAAO,mBAAmB,GAAG,KAAA,CAAM,gBAAgB,CAAA;AACtE,EAAA,SAAA,CAAU,IAAA,CAAK;AAAA,IACb,KAAA,EACE,KAAA,CAAM,YAAA,KAAiB,qBAAA,GACnB,sBAAA,GACA,UAAA;AAAA,IACN,GAAG,KAAA,CAAM;AAAA,GACV,CAAA;AACD,EAAA,OAAO,SAAA;AACT","file":"catalog-resources.js","sourcesContent":["import type { CatalogResource } from './catalog.js';\n\n/**\n * Standard resource labels for a Kerf catalog detail footer. Keep these labels\n * stable across catalogs so people and AI-generated integrations see the same\n * choices in the same vocabulary.\n */\nexport type CatalogResourceKind =\n | 'demoSource'\n | 'componentSource'\n | 'designTemplate'\n | 'guidance'\n | 'integrationGuidance';\n\nexport type CatalogGuidanceKind = 'guidance' | 'integrationGuidance';\n\nexport interface CatalogResourceTarget {\n href: string;\n /** Optional monospace detail, normally the repository-relative source path. */\n detail?: string;\n}\n\nexport interface CatalogResourcesInput {\n /** Required source for the runnable demonstration. */\n demoSource: CatalogResourceTarget;\n /** Source for the production component; omit for recipes and integrations. */\n componentSource?: CatalogResourceTarget;\n /** Optional design-tool template associated with the component. */\n designTemplate?: CatalogResourceTarget;\n /** Required UI or integration guidance. */\n guidance: CatalogResourceTarget;\n /** Use `integrationGuidance` when the component implementation is upstream. */\n guidanceKind?: CatalogGuidanceKind;\n}\n\n/**\n * Build the standard catalog resource group in its canonical order: demo,\n * component, optional design template, then guidance.\n */\nexport function catalogResources(\n input: CatalogResourcesInput,\n): CatalogResource[] {\n const resources: CatalogResource[] = [\n { label: 'Demo source', ...input.demoSource },\n ];\n if (input.componentSource)\n resources.push({\n label: 'Component source',\n ...input.componentSource,\n });\n if (input.designTemplate)\n resources.push({ label: 'Design template', ...input.designTemplate });\n resources.push({\n label:\n input.guidanceKind === 'integrationGuidance'\n ? 'Integration guidance'\n : 'Guidance',\n ...input.guidance,\n });\n return resources;\n}\n"]}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import { SafeHtml } from 'kerfjs';
|
|
2
|
+
|
|
3
|
+
/** A reference link shown in the detail footer for the active entry. */
|
|
4
|
+
interface CatalogResource {
|
|
5
|
+
label: string;
|
|
6
|
+
href: string;
|
|
7
|
+
/** Optional monospace detail (e.g. a file path) shown after the label. */
|
|
8
|
+
detail?: string;
|
|
9
|
+
}
|
|
10
|
+
/** A related entry offered in the detail footer's "Related entries" popup menu. */
|
|
11
|
+
interface CatalogRelated {
|
|
12
|
+
id: string;
|
|
13
|
+
name: string;
|
|
14
|
+
/** Group heading in the menu, e.g. "Uses" / "Used by". */
|
|
15
|
+
group: string;
|
|
16
|
+
}
|
|
17
|
+
interface CatalogEntry {
|
|
18
|
+
id: string;
|
|
19
|
+
name: string;
|
|
20
|
+
description?: string;
|
|
21
|
+
/** Short metadata tags shown at the trailing edge of the sidebar row. */
|
|
22
|
+
tags?: readonly string[];
|
|
23
|
+
resources?: readonly CatalogResource[];
|
|
24
|
+
related?: readonly CatalogRelated[];
|
|
25
|
+
}
|
|
26
|
+
interface CatalogSection {
|
|
27
|
+
category: string;
|
|
28
|
+
entries: readonly CatalogEntry[];
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* A secondary group of sections shown below the primary sidebar sections with a
|
|
32
|
+
* quieter "ecosystem" treatment (e.g. third-party components). Optionally
|
|
33
|
+
* collapsible — the app owns `expanded` and toggles it from `wireCatalog`'s
|
|
34
|
+
* `onToggleSecondary`.
|
|
35
|
+
*/
|
|
36
|
+
interface CatalogSecondaryGroup {
|
|
37
|
+
label: string;
|
|
38
|
+
sections: readonly CatalogSection[];
|
|
39
|
+
/** When true, the group's label is a disclosure toggle controlling `expanded`. */
|
|
40
|
+
collapsible?: boolean;
|
|
41
|
+
/** Whether the group is expanded (controlled). Ignored unless `collapsible`. */
|
|
42
|
+
expanded?: boolean;
|
|
43
|
+
}
|
|
44
|
+
interface CatalogBrand {
|
|
45
|
+
title: string;
|
|
46
|
+
subtitle?: string;
|
|
47
|
+
/** Logo image URL (rendered decorative). Omit for a text-only brand. */
|
|
48
|
+
logoUrl?: string;
|
|
49
|
+
}
|
|
50
|
+
interface CatalogProps {
|
|
51
|
+
brand: CatalogBrand;
|
|
52
|
+
sections: readonly CatalogSection[];
|
|
53
|
+
/** The controlled active entry id — the app owns this signal. */
|
|
54
|
+
active: string;
|
|
55
|
+
/** The rendered preview for the active entry; the app computes it from `active`. */
|
|
56
|
+
content: SafeHtml;
|
|
57
|
+
/** Whether the sidebar is collapsed (controlled). */
|
|
58
|
+
collapsed?: boolean;
|
|
59
|
+
/** Current theme; when set, a theme toggle is shown that switches to the opposite. Omit to hide it. */
|
|
60
|
+
theme?: 'light' | 'dark';
|
|
61
|
+
/** Extra header controls placed before the theme toggle (each a `ToolbarControlGroup`). */
|
|
62
|
+
headerActions?: SafeHtml;
|
|
63
|
+
/** A secondary "ecosystem" group of sections below the primary category groups. */
|
|
64
|
+
secondarySections?: CatalogSecondaryGroup;
|
|
65
|
+
/** Extra sidebar content below the category groups (and the secondary group). */
|
|
66
|
+
sidebarFooter?: SafeHtml;
|
|
67
|
+
/** Status line content shown at the start of the detail footer. */
|
|
68
|
+
status?: SafeHtml;
|
|
69
|
+
/**
|
|
70
|
+
* Whether to highlight specimens' computed borders (or transparent outer
|
|
71
|
+
* bounds) and non-zero margins. Pass a boolean (rather than omitting the
|
|
72
|
+
* prop) when the active entry can switch between component and composition
|
|
73
|
+
* previews; `wireCatalogGeometryOverlay` keeps the overlay synchronized.
|
|
74
|
+
*/
|
|
75
|
+
geometryOverlay?: boolean;
|
|
76
|
+
selectAction?: string;
|
|
77
|
+
toggleSidebarAction?: string;
|
|
78
|
+
toggleThemeAction?: string;
|
|
79
|
+
/** Action fired by the secondary group's disclosure toggle (when collapsible). */
|
|
80
|
+
toggleSecondaryAction?: string;
|
|
81
|
+
className?: string;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* A reusable component-catalog shell: a collapsible category sidebar, a titled
|
|
85
|
+
* detail stage that renders the active entry's preview, and a footer with
|
|
86
|
+
* reference links and a related-entry popup menu. Built entirely from public
|
|
87
|
+
* `@kerfjs/ui` primitives. Controlled and stateless — the app owns the `active`,
|
|
88
|
+
* `collapsed`, and `theme` signals and computes `content` from `active` in its own
|
|
89
|
+
* render; wire the sidebar/collapse/theme actions with `wireCatalog`.
|
|
90
|
+
*/
|
|
91
|
+
declare function Catalog({ brand, sections, active, content, collapsed, theme, headerActions, secondarySections, sidebarFooter, status, geometryOverlay, selectAction, toggleSidebarAction, toggleThemeAction, toggleSecondaryAction, className, }: CatalogProps): SafeHtml;
|
|
92
|
+
/**
|
|
93
|
+
* How a {@link CatalogExample}'s content aligns its visible left edge with the
|
|
94
|
+
* example's `ListHeader` label (which sits 16px in — 8px title + 8px label):
|
|
95
|
+
* - `'glyph'` — a bare glyph/text specimen with no inline geometry insets the full 16px.
|
|
96
|
+
* - `'inline-control'` — a control that already carries ~8px of its own inline padding insets 8px so its content lands on the same line.
|
|
97
|
+
* - `'none'` — a content-item / composition that owns its geometry and already aligns; no inset (default).
|
|
98
|
+
*/
|
|
99
|
+
type CatalogExampleAlign = 'glyph' | 'inline-control' | 'none';
|
|
100
|
+
type CatalogExampleRootAttributes = Readonly<Record<`data-${string}`, string | undefined> & {
|
|
101
|
+
'data-catalog-example'?: never;
|
|
102
|
+
'data-catalog-example-stack'?: never;
|
|
103
|
+
'data-catalog-example-label'?: never;
|
|
104
|
+
'data-catalog-example-note'?: never;
|
|
105
|
+
'data-align'?: never;
|
|
106
|
+
}>;
|
|
107
|
+
type CatalogExampleStackRootAttributes = Readonly<Record<`data-${string}`, string | undefined> & {
|
|
108
|
+
'data-catalog-example'?: never;
|
|
109
|
+
'data-catalog-example-stack'?: never;
|
|
110
|
+
'data-catalog-example-label'?: never;
|
|
111
|
+
'data-catalog-example-note'?: never;
|
|
112
|
+
'data-align'?: never;
|
|
113
|
+
}>;
|
|
114
|
+
interface CatalogExampleProps {
|
|
115
|
+
/** The example's label, shown as a `ListHeader` above the specimen. Omit for a bare specimen. */
|
|
116
|
+
label?: string;
|
|
117
|
+
/** Optional explanatory note between the label and the specimen. */
|
|
118
|
+
note?: SafeHtml | string;
|
|
119
|
+
/** Alignment inset for the specimen — see {@link CatalogExampleAlign}. Default `'none'`. */
|
|
120
|
+
align?: CatalogExampleAlign;
|
|
121
|
+
/** Safe authoring `data-*` metadata for the rendered section. Helper-owned structural attributes remain protected. */
|
|
122
|
+
rootAttributes?: CatalogExampleRootAttributes;
|
|
123
|
+
className?: string;
|
|
124
|
+
children?: SafeHtml | readonly SafeHtml[];
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* One labeled example in a catalog preview: a `ListHeader` label, an optional
|
|
128
|
+
* note, and the specimen. `align` insets the specimen so its visible left edge
|
|
129
|
+
* lines up with the label text, encoding the catalog's alignment rules as a
|
|
130
|
+
* first-class prop instead of per-demo CSS. The inset is published as the
|
|
131
|
+
* `--kui-catalog-example-align` custom property so a debug overlay can exclude it
|
|
132
|
+
* from a specimen's measured margin.
|
|
133
|
+
*/
|
|
134
|
+
declare function CatalogExample({ label, note, align, rootAttributes, className, children, }: CatalogExampleProps): SafeHtml;
|
|
135
|
+
interface CatalogExampleStackProps {
|
|
136
|
+
/** Accessible label for the stack region. */
|
|
137
|
+
label?: string;
|
|
138
|
+
/** Safe authoring `data-*` metadata for the rendered stack. Helper-owned structural attributes remain protected. */
|
|
139
|
+
rootAttributes?: CatalogExampleStackRootAttributes;
|
|
140
|
+
className?: string;
|
|
141
|
+
children?: SafeHtml | readonly SafeHtml[];
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* A vertically-stacked group of {@link CatalogExample}s with the catalog's
|
|
145
|
+
* example rhythm. The semantic `section` becomes a named `region` when `label`
|
|
146
|
+
* is supplied; an unlabeled stack remains an ordinary grouping.
|
|
147
|
+
*/
|
|
148
|
+
declare function CatalogExampleStack({ label, rootAttributes, className, children, }: CatalogExampleStackProps): SafeHtml;
|
|
149
|
+
|
|
150
|
+
export { Catalog, type CatalogBrand, type CatalogEntry, CatalogExample, type CatalogExampleAlign, type CatalogExampleProps, CatalogExampleStack, type CatalogExampleStackProps, type CatalogProps, type CatalogRelated, type CatalogResource, type CatalogSecondaryGroup, type CatalogSection };
|