@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
|
@@ -4,6 +4,65 @@
|
|
|
4
4
|
"package": "@kerfjs/ui",
|
|
5
5
|
"description": "Machine-readable selection, composition, delivery, ownership, and accessibility metadata for Kerf UI and its supported Web Awesome set.",
|
|
6
6
|
"entries": [
|
|
7
|
+
{
|
|
8
|
+
"id": "badge",
|
|
9
|
+
"name": "Badge",
|
|
10
|
+
"category": "Foundation",
|
|
11
|
+
"kind": "component",
|
|
12
|
+
"source": "kerf",
|
|
13
|
+
"description": "Self-styled, non-interactive status, count, and category metadata configured through semantic tone, appearance, shape, and size props.",
|
|
14
|
+
"uses": [],
|
|
15
|
+
"purpose": "Present compact metadata without application-authored badge CSS or consumer styling of component internals.",
|
|
16
|
+
"publicExports": [
|
|
17
|
+
"Badge"
|
|
18
|
+
],
|
|
19
|
+
"useWhen": [
|
|
20
|
+
"Show a short status, count, category, or metadata label whose presentation should be configured rather than restyled."
|
|
21
|
+
],
|
|
22
|
+
"avoidWhen": [
|
|
23
|
+
"Do not use Badge as a button, link, or removable chip; choose an interactive control with the correct native semantics.",
|
|
24
|
+
"Do not rely on tone alone to communicate meaning."
|
|
25
|
+
],
|
|
26
|
+
"alternatives": [],
|
|
27
|
+
"appOwns": [
|
|
28
|
+
"metadata text",
|
|
29
|
+
"semantic tone mapping",
|
|
30
|
+
"accessible label for abbreviated content"
|
|
31
|
+
],
|
|
32
|
+
"variants": [
|
|
33
|
+
"neutral, brand, pop, success, warning, or danger tone",
|
|
34
|
+
"quiet, solid, or outline appearance",
|
|
35
|
+
"pill or rounded shape",
|
|
36
|
+
"compact or default size",
|
|
37
|
+
"labeled or decorative duplicate"
|
|
38
|
+
],
|
|
39
|
+
"accessibility": [
|
|
40
|
+
"Badge is non-interactive. Supply label when visible content is abbreviated, and ariaHidden when it repeats an accessible name owned by the surrounding component.",
|
|
41
|
+
"Keep meaningful text visible because tone is supplementary."
|
|
42
|
+
],
|
|
43
|
+
"geometry": {
|
|
44
|
+
"margin": "none",
|
|
45
|
+
"border": "self",
|
|
46
|
+
"padding": "self"
|
|
47
|
+
},
|
|
48
|
+
"delivery": {
|
|
49
|
+
"browserImport": "@kerfjs/ui/badge",
|
|
50
|
+
"manualCssImport": "@kerfjs/ui/badge.css",
|
|
51
|
+
"sideEffects": [
|
|
52
|
+
"browser-condition-css"
|
|
53
|
+
]
|
|
54
|
+
},
|
|
55
|
+
"wiring": [],
|
|
56
|
+
"publicClasses": [
|
|
57
|
+
"kui-badge"
|
|
58
|
+
],
|
|
59
|
+
"publicTokens": [],
|
|
60
|
+
"links": {
|
|
61
|
+
"catalogRoute": "?component=badge",
|
|
62
|
+
"documentation": "docs/component-selection.md",
|
|
63
|
+
"recipe": "docs/component-selection.md#problem-to-component-matrix"
|
|
64
|
+
}
|
|
65
|
+
},
|
|
7
66
|
{
|
|
8
67
|
"id": "lucide-icon",
|
|
9
68
|
"name": "LucideIcon",
|
|
@@ -197,6 +256,10 @@
|
|
|
197
256
|
"--kui-toolbar-group-inner-size",
|
|
198
257
|
"--kui-toolbar-group-size",
|
|
199
258
|
"--kui-toolbar-gap",
|
|
259
|
+
"--kui-safe-area-block-start",
|
|
260
|
+
"--kui-safe-area-block-end",
|
|
261
|
+
"--kui-safe-area-inline-start",
|
|
262
|
+
"--kui-safe-area-inline-end",
|
|
200
263
|
"--kui-radius-s",
|
|
201
264
|
"--kui-radius-m",
|
|
202
265
|
"--kui-radius-l",
|
|
@@ -394,6 +457,7 @@
|
|
|
394
457
|
"accessible labels",
|
|
395
458
|
"header, content, and footer children",
|
|
396
459
|
"which logical boundaries show separators",
|
|
460
|
+
"which sides may compensate for device safe areas in an app-owned arrangement (safeAreaEdges)",
|
|
397
461
|
"responsive placement and visibility"
|
|
398
462
|
],
|
|
399
463
|
"variants": [
|
|
@@ -414,7 +478,8 @@
|
|
|
414
478
|
"border": "conditional",
|
|
415
479
|
"padding": "child",
|
|
416
480
|
"notes": [
|
|
417
|
-
"The pane is unpadded; separators are independently opt-in on logical edges and default off."
|
|
481
|
+
"The pane is unpadded; separators are independently opt-in on logical edges and default off.",
|
|
482
|
+
"Safe areas: the root and separators paint through unsafe areas while header, content, and footer pad the sides the pane still reaches (routed by --kui-edge-inset-*); content block insets are scroll padding."
|
|
418
483
|
]
|
|
419
484
|
},
|
|
420
485
|
"delivery": {
|
|
@@ -433,6 +498,10 @@
|
|
|
433
498
|
"kui-pane__toolbar"
|
|
434
499
|
],
|
|
435
500
|
"publicTokens": [
|
|
501
|
+
"--kui-edge-inset-block-end",
|
|
502
|
+
"--kui-edge-inset-block-start",
|
|
503
|
+
"--kui-edge-inset-inline-end",
|
|
504
|
+
"--kui-edge-inset-inline-start",
|
|
436
505
|
"--kui-pane-separator-color",
|
|
437
506
|
"--kui-pane-separator-width"
|
|
438
507
|
],
|
|
@@ -516,7 +585,24 @@
|
|
|
516
585
|
{
|
|
517
586
|
"export": "wireNavStack",
|
|
518
587
|
"import": "@kerfjs/ui/wire-nav-stack",
|
|
519
|
-
"required": true
|
|
588
|
+
"required": true,
|
|
589
|
+
"stateAttributes": [
|
|
590
|
+
{
|
|
591
|
+
"name": "data-nav-chrome-transition",
|
|
592
|
+
"on": "kui-nav-stack",
|
|
593
|
+
"meaning": "\"true\" while the chrome cross-fades between the outgoing and incoming view."
|
|
594
|
+
},
|
|
595
|
+
{
|
|
596
|
+
"name": "data-nav-chrome-copy",
|
|
597
|
+
"on": "kui-nav-stack__chrome-copy",
|
|
598
|
+
"meaning": "Marks the inert, aria-hidden snapshot of the outgoing chrome shown during the cross-fade."
|
|
599
|
+
},
|
|
600
|
+
{
|
|
601
|
+
"name": "data-nav-exiting",
|
|
602
|
+
"on": "kui-nav-stack__view",
|
|
603
|
+
"meaning": "\"true\" on a popped view the helper briefly re-inserts to slide it out."
|
|
604
|
+
}
|
|
605
|
+
]
|
|
520
606
|
}
|
|
521
607
|
],
|
|
522
608
|
"publicClasses": [
|
|
@@ -619,18 +705,46 @@
|
|
|
619
705
|
{
|
|
620
706
|
"export": "wireResizableRegions",
|
|
621
707
|
"import": "@kerfjs/ui/wire-resizable-regions",
|
|
622
|
-
"required": false
|
|
708
|
+
"required": false,
|
|
709
|
+
"stateAttributes": [
|
|
710
|
+
{
|
|
711
|
+
"name": "data-handle-inset",
|
|
712
|
+
"on": "kui-resizable-region",
|
|
713
|
+
"meaning": "Present while a clipping edge clamps the region: the handle and its focus ring sit inside the region instead of overhanging that edge."
|
|
714
|
+
},
|
|
715
|
+
{
|
|
716
|
+
"name": "data-resizing",
|
|
717
|
+
"on": "kui-resizable-region",
|
|
718
|
+
"meaning": "\"true\" during an active pointer drag of the handle."
|
|
719
|
+
}
|
|
720
|
+
]
|
|
623
721
|
},
|
|
624
722
|
{
|
|
625
723
|
"export": "wireNavStack",
|
|
626
724
|
"import": "@kerfjs/ui/wire-nav-stack",
|
|
627
|
-
"required": true
|
|
725
|
+
"required": true,
|
|
726
|
+
"stateAttributes": [
|
|
727
|
+
{
|
|
728
|
+
"name": "data-nav-chrome-transition",
|
|
729
|
+
"on": "kui-nav-stack",
|
|
730
|
+
"meaning": "\"true\" while the chrome cross-fades between the outgoing and incoming view."
|
|
731
|
+
},
|
|
732
|
+
{
|
|
733
|
+
"name": "data-nav-chrome-copy",
|
|
734
|
+
"on": "kui-nav-stack__chrome-copy",
|
|
735
|
+
"meaning": "Marks the inert, aria-hidden snapshot of the outgoing chrome shown during the cross-fade."
|
|
736
|
+
},
|
|
737
|
+
{
|
|
738
|
+
"name": "data-nav-exiting",
|
|
739
|
+
"on": "kui-nav-stack__view",
|
|
740
|
+
"meaning": "\"true\" on a popped view the helper briefly re-inserts to slide it out."
|
|
741
|
+
}
|
|
742
|
+
]
|
|
628
743
|
}
|
|
629
744
|
],
|
|
630
745
|
"publicClasses": [
|
|
631
746
|
"kui-split-view",
|
|
632
747
|
"kui-split-view__list",
|
|
633
|
-
"kui-resizable-region",
|
|
634
748
|
"kui-split-view__detail",
|
|
635
749
|
"kui-split-view--compact"
|
|
636
750
|
],
|
|
@@ -776,6 +890,7 @@
|
|
|
776
890
|
"slide, fade-slide, or instant content",
|
|
777
891
|
"clipped, scrolling, or popup-visible content",
|
|
778
892
|
"inline, overlay, or hidden responsive presentation",
|
|
893
|
+
"narrow or compact single-track responsive fill",
|
|
779
894
|
"safe-area restore control"
|
|
780
895
|
],
|
|
781
896
|
"accessibility": [
|
|
@@ -906,7 +1021,24 @@
|
|
|
906
1021
|
{
|
|
907
1022
|
"export": "wireSidebar",
|
|
908
1023
|
"import": "@kerfjs/ui/wire-sidebar",
|
|
909
|
-
"required": true
|
|
1024
|
+
"required": true,
|
|
1025
|
+
"stateAttributes": [
|
|
1026
|
+
{
|
|
1027
|
+
"name": "data-collapsible-responsive",
|
|
1028
|
+
"on": "the root passed to wireSidebar",
|
|
1029
|
+
"meaning": "With a deviceClass: \"inline\" on a wide device class, otherwise the compact presentation (\"overlay\" or \"hidden\"). Re-applied if a re-render drops it."
|
|
1030
|
+
},
|
|
1031
|
+
{
|
|
1032
|
+
"name": "data-collapsible-overlay",
|
|
1033
|
+
"on": "the root passed to wireSidebar",
|
|
1034
|
+
"meaning": "With a deviceClass on a compact device: \"true\" for the overlay presentation, \"false\" for hidden. Absent on a wide device class. Re-applied if a re-render drops it."
|
|
1035
|
+
},
|
|
1036
|
+
{
|
|
1037
|
+
"name": "data-morph-preserve",
|
|
1038
|
+
"on": "kui-collapsible-panel__backdrop",
|
|
1039
|
+
"meaning": "Keeps the injected compact-overlay backdrop through the application's re-render; the helper creates and removes the backdrop itself."
|
|
1040
|
+
}
|
|
1041
|
+
]
|
|
910
1042
|
}
|
|
911
1043
|
],
|
|
912
1044
|
"publicClasses": [
|
|
@@ -1032,13 +1164,19 @@
|
|
|
1032
1164
|
"appOwns": [
|
|
1033
1165
|
"actions",
|
|
1034
1166
|
"command availability",
|
|
1035
|
-
"responsive relocation"
|
|
1167
|
+
"responsive relocation",
|
|
1168
|
+
"which screen edges an app bar or bottom bar outside a Pane header or footer claims for device safe areas (safeAreaEdges)"
|
|
1036
1169
|
],
|
|
1037
1170
|
"variants": [
|
|
1038
1171
|
"bottom divider (default)",
|
|
1039
1172
|
"no dividers",
|
|
1040
1173
|
"top/right/bottom/left divider combinations",
|
|
1041
|
-
"centered content"
|
|
1174
|
+
"centered content",
|
|
1175
|
+
"stacked zones at compact or narrow widths",
|
|
1176
|
+
"content-driven wrap that keeps a heading title whole",
|
|
1177
|
+
"center priority for an expanded center control",
|
|
1178
|
+
"trailing groups wrap instead of clipping",
|
|
1179
|
+
"app bar or bottom bar claiming its screen edges (safeAreaEdges)"
|
|
1042
1180
|
],
|
|
1043
1181
|
"accessibility": [
|
|
1044
1182
|
"Supply a label when the toolbar needs an accessible name."
|
|
@@ -1048,7 +1186,8 @@
|
|
|
1048
1186
|
"border": "conditional",
|
|
1049
1187
|
"padding": "self",
|
|
1050
1188
|
"notes": [
|
|
1051
|
-
"Padding belongs to the toolbar; dividerSides selects any canonical combination of its physical top, right, bottom, and left edges."
|
|
1189
|
+
"Padding belongs to the toolbar; dividerSides selects any canonical combination of its physical top, right, bottom, and left edges.",
|
|
1190
|
+
"Safe areas: a Pane header or footer hands a sole Toolbar its inline edges; an app bar or bottom bar at a screen edge claims its sides with safeAreaEdges and pads each claimed side by the --kui-edge-inset-* context or the full device inset, while its box and dividers paint through."
|
|
1052
1191
|
]
|
|
1053
1192
|
},
|
|
1054
1193
|
"delivery": {
|
|
@@ -1082,17 +1221,19 @@
|
|
|
1082
1221
|
"category": "Structure",
|
|
1083
1222
|
"kind": "component",
|
|
1084
1223
|
"source": "kerf",
|
|
1085
|
-
"description": "Typed toolbar groups for
|
|
1224
|
+
"description": "Typed toolbar groups for buttons, semantic action links, compact mixed controls, selected states, dropdown surfaces, and avatar controls.",
|
|
1086
1225
|
"uses": [
|
|
1087
1226
|
"lucide-icon",
|
|
1088
1227
|
"segmented-control"
|
|
1089
1228
|
],
|
|
1090
|
-
"purpose": "
|
|
1229
|
+
"purpose": "Provide complete toolbar action geometry through configuration, including semantic anchors, overflow containment, and dropdown menu insets without application CSS.",
|
|
1091
1230
|
"publicExports": [
|
|
1231
|
+
"ToolbarActionLink",
|
|
1092
1232
|
"ToolbarControlGroup"
|
|
1093
1233
|
],
|
|
1094
1234
|
"useWhen": [
|
|
1095
1235
|
"Group related controls inside a toolbar with a supported visual treatment.",
|
|
1236
|
+
"Use ToolbarActionLink for navigation or external resources that must retain native anchor semantics inside a group.",
|
|
1096
1237
|
"Fill it with plain <button> controls (the group styles > button fully); use wa-button only for a Web Awesome feature such as a wa-dropdown popup trigger.",
|
|
1097
1238
|
"For an avatar control, set content=avatar and avatarImage instead of inserting an img; one button paints the group and multiple buttons paint only the pressed highlight."
|
|
1098
1239
|
],
|
|
@@ -1112,6 +1253,7 @@
|
|
|
1112
1253
|
],
|
|
1113
1254
|
"appOwns": [
|
|
1114
1255
|
"actions",
|
|
1256
|
+
"link destination and copy",
|
|
1115
1257
|
"pressed state",
|
|
1116
1258
|
"expanded state",
|
|
1117
1259
|
"avatar image URL"
|
|
@@ -1127,6 +1269,9 @@
|
|
|
1127
1269
|
"raised, filled, or outline selected chrome",
|
|
1128
1270
|
"brand, neutral, or pop selected tone",
|
|
1129
1271
|
"nested dropdown trigger",
|
|
1272
|
+
"standard, compact, or list-zero dropdown menu inset",
|
|
1273
|
+
"visible or horizontally scrollable overflow",
|
|
1274
|
+
"always visible or compact-only responsive visibility",
|
|
1130
1275
|
"avatar scrim",
|
|
1131
1276
|
"contained avatar background on a single group or selected multi-button highlight"
|
|
1132
1277
|
],
|
|
@@ -1147,6 +1292,7 @@
|
|
|
1147
1292
|
},
|
|
1148
1293
|
"wiring": [],
|
|
1149
1294
|
"publicClasses": [
|
|
1295
|
+
"kui-toolbar-action-link",
|
|
1150
1296
|
"kui-toolbar-control-group"
|
|
1151
1297
|
],
|
|
1152
1298
|
"publicTokens": [
|
|
@@ -1336,9 +1482,21 @@
|
|
|
1336
1482
|
"Render toolbar identity or heading text at a supported hierarchy size; pass headingLevel for heading semantics."
|
|
1337
1483
|
],
|
|
1338
1484
|
"avoidWhen": [
|
|
1339
|
-
"Do not omit headingLevel when the text is the page or section heading."
|
|
1485
|
+
"Do not omit headingLevel when the text is the page or section heading.",
|
|
1486
|
+
"Do not use a size below xlarge as a normal-color subsection title: large, default, and small are intentionally quiet toolbar identity text and have no tone option. Use Text with an h2-h6 variant for a content subsection title, or ListHeader for a list or menu section."
|
|
1487
|
+
],
|
|
1488
|
+
"alternatives": [
|
|
1489
|
+
{
|
|
1490
|
+
"id": "text",
|
|
1491
|
+
"relationship": "semantic-alternative",
|
|
1492
|
+
"when": "Use Text variant h2-h6 for a normal-color subsection title in content rather than toolbar identity."
|
|
1493
|
+
},
|
|
1494
|
+
{
|
|
1495
|
+
"id": "list-header",
|
|
1496
|
+
"relationship": "semantic-alternative",
|
|
1497
|
+
"when": "Use ListHeader for a list or menu section label with a count, badge, action, or disclosure."
|
|
1498
|
+
}
|
|
1340
1499
|
],
|
|
1341
|
-
"alternatives": [],
|
|
1342
1500
|
"appOwns": [
|
|
1343
1501
|
"text",
|
|
1344
1502
|
"responsive priority"
|
|
@@ -1370,8 +1528,10 @@
|
|
|
1370
1528
|
],
|
|
1371
1529
|
"publicTokens": [
|
|
1372
1530
|
"--kui-color-neutral-on-quiet",
|
|
1531
|
+
"--kui-color-text",
|
|
1532
|
+
"--kui-font-2xl",
|
|
1533
|
+
"--kui-font-l",
|
|
1373
1534
|
"--kui-font-m",
|
|
1374
|
-
"--kui-font-mono",
|
|
1375
1535
|
"--kui-font-s",
|
|
1376
1536
|
"--kui-font-xs"
|
|
1377
1537
|
],
|
|
@@ -1387,12 +1547,14 @@
|
|
|
1387
1547
|
"category": "Structure",
|
|
1388
1548
|
"kind": "component",
|
|
1389
1549
|
"source": "kerf",
|
|
1390
|
-
"description": "Semantic native paragraph text by default, with heading variants
|
|
1550
|
+
"description": "Semantic native paragraph text by default, with heading and inline-span variants plus composable semantic presentation roles.",
|
|
1391
1551
|
"uses": [],
|
|
1392
|
-
"purpose": "Render paragraph semantics by default
|
|
1393
|
-
"publicExports": [
|
|
1552
|
+
"purpose": "Render paragraph semantics by default, h1 through h6 when selected, or geometry-free inline secondary text as a span while independently configuring quiet or danger tone, compact size, or monospace font.",
|
|
1553
|
+
"publicExports": [
|
|
1554
|
+
"Text"
|
|
1555
|
+
],
|
|
1394
1556
|
"useWhen": [
|
|
1395
|
-
"Render ordinary application headings or paragraphs
|
|
1557
|
+
"Render ordinary application headings or paragraphs with native document semantics, or inline secondary text inside rows, labels, and table cells."
|
|
1396
1558
|
],
|
|
1397
1559
|
"avoidWhen": [
|
|
1398
1560
|
"Do not use Text for toolbar identity or title content; use ToolbarText inside a Toolbar zone.",
|
|
@@ -1417,13 +1579,13 @@
|
|
|
1417
1579
|
"document heading hierarchy"
|
|
1418
1580
|
],
|
|
1419
1581
|
"variants": [
|
|
1420
|
-
"p
|
|
1582
|
+
"p, h1 through h6, or inline span semantic variant",
|
|
1421
1583
|
"default, quiet, or danger tone",
|
|
1422
1584
|
"default or compact size",
|
|
1423
1585
|
"default or monospace font"
|
|
1424
1586
|
],
|
|
1425
1587
|
"accessibility": [
|
|
1426
|
-
"Text renders a native paragraph by default; choose an h1 through h6 variant by document outline rather than appearance.",
|
|
1588
|
+
"Text renders a native paragraph by default; choose an h1 through h6 variant by document outline rather than appearance, or span for inline secondary text.",
|
|
1427
1589
|
"Ordinary global, data, and ARIA attributes pass through to the native element.",
|
|
1428
1590
|
"Choose tone, size, and font independently of the heading level so appearance does not distort the document outline."
|
|
1429
1591
|
],
|
|
@@ -1432,16 +1594,20 @@
|
|
|
1432
1594
|
"border": "self",
|
|
1433
1595
|
"padding": "self",
|
|
1434
1596
|
"notes": [
|
|
1435
|
-
"Text
|
|
1597
|
+
"Block Text variants reset native margins and add a 1px transparent border plus the standard 8px item padding; span has no margin, border, or padding."
|
|
1436
1598
|
]
|
|
1437
1599
|
},
|
|
1438
1600
|
"delivery": {
|
|
1439
1601
|
"browserImport": "@kerfjs/ui/text",
|
|
1440
1602
|
"manualCssImport": "@kerfjs/ui/text.css",
|
|
1441
|
-
"sideEffects": [
|
|
1603
|
+
"sideEffects": [
|
|
1604
|
+
"browser-condition-css"
|
|
1605
|
+
]
|
|
1442
1606
|
},
|
|
1443
1607
|
"wiring": [],
|
|
1444
|
-
"publicClasses": [
|
|
1608
|
+
"publicClasses": [
|
|
1609
|
+
"kui-text"
|
|
1610
|
+
],
|
|
1445
1611
|
"publicTokens": [
|
|
1446
1612
|
"--kui-color-danger-text",
|
|
1447
1613
|
"--kui-color-text-quiet",
|
|
@@ -1457,7 +1623,7 @@
|
|
|
1457
1623
|
},
|
|
1458
1624
|
{
|
|
1459
1625
|
"id": "headers",
|
|
1460
|
-
"name": "
|
|
1626
|
+
"name": "Headers",
|
|
1461
1627
|
"category": "Structure",
|
|
1462
1628
|
"kind": "composition",
|
|
1463
1629
|
"source": "kerf",
|
|
@@ -1586,60 +1752,107 @@
|
|
|
1586
1752
|
{
|
|
1587
1753
|
"id": "row",
|
|
1588
1754
|
"name": "Row",
|
|
1589
|
-
|
|
1755
|
+
"category": "Structure",
|
|
1590
1756
|
"kind": "component",
|
|
1591
1757
|
"source": "kerf",
|
|
1592
1758
|
"description": "A horizontal flex row with physical-axis alignment, side-selectable text/control insets, a typed xs gap by default, flex participation, and opt-in wrapping.",
|
|
1593
1759
|
"uses": [],
|
|
1594
1760
|
"purpose": "Arrange related content horizontally with consistent spacing, optional physical-side text/control insets, and explicit left/center/right/full plus top/middle/bottom/full/baseline alignment instead of application-owned flex wrappers.",
|
|
1595
|
-
|
|
1761
|
+
"publicExports": [
|
|
1762
|
+
"Row"
|
|
1763
|
+
],
|
|
1596
1764
|
"cssValueProps": [
|
|
1597
1765
|
{
|
|
1598
1766
|
"path": "gap",
|
|
1599
1767
|
"grammar": "length",
|
|
1600
|
-
"helpers": [
|
|
1601
|
-
|
|
1602
|
-
|
|
1603
|
-
|
|
1604
|
-
|
|
1768
|
+
"helpers": [
|
|
1769
|
+
"px",
|
|
1770
|
+
"rem",
|
|
1771
|
+
"em",
|
|
1772
|
+
"pct",
|
|
1773
|
+
"space",
|
|
1774
|
+
"lengthVar",
|
|
1775
|
+
"calc"
|
|
1776
|
+
],
|
|
1777
|
+
"nonStandaloneHelpers": [
|
|
1778
|
+
"plus"
|
|
1779
|
+
],
|
|
1780
|
+
"shorthands": [
|
|
1781
|
+
"none",
|
|
1782
|
+
"2xs",
|
|
1783
|
+
"xs",
|
|
1784
|
+
"s",
|
|
1785
|
+
"m",
|
|
1786
|
+
"l",
|
|
1787
|
+
"xl"
|
|
1788
|
+
],
|
|
1789
|
+
"canonicalShorthands": [
|
|
1790
|
+
"none",
|
|
1791
|
+
"2xs",
|
|
1792
|
+
"xs",
|
|
1793
|
+
"m",
|
|
1794
|
+
"l"
|
|
1795
|
+
],
|
|
1796
|
+
"exceptionalShorthands": [
|
|
1797
|
+
"s",
|
|
1798
|
+
"xl"
|
|
1799
|
+
],
|
|
1605
1800
|
"rawPolicy": "forbid",
|
|
1606
|
-
"examples": [
|
|
1801
|
+
"examples": [
|
|
1802
|
+
"gap=\"xs\"",
|
|
1803
|
+
"gap={space(\"m\")}",
|
|
1804
|
+
"gap={calc(plus(rem(0.25), pct(10)))}"
|
|
1805
|
+
]
|
|
1607
1806
|
},
|
|
1608
1807
|
{
|
|
1609
1808
|
"path": "flex",
|
|
1610
1809
|
"grammar": "flex",
|
|
1611
|
-
"helpers": [
|
|
1612
|
-
|
|
1613
|
-
|
|
1810
|
+
"helpers": [
|
|
1811
|
+
"flex"
|
|
1812
|
+
],
|
|
1813
|
+
"shorthands": [
|
|
1814
|
+
"none",
|
|
1815
|
+
"auto",
|
|
1816
|
+
"initial"
|
|
1817
|
+
],
|
|
1818
|
+
"canonicalShorthands": [
|
|
1819
|
+
"none",
|
|
1820
|
+
"auto",
|
|
1821
|
+
"initial"
|
|
1822
|
+
],
|
|
1614
1823
|
"exceptionalShorthands": [],
|
|
1615
1824
|
"rawPolicy": "forbid",
|
|
1616
|
-
"examples": [
|
|
1825
|
+
"examples": [
|
|
1826
|
+
"flex",
|
|
1827
|
+
"flex=\"none\"",
|
|
1828
|
+
"flex={flex(1, 1, rem(20))}"
|
|
1829
|
+
]
|
|
1617
1830
|
}
|
|
1618
1831
|
],
|
|
1619
1832
|
"useWhen": [
|
|
1620
1833
|
"Arrange a group of sibling components horizontally.",
|
|
1621
1834
|
"Choose physical horizontal distribution and vertical alignment without writing one-off flex CSS.",
|
|
1622
1835
|
"Use a finite flex keyword or the flex() builder when Row participates in a flexible parent layout.",
|
|
1623
|
-
"Allow a bounded group to wrap while retaining the same typed gap and alignment contract."
|
|
1624
|
-
|
|
1836
|
+
"Allow a bounded group to wrap while retaining the same typed gap and alignment contract.",
|
|
1837
|
+
"Apply the standard text or control inset to selected physical sides without an application wrapper."
|
|
1625
1838
|
],
|
|
1626
1839
|
"avoidWhen": [
|
|
1627
1840
|
"Do not use Row when content belongs in a semantic list or when a named-zone component such as Toolbar owns the composition.",
|
|
1628
1841
|
"Do not pass raw CSS strings to gap or flex, mix their distinct grammars, or use s/xl spacing steps without a deliberate exception.",
|
|
1629
1842
|
"Do not use alignment to replace semantic grouping or responsive relocation."
|
|
1630
1843
|
],
|
|
1631
|
-
|
|
1632
|
-
|
|
1633
|
-
|
|
1634
|
-
|
|
1635
|
-
|
|
1636
|
-
|
|
1637
|
-
|
|
1638
|
-
|
|
1639
|
-
|
|
1640
|
-
|
|
1641
|
-
|
|
1642
|
-
|
|
1844
|
+
"alternatives": [
|
|
1845
|
+
{
|
|
1846
|
+
"id": "list",
|
|
1847
|
+
"relationship": "axis-alternative",
|
|
1848
|
+
"when": "Use List when the main layout axis is vertical."
|
|
1849
|
+
},
|
|
1850
|
+
{
|
|
1851
|
+
"id": "toolbar",
|
|
1852
|
+
"relationship": "semantic-alternative",
|
|
1853
|
+
"when": "Use Toolbar when content belongs to named leading, center, and trailing application-chrome zones."
|
|
1854
|
+
}
|
|
1855
|
+
],
|
|
1643
1856
|
"appOwns": [
|
|
1644
1857
|
"child semantics and content",
|
|
1645
1858
|
"alignment and wrapping policy",
|
|
@@ -1652,7 +1865,9 @@
|
|
|
1652
1865
|
"typed CssLength gap",
|
|
1653
1866
|
"boolean, finite-keyword, or typed CssFlex flex",
|
|
1654
1867
|
"nowrap or wrapping",
|
|
1655
|
-
"top/right/bottom/left text and control inset combinations"
|
|
1868
|
+
"top/right/bottom/left text and control inset combinations",
|
|
1869
|
+
"fill: the layout root fills a definite-height parent",
|
|
1870
|
+
"rootAttributes: safe data-* metadata on the root"
|
|
1656
1871
|
],
|
|
1657
1872
|
"accessibility": [
|
|
1658
1873
|
"Row adds layout only and no grouping role; children retain responsibility for native or ARIA semantics.",
|
|
@@ -1669,11 +1884,18 @@
|
|
|
1669
1884
|
"delivery": {
|
|
1670
1885
|
"browserImport": "@kerfjs/ui/row",
|
|
1671
1886
|
"manualCssImport": "@kerfjs/ui/row.css",
|
|
1672
|
-
"sideEffects": [
|
|
1887
|
+
"sideEffects": [
|
|
1888
|
+
"browser-condition-css"
|
|
1889
|
+
]
|
|
1673
1890
|
},
|
|
1674
1891
|
"wiring": [],
|
|
1675
|
-
"publicClasses": [
|
|
1676
|
-
|
|
1892
|
+
"publicClasses": [
|
|
1893
|
+
"kui-row"
|
|
1894
|
+
],
|
|
1895
|
+
"publicTokens": [
|
|
1896
|
+
"--kui-layout-item-gap",
|
|
1897
|
+
"--kui-row-gap"
|
|
1898
|
+
],
|
|
1677
1899
|
"links": {
|
|
1678
1900
|
"catalogRoute": "?component=row",
|
|
1679
1901
|
"documentation": "docs/layout.md",
|
|
@@ -1689,28 +1911,75 @@
|
|
|
1689
1911
|
"description": "A fixed positive number of evenly distributed minmax columns with a typed xs gap by default and optional flex participation.",
|
|
1690
1912
|
"uses": [],
|
|
1691
1913
|
"purpose": "Arrange related siblings in equal-width columns without repeating application-owned grid-template-columns CSS.",
|
|
1692
|
-
"publicExports": [
|
|
1914
|
+
"publicExports": [
|
|
1915
|
+
"Grid"
|
|
1916
|
+
],
|
|
1693
1917
|
"cssValueProps": [
|
|
1694
1918
|
{
|
|
1695
1919
|
"path": "gap",
|
|
1696
1920
|
"grammar": "length",
|
|
1697
|
-
"helpers": [
|
|
1698
|
-
|
|
1699
|
-
|
|
1700
|
-
|
|
1701
|
-
|
|
1921
|
+
"helpers": [
|
|
1922
|
+
"px",
|
|
1923
|
+
"rem",
|
|
1924
|
+
"em",
|
|
1925
|
+
"pct",
|
|
1926
|
+
"space",
|
|
1927
|
+
"lengthVar",
|
|
1928
|
+
"calc"
|
|
1929
|
+
],
|
|
1930
|
+
"nonStandaloneHelpers": [
|
|
1931
|
+
"plus"
|
|
1932
|
+
],
|
|
1933
|
+
"shorthands": [
|
|
1934
|
+
"none",
|
|
1935
|
+
"2xs",
|
|
1936
|
+
"xs",
|
|
1937
|
+
"s",
|
|
1938
|
+
"m",
|
|
1939
|
+
"l",
|
|
1940
|
+
"xl"
|
|
1941
|
+
],
|
|
1942
|
+
"canonicalShorthands": [
|
|
1943
|
+
"none",
|
|
1944
|
+
"2xs",
|
|
1945
|
+
"xs",
|
|
1946
|
+
"m",
|
|
1947
|
+
"l"
|
|
1948
|
+
],
|
|
1949
|
+
"exceptionalShorthands": [
|
|
1950
|
+
"s",
|
|
1951
|
+
"xl"
|
|
1952
|
+
],
|
|
1702
1953
|
"rawPolicy": "forbid",
|
|
1703
|
-
"examples": [
|
|
1954
|
+
"examples": [
|
|
1955
|
+
"gap=\"m\"",
|
|
1956
|
+
"gap={space(\"m\")}",
|
|
1957
|
+
"gap={calc(plus(rem(0.25), pct(10)))}"
|
|
1958
|
+
]
|
|
1704
1959
|
},
|
|
1705
1960
|
{
|
|
1706
1961
|
"path": "flex",
|
|
1707
1962
|
"grammar": "flex",
|
|
1708
|
-
"helpers": [
|
|
1709
|
-
|
|
1710
|
-
|
|
1963
|
+
"helpers": [
|
|
1964
|
+
"flex"
|
|
1965
|
+
],
|
|
1966
|
+
"shorthands": [
|
|
1967
|
+
"none",
|
|
1968
|
+
"auto",
|
|
1969
|
+
"initial"
|
|
1970
|
+
],
|
|
1971
|
+
"canonicalShorthands": [
|
|
1972
|
+
"none",
|
|
1973
|
+
"auto",
|
|
1974
|
+
"initial"
|
|
1975
|
+
],
|
|
1711
1976
|
"exceptionalShorthands": [],
|
|
1712
1977
|
"rawPolicy": "forbid",
|
|
1713
|
-
"examples": [
|
|
1978
|
+
"examples": [
|
|
1979
|
+
"flex",
|
|
1980
|
+
"flex=\"none\"",
|
|
1981
|
+
"flex={flex(1, 1, rem(20))}"
|
|
1982
|
+
]
|
|
1714
1983
|
}
|
|
1715
1984
|
],
|
|
1716
1985
|
"useWhen": [
|
|
@@ -1750,7 +2019,9 @@
|
|
|
1750
2019
|
"any positive safe-integer equal-track count",
|
|
1751
2020
|
"named none/2xs/xs/s/m/l/xl token gap",
|
|
1752
2021
|
"typed CssLength gap",
|
|
1753
|
-
"boolean, finite-keyword, or typed CssFlex flex"
|
|
2022
|
+
"boolean, finite-keyword, or typed CssFlex flex",
|
|
2023
|
+
"fill: the layout root fills a definite-height parent",
|
|
2024
|
+
"rootAttributes: safe data-* metadata on the root"
|
|
1754
2025
|
],
|
|
1755
2026
|
"accessibility": [
|
|
1756
2027
|
"Grid adds layout only and no grid role; children retain responsibility for native or ARIA semantics.",
|
|
@@ -1767,11 +2038,18 @@
|
|
|
1767
2038
|
"delivery": {
|
|
1768
2039
|
"browserImport": "@kerfjs/ui/grid",
|
|
1769
2040
|
"manualCssImport": "@kerfjs/ui/grid.css",
|
|
1770
|
-
"sideEffects": [
|
|
2041
|
+
"sideEffects": [
|
|
2042
|
+
"browser-condition-css"
|
|
2043
|
+
]
|
|
1771
2044
|
},
|
|
1772
2045
|
"wiring": [],
|
|
1773
|
-
"publicClasses": [
|
|
1774
|
-
|
|
2046
|
+
"publicClasses": [
|
|
2047
|
+
"kui-grid"
|
|
2048
|
+
],
|
|
2049
|
+
"publicTokens": [
|
|
2050
|
+
"--kui-grid-gap",
|
|
2051
|
+
"--kui-layout-item-gap"
|
|
2052
|
+
],
|
|
1775
2053
|
"links": {
|
|
1776
2054
|
"catalogRoute": "?component=grid",
|
|
1777
2055
|
"documentation": "docs/layout.md",
|
|
@@ -1787,29 +2065,92 @@
|
|
|
1787
2065
|
"description": "A decorative, non-shrinking fixed gap or flexible main-axis spacer with typed physical width and height.",
|
|
1788
2066
|
"uses": [],
|
|
1789
2067
|
"purpose": "Express an intentional empty dimension or consume remaining flex space without application-owned spacer markup or raw CSS lengths.",
|
|
1790
|
-
"publicExports": [
|
|
2068
|
+
"publicExports": [
|
|
2069
|
+
"Spacer"
|
|
2070
|
+
],
|
|
1791
2071
|
"cssValueProps": [
|
|
1792
2072
|
{
|
|
1793
2073
|
"path": "width",
|
|
1794
2074
|
"grammar": "length",
|
|
1795
|
-
"helpers": [
|
|
1796
|
-
|
|
1797
|
-
|
|
1798
|
-
|
|
1799
|
-
|
|
2075
|
+
"helpers": [
|
|
2076
|
+
"px",
|
|
2077
|
+
"rem",
|
|
2078
|
+
"em",
|
|
2079
|
+
"pct",
|
|
2080
|
+
"space",
|
|
2081
|
+
"lengthVar",
|
|
2082
|
+
"calc"
|
|
2083
|
+
],
|
|
2084
|
+
"nonStandaloneHelpers": [
|
|
2085
|
+
"plus"
|
|
2086
|
+
],
|
|
2087
|
+
"shorthands": [
|
|
2088
|
+
"none",
|
|
2089
|
+
"2xs",
|
|
2090
|
+
"xs",
|
|
2091
|
+
"s",
|
|
2092
|
+
"m",
|
|
2093
|
+
"l",
|
|
2094
|
+
"xl"
|
|
2095
|
+
],
|
|
2096
|
+
"canonicalShorthands": [
|
|
2097
|
+
"none",
|
|
2098
|
+
"2xs",
|
|
2099
|
+
"xs",
|
|
2100
|
+
"m",
|
|
2101
|
+
"l"
|
|
2102
|
+
],
|
|
2103
|
+
"exceptionalShorthands": [
|
|
2104
|
+
"s",
|
|
2105
|
+
"xl"
|
|
2106
|
+
],
|
|
1800
2107
|
"rawPolicy": "forbid",
|
|
1801
|
-
"examples": [
|
|
2108
|
+
"examples": [
|
|
2109
|
+
"width=\"m\"",
|
|
2110
|
+
"width={space(\"m\")}",
|
|
2111
|
+
"width={calc(plus(rem(0.25), pct(10)))}"
|
|
2112
|
+
]
|
|
1802
2113
|
},
|
|
1803
2114
|
{
|
|
1804
2115
|
"path": "height",
|
|
1805
2116
|
"grammar": "length",
|
|
1806
|
-
"helpers": [
|
|
1807
|
-
|
|
1808
|
-
|
|
1809
|
-
|
|
1810
|
-
|
|
2117
|
+
"helpers": [
|
|
2118
|
+
"px",
|
|
2119
|
+
"rem",
|
|
2120
|
+
"em",
|
|
2121
|
+
"pct",
|
|
2122
|
+
"space",
|
|
2123
|
+
"lengthVar",
|
|
2124
|
+
"calc"
|
|
2125
|
+
],
|
|
2126
|
+
"nonStandaloneHelpers": [
|
|
2127
|
+
"plus"
|
|
2128
|
+
],
|
|
2129
|
+
"shorthands": [
|
|
2130
|
+
"none",
|
|
2131
|
+
"2xs",
|
|
2132
|
+
"xs",
|
|
2133
|
+
"s",
|
|
2134
|
+
"m",
|
|
2135
|
+
"l",
|
|
2136
|
+
"xl"
|
|
2137
|
+
],
|
|
2138
|
+
"canonicalShorthands": [
|
|
2139
|
+
"none",
|
|
2140
|
+
"2xs",
|
|
2141
|
+
"xs",
|
|
2142
|
+
"m",
|
|
2143
|
+
"l"
|
|
2144
|
+
],
|
|
2145
|
+
"exceptionalShorthands": [
|
|
2146
|
+
"s",
|
|
2147
|
+
"xl"
|
|
2148
|
+
],
|
|
1811
2149
|
"rawPolicy": "forbid",
|
|
1812
|
-
"examples": [
|
|
2150
|
+
"examples": [
|
|
2151
|
+
"height=\"xs\"",
|
|
2152
|
+
"height={rem(1)}"
|
|
2153
|
+
]
|
|
1813
2154
|
}
|
|
1814
2155
|
],
|
|
1815
2156
|
"useWhen": [
|
|
@@ -1859,10 +2200,14 @@
|
|
|
1859
2200
|
"delivery": {
|
|
1860
2201
|
"browserImport": "@kerfjs/ui/spacer",
|
|
1861
2202
|
"manualCssImport": "@kerfjs/ui/spacer.css",
|
|
1862
|
-
"sideEffects": [
|
|
2203
|
+
"sideEffects": [
|
|
2204
|
+
"browser-condition-css"
|
|
2205
|
+
]
|
|
1863
2206
|
},
|
|
1864
2207
|
"wiring": [],
|
|
1865
|
-
"publicClasses": [
|
|
2208
|
+
"publicClasses": [
|
|
2209
|
+
"kui-spacer"
|
|
2210
|
+
],
|
|
1866
2211
|
"publicTokens": [],
|
|
1867
2212
|
"links": {
|
|
1868
2213
|
"catalogRoute": "?component=spacer",
|
|
@@ -1899,23 +2244,67 @@
|
|
|
1899
2244
|
{
|
|
1900
2245
|
"path": "gap",
|
|
1901
2246
|
"grammar": "length",
|
|
1902
|
-
"helpers": [
|
|
1903
|
-
|
|
1904
|
-
|
|
1905
|
-
|
|
1906
|
-
|
|
2247
|
+
"helpers": [
|
|
2248
|
+
"px",
|
|
2249
|
+
"rem",
|
|
2250
|
+
"em",
|
|
2251
|
+
"pct",
|
|
2252
|
+
"space",
|
|
2253
|
+
"lengthVar",
|
|
2254
|
+
"calc"
|
|
2255
|
+
],
|
|
2256
|
+
"nonStandaloneHelpers": [
|
|
2257
|
+
"plus"
|
|
2258
|
+
],
|
|
2259
|
+
"shorthands": [
|
|
2260
|
+
"none",
|
|
2261
|
+
"2xs",
|
|
2262
|
+
"xs",
|
|
2263
|
+
"s",
|
|
2264
|
+
"m",
|
|
2265
|
+
"l",
|
|
2266
|
+
"xl"
|
|
2267
|
+
],
|
|
2268
|
+
"canonicalShorthands": [
|
|
2269
|
+
"none",
|
|
2270
|
+
"2xs",
|
|
2271
|
+
"xs",
|
|
2272
|
+
"m",
|
|
2273
|
+
"l"
|
|
2274
|
+
],
|
|
2275
|
+
"exceptionalShorthands": [
|
|
2276
|
+
"s",
|
|
2277
|
+
"xl"
|
|
2278
|
+
],
|
|
1907
2279
|
"rawPolicy": "forbid",
|
|
1908
|
-
"examples": [
|
|
2280
|
+
"examples": [
|
|
2281
|
+
"gap=\"xs\"",
|
|
2282
|
+
"gap={rem(0.25)}",
|
|
2283
|
+
"gap={calc(plus(rem(0.25), pct(10)))}"
|
|
2284
|
+
]
|
|
1909
2285
|
},
|
|
1910
2286
|
{
|
|
1911
2287
|
"path": "flex",
|
|
1912
2288
|
"grammar": "flex",
|
|
1913
|
-
"helpers": [
|
|
1914
|
-
|
|
1915
|
-
|
|
2289
|
+
"helpers": [
|
|
2290
|
+
"flex"
|
|
2291
|
+
],
|
|
2292
|
+
"shorthands": [
|
|
2293
|
+
"none",
|
|
2294
|
+
"auto",
|
|
2295
|
+
"initial"
|
|
2296
|
+
],
|
|
2297
|
+
"canonicalShorthands": [
|
|
2298
|
+
"none",
|
|
2299
|
+
"auto",
|
|
2300
|
+
"initial"
|
|
2301
|
+
],
|
|
1916
2302
|
"exceptionalShorthands": [],
|
|
1917
2303
|
"rawPolicy": "forbid",
|
|
1918
|
-
"examples": [
|
|
2304
|
+
"examples": [
|
|
2305
|
+
"flex=\"none\"",
|
|
2306
|
+
"flex={flex(1, 1, rem(20))}"
|
|
2307
|
+
]
|
|
1919
2308
|
}
|
|
1920
2309
|
],
|
|
1921
2310
|
"useWhen": [
|
|
@@ -1923,8 +2312,8 @@
|
|
|
1923
2312
|
"Let one bounded list own vertical scrolling, flex growth, or one or more physical-edge dividers.",
|
|
1924
2313
|
"Choose a finite gap shorthand such as xs or m, or compose a typed length with @kerfjs/ui/css-values when the spacing scale is insufficient.",
|
|
1925
2314
|
"Use a finite flex keyword or the flex() builder when List participates in flexible layout.",
|
|
1926
|
-
"Apply the standard text or control inset to selected physical sides without an application wrapper."
|
|
1927
|
-
|
|
2315
|
+
"Apply the standard text or control inset to selected physical sides without an application wrapper.",
|
|
2316
|
+
"Align children horizontally or distribute them vertically with the same physical alignment vocabulary as Row."
|
|
1928
2317
|
],
|
|
1929
2318
|
"avoidWhen": [
|
|
1930
2319
|
"Do not use List as semantic list markup; use ul/ol when list semantics are required and apply layout deliberately.",
|
|
@@ -1947,7 +2336,9 @@
|
|
|
1947
2336
|
"left/center/right/full horizontal alignment",
|
|
1948
2337
|
"top/middle/bottom/full vertical alignment",
|
|
1949
2338
|
"top/right/bottom/left divider combinations",
|
|
1950
|
-
"top/right/bottom/left text and control inset combinations"
|
|
2339
|
+
"top/right/bottom/left text and control inset combinations",
|
|
2340
|
+
"fill: the layout root fills a definite-height parent",
|
|
2341
|
+
"rootAttributes: safe data-* metadata on the root"
|
|
1951
2342
|
],
|
|
1952
2343
|
"accessibility": [
|
|
1953
2344
|
"List adds layout only and no list role; children retain responsibility for their native or ARIA semantics.",
|
|
@@ -1992,11 +2383,12 @@
|
|
|
1992
2383
|
"source": "kerf",
|
|
1993
2384
|
"description": "Configurable section headings with full-width or shrink-wrapped inline presentation, semantic count/status indicators, density, group dividers, a logical-end action, disclosure states, and protected native-popover trigger metadata.",
|
|
1994
2385
|
"uses": [
|
|
2386
|
+
"badge",
|
|
1995
2387
|
"lucide-icon",
|
|
1996
2388
|
"disclosure-arrow",
|
|
1997
2389
|
"text"
|
|
1998
2390
|
],
|
|
1999
|
-
"purpose": "Fill the available section width by default, or shrink-wrap without outer geometry when inline, while splitting a dormant title and mutually exclusive semantic count or
|
|
2391
|
+
"purpose": "Fill the available section width by default, or shrink-wrap without outer geometry when inline, while splitting a dormant title and mutually exclusive semantic count or badge from an optional logical-end action with an 18px visual; disclosure mode renders the title cluster as a button with a default production DisclosureArrow.",
|
|
2000
2392
|
"publicExports": [
|
|
2001
2393
|
"ListHeader"
|
|
2002
2394
|
],
|
|
@@ -2055,16 +2447,12 @@
|
|
|
2055
2447
|
"kui-list-header",
|
|
2056
2448
|
"kui-list-header__action",
|
|
2057
2449
|
"kui-list-header__action-layer",
|
|
2058
|
-
"kui-list-header__badge",
|
|
2059
|
-
"kui-list-header__count",
|
|
2060
2450
|
"kui-list-header__label",
|
|
2061
2451
|
"kui-list-header__title",
|
|
2062
2452
|
"kui-list-header__toggle"
|
|
2063
2453
|
],
|
|
2064
2454
|
"publicTokens": [
|
|
2065
2455
|
"--kui-color-neutral-border-quiet",
|
|
2066
|
-
"--kui-color-neutral-fill-quiet",
|
|
2067
|
-
"--kui-color-neutral-on-quiet",
|
|
2068
2456
|
"--kui-focus-ring",
|
|
2069
2457
|
"--kui-font-xs",
|
|
2070
2458
|
"--kui-list-header-action-icon-size",
|
|
@@ -2072,15 +2460,8 @@
|
|
|
2072
2460
|
"--kui-layout-inline-margin",
|
|
2073
2461
|
"--kui-layout-item-gap",
|
|
2074
2462
|
"--kui-layout-item-padding",
|
|
2075
|
-
"--kui-layout-pill-radius",
|
|
2076
|
-
"--kui-list-header-count-font-size",
|
|
2077
2463
|
"--kui-list-header-hover-background",
|
|
2078
|
-
"--kui-list-group-divider-color"
|
|
2079
|
-
"--kui-color-brand-on-normal",
|
|
2080
|
-
"--kui-color-pop-fill-normal",
|
|
2081
|
-
"--kui-color-pop-on-normal",
|
|
2082
|
-
"--kui-color-danger-fill-normal",
|
|
2083
|
-
"--kui-color-danger-on-normal"
|
|
2464
|
+
"--kui-list-group-divider-color"
|
|
2084
2465
|
],
|
|
2085
2466
|
"links": {
|
|
2086
2467
|
"catalogRoute": "?component=list-header",
|
|
@@ -2112,7 +2493,9 @@
|
|
|
2112
2493
|
"canonicalShorthands": [],
|
|
2113
2494
|
"exceptionalShorthands": [],
|
|
2114
2495
|
"rawPolicy": "forbid",
|
|
2115
|
-
"examples": [
|
|
2496
|
+
"examples": [
|
|
2497
|
+
"className=\"app-row\""
|
|
2498
|
+
]
|
|
2116
2499
|
}
|
|
2117
2500
|
],
|
|
2118
2501
|
"useWhen": [
|
|
@@ -2238,7 +2621,9 @@
|
|
|
2238
2621
|
"canonicalShorthands": [],
|
|
2239
2622
|
"exceptionalShorthands": [],
|
|
2240
2623
|
"rawPolicy": "forbid",
|
|
2241
|
-
"examples": [
|
|
2624
|
+
"examples": [
|
|
2625
|
+
"className=\"app-row\""
|
|
2626
|
+
]
|
|
2242
2627
|
}
|
|
2243
2628
|
],
|
|
2244
2629
|
"useWhen": [
|
|
@@ -2443,7 +2828,7 @@
|
|
|
2443
2828
|
},
|
|
2444
2829
|
{
|
|
2445
2830
|
"id": "application-tabs",
|
|
2446
|
-
"name": "Application tabs
|
|
2831
|
+
"name": "Application tabs",
|
|
2447
2832
|
"category": "Navigation",
|
|
2448
2833
|
"kind": "composition",
|
|
2449
2834
|
"source": "kerf",
|
|
@@ -2451,7 +2836,9 @@
|
|
|
2451
2836
|
"uses": [
|
|
2452
2837
|
"tabs",
|
|
2453
2838
|
"tab-bar",
|
|
2454
|
-
"toolbar-control-group"
|
|
2839
|
+
"toolbar-control-group",
|
|
2840
|
+
"text",
|
|
2841
|
+
"wa-card"
|
|
2455
2842
|
],
|
|
2456
2843
|
"purpose": "Show AppTab and TabBar in a complete controlled composition.",
|
|
2457
2844
|
"publicExports": [],
|
|
@@ -2601,12 +2988,12 @@
|
|
|
2601
2988
|
"category": "Navigation",
|
|
2602
2989
|
"kind": "component",
|
|
2603
2990
|
"source": "kerf",
|
|
2604
|
-
"description": "Controlled tab strips with typed
|
|
2991
|
+
"description": "Controlled tab strips with typed presentation and allocation, a scroll-owning tab region, an optional adjacent trailing action, and a separately pinned far-edge end action.",
|
|
2605
2992
|
"uses": [
|
|
2606
2993
|
"tabs",
|
|
2607
2994
|
"toolbar-control-group"
|
|
2608
2995
|
],
|
|
2609
|
-
"purpose": "Controlled tab strips
|
|
2996
|
+
"purpose": "Controlled tab strips whose tabs shrink and scroll while fixed leading, trailing, and far-edge end actions remain visible.",
|
|
2610
2997
|
"publicExports": [
|
|
2611
2998
|
"TabBar",
|
|
2612
2999
|
"wireTabBars",
|
|
@@ -2647,7 +3034,8 @@
|
|
|
2647
3034
|
"reorderable",
|
|
2648
3035
|
"rail, segmented, and inspector presentation",
|
|
2649
3036
|
"intrinsic or fill allocation",
|
|
2650
|
-
"separate or adjacent trailing action"
|
|
3037
|
+
"separate or adjacent trailing action",
|
|
3038
|
+
"far-edge end action"
|
|
2651
3039
|
],
|
|
2652
3040
|
"accessibility": [
|
|
2653
3041
|
"Keep exactly one selected tab at tabindex 0 and preserve the wiring keyboard model."
|
|
@@ -2655,7 +3043,10 @@
|
|
|
2655
3043
|
"geometry": {
|
|
2656
3044
|
"margin": "none",
|
|
2657
3045
|
"border": "self",
|
|
2658
|
-
"padding": "self"
|
|
3046
|
+
"padding": "self",
|
|
3047
|
+
"notes": [
|
|
3048
|
+
"TabBar owns inline flex allocation: tabs shrink and scroll, an adjacent trailing action follows the tab strip, and the end action stays pinned at the far edge; leading, trailing, and end actions do not shrink."
|
|
3049
|
+
]
|
|
2659
3050
|
},
|
|
2660
3051
|
"delivery": {
|
|
2661
3052
|
"browserImport": "@kerfjs/ui/tab-bar",
|
|
@@ -2668,7 +3059,24 @@
|
|
|
2668
3059
|
{
|
|
2669
3060
|
"export": "wireTabBars",
|
|
2670
3061
|
"import": "@kerfjs/ui/wire-tab-bars",
|
|
2671
|
-
"required": true
|
|
3062
|
+
"required": true,
|
|
3063
|
+
"stateAttributes": [
|
|
3064
|
+
{
|
|
3065
|
+
"name": "data-tab-dragging",
|
|
3066
|
+
"on": "AppTab (data-component=\"app-tab\")",
|
|
3067
|
+
"meaning": "\"true\" on the tab being dragged."
|
|
3068
|
+
},
|
|
3069
|
+
{
|
|
3070
|
+
"name": "data-tab-drop-position",
|
|
3071
|
+
"on": "AppTab (data-component=\"app-tab\")",
|
|
3072
|
+
"meaning": "\"before\" or \"after\" on the tab under the pointer: where the dragged tab would land."
|
|
3073
|
+
},
|
|
3074
|
+
{
|
|
3075
|
+
"name": "data-tab-autoscroll",
|
|
3076
|
+
"on": "kui-tab-bar__tabs",
|
|
3077
|
+
"meaning": "\"start\" or \"end\" while a drag near that edge auto-scrolls the strip."
|
|
3078
|
+
}
|
|
3079
|
+
]
|
|
2672
3080
|
},
|
|
2673
3081
|
{
|
|
2674
3082
|
"export": "reorderTabs",
|
|
@@ -2680,7 +3088,8 @@
|
|
|
2680
3088
|
"kui-tab-bar",
|
|
2681
3089
|
"kui-tab-bar__leading",
|
|
2682
3090
|
"kui-tab-bar__tabs",
|
|
2683
|
-
"kui-tab-bar__trailing"
|
|
3091
|
+
"kui-tab-bar__trailing",
|
|
3092
|
+
"kui-tab-bar__end"
|
|
2684
3093
|
],
|
|
2685
3094
|
"publicTokens": [
|
|
2686
3095
|
"--kui-tab-bar-background",
|
|
@@ -2871,7 +3280,19 @@
|
|
|
2871
3280
|
{
|
|
2872
3281
|
"export": "wireTokenSearchFields",
|
|
2873
3282
|
"import": "@kerfjs/ui/wire-token-search-fields",
|
|
2874
|
-
"required": true
|
|
3283
|
+
"required": true,
|
|
3284
|
+
"stateAttributes": [
|
|
3285
|
+
{
|
|
3286
|
+
"name": "data-token-search-text",
|
|
3287
|
+
"on": "the text span inside kui-token-search__editor",
|
|
3288
|
+
"meaning": "Marks the plain-text span the helper inserts when the editor is emptied."
|
|
3289
|
+
},
|
|
3290
|
+
{
|
|
3291
|
+
"name": "data-empty",
|
|
3292
|
+
"on": "the text span inside kui-token-search__editor",
|
|
3293
|
+
"meaning": "\"true\" on that span while it holds no text."
|
|
3294
|
+
}
|
|
3295
|
+
]
|
|
2875
3296
|
}
|
|
2876
3297
|
],
|
|
2877
3298
|
"publicClasses": [
|
|
@@ -2985,7 +3406,19 @@
|
|
|
2985
3406
|
{
|
|
2986
3407
|
"export": "wireResizableRegions",
|
|
2987
3408
|
"import": "@kerfjs/ui/wire-resizable-regions",
|
|
2988
|
-
"required": true
|
|
3409
|
+
"required": true,
|
|
3410
|
+
"stateAttributes": [
|
|
3411
|
+
{
|
|
3412
|
+
"name": "data-handle-inset",
|
|
3413
|
+
"on": "kui-resizable-region",
|
|
3414
|
+
"meaning": "Present while a clipping edge clamps the region: the handle and its focus ring sit inside the region instead of overhanging that edge."
|
|
3415
|
+
},
|
|
3416
|
+
{
|
|
3417
|
+
"name": "data-resizing",
|
|
3418
|
+
"on": "kui-resizable-region",
|
|
3419
|
+
"meaning": "\"true\" during an active pointer drag of the handle."
|
|
3420
|
+
}
|
|
3421
|
+
]
|
|
2989
3422
|
},
|
|
2990
3423
|
{
|
|
2991
3424
|
"export": "clampRegionSize",
|
|
@@ -3011,6 +3444,7 @@
|
|
|
3011
3444
|
"--kui-color-text-link",
|
|
3012
3445
|
"--kui-focus-ring",
|
|
3013
3446
|
"--kui-radius-s",
|
|
3447
|
+
"--kui-resizable-region-edge-extent",
|
|
3014
3448
|
"--kui-resizable-region-handle-active-color",
|
|
3015
3449
|
"--kui-resizable-region-handle-color",
|
|
3016
3450
|
"--kui-resizable-region-overlay-z",
|
|
@@ -3042,23 +3476,27 @@
|
|
|
3042
3476
|
"publicExports": [
|
|
3043
3477
|
"Select",
|
|
3044
3478
|
"uiColor",
|
|
3045
|
-
"colorVar"
|
|
3479
|
+
"colorVar",
|
|
3480
|
+
"foregroundColorVar"
|
|
3046
3481
|
],
|
|
3047
3482
|
"cssValueProps": [
|
|
3048
3483
|
{
|
|
3049
3484
|
"path": "choices[].color",
|
|
3050
3485
|
"grammar": "color",
|
|
3051
|
-
"helpers": [
|
|
3486
|
+
"helpers": [
|
|
3487
|
+
"uiColor",
|
|
3488
|
+
"foregroundColorVar"
|
|
3489
|
+
],
|
|
3052
3490
|
"shorthands": [],
|
|
3053
3491
|
"canonicalShorthands": [],
|
|
3054
3492
|
"exceptionalShorthands": [],
|
|
3055
3493
|
"rawPolicy": "forbid",
|
|
3056
|
-
"examples": ["color: uiColor(\"success\")", "color:
|
|
3494
|
+
"examples": ["color: uiColor(\"success-on-quiet\")", "color: foregroundColorVar(\"--app-choice-color\")"]
|
|
3057
3495
|
}
|
|
3058
3496
|
],
|
|
3059
3497
|
"useWhen": [
|
|
3060
3498
|
"Choose a controlled value from a moderate or long list, including grouped and icon-bearing choices.",
|
|
3061
|
-
"Color an optional choice icon with uiColor() or
|
|
3499
|
+
"Color an optional choice icon with a CssForegroundColor: uiColor() with a foreground token such as success-on-quiet, or foregroundColorVar() for an app-owned property. Fill tokens such as success are backgrounds that leave the icon nearly invisible, so they, lengths, raw color strings, and unqualified colorVar() values are rejected."
|
|
3062
3500
|
],
|
|
3063
3501
|
"avoidWhen": [
|
|
3064
3502
|
"Do not use for commands or a small choice set that should stay visible."
|
|
@@ -3146,7 +3584,7 @@
|
|
|
3146
3584
|
},
|
|
3147
3585
|
{
|
|
3148
3586
|
"id": "feedback",
|
|
3149
|
-
"name": "Feedback
|
|
3587
|
+
"name": "Feedback",
|
|
3150
3588
|
"category": "Feedback",
|
|
3151
3589
|
"kind": "composition",
|
|
3152
3590
|
"source": "kerf",
|
|
@@ -3223,6 +3661,7 @@
|
|
|
3223
3661
|
"source": "kerf",
|
|
3224
3662
|
"description": "Polite status and assertive alert feedback with semantic tones, plus non-status pop emphasis for featured or novel content.",
|
|
3225
3663
|
"uses": [
|
|
3664
|
+
"badge",
|
|
3226
3665
|
"lucide-icon"
|
|
3227
3666
|
],
|
|
3228
3667
|
"purpose": "Present persistent inline feedback or attractive non-status emphasis with a named semantic tone.",
|
|
@@ -3289,7 +3728,6 @@
|
|
|
3289
3728
|
"publicClasses": [
|
|
3290
3729
|
"kui-state-banner",
|
|
3291
3730
|
"kui-state-banner__action",
|
|
3292
|
-
"kui-state-banner__badge",
|
|
3293
3731
|
"kui-state-banner__copy",
|
|
3294
3732
|
"kui-state-banner__detail",
|
|
3295
3733
|
"kui-state-banner__icon"
|
|
@@ -3321,8 +3759,6 @@
|
|
|
3321
3759
|
"--kui-state-banner-action-background",
|
|
3322
3760
|
"--kui-state-banner-action-hover-background",
|
|
3323
3761
|
"--kui-state-banner-background",
|
|
3324
|
-
"--kui-state-banner-badge-background",
|
|
3325
|
-
"--kui-state-banner-badge-foreground",
|
|
3326
3762
|
"--kui-state-banner-border",
|
|
3327
3763
|
"--kui-state-banner-danger-background",
|
|
3328
3764
|
"--kui-state-banner-danger-border",
|
|
@@ -3511,35 +3947,92 @@
|
|
|
3511
3947
|
{
|
|
3512
3948
|
"path": "width",
|
|
3513
3949
|
"grammar": "size",
|
|
3514
|
-
"helpers": [
|
|
3515
|
-
|
|
3516
|
-
|
|
3517
|
-
|
|
3950
|
+
"helpers": [
|
|
3951
|
+
"px",
|
|
3952
|
+
"rem",
|
|
3953
|
+
"em",
|
|
3954
|
+
"pct",
|
|
3955
|
+
"space",
|
|
3956
|
+
"lengthVar",
|
|
3957
|
+
"calc"
|
|
3958
|
+
],
|
|
3959
|
+
"nonStandaloneHelpers": [
|
|
3960
|
+
"plus"
|
|
3961
|
+
],
|
|
3962
|
+
"shorthands": [
|
|
3963
|
+
"auto",
|
|
3964
|
+
"min-content",
|
|
3965
|
+
"max-content",
|
|
3966
|
+
"fit-content"
|
|
3967
|
+
],
|
|
3968
|
+
"canonicalShorthands": [
|
|
3969
|
+
"auto",
|
|
3970
|
+
"min-content",
|
|
3971
|
+
"max-content",
|
|
3972
|
+
"fit-content"
|
|
3973
|
+
],
|
|
3518
3974
|
"exceptionalShorthands": [],
|
|
3519
3975
|
"rawPolicy": "forbid",
|
|
3520
|
-
"examples": [
|
|
3976
|
+
"examples": [
|
|
3977
|
+
"width={em(12)}",
|
|
3978
|
+
"width=\"fit-content\""
|
|
3979
|
+
]
|
|
3521
3980
|
},
|
|
3522
3981
|
{
|
|
3523
3982
|
"path": "height",
|
|
3524
3983
|
"grammar": "size",
|
|
3525
|
-
"helpers": [
|
|
3526
|
-
|
|
3527
|
-
|
|
3528
|
-
|
|
3984
|
+
"helpers": [
|
|
3985
|
+
"px",
|
|
3986
|
+
"rem",
|
|
3987
|
+
"em",
|
|
3988
|
+
"pct",
|
|
3989
|
+
"space",
|
|
3990
|
+
"lengthVar",
|
|
3991
|
+
"calc"
|
|
3992
|
+
],
|
|
3993
|
+
"nonStandaloneHelpers": [
|
|
3994
|
+
"plus"
|
|
3995
|
+
],
|
|
3996
|
+
"shorthands": [
|
|
3997
|
+
"auto",
|
|
3998
|
+
"min-content",
|
|
3999
|
+
"max-content",
|
|
4000
|
+
"fit-content"
|
|
4001
|
+
],
|
|
4002
|
+
"canonicalShorthands": [
|
|
4003
|
+
"auto",
|
|
4004
|
+
"min-content",
|
|
4005
|
+
"max-content",
|
|
4006
|
+
"fit-content"
|
|
4007
|
+
],
|
|
3529
4008
|
"exceptionalShorthands": [],
|
|
3530
4009
|
"rawPolicy": "forbid",
|
|
3531
|
-
"examples": [
|
|
4010
|
+
"examples": [
|
|
4011
|
+
"height={em(1.5)}"
|
|
4012
|
+
]
|
|
3532
4013
|
},
|
|
3533
4014
|
{
|
|
3534
4015
|
"path": "radius",
|
|
3535
4016
|
"grammar": "length",
|
|
3536
|
-
"helpers": [
|
|
3537
|
-
|
|
4017
|
+
"helpers": [
|
|
4018
|
+
"px",
|
|
4019
|
+
"rem",
|
|
4020
|
+
"em",
|
|
4021
|
+
"pct",
|
|
4022
|
+
"space",
|
|
4023
|
+
"lengthVar",
|
|
4024
|
+
"calc"
|
|
4025
|
+
],
|
|
4026
|
+
"nonStandaloneHelpers": [
|
|
4027
|
+
"plus"
|
|
4028
|
+
],
|
|
3538
4029
|
"shorthands": [],
|
|
3539
4030
|
"canonicalShorthands": [],
|
|
3540
4031
|
"exceptionalShorthands": [],
|
|
3541
4032
|
"rawPolicy": "forbid",
|
|
3542
|
-
"examples": [
|
|
4033
|
+
"examples": [
|
|
4034
|
+
"radius={px(999)}"
|
|
4035
|
+
]
|
|
3543
4036
|
}
|
|
3544
4037
|
],
|
|
3545
4038
|
"useWhen": [
|
|
@@ -6353,13 +6846,17 @@
|
|
|
6353
6846
|
"source": "kerf",
|
|
6354
6847
|
"purpose": "Toolbar, navigation, content, and inspector shell with controlled resizing and explicit pane scroll owners.",
|
|
6355
6848
|
"uses": [
|
|
6849
|
+
"pane",
|
|
6356
6850
|
"toolbar",
|
|
6357
6851
|
"toolbar-text",
|
|
6358
6852
|
"toolbar-control-group",
|
|
6853
|
+
"row",
|
|
6854
|
+
"grid",
|
|
6855
|
+
"resize",
|
|
6359
6856
|
"list-header",
|
|
6360
6857
|
"list-item",
|
|
6361
|
-
"resize",
|
|
6362
6858
|
"value-table",
|
|
6859
|
+
"lucide-icon",
|
|
6363
6860
|
"layout"
|
|
6364
6861
|
],
|
|
6365
6862
|
"useWhen": [
|
|
@@ -6396,10 +6893,15 @@
|
|
|
6396
6893
|
"source": "kerf",
|
|
6397
6894
|
"purpose": "Navigation sections with icon and iconless rows, a content-item surface, disclosure, and pane footer actions.",
|
|
6398
6895
|
"uses": [
|
|
6896
|
+
"pane",
|
|
6399
6897
|
"list-header",
|
|
6400
6898
|
"list-item",
|
|
6899
|
+
"list",
|
|
6900
|
+
"text",
|
|
6401
6901
|
"toolbar",
|
|
6402
|
-
"toolbar-control-group"
|
|
6902
|
+
"toolbar-control-group",
|
|
6903
|
+
"lucide-icon",
|
|
6904
|
+
"layout"
|
|
6403
6905
|
],
|
|
6404
6906
|
"useWhen": [
|
|
6405
6907
|
"A workspace sidebar needs the shared toolbar/content/footer pane model, 24px major section rhythm, and 44px row and utility-action targets."
|
|
@@ -6438,6 +6940,9 @@
|
|
|
6438
6940
|
"toolbar",
|
|
6439
6941
|
"toolbar-control-group",
|
|
6440
6942
|
"toolbar-text",
|
|
6943
|
+
"list",
|
|
6944
|
+
"list-inset-text",
|
|
6945
|
+
"text",
|
|
6441
6946
|
"state-banner",
|
|
6442
6947
|
"layout"
|
|
6443
6948
|
],
|
|
@@ -6473,14 +6978,17 @@
|
|
|
6473
6978
|
"category": "Recipes",
|
|
6474
6979
|
"kind": "recipe",
|
|
6475
6980
|
"source": "kerf",
|
|
6476
|
-
"purpose": "Production modal
|
|
6981
|
+
"purpose": "Production modal whose labeled Web Awesome header frames a SplitView record list and ValueTable detail, becoming a full-screen drill-down on compact devices.",
|
|
6477
6982
|
"uses": [
|
|
6478
|
-
"
|
|
6479
|
-
"
|
|
6480
|
-
"
|
|
6983
|
+
"surface-scaffold",
|
|
6984
|
+
"split-view",
|
|
6985
|
+
"nav-stack",
|
|
6986
|
+
"row",
|
|
6987
|
+
"list",
|
|
6481
6988
|
"list-header",
|
|
6482
6989
|
"list-item",
|
|
6483
6990
|
"value-table",
|
|
6991
|
+
"lucide-icon",
|
|
6484
6992
|
"wa-dialog",
|
|
6485
6993
|
"wa-button"
|
|
6486
6994
|
],
|
|
@@ -6493,11 +7001,12 @@
|
|
|
6493
7001
|
"appOwns": [
|
|
6494
7002
|
"open state",
|
|
6495
7003
|
"selected record",
|
|
7004
|
+
"pushed compact detail",
|
|
6496
7005
|
"dismiss policy",
|
|
6497
7006
|
"record actions"
|
|
6498
7007
|
],
|
|
6499
7008
|
"accessibility": [
|
|
6500
|
-
"Web Awesome owns modal focus and
|
|
7009
|
+
"Web Awesome owns modal focus, Escape, and the labeled header with its close control; the application adapter restores the invoking control after hide, and the compact NavStack back control returns to the list."
|
|
6501
7010
|
],
|
|
6502
7011
|
"delivery": {
|
|
6503
7012
|
"sideEffects": [
|
|
@@ -6520,8 +7029,11 @@
|
|
|
6520
7029
|
"purpose": "One visible publishing-form surface with Toolbar heading hierarchy, fields and actions on the shared 8px control gutter, 24px major rhythm, and a conditional StateBanner as its only nested semantic surface.",
|
|
6521
7030
|
"uses": [
|
|
6522
7031
|
"toolbar",
|
|
6523
|
-
"toolbar-control-group",
|
|
6524
7032
|
"toolbar-text",
|
|
7033
|
+
"list",
|
|
7034
|
+
"list-inset-text",
|
|
7035
|
+
"text",
|
|
7036
|
+
"row",
|
|
6525
7037
|
"select",
|
|
6526
7038
|
"state-banner",
|
|
6527
7039
|
"wa-input",
|
|
@@ -6564,9 +7076,12 @@
|
|
|
6564
7076
|
"source": "kerf",
|
|
6565
7077
|
"purpose": "Deterministic loading, empty, populated, stale refresh, and error states around one stable list workspace.",
|
|
6566
7078
|
"uses": [
|
|
7079
|
+
"pane",
|
|
6567
7080
|
"toolbar",
|
|
6568
7081
|
"toolbar-control-group",
|
|
6569
7082
|
"toolbar-text",
|
|
7083
|
+
"list-item",
|
|
7084
|
+
"row",
|
|
6570
7085
|
"state-banner",
|
|
6571
7086
|
"empty-state",
|
|
6572
7087
|
"loading-spinner",
|
|
@@ -6611,7 +7126,11 @@
|
|
|
6611
7126
|
"toolbar-control-group",
|
|
6612
7127
|
"segmented-control",
|
|
6613
7128
|
"select",
|
|
6614
|
-
"lucide-icon"
|
|
7129
|
+
"lucide-icon",
|
|
7130
|
+
"grid",
|
|
7131
|
+
"list",
|
|
7132
|
+
"list-inset-text",
|
|
7133
|
+
"text"
|
|
6615
7134
|
],
|
|
6616
7135
|
"useWhen": [
|
|
6617
7136
|
"A dense workspace toolbar mixes a few distinct control semantics."
|
|
@@ -6648,8 +7167,12 @@
|
|
|
6648
7167
|
"source": "kerf",
|
|
6649
7168
|
"purpose": "A push/pop navigation stack drill-down with animated slides and a live device class.",
|
|
6650
7169
|
"uses": [
|
|
7170
|
+
"nav-stack",
|
|
7171
|
+
"list",
|
|
6651
7172
|
"list-header",
|
|
6652
7173
|
"list-item",
|
|
7174
|
+
"row",
|
|
7175
|
+
"text",
|
|
6653
7176
|
"lucide-icon",
|
|
6654
7177
|
"layout"
|
|
6655
7178
|
],
|
|
@@ -6687,9 +7210,13 @@
|
|
|
6687
7210
|
"source": "kerf",
|
|
6688
7211
|
"purpose": "A record inspector whose per-record values load asynchronously — every value-bearing component takes a shared placeholder flag, so the same chrome renders a faithful loading state and then the populated record.",
|
|
6689
7212
|
"uses": [
|
|
7213
|
+
"pane",
|
|
6690
7214
|
"toolbar",
|
|
6691
7215
|
"toolbar-control-group",
|
|
6692
7216
|
"toolbar-text",
|
|
7217
|
+
"list-inset-text",
|
|
7218
|
+
"text",
|
|
7219
|
+
"list",
|
|
6693
7220
|
"value-table",
|
|
6694
7221
|
"select",
|
|
6695
7222
|
"segmented-control",
|
|
@@ -6732,11 +7259,20 @@
|
|
|
6732
7259
|
"source": "kerf",
|
|
6733
7260
|
"purpose": "A mini app frame whose left navigation rail and bottom activity drawer are standalone CollapsiblePanels driven by wireSidebar: per-side collapse/expand toggles, focus move-in and restore, a dismissable compact overlay, and per-panel persistence.",
|
|
6734
7261
|
"uses": [
|
|
7262
|
+
"collapsible-panel",
|
|
7263
|
+
"pane",
|
|
7264
|
+
"row",
|
|
7265
|
+
"list",
|
|
7266
|
+
"grid",
|
|
6735
7267
|
"list-header",
|
|
6736
7268
|
"list-item",
|
|
7269
|
+
"text",
|
|
6737
7270
|
"toolbar",
|
|
6738
7271
|
"toolbar-control-group",
|
|
6739
|
-
"toolbar-text"
|
|
7272
|
+
"toolbar-text",
|
|
7273
|
+
"value-table",
|
|
7274
|
+
"lucide-icon",
|
|
7275
|
+
"layout"
|
|
6740
7276
|
],
|
|
6741
7277
|
"useWhen": [
|
|
6742
7278
|
"A rail or drawer must collapse and expand outside a full Workbench shell, keeping the app's collapsed signals, sizes, and content while the wire owns toggle, focus, the compact overlay, and persistence."
|