@kerfjs/ui 5.0.0-beta.55 → 5.0.0-beta.56
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 +12 -10
- package/ai/compile-time-contracts-v1.json +2 -2
- package/ai/component-catalog-v2.json +149 -39
- package/ai/component-catalog.json +202 -51
- package/ai/public-api-signatures-v1.md +439 -97
- package/ai/skill.md +43 -40
- package/ai/webawesome-jsx-signatures-v1.md +8 -2
- package/dist/app-tab.js +1 -1
- package/dist/badge.d.ts +35 -7
- package/dist/badge.js +1 -1
- package/dist/browser/content-item.js +3 -0
- package/dist/browser/select.js +1 -0
- package/dist/catalog-resources.d.ts +12 -1
- package/dist/catalog.d.ts +14 -3
- package/dist/catalog.js +52 -43
- package/dist/catalog.js.map +1 -1
- package/dist/{chunk-WZ2GLEY4.js → chunk-2G2ZJQYK.js} +2 -14
- package/dist/chunk-2G2ZJQYK.js.map +1 -0
- package/dist/{chunk-D7GWXIAS.js → chunk-5I7QGQVT.js} +1 -1
- package/dist/chunk-5I7QGQVT.js.map +1 -0
- package/dist/{chunk-RNRUVPJ3.js → chunk-63ZWBGE3.js} +3 -2
- package/dist/chunk-63ZWBGE3.js.map +1 -0
- package/dist/{chunk-44IG7PFV.js → chunk-6CINWX2E.js} +3 -3
- package/dist/{chunk-44IG7PFV.js.map → chunk-6CINWX2E.js.map} +1 -1
- package/dist/{chunk-C2FAYFDE.js → chunk-AGXQQFKZ.js} +2 -2
- package/dist/{chunk-C2FAYFDE.js.map → chunk-AGXQQFKZ.js.map} +1 -1
- package/dist/{chunk-ATHXW6RP.js → chunk-AHEG27M7.js} +2 -2
- package/dist/{chunk-ATHXW6RP.js.map → chunk-AHEG27M7.js.map} +1 -1
- package/dist/{chunk-7GUQYHKA.js → chunk-AK67F6QN.js} +4 -1
- package/dist/chunk-AK67F6QN.js.map +1 -0
- package/dist/chunk-BFPBS5Y4.js +250 -0
- package/dist/chunk-BFPBS5Y4.js.map +1 -0
- package/dist/{chunk-5OLVUEND.js → chunk-DG6G5EPF.js} +4 -6
- package/dist/chunk-DG6G5EPF.js.map +1 -0
- package/dist/{chunk-MTM43SJO.js → chunk-G33XC2NB.js} +1 -1
- package/dist/chunk-G33XC2NB.js.map +1 -0
- package/dist/{chunk-TZ5IHWB2.js → chunk-K6UNVKDK.js} +3 -3
- package/dist/{chunk-TZ5IHWB2.js.map → chunk-K6UNVKDK.js.map} +1 -1
- package/dist/{chunk-HMQ2ZDGG.js → chunk-KROD7KZK.js} +3 -2
- package/dist/chunk-KROD7KZK.js.map +1 -0
- package/dist/{chunk-5NDQABWK.js → chunk-M7QV3IHH.js} +3 -1
- package/dist/chunk-M7QV3IHH.js.map +1 -0
- package/dist/{chunk-RNZAKSME.js → chunk-MA6Z6EIM.js} +3 -3
- package/dist/{chunk-RNZAKSME.js.map → chunk-MA6Z6EIM.js.map} +1 -1
- package/dist/chunk-MA73TA6D.js +42 -0
- package/dist/chunk-MA73TA6D.js.map +1 -0
- package/dist/{chunk-ZMBU522F.js → chunk-MEY33VWB.js} +2 -2
- package/dist/{chunk-ZMBU522F.js.map → chunk-MEY33VWB.js.map} +1 -1
- package/dist/{chunk-T22EM4ET.js → chunk-MOBRFZH3.js} +81 -31
- package/dist/chunk-MOBRFZH3.js.map +1 -0
- package/dist/chunk-MP2GDBQZ.js +50 -0
- package/dist/chunk-MP2GDBQZ.js.map +1 -0
- package/dist/{chunk-3NBL3OUQ.js → chunk-NAPE7WUS.js} +2 -2
- package/dist/chunk-NAPE7WUS.js.map +1 -0
- package/dist/{chunk-BSKEH3UC.js → chunk-NBYTIVHS.js} +2 -2
- package/dist/{chunk-BSKEH3UC.js.map → chunk-NBYTIVHS.js.map} +1 -1
- package/dist/chunk-O3EXIBEZ.js +114 -0
- package/dist/chunk-O3EXIBEZ.js.map +1 -0
- package/dist/{chunk-R754MHXX.js → chunk-PK4N5QTO.js} +7 -6
- package/dist/chunk-PK4N5QTO.js.map +1 -0
- package/dist/{chunk-EAX2GSS4.js → chunk-QQOTQTDD.js} +51 -20
- package/dist/chunk-QQOTQTDD.js.map +1 -0
- package/dist/{chunk-LZXQVUGN.js → chunk-T4UZTNZ4.js} +4 -4
- package/dist/{chunk-LZXQVUGN.js.map → chunk-T4UZTNZ4.js.map} +1 -1
- package/dist/{chunk-N7FHFNT6.js → chunk-V65EOWNF.js} +33 -5
- package/dist/chunk-V65EOWNF.js.map +1 -0
- package/dist/{chunk-GUIHMIT2.js → chunk-VNPQDCQZ.js} +3 -3
- package/dist/{chunk-GUIHMIT2.js.map → chunk-VNPQDCQZ.js.map} +1 -1
- package/dist/{chunk-5I22LMCV.js → chunk-VZOFZPSO.js} +2 -2
- package/dist/chunk-VZOFZPSO.js.map +1 -0
- package/dist/{chunk-4BIMLITI.js → chunk-WLG6SSNT.js} +5 -3
- package/dist/chunk-WLG6SSNT.js.map +1 -0
- package/dist/{chunk-NE5JAOQS.js → chunk-WOUF7YXM.js} +3 -3
- package/dist/{chunk-NE5JAOQS.js.map → chunk-WOUF7YXM.js.map} +1 -1
- package/dist/collapsible-panel.d.ts +14 -3
- package/dist/collapsible-panel.js +13 -16
- package/dist/collapsible-panel.js.map +1 -1
- package/dist/content-item.d.ts +46 -0
- package/dist/content-item.js +4 -0
- package/dist/content-item.js.map +1 -0
- package/dist/css-values.d.ts +5 -11
- package/dist/css-values.js +1 -1
- package/dist/disclosure-arrow.d.ts +4 -1
- package/dist/disclosure-arrow.js +1 -1
- package/dist/floating-toolbar.d.ts +17 -6
- package/dist/floating-toolbar.js +1 -1
- package/dist/grid.js +1 -1
- package/dist/help-tags-register.d.ts +13 -0
- package/dist/help-tags-register.js +9 -0
- package/dist/help-tags-register.js.map +1 -0
- package/dist/index.d.ts +6 -5
- package/dist/index.js +27 -26
- package/dist/list-action-row.js +1 -1
- package/dist/list-header.d.ts +14 -1
- package/dist/list-header.js +1 -1
- package/dist/list-inset-control.d.ts +1 -1
- package/dist/list-inset-control.js +1 -1
- package/dist/list-inset-text.d.ts +3 -10
- package/dist/list-inset-text.js +1 -1
- package/dist/list-item.js +1 -1
- package/dist/list.d.ts +10 -3
- package/dist/list.js +1 -1
- package/dist/nav-stack.d.ts +38 -5
- package/dist/nav-stack.js +4 -1
- package/dist/pane.d.ts +20 -2
- package/dist/pane.js +1 -1
- package/dist/{panel-toolbar-BFQxFITu.d.ts → panel-toolbar-C8sF-YZC.d.ts} +12 -1
- package/dist/popup-menu-register.js +3 -2
- package/dist/popup-menu-register.js.map +1 -1
- package/dist/popup-menu.js +1 -1
- package/dist/row.d.ts +1 -1
- package/dist/row.js +1 -1
- package/dist/select-register.js +70 -3
- package/dist/select-register.js.map +1 -1
- package/dist/select.d.ts +46 -8
- package/dist/select.js +2 -1
- package/dist/{divider-sides-BzB6rphT.d.ts → sides-BPSWde0A.d.ts} +1 -3
- package/dist/skeleton.js +1 -1
- package/dist/spacer.js +1 -1
- package/dist/split-view.d.ts +31 -3
- package/dist/split-view.js +33 -5
- package/dist/split-view.js.map +1 -1
- package/dist/state-banner.js +1 -1
- package/dist/styles/badge.css +13 -0
- package/dist/styles/catalog/components/catalog-example.css +1 -1
- package/dist/styles/catalog/components/catalog-stage.css +1 -1
- package/dist/styles/collapsible-panel.css +192 -39
- package/dist/styles/content-item.css +30 -0
- package/dist/styles/floating-toolbar.css +5 -0
- package/dist/styles/foundation.css +28 -19
- package/dist/styles/layout.css +1 -21
- package/dist/styles/list-action-row.css +13 -1
- package/dist/styles/list-inset-text.css +1 -2
- package/dist/styles/list-item.css +14 -1
- package/dist/styles/list.css +1 -1
- package/dist/styles/nav-stack.css +29 -64
- package/dist/styles/pane.css +33 -1
- package/dist/styles/popup-menu.css +78 -0
- package/dist/styles/resizable-region.css +53 -10
- package/dist/styles/select.css +39 -12
- package/dist/styles/split-view.css +21 -25
- package/dist/styles/tab-scaffold.css +36 -14
- package/dist/styles/text.css +1 -1
- package/dist/styles/token-search-field.css +4 -4
- package/dist/styles/toolbar-control-group.css +31 -12
- package/dist/styles/toolbar.css +14 -5
- package/dist/styles/value-table.css +19 -2
- package/dist/styles/webawesome.css +3 -1
- package/dist/styles/workbench.css +134 -31
- package/dist/tab-scaffold.d.ts +35 -1
- package/dist/tab-scaffold.js +50 -16
- package/dist/tab-scaffold.js.map +1 -1
- package/dist/token-search-field.d.ts +4 -2
- package/dist/token-search-field.js +1 -1
- package/dist/toolbar-text.js +1 -1
- package/dist/toolbar.d.ts +12 -4
- package/dist/toolbar.js +1 -1
- package/dist/{types-D6vzj-VT.d.ts → types-DXAGogOS.d.ts} +39 -6
- package/dist/value-table.js +1 -1
- package/dist/webawesome.d.ts +7 -1
- package/dist/wire-catalog.d.ts +12 -1
- package/dist/wire-catalog.js +10 -2
- package/dist/wire-catalog.js.map +1 -1
- package/dist/wire-token-search-fields.js +1 -1
- package/dist/workbench.d.ts +59 -22
- package/dist/workbench.js +1 -1
- package/docs/accessibility.md +116 -7
- package/docs/app-layouts.md +9 -7
- package/docs/catalog.md +17 -3
- package/docs/collapsible-panel.md +26 -7
- package/docs/component-contract.md +36 -10
- package/docs/component-selection.md +41 -40
- package/docs/design/templates/empty-state/with-action-dark.svg +1 -1
- package/docs/design/templates/empty-state/with-action.svg +1 -1
- package/docs/design/templates/empty-state-dark.svg +1 -1
- package/docs/design/templates/empty-state.svg +1 -1
- package/docs/design/templates/list/compact-dark.svg +1 -1
- package/docs/design/templates/list/compact.svg +1 -1
- package/docs/design/templates/list/stack-dark.svg +1 -1
- package/docs/design/templates/list/stack.svg +1 -1
- package/docs/design/templates/list-action-row/default-dark.svg +1 -1
- package/docs/design/templates/list-action-row/default.svg +1 -1
- package/docs/design/templates/list-action-row/selected-dark.svg +1 -1
- package/docs/design/templates/list-action-row/selected.svg +1 -1
- package/docs/design/templates/list-action-row-dark.svg +1 -1
- package/docs/design/templates/list-action-row.svg +1 -1
- package/docs/design/templates/list-dark.svg +1 -1
- package/docs/design/templates/list-item/default-dark.svg +1 -1
- package/docs/design/templates/list-item/default.svg +1 -1
- package/docs/design/templates/list-item/selected-dark.svg +1 -1
- package/docs/design/templates/list-item/selected.svg +1 -1
- package/docs/design/templates/list-item/trailing-dark.svg +1 -1
- package/docs/design/templates/list-item/trailing.svg +1 -1
- package/docs/design/templates/list-item-dark.svg +1 -1
- package/docs/design/templates/list-item.svg +1 -1
- package/docs/design/templates/list.svg +1 -1
- package/docs/design/templates/value-table/details-dark.svg +1 -1
- package/docs/design/templates/value-table/details.svg +1 -1
- package/docs/design/templates/value-table-dark.svg +1 -1
- package/docs/design/templates/value-table.svg +1 -1
- package/docs/design-philosophy.md +1 -1
- package/docs/examples/command-palette-adapter.tsx +3 -2
- package/docs/layout.md +69 -29
- package/docs/nav-stack.md +45 -1
- package/docs/recipes.md +4 -3
- package/docs/split-view.md +46 -2
- package/docs/tab-scaffold.md +50 -1
- package/docs/type-contracts.md +17 -17
- package/docs/ux-demo.md +2 -2
- package/docs/webawesome-theme.md +1 -2
- package/docs/workbench.md +45 -9
- package/llms.txt +32 -4
- package/package.json +13 -2
- package/ux-demo/recipes/collapsible-sidebar.tsx +3 -2
- package/ux-demo/recipes/navigation-sidebar.tsx +3 -2
- package/ux-demo/recipes/navigation-stack.tsx +3 -2
- package/dist/chunk-3NBL3OUQ.js.map +0 -1
- package/dist/chunk-4BIMLITI.js.map +0 -1
- package/dist/chunk-5I22LMCV.js.map +0 -1
- package/dist/chunk-5NDQABWK.js.map +0 -1
- package/dist/chunk-5OLVUEND.js.map +0 -1
- package/dist/chunk-7GUQYHKA.js.map +0 -1
- package/dist/chunk-D7GWXIAS.js.map +0 -1
- package/dist/chunk-DQA5FMOX.js +0 -85
- package/dist/chunk-DQA5FMOX.js.map +0 -1
- package/dist/chunk-EAX2GSS4.js.map +0 -1
- package/dist/chunk-HMQ2ZDGG.js.map +0 -1
- package/dist/chunk-MTM43SJO.js.map +0 -1
- package/dist/chunk-N7FHFNT6.js.map +0 -1
- package/dist/chunk-R754MHXX.js.map +0 -1
- package/dist/chunk-RNRUVPJ3.js.map +0 -1
- package/dist/chunk-T22EM4ET.js.map +0 -1
- package/dist/chunk-WZ2GLEY4.js.map +0 -1
- package/dist/chunk-XD7DWYXG.js +0 -34
- package/dist/chunk-XD7DWYXG.js.map +0 -1
package/README.md
CHANGED
|
@@ -168,8 +168,8 @@ The same property-specific boundary applies beyond spacing: use `flex()` (or a
|
|
|
168
168
|
finite keyword) for `Row.flex`, `Grid.flex`, and `List.flex`; length builders and intrinsic-size keywords for
|
|
169
169
|
`Skeleton.width`/`height`; length builders for `Skeleton.radius`; and
|
|
170
170
|
a foreground color for `SelectChoice.color` — `uiColor()` with a foreground
|
|
171
|
-
token such as `success-on-quiet`, or `foregroundColorVar()` (fill
|
|
172
|
-
as `uiColor('success')` are rejected). These grammars are not
|
|
171
|
+
token such as `success-on-quiet`, or `foregroundColorVar()` (fill tokens such
|
|
172
|
+
as `uiColor('success-fill-quiet')` are rejected). These grammars are not
|
|
173
173
|
interchangeable. `ListItem` and `ListActionRow` deliberately expose no raw
|
|
174
174
|
`style` declarations; use `className`, public tokens, and component props.
|
|
175
175
|
|
|
@@ -197,6 +197,7 @@ interchangeable. `ListItem` and `ListActionRow` deliberately expose no raw
|
|
|
197
197
|
| `ListHeader` | `@kerfjs/ui/list-header` | `@kerfjs/ui/list-header.css` |
|
|
198
198
|
| `ListInsetControl` | `@kerfjs/ui/list-inset-control` | `@kerfjs/ui/list-inset-control.css` |
|
|
199
199
|
| `ListInsetText` | `@kerfjs/ui/list-inset-text` | `@kerfjs/ui/list-inset-text.css` |
|
|
200
|
+
| `ContentItem` | `@kerfjs/ui/content-item` | `@kerfjs/ui/content-item.css` |
|
|
200
201
|
| `Pane` | `@kerfjs/ui/pane` | `@kerfjs/ui/pane.css` |
|
|
201
202
|
| `NavStack` | `@kerfjs/ui/nav-stack` | `@kerfjs/ui/nav-stack.css` |
|
|
202
203
|
| `wireNavStack` | `@kerfjs/ui/wire-nav-stack` | — |
|
|
@@ -249,9 +250,9 @@ moving focus or DOM identity. When a product wants fewer visible commands at
|
|
|
249
250
|
narrow widths, it chooses them: render a lower-priority command inside an
|
|
250
251
|
app-owned "More" `PopupMenu` (in a `single` group with `nestedDropdown`).
|
|
251
252
|
|
|
252
|
-
`DisclosureArrow` defaults to an 18px root-scaled decorative visual.
|
|
253
|
-
|
|
254
|
-
needs another size; the owning control still supplies interaction, naming, and
|
|
253
|
+
`DisclosureArrow` defaults to an 18px root-scaled decorative visual. Pass a
|
|
254
|
+
typed `size` (for example `size={remify(24)}` from `@kerfjs/ui/css-values`)
|
|
255
|
+
when a consumer needs another size; the owning control still supplies interaction, naming, and
|
|
255
256
|
expanded state. Kerf `Select` retains its independent Web Awesome expand-glyph
|
|
256
257
|
scale of `.5` through `--kui-disclosure-icon-scale`. Author replacement
|
|
257
258
|
`DisclosureArrow` icon content facing right before its configured direction
|
|
@@ -474,14 +475,15 @@ Add `.kui-content` to make its major children a vertical stack with 24px gaps.
|
|
|
474
475
|
<ListItem action="open" label="Inbox" icon={inboxIcon} />
|
|
475
476
|
<ListItem action="open" label="Drafts" />
|
|
476
477
|
</section>
|
|
477
|
-
<
|
|
478
|
+
<ContentItem>Workspace details</ContentItem>
|
|
478
479
|
</nav>
|
|
479
480
|
</aside>
|
|
480
481
|
```
|
|
481
482
|
|
|
482
|
-
Ordinary children use
|
|
483
|
-
(transparent by default), 8px padding, and 12px
|
|
484
|
-
|
|
483
|
+
Ordinary children use `ContentItem` (`@kerfjs/ui/content-item`): 8px inline
|
|
484
|
+
margin, a real 1px border (transparent by default), 8px padding, and 12px
|
|
485
|
+
rounded corners. `shape="pill"` uses a 22px radius, and `frame="framed"` paints
|
|
486
|
+
the neutral border only when the item marks a real distinction. A component can expose a transparent border or
|
|
485
487
|
background without changing layout. `ListHeader` follows the same rule while
|
|
486
488
|
keeping its dormant title and count-or-badge cluster separate from its optional
|
|
487
489
|
44px action.
|
|
@@ -646,7 +648,7 @@ import "@kerfjs/ui/webawesome.css";
|
|
|
646
648
|
import "@kerfjs/ui/select/register";
|
|
647
649
|
```
|
|
648
650
|
|
|
649
|
-
That boundary keeps Web Awesome and its custom-element side effects out of bundles that use unrelated components. Automated consumer-bundle tests enforce it. `PopupMenu` follows the same rule: import `@kerfjs/ui/popup-menu/register` once to register the dropdown, item, button, and divider elements it renders.
|
|
651
|
+
That boundary keeps Web Awesome and its custom-element side effects out of bundles that use unrelated components. Automated consumer-bundle tests enforce it. `PopupMenu` follows the same rule: import `@kerfjs/ui/popup-menu/register` once to register the dropdown, item, button, and divider elements it renders. Either registration also installs help tags: an icon-only Select, PopupMenu, or `aria-label`-named `<button>` in a `ToolbarControlGroup` shows its name in an `aria-hidden` tooltip on hover and keyboard focus. A toolbar with icon-only buttons but neither control imports `@kerfjs/ui/help-tags/register`, which registers only the tooltip.
|
|
650
652
|
Use `label` for a visible label or `ariaLabel` for a visually hidden name. A
|
|
651
653
|
nonempty visible label takes precedence when both are supplied. Kerf names the
|
|
652
654
|
actual shadow combobox without adding visible label spacing; this also works
|
|
@@ -79,7 +79,7 @@
|
|
|
79
79
|
"id": "KUI-T010",
|
|
80
80
|
"publicImport": "@kerfjs/ui",
|
|
81
81
|
"symbols": [
|
|
82
|
-
"
|
|
82
|
+
"Sides",
|
|
83
83
|
"StateBannerUrgency",
|
|
84
84
|
"TabActivation",
|
|
85
85
|
"TextVariant",
|
|
@@ -89,7 +89,7 @@
|
|
|
89
89
|
"ToolbarControlGroupTone"
|
|
90
90
|
],
|
|
91
91
|
"kind": "finite-vocabulary",
|
|
92
|
-
"summary": "Finite public variant vocabularies, including canonical
|
|
92
|
+
"summary": "Finite public variant vocabularies, including canonical edge combinations, are named exported unions rather than anonymous string sets."
|
|
93
93
|
},
|
|
94
94
|
{
|
|
95
95
|
"id": "KUI-T011",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
},
|
|
45
45
|
"accessibility": {
|
|
46
46
|
"obligations": [
|
|
47
|
-
"Badge is non-interactive. Supply label when visible content is abbreviated, and ariaHidden when it repeats an accessible name owned by the surrounding component.",
|
|
47
|
+
"Badge is non-interactive. Supply label when visible content is abbreviated, and ariaHidden when it repeats an accessible name owned by the surrounding component. A text-free dot must take either label (exposed as an image) or ariaHidden, which the types enforce.",
|
|
48
48
|
"Keep meaningful text visible because tone is supplementary."
|
|
49
49
|
]
|
|
50
50
|
},
|
|
@@ -139,7 +139,19 @@
|
|
|
139
139
|
"The arrow is decorative; expose expanded state through aria-expanded on its owning control and keep that control's accessible name stable."
|
|
140
140
|
]
|
|
141
141
|
},
|
|
142
|
-
"cssValueProps": [
|
|
142
|
+
"cssValueProps": [
|
|
143
|
+
{
|
|
144
|
+
"path": "size",
|
|
145
|
+
"grammar": "length",
|
|
146
|
+
"helpers": ["px", "rem", "em", "pct", "space", "lengthVar", "calc"],
|
|
147
|
+
"nonStandaloneHelpers": ["plus"],
|
|
148
|
+
"shorthands": [],
|
|
149
|
+
"canonicalShorthands": [],
|
|
150
|
+
"exceptionalShorthands": [],
|
|
151
|
+
"rawPolicy": "forbid",
|
|
152
|
+
"examples": ["size={remify(24)}"]
|
|
153
|
+
}
|
|
154
|
+
],
|
|
143
155
|
"boundaries": {
|
|
144
156
|
"rootClass": "kui-disclosure-arrow",
|
|
145
157
|
"publicClasses": ["kui-disclosure-arrow"],
|
|
@@ -306,18 +318,6 @@
|
|
|
306
318
|
"--kui-color-danger-on-normal",
|
|
307
319
|
"--kui-color-danger-on-loud",
|
|
308
320
|
"--kui-color-danger-on-fill",
|
|
309
|
-
"--kui-color-border",
|
|
310
|
-
"--kui-color-border-quiet",
|
|
311
|
-
"--kui-color-accent",
|
|
312
|
-
"--kui-color-accent-text",
|
|
313
|
-
"--kui-color-pop",
|
|
314
|
-
"--kui-color-pop-text",
|
|
315
|
-
"--kui-color-success",
|
|
316
|
-
"--kui-color-success-text",
|
|
317
|
-
"--kui-color-warning",
|
|
318
|
-
"--kui-color-warning-text",
|
|
319
|
-
"--kui-color-danger",
|
|
320
|
-
"--kui-color-danger-text",
|
|
321
321
|
"--kui-focus-ring",
|
|
322
322
|
"--kui-shadow-s",
|
|
323
323
|
"--kui-shadow-l"
|
|
@@ -434,8 +434,6 @@
|
|
|
434
434
|
"rootClass": "kui-content",
|
|
435
435
|
"publicClasses": [
|
|
436
436
|
"kui-content",
|
|
437
|
-
"kui-content-item",
|
|
438
|
-
"kui-content-item--pill",
|
|
439
437
|
"kui-control-cluster",
|
|
440
438
|
"kui-inline-metadata",
|
|
441
439
|
"kui-scroll-owner"
|
|
@@ -614,6 +612,16 @@
|
|
|
614
612
|
"id": "per-view bottom toolbar content or a persistent fallback",
|
|
615
613
|
"owner": "application",
|
|
616
614
|
"required": false
|
|
615
|
+
},
|
|
616
|
+
{
|
|
617
|
+
"id": "per-view leading, center, and trailing top-toolbar groups",
|
|
618
|
+
"owner": "application",
|
|
619
|
+
"required": false
|
|
620
|
+
},
|
|
621
|
+
{
|
|
622
|
+
"id": "top-toolbar configuration, title size, and heading level",
|
|
623
|
+
"owner": "application",
|
|
624
|
+
"required": false
|
|
617
625
|
}
|
|
618
626
|
],
|
|
619
627
|
"wiring": {
|
|
@@ -655,7 +663,8 @@
|
|
|
655
663
|
},
|
|
656
664
|
"accessibility": {
|
|
657
665
|
"obligations": [
|
|
658
|
-
"Give the stack region an accessible label and every back control a stable action label.",
|
|
666
|
+
"Give the stack region an accessible label and every back control a stable action label; visible backText names the control itself.",
|
|
667
|
+
"Set toolbarConfig.headingLevel when the view title is the page's or section's heading landmark.",
|
|
659
668
|
"Use wireNavStack so each controlled push moves focus into the new top view and each pop restores the revealed view's remembered descendant.",
|
|
660
669
|
"Mark a preferred initial heading or control with data-nav-focus when the first enabled focusable descendant is not the right target."
|
|
661
670
|
]
|
|
@@ -671,11 +680,8 @@
|
|
|
671
680
|
"kui-nav-stack__chrome-copy",
|
|
672
681
|
"kui-nav-stack__chrome-copy--bottom",
|
|
673
682
|
"kui-nav-stack__chrome-copy--exiting",
|
|
674
|
-
"kui-nav-
|
|
675
|
-
"kui-nav-stack__back",
|
|
676
|
-
"kui-nav-stack__back-icon",
|
|
683
|
+
"kui-nav-stack__toolbar",
|
|
677
684
|
"kui-nav-stack__title",
|
|
678
|
-
"kui-nav-stack__actions",
|
|
679
685
|
"kui-nav-stack__viewport",
|
|
680
686
|
"kui-nav-stack__view",
|
|
681
687
|
"kui-nav-stack__view--entering",
|
|
@@ -736,6 +742,16 @@
|
|
|
736
742
|
"owner": "application",
|
|
737
743
|
"required": false
|
|
738
744
|
},
|
|
745
|
+
{
|
|
746
|
+
"id": "optional list collapse state and its restore control",
|
|
747
|
+
"owner": "application",
|
|
748
|
+
"required": false
|
|
749
|
+
},
|
|
750
|
+
{
|
|
751
|
+
"id": "compact list and detail toolbar groups and toolbar configuration",
|
|
752
|
+
"owner": "application",
|
|
753
|
+
"required": false
|
|
754
|
+
},
|
|
739
755
|
{ "id": "back action", "owner": "application", "required": false }
|
|
740
756
|
],
|
|
741
757
|
"wiring": {
|
|
@@ -832,6 +848,11 @@
|
|
|
832
848
|
"owner": "application",
|
|
833
849
|
"required": false
|
|
834
850
|
},
|
|
851
|
+
{
|
|
852
|
+
"id": "tab badge counts or dots and their localized badgeLabel phrases",
|
|
853
|
+
"owner": "application",
|
|
854
|
+
"required": false
|
|
855
|
+
},
|
|
835
856
|
{
|
|
836
857
|
"id": "routing and persistence",
|
|
837
858
|
"owner": "application",
|
|
@@ -864,7 +885,8 @@
|
|
|
864
885
|
"accessibility": {
|
|
865
886
|
"obligations": [
|
|
866
887
|
"Give the tablist an accessible label and keep exactly the active tab in the sequential focus order.",
|
|
867
|
-
"Wire selection through the controlled active id while leaving inactive scenes mounted and hidden."
|
|
888
|
+
"Wire selection through the controlled active id while leaving inactive scenes mounted and hidden.",
|
|
889
|
+
"A tab badge is aria-hidden; supply badgeLabel so the tab's accessible name becomes \"<label>, <badgeLabel>\" (it defaults to the badge text). The dot form, badge: true, has no text, so its badgeLabel is required."
|
|
868
890
|
]
|
|
869
891
|
},
|
|
870
892
|
"cssValueProps": [],
|
|
@@ -877,6 +899,7 @@
|
|
|
877
899
|
"kui-tab-scaffold__bar",
|
|
878
900
|
"kui-tab-scaffold__tab",
|
|
879
901
|
"kui-tab-scaffold__tab-icon",
|
|
902
|
+
"kui-tab-scaffold__tab-badge",
|
|
880
903
|
"kui-tab-scaffold__tab-label"
|
|
881
904
|
],
|
|
882
905
|
"publicTokens": []
|
|
@@ -1283,7 +1306,7 @@
|
|
|
1283
1306
|
"kui-toolbar__trailing"
|
|
1284
1307
|
],
|
|
1285
1308
|
"publicTokens": [
|
|
1286
|
-
"--kui-color-border",
|
|
1309
|
+
"--kui-color-neutral-border-normal",
|
|
1287
1310
|
"--kui-font-sans",
|
|
1288
1311
|
"--kui-toolbar-divider-color"
|
|
1289
1312
|
]
|
|
@@ -1347,7 +1370,8 @@
|
|
|
1347
1370
|
},
|
|
1348
1371
|
"accessibility": {
|
|
1349
1372
|
"obligations": [
|
|
1350
|
-
"Name the group when its relationship is not evident from context."
|
|
1373
|
+
"Name the group when its relationship is not evident from context.",
|
|
1374
|
+
"Name an icon-only button or link with aria-label, not title. Once any help-tag installer is imported (select/register, popup-menu/register, or help-tags/register), it shows an aria-hidden Web Awesome help tag repeating that name after a 500ms hover and at once on keyboard focus, hidden on a press and on Escape, and never joins aria-labelledby. A native title keeps the browser tooltip and gets no second tag."
|
|
1351
1375
|
]
|
|
1352
1376
|
},
|
|
1353
1377
|
"cssValueProps": [],
|
|
@@ -1474,7 +1498,19 @@
|
|
|
1474
1498
|
"Give the toolbar an accessible name (label is required — it exposes role=\"toolbar\")."
|
|
1475
1499
|
]
|
|
1476
1500
|
},
|
|
1477
|
-
"cssValueProps": [
|
|
1501
|
+
"cssValueProps": [
|
|
1502
|
+
{
|
|
1503
|
+
"path": "inset",
|
|
1504
|
+
"grammar": "length",
|
|
1505
|
+
"helpers": ["px", "rem", "em", "pct", "space", "lengthVar", "calc"],
|
|
1506
|
+
"nonStandaloneHelpers": ["plus"],
|
|
1507
|
+
"shorthands": [],
|
|
1508
|
+
"canonicalShorthands": [],
|
|
1509
|
+
"exceptionalShorthands": [],
|
|
1510
|
+
"rawPolicy": "forbid",
|
|
1511
|
+
"examples": ["inset={space(\"xs\")}"]
|
|
1512
|
+
}
|
|
1513
|
+
],
|
|
1478
1514
|
"boundaries": {
|
|
1479
1515
|
"rootClass": "kui-floating-toolbar",
|
|
1480
1516
|
"publicClasses": ["kui-floating-toolbar"],
|
|
@@ -1598,7 +1634,7 @@
|
|
|
1598
1634
|
"rootClass": "kui-text",
|
|
1599
1635
|
"publicClasses": ["kui-text"],
|
|
1600
1636
|
"publicTokens": [
|
|
1601
|
-
"--kui-color-danger-
|
|
1637
|
+
"--kui-color-danger-on-quiet",
|
|
1602
1638
|
"--kui-color-text-quiet",
|
|
1603
1639
|
"--kui-font-mono",
|
|
1604
1640
|
"--kui-font-xs",
|
|
@@ -1697,7 +1733,7 @@
|
|
|
1697
1733
|
"kui-value-table__label"
|
|
1698
1734
|
],
|
|
1699
1735
|
"publicTokens": [
|
|
1700
|
-
"--kui-color-border",
|
|
1736
|
+
"--kui-color-neutral-border-normal",
|
|
1701
1737
|
"--kui-color-surface-lowered",
|
|
1702
1738
|
"--kui-color-text",
|
|
1703
1739
|
"--kui-color-text-quiet",
|
|
@@ -2071,7 +2107,7 @@
|
|
|
2071
2107
|
"rootClass": "kui-list",
|
|
2072
2108
|
"publicClasses": ["kui-list"],
|
|
2073
2109
|
"publicTokens": [
|
|
2074
|
-
"--kui-color-border",
|
|
2110
|
+
"--kui-color-neutral-border-normal",
|
|
2075
2111
|
"--kui-layout-item-gap",
|
|
2076
2112
|
"--kui-list-divider-color",
|
|
2077
2113
|
"--kui-list-gap"
|
|
@@ -2413,11 +2449,83 @@
|
|
|
2413
2449
|
"cssValueProps": [],
|
|
2414
2450
|
"boundaries": {
|
|
2415
2451
|
"rootClass": "kui-list-inset-text",
|
|
2452
|
+
"publicClasses": ["kui-list-inset-text"],
|
|
2453
|
+
"publicTokens": []
|
|
2454
|
+
},
|
|
2455
|
+
"diagnostics": [],
|
|
2456
|
+
"provenance": {
|
|
2457
|
+
"selection": "ai/component-catalog.json",
|
|
2458
|
+
"composition": "generated-permissive-default"
|
|
2459
|
+
}
|
|
2460
|
+
},
|
|
2461
|
+
{
|
|
2462
|
+
"key": "@kerfjs/ui:content-item",
|
|
2463
|
+
"package": "@kerfjs/ui",
|
|
2464
|
+
"id": "content-item",
|
|
2465
|
+
"name": "ContentItem",
|
|
2466
|
+
"kind": "component",
|
|
2467
|
+
"source": "kerf",
|
|
2468
|
+
"parents": { "mode": "any", "entries": [] },
|
|
2469
|
+
"contexts": ["application-ui"],
|
|
2470
|
+
"zones": [],
|
|
2471
|
+
"children": { "mode": "any", "concepts": [], "requiredConcepts": [] },
|
|
2472
|
+
"state": [
|
|
2473
|
+
{ "id": "the item content", "owner": "application", "required": false },
|
|
2474
|
+
{
|
|
2475
|
+
"id": "whether the item marks a real distinction that warrants a visible frame",
|
|
2476
|
+
"owner": "application",
|
|
2477
|
+
"required": false
|
|
2478
|
+
},
|
|
2479
|
+
{ "id": "corner shape", "owner": "application", "required": false },
|
|
2480
|
+
{
|
|
2481
|
+
"id": "region semantics and accessible name",
|
|
2482
|
+
"owner": "application",
|
|
2483
|
+
"required": false
|
|
2484
|
+
},
|
|
2485
|
+
{
|
|
2486
|
+
"id": "whether the item is a programmatic focus target",
|
|
2487
|
+
"owner": "application",
|
|
2488
|
+
"required": false
|
|
2489
|
+
}
|
|
2490
|
+
],
|
|
2491
|
+
"wiring": {
|
|
2492
|
+
"required": false,
|
|
2493
|
+
"helpers": [],
|
|
2494
|
+
"obligations": [],
|
|
2495
|
+
"stateAttributes": []
|
|
2496
|
+
},
|
|
2497
|
+
"responsive": { "owner": "not-applicable", "behaviors": [] },
|
|
2498
|
+
"layout": {
|
|
2499
|
+
"roles": ["structure"],
|
|
2500
|
+
"geometry": {
|
|
2501
|
+
"margin": "self",
|
|
2502
|
+
"border": "self",
|
|
2503
|
+
"padding": "self",
|
|
2504
|
+
"notes": [
|
|
2505
|
+
"The 1px border is always reserved and transparent unless frame=\"framed\", so framed and unframed items share the same geometry."
|
|
2506
|
+
]
|
|
2507
|
+
}
|
|
2508
|
+
},
|
|
2509
|
+
"accessibility": {
|
|
2510
|
+
"obligations": [
|
|
2511
|
+
"An ordinary item adds no role or name; pass ariaLabel only when the item is a distinct named region (it then renders role=\"region\").",
|
|
2512
|
+
"focusTarget makes the item a programmatic focus target (tabindex=\"-1\", never a tab stop), such as a NavStack view's data-nav-focus target.",
|
|
2513
|
+
"The frame is decorative and never the only signal of state."
|
|
2514
|
+
]
|
|
2515
|
+
},
|
|
2516
|
+
"cssValueProps": [],
|
|
2517
|
+
"boundaries": {
|
|
2518
|
+
"rootClass": "kui-content-item",
|
|
2416
2519
|
"publicClasses": [
|
|
2417
|
-
"kui-
|
|
2418
|
-
"kui-
|
|
2520
|
+
"kui-content-item",
|
|
2521
|
+
"kui-content-item--pill",
|
|
2522
|
+
"kui-content-item--framed"
|
|
2419
2523
|
],
|
|
2420
|
-
"publicTokens": [
|
|
2524
|
+
"publicTokens": [
|
|
2525
|
+
"--kui-content-item-border",
|
|
2526
|
+
"--kui-content-item-radius",
|
|
2527
|
+
"--kui-content-item-background"
|
|
2528
|
+
]
|
|
2421
2529
|
},
|
|
2422
2530
|
"diagnostics": [],
|
|
2423
2531
|
"provenance": {
|
|
@@ -2849,9 +2957,9 @@
|
|
|
2849
2957
|
"kui-token-search__trailing"
|
|
2850
2958
|
],
|
|
2851
2959
|
"publicTokens": [
|
|
2852
|
-
"--kui-color-
|
|
2853
|
-
"--kui-color-
|
|
2854
|
-
"--kui-color-border",
|
|
2960
|
+
"--kui-color-brand-fill-normal",
|
|
2961
|
+
"--kui-color-brand-on-quiet",
|
|
2962
|
+
"--kui-color-neutral-border-normal",
|
|
2855
2963
|
"--kui-color-text-link",
|
|
2856
2964
|
"--kui-color-surface",
|
|
2857
2965
|
"--kui-color-text",
|
|
@@ -2944,7 +3052,7 @@
|
|
|
2944
3052
|
"kui-resizable-region__restore"
|
|
2945
3053
|
],
|
|
2946
3054
|
"publicTokens": [
|
|
2947
|
-
"--kui-color-border",
|
|
3055
|
+
"--kui-color-neutral-border-normal",
|
|
2948
3056
|
"--kui-color-neutral-on-quiet",
|
|
2949
3057
|
"--kui-color-text-link",
|
|
2950
3058
|
"--kui-focus-ring",
|
|
@@ -3003,7 +3111,10 @@
|
|
|
3003
3111
|
"Verify the live value, standard events, focus, and rendered output.",
|
|
3004
3112
|
"A nonempty label names the internal combobox; otherwise ariaLabel supplies a visually hidden label without adding control height, including custom selected content.",
|
|
3005
3113
|
"Hint text is visible below the control through Web Awesome's native hint relationship; placeholderText remains the empty value inside the closed control.",
|
|
3006
|
-
"Import select/register once; its scoped lifecycle adapter keeps the latest open/close request authoritative across animation reversals, canceled transitions, and removal. Do not add consumer popup timing or position repairs."
|
|
3114
|
+
"Import select/register once; its scoped lifecycle adapter keeps the latest open/close request authoritative across animation reversals, canceled transitions, and removal. Do not add consumer popup timing or position repairs.",
|
|
3115
|
+
"With multiple, the popup stays open while choices toggle (pointer, Enter, or Space) and closes on an outside press, Escape, or focus leaving; each chosen option shows a check, and the closed control summarizes the chosen labels in choice order.",
|
|
3116
|
+
"A multiple icon-only trigger shows its fixed triggerIcon and, while any choice is chosen, an aria-hidden count Badge; the combobox's accessible name ends with the chosen labels in choice order, and its hidden value stays empty.",
|
|
3117
|
+
"Once registered, an icon-only trigger (single or multiple) shows an aria-hidden Web Awesome help tag repeating its accessible name (a single Select adds its current choice) after a 500ms hover and at once on keyboard focus; it hides while the popup is open, on a press, and on Escape, and never joins aria-labelledby. Do not add a title or another tooltip."
|
|
3007
3118
|
]
|
|
3008
3119
|
},
|
|
3009
3120
|
"cssValueProps": [
|
|
@@ -3035,8 +3146,6 @@
|
|
|
3035
3146
|
"kui-select__icon"
|
|
3036
3147
|
],
|
|
3037
3148
|
"publicTokens": [
|
|
3038
|
-
"--kui-color-brand-fill-normal",
|
|
3039
|
-
"--kui-color-brand-on-fill",
|
|
3040
3149
|
"--kui-color-neutral-border-quiet",
|
|
3041
3150
|
"--kui-color-neutral-on-quiet",
|
|
3042
3151
|
"--kui-disclosure-icon-scale",
|
|
@@ -3097,7 +3206,8 @@
|
|
|
3097
3206
|
},
|
|
3098
3207
|
"accessibility": {
|
|
3099
3208
|
"obligations": [
|
|
3100
|
-
"An icon-only trigger requires label, rendered as visually hidden slotted text because a Web Awesome button takes its accessible name from its content; a trigger with visible text is named by that text. Web Awesome provides menu roles, arrow-key navigation, typeahead, and Escape."
|
|
3209
|
+
"An icon-only trigger requires label, rendered as visually hidden slotted text because a Web Awesome button takes its accessible name from its content; a trigger with visible text is named by that text. Web Awesome provides menu roles, arrow-key navigation, typeahead, and Escape.",
|
|
3210
|
+
"Once registered, an icon-only trigger shows its label as an aria-hidden Web Awesome help tag after a 500ms hover and at once on keyboard focus; it hides while the menu is open, on a press, and on Escape, and never joins aria-labelledby. Do not add a title or another tooltip."
|
|
3101
3211
|
]
|
|
3102
3212
|
},
|
|
3103
3213
|
"cssValueProps": [],
|