@kerfjs/ui 5.0.0-beta.24 → 5.0.0-beta.26
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 +44 -23
- package/ai/application-ui-diagnostic-ids-v1.json +3 -0
- package/ai/application-ui-profile.defaults.json +1 -1
- package/ai/compile-time-contracts-v1.json +3 -11
- package/ai/component-catalog-v2-overrides.json +7 -37
- package/ai/component-catalog-v2.d.ts +1 -0
- package/ai/component-catalog-v2.json +415 -91
- package/ai/component-catalog-v2.schema.json +2 -1
- package/ai/component-catalog.json +602 -158
- package/ai/public-api-signatures-v1.md +132 -65
- package/ai/skill.md +20 -20
- package/ai/webawesome-jsx-signatures-v1.md +2 -1
- package/analyzer/cli.mjs +5 -2
- package/analyzer/index.d.mts +1 -0
- package/analyzer/index.mjs +117 -10
- package/dist/app-tab.d.ts +10 -2
- package/dist/app-tab.js +1 -1
- package/dist/browser/list-action-row.js +1 -0
- package/dist/browser/list-item.js +1 -0
- package/dist/browser/surface-scaffold.js +3 -0
- package/dist/catalog.js +5 -4
- package/dist/catalog.js.map +1 -1
- package/dist/{chunk-FEAMR7S4.js → chunk-4EF2CMYS.js} +24 -5
- package/dist/chunk-4EF2CMYS.js.map +1 -0
- package/dist/{chunk-NWSEP5RT.js → chunk-FRVS5RFM.js} +23 -5
- package/dist/chunk-FRVS5RFM.js.map +1 -0
- package/dist/{chunk-PSKN344N.js → chunk-GWEAPEZI.js} +15 -2
- package/dist/chunk-GWEAPEZI.js.map +1 -0
- package/dist/chunk-HP2B2L26.js +102 -0
- package/dist/chunk-HP2B2L26.js.map +1 -0
- package/dist/{chunk-OJWWHFH3.js → chunk-JFGXQBIP.js} +49 -23
- package/dist/chunk-JFGXQBIP.js.map +1 -0
- package/dist/chunk-OBLTAKSX.js +43 -0
- package/dist/chunk-OBLTAKSX.js.map +1 -0
- package/dist/{chunk-Y45PPBDV.js → chunk-OT6RPYAP.js} +16 -2
- package/dist/chunk-OT6RPYAP.js.map +1 -0
- package/dist/{chunk-UFZKLBCF.js → chunk-VCE4MPVE.js} +25 -3
- package/dist/chunk-VCE4MPVE.js.map +1 -0
- package/dist/{chunk-5VTB2BKP.js → chunk-WNWD54GR.js} +16 -2
- package/dist/chunk-WNWD54GR.js.map +1 -0
- package/dist/{chunk-M7JBER5U.js → chunk-X2U3QJCJ.js} +8 -2
- package/dist/chunk-X2U3QJCJ.js.map +1 -0
- package/dist/{chunk-DPDBVKNA.js → chunk-YMKH5XTF.js} +5 -3
- package/dist/chunk-YMKH5XTF.js.map +1 -0
- package/dist/collapsible-panel.d.ts +9 -1
- package/dist/collapsible-panel.js +36 -15
- package/dist/collapsible-panel.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +12 -12
- package/dist/list-action-row.d.ts +11 -1
- package/dist/list-action-row.js +2 -1
- package/dist/list-header.d.ts +15 -2
- package/dist/list-header.js +1 -1
- package/dist/list-item.d.ts +12 -1
- package/dist/list-item.js +2 -1
- package/dist/resizable-region.d.ts +19 -2
- package/dist/resizable-region.js +1 -1
- package/dist/select.d.ts +12 -1
- package/dist/select.js +1 -1
- package/dist/split-view.js +1 -1
- package/dist/styles/app-tab.css +26 -0
- package/dist/styles/collapsible-panel.css +66 -4
- package/dist/styles/list-action-row.css +64 -0
- package/dist/styles/list-header.css +32 -0
- package/dist/styles/list-item.css +39 -0
- package/dist/styles/resizable-region.css +132 -0
- package/dist/styles/select.css +68 -0
- package/dist/styles/styles.css +1 -1
- package/dist/styles/surface-scaffold.css +51 -0
- package/dist/styles/tab-bar.css +24 -0
- package/dist/styles/toolbar-control-group.css +73 -1
- package/dist/styles/toolbar-text.css +1 -1
- package/dist/styles/webawesome.css +12 -0
- package/dist/styles/workbench.css +89 -0
- package/dist/surface-scaffold.d.ts +25 -0
- package/dist/surface-scaffold.js +3 -0
- package/dist/surface-scaffold.js.map +1 -0
- package/dist/tab-bar.d.ts +11 -2
- package/dist/tab-bar.js +1 -1
- package/dist/toolbar-control-group.d.ts +16 -2
- package/dist/toolbar-control-group.js +1 -1
- package/dist/webawesome.d.ts +1 -0
- package/dist/wire-resizable-regions.js +1 -1
- package/dist/wire-sidebar.d.ts +6 -1
- package/dist/wire-sidebar.js +27 -8
- package/dist/wire-sidebar.js.map +1 -1
- package/dist/wire-token-search-fields.js +1 -1
- package/dist/workbench.d.ts +8 -0
- package/dist/workbench.js +42 -0
- package/dist/workbench.js.map +1 -1
- package/docs/accessibility.md +55 -12
- package/docs/collapsible-panel.md +7 -0
- package/docs/component-contract.md +5 -8
- package/docs/component-selection.md +63 -33
- package/docs/design/templates.md +5 -7
- package/docs/examples/component-catalog-extension-v2.json +3 -6
- package/docs/examples/component-catalog-extension.json +1 -1
- package/docs/layout.md +7 -9
- package/docs/recipes.md +8 -7
- package/docs/surface-scaffold.md +17 -0
- package/docs/type-contracts.md +6 -8
- package/docs/ui-analyzer.md +19 -1
- package/docs/ui-doctor.md +1 -1
- package/docs/ux-demo.md +6 -3
- package/docs/webawesome-theme.md +4 -1
- package/docs/workbench.md +49 -2
- package/doctor/eslint-diagnostics.d.mts +16 -0
- package/doctor/eslint-diagnostics.mjs +17 -0
- package/doctor/index.mjs +16 -1
- package/llms.txt +19 -9
- package/package.json +7 -7
- package/ux-demo/recipes/app-shell.tsx +36 -23
- package/ux-demo/recipes/collapsible-sidebar.tsx +22 -16
- package/ux-demo/recipes/composer-form.tsx +15 -6
- package/ux-demo/recipes/list-detail-dialog.tsx +31 -15
- package/ux-demo/recipes/list-workspace-states.tsx +16 -7
- package/ux-demo/recipes/loading-inspector.tsx +39 -18
- package/ux-demo/recipes/recipes.css +7 -2
- package/ux-demo/recipes/workspace-header.tsx +17 -7
- package/dist/browser/panel-header.js +0 -7
- package/dist/chunk-5VTB2BKP.js.map +0 -1
- package/dist/chunk-7XRDUG4Y.js +0 -58
- package/dist/chunk-7XRDUG4Y.js.map +0 -1
- package/dist/chunk-DPDBVKNA.js.map +0 -1
- package/dist/chunk-FEAMR7S4.js.map +0 -1
- package/dist/chunk-M7JBER5U.js.map +0 -1
- package/dist/chunk-NENBUYX5.js +0 -79
- package/dist/chunk-NENBUYX5.js.map +0 -1
- package/dist/chunk-NWSEP5RT.js.map +0 -1
- package/dist/chunk-OJWWHFH3.js.map +0 -1
- package/dist/chunk-PSKN344N.js.map +0 -1
- package/dist/chunk-UFZKLBCF.js.map +0 -1
- package/dist/chunk-Y45PPBDV.js.map +0 -1
- package/dist/panel-header.d.ts +0 -42
- package/dist/panel-header.js +0 -7
- package/dist/panel-header.js.map +0 -1
- package/dist/styles/panel-header.css +0 -64
- package/docs/design/templates/panel-header/icon-actions-dark.svg +0 -1
- package/docs/design/templates/panel-header/icon-actions.svg +0 -1
- package/docs/design/templates/panel-header/icon-summary-actions-dark.svg +0 -1
- package/docs/design/templates/panel-header/icon-summary-actions.svg +0 -1
- package/docs/design/templates/panel-header/no-icon-dark.svg +0 -1
- package/docs/design/templates/panel-header/no-icon.svg +0 -1
- package/docs/design/templates/panel-header/page-heading-dark.svg +0 -1
- package/docs/design/templates/panel-header/page-heading.svg +0 -1
- package/docs/design/templates/panel-header/title-only-dark.svg +0 -1
- package/docs/design/templates/panel-header/title-only.svg +0 -1
- package/docs/design/templates/panel-header-dark.svg +0 -1
- package/docs/design/templates/panel-header.svg +0 -1
package/README.md
CHANGED
|
@@ -15,7 +15,7 @@ For connective application patterns, use the seven [production composition
|
|
|
15
15
|
recipes](./docs/recipes.md). Each has a stable catalog route, runnable state,
|
|
16
16
|
public-subpath source, semantic layout ownership, and explicit application
|
|
17
17
|
customization boundaries. The composer recipe demonstrates one coherent form
|
|
18
|
-
surface with `
|
|
18
|
+
surface with a `Toolbar`/`ToolbarText` heading and field/action controls aligned to the
|
|
19
19
|
shared 8px gutter; only persistent feedback adds a nested semantic
|
|
20
20
|
`StateBanner` surface.
|
|
21
21
|
|
|
@@ -41,11 +41,7 @@ mount(root, () => (
|
|
|
41
41
|
<>
|
|
42
42
|
<Toolbar
|
|
43
43
|
label="Document"
|
|
44
|
-
leading={
|
|
45
|
-
<ToolbarControlGroup appearance="borderless" single>
|
|
46
|
-
<ToolbarText text="Notes" />
|
|
47
|
-
</ToolbarControlGroup>
|
|
48
|
-
}
|
|
44
|
+
leading={<ToolbarText text="Notes" />}
|
|
49
45
|
/>
|
|
50
46
|
<section>
|
|
51
47
|
<ListHeader
|
|
@@ -120,6 +116,7 @@ as a `New` marker.
|
|
|
120
116
|
| `DisclosureArrow` | `@kerfjs/ui/disclosure-arrow` | `@kerfjs/ui/disclosure-arrow.css` |
|
|
121
117
|
| `Toolbar` | `@kerfjs/ui/toolbar` | `@kerfjs/ui/toolbar.css` |
|
|
122
118
|
| `ToolbarControlGroup` | `@kerfjs/ui/toolbar-control-group` | `@kerfjs/ui/toolbar-control-group.css` |
|
|
119
|
+
| `DialogSurface`, `PopupSurface` | `@kerfjs/ui/surface-scaffold` | `@kerfjs/ui/surface-scaffold.css` |
|
|
123
120
|
| `FloatingToolbar` | `@kerfjs/ui/floating-toolbar` | `@kerfjs/ui/floating-toolbar.css` |
|
|
124
121
|
| `ToolbarText` | `@kerfjs/ui/toolbar-text` | `@kerfjs/ui/toolbar-text.css` |
|
|
125
122
|
| `List` | `@kerfjs/ui/list` | `@kerfjs/ui/list.css` |
|
|
@@ -129,6 +126,14 @@ as a `New` marker.
|
|
|
129
126
|
| `ListInsetControl` | `@kerfjs/ui/list-inset-control` | `@kerfjs/ui/list-inset-control.css` |
|
|
130
127
|
| `ListInsetText` | `@kerfjs/ui/list-inset-text` | `@kerfjs/ui/list-inset-text.css` |
|
|
131
128
|
| `Pane` | `@kerfjs/ui/pane` | `@kerfjs/ui/pane.css` |
|
|
129
|
+
| `NavStack` | `@kerfjs/ui/nav-stack` | `@kerfjs/ui/nav-stack.css` |
|
|
130
|
+
| `wireNavStack` | `@kerfjs/ui/wire-nav-stack` | — |
|
|
131
|
+
| `SplitView` | `@kerfjs/ui/split-view` | `@kerfjs/ui/split-view.css` |
|
|
132
|
+
| `TabScaffold` | `@kerfjs/ui/tab-scaffold` | `@kerfjs/ui/tab-scaffold.css` |
|
|
133
|
+
| `wireTabScaffold` | `@kerfjs/ui/wire-tab-scaffold` | — |
|
|
134
|
+
| `Workbench` | `@kerfjs/ui/workbench` | `@kerfjs/ui/workbench.css` |
|
|
135
|
+
| `CollapsiblePanel`, `CollapsiblePanelToggle` | `@kerfjs/ui/collapsible-panel` | `@kerfjs/ui/collapsible-panel.css` |
|
|
136
|
+
| `wireSidebar` | `@kerfjs/ui/wire-sidebar` | — |
|
|
132
137
|
| Content and navigation composition | — | `@kerfjs/ui/layout.css` |
|
|
133
138
|
| `ResizableRegion` | `@kerfjs/ui/resizable-region` | `@kerfjs/ui/resizable-region.css` |
|
|
134
139
|
| `wireResizableRegions` | `@kerfjs/ui/wire-resizable-regions` | — |
|
|
@@ -144,22 +149,22 @@ as a `New` marker.
|
|
|
144
149
|
| `wireTokenSearchFields` | `@kerfjs/ui/wire-token-search-fields` | — |
|
|
145
150
|
| `StateBanner` | `@kerfjs/ui/state-banner` | `@kerfjs/ui/state-banner.css` |
|
|
146
151
|
| `EmptyState` | `@kerfjs/ui/empty-state` | `@kerfjs/ui/empty-state.css` |
|
|
147
|
-
| `PanelHeader` | `@kerfjs/ui/panel-header` | `@kerfjs/ui/panel-header.css` |
|
|
148
152
|
| `ValueTable`, `ValueTableRow` | `@kerfjs/ui/value-table` | `@kerfjs/ui/value-table.css` |
|
|
149
153
|
|
|
150
|
-
Opt-in application layouts keep JavaScript and CSS explicit.
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
`
|
|
154
|
+
Opt-in application layouts keep JavaScript and CSS explicit. Import each
|
|
155
|
+
layout from its component subpath, load the matching manual CSS export, and
|
|
156
|
+
add its wire subpath when the layout has interactive behavior. The catalog
|
|
157
|
+
entries for `nav-stack`, `split-view`, `tab-scaffold`, `workbench`, and
|
|
158
|
+
`collapsible-panel` document their selection rules, ownership boundaries,
|
|
159
|
+
public classes, tokens, and focused demos. See
|
|
160
|
+
[`docs/app-layouts.md`](./docs/app-layouts.md) for the layout decision matrix.
|
|
161
|
+
|
|
162
|
+
Compose panel, dialog, and page headings directly with `Toolbar`: put an optional
|
|
163
|
+
icon in a `ToolbarControlGroup`, use a direct extra-large `ToolbarText` for the
|
|
164
|
+
title, and put actions in the trailing zone inside their own control group. Set
|
|
165
|
+
`headingLevel` for page or section headings. Supporting copy is app-owned content
|
|
166
|
+
below the toolbar and should be connected to its host with `aria-describedby`
|
|
167
|
+
when it adds useful context.
|
|
163
168
|
|
|
164
169
|
`DisclosureArrow` defaults to an 18px root-scaled decorative visual. Override
|
|
165
170
|
`--kui-disclosure-arrow-size` at the narrowest useful scope when a consumer
|
|
@@ -303,7 +308,7 @@ retention policy, and a separate unscored human-visual rubric. See the
|
|
|
303
308
|
|
|
304
309
|
### Unified repair-loop doctor
|
|
305
310
|
|
|
306
|
-
Use `kerf-ui-doctor` for the supported application repair loop across profile/catalog validation, TypeScript, the Kerf UI ESLint preset, static layout analysis, and an optional explicitly authorized browser evaluation. It emits one portable versioned JSON report with deterministic exit codes, exact suppressions, monorepo package selection, changed/full modes, caching, and local-path redaction. See the [UI doctor guide](./docs/ui-doctor.md).
|
|
311
|
+
Use `kerf-ui-doctor` for the supported application repair loop across profile/catalog validation, TypeScript, the Kerf UI ESLint preset, static layout analysis, and an optional explicitly authorized browser evaluation. Its isolated Kerf lint pass preserves each file's applicable core-rule and suppression settings without executing consumer plugin rules. It emits one portable versioned JSON report with deterministic exit codes, exact suppressions, monorepo package selection, changed/full modes, caching, and local-path redaction. See the [UI doctor guide](./docs/ui-doctor.md).
|
|
307
312
|
|
|
308
313
|
For code generation, pair catalog selection guidance with the checked-in
|
|
309
314
|
[`public-api-signatures-v1.md`](./ai/public-api-signatures-v1.md) declaration
|
|
@@ -479,7 +484,12 @@ Call `wireTokenSearchFields()` once at a stable root to make Enter submit throug
|
|
|
479
484
|
`onSubmit` without inserting a contenteditable line break and to preserve focus
|
|
480
485
|
plus the text-relative caret when keyboard deletion of a chip causes controlled
|
|
481
486
|
rendering to replace the editor. A select-all deletion is normalized to a truly
|
|
482
|
-
empty editor even when the browser leaves an atomic chip or line break behind
|
|
487
|
+
empty editor even when the browser leaves an atomic chip or line break behind;
|
|
488
|
+
replacement typing consumes that intent so a later Backspace/Delete remains an
|
|
489
|
+
ordinary character edit.
|
|
490
|
+
Managed deletion keeps a collapsible replacement editor open and focused before
|
|
491
|
+
the next keystroke; applications must persist both query and tokens from the DOM
|
|
492
|
+
read. Genuine outside focus and Escape still collapse an empty field.
|
|
483
493
|
Text still wraps visually when it reaches the field edge.
|
|
484
494
|
Clear actions should empty the editor's `textContent` before clearing app state.
|
|
485
495
|
The leading icon, first text line, clear action, and trailing slot share one
|
|
@@ -517,6 +527,13 @@ import "@kerfjs/ui/select/register";
|
|
|
517
527
|
```
|
|
518
528
|
|
|
519
529
|
That boundary keeps Web Awesome and its custom-element side effects out of bundles that use unrelated components. Automated consumer-bundle tests enforce it.
|
|
530
|
+
Use `label` for a visible label or `ariaLabel` for a visually hidden name. A
|
|
531
|
+
nonempty visible label takes precedence when both are supplied. Kerf names the
|
|
532
|
+
actual shadow combobox without adding visible label spacing; this also works
|
|
533
|
+
with `renderSelected`, and needs no application shadow-DOM patch. Use `hint`
|
|
534
|
+
for persistent supporting text below the control and `placeholderText` for the
|
|
535
|
+
empty value inside the closed control. Loading placeholders preserve the hint.
|
|
536
|
+
|
|
520
537
|
`Select` also owns the Kerf/Web Awesome reconciliation boundary: option icons
|
|
521
538
|
keep stable slotted elements across rerenders, and `renderSelected` content is
|
|
522
539
|
replaced when the controlled value changes. Consumers do not need to add
|
|
@@ -529,7 +546,11 @@ Awesome Tabs, `LucideIcon` over Web Awesome Icon, and `ResizableRegion` over
|
|
|
529
546
|
Split Panel. `ResizableRegion` includes Hot Sheet 2's 1px separator and
|
|
530
547
|
hover/focus grip. Its optional `handleIcon` replaces only the decorative glyph;
|
|
531
548
|
the component and `wireResizableRegions()` retain separator semantics and
|
|
532
|
-
pointer/keyboard behavior.
|
|
549
|
+
pointer/keyboard behavior. Typed policies cover separator visibility,
|
|
550
|
+
instant-track/composited-content collapse, popup-safe overflow,
|
|
551
|
+
inline/overlay/hidden responsive presentation, and safe-area restore controls;
|
|
552
|
+
the same policies are available on `Workbench` and `CollapsiblePanel`. Consider
|
|
553
|
+
Web Awesome Popup when its anchored-positioning
|
|
533
554
|
engine removes custom placement code; treat Tree, Animated Image, Comparison,
|
|
534
555
|
Zoomable Frame, and the displaced alternatives above as exceptional rather
|
|
535
556
|
than default patterns. The detailed rationale lives in the theme contract.
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"avoid": ["@kerfjs/ui:wa-button-group"]
|
|
20
20
|
},
|
|
21
21
|
"navigation-row": { "preferred": "@kerfjs/ui:list-item" },
|
|
22
|
-
"panel-heading": { "preferred": "@kerfjs/ui:
|
|
22
|
+
"panel-heading": { "preferred": "@kerfjs/ui:toolbar" },
|
|
23
23
|
"structured-search": { "preferred": "@kerfjs/ui:token-search-field" }
|
|
24
24
|
},
|
|
25
25
|
"theme": {
|
|
@@ -54,14 +54,6 @@
|
|
|
54
54
|
},
|
|
55
55
|
{
|
|
56
56
|
"id": "KUI-T007",
|
|
57
|
-
"catalogKey": "@kerfjs/ui:panel-header",
|
|
58
|
-
"publicImport": "@kerfjs/ui/panel-header",
|
|
59
|
-
"symbols": ["PanelHeaderProps"],
|
|
60
|
-
"kind": "conditional-property",
|
|
61
|
-
"summary": "PanelHeader summaryId cannot be supplied without rendered summary content."
|
|
62
|
-
},
|
|
63
|
-
{
|
|
64
|
-
"id": "KUI-T008",
|
|
65
57
|
"catalogKey": "@kerfjs/ui:toolbar-text",
|
|
66
58
|
"publicImport": "@kerfjs/ui/toolbar-text",
|
|
67
59
|
"symbols": ["ToolbarTextProps"],
|
|
@@ -69,14 +61,14 @@
|
|
|
69
61
|
"summary": "ToolbarText maxLines is accepted only when wrapping is enabled."
|
|
70
62
|
},
|
|
71
63
|
{
|
|
72
|
-
"id": "KUI-
|
|
64
|
+
"id": "KUI-T008",
|
|
73
65
|
"publicImport": "@kerfjs/ui/tab-scaffold",
|
|
74
66
|
"symbols": ["TabScaffoldTab", "TabScaffoldProps"],
|
|
75
67
|
"kind": "literal-identity",
|
|
76
68
|
"summary": "Literal TabScaffold active ids are constrained to the declared tab ids; dynamic integrations may widen the generic to string."
|
|
77
69
|
},
|
|
78
70
|
{
|
|
79
|
-
"id": "KUI-
|
|
71
|
+
"id": "KUI-T009",
|
|
80
72
|
"catalogKey": "@kerfjs/ui:token-search-field",
|
|
81
73
|
"publicImport": "@kerfjs/ui/wire-token-search-fields",
|
|
82
74
|
"symbols": ["TokenSearchKeyboardOptions", "WireTokenSearchFieldsOptions"],
|
|
@@ -84,7 +76,7 @@
|
|
|
84
76
|
"summary": "Adjacent-token removal requires the callback that commits removal to application-owned state."
|
|
85
77
|
},
|
|
86
78
|
{
|
|
87
|
-
"id": "KUI-
|
|
79
|
+
"id": "KUI-T010",
|
|
88
80
|
"publicImport": "@kerfjs/ui",
|
|
89
81
|
"symbols": [
|
|
90
82
|
"DividerSides",
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"@kerfjs/ui:toolbar": {
|
|
3
3
|
"_source": "docs/component-selection.md#toolbar-composition",
|
|
4
|
-
"contexts": [
|
|
4
|
+
"contexts": [
|
|
5
|
+
"application-chrome",
|
|
6
|
+
"page-header",
|
|
7
|
+
"panel-header",
|
|
8
|
+
"dialog-header"
|
|
9
|
+
],
|
|
5
10
|
"zones": [
|
|
6
11
|
{
|
|
7
12
|
"id": "leading",
|
|
@@ -40,7 +45,7 @@
|
|
|
40
45
|
"_source": "docs/component-selection.md#toolbar-composition",
|
|
41
46
|
"parents": {
|
|
42
47
|
"mode": "listed",
|
|
43
|
-
"entries": ["@kerfjs/ui:toolbar"
|
|
48
|
+
"entries": ["@kerfjs/ui:toolbar"]
|
|
44
49
|
},
|
|
45
50
|
"contexts": ["toolbar-zone"],
|
|
46
51
|
"zones": [
|
|
@@ -57,41 +62,6 @@
|
|
|
57
62
|
"requiredConcepts": ["control"]
|
|
58
63
|
}
|
|
59
64
|
},
|
|
60
|
-
"@kerfjs/ui:panel-header": {
|
|
61
|
-
"_source": "docs/component-selection.md#problem-to-component-matrix",
|
|
62
|
-
"contexts": ["page-header", "panel-header", "dialog-header"],
|
|
63
|
-
"zones": [
|
|
64
|
-
{
|
|
65
|
-
"id": "title",
|
|
66
|
-
"accepts": ["text"],
|
|
67
|
-
"cardinality": { "min": 1, "max": 1 },
|
|
68
|
-
"exclusiveWith": []
|
|
69
|
-
},
|
|
70
|
-
{
|
|
71
|
-
"id": "subtitle",
|
|
72
|
-
"accepts": ["text"],
|
|
73
|
-
"cardinality": { "min": 0, "max": 1 },
|
|
74
|
-
"exclusiveWith": []
|
|
75
|
-
},
|
|
76
|
-
{
|
|
77
|
-
"id": "controls",
|
|
78
|
-
"accepts": ["control"],
|
|
79
|
-
"cardinality": { "min": 0, "max": "unbounded" },
|
|
80
|
-
"exclusiveWith": []
|
|
81
|
-
}
|
|
82
|
-
],
|
|
83
|
-
"state": [
|
|
84
|
-
{ "id": "placeholder", "owner": "controlled", "required": false }
|
|
85
|
-
],
|
|
86
|
-
"diagnostics": [
|
|
87
|
-
{
|
|
88
|
-
"id": "KUI-C102",
|
|
89
|
-
"severity": "error",
|
|
90
|
-
"when": "the title is absent",
|
|
91
|
-
"message": "PanelHeader requires a title that names its page, panel, or dialog."
|
|
92
|
-
}
|
|
93
|
-
]
|
|
94
|
-
},
|
|
95
65
|
"@kerfjs/ui:list": {
|
|
96
66
|
"_source": "docs/component-selection.md#problem-to-component-matrix",
|
|
97
67
|
"contexts": ["application-ui", "navigation-list", "vertical-layout"],
|