@kerfjs/ui 5.0.0-beta.49 → 5.0.0-beta.51
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 +69 -15
- package/ai/catalog-authoring.json +12 -1
- package/ai/catalog-authoring.schema.json +49 -1
- package/ai/compile-time-contracts-v1.json +19 -2
- package/ai/compile-time-contracts-v1.schema.json +1 -0
- package/ai/component-catalog-v2-overrides.json +7 -0
- package/ai/component-catalog-v2.d.ts +19 -1
- package/ai/component-catalog-v2.json +920 -149
- package/ai/component-catalog-v2.schema.json +33 -1
- package/ai/component-catalog.json +689 -153
- package/ai/component-catalog.schema.json +21 -1
- package/ai/public-api-signatures-v1.md +404 -184
- package/ai/skill.md +31 -14
- package/ai/webawesome-jsx-signatures-v1.md +1 -1
- package/analyzer/index.mjs +105 -35
- package/dist/app-tab.d.ts +3 -1
- package/dist/app-tab.js +1 -1
- package/dist/badge.d.ts +24 -0
- package/dist/badge.js +3 -0
- package/dist/badge.js.map +1 -0
- package/dist/browser/badge.js +3 -0
- package/dist/browser/list-header.js +1 -0
- package/dist/browser/state-banner.js +1 -0
- package/dist/catalog-resources.d.ts +2 -2
- package/dist/catalog.d.ts +47 -125
- package/dist/catalog.js +429 -262
- package/dist/catalog.js.map +1 -1
- package/dist/{chunk-W2FK7ZNY.js → chunk-4R777DUZ.js} +10 -2
- package/dist/chunk-4R777DUZ.js.map +1 -0
- package/dist/{chunk-OMSRSL3B.js → chunk-5FZZMIMD.js} +6 -4
- package/dist/chunk-5FZZMIMD.js.map +1 -0
- package/dist/{chunk-AQFWBG23.js → chunk-5PMGQDG7.js} +5 -3
- package/dist/chunk-5PMGQDG7.js.map +1 -0
- package/dist/{chunk-SOK5EUF7.js → chunk-6ZXOQEAN.js} +4 -2
- package/dist/chunk-6ZXOQEAN.js.map +1 -0
- package/dist/{chunk-I4V3UDSA.js → chunk-7GUQYHKA.js} +25 -6
- package/dist/chunk-7GUQYHKA.js.map +1 -0
- package/dist/{chunk-XKFRMGMW.js → chunk-7IUSV4XG.js} +3 -1
- package/dist/chunk-7IUSV4XG.js.map +1 -0
- package/dist/{chunk-IU4QUY5I.js → chunk-AEPXGCNF.js} +20 -3
- package/dist/chunk-AEPXGCNF.js.map +1 -0
- package/dist/{chunk-VDUJZF5G.js → chunk-CMUIXJZM.js} +2 -2
- package/dist/{chunk-VDUJZF5G.js.map → chunk-CMUIXJZM.js.map} +1 -1
- package/dist/{chunk-DAO2VFTT.js → chunk-D547PH4L.js} +7 -5
- package/dist/chunk-D547PH4L.js.map +1 -0
- package/dist/{chunk-2TYUFZUC.js → chunk-D7GWXIAS.js} +4 -2
- package/dist/chunk-D7GWXIAS.js.map +1 -0
- package/dist/{chunk-E34TE2ZI.js → chunk-DVZCMMB3.js} +6 -4
- package/dist/chunk-DVZCMMB3.js.map +1 -0
- package/dist/{chunk-6NDBE2OK.js → chunk-E36EVCKG.js} +5 -3
- package/dist/chunk-E36EVCKG.js.map +1 -0
- package/dist/chunk-EKYZCRCX.js +256 -0
- package/dist/chunk-EKYZCRCX.js.map +1 -0
- package/dist/{chunk-TIGSG6BX.js → chunk-HJKRCKDR.js} +7 -3
- package/dist/chunk-HJKRCKDR.js.map +1 -0
- package/dist/{chunk-Y6LYKFXY.js → chunk-HMQ2ZDGG.js} +5 -3
- package/dist/chunk-HMQ2ZDGG.js.map +1 -0
- package/dist/{chunk-UDHHKZWO.js → chunk-JM53SMVF.js} +9 -5
- package/dist/chunk-JM53SMVF.js.map +1 -0
- package/dist/{chunk-OGTJNHRG.js → chunk-JMGKM7RK.js} +6 -4
- package/dist/chunk-JMGKM7RK.js.map +1 -0
- package/dist/{chunk-GYGM363P.js → chunk-KX7DP2GO.js} +17 -7
- package/dist/chunk-KX7DP2GO.js.map +1 -0
- package/dist/{chunk-OL4TC3U2.js → chunk-MO56ZZLG.js} +6 -2
- package/dist/chunk-MO56ZZLG.js.map +1 -0
- package/dist/{chunk-VXFGMDA7.js → chunk-MTM43SJO.js} +16 -2
- package/dist/chunk-MTM43SJO.js.map +1 -0
- package/dist/{chunk-ZPWZIVI6.js → chunk-N3GKMPDW.js} +7 -3
- package/dist/chunk-N3GKMPDW.js.map +1 -0
- package/dist/{chunk-DYBPI5O2.js → chunk-NDUGJ4TU.js} +4 -2
- package/dist/chunk-NDUGJ4TU.js.map +1 -0
- package/dist/{chunk-I45QO2IZ.js → chunk-NMGTHYW3.js} +7 -5
- package/dist/chunk-NMGTHYW3.js.map +1 -0
- package/dist/{chunk-WSXUPSID.js → chunk-NN6GYOA2.js} +7 -3
- package/dist/chunk-NN6GYOA2.js.map +1 -0
- package/dist/{chunk-OGNE3OFT.js → chunk-NZXWU4R5.js} +24 -3
- package/dist/chunk-NZXWU4R5.js.map +1 -0
- package/dist/{chunk-V6GQKOX2.js → chunk-O3RCCSQJ.js} +6 -4
- package/dist/chunk-O3RCCSQJ.js.map +1 -0
- package/dist/{chunk-WVLMZ5SG.js → chunk-S4QRSBFI.js} +25 -3
- package/dist/chunk-S4QRSBFI.js.map +1 -0
- package/dist/{chunk-CK6P5AUK.js → chunk-UBH743HV.js} +10 -7
- package/dist/chunk-UBH743HV.js.map +1 -0
- package/dist/{chunk-T7DOWS6T.js → chunk-ULCDZTWL.js} +7 -4
- package/dist/chunk-ULCDZTWL.js.map +1 -0
- package/dist/{chunk-V6HCTCVD.js → chunk-UPZ6EEJN.js} +9 -5
- package/dist/chunk-UPZ6EEJN.js.map +1 -0
- package/dist/{chunk-CAB6NQ2T.js → chunk-VOCPXGQN.js} +3 -1
- package/dist/chunk-VOCPXGQN.js.map +1 -0
- package/dist/chunk-XD7DWYXG.js +34 -0
- package/dist/chunk-XD7DWYXG.js.map +1 -0
- package/dist/{chunk-B6JYRX3P.js → chunk-ZIYOJFZD.js} +43 -4
- package/dist/chunk-ZIYOJFZD.js.map +1 -0
- package/dist/{chunk-EYALJQQD.js → chunk-ZK5EGVFP.js} +4 -2
- package/dist/chunk-ZK5EGVFP.js.map +1 -0
- package/dist/{chunk-6WTETUZ6.js → chunk-ZLWQZUGF.js} +8 -2
- package/dist/chunk-ZLWQZUGF.js.map +1 -0
- package/dist/collapsible-panel.d.ts +4 -2
- package/dist/collapsible-panel.js +4 -2
- package/dist/collapsible-panel.js.map +1 -1
- package/dist/css-values.d.ts +39 -3
- package/dist/css-values.js +1 -1
- package/dist/disclosure-arrow.d.ts +3 -1
- package/dist/disclosure-arrow.js +1 -1
- package/dist/empty-state.d.ts +3 -1
- package/dist/empty-state.js +1 -1
- package/dist/floating-toolbar.d.ts +3 -1
- package/dist/floating-toolbar.js +1 -1
- package/dist/grid.d.ts +17 -1
- package/dist/grid.js +2 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.js +34 -33
- package/dist/list-action-row.d.ts +3 -1
- package/dist/list-action-row.js +1 -1
- package/dist/list-header.d.ts +6 -1
- package/dist/list-header.js +2 -1
- package/dist/list-inset-control.d.ts +3 -1
- package/dist/list-inset-control.js +1 -1
- package/dist/list-inset-text.d.ts +3 -1
- package/dist/list-inset-text.js +1 -1
- package/dist/list-item.d.ts +3 -1
- package/dist/list-item.js +1 -1
- package/dist/list.d.ts +23 -2
- package/dist/list.js +2 -1
- package/dist/loading-spinner.d.ts +3 -1
- package/dist/loading-spinner.js +1 -1
- package/dist/lucide-icon.d.ts +3 -1
- package/dist/lucide-icon.js +1 -1
- package/dist/nav-stack.d.ts +3 -1
- package/dist/nav-stack.js +1 -1
- package/dist/pane.d.ts +19 -2
- package/dist/pane.js +1 -1
- package/dist/resizable-region.d.ts +5 -2
- package/dist/resizable-region.js +1 -1
- package/dist/row.d.ts +21 -1
- package/dist/row.js +2 -1
- package/dist/segmented-control.d.ts +3 -1
- package/dist/segmented-control.js +1 -1
- package/dist/select.d.ts +16 -4
- package/dist/select.js +1 -1
- package/dist/skeleton.d.ts +3 -1
- package/dist/skeleton.js +1 -1
- package/dist/spacer.d.ts +3 -1
- package/dist/spacer.js +1 -1
- package/dist/split-view.d.ts +3 -1
- package/dist/split-view.js +24 -5
- package/dist/split-view.js.map +1 -1
- package/dist/state-banner.d.ts +3 -1
- package/dist/state-banner.js +2 -1
- package/dist/styles/badge.css +86 -0
- package/dist/styles/catalog/components/catalog-detail.css +35 -0
- package/dist/styles/catalog/components/catalog-example-stack.css +9 -0
- package/dist/styles/catalog/components/catalog-example.css +180 -0
- package/dist/styles/catalog/components/catalog-resource-footer.css +37 -0
- package/dist/styles/catalog/components/catalog-secondary-sections.css +38 -0
- package/dist/styles/catalog/components/catalog-section-list.css +22 -0
- package/dist/styles/catalog/components/catalog-sidebar.css +82 -0
- package/dist/styles/catalog/components/catalog-stage.css +60 -0
- package/dist/styles/catalog/components/catalog.css +22 -0
- package/dist/styles/catalog.css +10 -587
- package/dist/styles/collapsible-panel.css +132 -4
- package/dist/styles/document.css +23 -0
- package/dist/styles/foundation.css +21 -7
- package/dist/styles/grid.css +10 -0
- package/dist/styles/list-header.css +49 -60
- package/dist/styles/list-inset-control.css +8 -1
- package/dist/styles/list-item.css +6 -0
- package/dist/styles/list.css +11 -0
- package/dist/styles/nav-stack.css +89 -2
- package/dist/styles/pane.css +86 -1
- package/dist/styles/resizable-region.css +117 -5
- package/dist/styles/row.css +10 -0
- package/dist/styles/select.css +39 -7
- package/dist/styles/split-view.css +108 -2
- package/dist/styles/state-banner.css +0 -27
- package/dist/styles/styles.css +1 -0
- package/dist/styles/tab-bar.css +6 -1
- package/dist/styles/tab-scaffold.css +64 -1
- package/dist/styles/text.css +10 -0
- package/dist/styles/token-search-field.css +5 -40
- package/dist/styles/toolbar-control-group.css +198 -25
- package/dist/styles/toolbar-text.css +8 -1
- package/dist/styles/toolbar.css +169 -5
- package/dist/styles/webawesome.css +70 -9
- package/dist/styles/workbench.css +136 -4
- package/dist/sunken-panel.d.ts +3 -1
- package/dist/sunken-panel.js +1 -1
- package/dist/surface-scaffold.d.ts +6 -2
- package/dist/surface-scaffold.js +1 -1
- package/dist/tab-bar.d.ts +8 -1
- package/dist/tab-bar.js +1 -1
- package/dist/tab-scaffold.d.ts +3 -1
- package/dist/tab-scaffold.js +3 -1
- package/dist/tab-scaffold.js.map +1 -1
- package/dist/text.d.ts +9 -5
- package/dist/text.js +1 -1
- package/dist/token-search-field.d.ts +5 -1
- package/dist/token-search-field.js +1 -1
- package/dist/toolbar-control-group.d.ts +33 -3
- package/dist/toolbar-control-group.js +1 -1
- package/dist/toolbar-text.d.ts +3 -1
- package/dist/toolbar-text.js +1 -1
- package/dist/toolbar.d.ts +30 -1
- package/dist/toolbar.js +1 -1
- package/dist/types-CEsieBZi.d.ts +69 -0
- package/dist/value-table.d.ts +6 -2
- package/dist/value-table.js +1 -1
- package/dist/wire-resizable-regions.js +1 -1
- package/dist/wire-sidebar.d.ts +18 -3
- package/dist/wire-sidebar.js +95 -14
- package/dist/wire-sidebar.js.map +1 -1
- package/dist/wire-token-search-fields.js +1 -1
- package/dist/workbench.d.ts +3 -1
- package/dist/workbench.js +3 -1
- package/dist/workbench.js.map +1 -1
- package/docs/accessibility.md +56 -9
- package/docs/app-layouts.md +73 -0
- package/docs/catalog.md +48 -9
- package/docs/collapsible-panel.md +81 -8
- package/docs/component-contract.md +96 -28
- package/docs/component-integration.md +9 -4
- package/docs/component-selection.md +36 -15
- package/docs/design/templates/list/stack-dark.svg +1 -1
- package/docs/design/templates/list/stack.svg +1 -1
- package/docs/design/templates/list-dark.svg +1 -1
- package/docs/design/templates/list-header/action-dark.svg +1 -1
- package/docs/design/templates/list-header/action.svg +1 -1
- package/docs/design/templates/list-header/count-dark.svg +1 -1
- package/docs/design/templates/list-header/count.svg +1 -1
- package/docs/design/templates/list-header/inline-action-dark.svg +1 -1
- package/docs/design/templates/list-header/inline-action.svg +1 -1
- package/docs/design/templates/list-header/toggle-expanded-dark.svg +1 -1
- package/docs/design/templates/list-header/toggle-expanded.svg +1 -1
- package/docs/design/templates/list-header-dark.svg +1 -1
- package/docs/design/templates/list-header.svg +1 -1
- package/docs/design/templates/list.svg +1 -1
- package/docs/design/templates/state-banner/info-badge-dark.svg +1 -1
- package/docs/design/templates/state-banner/info-badge.svg +1 -1
- package/docs/design/templates/state-banner-dark.svg +1 -1
- package/docs/design/templates/state-banner.svg +1 -1
- package/docs/design/templates/toolbar/title-and-actions-dark.svg +1 -1
- package/docs/design/templates/toolbar/title-and-actions.svg +1 -1
- package/docs/design/templates/toolbar-control-group/with-text-dark.svg +1 -1
- package/docs/design/templates/toolbar-control-group/with-text.svg +1 -1
- package/docs/design/templates/toolbar-control-group-dark.svg +1 -1
- package/docs/design/templates/toolbar-control-group.svg +1 -1
- package/docs/design/templates/toolbar-dark.svg +1 -1
- package/docs/design/templates/toolbar-text/default-dark.svg +1 -1
- package/docs/design/templates/toolbar-text/default.svg +1 -1
- package/docs/design/templates/toolbar-text/large-dark.svg +1 -1
- package/docs/design/templates/toolbar-text/large.svg +1 -1
- package/docs/design/templates/toolbar-text/small-dark.svg +1 -1
- package/docs/design/templates/toolbar-text/small.svg +1 -1
- package/docs/design/templates/toolbar-text-dark.svg +1 -1
- package/docs/design/templates/toolbar-text.svg +1 -1
- package/docs/design/templates/toolbar.svg +1 -1
- package/docs/design-philosophy.md +6 -5
- package/docs/document-baseline.md +31 -0
- package/docs/layout.md +86 -21
- package/docs/nav-stack.md +8 -0
- package/docs/recipes.md +78 -43
- package/docs/split-view.md +8 -0
- package/docs/tab-scaffold.md +4 -2
- package/docs/type-contracts.md +21 -16
- package/docs/ui-analyzer.md +19 -0
- package/docs/ui-evaluator.md +17 -0
- package/docs/ux-demo.md +8 -8
- package/docs/webawesome-theme.md +25 -6
- package/docs/workbench.md +20 -1
- package/evaluator/index.mjs +73 -8
- package/llms.txt +61 -23
- package/package.json +12 -3
- package/ux-demo/recipes/app-shell.tsx +244 -184
- package/ux-demo/recipes/collapsible-sidebar.tsx +175 -116
- package/ux-demo/recipes/compact-toolbar.tsx +119 -102
- package/ux-demo/recipes/composer-form.tsx +79 -69
- package/ux-demo/recipes/list-detail-dialog.tsx +120 -136
- package/ux-demo/recipes/list-workspace-states.tsx +85 -79
- package/ux-demo/recipes/loaders.ts +5 -2
- package/ux-demo/recipes/loading-inspector.tsx +151 -134
- package/ux-demo/recipes/navigation-sidebar.tsx +93 -80
- package/ux-demo/recipes/navigation-stack.tsx +33 -22
- package/ux-demo/recipes/types.ts +14 -0
- package/ux-demo/recipes/workspace-header.tsx +73 -57
- package/dist/chunk-2TYUFZUC.js.map +0 -1
- package/dist/chunk-6NDBE2OK.js.map +0 -1
- package/dist/chunk-6WTETUZ6.js.map +0 -1
- package/dist/chunk-AQFWBG23.js.map +0 -1
- package/dist/chunk-B6JYRX3P.js.map +0 -1
- package/dist/chunk-CAB6NQ2T.js.map +0 -1
- package/dist/chunk-CK6P5AUK.js.map +0 -1
- package/dist/chunk-DAO2VFTT.js.map +0 -1
- package/dist/chunk-DYBPI5O2.js.map +0 -1
- package/dist/chunk-E34TE2ZI.js.map +0 -1
- package/dist/chunk-EYALJQQD.js.map +0 -1
- package/dist/chunk-GYGM363P.js.map +0 -1
- package/dist/chunk-I45QO2IZ.js.map +0 -1
- package/dist/chunk-I4V3UDSA.js.map +0 -1
- package/dist/chunk-IU4QUY5I.js.map +0 -1
- package/dist/chunk-OGNE3OFT.js.map +0 -1
- package/dist/chunk-OGTJNHRG.js.map +0 -1
- package/dist/chunk-OL4TC3U2.js.map +0 -1
- package/dist/chunk-OMSRSL3B.js.map +0 -1
- package/dist/chunk-SOK5EUF7.js.map +0 -1
- package/dist/chunk-T7DOWS6T.js.map +0 -1
- package/dist/chunk-TIGSG6BX.js.map +0 -1
- package/dist/chunk-UDHHKZWO.js.map +0 -1
- package/dist/chunk-V6GQKOX2.js.map +0 -1
- package/dist/chunk-V6HCTCVD.js.map +0 -1
- package/dist/chunk-VXFGMDA7.js.map +0 -1
- package/dist/chunk-W2FK7ZNY.js.map +0 -1
- package/dist/chunk-WN52USHV.js +0 -115
- package/dist/chunk-WN52USHV.js.map +0 -1
- package/dist/chunk-WSXUPSID.js.map +0 -1
- package/dist/chunk-WVLMZ5SG.js.map +0 -1
- package/dist/chunk-XKFRMGMW.js.map +0 -1
- package/dist/chunk-Y6LYKFXY.js.map +0 -1
- package/dist/chunk-ZPWZIVI6.js.map +0 -1
- package/ux-demo/recipes/recipes.css +0 -453
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Public API signatures for the UI authoring corpus
|
|
2
2
|
|
|
3
|
-
Generated from emitted declarations for `@kerfjs/ui@5.0.0-beta.
|
|
3
|
+
Generated from emitted declarations for `@kerfjs/ui@5.0.0-beta.51` and `kerfjs@5.0.0-beta.51`. This bounded reference covers only APIs used by the seven-task corpus. It is interface evidence, not an implementation or runtime guarantee.
|
|
4
4
|
|
|
5
5
|
## `@kerfjs/ui/css-values`
|
|
6
6
|
|
|
@@ -10,6 +10,7 @@ declare const cssLengthBrand: unique symbol;
|
|
|
10
10
|
declare const cssLengthExpressionBrand: unique symbol;
|
|
11
11
|
declare const cssFlexBrand: unique symbol;
|
|
12
12
|
declare const cssColorBrand: unique symbol;
|
|
13
|
+
declare const cssForegroundColorBrand: unique symbol;
|
|
13
14
|
/**
|
|
14
15
|
* A complete typed CSS value minted by a property-specific Kerf UI builder.
|
|
15
16
|
*
|
|
@@ -42,6 +43,18 @@ type CssFlex = CssValue & {
|
|
|
42
43
|
type CssColor = CssValue & {
|
|
43
44
|
readonly [cssColorBrand]: 'CssColor';
|
|
44
45
|
};
|
|
46
|
+
/**
|
|
47
|
+
* A complete CSS color meant to paint a foreground: text or an icon drawn over
|
|
48
|
+
* a surface. Mint it with {@link uiColor} and a foreground token name
|
|
49
|
+
* ({@link UiForegroundColorName}) or with {@link foregroundColorVar}. It is a
|
|
50
|
+
* {@link CssColor}, but a plain `CssColor` is not a foreground color: fill,
|
|
51
|
+
* border, and surface tokens (including the `success` / `warning` / `danger` /
|
|
52
|
+
* `pop` fill aliases) are pale backgrounds that leave a foreground nearly
|
|
53
|
+
* invisible.
|
|
54
|
+
*/
|
|
55
|
+
type CssForegroundColor = CssColor & {
|
|
56
|
+
readonly [cssForegroundColorBrand]: 'CssForegroundColor';
|
|
57
|
+
};
|
|
45
58
|
type CssFlexKeyword = 'none' | 'auto' | 'initial';
|
|
46
59
|
type CssFlexBasis = CssLength | 'auto' | 'content' | 'min-content' | 'max-content' | 'fit-content';
|
|
47
60
|
type CssSizeKeyword = 'auto' | 'min-content' | 'max-content' | 'fit-content';
|
|
@@ -50,6 +63,13 @@ type CssSize = CssLength | CssSizeKeyword;
|
|
|
50
63
|
declare const uiColorNames: readonly ["accent", "accent-text", "border", "border-quiet", "brand-border-loud", "brand-border-normal", "brand-border-quiet", "brand-fill-loud", "brand-fill-normal", "brand-fill-quiet", "brand-on-fill", "brand-on-loud", "brand-on-normal", "brand-on-quiet", "danger", "danger-border-loud", "danger-border-normal", "danger-border-quiet", "danger-fill-loud", "danger-fill-normal", "danger-fill-quiet", "danger-on-loud", "danger-on-normal", "danger-on-quiet", "danger-text", "neutral-border-loud", "neutral-border-normal", "neutral-border-quiet", "neutral-fill-loud", "neutral-fill-normal", "neutral-fill-quiet", "neutral-on-loud", "neutral-on-normal", "neutral-on-quiet", "pop", "pop-border-loud", "pop-border-normal", "pop-border-quiet", "pop-fill-loud", "pop-fill-normal", "pop-fill-quiet", "pop-on-fill", "pop-on-loud", "pop-on-normal", "pop-on-quiet", "pop-text", "success", "success-border-loud", "success-border-normal", "success-border-quiet", "success-fill-loud", "success-fill-normal", "success-fill-quiet", "success-on-fill", "success-on-loud", "success-on-normal", "success-on-quiet", "success-text", "surface", "surface-lowered", "surface-raised", "text", "text-link", "text-quiet", "warning", "warning-border-loud", "warning-border-normal", "warning-border-quiet", "warning-fill-loud", "warning-fill-normal", "warning-fill-quiet", "warning-on-fill", "warning-on-loud", "warning-on-normal", "warning-on-quiet", "warning-text"];
|
|
51
64
|
/** Names of the public `--kui-color-*` semantic tokens. */
|
|
52
65
|
type UiColorName = (typeof uiColorNames)[number];
|
|
66
|
+
/**
|
|
67
|
+
* The semantic tokens that paint a foreground: the `*-on-*` roles, the text
|
|
68
|
+
* roles, and their `*-text` compatibility aliases. The bare `success`,
|
|
69
|
+
* `warning`, `danger`, `pop`, and `accent` aliases are quiet fills, not
|
|
70
|
+
* foregrounds.
|
|
71
|
+
*/
|
|
72
|
+
type UiForegroundColorName = Extract<UiColorName, `${string}-on-${string}` | `${string}-text` | 'text' | 'text-quiet' | 'text-link'>;
|
|
53
73
|
/** Kerf UI's complete spacing-token vocabulary. `s` and `xl` are exceptions. */
|
|
54
74
|
type UiSpaceName = 'none' | '2xs' | 'xs' | 's' | 'm' | 'l' | 'xl';
|
|
55
75
|
/** Create a complete pixel length. */
|
|
@@ -74,12 +94,28 @@ declare function plus(first: CssLength, second: CssLength, ...rest: readonly Css
|
|
|
74
94
|
declare function calc(expression: CssLengthExpression): CssLength;
|
|
75
95
|
/** Build a complete, structured CSS flex shorthand. */
|
|
76
96
|
declare function flex(grow: number, shrink?: number, basis?: CssFlexBasis): CssFlex;
|
|
77
|
-
/**
|
|
78
|
-
|
|
97
|
+
/**
|
|
98
|
+
* The brand {@link uiColor} returns for a token name: a
|
|
99
|
+
* {@link CssForegroundColor} for a foreground token, otherwise a plain
|
|
100
|
+
* {@link CssColor}.
|
|
101
|
+
*/
|
|
102
|
+
type UiColor<Name extends UiColorName> = Name extends UiForegroundColorName ? CssForegroundColor : CssColor;
|
|
103
|
+
/**
|
|
104
|
+
* Resolve a public Kerf UI semantic color token. A foreground token name
|
|
105
|
+
* (`success-on-quiet`, `text-quiet`, …) returns a {@link CssForegroundColor};
|
|
106
|
+
* any other token returns a plain {@link CssColor}.
|
|
107
|
+
*/
|
|
108
|
+
declare function uiColor<Name extends UiColorName>(name: Name): UiColor<Name>;
|
|
79
109
|
/** Reference an application-owned custom property whose contract is a color. */
|
|
80
110
|
declare function colorVar(name: `--${string}`, fallback?: CssColor): CssColor;
|
|
111
|
+
/**
|
|
112
|
+
* Reference an application-owned custom property whose contract is a
|
|
113
|
+
* foreground color (text or an icon over a surface). Use it where a prop
|
|
114
|
+
* accepts only {@link CssForegroundColor}, such as `SelectChoice.color`.
|
|
115
|
+
*/
|
|
116
|
+
declare function foregroundColorVar(name: `--${string}`, fallback?: CssForegroundColor): CssForegroundColor;
|
|
81
117
|
|
|
82
|
-
export { type CssColor, type CssFlex, type CssFlexBasis, type CssFlexKeyword, type CssLength, type CssLengthExpression, type CssSize, type CssSizeKeyword, type CssValue, type UiColorName, type UiSpaceName, calc, colorVar, em, flex, lengthVar, pct, plus, px, rem, space, uiColor };
|
|
118
|
+
export { type CssColor, type CssFlex, type CssFlexBasis, type CssFlexKeyword, type CssForegroundColor, type CssLength, type CssLengthExpression, type CssSize, type CssSizeKeyword, type CssValue, type UiColor, type UiColorName, type UiForegroundColorName, type UiSpaceName, calc, colorVar, em, flex, foregroundColorVar, lengthVar, pct, plus, px, rem, space, uiColor };
|
|
83
119
|
```
|
|
84
120
|
|
|
85
121
|
## `@kerfjs/ui/disclosure-arrow`
|
|
@@ -95,8 +131,10 @@ interface DisclosureArrowProps {
|
|
|
95
131
|
/** Replacement icons should use right as their unrotated orientation. */
|
|
96
132
|
icon?: SafeHtml;
|
|
97
133
|
className?: string;
|
|
134
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
135
|
+
slot?: string;
|
|
98
136
|
}
|
|
99
|
-
declare function DisclosureArrow({ open, openDirection, closedDirection, icon, className, }: DisclosureArrowProps): SafeHtml;
|
|
137
|
+
declare function DisclosureArrow({ open, openDirection, closedDirection, icon, className, slot, }: DisclosureArrowProps): SafeHtml;
|
|
100
138
|
|
|
101
139
|
export { DisclosureArrow, type DisclosureArrowProps, type DisclosureDirection };
|
|
102
140
|
```
|
|
@@ -106,6 +144,7 @@ export { DisclosureArrow, type DisclosureArrowProps, type DisclosureDirection };
|
|
|
106
144
|
```ts
|
|
107
145
|
import * as kerfjs from 'kerfjs';
|
|
108
146
|
import { D as DividerSides } from './divider-sides-BzB6rphT.js';
|
|
147
|
+
import { PaneSeparatorSide } from './pane.js';
|
|
109
148
|
import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
|
|
110
149
|
|
|
111
150
|
interface ToolbarProps {
|
|
@@ -115,9 +154,37 @@ interface ToolbarProps {
|
|
|
115
154
|
label?: string;
|
|
116
155
|
/** Physical divider edges in canonical top/right/bottom/left order. Defaults to bottom. */
|
|
117
156
|
dividerSides?: DividerSides;
|
|
157
|
+
/** Horizontal treatment of the center zone. Defaults to centered content. */
|
|
158
|
+
centerAlign?: 'center' | 'stretch';
|
|
159
|
+
/**
|
|
160
|
+
* Component-owned responsive layout; applications choose the policy rather
|
|
161
|
+
* than restyling toolbar internals. Under every policy the trailing zone
|
|
162
|
+
* wraps its groups instead of clipping an action.
|
|
163
|
+
* - `none` keeps one row; the leading identity truncates first.
|
|
164
|
+
* - `stack` stacks the zones at `responsiveAt`, wrapping stacked control
|
|
165
|
+
* groups onto further rows.
|
|
166
|
+
* - `wrap` keeps one row while every zone fits at its natural width, and
|
|
167
|
+
* otherwise moves the trailing zone below a whole leading identity.
|
|
168
|
+
* - `center-priority` gives an expanded center control the full row.
|
|
169
|
+
*/
|
|
170
|
+
responsive?: 'none' | 'stack' | 'wrap' | 'center-priority';
|
|
171
|
+
/** Container width at which `responsive="stack"` activates. */
|
|
172
|
+
responsiveAt?: 'compact' | 'narrow';
|
|
173
|
+
/**
|
|
174
|
+
* Screen edges this toolbar claims for device safe-area compensation, for an
|
|
175
|
+
* app bar or bottom bar that sits directly at a screen edge rather than in a
|
|
176
|
+
* Pane header or footer. Each listed side pads by the inset its surrounding
|
|
177
|
+
* layout reports through `--kui-edge-inset-*`, or the full device inset when
|
|
178
|
+
* nothing routes that edge, while the toolbar's box and dividers paint
|
|
179
|
+
* through. Omitted, the toolbar pads only the inline edges an owner such as
|
|
180
|
+
* a Pane header hands it, and never a block edge.
|
|
181
|
+
*/
|
|
182
|
+
safeAreaEdges?: readonly PaneSeparatorSide[];
|
|
118
183
|
className?: string;
|
|
184
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
185
|
+
slot?: string;
|
|
119
186
|
}
|
|
120
|
-
declare function Toolbar({ leading, center, trailing, label, dividerSides, className, }: ToolbarProps): kerfjs.SafeHtml;
|
|
187
|
+
declare function Toolbar({ leading, center, trailing, label, dividerSides, centerAlign, responsive, responsiveAt, safeAreaEdges, className, slot, }: ToolbarProps): kerfjs.SafeHtml;
|
|
121
188
|
|
|
122
189
|
export { DividerSides, Toolbar, type ToolbarProps };
|
|
123
190
|
```
|
|
@@ -150,6 +217,8 @@ interface ToolbarTextBaseProps {
|
|
|
150
217
|
* instead. Default true.
|
|
151
218
|
*/
|
|
152
219
|
ellipsis?: boolean;
|
|
220
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
221
|
+
slot?: string;
|
|
153
222
|
}
|
|
154
223
|
type ToolbarTextWrappingProps = {
|
|
155
224
|
/** Wrap onto multiple lines; combine with `maxLines` to cap them. */
|
|
@@ -160,7 +229,7 @@ type ToolbarTextWrappingProps = {
|
|
|
160
229
|
maxLines?: never;
|
|
161
230
|
};
|
|
162
231
|
type ToolbarTextProps = ToolbarTextBaseProps & ToolbarTextWrappingProps;
|
|
163
|
-
declare function ToolbarText({ text, size, className, id, headingLevel, placeholder, wrap, ellipsis, maxLines, }: ToolbarTextProps): kerfjs.SafeHtml;
|
|
232
|
+
declare function ToolbarText({ text, size, className, id, headingLevel, placeholder, wrap, ellipsis, maxLines, slot, }: ToolbarTextProps): kerfjs.SafeHtml;
|
|
164
233
|
|
|
165
234
|
export { type HeadingLevel, ToolbarText, type ToolbarTextProps, type ToolbarTextSize };
|
|
166
235
|
```
|
|
@@ -177,9 +246,29 @@ type ToolbarControlGroupButtonAppearance = 'plain' | 'push';
|
|
|
177
246
|
type ToolbarControlGroupShape = 'pill' | 'rounded';
|
|
178
247
|
type ToolbarControlGroupSize = 'default' | 'compact';
|
|
179
248
|
type ToolbarControlGroupDensity = 'comfortable' | 'tight';
|
|
180
|
-
type ToolbarControlGroupContent = 'icon' | 'text' | 'mixed' | 'avatar';
|
|
249
|
+
type ToolbarControlGroupContent = 'icon' | 'text' | 'mixed' | 'avatar' | 'search';
|
|
250
|
+
type ToolbarControlGroupFocusRing = 'control' | 'outline' | 'halo';
|
|
181
251
|
type ToolbarControlGroupSelectedChrome = 'raised' | 'filled' | 'outline';
|
|
182
252
|
type ToolbarControlGroupSelectedTone = 'brand' | 'neutral' | 'pop';
|
|
253
|
+
type ToolbarControlGroupOverflow = 'visible' | 'scroll';
|
|
254
|
+
type ToolbarControlGroupMenuInset = 'standard' | 'compact' | 'list-zero';
|
|
255
|
+
type ToolbarControlGroupVisibility = 'always' | 'compact-only';
|
|
256
|
+
interface ToolbarActionLinkProps {
|
|
257
|
+
href: string;
|
|
258
|
+
label: string;
|
|
259
|
+
icon?: KerfUiContent;
|
|
260
|
+
/** Optional machine-readable detail hidden visually but included in the default accessible name. */
|
|
261
|
+
detail?: string;
|
|
262
|
+
/** Override the accessible name when surrounding context is needed. */
|
|
263
|
+
ariaLabel?: string;
|
|
264
|
+
/** Open in a new tab with a safe rel and announce that behavior. */
|
|
265
|
+
external?: boolean;
|
|
266
|
+
className?: string;
|
|
267
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
268
|
+
slot?: string;
|
|
269
|
+
}
|
|
270
|
+
/** A semantic anchor with ToolbarControlGroup-owned action geometry. */
|
|
271
|
+
declare function ToolbarActionLink({ href, label, icon, detail, ariaLabel, external, className, slot, }: ToolbarActionLinkProps): kerfjs.SafeHtml;
|
|
183
272
|
interface ToolbarControlGroupProps {
|
|
184
273
|
children: KerfUiContent;
|
|
185
274
|
label?: string;
|
|
@@ -194,10 +283,18 @@ interface ToolbarControlGroupProps {
|
|
|
194
283
|
size?: ToolbarControlGroupSize;
|
|
195
284
|
density?: ToolbarControlGroupDensity;
|
|
196
285
|
content?: ToolbarControlGroupContent;
|
|
286
|
+
/** Whether controls paint focus individually or the group paints an outline/halo on focus-within. */
|
|
287
|
+
focusRing?: ToolbarControlGroupFocusRing;
|
|
197
288
|
selectedChrome?: ToolbarControlGroupSelectedChrome;
|
|
198
289
|
selectedTone?: ToolbarControlGroupSelectedTone;
|
|
199
290
|
/** Size a nested Web Awesome dropdown trigger as part of this group. */
|
|
200
291
|
nestedDropdown?: boolean;
|
|
292
|
+
/** Configure the nested dropdown menu inset without consumer ::part() CSS. */
|
|
293
|
+
menuInset?: ToolbarControlGroupMenuInset;
|
|
294
|
+
/** Keep an overlong row of actions inside the available width with horizontal scrolling. */
|
|
295
|
+
overflow?: ToolbarControlGroupOverflow;
|
|
296
|
+
/** Responsive visibility owned by the enclosing Toolbar container. */
|
|
297
|
+
visibility?: ToolbarControlGroupVisibility;
|
|
201
298
|
/** Add contrast behind photo-backed avatar content. */
|
|
202
299
|
scrim?: boolean;
|
|
203
300
|
/**
|
|
@@ -205,10 +302,12 @@ interface ToolbarControlGroupProps {
|
|
|
205
302
|
* multi-control group paints it only on the pressed selection highlight.
|
|
206
303
|
*/
|
|
207
304
|
avatarImage?: string;
|
|
305
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
306
|
+
slot?: string;
|
|
208
307
|
}
|
|
209
|
-
declare function ToolbarControlGroup({ children, label, className, expanded, single, appearance, tone, buttonAppearance, shape, size, density, content, selectedChrome, selectedTone, nestedDropdown, scrim, avatarImage, }: ToolbarControlGroupProps): kerfjs.SafeHtml;
|
|
308
|
+
declare function ToolbarControlGroup({ children, label, className, expanded, single, appearance, tone, buttonAppearance, shape, size, density, content, focusRing, selectedChrome, selectedTone, nestedDropdown, menuInset, overflow, visibility, scrim, avatarImage, slot, }: ToolbarControlGroupProps): kerfjs.SafeHtml;
|
|
210
309
|
|
|
211
|
-
export { ToolbarControlGroup, type ToolbarControlGroupAppearance, type ToolbarControlGroupButtonAppearance, type ToolbarControlGroupContent, type ToolbarControlGroupDensity, type ToolbarControlGroupProps, type ToolbarControlGroupSelectedChrome, type ToolbarControlGroupSelectedTone, type ToolbarControlGroupShape, type ToolbarControlGroupSize, type ToolbarControlGroupTone };
|
|
310
|
+
export { ToolbarActionLink, type ToolbarActionLinkProps, ToolbarControlGroup, type ToolbarControlGroupAppearance, type ToolbarControlGroupButtonAppearance, type ToolbarControlGroupContent, type ToolbarControlGroupDensity, type ToolbarControlGroupFocusRing, type ToolbarControlGroupMenuInset, type ToolbarControlGroupOverflow, type ToolbarControlGroupProps, type ToolbarControlGroupSelectedChrome, type ToolbarControlGroupSelectedTone, type ToolbarControlGroupShape, type ToolbarControlGroupSize, type ToolbarControlGroupTone, type ToolbarControlGroupVisibility };
|
|
212
311
|
```
|
|
213
312
|
|
|
214
313
|
## `@kerfjs/ui/floating-toolbar`
|
|
@@ -230,6 +329,8 @@ interface FloatingToolbarProps {
|
|
|
230
329
|
*/
|
|
231
330
|
position?: FloatingToolbarPosition;
|
|
232
331
|
className?: string;
|
|
332
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
333
|
+
slot?: string;
|
|
233
334
|
}
|
|
234
335
|
/**
|
|
235
336
|
* A toolbar that floats above the main content of its nearest positioned
|
|
@@ -240,7 +341,7 @@ interface FloatingToolbarProps {
|
|
|
240
341
|
* top toolbar's own inset); override that token to move it. The app owns the
|
|
241
342
|
* controls and their behavior — wire them with `delegate()` as usual.
|
|
242
343
|
*/
|
|
243
|
-
declare function FloatingToolbar({ children, label, position, className, }: FloatingToolbarProps): kerfjs.SafeHtml;
|
|
344
|
+
declare function FloatingToolbar({ children, label, position, className, slot, }: FloatingToolbarProps): kerfjs.SafeHtml;
|
|
244
345
|
|
|
245
346
|
export { FloatingToolbar, type FloatingToolbarPosition, type FloatingToolbarProps };
|
|
246
347
|
```
|
|
@@ -258,6 +359,7 @@ type ListHeaderRootAttributes = Readonly<Record<`data-${string}`, string | undef
|
|
|
258
359
|
'data-density'?: never;
|
|
259
360
|
'data-divider'?: never;
|
|
260
361
|
'data-inline'?: never;
|
|
362
|
+
'data-width'?: never;
|
|
261
363
|
'data-indicator-tone'?: never;
|
|
262
364
|
'data-toggle'?: never;
|
|
263
365
|
}>;
|
|
@@ -274,11 +376,15 @@ interface ListHeaderBaseProps {
|
|
|
274
376
|
divider?: 'none' | 'before' | 'after' | 'both';
|
|
275
377
|
/** Shrink-wrap the header without its default outer margin, border, or padding. */
|
|
276
378
|
inline?: boolean;
|
|
379
|
+
/** Fill the available row or shrink-wrap while retaining normal header geometry. */
|
|
380
|
+
width?: 'fill' | 'content';
|
|
277
381
|
indicatorTone?: 'neutral' | 'accent' | 'pop' | 'danger';
|
|
278
382
|
/** Render as an unanimated loading skeleton: keep the label and action affordance, disable interaction. */
|
|
279
383
|
placeholder?: boolean;
|
|
280
384
|
rootAttributes?: ListHeaderRootAttributes;
|
|
281
385
|
triggerAttributes?: ListHeaderTriggerAttributes;
|
|
386
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
387
|
+
slot?: string;
|
|
282
388
|
}
|
|
283
389
|
type ListHeaderModeProps = {
|
|
284
390
|
/** Render the title as a controlled disclosure trigger. */
|
|
@@ -325,7 +431,7 @@ type ListHeaderIndicatorProps = {
|
|
|
325
431
|
status?: SafeHtml;
|
|
326
432
|
};
|
|
327
433
|
type ListHeaderProps = ListHeaderBaseProps & ListHeaderIndicatorProps & ListHeaderModeProps;
|
|
328
|
-
declare function ListHeader({ label, count, countLabel, badge, status, density, divider, inline, indicatorTone, action, actionLabel, actionIcon, actionDisabled, disabledReason, expanded, toggle, placeholder, rootAttributes, triggerAttributes, }: ListHeaderProps): SafeHtml;
|
|
434
|
+
declare function ListHeader({ label, count, countLabel, badge, status, density, divider, inline, width, indicatorTone, action, actionLabel, actionIcon, actionDisabled, disabledReason, expanded, toggle, placeholder, rootAttributes, triggerAttributes, slot, }: ListHeaderProps): SafeHtml;
|
|
329
435
|
|
|
330
436
|
export { ListHeader, type ListHeaderProps };
|
|
331
437
|
```
|
|
@@ -340,12 +446,29 @@ import { H as HorizontalAlignment, L as ListVerticalAlignment } from './flex-ali
|
|
|
340
446
|
export { V as VerticalAlignment } from './flex-alignment-4ms8ZbV8.js';
|
|
341
447
|
import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
|
|
342
448
|
|
|
449
|
+
type ListRootAttributes = Readonly<Record<`data-${string}`, string | undefined> & {
|
|
450
|
+
'data-component'?: never;
|
|
451
|
+
'data-gap'?: never;
|
|
452
|
+
'data-flex'?: never;
|
|
453
|
+
'data-fill'?: never;
|
|
454
|
+
'data-h-align'?: never;
|
|
455
|
+
'data-v-align'?: never;
|
|
456
|
+
'data-scrollable'?: never;
|
|
457
|
+
'data-text-insets'?: never;
|
|
458
|
+
'data-control-insets'?: never;
|
|
459
|
+
}>;
|
|
343
460
|
interface ListProps {
|
|
344
461
|
children?: KerfUiContent;
|
|
345
462
|
/** Use the standard item gap, a named UI spacing token, or a typed CSS length. Defaults to no gap. */
|
|
346
463
|
gap?: boolean | UiSpaceName | CssLength;
|
|
347
464
|
/** Allow this list to grow/shrink, use a keyword, or supply a typed CSS flex shorthand. */
|
|
348
465
|
flex?: boolean | CssFlexKeyword | CssFlex;
|
|
466
|
+
/**
|
|
467
|
+
* Fill the height of a parent with a definite height, such as an app root or
|
|
468
|
+
* a fixed-height frame, when this list is that parent's layout root. Inside a
|
|
469
|
+
* flex layout use `flex` instead. Defaults to false.
|
|
470
|
+
*/
|
|
471
|
+
fill?: boolean;
|
|
349
472
|
/** Horizontal alignment. Defaults to full to preserve stretch-aligned list children. */
|
|
350
473
|
hAlign?: HorizontalAlignment;
|
|
351
474
|
/** Vertical distribution. Defaults to top. */
|
|
@@ -359,9 +482,13 @@ interface ListProps {
|
|
|
359
482
|
/** Physical sides that receive the standard 8px control inset. Text insets win on overlap. */
|
|
360
483
|
controlInsets?: Sides;
|
|
361
484
|
className?: string;
|
|
485
|
+
/** Safe `data-*` metadata; List-owned structural attributes remain protected. */
|
|
486
|
+
rootAttributes?: ListRootAttributes;
|
|
487
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
488
|
+
slot?: string;
|
|
362
489
|
}
|
|
363
|
-
/** A stretch-aligned vertical stack with optional gap, flex, scroll, and dividers. */
|
|
364
|
-
declare function List({ children, gap, flex, hAlign, vAlign, scrollable, dividerSides, textInsets, controlInsets, className, }: ListProps): kerfjs.SafeHtml;
|
|
490
|
+
/** A stretch-aligned vertical stack with optional gap, flex, fill, scroll, and dividers. */
|
|
491
|
+
declare function List({ children, gap, flex, fill, hAlign, vAlign, scrollable, dividerSides, textInsets, controlInsets, className, rootAttributes, slot, }: ListProps): kerfjs.SafeHtml;
|
|
365
492
|
|
|
366
493
|
export { CssFlex, CssFlexKeyword, CssLength, DividerSides, HorizontalAlignment, List, type ListProps, ListVerticalAlignment, Sides, UiSpaceName };
|
|
367
494
|
```
|
|
@@ -426,8 +553,10 @@ interface ListActionRowProps {
|
|
|
426
553
|
className?: string;
|
|
427
554
|
rootAttributes?: ListActionRowRootAttributes;
|
|
428
555
|
trailingActionAttributes?: ListActionRowTrailingAttributes;
|
|
556
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
557
|
+
slot?: string;
|
|
429
558
|
}
|
|
430
|
-
declare function ListActionRow({ label, description, status, busy, density, divider, icon, action, itemId, selected, pressed, accessibleLabel, title, multiline, state, disabled, tabIndex, placeholder, trailingAction, trailingActionLabel, trailingActionIcon, trailingActionDisabled, trailingActionTitle, trailingActionVisibility, className, rootAttributes, trailingActionAttributes, }: ListActionRowProps): SafeHtml;
|
|
559
|
+
declare function ListActionRow({ label, description, status, busy, density, divider, icon, action, itemId, selected, pressed, accessibleLabel, title, multiline, state, disabled, tabIndex, placeholder, trailingAction, trailingActionLabel, trailingActionIcon, trailingActionDisabled, trailingActionTitle, trailingActionVisibility, className, rootAttributes, trailingActionAttributes, slot, }: ListActionRowProps): SafeHtml;
|
|
431
560
|
|
|
432
561
|
export { ListActionRow, type ListActionRowProps };
|
|
433
562
|
```
|
|
@@ -476,8 +605,10 @@ interface ListItemProps {
|
|
|
476
605
|
/** Render the row as an unanimated loading skeleton, disabling its action. */
|
|
477
606
|
placeholder?: boolean;
|
|
478
607
|
rootAttributes?: ListItemRootAttributes;
|
|
608
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
609
|
+
slot?: string;
|
|
479
610
|
}
|
|
480
|
-
declare function ListItem({ label, description, icon, trailing, status, busy, density, divider, selected, action, itemId, className, pressed, accessibleLabel, title, multiline, state, disabled, tabIndex, placeholder, rootAttributes, }: ListItemProps): SafeHtml;
|
|
611
|
+
declare function ListItem({ label, description, icon, trailing, status, busy, density, divider, selected, action, itemId, className, pressed, accessibleLabel, title, multiline, state, disabled, tabIndex, placeholder, rootAttributes, slot, }: ListItemProps): SafeHtml;
|
|
481
612
|
|
|
482
613
|
export { ListItem, type ListItemProps };
|
|
483
614
|
```
|
|
@@ -495,6 +626,8 @@ interface ListInsetControlProps {
|
|
|
495
626
|
/** Physical inset sides in canonical top/right/bottom/left order. Defaults to all sides. */
|
|
496
627
|
sides?: Sides;
|
|
497
628
|
className?: string;
|
|
629
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
630
|
+
slot?: string;
|
|
498
631
|
}
|
|
499
632
|
/**
|
|
500
633
|
* Insets a control into a pane/list content region: an 8px inline margin (so its
|
|
@@ -502,7 +635,7 @@ interface ListInsetControlProps {
|
|
|
502
635
|
* Use it for controls that carry their own border and padding but no outer margin
|
|
503
636
|
* — the wrapper adds only the alignment margin and layout, not a second inset.
|
|
504
637
|
*/
|
|
505
|
-
declare function ListInsetControl({ children, sides, className, }: ListInsetControlProps): kerfjs.SafeHtml;
|
|
638
|
+
declare function ListInsetControl({ children, sides, className, slot, }: ListInsetControlProps): kerfjs.SafeHtml;
|
|
506
639
|
|
|
507
640
|
export { ListInsetControl, type ListInsetControlProps, Sides };
|
|
508
641
|
```
|
|
@@ -527,6 +660,8 @@ interface ListInsetTextProps {
|
|
|
527
660
|
*/
|
|
528
661
|
horizontalOnly?: boolean;
|
|
529
662
|
className?: string;
|
|
663
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
664
|
+
slot?: string;
|
|
530
665
|
}
|
|
531
666
|
/**
|
|
532
667
|
* Gives bare text the content-item geometry — an 8px inline margin, a 1px
|
|
@@ -536,7 +671,7 @@ interface ListInsetTextProps {
|
|
|
536
671
|
* Pass `horizontalOnly` to keep the horizontal inset but drop the vertical box
|
|
537
672
|
* space for tight text layout.
|
|
538
673
|
*/
|
|
539
|
-
declare function ListInsetText({ children, sides, horizontalOnly, className, }: ListInsetTextProps): kerfjs.SafeHtml;
|
|
674
|
+
declare function ListInsetText({ children, sides, horizontalOnly, className, slot, }: ListInsetTextProps): kerfjs.SafeHtml;
|
|
540
675
|
|
|
541
676
|
export { ListInsetText, type ListInsetTextProps, Sides };
|
|
542
677
|
```
|
|
@@ -555,15 +690,19 @@ interface ValueTableRowProps {
|
|
|
555
690
|
className?: string;
|
|
556
691
|
/** Render the value as an unanimated loading skeleton, keeping the field label. */
|
|
557
692
|
placeholder?: boolean;
|
|
693
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
694
|
+
slot?: string;
|
|
558
695
|
}
|
|
559
|
-
declare function ValueTableRow({ label, value, icon, className, placeholder, }: ValueTableRowProps): SafeHtml;
|
|
696
|
+
declare function ValueTableRow({ label, value, icon, className, placeholder, slot, }: ValueTableRowProps): SafeHtml;
|
|
560
697
|
|
|
561
698
|
interface ValueTableProps {
|
|
562
699
|
label: string;
|
|
563
700
|
className?: string;
|
|
564
701
|
children: KerfUiContent;
|
|
702
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
703
|
+
slot?: string;
|
|
565
704
|
}
|
|
566
|
-
declare function ValueTable({ label, className, children, }: ValueTableProps): kerfjs.SafeHtml;
|
|
705
|
+
declare function ValueTable({ label, className, children, slot, }: ValueTableProps): kerfjs.SafeHtml;
|
|
567
706
|
|
|
568
707
|
export { ValueTable, type ValueTableProps, ValueTableRow, type ValueTableRowProps };
|
|
569
708
|
```
|
|
@@ -606,8 +745,10 @@ interface AppTabProps {
|
|
|
606
745
|
/** Render as an unanimated loading skeleton, disabling select/close and dragging. */
|
|
607
746
|
placeholder?: boolean;
|
|
608
747
|
rootAttributes?: AppTabRootAttributes;
|
|
748
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
749
|
+
slot?: string;
|
|
609
750
|
}
|
|
610
|
-
declare function AppTab({ id, name, selected, closable, draggable, leading, trailing, presentation, size, labelMaxWidth, closeIcon, selectAction, closeAction, className, placeholder, rootAttributes, }: AppTabProps): SafeHtml;
|
|
751
|
+
declare function AppTab({ id, name, selected, closable, draggable, leading, trailing, presentation, size, labelMaxWidth, closeIcon, selectAction, closeAction, className, placeholder, rootAttributes, slot, }: AppTabProps): SafeHtml;
|
|
611
752
|
|
|
612
753
|
export { AppTab, type AppTabPresentation, type AppTabProps, type AppTabSize };
|
|
613
754
|
```
|
|
@@ -628,6 +769,11 @@ interface TabBarProps {
|
|
|
628
769
|
children: KerfUiContent;
|
|
629
770
|
leading?: KerfUiContent;
|
|
630
771
|
trailing?: KerfUiContent;
|
|
772
|
+
/**
|
|
773
|
+
* Action pinned to the far edge of the bar. Combine with an adjacent `trailing`
|
|
774
|
+
* action when the tab-local and workspace-level actions must remain distinct.
|
|
775
|
+
*/
|
|
776
|
+
end?: KerfUiContent;
|
|
631
777
|
className?: string;
|
|
632
778
|
/**
|
|
633
779
|
* Keyboard activation mode for this strip, emitted as `data-tab-activation` for
|
|
@@ -642,9 +788,11 @@ interface TabBarProps {
|
|
|
642
788
|
presentation?: TabBarPresentation;
|
|
643
789
|
/** Keep a trailing action beside the final tab or at the far edge of the bar. */
|
|
644
790
|
trailingPlacement?: TabBarTrailingPlacement;
|
|
791
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
792
|
+
slot?: string;
|
|
645
793
|
}
|
|
646
794
|
/** Render a controlled tab strip. The application owns selection, order, and persistence. */
|
|
647
|
-
declare function TabBar({ id, label, children, leading, trailing, className, activation, allocation, presentation, trailingPlacement, }: TabBarProps): kerfjs.SafeHtml;
|
|
795
|
+
declare function TabBar({ id, label, children, leading, trailing, end, className, activation, allocation, presentation, trailingPlacement, slot, }: TabBarProps): kerfjs.SafeHtml;
|
|
648
796
|
|
|
649
797
|
export { type TabActivation, TabBar, type TabBarAllocation, type TabBarPresentation, type TabBarProps, type TabBarTrailingPlacement };
|
|
650
798
|
```
|
|
@@ -722,6 +870,8 @@ interface NavStackProps {
|
|
|
722
870
|
/** Optional persistent bottom toolbar used when the active view does not provide one. */
|
|
723
871
|
bottomToolbar?: KerfUiContent;
|
|
724
872
|
className?: string;
|
|
873
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
874
|
+
slot?: string;
|
|
725
875
|
}
|
|
726
876
|
/**
|
|
727
877
|
* A navigation stack (iOS-style push/pop). Renders every entry stacked, the last
|
|
@@ -729,7 +879,7 @@ interface NavStackProps {
|
|
|
729
879
|
* cross-fades the chrome across a change. A single-pane layout is a `NavStack`
|
|
730
880
|
* with one entry. See `docs/23-app-layouts.md` §3.1.
|
|
731
881
|
*/
|
|
732
|
-
declare function NavStack({ id, label, views, backLabel, hideToolbar, bottomToolbar, className, }: NavStackProps): kerfjs.SafeHtml;
|
|
882
|
+
declare function NavStack({ id, label, views, backLabel, hideToolbar, bottomToolbar, className, slot, }: NavStackProps): kerfjs.SafeHtml;
|
|
733
883
|
|
|
734
884
|
export { NavStack, type NavStackProps, type NavStackView };
|
|
735
885
|
```
|
|
@@ -792,6 +942,8 @@ interface SplitViewProps {
|
|
|
792
942
|
/** A resizable separator on roomy classes (min/max px). Omit for a fixed split. */
|
|
793
943
|
resizable?: SplitViewResizable;
|
|
794
944
|
className?: string;
|
|
945
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
946
|
+
slot?: string;
|
|
795
947
|
}
|
|
796
948
|
/**
|
|
797
949
|
* A list-detail split. On roomy classes it shows both panes side
|
|
@@ -800,7 +952,7 @@ interface SplitViewProps {
|
|
|
800
952
|
* resizable wiring with `wireResizableRegions` and the compact back with
|
|
801
953
|
* `wireNavStack`.
|
|
802
954
|
*/
|
|
803
|
-
declare function SplitView({ id, label, list, detail, compact, detailActive, listTitle, detailTitle, backLabel, resizable, className, }: SplitViewProps): kerfjs.SafeHtml;
|
|
955
|
+
declare function SplitView({ id, label, list, detail, compact, detailActive, listTitle, detailTitle, backLabel, resizable, className, slot, }: SplitViewProps): kerfjs.SafeHtml;
|
|
804
956
|
|
|
805
957
|
export { SplitView, type SplitViewProps, type SplitViewResizable };
|
|
806
958
|
```
|
|
@@ -811,7 +963,10 @@ export { SplitView, type SplitViewProps, type SplitViewResizable };
|
|
|
811
963
|
import * as kerfjs from 'kerfjs';
|
|
812
964
|
import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
|
|
813
965
|
|
|
814
|
-
/**
|
|
966
|
+
/**
|
|
967
|
+
* Logical pane sides: where a {@link Pane} can show a separator and where it can
|
|
968
|
+
* compensate for a device safe-area inset.
|
|
969
|
+
*/
|
|
815
970
|
type PaneSeparatorSide = 'block-start' | 'block-end' | 'inline-start' | 'inline-end';
|
|
816
971
|
/** Semantic root elements supported by {@link Pane}. */
|
|
817
972
|
type PaneElement = 'article' | 'aside' | 'div' | 'main' | 'section';
|
|
@@ -823,6 +978,10 @@ type PaneRootAttributes = Readonly<Record<`data-${string}`, string | undefined>
|
|
|
823
978
|
'data-separator-block-end'?: never;
|
|
824
979
|
'data-separator-inline-start'?: never;
|
|
825
980
|
'data-separator-inline-end'?: never;
|
|
981
|
+
'data-safe-area-block-start'?: never;
|
|
982
|
+
'data-safe-area-block-end'?: never;
|
|
983
|
+
'data-safe-area-inline-start'?: never;
|
|
984
|
+
'data-safe-area-inline-end'?: never;
|
|
826
985
|
}>;
|
|
827
986
|
interface PaneProps {
|
|
828
987
|
/** Optional fixed chrome above the scrolling content, arranged vertically. */
|
|
@@ -837,6 +996,14 @@ interface PaneProps {
|
|
|
837
996
|
contentElement?: PaneContentElement;
|
|
838
997
|
/** Independent logical-edge separator lines. Defaults to none. */
|
|
839
998
|
separators?: readonly PaneSeparatorSide[];
|
|
999
|
+
/**
|
|
1000
|
+
* Sides on which the pane may compensate for a device safe-area inset.
|
|
1001
|
+
* Defaults to every side: the pane pads its slots for each side that still
|
|
1002
|
+
* reaches an unsafe screen edge, as its surrounding layout reports, while its
|
|
1003
|
+
* background and separators paint through. List only the sides an app-owned
|
|
1004
|
+
* layout places at a screen edge, or pass `[]` to opt out.
|
|
1005
|
+
*/
|
|
1006
|
+
safeAreaEdges?: readonly PaneSeparatorSide[];
|
|
840
1007
|
id?: string;
|
|
841
1008
|
/** Accessible name for a landmark root such as `aside` or `main`. */
|
|
842
1009
|
label?: string;
|
|
@@ -848,6 +1015,8 @@ interface PaneProps {
|
|
|
848
1015
|
footerClassName?: string;
|
|
849
1016
|
/** Safe `data-*` metadata; Pane-owned structural attributes remain protected. */
|
|
850
1017
|
rootAttributes?: PaneRootAttributes;
|
|
1018
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
1019
|
+
slot?: string;
|
|
851
1020
|
}
|
|
852
1021
|
/**
|
|
853
1022
|
* An unpadded application column with optional fixed header/footer slots and one
|
|
@@ -855,7 +1024,7 @@ interface PaneProps {
|
|
|
855
1024
|
* each logical edge, so the same component works as a sidebar, main area,
|
|
856
1025
|
* inspector, or dialog column.
|
|
857
1026
|
*/
|
|
858
|
-
declare function Pane({ header, children, footer, element, contentElement, separators, id, label, contentLabel, className, headerClassName, contentClassName, footerClassName, rootAttributes, }: PaneProps): kerfjs.SafeHtml;
|
|
1027
|
+
declare function Pane({ header, children, footer, element, contentElement, separators, safeAreaEdges, id, label, contentLabel, className, headerClassName, contentClassName, footerClassName, rootAttributes, slot, }: PaneProps): kerfjs.SafeHtml;
|
|
859
1028
|
|
|
860
1029
|
export { Pane, type PaneContentElement, type PaneElement, type PaneProps, type PaneSeparatorSide };
|
|
861
1030
|
```
|
|
@@ -893,6 +1062,8 @@ interface WorkbenchProps {
|
|
|
893
1062
|
rightRail?: WorkbenchPanel;
|
|
894
1063
|
bottomDrawer?: WorkbenchPanel;
|
|
895
1064
|
className?: string;
|
|
1065
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
1066
|
+
slot?: string;
|
|
896
1067
|
}
|
|
897
1068
|
/**
|
|
898
1069
|
* The Xcode-like multi-panel workspace: a collapsible left rail, right rail, and
|
|
@@ -904,7 +1075,7 @@ interface WorkbenchProps {
|
|
|
904
1075
|
* each `collapsed` flag; the collapse is pure CSS (no wire). See
|
|
905
1076
|
* `docs/23-app-layouts.md` §3.3.
|
|
906
1077
|
*/
|
|
907
|
-
declare function Workbench({ id, label, main, leftRail, rightRail, bottomDrawer, className, }: WorkbenchProps): SafeHtml;
|
|
1078
|
+
declare function Workbench({ id, label, main, leftRail, rightRail, bottomDrawer, className, slot, }: WorkbenchProps): SafeHtml;
|
|
908
1079
|
|
|
909
1080
|
export { Workbench, type WorkbenchPanel, type WorkbenchProps };
|
|
910
1081
|
```
|
|
@@ -943,6 +1114,8 @@ interface CollapsiblePanelToggleProps {
|
|
|
943
1114
|
/** Accessible label; defaults to "Collapse"/"Expand". */
|
|
944
1115
|
label?: string;
|
|
945
1116
|
className?: string;
|
|
1117
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
1118
|
+
slot?: string;
|
|
946
1119
|
}
|
|
947
1120
|
/**
|
|
948
1121
|
* A standard collapse/expand toggle button for a {@link CollapsiblePanel}: the
|
|
@@ -951,7 +1124,7 @@ interface CollapsiblePanelToggleProps {
|
|
|
951
1124
|
* put it in the panel's own header (to collapse) and somewhere always-visible
|
|
952
1125
|
* (to expand while collapsed).
|
|
953
1126
|
*/
|
|
954
|
-
declare function CollapsiblePanelToggle({ side, collapsed, action, panelId, label, className, }: CollapsiblePanelToggleProps): SafeHtml;
|
|
1127
|
+
declare function CollapsiblePanelToggle({ side, collapsed, action, panelId, label, className, slot, }: CollapsiblePanelToggleProps): SafeHtml;
|
|
955
1128
|
interface CollapsiblePanelProps {
|
|
956
1129
|
/** A stable id for the panel — `wireSidebar` targets it and toggles reference it. */
|
|
957
1130
|
id: string;
|
|
@@ -984,7 +1157,7 @@ interface CollapsiblePanelProps {
|
|
|
984
1157
|
* underneath the transform transition. The app owns the `collapsed` signal;
|
|
985
1158
|
* pair it with `wireSidebar` for the toggle, focus, compact-overlay, keyboard,
|
|
986
1159
|
* and persistence semantics, and with `CollapsiblePanelToggle` for the standard
|
|
987
|
-
* affordance. See `docs/
|
|
1160
|
+
* affordance. See `ui/docs/collapsible-panel.md` and `docs/23-app-layouts.md`.
|
|
988
1161
|
*/
|
|
989
1162
|
declare function CollapsiblePanel({ id, side, collapsed, size, label, children, separator, collapseMotion, contentOverflow, presentation, restoreControl, restorePosition, className, }: CollapsiblePanelProps): SafeHtml;
|
|
990
1163
|
|
|
@@ -1010,9 +1183,18 @@ interface WireSidebarPanel {
|
|
|
1010
1183
|
collapsed: Signal<boolean>;
|
|
1011
1184
|
/** `data-action` value the panel's toggle button(s) carry. */
|
|
1012
1185
|
toggleAction: string;
|
|
1013
|
-
/** When set, the collapsed state is loaded from and saved to
|
|
1014
|
-
* this key (a persistence hook), so the panel remembers
|
|
1186
|
+
/** When set, the panel's inline collapsed state is loaded from and saved to
|
|
1187
|
+
* `storage` under this key (a persistence hook), so the panel remembers the
|
|
1188
|
+
* user's inline choice. A compact overlay's open/closed state is transient
|
|
1189
|
+
* and is never persisted. */
|
|
1015
1190
|
storageKey?: string;
|
|
1191
|
+
/** The panel's inline (non-compact) collapsed state when `storage` holds no
|
|
1192
|
+
* choice for it; wire-up seeds the signal with it. Defaults to the signal's
|
|
1193
|
+
* own value. Set it when the app seeds the signal from the device class
|
|
1194
|
+
* (`signal(device.value.compact)`) so a compact first render already starts
|
|
1195
|
+
* collapsed while a later crossing to a wide class still restores this
|
|
1196
|
+
* inline default. */
|
|
1197
|
+
inlineCollapsed?: boolean;
|
|
1016
1198
|
}
|
|
1017
1199
|
interface WireSidebarOptions {
|
|
1018
1200
|
panels: readonly WireSidebarPanel[];
|
|
@@ -1022,6 +1204,12 @@ interface WireSidebarOptions {
|
|
|
1022
1204
|
* dismissable backdrop, Escape and backdrop-click collapse it, and focus is
|
|
1023
1205
|
* trapped within the open panel (the ARIA dialog pattern). Without it the panel
|
|
1024
1206
|
* is always inline.
|
|
1207
|
+
*
|
|
1208
|
+
* An overlay is transient and user-initiated: whenever the compact overlay
|
|
1209
|
+
* presentation begins (wire-up on a compact device, or a crossing from a wide
|
|
1210
|
+
* class), every panel starts collapsed so nothing blocks the page until the
|
|
1211
|
+
* user opens it. The inline state is remembered and restored when the device
|
|
1212
|
+
* crosses back to a wide class (and on disposal).
|
|
1025
1213
|
*/
|
|
1026
1214
|
deviceClass?: ReadonlySignal<DeviceClass>;
|
|
1027
1215
|
/** Compact devices either overlay the panels (default) or hide them in favor
|
|
@@ -1037,7 +1225,7 @@ interface WireSidebarOptions {
|
|
|
1037
1225
|
* delegation with focus restore, focus-into on open, an optional compact overlay
|
|
1038
1226
|
* (backdrop + Escape + focus trap) driven by {@link deviceClass}, and an optional
|
|
1039
1227
|
* persistence hook. The app owns each `collapsed` signal and the layout; this wire
|
|
1040
|
-
* owns the interaction. Returns a disposer. See `docs/
|
|
1228
|
+
* owns the interaction. Returns a disposer. See `ui/docs/collapsible-panel.md` and `docs/23-app-layouts.md`.
|
|
1041
1229
|
*/
|
|
1042
1230
|
declare function wireSidebar(root: HTMLElement, { panels, deviceClass, compactPresentation, exclusiveCompact, storage, }: WireSidebarOptions): () => void;
|
|
1043
1231
|
|
|
@@ -1066,6 +1254,8 @@ interface TabScaffoldProps<Id extends string = string> {
|
|
|
1066
1254
|
/** The controlled active tab id (the app owns selection). */
|
|
1067
1255
|
active: NoInfer<Id>;
|
|
1068
1256
|
className?: string;
|
|
1257
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
1258
|
+
slot?: string;
|
|
1069
1259
|
}
|
|
1070
1260
|
/**
|
|
1071
1261
|
* A mobile-first, iOS-like bottom tab scaffold: a bottom tab bar that switches
|
|
@@ -1075,7 +1265,7 @@ interface TabScaffoldProps<Id extends string = string> {
|
|
|
1075
1265
|
* On larger classes, promote the tabs to a `Workbench` rail or sidebar instead of
|
|
1076
1266
|
* a bottom bar. See `docs/23-app-layouts.md` §3.4.
|
|
1077
1267
|
*/
|
|
1078
|
-
declare function TabScaffold<Id extends string>({ id, label, tabs, active, className, }: TabScaffoldProps<Id>): SafeHtml;
|
|
1268
|
+
declare function TabScaffold<Id extends string>({ id, label, tabs, active, className, slot, }: TabScaffoldProps<Id>): SafeHtml;
|
|
1079
1269
|
|
|
1080
1270
|
export { TabScaffold, type TabScaffoldProps, type TabScaffoldTab };
|
|
1081
1271
|
```
|
|
@@ -1109,6 +1299,7 @@ type ResizableRegionCollapseMotion = 'none' | 'slide' | 'fade-slide';
|
|
|
1109
1299
|
type ResizableRegionContentOverflow = 'clip' | 'auto' | 'visible';
|
|
1110
1300
|
type ResizableRegionPresentation = 'inline' | 'overlay' | 'hidden';
|
|
1111
1301
|
type ResizableRegionRestorePosition = 'bottom-start' | 'bottom-end';
|
|
1302
|
+
type ResizableRegionResponsiveFillAt = 'compact' | 'narrow';
|
|
1112
1303
|
interface ResizableRegionProps {
|
|
1113
1304
|
id: string;
|
|
1114
1305
|
label: string;
|
|
@@ -1131,15 +1322,17 @@ interface ResizableRegionProps {
|
|
|
1131
1322
|
restoreControl?: SafeHtml;
|
|
1132
1323
|
/** Safe-area-aware viewport corner for `restoreControl`. */
|
|
1133
1324
|
restorePosition?: ResizableRegionRestorePosition;
|
|
1325
|
+
/** Fill the available inline track and hide the separator below a container breakpoint. */
|
|
1326
|
+
responsiveFillAt?: ResizableRegionResponsiveFillAt;
|
|
1134
1327
|
/** Decorative dormant content for the separator handle. Must not contain interactive descendants. */
|
|
1135
1328
|
handleIcon?: SafeHtml;
|
|
1136
1329
|
children: KerfUiContent;
|
|
1137
1330
|
}
|
|
1138
1331
|
declare const clampRegionSize: (size: number, min: number, max: number) => number;
|
|
1139
1332
|
declare const resizeRegionFromPointer: (startSize: number, delta: number, edge: ResizableRegionEdge) => number;
|
|
1140
|
-
declare function ResizableRegion({ id, label, size, min, max, axis, edge, collapsed, transitioning, separator, collapseMotion, contentOverflow, presentation, restoreControl, restorePosition, handleIcon, children, }: ResizableRegionProps): SafeHtml;
|
|
1333
|
+
declare function ResizableRegion({ id, label, size, min, max, axis, edge, collapsed, transitioning, separator, collapseMotion, contentOverflow, presentation, restoreControl, restorePosition, responsiveFillAt, handleIcon, children, }: ResizableRegionProps): SafeHtml;
|
|
1141
1334
|
|
|
1142
|
-
export { ResizableRegion, type ResizableRegionAxis, type ResizableRegionCollapseMotion, type ResizableRegionContentOverflow, type ResizableRegionEdge, type ResizableRegionPresentation, type ResizableRegionProps, type ResizableRegionRestorePosition, type ResizableRegionSeparator, clampRegionSize, resizeRegionFromPointer };
|
|
1335
|
+
export { ResizableRegion, type ResizableRegionAxis, type ResizableRegionCollapseMotion, type ResizableRegionContentOverflow, type ResizableRegionEdge, type ResizableRegionPresentation, type ResizableRegionProps, type ResizableRegionResponsiveFillAt, type ResizableRegionRestorePosition, type ResizableRegionSeparator, clampRegionSize, resizeRegionFromPointer };
|
|
1143
1336
|
```
|
|
1144
1337
|
|
|
1145
1338
|
## `@kerfjs/ui/wire-resizable-regions`
|
|
@@ -1232,106 +1425,36 @@ export { DEFAULT_BREAKPOINTS, type DeviceBreakpoints, type DeviceClass, type Dev
|
|
|
1232
1425
|
## `@kerfjs/ui/catalog`
|
|
1233
1426
|
|
|
1234
1427
|
```ts
|
|
1428
|
+
import * as kerfjs from 'kerfjs';
|
|
1235
1429
|
import { SafeHtml } from 'kerfjs';
|
|
1430
|
+
import { a as CatalogProps } from './types-CEsieBZi.js';
|
|
1431
|
+
export { b as CatalogBrand, c as CatalogEntry, d as CatalogRelated, C as CatalogResource, e as CatalogSecondaryGroup, f as CatalogSection, g as CatalogStageRootAttributes } from './types-CEsieBZi.js';
|
|
1236
1432
|
import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
|
|
1237
1433
|
|
|
1238
|
-
/**
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
/** Optional monospace detail (e.g. a file path) shown after the label. */
|
|
1243
|
-
detail?: string;
|
|
1244
|
-
}
|
|
1245
|
-
/** A related entry offered in the detail footer's "Related entries" popup menu. */
|
|
1246
|
-
interface CatalogRelated {
|
|
1247
|
-
id: string;
|
|
1248
|
-
name: string;
|
|
1249
|
-
/** Group heading in the menu, e.g. "Uses" / "Used by". */
|
|
1250
|
-
group: string;
|
|
1251
|
-
}
|
|
1252
|
-
interface CatalogEntry {
|
|
1253
|
-
id: string;
|
|
1254
|
-
name: string;
|
|
1255
|
-
description?: string;
|
|
1256
|
-
/** Short metadata tags shown at the trailing edge of the sidebar row. */
|
|
1257
|
-
tags?: readonly string[];
|
|
1258
|
-
resources?: readonly CatalogResource[];
|
|
1259
|
-
related?: readonly CatalogRelated[];
|
|
1260
|
-
}
|
|
1261
|
-
interface CatalogSection {
|
|
1262
|
-
category: string;
|
|
1263
|
-
entries: readonly CatalogEntry[];
|
|
1264
|
-
}
|
|
1265
|
-
/**
|
|
1266
|
-
* A secondary group of sections shown below the primary sidebar sections with a
|
|
1267
|
-
* quieter "ecosystem" treatment (e.g. third-party components). Optionally
|
|
1268
|
-
* collapsible — the app owns `expanded` and toggles it from `wireCatalog`'s
|
|
1269
|
-
* `onToggleSecondary`.
|
|
1270
|
-
*/
|
|
1271
|
-
interface CatalogSecondaryGroup {
|
|
1272
|
-
label: string;
|
|
1273
|
-
sections: readonly CatalogSection[];
|
|
1274
|
-
/** When true, the group's label is a disclosure toggle controlling `expanded`. */
|
|
1275
|
-
collapsible?: boolean;
|
|
1276
|
-
/** Whether the group is expanded (controlled). Ignored unless `collapsible`. */
|
|
1277
|
-
expanded?: boolean;
|
|
1278
|
-
}
|
|
1279
|
-
interface CatalogBrand {
|
|
1280
|
-
title: string;
|
|
1281
|
-
subtitle?: string;
|
|
1282
|
-
/** Logo image URL (rendered decorative). Omit for a text-only brand. */
|
|
1283
|
-
logoUrl?: string;
|
|
1284
|
-
}
|
|
1285
|
-
interface CatalogProps {
|
|
1286
|
-
brand: CatalogBrand;
|
|
1287
|
-
sections: readonly CatalogSection[];
|
|
1288
|
-
/** The controlled active entry id — the app owns this signal. */
|
|
1289
|
-
active: string;
|
|
1290
|
-
/** The rendered preview for the active entry; the app computes it from `active`. */
|
|
1291
|
-
content: KerfUiContent;
|
|
1292
|
-
/** Whether the sidebar is collapsed (controlled). */
|
|
1293
|
-
collapsed?: boolean;
|
|
1294
|
-
/** Current theme; when set, a theme toggle is shown that switches to the opposite. Omit to hide it. */
|
|
1295
|
-
theme?: 'light' | 'dark';
|
|
1296
|
-
/** Extra header controls placed before the theme toggle (each a `ToolbarControlGroup`). */
|
|
1297
|
-
headerActions?: KerfUiContent;
|
|
1298
|
-
/** A secondary "ecosystem" group of sections below the primary category groups. */
|
|
1299
|
-
secondarySections?: CatalogSecondaryGroup;
|
|
1300
|
-
/** Extra sidebar content below the category groups (and the secondary group). */
|
|
1301
|
-
sidebarFooter?: KerfUiContent;
|
|
1302
|
-
/** Status line content shown at the start of the detail footer. */
|
|
1303
|
-
status?: KerfUiContent;
|
|
1304
|
-
/**
|
|
1305
|
-
* Whether to highlight specimens' computed borders (or transparent outer
|
|
1306
|
-
* bounds) and non-zero margins. Pass a boolean (rather than omitting the
|
|
1307
|
-
* prop) when the active entry can switch between component and composition
|
|
1308
|
-
* previews; `wireCatalogGeometryOverlay` keeps the overlay synchronized.
|
|
1309
|
-
*/
|
|
1310
|
-
geometryOverlay?: boolean;
|
|
1311
|
-
selectAction?: string;
|
|
1312
|
-
toggleSidebarAction?: string;
|
|
1313
|
-
toggleThemeAction?: string;
|
|
1314
|
-
/** Action fired by the secondary group's disclosure toggle (when collapsible). */
|
|
1315
|
-
toggleSecondaryAction?: string;
|
|
1316
|
-
className?: string;
|
|
1317
|
-
}
|
|
1318
|
-
/**
|
|
1319
|
-
* A reusable component-catalog shell: a collapsible category sidebar, a titled
|
|
1320
|
-
* detail stage that renders the active entry's preview, and a footer with
|
|
1321
|
-
* reference links and a related-entry popup menu. Built entirely from public
|
|
1322
|
-
* `@kerfjs/ui` primitives. Controlled and stateless — the app owns the `active`,
|
|
1323
|
-
* `collapsed`, and `theme` signals and computes `content` from `active` in its own
|
|
1324
|
-
* render; wire the sidebar/collapse/theme actions with `wireCatalog`.
|
|
1325
|
-
*/
|
|
1326
|
-
declare function Catalog({ brand, sections, active, content, collapsed, theme, headerActions, secondarySections, sidebarFooter, status, geometryOverlay, selectAction, toggleSidebarAction, toggleThemeAction, toggleSecondaryAction, className, }: CatalogProps): SafeHtml;
|
|
1327
|
-
/**
|
|
1328
|
-
* How a {@link CatalogExample}'s content aligns its visible left edge with the
|
|
1329
|
-
* example's `ListHeader` label (which sits 16px in — 8px title + 8px label):
|
|
1330
|
-
* - `'glyph'` — a bare glyph/text specimen with no inline geometry insets the full 16px.
|
|
1331
|
-
* - `'inline-control'` — a control that already carries ~8px of its own inline padding insets 8px so its content lands on the same line.
|
|
1332
|
-
* - `'none'` — a content-item / composition that owns its geometry and already aligns; no inset (default).
|
|
1333
|
-
*/
|
|
1434
|
+
/** Controlled, stateless component-catalog shell. */
|
|
1435
|
+
declare function Catalog({ brand, sections, active, content, collapsed, theme, headerActions, secondarySections, sidebarFooter, status, geometryOverlay, stageRootAttributes, selectAction, toggleSidebarAction, toggleThemeAction, toggleSecondaryAction, className, slot, }: CatalogProps): kerfjs.SafeHtml;
|
|
1436
|
+
|
|
1437
|
+
/** How a specimen aligns its visible edge with its `ListHeader` label. */
|
|
1334
1438
|
type CatalogExampleAlign = 'glyph' | 'inline-control' | 'none';
|
|
1439
|
+
interface CatalogExampleViewport {
|
|
1440
|
+
layout?: 'grid' | 'flex' | 'flex-column';
|
|
1441
|
+
width?: 'full' | 'compact' | 'medium' | 'wide' | 'text' | 'control';
|
|
1442
|
+
/** Fixed specimen height; `app` frames an application-sized recipe or layout.
|
|
1443
|
+
* A fixed height is definite, so a child that fills with `height: 100%`
|
|
1444
|
+
* (a horizontal `ResizableRegion`, say) spans the whole frame. */
|
|
1445
|
+
height?: 'short' | 'reduced' | 'medium' | 'tall' | 'app';
|
|
1446
|
+
/** A minimum the frame may grow past. It is not a definite height: a child
|
|
1447
|
+
* sized with `height: 100%` falls back to its content height, so use
|
|
1448
|
+
* `height` when the specimen must fill the frame. */
|
|
1449
|
+
minHeight?: 'short' | 'medium';
|
|
1450
|
+
frame?: 'solid' | 'dashed';
|
|
1451
|
+
surface?: 'default' | 'lowered';
|
|
1452
|
+
overflow?: 'hidden' | 'auto-x';
|
|
1453
|
+
responsive?: 'roomy-only';
|
|
1454
|
+
shadow?: boolean;
|
|
1455
|
+
/** Public component custom properties applied to the specimen viewport. */
|
|
1456
|
+
tokens?: Readonly<Record<`--${string}`, string>>;
|
|
1457
|
+
}
|
|
1335
1458
|
type CatalogExampleRootAttributes = Readonly<Record<`data-${string}`, string | undefined> & {
|
|
1336
1459
|
'data-catalog-example'?: never;
|
|
1337
1460
|
'data-catalog-example-stack'?: never;
|
|
@@ -1339,58 +1462,50 @@ type CatalogExampleRootAttributes = Readonly<Record<`data-${string}`, string | u
|
|
|
1339
1462
|
'data-catalog-example-note'?: never;
|
|
1340
1463
|
'data-align'?: never;
|
|
1341
1464
|
}>;
|
|
1342
|
-
type CatalogExampleStackRootAttributes = Readonly<Record<`data-${string}`, string | undefined> & {
|
|
1343
|
-
'data-catalog-example'?: never;
|
|
1344
|
-
'data-catalog-example-stack'?: never;
|
|
1345
|
-
'data-catalog-example-label'?: never;
|
|
1346
|
-
'data-catalog-example-note'?: never;
|
|
1347
|
-
'data-align'?: never;
|
|
1348
|
-
}>;
|
|
1349
1465
|
interface CatalogExampleProps {
|
|
1350
|
-
/** The example's label, shown as a `ListHeader` above the specimen. Omit for a bare specimen. */
|
|
1351
1466
|
label?: string;
|
|
1352
|
-
/** Optional explanatory note between the label and the specimen. */
|
|
1353
1467
|
note?: SafeHtml | string;
|
|
1354
|
-
/** Alignment inset for the specimen — see {@link CatalogExampleAlign}. Default `'none'`. */
|
|
1355
1468
|
align?: CatalogExampleAlign;
|
|
1356
|
-
/**
|
|
1469
|
+
/** Optional catalog-owned constraints for demonstrating layout components. */
|
|
1470
|
+
viewport?: CatalogExampleViewport;
|
|
1471
|
+
/** Replacement guidance shown when a roomy-only viewport is hidden. */
|
|
1472
|
+
compactFallback?: SafeHtml | string;
|
|
1357
1473
|
rootAttributes?: CatalogExampleRootAttributes;
|
|
1358
1474
|
className?: string;
|
|
1359
1475
|
children?: KerfUiContent;
|
|
1476
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
1477
|
+
slot?: string;
|
|
1360
1478
|
}
|
|
1361
|
-
/**
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
|
|
1479
|
+
/** A labeled catalog specimen with optional explanatory text and alignment. */
|
|
1480
|
+
declare function CatalogExample({ label, note, align, viewport, compactFallback, rootAttributes, className, children, slot, }: CatalogExampleProps): SafeHtml;
|
|
1481
|
+
|
|
1482
|
+
type CatalogExampleStackRootAttributes = Readonly<Record<`data-${string}`, string | undefined> & {
|
|
1483
|
+
'data-catalog-example'?: never;
|
|
1484
|
+
'data-catalog-example-stack'?: never;
|
|
1485
|
+
'data-catalog-example-label'?: never;
|
|
1486
|
+
'data-catalog-example-note'?: never;
|
|
1487
|
+
'data-align'?: never;
|
|
1488
|
+
}>;
|
|
1370
1489
|
interface CatalogExampleStackProps {
|
|
1371
|
-
/** Accessible label for the stack region. */
|
|
1372
1490
|
label?: string;
|
|
1373
|
-
/** Safe authoring `data-*` metadata for the rendered stack. Helper-owned structural attributes remain protected. */
|
|
1374
1491
|
rootAttributes?: CatalogExampleStackRootAttributes;
|
|
1375
1492
|
className?: string;
|
|
1376
1493
|
children?: KerfUiContent;
|
|
1494
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
1495
|
+
slot?: string;
|
|
1377
1496
|
}
|
|
1378
|
-
/**
|
|
1379
|
-
|
|
1380
|
-
* example rhythm. The semantic `section` becomes a named `region` when `label`
|
|
1381
|
-
* is supplied; an unlabeled stack remains an ordinary grouping.
|
|
1382
|
-
*/
|
|
1383
|
-
declare function CatalogExampleStack({ label, rootAttributes, className, children, }: CatalogExampleStackProps): SafeHtml;
|
|
1497
|
+
/** A vertically stacked group of catalog examples. */
|
|
1498
|
+
declare function CatalogExampleStack({ label, rootAttributes, className, children, slot, }: CatalogExampleStackProps): kerfjs.SafeHtml;
|
|
1384
1499
|
|
|
1385
|
-
export { Catalog,
|
|
1500
|
+
export { Catalog, CatalogExample, type CatalogExampleAlign, type CatalogExampleProps, CatalogExampleStack, type CatalogExampleStackProps, type CatalogExampleViewport, CatalogProps };
|
|
1386
1501
|
```
|
|
1387
1502
|
|
|
1388
1503
|
## `@kerfjs/ui/catalog-resources`
|
|
1389
1504
|
|
|
1390
1505
|
```ts
|
|
1391
|
-
import { CatalogResource } from './
|
|
1392
|
-
import 'kerfjs';
|
|
1506
|
+
import { C as CatalogResource } from './types-CEsieBZi.js';
|
|
1393
1507
|
import './semantic-content-BbzjvSu9.js';
|
|
1508
|
+
import 'kerfjs';
|
|
1394
1509
|
|
|
1395
1510
|
/**
|
|
1396
1511
|
* Standard resource labels for a Kerf catalog detail footer. Keep these labels
|
|
@@ -1517,8 +1632,10 @@ interface SegmentedControlProps<Value extends string = string> {
|
|
|
1517
1632
|
className?: string;
|
|
1518
1633
|
/** Render as an unanimated loading skeleton, disabling every segment. */
|
|
1519
1634
|
placeholder?: boolean;
|
|
1635
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
1636
|
+
slot?: string;
|
|
1520
1637
|
}
|
|
1521
|
-
declare function SegmentedControl<Value extends string>({ id, label, value, choices, action, appearance, shape, size, layout, className, placeholder, }: SegmentedControlProps<Value>): kerfjs.SafeHtml;
|
|
1638
|
+
declare function SegmentedControl<Value extends string>({ id, label, value, choices, action, appearance, shape, size, layout, className, placeholder, slot, }: SegmentedControlProps<Value>): kerfjs.SafeHtml;
|
|
1522
1639
|
|
|
1523
1640
|
export { SegmentedControl, type SegmentedControlAppearance, type SegmentedControlChoice, type SegmentedControlLayout, type SegmentedControlProps, type SegmentedControlShape, type SegmentedControlSize };
|
|
1524
1641
|
```
|
|
@@ -1527,7 +1644,7 @@ export { SegmentedControl, type SegmentedControlAppearance, type SegmentedContro
|
|
|
1527
1644
|
|
|
1528
1645
|
```ts
|
|
1529
1646
|
import { SafeHtml } from 'kerfjs';
|
|
1530
|
-
import {
|
|
1647
|
+
import { CssForegroundColor } from './css-values.js';
|
|
1531
1648
|
import { LucideNode } from './lucide-icon.js';
|
|
1532
1649
|
import 'lucide';
|
|
1533
1650
|
|
|
@@ -1536,9 +1653,19 @@ interface SelectChoice<Value extends string = string> {
|
|
|
1536
1653
|
label: string;
|
|
1537
1654
|
icon?: LucideNode;
|
|
1538
1655
|
iconName?: string;
|
|
1539
|
-
/**
|
|
1540
|
-
|
|
1656
|
+
/**
|
|
1657
|
+
* Foreground color for the optional icon: a semantic foreground token such
|
|
1658
|
+
* as `uiColor('success-on-quiet')`, or an application-owned
|
|
1659
|
+
* `foregroundColorVar('--app-icon-color')`. Fill tokens such as
|
|
1660
|
+
* `uiColor('success')` are pale background tints and do not type-check.
|
|
1661
|
+
*/
|
|
1662
|
+
color?: CssForegroundColor;
|
|
1541
1663
|
group?: string;
|
|
1664
|
+
/**
|
|
1665
|
+
* Draw a divider between this choice and the previous choice in the same
|
|
1666
|
+
* list. A group boundary is already a separator, so the first choice of a
|
|
1667
|
+
* group (or of the whole menu) never draws a second one.
|
|
1668
|
+
*/
|
|
1542
1669
|
separatorBefore?: boolean;
|
|
1543
1670
|
}
|
|
1544
1671
|
type SelectAccessibleName = {
|
|
@@ -1575,9 +1702,11 @@ interface SelectBaseProps<Value extends string = string> {
|
|
|
1575
1702
|
focusRingOwner?: SelectFocusRingOwner;
|
|
1576
1703
|
/** Maximum closed-control label width in CSS pixels before ellipsis. */
|
|
1577
1704
|
labelMaxWidth?: number;
|
|
1705
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
1706
|
+
slot?: string;
|
|
1578
1707
|
}
|
|
1579
1708
|
type SelectProps<Value extends string = string> = SelectBaseProps<Value> & SelectAccessibleName;
|
|
1580
|
-
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;
|
|
1709
|
+
declare function Select<Value extends string>({ name, value, label, ariaLabel, choices, className, placeholderText, hint, disabled, fitMenu, renderSelected, placeholder, presentation, size, selectedPresentation, focusRingOwner, labelMaxWidth, slot, }: SelectProps<Value>): SafeHtml;
|
|
1581
1710
|
|
|
1582
1711
|
export { Select, type SelectChoice, type SelectFocusRingOwner, type SelectPresentation, type SelectProps, type SelectSelectedPresentation, type SelectSize };
|
|
1583
1712
|
```
|
|
@@ -1602,8 +1731,10 @@ interface StateBannerProps {
|
|
|
1602
1731
|
className?: string;
|
|
1603
1732
|
/** Render the title, badge, and detail as unanimated loading skeletons, keeping the icon and tone. */
|
|
1604
1733
|
placeholder?: boolean;
|
|
1734
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
1735
|
+
slot?: string;
|
|
1605
1736
|
}
|
|
1606
|
-
declare function StateBanner({ title, detail, badge, icon, action, tone, urgency, className, placeholder, }: StateBannerProps): SafeHtml;
|
|
1737
|
+
declare function StateBanner({ title, detail, badge, icon, action, tone, urgency, className, placeholder, slot, }: StateBannerProps): SafeHtml;
|
|
1607
1738
|
|
|
1608
1739
|
export { StateBanner, type StateBannerProps, type StateBannerTone, type StateBannerUrgency };
|
|
1609
1740
|
```
|
|
@@ -1621,8 +1752,10 @@ interface EmptyStateProps {
|
|
|
1621
1752
|
action?: KerfUiContent;
|
|
1622
1753
|
busy?: boolean;
|
|
1623
1754
|
className?: string;
|
|
1755
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
1756
|
+
slot?: string;
|
|
1624
1757
|
}
|
|
1625
|
-
declare function EmptyState({ title, detail, icon, action, busy, className, }: EmptyStateProps): SafeHtml;
|
|
1758
|
+
declare function EmptyState({ title, detail, icon, action, busy, className, slot, }: EmptyStateProps): SafeHtml;
|
|
1626
1759
|
|
|
1627
1760
|
export { EmptyState, type EmptyStateProps };
|
|
1628
1761
|
```
|
|
@@ -1635,9 +1768,11 @@ import * as kerfjs from 'kerfjs';
|
|
|
1635
1768
|
interface LoadingSpinnerProps {
|
|
1636
1769
|
className?: string;
|
|
1637
1770
|
label?: string;
|
|
1771
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
1772
|
+
slot?: string;
|
|
1638
1773
|
}
|
|
1639
1774
|
/** Stable viewBox-centered progress ring based on svg-spinners' MIT-licensed 180-ring. */
|
|
1640
|
-
declare function LoadingSpinner({ className, label }: LoadingSpinnerProps): kerfjs.SafeHtml;
|
|
1775
|
+
declare function LoadingSpinner({ className, label, slot, }: LoadingSpinnerProps): kerfjs.SafeHtml;
|
|
1641
1776
|
|
|
1642
1777
|
export { LoadingSpinner, type LoadingSpinnerProps };
|
|
1643
1778
|
```
|
|
@@ -1660,6 +1795,8 @@ interface SkeletonProps {
|
|
|
1660
1795
|
/** Accessible label. Omit to keep the block decorative (`aria-hidden`). */
|
|
1661
1796
|
label?: string;
|
|
1662
1797
|
className?: string;
|
|
1798
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
1799
|
+
slot?: string;
|
|
1663
1800
|
}
|
|
1664
1801
|
/**
|
|
1665
1802
|
* A subtle, deliberately **unanimated** loading placeholder block. Use it for a
|
|
@@ -1667,7 +1804,7 @@ interface SkeletonProps {
|
|
|
1667
1804
|
* `placeholder` prop. Decorative by default (`aria-hidden`); pass `label` to
|
|
1668
1805
|
* announce it. Sizes to its slot unless `width`/`height` are given.
|
|
1669
1806
|
*/
|
|
1670
|
-
declare function Skeleton({ width, height, radius, lines, label, className, }: SkeletonProps): kerfjs.SafeHtml;
|
|
1807
|
+
declare function Skeleton({ width, height, radius, lines, label, className, slot, }: SkeletonProps): kerfjs.SafeHtml;
|
|
1671
1808
|
|
|
1672
1809
|
export { Skeleton, type SkeletonProps };
|
|
1673
1810
|
```
|
|
@@ -1686,13 +1823,15 @@ interface SunkenPanelProps {
|
|
|
1686
1823
|
/** Corner shape: a rounded rectangle (default) or square corners. */
|
|
1687
1824
|
shape?: SunkenPanelShape;
|
|
1688
1825
|
className?: string;
|
|
1826
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
1827
|
+
slot?: string;
|
|
1689
1828
|
}
|
|
1690
1829
|
/**
|
|
1691
1830
|
* A lowered application surface with one compact inset and a vertical content
|
|
1692
1831
|
* stack. The panel owns its background and padding; children own their own
|
|
1693
1832
|
* borders and internal geometry.
|
|
1694
1833
|
*/
|
|
1695
|
-
declare function SunkenPanel({ children, ariaLabel, shape, className, }: SunkenPanelProps): kerfjs.SafeHtml;
|
|
1834
|
+
declare function SunkenPanel({ children, ariaLabel, shape, className, slot, }: SunkenPanelProps): kerfjs.SafeHtml;
|
|
1696
1835
|
|
|
1697
1836
|
export { SunkenPanel, type SunkenPanelProps, type SunkenPanelShape };
|
|
1698
1837
|
```
|
|
@@ -1728,12 +1867,16 @@ interface TokenSearchFieldBaseProps {
|
|
|
1728
1867
|
autofocus?: boolean;
|
|
1729
1868
|
leading?: KerfUiContent;
|
|
1730
1869
|
trailing?: KerfUiContent;
|
|
1870
|
+
/** Standalone field chrome or the inset visual layer of a configured toolbar group. */
|
|
1871
|
+
presentation?: 'standalone' | 'toolbar-group';
|
|
1731
1872
|
editAction?: string;
|
|
1732
1873
|
removeAction?: string;
|
|
1733
1874
|
clearAction?: string;
|
|
1734
1875
|
clearLabel?: string;
|
|
1735
1876
|
className?: string;
|
|
1736
1877
|
editorAttributes?: TokenSearchEditorAttributes;
|
|
1878
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
1879
|
+
slot?: string;
|
|
1737
1880
|
}
|
|
1738
1881
|
type TokenSearchCollapsibleProps = {
|
|
1739
1882
|
/** Allow an empty field to render as one iconic action. */
|
|
@@ -1753,7 +1896,7 @@ interface TokenSearchFieldValue {
|
|
|
1753
1896
|
query: string;
|
|
1754
1897
|
tokens: TokenSearchToken[];
|
|
1755
1898
|
}
|
|
1756
|
-
declare function TokenSearchField({ id, label, query, tokens, placeholder, tokenPlaceholder, disabled, autofocus, collapsible, expanded, expandAction, expandLabel, leading, trailing, editAction, removeAction, clearAction, clearLabel, className, editorAttributes, }: TokenSearchFieldProps): kerfjs.SafeHtml;
|
|
1899
|
+
declare function TokenSearchField({ id, label, query, tokens, placeholder, tokenPlaceholder, disabled, autofocus, collapsible, expanded, expandAction, expandLabel, leading, trailing, presentation, editAction, removeAction, clearAction, clearLabel, className, editorAttributes, slot, }: TokenSearchFieldProps): kerfjs.SafeHtml;
|
|
1757
1900
|
/** Read editable text and ordered token offsets from a rendered TokenSearchField editor. */
|
|
1758
1901
|
declare function readTokenSearchField(editor: HTMLElement, knownTokens?: readonly TokenSearchToken[]): TokenSearchFieldValue;
|
|
1759
1902
|
/** Focus an editor and place its caret at a text offset, skipping atomic token chips. */
|
|
@@ -1955,6 +2098,35 @@ declare function delegateActions<E extends Element = Element>(root: HTMLElement,
|
|
|
1955
2098
|
export { type ActionHandler, type DelegateActionsOptions, action, delegateActions };
|
|
1956
2099
|
```
|
|
1957
2100
|
|
|
2101
|
+
## `@kerfjs/ui/badge`
|
|
2102
|
+
|
|
2103
|
+
```ts
|
|
2104
|
+
import { SafeHtml } from 'kerfjs';
|
|
2105
|
+
|
|
2106
|
+
type BadgeTone = 'neutral' | 'brand' | 'pop' | 'success' | 'warning' | 'danger';
|
|
2107
|
+
type BadgeAppearance = 'quiet' | 'solid' | 'outline';
|
|
2108
|
+
type BadgeShape = 'pill' | 'rounded';
|
|
2109
|
+
type BadgeSize = 'compact' | 'default';
|
|
2110
|
+
interface BadgeProps {
|
|
2111
|
+
children: SafeHtml | string | number;
|
|
2112
|
+
tone?: BadgeTone;
|
|
2113
|
+
appearance?: BadgeAppearance;
|
|
2114
|
+
shape?: BadgeShape;
|
|
2115
|
+
size?: BadgeSize;
|
|
2116
|
+
/** Optional accessible name when the visible content is abbreviated. */
|
|
2117
|
+
label?: string;
|
|
2118
|
+
/** Hide a repeated visual badge from assistive technology. */
|
|
2119
|
+
ariaHidden?: boolean;
|
|
2120
|
+
className?: string;
|
|
2121
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
2122
|
+
slot?: string;
|
|
2123
|
+
}
|
|
2124
|
+
/** Compact, non-interactive metadata whose tone, emphasis, and shape are configured by props. */
|
|
2125
|
+
declare function Badge({ children, tone, appearance, shape, size, label, ariaHidden, className, slot, }: BadgeProps): SafeHtml;
|
|
2126
|
+
|
|
2127
|
+
export { Badge, type BadgeAppearance, type BadgeProps, type BadgeShape, type BadgeSize, type BadgeTone };
|
|
2128
|
+
```
|
|
2129
|
+
|
|
1958
2130
|
## `@kerfjs/ui/lucide-icon`
|
|
1959
2131
|
|
|
1960
2132
|
```ts
|
|
@@ -1967,9 +2139,11 @@ interface LucideIconProps {
|
|
|
1967
2139
|
name: string;
|
|
1968
2140
|
className?: string;
|
|
1969
2141
|
label?: string;
|
|
2142
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
2143
|
+
slot?: string;
|
|
1970
2144
|
}
|
|
1971
2145
|
/** Render a Lucide-compatible icon node without copying icon SVG strings. */
|
|
1972
|
-
declare function LucideIcon({ icon, name, className, label }: LucideIconProps): kerfjs.SafeHtml;
|
|
2146
|
+
declare function LucideIcon({ icon, name, className, label, slot, }: LucideIconProps): kerfjs.SafeHtml;
|
|
1973
2147
|
|
|
1974
2148
|
export { LucideIcon, type LucideIconProps, type LucideNode };
|
|
1975
2149
|
```
|
|
@@ -1990,17 +2164,21 @@ interface DialogSurfaceProps {
|
|
|
1990
2164
|
bodyInset?: SurfaceInset;
|
|
1991
2165
|
footerInset?: SurfaceInset;
|
|
1992
2166
|
className?: string;
|
|
2167
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
2168
|
+
slot?: string;
|
|
1993
2169
|
}
|
|
1994
2170
|
/** Configure recurring Web Awesome dialog geometry without consumer ::part() CSS. */
|
|
1995
|
-
declare function DialogSurface({ children, size, presentation, bodyInset, footerInset, className, }: DialogSurfaceProps): kerfjs.SafeHtml;
|
|
2171
|
+
declare function DialogSurface({ children, size, presentation, bodyInset, footerInset, className, slot, }: DialogSurfaceProps): kerfjs.SafeHtml;
|
|
1996
2172
|
type PopupSurfaceInset = 'standard' | 'compact' | 'list-zero';
|
|
1997
2173
|
interface PopupSurfaceProps {
|
|
1998
2174
|
children: KerfUiContent;
|
|
1999
2175
|
inset?: PopupSurfaceInset;
|
|
2000
2176
|
className?: string;
|
|
2177
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
2178
|
+
slot?: string;
|
|
2001
2179
|
}
|
|
2002
2180
|
/** Configure recurring Web Awesome dropdown-menu geometry without consumer ::part() CSS. */
|
|
2003
|
-
declare function PopupSurface({ children, inset, className, }: PopupSurfaceProps): kerfjs.SafeHtml;
|
|
2181
|
+
declare function PopupSurface({ children, inset, className, slot, }: PopupSurfaceProps): kerfjs.SafeHtml;
|
|
2004
2182
|
|
|
2005
2183
|
export { DialogSurface, type DialogSurfacePresentation, type DialogSurfaceProps, type DialogSurfaceSize, PopupSurface, type PopupSurfaceInset, type PopupSurfaceProps, type SurfaceInset };
|
|
2006
2184
|
```
|
|
@@ -2012,13 +2190,14 @@ import * as kerfjs from 'kerfjs';
|
|
|
2012
2190
|
import { KerfBaseAttrs } from 'kerfjs/jsx-runtime';
|
|
2013
2191
|
import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
|
|
2014
2192
|
|
|
2015
|
-
type TextVariant = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p';
|
|
2193
|
+
type TextVariant = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'span';
|
|
2016
2194
|
type TextTone = 'default' | 'quiet' | 'danger';
|
|
2017
2195
|
type TextSize = 'default' | 'compact';
|
|
2018
2196
|
type TextFont = 'default' | 'monospace';
|
|
2197
|
+
type TextBorder = 'transparent' | 'none';
|
|
2019
2198
|
type TextContent = KerfUiContent | string | number | readonly TextContent[];
|
|
2020
2199
|
type TextProps = Omit<KerfBaseAttrs, 'children' | 'class' | 'className'> & {
|
|
2021
|
-
/** Native heading or
|
|
2200
|
+
/** Native heading, paragraph, or inline span element to render. Defaults to `p`. */
|
|
2022
2201
|
variant?: TextVariant;
|
|
2023
2202
|
/** Semantic foreground treatment. Defaults to the inherited foreground. */
|
|
2024
2203
|
tone?: TextTone;
|
|
@@ -2026,17 +2205,20 @@ type TextProps = Omit<KerfBaseAttrs, 'children' | 'class' | 'className'> & {
|
|
|
2026
2205
|
size?: TextSize;
|
|
2027
2206
|
/** Font family independent of the native semantic element. */
|
|
2028
2207
|
font?: TextFont;
|
|
2208
|
+
/** Transparent alignment border or no border when embedded in owner chrome. */
|
|
2209
|
+
border?: TextBorder;
|
|
2029
2210
|
children: TextContent;
|
|
2030
2211
|
class?: string;
|
|
2031
2212
|
className?: string;
|
|
2032
2213
|
};
|
|
2033
2214
|
/**
|
|
2034
|
-
* Semantic heading or
|
|
2215
|
+
* Semantic heading, paragraph, or inline text. Block variants use the standard
|
|
2216
|
+
* content-item padding; `span` adds no box geometry.
|
|
2035
2217
|
* All ordinary native heading/paragraph attributes pass through to the element.
|
|
2036
2218
|
*/
|
|
2037
|
-
declare function Text({ variant: Variant, tone, size, font, children, class: classValue, className, ...attributes }: TextProps): kerfjs.SafeHtml;
|
|
2219
|
+
declare function Text({ variant: Variant, tone, size, font, border, children, class: classValue, className, ...attributes }: TextProps): kerfjs.SafeHtml;
|
|
2038
2220
|
|
|
2039
|
-
export { Text, type TextContent, type TextFont, type TextProps, type TextSize, type TextTone, type TextVariant };
|
|
2221
|
+
export { Text, type TextBorder, type TextContent, type TextFont, type TextProps, type TextSize, type TextTone, type TextVariant };
|
|
2040
2222
|
```
|
|
2041
2223
|
|
|
2042
2224
|
## `@kerfjs/ui/row`
|
|
@@ -2048,6 +2230,16 @@ import { S as Sides } from './divider-sides-BzB6rphT.js';
|
|
|
2048
2230
|
import { H as HorizontalAlignment, V as VerticalAlignment } from './flex-alignment-4ms8ZbV8.js';
|
|
2049
2231
|
import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
|
|
2050
2232
|
|
|
2233
|
+
type RowRootAttributes = Readonly<Record<`data-${string}`, string | undefined> & {
|
|
2234
|
+
'data-component'?: never;
|
|
2235
|
+
'data-h-align'?: never;
|
|
2236
|
+
'data-v-align'?: never;
|
|
2237
|
+
'data-flex'?: never;
|
|
2238
|
+
'data-fill'?: never;
|
|
2239
|
+
'data-wrap'?: never;
|
|
2240
|
+
'data-text-insets'?: never;
|
|
2241
|
+
'data-control-insets'?: never;
|
|
2242
|
+
}>;
|
|
2051
2243
|
interface RowProps {
|
|
2052
2244
|
children?: KerfUiContent;
|
|
2053
2245
|
/** Horizontal distribution. Defaults to left. */
|
|
@@ -2058,6 +2250,12 @@ interface RowProps {
|
|
|
2058
2250
|
gap?: UiSpaceName | CssLength;
|
|
2059
2251
|
/** Allow this row to grow/shrink, use a keyword, or supply a typed CSS flex shorthand. */
|
|
2060
2252
|
flex?: boolean | CssFlexKeyword | CssFlex;
|
|
2253
|
+
/**
|
|
2254
|
+
* Fill the height of a parent with a definite height, such as an app root or
|
|
2255
|
+
* a fixed-height frame, when this row is that parent's layout root. Inside a
|
|
2256
|
+
* flex layout use `flex` instead. Defaults to false.
|
|
2257
|
+
*/
|
|
2258
|
+
fill?: boolean;
|
|
2061
2259
|
/** Allow children to wrap onto additional lines. */
|
|
2062
2260
|
wrap?: boolean;
|
|
2063
2261
|
/** Physical sides that receive the standard 17px text inset. */
|
|
@@ -2065,9 +2263,13 @@ interface RowProps {
|
|
|
2065
2263
|
/** Physical sides that receive the standard 8px control inset. Text insets win on overlap. */
|
|
2066
2264
|
controlInsets?: Sides;
|
|
2067
2265
|
className?: string;
|
|
2266
|
+
/** Safe `data-*` metadata; Row-owned structural attributes remain protected. */
|
|
2267
|
+
rootAttributes?: RowRootAttributes;
|
|
2268
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
2269
|
+
slot?: string;
|
|
2068
2270
|
}
|
|
2069
2271
|
/** A horizontal flex row with explicit physical-axis alignment and spacing. */
|
|
2070
|
-
declare function Row({ children, hAlign, vAlign, gap, flex, wrap, textInsets, controlInsets, className, }: RowProps): kerfjs.SafeHtml;
|
|
2272
|
+
declare function Row({ children, hAlign, vAlign, gap, flex, fill, wrap, textInsets, controlInsets, className, rootAttributes, slot, }: RowProps): kerfjs.SafeHtml;
|
|
2071
2273
|
|
|
2072
2274
|
export { CssFlex, CssFlexKeyword, CssLength, HorizontalAlignment, Row, type RowProps, Sides, UiSpaceName, VerticalAlignment };
|
|
2073
2275
|
```
|
|
@@ -2079,6 +2281,12 @@ import * as kerfjs from 'kerfjs';
|
|
|
2079
2281
|
import { UiSpaceName, CssLength, CssFlexKeyword, CssFlex } from './css-values.js';
|
|
2080
2282
|
import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
|
|
2081
2283
|
|
|
2284
|
+
type GridRootAttributes = Readonly<Record<`data-${string}`, string | undefined> & {
|
|
2285
|
+
'data-component'?: never;
|
|
2286
|
+
'data-columns'?: never;
|
|
2287
|
+
'data-flex'?: never;
|
|
2288
|
+
'data-fill'?: never;
|
|
2289
|
+
}>;
|
|
2082
2290
|
interface GridProps {
|
|
2083
2291
|
children?: KerfUiContent;
|
|
2084
2292
|
/** Number of equal-width columns. Must be a positive safe integer. */
|
|
@@ -2087,10 +2295,20 @@ interface GridProps {
|
|
|
2087
2295
|
gap?: UiSpaceName | CssLength;
|
|
2088
2296
|
/** Allow this grid to grow/shrink, use a keyword, or supply a typed CSS flex shorthand. */
|
|
2089
2297
|
flex?: boolean | CssFlexKeyword | CssFlex;
|
|
2298
|
+
/**
|
|
2299
|
+
* Fill the height of a parent with a definite height, such as an app root or
|
|
2300
|
+
* a fixed-height frame, when this grid is that parent's layout root. Inside a
|
|
2301
|
+
* flex layout use `flex` instead. Defaults to false.
|
|
2302
|
+
*/
|
|
2303
|
+
fill?: boolean;
|
|
2090
2304
|
className?: string;
|
|
2305
|
+
/** Safe `data-*` metadata; Grid-owned structural attributes remain protected. */
|
|
2306
|
+
rootAttributes?: GridRootAttributes;
|
|
2307
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
2308
|
+
slot?: string;
|
|
2091
2309
|
}
|
|
2092
2310
|
/** A fixed-count grid whose columns share the available width equally. */
|
|
2093
|
-
declare function Grid({ children, columns, gap, flex, className, }: GridProps): kerfjs.SafeHtml;
|
|
2311
|
+
declare function Grid({ children, columns, gap, flex, fill, className, rootAttributes, slot, }: GridProps): kerfjs.SafeHtml;
|
|
2094
2312
|
|
|
2095
2313
|
export { CssFlex, CssFlexKeyword, CssLength, Grid, type GridProps, UiSpaceName };
|
|
2096
2314
|
```
|
|
@@ -2109,9 +2327,11 @@ interface SpacerProps {
|
|
|
2109
2327
|
/** A named UI spacing token or typed physical height. */
|
|
2110
2328
|
height?: UiSpaceName | CssLength;
|
|
2111
2329
|
className?: string;
|
|
2330
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
2331
|
+
slot?: string;
|
|
2112
2332
|
}
|
|
2113
2333
|
/** A decorative fixed-size or flexible gap for Row, List, and other flex layouts. */
|
|
2114
|
-
declare function Spacer({ flex, width, height, className, }: SpacerProps): kerfjs.SafeHtml;
|
|
2334
|
+
declare function Spacer({ flex, width, height, className, slot, }: SpacerProps): kerfjs.SafeHtml;
|
|
2115
2335
|
|
|
2116
2336
|
export { CssLength, Spacer, type SpacerProps, UiSpaceName };
|
|
2117
2337
|
```
|