@kerfjs/ui 5.0.0-beta.29 → 5.0.0-beta.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +43 -8
- package/ai/application-ui-diagnostic-ids-v1.json +5 -0
- package/ai/compile-time-contracts-v1.json +37 -0
- package/ai/compile-time-contracts-v1.schema.json +3 -1
- package/ai/component-catalog-v2-overrides.json +198 -1
- package/ai/component-catalog-v2.d.ts +22 -0
- package/ai/component-catalog-v2.json +488 -32
- package/ai/component-catalog-v2.schema.json +51 -0
- package/ai/component-catalog.json +251 -36
- package/ai/component-catalog.schema.json +23 -0
- package/ai/public-api-signatures-v1.md +231 -84
- package/ai/skill.md +32 -10
- package/ai/webawesome-jsx-signatures-v1.md +1 -1
- package/analyzer/index.mjs +247 -5
- package/dist/app-tab.d.ts +3 -2
- package/dist/app-tab.js +2 -1
- package/dist/catalog-resources.d.ts +1 -0
- package/dist/catalog.d.ts +7 -6
- package/dist/catalog.js +8 -7
- package/dist/catalog.js.map +1 -1
- package/dist/{chunk-PX3YSS5C.js → chunk-6NDBE2OK.js} +1 -1
- package/dist/chunk-6NDBE2OK.js.map +1 -0
- package/dist/{chunk-B3A3IVO5.js → chunk-AQFWBG23.js} +3 -3
- package/dist/chunk-AQFWBG23.js.map +1 -0
- package/dist/{chunk-WNWD54GR.js → chunk-B6JYRX3P.js} +4 -2
- package/dist/chunk-B6JYRX3P.js.map +1 -0
- package/dist/{chunk-HP2B2L26.js → chunk-CAB6NQ2T.js} +1 -1
- package/dist/chunk-CAB6NQ2T.js.map +1 -0
- package/dist/{chunk-2NMQW7FX.js → chunk-CK6P5AUK.js} +4 -3
- package/dist/chunk-CK6P5AUK.js.map +1 -0
- package/dist/{chunk-VCE4MPVE.js → chunk-DAO2VFTT.js} +5 -6
- package/dist/chunk-DAO2VFTT.js.map +1 -0
- package/dist/{chunk-LPOMRC4C.js → chunk-DYBPI5O2.js} +1 -1
- package/dist/chunk-DYBPI5O2.js.map +1 -0
- package/dist/{chunk-IJBSZ4NX.js → chunk-E34TE2ZI.js} +4 -3
- package/dist/chunk-E34TE2ZI.js.map +1 -0
- package/dist/{chunk-4EF2CMYS.js → chunk-I45QO2IZ.js} +8 -7
- package/dist/chunk-I45QO2IZ.js.map +1 -0
- package/dist/{chunk-JRKSK2HX.js → chunk-I4V3UDSA.js} +1 -1
- package/dist/chunk-I4V3UDSA.js.map +1 -0
- package/dist/{chunk-FEY65TBV.js → chunk-KFUUFNTS.js} +1 -1
- package/dist/chunk-KFUUFNTS.js.map +1 -0
- package/dist/{chunk-QO55FN2Y.js → chunk-MFR2IIFG.js} +1 -1
- package/dist/chunk-MFR2IIFG.js.map +1 -0
- package/dist/{chunk-GWEAPEZI.js → chunk-OC275HHS.js} +4 -3
- package/dist/chunk-OC275HHS.js.map +1 -0
- package/dist/chunk-OL4TC3U2.js +156 -0
- package/dist/chunk-OL4TC3U2.js.map +1 -0
- package/dist/{chunk-OT6RPYAP.js → chunk-OMSRSL3B.js} +4 -3
- package/dist/chunk-OMSRSL3B.js.map +1 -0
- package/dist/{chunk-J5BFYY7Q.js → chunk-RL6COPKF.js} +12 -3
- package/dist/chunk-RL6COPKF.js.map +1 -0
- package/dist/{chunk-TB6DY7H5.js → chunk-SOK5EUF7.js} +1 -1
- package/dist/chunk-SOK5EUF7.js.map +1 -0
- package/dist/{chunk-RKVQEH4J.js → chunk-T7DOWS6T.js} +3 -3
- package/dist/chunk-T7DOWS6T.js.map +1 -0
- package/dist/{chunk-7KEUJIIC.js → chunk-TIGSG6BX.js} +1 -1
- package/dist/chunk-TIGSG6BX.js.map +1 -0
- package/dist/{chunk-W5L2JSBY.js → chunk-UDHHKZWO.js} +6 -5
- package/dist/chunk-UDHHKZWO.js.map +1 -0
- package/dist/{chunk-R7ZWUN64.js → chunk-V6GQKOX2.js} +4 -3
- package/dist/chunk-V6GQKOX2.js.map +1 -0
- package/dist/{chunk-KWWR5VMS.js → chunk-V6HCTCVD.js} +4 -3
- package/dist/chunk-V6HCTCVD.js.map +1 -0
- package/dist/{chunk-JFGXQBIP.js → chunk-VDUJZF5G.js} +76 -13
- package/dist/chunk-VDUJZF5G.js.map +1 -0
- package/dist/{chunk-SYDMYBPG.js → chunk-VXFGMDA7.js} +1 -1
- package/dist/chunk-VXFGMDA7.js.map +1 -0
- package/dist/{chunk-YMKH5XTF.js → chunk-WN52USHV.js} +2 -2
- package/dist/{chunk-YMKH5XTF.js.map → chunk-WN52USHV.js.map} +1 -1
- package/dist/{chunk-OBLTAKSX.js → chunk-WSXUPSID.js} +1 -1
- package/dist/chunk-WSXUPSID.js.map +1 -0
- package/dist/{chunk-X2U3QJCJ.js → chunk-ZPWZIVI6.js} +1 -1
- package/dist/chunk-ZPWZIVI6.js.map +1 -0
- package/dist/collapsible-panel.d.ts +5 -2
- package/dist/collapsible-panel.js.map +1 -1
- package/dist/css-values.d.ts +75 -0
- package/dist/css-values.js +3 -0
- package/dist/css-values.js.map +1 -0
- package/dist/empty-state.d.ts +2 -1
- package/dist/empty-state.js +1 -1
- package/dist/floating-toolbar.d.ts +4 -3
- package/dist/floating-toolbar.js +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +26 -25
- package/dist/list-action-row.d.ts +1 -2
- package/dist/list-action-row.js +2 -1
- package/dist/list-header.d.ts +1 -1
- package/dist/list-header.js +2 -1
- package/dist/list-inset-control.d.ts +4 -3
- package/dist/list-inset-control.js +1 -1
- package/dist/list-inset-text.d.ts +4 -3
- package/dist/list-inset-text.js +1 -1
- package/dist/list-item.d.ts +4 -3
- package/dist/list-item.js +2 -1
- package/dist/list.d.ts +10 -8
- package/dist/list.js +2 -1
- package/dist/nav-stack.d.ts +9 -6
- package/dist/nav-stack.js +2 -1
- package/dist/pane.d.ts +6 -5
- package/dist/pane.js +1 -1
- package/dist/resizable-region.d.ts +2 -1
- package/dist/resizable-region.js +1 -1
- package/dist/segmented-control.d.ts +4 -3
- package/dist/segmented-control.js +2 -1
- package/dist/select.d.ts +3 -1
- package/dist/select.js +2 -1
- package/dist/semantic-content-BbzjvSu9.d.ts +14 -0
- package/dist/skeleton.d.ts +7 -6
- package/dist/skeleton.js +2 -1
- package/dist/split-view.d.ts +5 -4
- package/dist/split-view.js +3 -2
- package/dist/split-view.js.map +1 -1
- package/dist/state-banner.d.ts +3 -2
- package/dist/state-banner.js +2 -1
- package/dist/styles/catalog.css +8 -1
- package/dist/styles/collapsible-panel.css +6 -2
- package/dist/styles/foundation.css +44 -0
- package/dist/styles/list-header.css +6 -0
- package/dist/styles/list-item.css +9 -0
- package/dist/styles/nav-stack.css +32 -2
- package/dist/styles/segmented-control.css +8 -1
- package/dist/styles/select.css +2 -1
- package/dist/styles/state-banner.css +14 -0
- package/dist/styles/tab-scaffold.css +1 -0
- package/dist/styles/token-search-field.css +4 -0
- package/dist/styles/toolbar-control-group.css +98 -16
- package/dist/styles/webawesome.css +22 -0
- package/dist/styles/workbench.css +4 -0
- package/dist/sunken-panel.d.ts +4 -3
- package/dist/sunken-panel.js +1 -1
- package/dist/surface-scaffold.d.ts +6 -5
- package/dist/surface-scaffold.js +1 -1
- package/dist/tab-bar.d.ts +6 -5
- package/dist/tab-bar.js +1 -1
- package/dist/tab-scaffold.d.ts +2 -1
- package/dist/tab-scaffold.js.map +1 -1
- package/dist/token-search-field.d.ts +5 -4
- package/dist/token-search-field.js +1 -1
- package/dist/toolbar-control-group.d.ts +10 -4
- package/dist/toolbar-control-group.js +1 -1
- package/dist/toolbar-text.js +2 -1
- package/dist/toolbar.d.ts +6 -5
- package/dist/toolbar.js +1 -1
- package/dist/value-table.d.ts +4 -2
- package/dist/value-table.js +2 -1
- package/dist/wire-nav-stack.d.ts +4 -1
- package/dist/wire-nav-stack.js +125 -0
- package/dist/wire-nav-stack.js.map +1 -1
- package/dist/wire-resizable-regions.js +1 -1
- package/dist/wire-tab-bars.d.ts +1 -0
- package/dist/wire-token-search-fields.js +1 -1
- package/dist/workbench.d.ts +7 -4
- package/dist/workbench.js.map +1 -1
- package/docs/accessibility.md +9 -3
- package/docs/collapsible-panel.md +4 -1
- package/docs/component-contract.md +56 -8
- package/docs/component-selection.md +45 -8
- 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/multiline-dark.svg +1 -1
- package/docs/design/templates/list-item/multiline.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-philosophy.md +4 -2
- package/docs/examples/component-catalog-extension-v2.json +2 -0
- package/docs/layout.md +12 -4
- package/docs/nav-stack.md +29 -8
- package/docs/recipes.md +8 -4
- package/docs/split-view.md +6 -0
- package/docs/surface-scaffold.md +8 -0
- package/docs/tab-scaffold.md +3 -1
- package/docs/type-contracts.md +39 -12
- package/docs/ui-analyzer.md +17 -3
- package/docs/ui-doctor.md +7 -0
- package/docs/ux-demo.md +10 -4
- package/docs/webawesome-theme.md +6 -0
- package/docs/workbench.md +6 -4
- package/llms.txt +46 -6
- package/package.json +5 -1
- package/ux-demo/recipes/compact-toolbar.tsx +10 -9
- package/ux-demo/recipes/composer-form.tsx +6 -3
- package/ux-demo/recipes/loading-inspector.tsx +2 -1
- package/dist/chunk-2NMQW7FX.js.map +0 -1
- package/dist/chunk-4EF2CMYS.js.map +0 -1
- package/dist/chunk-7KEUJIIC.js.map +0 -1
- package/dist/chunk-B3A3IVO5.js.map +0 -1
- package/dist/chunk-FEY65TBV.js.map +0 -1
- package/dist/chunk-GWEAPEZI.js.map +0 -1
- package/dist/chunk-HP2B2L26.js.map +0 -1
- package/dist/chunk-IJBSZ4NX.js.map +0 -1
- package/dist/chunk-J5BFYY7Q.js.map +0 -1
- package/dist/chunk-JFGXQBIP.js.map +0 -1
- package/dist/chunk-JRKSK2HX.js.map +0 -1
- package/dist/chunk-KWWR5VMS.js.map +0 -1
- package/dist/chunk-LPOMRC4C.js.map +0 -1
- package/dist/chunk-OBLTAKSX.js.map +0 -1
- package/dist/chunk-OT6RPYAP.js.map +0 -1
- package/dist/chunk-PX3YSS5C.js.map +0 -1
- package/dist/chunk-QO55FN2Y.js.map +0 -1
- package/dist/chunk-R7ZWUN64.js.map +0 -1
- package/dist/chunk-RKVQEH4J.js.map +0 -1
- package/dist/chunk-SYDMYBPG.js.map +0 -1
- package/dist/chunk-TB6DY7H5.js.map +0 -1
- package/dist/chunk-VCE4MPVE.js.map +0 -1
- package/dist/chunk-W5L2JSBY.js.map +0 -1
- package/dist/chunk-WNWD54GR.js.map +0 -1
- package/dist/chunk-X2U3QJCJ.js.map +0 -1
package/README.md
CHANGED
|
@@ -83,6 +83,15 @@ mount(root, () => (
|
|
|
83
83
|
|
|
84
84
|
Components return Kerf `SafeHtml`. They do not own application state or attach transient listeners. Actions are stable `data-action` hooks; the application wires them once with `delegate()` or `delegateActions()` and retains the disposer.
|
|
85
85
|
|
|
86
|
+
Component content positions use one convention: `children` is the homogeneous
|
|
87
|
+
primary region, while semantic positions and replacement content use explicit
|
|
88
|
+
named `SafeHtml` props such as `header`, `footer`, `leading`, `trailing`,
|
|
89
|
+
`icon`, and `action`. These named `SafeHtml` prop slots are ordinary typed
|
|
90
|
+
function-component props—not native `<slot>` elements, wrapper slot
|
|
91
|
+
components, or a generic `slots` object. The v2 composition catalog publishes
|
|
92
|
+
sound prop bindings as `zone.jsx.prop`, allowing ESLint to validate statically
|
|
93
|
+
visible content and cardinality without guessing from zone names.
|
|
94
|
+
|
|
86
95
|
`ListItem.rootAttributes`, `ListHeader.rootAttributes`,
|
|
87
96
|
`ListActionRow.rootAttributes`, `AppTab.rootAttributes`,
|
|
88
97
|
`CatalogExample.rootAttributes`, and `CatalogExampleStack.rootAttributes` carry typed
|
|
@@ -108,6 +117,21 @@ Do not concatenate a count into `label` or pass a numeric `badge`; the mutually
|
|
|
108
117
|
exclusive legacy `badge` slot remains available for non-count `SafeHtml` such
|
|
109
118
|
as a `New` marker.
|
|
110
119
|
|
|
120
|
+
`List.gap` accepts boolean default spacing, a direct spacing name such as
|
|
121
|
+
`gap="xs"` or `gap="m"`, or a branded `CssLength`. Import `space`, `rem`, `em`,
|
|
122
|
+
`px`, `pct`, `lengthVar`, `plus`, and `calc` from the CSS-free
|
|
123
|
+
`@kerfjs/ui/css-values` subpath when a named step is not enough. `plus` returns
|
|
124
|
+
an incomplete expression, so wrap it with `calc` before passing it to a prop.
|
|
125
|
+
Raw CSS strings are deliberately rejected; the opaque brands catch authoring
|
|
126
|
+
mistakes but are not sanitizers.
|
|
127
|
+
|
|
128
|
+
The same property-specific boundary applies beyond spacing: use `flex()` (or a
|
|
129
|
+
finite keyword) for `List.flex`; length builders and intrinsic-size keywords for
|
|
130
|
+
`Skeleton.width`/`height`; length builders for `Skeleton.radius`; and
|
|
131
|
+
`uiColor()` or `colorVar()` for `SelectChoice.color`. These grammars are not
|
|
132
|
+
interchangeable. `ListItem` and `ListActionRow` deliberately expose no raw
|
|
133
|
+
`style` declarations; use `className`, public tokens, and component props.
|
|
134
|
+
|
|
111
135
|
## Component subpaths
|
|
112
136
|
|
|
113
137
|
| Component | Browser import (includes reachable CSS) | Manual CSS export |
|
|
@@ -120,6 +144,7 @@ as a `New` marker.
|
|
|
120
144
|
| `FloatingToolbar` | `@kerfjs/ui/floating-toolbar` | `@kerfjs/ui/floating-toolbar.css` |
|
|
121
145
|
| `ToolbarText` | `@kerfjs/ui/toolbar-text` | `@kerfjs/ui/toolbar-text.css` |
|
|
122
146
|
| `List` | `@kerfjs/ui/list` | `@kerfjs/ui/list.css` |
|
|
147
|
+
| Typed CSS dimension builders | `@kerfjs/ui/css-values` | — |
|
|
123
148
|
| `ListActionRow` | `@kerfjs/ui/list-action-row` | `@kerfjs/ui/list-action-row.css` |
|
|
124
149
|
| `ListItem` | `@kerfjs/ui/list-item` | `@kerfjs/ui/list-item.css` |
|
|
125
150
|
| `ListHeader` | `@kerfjs/ui/list-header` | `@kerfjs/ui/list-header.css` |
|
|
@@ -288,9 +313,11 @@ are merged with catalog diagnostics before exception validation.
|
|
|
288
313
|
Run `kerf-ui-analyze --root . src` (or import
|
|
289
314
|
`@kerfjs/ui/analyzer`) to evaluate cross-file integration facts against the
|
|
290
315
|
composition catalogs and application profile. It catches provable private
|
|
291
|
-
selector reach-through, unknown tokens, competing geometry owners,
|
|
292
|
-
scroll owners
|
|
293
|
-
|
|
316
|
+
selector reach-through, unknown tokens, competing geometry owners, nested
|
|
317
|
+
scroll owners, and cataloged CSS-value violations in JavaScript/TypeScript
|
|
318
|
+
component calls and JSX. It reports forced dimensions, repeated insets,
|
|
319
|
+
exceptional spacing shorthands, and dynamic classes separately as review
|
|
320
|
+
findings. Text, versioned JSON,
|
|
294
321
|
and SARIF outputs carry stable `KUI-L###` ids, repository-relative locations,
|
|
295
322
|
evidence, and ownership chains. See the [analyzer guide](./docs/ui-analyzer.md).
|
|
296
323
|
|
|
@@ -407,6 +434,9 @@ Awesome modules the application renders.
|
|
|
407
434
|
`webawesome.css` includes Web Awesome's native/base theme and then applies the
|
|
408
435
|
Hot Sheet 2 palette, surfaces, status colors, focus treatment, form geometry,
|
|
409
436
|
radii, tooltips, and shadows through Web Awesome's public `--wa-*` contract.
|
|
437
|
+
On `wa-dialog`, the optional `hide-actions` class hides the exported
|
|
438
|
+
`header-actions` shadow part for compositions that provide another dismissal
|
|
439
|
+
affordance.
|
|
410
440
|
Those tokens flow into all free component families. Every free Web Awesome 3.12
|
|
411
441
|
component has an individual UX-catalog route under the collapsible ecosystem
|
|
412
442
|
section, but the theme entry does not import or register component JavaScript,
|
|
@@ -427,8 +457,10 @@ classes for explicit appearance boundaries:
|
|
|
427
457
|
```
|
|
428
458
|
|
|
429
459
|
`foundation.css` follows Hot Sheet 2's Web Awesome-compatible semantic palette.
|
|
430
|
-
Brand, neutral, success, warning, and danger each expose fill, border, and
|
|
431
|
-
foreground roles through `--kui-color
|
|
460
|
+
Brand, pop, neutral, success, warning, and danger each expose fill, border, and
|
|
461
|
+
foreground roles through `--kui-color-*`. Pop is attractive, non-status emphasis
|
|
462
|
+
for featured, novel, or celebratory content; it never substitutes for success,
|
|
463
|
+
warning, or danger. Stateful components also expose
|
|
432
464
|
component variables such as `--kui-state-banner-background`. Override the
|
|
433
465
|
foundation for an application theme, a tone variable for one semantic state, or
|
|
434
466
|
a component variable on one instance without replacing component selectors.
|
|
@@ -437,8 +469,8 @@ needs a selector, the component catalog's `publicClasses` arrays define the
|
|
|
437
469
|
exact stable anatomy: public-class-to-public-class selectors are supported;
|
|
438
470
|
descendant tag, id, attribute-only, and unlisted-class selectors are not.
|
|
439
471
|
|
|
440
|
-
`StateBanner` has opinionated `neutral`, `info`, `success`, `warning`,
|
|
441
|
-
`danger` palettes. Override an individual banner with
|
|
472
|
+
`StateBanner` has opinionated `neutral`, `info`, `pop`, `success`, `warning`,
|
|
473
|
+
and `danger` palettes. Override an individual banner with
|
|
442
474
|
`--kui-state-banner-background`, `--kui-state-banner-border`,
|
|
443
475
|
`--kui-state-banner-foreground`, `--kui-state-banner-detail`,
|
|
444
476
|
`--kui-state-banner-action-background`, and
|
|
@@ -537,7 +569,10 @@ empty value inside the closed control. Loading placeholders preserve the hint.
|
|
|
537
569
|
`Select` also owns the Kerf/Web Awesome reconciliation boundary: option icons
|
|
538
570
|
keep stable slotted elements across rerenders, and `renderSelected` content is
|
|
539
571
|
replaced when the controlled value changes. Consumers do not need to add
|
|
540
|
-
`data-key` or `data-morph-skip` workarounds around choice icons.
|
|
572
|
+
`data-key` or `data-morph-skip` workarounds around choice icons. Icon-bearing
|
|
573
|
+
options retain the standard icon-to-label gap. When a compact Select is wrapped
|
|
574
|
+
in a `ToolbarControlGroup`, use `focusRingOwner="group"`; the group paints the
|
|
575
|
+
focus ring with its configured pill or rounded geometry.
|
|
541
576
|
|
|
542
577
|
For application choices and panes, prefer Kerf's purpose-built primitives:
|
|
543
578
|
`Select` over direct Web Awesome selection/dropdown composition,
|
|
@@ -89,6 +89,43 @@
|
|
|
89
89
|
],
|
|
90
90
|
"kind": "finite-vocabulary",
|
|
91
91
|
"summary": "Finite public variant vocabularies, including canonical divider-edge combinations, are named exported unions rather than anonymous string sets."
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"id": "KUI-T011",
|
|
95
|
+
"publicImport": "@kerfjs/ui",
|
|
96
|
+
"symbols": ["KerfUiContent"],
|
|
97
|
+
"kind": "recursive-semantic-content",
|
|
98
|
+
"summary": "Semantic UI content zones accept SafeHtml, runtime-empty boolean/nullish values, and readonly nested arrays while rejecting arbitrary strings, numbers, and signals."
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"id": "KUI-T012",
|
|
102
|
+
"catalogKey": "@kerfjs/ui:list",
|
|
103
|
+
"publicImport": "@kerfjs/ui/css-values",
|
|
104
|
+
"symbols": [
|
|
105
|
+
"CssValue",
|
|
106
|
+
"CssLength",
|
|
107
|
+
"CssLengthExpression",
|
|
108
|
+
"UiSpaceName",
|
|
109
|
+
"space",
|
|
110
|
+
"plus",
|
|
111
|
+
"calc"
|
|
112
|
+
],
|
|
113
|
+
"kind": "property-specific-css-value",
|
|
114
|
+
"summary": "List gap accepts finite spacing shorthands or branded complete length-percentage values, while raw CSS strings and non-standalone arithmetic expressions remain rejected."
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"id": "KUI-T013",
|
|
118
|
+
"publicImport": "@kerfjs/ui/css-values",
|
|
119
|
+
"symbols": [
|
|
120
|
+
"CssFlex",
|
|
121
|
+
"CssSize",
|
|
122
|
+
"CssColor",
|
|
123
|
+
"flex",
|
|
124
|
+
"uiColor",
|
|
125
|
+
"colorVar"
|
|
126
|
+
],
|
|
127
|
+
"kind": "property-specific-css-value",
|
|
128
|
+
"summary": "List flex, Skeleton dimensions, and Select icon colors use separate typed CSS grammars; row declaration-string props are absent rather than sharing a generic CSS escape hatch."
|
|
92
129
|
}
|
|
93
130
|
]
|
|
94
131
|
}
|
|
@@ -10,18 +10,21 @@
|
|
|
10
10
|
"zones": [
|
|
11
11
|
{
|
|
12
12
|
"id": "leading",
|
|
13
|
+
"jsx": { "prop": "leading" },
|
|
13
14
|
"accepts": ["toolbar-text", "toolbar-control-group"],
|
|
14
15
|
"cardinality": { "min": 0, "max": "unbounded" },
|
|
15
16
|
"exclusiveWith": []
|
|
16
17
|
},
|
|
17
18
|
{
|
|
18
19
|
"id": "center",
|
|
20
|
+
"jsx": { "prop": "center" },
|
|
19
21
|
"accepts": ["toolbar-text", "toolbar-control-group"],
|
|
20
22
|
"cardinality": { "min": 0, "max": "unbounded" },
|
|
21
23
|
"exclusiveWith": []
|
|
22
24
|
},
|
|
23
25
|
{
|
|
24
26
|
"id": "trailing",
|
|
27
|
+
"jsx": { "prop": "trailing" },
|
|
25
28
|
"accepts": ["toolbar-text", "toolbar-control-group"],
|
|
26
29
|
"cardinality": { "min": 0, "max": "unbounded" },
|
|
27
30
|
"exclusiveWith": []
|
|
@@ -41,6 +44,39 @@
|
|
|
41
44
|
}
|
|
42
45
|
]
|
|
43
46
|
},
|
|
47
|
+
"@kerfjs/ui:pane": {
|
|
48
|
+
"_source": "docs/layout.md#anatomy",
|
|
49
|
+
"contexts": [
|
|
50
|
+
"application-column",
|
|
51
|
+
"sidebar",
|
|
52
|
+
"main-content",
|
|
53
|
+
"inspector",
|
|
54
|
+
"dialog-column"
|
|
55
|
+
],
|
|
56
|
+
"zones": [
|
|
57
|
+
{
|
|
58
|
+
"id": "header",
|
|
59
|
+
"jsx": { "prop": "header" },
|
|
60
|
+
"accepts": ["fixed-chrome"],
|
|
61
|
+
"cardinality": { "min": 0, "max": "unbounded" },
|
|
62
|
+
"exclusiveWith": []
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"id": "content",
|
|
66
|
+
"jsx": { "prop": "children" },
|
|
67
|
+
"accepts": ["pane-content"],
|
|
68
|
+
"cardinality": { "min": 0, "max": "unbounded" },
|
|
69
|
+
"exclusiveWith": []
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"id": "footer",
|
|
73
|
+
"jsx": { "prop": "footer" },
|
|
74
|
+
"accepts": ["fixed-chrome"],
|
|
75
|
+
"cardinality": { "min": 0, "max": "unbounded" },
|
|
76
|
+
"exclusiveWith": []
|
|
77
|
+
}
|
|
78
|
+
]
|
|
79
|
+
},
|
|
44
80
|
"@kerfjs/ui:toolbar-control-group": {
|
|
45
81
|
"_source": "docs/component-selection.md#toolbar-composition",
|
|
46
82
|
"parents": {
|
|
@@ -102,9 +138,24 @@
|
|
|
102
138
|
"zones": [
|
|
103
139
|
{
|
|
104
140
|
"id": "tabs",
|
|
105
|
-
"
|
|
141
|
+
"jsx": { "prop": "children" },
|
|
142
|
+
"accepts": ["tabs"],
|
|
106
143
|
"cardinality": { "min": 1, "max": "unbounded" },
|
|
107
144
|
"exclusiveWith": []
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
"id": "leading",
|
|
148
|
+
"jsx": { "prop": "leading" },
|
|
149
|
+
"accepts": ["toolbar-control-group"],
|
|
150
|
+
"cardinality": { "min": 0, "max": 1 },
|
|
151
|
+
"exclusiveWith": []
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
"id": "trailing",
|
|
155
|
+
"jsx": { "prop": "trailing" },
|
|
156
|
+
"accepts": ["toolbar-control-group"],
|
|
157
|
+
"cardinality": { "min": 0, "max": 1 },
|
|
158
|
+
"exclusiveWith": []
|
|
108
159
|
}
|
|
109
160
|
],
|
|
110
161
|
"state": [
|
|
@@ -133,6 +184,37 @@
|
|
|
133
184
|
}
|
|
134
185
|
]
|
|
135
186
|
},
|
|
187
|
+
"@kerfjs/ui:tabs": {
|
|
188
|
+
"_source": "docs/accessibility.md#tabs",
|
|
189
|
+
"parents": {
|
|
190
|
+
"mode": "listed",
|
|
191
|
+
"entries": ["@kerfjs/ui:tab-bar"]
|
|
192
|
+
},
|
|
193
|
+
"contexts": ["tabpanel-navigation"],
|
|
194
|
+
"zones": [
|
|
195
|
+
{
|
|
196
|
+
"id": "leading-decoration",
|
|
197
|
+
"jsx": { "prop": "leading" },
|
|
198
|
+
"accepts": ["dormant-decoration"],
|
|
199
|
+
"cardinality": { "min": 0, "max": 1 },
|
|
200
|
+
"exclusiveWith": []
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
"id": "trailing-decoration",
|
|
204
|
+
"jsx": { "prop": "trailing" },
|
|
205
|
+
"accepts": ["dormant-decoration"],
|
|
206
|
+
"cardinality": { "min": 0, "max": 1 },
|
|
207
|
+
"exclusiveWith": []
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
"id": "close-icon",
|
|
211
|
+
"jsx": { "prop": "closeIcon" },
|
|
212
|
+
"accepts": ["dormant-decoration"],
|
|
213
|
+
"cardinality": { "min": 0, "max": 1 },
|
|
214
|
+
"exclusiveWith": []
|
|
215
|
+
}
|
|
216
|
+
]
|
|
217
|
+
},
|
|
136
218
|
"@kerfjs/ui:segmented-control": {
|
|
137
219
|
"_source": "docs/accessibility.md#segmentedcontrol",
|
|
138
220
|
"contexts": ["compact-exclusive-choice"],
|
|
@@ -147,6 +229,22 @@
|
|
|
147
229
|
"@kerfjs/ui:token-search-field": {
|
|
148
230
|
"_source": "docs/accessibility.md#tokensearchfield",
|
|
149
231
|
"contexts": ["structured-search-editor"],
|
|
232
|
+
"zones": [
|
|
233
|
+
{
|
|
234
|
+
"id": "leading-decoration",
|
|
235
|
+
"jsx": { "prop": "leading" },
|
|
236
|
+
"accepts": ["dormant-decoration"],
|
|
237
|
+
"cardinality": { "min": 0, "max": 1 },
|
|
238
|
+
"exclusiveWith": []
|
|
239
|
+
},
|
|
240
|
+
{
|
|
241
|
+
"id": "trailing-control",
|
|
242
|
+
"jsx": { "prop": "trailing" },
|
|
243
|
+
"accepts": ["control"],
|
|
244
|
+
"cardinality": { "min": 0, "max": 1 },
|
|
245
|
+
"exclusiveWith": []
|
|
246
|
+
}
|
|
247
|
+
],
|
|
150
248
|
"state": [
|
|
151
249
|
{ "id": "tokens", "owner": "controlled", "required": true },
|
|
152
250
|
{ "id": "text", "owner": "component", "required": true },
|
|
@@ -169,6 +267,97 @@
|
|
|
169
267
|
}
|
|
170
268
|
]
|
|
171
269
|
},
|
|
270
|
+
"@kerfjs/ui:state-banner": {
|
|
271
|
+
"_source": "docs/component-selection.md#problem-to-component-matrix",
|
|
272
|
+
"contexts": ["persistent-status", "recoverable-error"],
|
|
273
|
+
"zones": [
|
|
274
|
+
{
|
|
275
|
+
"id": "icon",
|
|
276
|
+
"jsx": { "prop": "icon" },
|
|
277
|
+
"accepts": ["dormant-decoration"],
|
|
278
|
+
"cardinality": { "min": 0, "max": 1 },
|
|
279
|
+
"exclusiveWith": []
|
|
280
|
+
},
|
|
281
|
+
{
|
|
282
|
+
"id": "action",
|
|
283
|
+
"jsx": { "prop": "action" },
|
|
284
|
+
"accepts": ["control"],
|
|
285
|
+
"cardinality": { "min": 0, "max": 1 },
|
|
286
|
+
"exclusiveWith": []
|
|
287
|
+
}
|
|
288
|
+
]
|
|
289
|
+
},
|
|
290
|
+
"@kerfjs/ui:empty-state": {
|
|
291
|
+
"_source": "docs/component-selection.md#problem-to-component-matrix",
|
|
292
|
+
"contexts": ["empty-content", "busy-content"],
|
|
293
|
+
"zones": [
|
|
294
|
+
{
|
|
295
|
+
"id": "icon",
|
|
296
|
+
"jsx": { "prop": "icon" },
|
|
297
|
+
"accepts": ["dormant-decoration"],
|
|
298
|
+
"cardinality": { "min": 0, "max": 1 },
|
|
299
|
+
"exclusiveWith": []
|
|
300
|
+
},
|
|
301
|
+
{
|
|
302
|
+
"id": "action",
|
|
303
|
+
"jsx": { "prop": "action" },
|
|
304
|
+
"accepts": ["control"],
|
|
305
|
+
"cardinality": { "min": 0, "max": 1 },
|
|
306
|
+
"exclusiveWith": []
|
|
307
|
+
}
|
|
308
|
+
]
|
|
309
|
+
},
|
|
310
|
+
"@kerfjs/ui:split-view": {
|
|
311
|
+
"_source": "docs/split-view.md#split-view-list-detail",
|
|
312
|
+
"contexts": ["list-detail", "responsive-master-detail"],
|
|
313
|
+
"zones": [
|
|
314
|
+
{
|
|
315
|
+
"id": "list",
|
|
316
|
+
"jsx": { "prop": "list" },
|
|
317
|
+
"accepts": ["list-region"],
|
|
318
|
+
"cardinality": { "min": 1, "max": 1 },
|
|
319
|
+
"exclusiveWith": []
|
|
320
|
+
},
|
|
321
|
+
{
|
|
322
|
+
"id": "detail",
|
|
323
|
+
"jsx": { "prop": "detail" },
|
|
324
|
+
"accepts": ["detail-region"],
|
|
325
|
+
"cardinality": { "min": 1, "max": 1 },
|
|
326
|
+
"exclusiveWith": []
|
|
327
|
+
}
|
|
328
|
+
]
|
|
329
|
+
},
|
|
330
|
+
"@kerfjs/ui:workbench": {
|
|
331
|
+
"_source": "docs/workbench.md#workbench",
|
|
332
|
+
"contexts": ["desktop-application-shell"],
|
|
333
|
+
"zones": [
|
|
334
|
+
{
|
|
335
|
+
"id": "main",
|
|
336
|
+
"jsx": { "prop": "main" },
|
|
337
|
+
"accepts": ["workspace-region"],
|
|
338
|
+
"cardinality": { "min": 1, "max": 1 },
|
|
339
|
+
"exclusiveWith": []
|
|
340
|
+
},
|
|
341
|
+
{
|
|
342
|
+
"id": "left-rail",
|
|
343
|
+
"accepts": ["panel-region"],
|
|
344
|
+
"cardinality": { "min": 0, "max": 1 },
|
|
345
|
+
"exclusiveWith": []
|
|
346
|
+
},
|
|
347
|
+
{
|
|
348
|
+
"id": "right-rail",
|
|
349
|
+
"accepts": ["panel-region"],
|
|
350
|
+
"cardinality": { "min": 0, "max": 1 },
|
|
351
|
+
"exclusiveWith": []
|
|
352
|
+
},
|
|
353
|
+
{
|
|
354
|
+
"id": "bottom-drawer",
|
|
355
|
+
"accepts": ["panel-region"],
|
|
356
|
+
"cardinality": { "min": 0, "max": 1 },
|
|
357
|
+
"exclusiveWith": []
|
|
358
|
+
}
|
|
359
|
+
]
|
|
360
|
+
},
|
|
172
361
|
"@kerfjs/ui:resize": {
|
|
173
362
|
"_source": "docs/accessibility.md#resizableregion",
|
|
174
363
|
"contexts": ["adjustable-pane-boundary"],
|
|
@@ -224,6 +413,14 @@
|
|
|
224
413
|
}
|
|
225
414
|
]
|
|
226
415
|
},
|
|
416
|
+
"@kerfjs/ui:wa-dialog": {
|
|
417
|
+
"_source": "docs/webawesome-theme.md#coverage",
|
|
418
|
+
"boundaries": {
|
|
419
|
+
"rootClass": null,
|
|
420
|
+
"publicClasses": ["hide-actions"],
|
|
421
|
+
"publicTokens": []
|
|
422
|
+
}
|
|
423
|
+
},
|
|
227
424
|
"@kerfjs/ui:wa-radio-group": {
|
|
228
425
|
"_source": "docs/webawesome-theme.md#coverage",
|
|
229
426
|
"children": {
|
|
@@ -9,6 +9,25 @@ export type CatalogDiagnostic = {
|
|
|
9
9
|
when: string;
|
|
10
10
|
message: string;
|
|
11
11
|
};
|
|
12
|
+
export type CatalogCssValueProp = {
|
|
13
|
+
path: string;
|
|
14
|
+
grammar:
|
|
15
|
+
| 'length'
|
|
16
|
+
| 'size'
|
|
17
|
+
| 'flex'
|
|
18
|
+
| 'color'
|
|
19
|
+
| 'declarations'
|
|
20
|
+
| 'media-query'
|
|
21
|
+
| 'pixels';
|
|
22
|
+
helpers: string[];
|
|
23
|
+
nonStandaloneHelpers?: string[];
|
|
24
|
+
shorthands: string[];
|
|
25
|
+
canonicalShorthands: string[];
|
|
26
|
+
exceptionalShorthands: string[];
|
|
27
|
+
rawPolicy: 'forbid' | 'allow' | 'unsafe-only';
|
|
28
|
+
unsafeHelper?: string;
|
|
29
|
+
examples: string[];
|
|
30
|
+
};
|
|
12
31
|
export interface CatalogCompositionEntryV2 {
|
|
13
32
|
key: CatalogQualifiedKey;
|
|
14
33
|
package: string;
|
|
@@ -23,6 +42,8 @@ export interface CatalogCompositionEntryV2 {
|
|
|
23
42
|
contexts: string[];
|
|
24
43
|
zones: Array<{
|
|
25
44
|
id: string;
|
|
45
|
+
/** Static JSX binding when this zone is supplied by a public prop. */
|
|
46
|
+
jsx?: { prop: string };
|
|
26
47
|
accepts: string[];
|
|
27
48
|
cardinality: CatalogCardinality;
|
|
28
49
|
exclusiveWith: string[];
|
|
@@ -56,6 +77,7 @@ export interface CatalogCompositionEntryV2 {
|
|
|
56
77
|
publicTokens: string[];
|
|
57
78
|
publicParts?: string[];
|
|
58
79
|
};
|
|
80
|
+
cssValueProps?: CatalogCssValueProp[];
|
|
59
81
|
diagnostics: CatalogDiagnostic[];
|
|
60
82
|
provenance: { selection: string; composition: string };
|
|
61
83
|
}
|