@kerfjs/ui 5.0.0-beta.3 → 5.0.0-beta.30
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 +320 -107
- package/ai/application-ui-diagnostic-ids-v1.json +100 -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 +131 -0
- package/ai/compile-time-contracts-v1.schema.json +51 -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 +486 -0
- package/ai/component-catalog-v2.d.ts +90 -0
- package/ai/component-catalog-v2.json +5455 -0
- package/ai/component-catalog-v2.schema.json +298 -0
- package/ai/component-catalog.json +2437 -419
- package/ai/component-catalog.schema.json +39 -0
- package/ai/public-api-signatures-v1.md +1442 -124
- package/ai/skill.md +131 -54
- package/ai/webawesome-jsx-signatures-v1.md +2 -1
- package/analyzer/cli.mjs +49 -0
- package/analyzer/index.d.mts +46 -0
- package/analyzer/index.mjs +1086 -0
- package/analyzer/report.schema.json +66 -0
- package/dist/app-tab.d.ts +15 -4
- package/dist/app-tab.js +3 -1
- package/dist/browser/app-tab.js +1 -0
- package/dist/browser/floating-toolbar.js +3 -0
- package/dist/browser/list-action-row.js +5 -0
- package/dist/browser/{menu-header.js → list-header.js} +3 -2
- package/dist/browser/list-inset-control.js +3 -0
- package/dist/browser/list-inset-text.js +3 -0
- package/dist/browser/list-item.js +5 -0
- package/dist/browser/list.js +3 -0
- package/dist/browser/pane.js +3 -0
- package/dist/browser/segmented-control.js +1 -0
- package/dist/browser/select.js +1 -0
- package/dist/browser/skeleton.js +3 -0
- package/dist/browser/state-banner.js +1 -0
- package/dist/browser/sunken-panel.js +3 -0
- package/dist/browser/surface-scaffold.js +3 -0
- package/dist/browser/toolbar-text.js +1 -0
- package/dist/browser/value-table.js +1 -0
- package/dist/catalog-resources.d.ts +35 -0
- package/dist/catalog-resources.js +22 -0
- package/dist/catalog-resources.js.map +1 -0
- package/dist/catalog.d.ts +151 -0
- package/dist/catalog.js +379 -0
- package/dist/catalog.js.map +1 -0
- package/dist/chunk-6NDBE2OK.js +32 -0
- package/dist/chunk-6NDBE2OK.js.map +1 -0
- package/dist/chunk-6WTETUZ6.js +21 -0
- package/dist/chunk-6WTETUZ6.js.map +1 -0
- package/dist/chunk-AQFWBG23.js +83 -0
- package/dist/chunk-AQFWBG23.js.map +1 -0
- package/dist/chunk-B6JYRX3P.js +51 -0
- package/dist/chunk-B6JYRX3P.js.map +1 -0
- package/dist/chunk-CAB6NQ2T.js +102 -0
- package/dist/chunk-CAB6NQ2T.js.map +1 -0
- package/dist/chunk-CK6P5AUK.js +136 -0
- package/dist/chunk-CK6P5AUK.js.map +1 -0
- package/dist/chunk-DAO2VFTT.js +129 -0
- package/dist/chunk-DAO2VFTT.js.map +1 -0
- package/dist/chunk-DYBPI5O2.js +25 -0
- package/dist/chunk-DYBPI5O2.js.map +1 -0
- package/dist/{chunk-TRNBHPNW.js → chunk-E34TE2ZI.js} +12 -8
- package/dist/chunk-E34TE2ZI.js.map +1 -0
- package/dist/chunk-I45QO2IZ.js +88 -0
- package/dist/chunk-I45QO2IZ.js.map +1 -0
- package/dist/chunk-I4V3UDSA.js +79 -0
- package/dist/chunk-I4V3UDSA.js.map +1 -0
- package/dist/chunk-KFUUFNTS.js +15 -0
- package/dist/chunk-KFUUFNTS.js.map +1 -0
- package/dist/chunk-MFR2IIFG.js +20 -0
- package/dist/chunk-MFR2IIFG.js.map +1 -0
- package/dist/chunk-OC275HHS.js +128 -0
- package/dist/chunk-OC275HHS.js.map +1 -0
- package/dist/chunk-OL4TC3U2.js +156 -0
- package/dist/chunk-OL4TC3U2.js.map +1 -0
- package/dist/chunk-OMSRSL3B.js +120 -0
- package/dist/chunk-OMSRSL3B.js.map +1 -0
- package/dist/chunk-RL6COPKF.js +44 -0
- package/dist/chunk-RL6COPKF.js.map +1 -0
- package/dist/chunk-SOK5EUF7.js +25 -0
- package/dist/chunk-SOK5EUF7.js.map +1 -0
- package/dist/{chunk-7BR3DO2A.js → chunk-SRSJO5QE.js} +13 -4
- package/dist/chunk-SRSJO5QE.js.map +1 -0
- package/dist/chunk-T7DOWS6T.js +61 -0
- package/dist/chunk-T7DOWS6T.js.map +1 -0
- package/dist/chunk-TIGSG6BX.js +218 -0
- package/dist/chunk-TIGSG6BX.js.map +1 -0
- package/dist/chunk-UDHHKZWO.js +41 -0
- package/dist/chunk-UDHHKZWO.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-V6GQKOX2.js +39 -0
- package/dist/chunk-V6GQKOX2.js.map +1 -0
- package/dist/chunk-V6HCTCVD.js +46 -0
- package/dist/chunk-V6HCTCVD.js.map +1 -0
- package/dist/chunk-VDUJZF5G.js +515 -0
- package/dist/chunk-VDUJZF5G.js.map +1 -0
- package/dist/chunk-VXFGMDA7.js +31 -0
- package/dist/chunk-VXFGMDA7.js.map +1 -0
- package/dist/chunk-WN52USHV.js +115 -0
- package/dist/chunk-WN52USHV.js.map +1 -0
- package/dist/chunk-WSXUPSID.js +43 -0
- package/dist/chunk-WSXUPSID.js.map +1 -0
- package/dist/{chunk-56RJXPHG.js → chunk-Y6LYKFXY.js} +1 -1
- package/dist/{chunk-56RJXPHG.js.map → chunk-Y6LYKFXY.js.map} +1 -1
- package/dist/chunk-ZPWZIVI6.js +47 -0
- package/dist/chunk-ZPWZIVI6.js.map +1 -0
- package/dist/collapsible-panel.d.ts +77 -0
- package/dist/collapsible-panel.js +84 -0
- package/dist/collapsible-panel.js.map +1 -0
- package/dist/css-values.d.ts +75 -0
- package/dist/css-values.js +3 -0
- package/dist/css-values.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.js +1 -1
- package/dist/divider-sides-267FA7sY.d.ts +4 -0
- package/dist/empty-state.d.ts +3 -2
- package/dist/empty-state.js +1 -1
- package/dist/floating-toolbar.d.ts +29 -0
- package/dist/floating-toolbar.js +3 -0
- package/dist/floating-toolbar.js.map +1 -0
- package/dist/index.d.ts +23 -14
- package/dist/index.js +30 -23
- package/dist/{menu-action-row.d.ts → list-action-row.d.ts} +19 -8
- package/dist/list-action-row.js +7 -0
- package/dist/list-action-row.js.map +1 -0
- package/dist/list-header.d.ts +77 -0
- package/dist/list-header.js +8 -0
- package/dist/list-header.js.map +1 -0
- package/dist/list-inset-control.d.ts +17 -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 +26 -0
- package/dist/list-inset-text.js +3 -0
- package/dist/list-inset-text.js.map +1 -0
- package/dist/list-item.d.ts +45 -0
- package/dist/list-item.js +7 -0
- package/dist/list-item.js.map +1 -0
- package/dist/list.d.ts +21 -0
- package/dist/list.js +4 -0
- package/dist/list.js.map +1 -0
- package/dist/loading-spinner.js +1 -1
- package/dist/nav-stack.d.ts +41 -0
- package/dist/nav-stack.js +6 -0
- package/dist/nav-stack.js.map +1 -0
- package/dist/pane.d.ts +50 -0
- package/dist/pane.js +4 -0
- package/dist/pane.js.map +1 -0
- package/dist/resizable-region.d.ts +21 -3
- package/dist/resizable-region.js +1 -1
- package/dist/segmented-control.d.ts +11 -8
- package/dist/segmented-control.js +3 -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 +34 -8
- package/dist/select.js +3 -1
- package/dist/semantic-content-BbzjvSu9.d.ts +14 -0
- package/dist/skeleton.d.ts +25 -0
- package/dist/skeleton.js +4 -0
- package/dist/skeleton.js.map +1 -0
- package/dist/split-view.d.ts +43 -0
- package/dist/split-view.js +82 -0
- package/dist/split-view.js.map +1 -0
- package/dist/state-banner.d.ts +11 -5
- package/dist/state-banner.js +3 -1
- package/dist/styles/app-tab.css +26 -0
- package/dist/styles/catalog.css +582 -0
- package/dist/styles/collapsible-panel.css +212 -0
- package/dist/styles/floating-toolbar.css +38 -0
- package/dist/styles/foundation.css +80 -0
- package/dist/styles/layout.css +2 -20
- package/dist/styles/list-action-row.css +224 -0
- package/dist/styles/list-header.css +198 -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 +171 -0
- package/dist/styles/list.css +43 -0
- package/dist/styles/nav-stack.css +141 -0
- package/dist/styles/pane.css +62 -0
- package/dist/styles/resizable-region.css +158 -0
- package/dist/styles/segmented-control.css +10 -7
- package/dist/styles/select.css +115 -2
- package/dist/styles/skeleton.css +31 -0
- package/dist/styles/split-view.css +35 -0
- package/dist/styles/state-banner.css +49 -10
- package/dist/styles/styles.css +7 -5
- package/dist/styles/sunken-panel.css +22 -0
- package/dist/styles/surface-scaffold.css +51 -0
- package/dist/styles/tab-bar.css +24 -0
- package/dist/styles/tab-scaffold.css +85 -0
- package/dist/styles/token-search-field.css +14 -2
- package/dist/styles/toolbar-control-group.css +224 -6
- package/dist/styles/toolbar-text.css +65 -2
- package/dist/styles/toolbar.css +47 -2
- package/dist/styles/webawesome.css +165 -0
- package/dist/styles/workbench.css +187 -0
- package/dist/sunken-panel.d.ts +20 -0
- package/dist/sunken-panel.js +3 -0
- package/dist/sunken-panel.js.map +1 -0
- package/dist/surface-scaffold.d.ts +26 -0
- package/dist/surface-scaffold.js +3 -0
- package/dist/surface-scaffold.js.map +1 -0
- package/dist/tab-bar.d.ts +24 -6
- package/dist/tab-bar.js +1 -1
- package/dist/tab-scaffold.d.ts +31 -0
- package/dist/tab-scaffold.js +51 -0
- package/dist/tab-scaffold.js.map +1 -0
- package/dist/token-search-field.d.ts +30 -13
- package/dist/token-search-field.js +1 -1
- package/dist/toolbar-control-group.d.ts +33 -7
- package/dist/toolbar-control-group.js +1 -1
- package/dist/toolbar-text.d.ts +31 -4
- package/dist/toolbar-text.js +3 -1
- package/dist/toolbar.d.ts +10 -7
- package/dist/toolbar.js +1 -1
- package/dist/value-table.d.ts +7 -3
- package/dist/value-table.js +3 -1
- package/dist/webawesome.d.ts +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 +18 -0
- package/dist/wire-nav-stack.js +228 -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 +48 -0
- package/dist/wire-sidebar.js +147 -0
- package/dist/wire-sidebar.js.map +1 -0
- package/dist/wire-tab-bars.d.ts +19 -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 +104 -4
- package/dist/wire-token-search-fields.js +1 -1
- package/dist/workbench.d.ts +44 -0
- package/dist/workbench.js +106 -0
- package/dist/workbench.js.map +1 -0
- package/docs/accessibility.md +137 -20
- package/docs/app-layouts.md +61 -0
- package/docs/catalog.md +364 -0
- package/docs/collapsible-panel.md +142 -0
- package/docs/component-contract.md +253 -26
- package/docs/component-selection.md +213 -57
- 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/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 +128 -0
- package/docs/design-philosophy.md +33 -11
- package/docs/device-class.md +54 -0
- package/docs/examples/application-ui-profile.json +60 -0
- package/docs/examples/command-palette-adapter.tsx +67 -17
- package/docs/examples/component-catalog-extension-v2.json +80 -0
- package/docs/examples/component-catalog-extension.json +45 -0
- package/docs/layout.md +98 -37
- package/docs/nav-stack.md +77 -0
- package/docs/recipes.md +75 -19
- package/docs/split-view.md +55 -0
- package/docs/sunken-panel.md +53 -0
- package/docs/surface-scaffold.md +25 -0
- package/docs/tab-scaffold.md +52 -0
- package/docs/type-contracts.md +127 -0
- package/docs/ui-analyzer.md +118 -0
- package/docs/ui-doctor.md +91 -0
- package/docs/ui-evaluator.md +122 -0
- package/docs/ux-demo.md +24 -13
- package/docs/webawesome-theme.md +82 -8
- package/docs/workbench.md +123 -0
- package/doctor/cli.mjs +115 -0
- package/doctor/config.schema.json +68 -0
- package/doctor/eslint-diagnostics.d.mts +24 -0
- package/doctor/eslint-diagnostics.mjs +24 -0
- package/doctor/index.d.mts +116 -0
- package/doctor/index.mjs +1272 -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 +253 -43
- package/package.json +180 -37
- package/traversal-exclusions.mjs +27 -0
- package/ux-demo/recipes/app-shell.tsx +222 -13
- package/ux-demo/recipes/collapsible-sidebar.tsx +229 -0
- package/ux-demo/recipes/compact-toolbar.tsx +115 -12
- package/ux-demo/recipes/composer-form.tsx +119 -18
- package/ux-demo/recipes/list-detail-dialog.tsx +197 -0
- package/ux-demo/recipes/list-workspace-states.tsx +175 -9
- package/ux-demo/recipes/loaders.ts +13 -4
- package/ux-demo/recipes/loading-inspector.tsx +186 -0
- package/ux-demo/recipes/mount-recipe.ts +31 -5
- package/ux-demo/recipes/navigation-sidebar.tsx +122 -11
- package/ux-demo/recipes/navigation-stack.tsx +118 -0
- package/ux-demo/recipes/recipes.css +143 -18
- package/ux-demo/recipes/types.ts +9 -1
- package/ux-demo/recipes/workspace-header.tsx +68 -3
- package/dist/browser/dialog-header.js +0 -5
- package/dist/browser/menu-action-row.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-55DATV3A.js +0 -10
- package/dist/chunk-55DATV3A.js.map +0 -1
- package/dist/chunk-7BR3DO2A.js.map +0 -1
- package/dist/chunk-7LDCTU7D.js +0 -134
- package/dist/chunk-7LDCTU7D.js.map +0 -1
- package/dist/chunk-AQNKJRFH.js +0 -79
- package/dist/chunk-AQNKJRFH.js.map +0 -1
- package/dist/chunk-CTQKI2XL.js +0 -28
- package/dist/chunk-CTQKI2XL.js.map +0 -1
- package/dist/chunk-DAFFDO33.js +0 -14
- package/dist/chunk-DAFFDO33.js.map +0 -1
- package/dist/chunk-EGHL5S4P.js +0 -33
- package/dist/chunk-EGHL5S4P.js.map +0 -1
- package/dist/chunk-GY5WH7TO.js +0 -10
- package/dist/chunk-GY5WH7TO.js.map +0 -1
- package/dist/chunk-H5AGGVU5.js +0 -75
- package/dist/chunk-H5AGGVU5.js.map +0 -1
- package/dist/chunk-K3G72I6D.js +0 -24
- package/dist/chunk-K3G72I6D.js.map +0 -1
- package/dist/chunk-M5JRI6MN.js +0 -27
- package/dist/chunk-M5JRI6MN.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-NPPD2A6O.js +0 -40
- package/dist/chunk-NPPD2A6O.js.map +0 -1
- package/dist/chunk-R6JHHBKQ.js +0 -19
- package/dist/chunk-R6JHHBKQ.js.map +0 -1
- package/dist/chunk-S3TPM2LP.js +0 -23
- package/dist/chunk-S3TPM2LP.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-WVPYVDXY.js +0 -15
- package/dist/chunk-WVPYVDXY.js.map +0 -1
- package/dist/chunk-XZXRLY5Q.js +0 -33
- package/dist/chunk-XZXRLY5Q.js.map +0 -1
- package/dist/dialog-header.d.ts +0 -15
- package/dist/dialog-header.js +0 -5
- package/dist/dialog-header.js.map +0 -1
- package/dist/menu-action-row.js +0 -4
- package/dist/menu-action-row.js.map +0 -1
- package/dist/menu-header.d.ts +0 -41
- package/dist/menu-header.js +0 -6
- package/dist/menu-header.js.map +0 -1
- package/dist/menu-item.d.ts +0 -31
- package/dist/menu-item.js +0 -4
- 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/dist/styles/dialog-header.css +0 -87
- package/dist/styles/menu-action-row.css +0 -154
- package/dist/styles/menu-header.css +0 -143
- package/dist/styles/menu-item.css +0 -118
- package/dist/styles/page-header.css +0 -26
- package/ux-demo/recipes/master-detail-dialog.tsx +0 -45
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import * as kerfjs from 'kerfjs';
|
|
2
|
+
import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* One entry in a {@link NavStack}. The app owns the stack as an array (usually a
|
|
6
|
+
* signal); `NavStack` renders it and `wireNavStack` animates the transitions.
|
|
7
|
+
*/
|
|
8
|
+
interface NavStackView {
|
|
9
|
+
/** Stable identity for keyed reconcile and transition direction. */
|
|
10
|
+
key: string;
|
|
11
|
+
content: KerfUiContent;
|
|
12
|
+
/** Title shown in the top toolbar for this view. */
|
|
13
|
+
title?: string;
|
|
14
|
+
/** Trailing actions for this view's top toolbar. */
|
|
15
|
+
toolbar?: KerfUiContent;
|
|
16
|
+
/** Bottom toolbar for this view. Cross-fades with the top chrome on navigation. */
|
|
17
|
+
bottomToolbar?: KerfUiContent;
|
|
18
|
+
}
|
|
19
|
+
interface NavStackProps {
|
|
20
|
+
id: string;
|
|
21
|
+
/** Accessible name for the stack region. */
|
|
22
|
+
label: string;
|
|
23
|
+
/** The stack, root first; the last entry is the active top view. */
|
|
24
|
+
views: NavStackView[];
|
|
25
|
+
/** Accessible label for the back control (default "Back"). */
|
|
26
|
+
backLabel?: string;
|
|
27
|
+
/** Hide the top toolbar entirely (rare — a fully custom-chrome view). */
|
|
28
|
+
hideToolbar?: boolean;
|
|
29
|
+
/** Optional persistent bottom toolbar used when the active view does not provide one. */
|
|
30
|
+
bottomToolbar?: KerfUiContent;
|
|
31
|
+
className?: string;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* A navigation stack (iOS-style push/pop). Renders every entry stacked, the last
|
|
35
|
+
* one active; `@kerfjs/ui/wire-nav-stack`'s `wireNavStack` slides the content and
|
|
36
|
+
* cross-fades the chrome across a change. A single-pane layout is a `NavStack`
|
|
37
|
+
* with one entry. See `docs/23-app-layouts.md` §3.1.
|
|
38
|
+
*/
|
|
39
|
+
declare function NavStack({ id, label, views, backLabel, hideToolbar, bottomToolbar, className, }: NavStackProps): kerfjs.SafeHtml;
|
|
40
|
+
|
|
41
|
+
export { NavStack, type NavStackProps, type NavStackView };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"nav-stack.js"}
|
package/dist/pane.d.ts
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import * as kerfjs from 'kerfjs';
|
|
2
|
+
import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
|
|
3
|
+
|
|
4
|
+
/** Logical sides that can show a {@link Pane} separator. */
|
|
5
|
+
type PaneSeparatorSide = 'block-start' | 'block-end' | 'inline-start' | 'inline-end';
|
|
6
|
+
/** Semantic root elements supported by {@link Pane}. */
|
|
7
|
+
type PaneElement = 'article' | 'aside' | 'div' | 'main' | 'section';
|
|
8
|
+
/** Semantic elements supported by the scrolling content slot. */
|
|
9
|
+
type PaneContentElement = 'div' | 'main' | 'nav' | 'section';
|
|
10
|
+
type PaneRootAttributes = Readonly<Record<`data-${string}`, string | undefined> & {
|
|
11
|
+
'data-component'?: never;
|
|
12
|
+
'data-separator-block-start'?: never;
|
|
13
|
+
'data-separator-block-end'?: never;
|
|
14
|
+
'data-separator-inline-start'?: never;
|
|
15
|
+
'data-separator-inline-end'?: never;
|
|
16
|
+
}>;
|
|
17
|
+
interface PaneProps {
|
|
18
|
+
/** Optional fixed chrome above the scrolling content, arranged vertically. */
|
|
19
|
+
header?: KerfUiContent;
|
|
20
|
+
/** The pane's primary vertical, scrolling content stack. */
|
|
21
|
+
children?: KerfUiContent;
|
|
22
|
+
/** Optional fixed chrome below the scrolling content. */
|
|
23
|
+
footer?: KerfUiContent;
|
|
24
|
+
/** Root semantics. Defaults to `div`. */
|
|
25
|
+
element?: PaneElement;
|
|
26
|
+
/** Scrolling content semantics. Defaults to `div`. */
|
|
27
|
+
contentElement?: PaneContentElement;
|
|
28
|
+
/** Independent logical-edge separator lines. Defaults to none. */
|
|
29
|
+
separators?: readonly PaneSeparatorSide[];
|
|
30
|
+
id?: string;
|
|
31
|
+
/** Accessible name for a landmark root such as `aside` or `main`. */
|
|
32
|
+
label?: string;
|
|
33
|
+
/** Accessible name for a landmark scrolling slot such as `nav`. */
|
|
34
|
+
contentLabel?: string;
|
|
35
|
+
className?: string;
|
|
36
|
+
headerClassName?: string;
|
|
37
|
+
contentClassName?: string;
|
|
38
|
+
footerClassName?: string;
|
|
39
|
+
/** Safe `data-*` metadata; Pane-owned structural attributes remain protected. */
|
|
40
|
+
rootAttributes?: PaneRootAttributes;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* An unpadded application column with optional fixed header/footer slots and one
|
|
44
|
+
* scrolling vertical content owner. Separator lines are independently opt-in on
|
|
45
|
+
* each logical edge, so the same component works as a sidebar, main area,
|
|
46
|
+
* inspector, or dialog column.
|
|
47
|
+
*/
|
|
48
|
+
declare function Pane({ header, children, footer, element, contentElement, separators, id, label, contentLabel, className, headerClassName, contentClassName, footerClassName, rootAttributes, }: PaneProps): kerfjs.SafeHtml;
|
|
49
|
+
|
|
50
|
+
export { Pane, type PaneContentElement, type PaneElement, type PaneProps, type PaneSeparatorSide };
|
package/dist/pane.js
ADDED
package/dist/pane.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"pane.js"}
|
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
import { SafeHtml } from 'kerfjs';
|
|
2
|
+
import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
|
|
2
3
|
|
|
3
4
|
type ResizableRegionAxis = 'horizontal' | 'vertical';
|
|
4
5
|
type ResizableRegionEdge = 'start' | 'end';
|
|
6
|
+
type ResizableRegionSeparator = 'auto' | 'hidden';
|
|
7
|
+
type ResizableRegionCollapseMotion = 'none' | 'slide' | 'fade-slide';
|
|
8
|
+
type ResizableRegionContentOverflow = 'clip' | 'auto' | 'visible';
|
|
9
|
+
type ResizableRegionPresentation = 'inline' | 'overlay' | 'hidden';
|
|
10
|
+
type ResizableRegionRestorePosition = 'bottom-start' | 'bottom-end';
|
|
5
11
|
interface ResizableRegionProps {
|
|
6
12
|
id: string;
|
|
7
13
|
label: string;
|
|
@@ -12,12 +18,24 @@ interface ResizableRegionProps {
|
|
|
12
18
|
edge?: ResizableRegionEdge;
|
|
13
19
|
collapsed?: boolean;
|
|
14
20
|
transitioning?: boolean;
|
|
21
|
+
/** Whether the separator line is painted. The resize hit target remains available. */
|
|
22
|
+
separator?: ResizableRegionSeparator;
|
|
23
|
+
/** Keep the track change instant while optionally sliding the fixed-size content. */
|
|
24
|
+
collapseMotion?: ResizableRegionCollapseMotion;
|
|
25
|
+
/** Overflow policy for content such as an open popup inside a bottom drawer. */
|
|
26
|
+
contentOverflow?: ResizableRegionContentOverflow;
|
|
27
|
+
/** Inline layout, an edge overlay, or a responsive replacement that removes the region. */
|
|
28
|
+
presentation?: ResizableRegionPresentation;
|
|
29
|
+
/** Always-available control rendered while collapsed, outside the clipped region. */
|
|
30
|
+
restoreControl?: SafeHtml;
|
|
31
|
+
/** Safe-area-aware viewport corner for `restoreControl`. */
|
|
32
|
+
restorePosition?: ResizableRegionRestorePosition;
|
|
15
33
|
/** Decorative dormant content for the separator handle. Must not contain interactive descendants. */
|
|
16
34
|
handleIcon?: SafeHtml;
|
|
17
|
-
children:
|
|
35
|
+
children: KerfUiContent;
|
|
18
36
|
}
|
|
19
37
|
declare const clampRegionSize: (size: number, min: number, max: number) => number;
|
|
20
38
|
declare const resizeRegionFromPointer: (startSize: number, delta: number, edge: ResizableRegionEdge) => number;
|
|
21
|
-
declare function ResizableRegion({ id, label, size, min, max, axis, edge, collapsed, transitioning, handleIcon, children }: ResizableRegionProps): SafeHtml;
|
|
39
|
+
declare function ResizableRegion({ id, label, size, min, max, axis, edge, collapsed, transitioning, separator, collapseMotion, contentOverflow, presentation, restoreControl, restorePosition, handleIcon, children, }: ResizableRegionProps): SafeHtml;
|
|
22
40
|
|
|
23
|
-
export { ResizableRegion, type ResizableRegionAxis, type ResizableRegionEdge, type ResizableRegionProps, clampRegionSize, resizeRegionFromPointer };
|
|
41
|
+
export { ResizableRegion, type ResizableRegionAxis, type ResizableRegionCollapseMotion, type ResizableRegionContentOverflow, type ResizableRegionEdge, type ResizableRegionPresentation, type ResizableRegionProps, type ResizableRegionRestorePosition, type ResizableRegionSeparator, clampRegionSize, resizeRegionFromPointer };
|
package/dist/resizable-region.js
CHANGED
|
@@ -1,28 +1,31 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as kerfjs from 'kerfjs';
|
|
2
|
+
import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
|
|
2
3
|
|
|
3
4
|
type SegmentedControlAppearance = 'filled' | 'outlined' | 'toolbar';
|
|
4
5
|
type SegmentedControlShape = 'rounded' | 'pill';
|
|
5
6
|
type SegmentedControlSize = 'small' | 'default';
|
|
6
7
|
type SegmentedControlLayout = 'content' | 'equal';
|
|
7
|
-
interface SegmentedControlChoice {
|
|
8
|
-
value:
|
|
8
|
+
interface SegmentedControlChoice<Value extends string = string> {
|
|
9
|
+
value: Value;
|
|
9
10
|
label: string;
|
|
10
|
-
content?:
|
|
11
|
+
content?: KerfUiContent;
|
|
11
12
|
title?: string;
|
|
12
13
|
disabled?: boolean;
|
|
13
14
|
}
|
|
14
|
-
interface SegmentedControlProps {
|
|
15
|
+
interface SegmentedControlProps<Value extends string = string> {
|
|
15
16
|
id: string;
|
|
16
17
|
label: string;
|
|
17
|
-
value:
|
|
18
|
-
choices: readonly SegmentedControlChoice[];
|
|
18
|
+
value: NoInfer<Value>;
|
|
19
|
+
choices: readonly SegmentedControlChoice<Value>[];
|
|
19
20
|
action?: string;
|
|
20
21
|
appearance?: SegmentedControlAppearance;
|
|
21
22
|
shape?: SegmentedControlShape;
|
|
22
23
|
size?: SegmentedControlSize;
|
|
23
24
|
layout?: SegmentedControlLayout;
|
|
24
25
|
className?: string;
|
|
26
|
+
/** Render as an unanimated loading skeleton, disabling every segment. */
|
|
27
|
+
placeholder?: boolean;
|
|
25
28
|
}
|
|
26
|
-
declare function SegmentedControl({ id, label, value, choices, action, appearance, shape, size, layout, className, }: SegmentedControlProps): SafeHtml;
|
|
29
|
+
declare function SegmentedControl<Value extends string>({ id, label, value, choices, action, appearance, shape, size, layout, className, placeholder, }: SegmentedControlProps<Value>): kerfjs.SafeHtml;
|
|
27
30
|
|
|
28
31
|
export { SegmentedControl, type SegmentedControlAppearance, type SegmentedControlChoice, type SegmentedControlLayout, type SegmentedControlProps, type SegmentedControlShape, type SegmentedControlSize };
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Marker export for tests and tooling; importing this module performs registration.
|
|
3
|
+
* Registers both the `Select` elements and the `Catalog` related-entries popup-menu
|
|
4
|
+
* elements (`wa-dropdown` / `wa-dropdown-item` / `wa-button`).
|
|
5
|
+
*/
|
|
2
6
|
declare const selectElementsRegistered = true;
|
|
3
7
|
|
|
4
8
|
export { selectElementsRegistered };
|
package/dist/select-register.js
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
+
import '@awesome.me/webawesome/dist/components/button/button.js';
|
|
1
2
|
import '@awesome.me/webawesome/dist/components/divider/divider.js';
|
|
3
|
+
import '@awesome.me/webawesome/dist/components/dropdown/dropdown.js';
|
|
4
|
+
import '@awesome.me/webawesome/dist/components/dropdown-item/dropdown-item.js';
|
|
2
5
|
import '@awesome.me/webawesome/dist/components/option/option.js';
|
|
3
6
|
import '@awesome.me/webawesome/dist/components/select/select.js';
|
|
4
7
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/select-register.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/select-register.ts"],"names":[],"mappings":";;;;;;;;AAYO,IAAM,wBAAA,GAA2B","file":"select-register.js","sourcesContent":["import '@awesome.me/webawesome/dist/components/button/button.js';\nimport '@awesome.me/webawesome/dist/components/divider/divider.js';\nimport '@awesome.me/webawesome/dist/components/dropdown/dropdown.js';\nimport '@awesome.me/webawesome/dist/components/dropdown-item/dropdown-item.js';\nimport '@awesome.me/webawesome/dist/components/option/option.js';\nimport '@awesome.me/webawesome/dist/components/select/select.js';\n\n/**\n * Marker export for tests and tooling; importing this module performs registration.\n * Registers both the `Select` elements and the `Catalog` related-entries popup-menu\n * elements (`wa-dropdown` / `wa-dropdown-item` / `wa-button`).\n */\nexport const selectElementsRegistered = true;\n"]}
|
package/dist/select.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { SafeHtml } from 'kerfjs';
|
|
2
|
+
import { CssColor } from './css-values.js';
|
|
2
3
|
import { LucideNode } from './lucide-icon.js';
|
|
3
4
|
import 'lucide';
|
|
4
5
|
|
|
@@ -7,22 +8,47 @@ interface SelectChoice<Value extends string = string> {
|
|
|
7
8
|
label: string;
|
|
8
9
|
icon?: LucideNode;
|
|
9
10
|
iconName?: string;
|
|
10
|
-
color
|
|
11
|
+
/** Typed semantic or application-owned color for the optional icon. */
|
|
12
|
+
color?: CssColor;
|
|
11
13
|
group?: string;
|
|
12
14
|
separatorBefore?: boolean;
|
|
13
15
|
}
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
value: Value;
|
|
17
|
-
label?: string;
|
|
16
|
+
type SelectAccessibleName = {
|
|
17
|
+
label: string;
|
|
18
18
|
ariaLabel?: string;
|
|
19
|
+
} | {
|
|
20
|
+
label?: never;
|
|
21
|
+
ariaLabel: string;
|
|
22
|
+
};
|
|
23
|
+
type SelectPresentation = 'form' | 'toolbar-borderless' | 'navigation';
|
|
24
|
+
type SelectSize = 'default' | 'compact';
|
|
25
|
+
type SelectSelectedPresentation = 'label' | 'icon-only';
|
|
26
|
+
type SelectFocusRingOwner = 'select' | 'group';
|
|
27
|
+
interface SelectBaseProps<Value extends string = string> {
|
|
28
|
+
name: string;
|
|
29
|
+
value: NoInfer<Value>;
|
|
19
30
|
choices: readonly SelectChoice<Value>[];
|
|
20
31
|
className?: string;
|
|
21
|
-
placeholder
|
|
32
|
+
/** Empty-value hint text shown in the closed control (the native select placeholder). */
|
|
33
|
+
placeholderText?: string;
|
|
34
|
+
/** Supporting text shown below the control and associated with its combobox. */
|
|
35
|
+
hint?: string;
|
|
22
36
|
disabled?: boolean;
|
|
23
37
|
fitMenu?: boolean;
|
|
24
38
|
renderSelected?: (choice: SelectChoice<Value>) => SafeHtml;
|
|
39
|
+
/** Render as an unanimated loading skeleton: the label above a static, empty control box. */
|
|
40
|
+
placeholder?: boolean;
|
|
41
|
+
/** Form (default), borderless toolbar, or intrinsic navigation chrome. */
|
|
42
|
+
presentation?: SelectPresentation;
|
|
43
|
+
size?: SelectSize;
|
|
44
|
+
/** Show only the selected choice icon while retaining the Select's accessible name. */
|
|
45
|
+
selectedPresentation?: SelectSelectedPresentation;
|
|
46
|
+
/** Let an enclosing ToolbarControlGroup paint the composed focus ring. */
|
|
47
|
+
focusRingOwner?: SelectFocusRingOwner;
|
|
48
|
+
/** Maximum closed-control label width in CSS pixels before ellipsis. */
|
|
49
|
+
labelMaxWidth?: number;
|
|
25
50
|
}
|
|
26
|
-
|
|
51
|
+
type SelectProps<Value extends string = string> = SelectBaseProps<Value> & SelectAccessibleName;
|
|
52
|
+
declare function Select<Value extends string>({ name, value, label, ariaLabel, choices, className, placeholderText, hint, disabled, fitMenu, renderSelected, placeholder, presentation, size, selectedPresentation, focusRingOwner, labelMaxWidth, }: SelectProps<Value>): SafeHtml;
|
|
27
53
|
|
|
28
|
-
export { Select, type SelectChoice, type SelectProps };
|
|
54
|
+
export { Select, type SelectChoice, type SelectFocusRingOwner, type SelectPresentation, type SelectProps, type SelectSelectedPresentation, type SelectSize };
|
package/dist/select.js
CHANGED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { SafeHtml } from 'kerfjs';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Renderable content for semantic Kerf UI component positions.
|
|
5
|
+
*
|
|
6
|
+
* Unlike core JSX children, UI content intentionally excludes raw strings,
|
|
7
|
+
* numbers, and signals: semantic component zones should contain trusted
|
|
8
|
+
* `SafeHtml` components. Boolean and nullish values render nothing, and nested
|
|
9
|
+
* readonly arrays let conditionals and mapped component collections compose
|
|
10
|
+
* directly without an otherwise-unnecessary Fragment.
|
|
11
|
+
*/
|
|
12
|
+
type KerfUiContent = SafeHtml | boolean | null | undefined | readonly KerfUiContent[];
|
|
13
|
+
|
|
14
|
+
export type { KerfUiContent as K };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import * as kerfjs from 'kerfjs';
|
|
2
|
+
import { CssSize, CssLength } from './css-values.js';
|
|
3
|
+
|
|
4
|
+
interface SkeletonProps {
|
|
5
|
+
/** Typed width or intrinsic sizing keyword. Defaults to filling its slot. */
|
|
6
|
+
width?: CssSize;
|
|
7
|
+
/** Typed height or intrinsic sizing keyword. Defaults to a single text line. */
|
|
8
|
+
height?: CssSize;
|
|
9
|
+
/** Typed corner-radius override. Defaults to the small radius token. */
|
|
10
|
+
radius?: CssLength;
|
|
11
|
+
/** Render this many stacked lines (the last one shorter), for multi-line text. */
|
|
12
|
+
lines?: number;
|
|
13
|
+
/** Accessible label. Omit to keep the block decorative (`aria-hidden`). */
|
|
14
|
+
label?: string;
|
|
15
|
+
className?: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* A subtle, deliberately **unanimated** loading placeholder block. Use it for a
|
|
19
|
+
* value slot whose content is not yet known, on its own or via a component's
|
|
20
|
+
* `placeholder` prop. Decorative by default (`aria-hidden`); pass `label` to
|
|
21
|
+
* announce it. Sizes to its slot unless `width`/`height` are given.
|
|
22
|
+
*/
|
|
23
|
+
declare function Skeleton({ width, height, radius, lines, label, className, }: SkeletonProps): kerfjs.SafeHtml;
|
|
24
|
+
|
|
25
|
+
export { Skeleton, type SkeletonProps };
|
package/dist/skeleton.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"skeleton.js"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import * as kerfjs from 'kerfjs';
|
|
2
|
+
import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
|
|
3
|
+
|
|
4
|
+
interface SplitViewResizable {
|
|
5
|
+
size: number;
|
|
6
|
+
min: number;
|
|
7
|
+
max: number;
|
|
8
|
+
}
|
|
9
|
+
interface SplitViewProps {
|
|
10
|
+
id: string;
|
|
11
|
+
label: string;
|
|
12
|
+
/** The list (primary) pane. */
|
|
13
|
+
list: KerfUiContent;
|
|
14
|
+
/** The detail (secondary) pane. */
|
|
15
|
+
detail: KerfUiContent;
|
|
16
|
+
/**
|
|
17
|
+
* Compact ("one pane at a time") classes — a handset or portrait tablet.
|
|
18
|
+
* Derive from `deviceClass().value.compact`. When true the split collapses to
|
|
19
|
+
* a `NavStack`: the list is the root and the detail is pushed over it.
|
|
20
|
+
*/
|
|
21
|
+
compact?: boolean;
|
|
22
|
+
/** In compact mode, whether the detail is currently pushed over the list. */
|
|
23
|
+
detailActive?: boolean;
|
|
24
|
+
/** Title/label for the list (compact NavStack root + region label). */
|
|
25
|
+
listTitle?: string;
|
|
26
|
+
/** Title/label for the detail (compact NavStack pushed view + region label). */
|
|
27
|
+
detailTitle?: string;
|
|
28
|
+
/** Back label for the compact NavStack (default "Back"). */
|
|
29
|
+
backLabel?: string;
|
|
30
|
+
/** A resizable separator on roomy classes (min/max px). Omit for a fixed split. */
|
|
31
|
+
resizable?: SplitViewResizable;
|
|
32
|
+
className?: string;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* A list-detail split. On roomy classes it shows both panes side
|
|
36
|
+
* by side with an optional resizable separator; on compact classes it collapses
|
|
37
|
+
* to a `NavStack` (list → detail). See `docs/23-app-layouts.md` §3.2. Compose the
|
|
38
|
+
* resizable wiring with `wireResizableRegions` and the compact back with
|
|
39
|
+
* `wireNavStack`.
|
|
40
|
+
*/
|
|
41
|
+
declare function SplitView({ id, label, list, detail, compact, detailActive, listTitle, detailTitle, backLabel, resizable, className, }: SplitViewProps): kerfjs.SafeHtml;
|
|
42
|
+
|
|
43
|
+
export { SplitView, type SplitViewProps, type SplitViewResizable };
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { NavStack } from './chunk-AQFWBG23.js';
|
|
2
|
+
|
|
3
|
+
import { ResizableRegion } from './chunk-CAB6NQ2T.js';
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
import { jsx, jsxs } from 'kerfjs/jsx-runtime';
|
|
7
|
+
|
|
8
|
+
function SplitView({
|
|
9
|
+
id,
|
|
10
|
+
label,
|
|
11
|
+
list,
|
|
12
|
+
detail,
|
|
13
|
+
compact = false,
|
|
14
|
+
detailActive = false,
|
|
15
|
+
listTitle = "",
|
|
16
|
+
detailTitle = "",
|
|
17
|
+
backLabel = "Back",
|
|
18
|
+
resizable,
|
|
19
|
+
className = ""
|
|
20
|
+
}) {
|
|
21
|
+
if (compact) {
|
|
22
|
+
const views = detailActive ? [
|
|
23
|
+
{ key: "list", title: listTitle, content: list },
|
|
24
|
+
{ key: "detail", title: detailTitle, content: detail }
|
|
25
|
+
] : [{ key: "list", title: listTitle, content: list }];
|
|
26
|
+
return /* @__PURE__ */ jsx(
|
|
27
|
+
"div",
|
|
28
|
+
{
|
|
29
|
+
class: `kui-split-view kui-split-view--compact ${className}`.trim(),
|
|
30
|
+
id,
|
|
31
|
+
"data-component": "split-view",
|
|
32
|
+
"data-split-mode": "compact",
|
|
33
|
+
children: /* @__PURE__ */ jsx(
|
|
34
|
+
NavStack,
|
|
35
|
+
{
|
|
36
|
+
id: `${id}-stack`,
|
|
37
|
+
label,
|
|
38
|
+
views,
|
|
39
|
+
backLabel
|
|
40
|
+
}
|
|
41
|
+
)
|
|
42
|
+
}
|
|
43
|
+
);
|
|
44
|
+
}
|
|
45
|
+
const listPane = resizable ? /* @__PURE__ */ jsx(
|
|
46
|
+
ResizableRegion,
|
|
47
|
+
{
|
|
48
|
+
id: `${id}-list`,
|
|
49
|
+
label: listTitle || "List",
|
|
50
|
+
size: resizable.size,
|
|
51
|
+
min: resizable.min,
|
|
52
|
+
max: resizable.max,
|
|
53
|
+
children: /* @__PURE__ */ jsx("div", { class: "kui-split-view__list kui-pane", "data-split-list": true, children: list })
|
|
54
|
+
}
|
|
55
|
+
) : /* @__PURE__ */ jsx("div", { class: "kui-split-view__list kui-pane", "data-split-list": true, children: list });
|
|
56
|
+
return /* @__PURE__ */ jsxs(
|
|
57
|
+
"div",
|
|
58
|
+
{
|
|
59
|
+
class: `kui-split-view ${className}`.trim(),
|
|
60
|
+
id,
|
|
61
|
+
"data-component": "split-view",
|
|
62
|
+
"data-split-mode": "split",
|
|
63
|
+
"aria-label": label,
|
|
64
|
+
children: [
|
|
65
|
+
listPane,
|
|
66
|
+
/* @__PURE__ */ jsx(
|
|
67
|
+
"div",
|
|
68
|
+
{
|
|
69
|
+
class: "kui-split-view__detail kui-pane",
|
|
70
|
+
"data-split-detail": true,
|
|
71
|
+
"aria-label": detailTitle || void 0,
|
|
72
|
+
children: detail
|
|
73
|
+
}
|
|
74
|
+
)
|
|
75
|
+
]
|
|
76
|
+
}
|
|
77
|
+
);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
export { SplitView };
|
|
81
|
+
|
|
82
|
+
//# sourceMappingURL=split-view.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/split-view.tsx"],"names":[],"mappings":";;;;;;;AA2CO,SAAS,SAAA,CAAU;AAAA,EACxB,EAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA,GAAU,KAAA;AAAA,EACV,YAAA,GAAe,KAAA;AAAA,EACf,SAAA,GAAY,EAAA;AAAA,EACZ,WAAA,GAAc,EAAA;AAAA,EACd,SAAA,GAAY,MAAA;AAAA,EACZ,SAAA;AAAA,EACA,SAAA,GAAY;AACd,CAAA,EAAmB;AACjB,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,MAAM,QAAQ,YAAA,GACV;AAAA,MACE,EAAE,GAAA,EAAK,MAAA,EAAQ,KAAA,EAAO,SAAA,EAAW,SAAS,IAAA,EAAK;AAAA,MAC/C,EAAE,GAAA,EAAK,QAAA,EAAU,KAAA,EAAO,WAAA,EAAa,SAAS,MAAA;AAAO,KACvD,GACA,CAAC,EAAE,GAAA,EAAK,QAAQ,KAAA,EAAO,SAAA,EAAW,OAAA,EAAS,IAAA,EAAM,CAAA;AACrD,IAAA,uBACE,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,CAAA,uCAAA,EAA0C,SAAS,CAAA,CAAA,CAAG,IAAA,EAAK;AAAA,QAClE,EAAA;AAAA,QACA,gBAAA,EAAe,YAAA;AAAA,QACf,iBAAA,EAAgB,SAAA;AAAA,QAEhB,QAAA,kBAAA,GAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,EAAA,EAAI,GAAG,EAAE,CAAA,MAAA,CAAA;AAAA,YACT,KAAA;AAAA,YACA,KAAA;AAAA,YACA;AAAA;AAAA;AACF;AAAA,KACF;AAAA,EAEJ;AACA,EAAA,MAAM,WAAW,SAAA,mBACf,GAAA;AAAA,IAAC,eAAA;AAAA,IAAA;AAAA,MACC,EAAA,EAAI,GAAG,EAAE,CAAA,KAAA,CAAA;AAAA,MACT,OAAO,SAAA,IAAa,MAAA;AAAA,MACpB,MAAM,SAAA,CAAU,IAAA;AAAA,MAChB,KAAK,SAAA,CAAU,GAAA;AAAA,MACf,KAAK,SAAA,CAAU,GAAA;AAAA,MAEf,8BAAC,KAAA,EAAA,EAAI,KAAA,EAAM,+BAAA,EAAgC,iBAAA,EAAe,MACvD,QAAA,EAAA,IAAA,EACH;AAAA;AAAA,sBAGF,GAAA,CAAC,KAAA,EAAA,EAAI,OAAM,+BAAA,EAAgC,iBAAA,EAAe,MACvD,QAAA,EAAA,IAAA,EACH,CAAA;AAEF,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,CAAA,eAAA,EAAkB,SAAS,CAAA,CAAA,CAAG,IAAA,EAAK;AAAA,MAC1C,EAAA;AAAA,MACA,gBAAA,EAAe,YAAA;AAAA,MACf,iBAAA,EAAgB,OAAA;AAAA,MAChB,YAAA,EAAY,KAAA;AAAA,MAEX,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,wBACD,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAM,iCAAA;AAAA,YACN,mBAAA,EAAiB,IAAA;AAAA,YACjB,cAAY,WAAA,IAAe,MAAA;AAAA,YAE1B,QAAA,EAAA;AAAA;AAAA;AACH;AAAA;AAAA,GACF;AAEJ","file":"split-view.js","sourcesContent":["import { NavStack } from './nav-stack.js';\nimport { ResizableRegion } from './resizable-region.js';\nimport type { KerfUiContent } from './semantic-content.js';\n\nexport interface SplitViewResizable {\n size: number;\n min: number;\n max: number;\n}\n\nexport interface SplitViewProps {\n id: string;\n label: string;\n /** The list (primary) pane. */\n list: KerfUiContent;\n /** The detail (secondary) pane. */\n detail: KerfUiContent;\n /**\n * Compact (\"one pane at a time\") classes — a handset or portrait tablet.\n * Derive from `deviceClass().value.compact`. When true the split collapses to\n * a `NavStack`: the list is the root and the detail is pushed over it.\n */\n compact?: boolean;\n /** In compact mode, whether the detail is currently pushed over the list. */\n detailActive?: boolean;\n /** Title/label for the list (compact NavStack root + region label). */\n listTitle?: string;\n /** Title/label for the detail (compact NavStack pushed view + region label). */\n detailTitle?: string;\n /** Back label for the compact NavStack (default \"Back\"). */\n backLabel?: string;\n /** A resizable separator on roomy classes (min/max px). Omit for a fixed split. */\n resizable?: SplitViewResizable;\n className?: string;\n}\n\n/**\n * A list-detail split. On roomy classes it shows both panes side\n * by side with an optional resizable separator; on compact classes it collapses\n * to a `NavStack` (list → detail). See `docs/23-app-layouts.md` §3.2. Compose the\n * resizable wiring with `wireResizableRegions` and the compact back with\n * `wireNavStack`.\n */\nexport function SplitView({\n id,\n label,\n list,\n detail,\n compact = false,\n detailActive = false,\n listTitle = '',\n detailTitle = '',\n backLabel = 'Back',\n resizable,\n className = '',\n}: SplitViewProps) {\n if (compact) {\n const views = detailActive\n ? [\n { key: 'list', title: listTitle, content: list },\n { key: 'detail', title: detailTitle, content: detail },\n ]\n : [{ key: 'list', title: listTitle, content: list }];\n return (\n <div\n class={`kui-split-view kui-split-view--compact ${className}`.trim()}\n id={id}\n data-component=\"split-view\"\n data-split-mode=\"compact\"\n >\n <NavStack\n id={`${id}-stack`}\n label={label}\n views={views}\n backLabel={backLabel}\n />\n </div>\n );\n }\n const listPane = resizable ? (\n <ResizableRegion\n id={`${id}-list`}\n label={listTitle || 'List'}\n size={resizable.size}\n min={resizable.min}\n max={resizable.max}\n >\n <div class=\"kui-split-view__list kui-pane\" data-split-list>\n {list}\n </div>\n </ResizableRegion>\n ) : (\n <div class=\"kui-split-view__list kui-pane\" data-split-list>\n {list}\n </div>\n );\n return (\n <div\n class={`kui-split-view ${className}`.trim()}\n id={id}\n data-component=\"split-view\"\n data-split-mode=\"split\"\n aria-label={label}\n >\n {listPane}\n <div\n class=\"kui-split-view__detail kui-pane\"\n data-split-detail\n aria-label={detailTitle || undefined}\n >\n {detail}\n </div>\n </div>\n );\n}\n"]}
|
package/dist/state-banner.d.ts
CHANGED
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
import { SafeHtml } from 'kerfjs';
|
|
2
|
+
import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
|
|
2
3
|
|
|
3
|
-
type StateBannerTone = 'neutral' | 'info' | 'success' | 'warning' | 'danger';
|
|
4
|
+
type StateBannerTone = 'neutral' | 'info' | 'pop' | 'success' | 'warning' | 'danger';
|
|
5
|
+
type StateBannerUrgency = 'status' | 'alert';
|
|
4
6
|
interface StateBannerProps {
|
|
5
7
|
title: string;
|
|
6
8
|
detail?: string;
|
|
9
|
+
/** Optional compact status or count shown beside the title. */
|
|
10
|
+
badge?: string;
|
|
7
11
|
icon?: SafeHtml;
|
|
8
|
-
action?:
|
|
12
|
+
action?: KerfUiContent;
|
|
9
13
|
tone?: StateBannerTone;
|
|
10
|
-
urgency?:
|
|
14
|
+
urgency?: StateBannerUrgency;
|
|
11
15
|
className?: string;
|
|
16
|
+
/** Render the title, badge, and detail as unanimated loading skeletons, keeping the icon and tone. */
|
|
17
|
+
placeholder?: boolean;
|
|
12
18
|
}
|
|
13
|
-
declare function StateBanner({ title, detail, icon, action, tone, urgency, className }: StateBannerProps): SafeHtml;
|
|
19
|
+
declare function StateBanner({ title, detail, badge, icon, action, tone, urgency, className, placeholder, }: StateBannerProps): SafeHtml;
|
|
14
20
|
|
|
15
|
-
export { StateBanner, type StateBannerProps, type StateBannerTone };
|
|
21
|
+
export { StateBanner, type StateBannerProps, type StateBannerTone, type StateBannerUrgency };
|
package/dist/state-banner.js
CHANGED
package/dist/styles/app-tab.css
CHANGED
|
@@ -26,6 +26,13 @@
|
|
|
26
26
|
align-items: center;
|
|
27
27
|
flex: none;
|
|
28
28
|
}
|
|
29
|
+
.kui-app-tab[data-size="compact"] {
|
|
30
|
+
height: 2rem;
|
|
31
|
+
}
|
|
32
|
+
.kui-app-tab[data-presentation="segmented"] {
|
|
33
|
+
border-radius: var(--kui-radius-s);
|
|
34
|
+
box-shadow: none;
|
|
35
|
+
}
|
|
29
36
|
.kui-app-tab:hover {
|
|
30
37
|
border-color: var(--kui-color-neutral-border-normal);
|
|
31
38
|
background: var(--kui-app-tab-hover-background);
|
|
@@ -92,12 +99,31 @@
|
|
|
92
99
|
flex: none;
|
|
93
100
|
}
|
|
94
101
|
.kui-app-tab__name {
|
|
102
|
+
max-width: var(--kui-app-tab-label-max-width, none);
|
|
95
103
|
overflow: hidden;
|
|
96
104
|
font-size: var(--kui-font-xs);
|
|
97
105
|
font-weight: 650;
|
|
98
106
|
text-overflow: ellipsis;
|
|
99
107
|
white-space: nowrap;
|
|
100
108
|
}
|
|
109
|
+
.kui-app-tab[data-presentation="icon-only"] .kui-app-tab__select {
|
|
110
|
+
width: 100%;
|
|
111
|
+
justify-content: center;
|
|
112
|
+
}
|
|
113
|
+
.kui-app-tab[data-presentation="icon-only"] .kui-app-tab__name {
|
|
114
|
+
position: absolute;
|
|
115
|
+
width: 1px;
|
|
116
|
+
height: 1px;
|
|
117
|
+
padding: 0;
|
|
118
|
+
overflow: hidden;
|
|
119
|
+
clip: rect(0, 0, 0, 0);
|
|
120
|
+
white-space: nowrap;
|
|
121
|
+
clip-path: inset(50%);
|
|
122
|
+
}
|
|
123
|
+
.kui-app-tab[data-presentation="icon-only"] {
|
|
124
|
+
width: 2rem;
|
|
125
|
+
min-width: 2rem;
|
|
126
|
+
}
|
|
101
127
|
.kui-app-tab__trailing {
|
|
102
128
|
display: grid;
|
|
103
129
|
min-width: 1.275rem;
|