@kerfjs/ui 5.0.0-beta.65 → 5.0.0-beta.66
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/ai/component-catalog.json +14 -3
- package/ai/component-composition.json +13 -1
- package/ai/components/grid.md +3 -1
- package/ai/components/nav-stack.md +4 -3
- package/ai/components/workbench.md +5 -3
- package/ai/public-api-signatures-v1.md +56 -36
- package/ai/skill.md +4 -0
- package/ai/webawesome-jsx-signatures-v1.md +1 -1
- package/dist/browser/catalog.js +2 -1
- package/dist/browser/workbench.js +4 -1
- package/dist/catalog-resources.d.ts +2 -0
- package/dist/catalog.d.ts +2 -0
- package/dist/catalog.js +2 -1
- package/dist/catalog.js.map +1 -1
- package/dist/{chunk-2EKHENQK.js → chunk-B2ZMR7NY.js} +9 -1
- package/dist/chunk-B2ZMR7NY.js.map +1 -0
- package/dist/{chunk-FJSZYEBM.js → chunk-C74LITXE.js} +4 -4
- package/dist/{chunk-FJSZYEBM.js.map → chunk-C74LITXE.js.map} +1 -1
- package/dist/{chunk-PWQAVNON.js → chunk-TGM424PI.js} +34 -4
- package/dist/chunk-TGM424PI.js.map +1 -0
- package/dist/chunk-VY6YRCTV.js +123 -0
- package/dist/chunk-VY6YRCTV.js.map +1 -0
- package/dist/collapsible-panel.js +2 -2
- package/dist/grid.d.ts +5 -1
- package/dist/grid.js +1 -1
- package/dist/index.js +1 -1
- package/dist/nav-stack.d.ts +5 -1
- package/dist/nav-stack.js +1 -1
- package/dist/split-view.js +1 -1
- package/dist/styles/nav-stack.css +4 -0
- package/dist/styles/token-search-field.css +9 -2
- package/dist/styles/toolbar.css +5 -1
- package/dist/wire-content-items.js +32 -4
- package/dist/wire-content-items.js.map +1 -1
- package/dist/workbench.d.ts +41 -33
- package/dist/workbench.js +4 -1
- package/docs/accessibility.md +9 -2
- package/docs/component-selection.md +7 -0
- package/docs/layout.md +9 -1
- package/docs/nav-stack.md +7 -0
- package/docs/webawesome-theme.md +6 -0
- package/docs/workbench.md +27 -3
- package/llms.txt +3 -0
- package/package.json +1 -1
- package/dist/chunk-2EKHENQK.js.map +0 -1
- package/dist/chunk-HXCMWANP.js +0 -116
- package/dist/chunk-HXCMWANP.js.map +0 -1
- package/dist/chunk-PWQAVNON.js.map +0 -1
|
@@ -725,6 +725,7 @@
|
|
|
725
725
|
"preferred initial focus targets when DOM order is insufficient",
|
|
726
726
|
"per-view bottom toolbar content or a persistent fallback",
|
|
727
727
|
"per-view leading, center, and trailing top-toolbar groups",
|
|
728
|
+
"per-view fixed header content above the active view's scroll area",
|
|
728
729
|
"top-toolbar configuration, title size, and heading level",
|
|
729
730
|
"whether the chrome and bottom-toolbar dividers follow the scroll, always show, or never show (chromeDividers)"
|
|
730
731
|
],
|
|
@@ -735,6 +736,7 @@
|
|
|
735
736
|
"configured top toolbar",
|
|
736
737
|
"custom back icon or visible back text",
|
|
737
738
|
"per-view bottom toolbar",
|
|
739
|
+
"persistent final top-toolbar group (panelToggle) when embedded in a Workbench panel",
|
|
738
740
|
"persistent bottom-toolbar fallback",
|
|
739
741
|
"chrome and bottom-toolbar dividers only while the active view scrolls beneath them (wired by wireScrollDividers)",
|
|
740
742
|
"permanent or no chrome dividers (chromeDividers always or none)"
|
|
@@ -811,6 +813,7 @@
|
|
|
811
813
|
"kui-nav-stack__chrome-copy",
|
|
812
814
|
"kui-nav-stack__chrome-copy--bottom",
|
|
813
815
|
"kui-nav-stack__chrome-copy--exiting",
|
|
816
|
+
"kui-nav-stack__header",
|
|
814
817
|
"kui-nav-stack__viewport",
|
|
815
818
|
"kui-nav-stack__view",
|
|
816
819
|
"kui-nav-stack__view--entering",
|
|
@@ -1079,7 +1082,9 @@
|
|
|
1079
1082
|
"kind": "component",
|
|
1080
1083
|
"source": "kerf",
|
|
1081
1084
|
"description": "A desktop-class multi-panel workspace with independently collapsible, optionally drag-resizable left and right rails and a bottom drawer around one central work area.",
|
|
1082
|
-
"uses": [
|
|
1085
|
+
"uses": [
|
|
1086
|
+
"nav-stack"
|
|
1087
|
+
],
|
|
1083
1088
|
"purpose": "Arrange a complex tool or editor as a stable central work area with optional peripheral rails and a bottom drawer.",
|
|
1084
1089
|
"publicExports": [
|
|
1085
1090
|
"Workbench",
|
|
@@ -1088,6 +1093,8 @@
|
|
|
1088
1093
|
"WorkbenchMainBottomToolbar",
|
|
1089
1094
|
"WorkbenchMainToolbar",
|
|
1090
1095
|
"WorkbenchPanel",
|
|
1096
|
+
"WorkbenchStaticPanel",
|
|
1097
|
+
"WorkbenchNavigationPanel",
|
|
1091
1098
|
"WorkbenchPanelResizable",
|
|
1092
1099
|
"WorkbenchPanelToggle",
|
|
1093
1100
|
"WorkbenchPanelToolbar",
|
|
@@ -1114,6 +1121,7 @@
|
|
|
1114
1121
|
"panel presence and content",
|
|
1115
1122
|
"collapsed state",
|
|
1116
1123
|
"panel sizes",
|
|
1124
|
+
"navigation panel view stack and push/pop actions when navStack is supplied",
|
|
1117
1125
|
"responsive replacement below desktop",
|
|
1118
1126
|
"collapse controls and focus policy"
|
|
1119
1127
|
],
|
|
@@ -1124,6 +1132,7 @@
|
|
|
1124
1132
|
"bottom drawer",
|
|
1125
1133
|
"all panels",
|
|
1126
1134
|
"independently collapsed panels",
|
|
1135
|
+
"navigation panel with per-screen toolbar, fixed header, and one scroll owner; standard toggle remains last and relocates while collapsed",
|
|
1127
1136
|
"opt-in drag and keyboard resizable panels with min/max limits",
|
|
1128
1137
|
"resizable rails that leave the work area a minimum width and shrink in proportion when the Workbench narrows",
|
|
1129
1138
|
"rails or a drawer that present as overlays below a narrow or compact Workbench container breakpoint",
|
|
@@ -2439,10 +2448,12 @@
|
|
|
2439
2448
|
"typed CssLength gap",
|
|
2440
2449
|
"boolean, finite-keyword, or typed CssFlex flex",
|
|
2441
2450
|
"fill: the layout root fills a definite-height parent",
|
|
2442
|
-
"rootAttributes: safe data-* metadata on the root"
|
|
2451
|
+
"rootAttributes: safe data-* metadata on the root",
|
|
2452
|
+
"selectionMode=multiple: labeled multi-select grid for ContentItem tiles"
|
|
2443
2453
|
],
|
|
2444
2454
|
"accessibility": [
|
|
2445
|
-
"Grid adds
|
|
2455
|
+
"Grid adds no role by default; selectionMode=multiple requires ariaLabel and supplies a multi-select grid for ContentItem row/gridcell tiles.",
|
|
2456
|
+
"wireContentItems uses rendered tile positions for Left/Right/Up/Down and reaches the first or last tile with Home/End.",
|
|
2446
2457
|
"Responsive column-count changes preserve source and focus order."
|
|
2447
2458
|
],
|
|
2448
2459
|
"geometry": {
|
|
@@ -703,6 +703,11 @@
|
|
|
703
703
|
"owner": "application",
|
|
704
704
|
"required": false
|
|
705
705
|
},
|
|
706
|
+
{
|
|
707
|
+
"id": "per-view fixed header content above the active view's scroll area",
|
|
708
|
+
"owner": "application",
|
|
709
|
+
"required": false
|
|
710
|
+
},
|
|
706
711
|
{
|
|
707
712
|
"id": "top-toolbar configuration, title size, and heading level",
|
|
708
713
|
"owner": "application",
|
|
@@ -783,6 +788,7 @@
|
|
|
783
788
|
"kui-nav-stack__chrome-copy",
|
|
784
789
|
"kui-nav-stack__chrome-copy--bottom",
|
|
785
790
|
"kui-nav-stack__chrome-copy--exiting",
|
|
791
|
+
"kui-nav-stack__header",
|
|
786
792
|
"kui-nav-stack__viewport",
|
|
787
793
|
"kui-nav-stack__view",
|
|
788
794
|
"kui-nav-stack__view--entering",
|
|
@@ -1075,6 +1081,11 @@
|
|
|
1075
1081
|
},
|
|
1076
1082
|
{ "id": "collapsed state", "owner": "application", "required": false },
|
|
1077
1083
|
{ "id": "panel sizes", "owner": "application", "required": false },
|
|
1084
|
+
{
|
|
1085
|
+
"id": "navigation panel view stack and push/pop actions when navStack is supplied",
|
|
1086
|
+
"owner": "application",
|
|
1087
|
+
"required": false
|
|
1088
|
+
},
|
|
1078
1089
|
{
|
|
1079
1090
|
"id": "responsive replacement below desktop",
|
|
1080
1091
|
"owner": "application",
|
|
@@ -2088,7 +2099,8 @@
|
|
|
2088
2099
|
},
|
|
2089
2100
|
"accessibility": {
|
|
2090
2101
|
"obligations": [
|
|
2091
|
-
"Grid adds
|
|
2102
|
+
"Grid adds no role by default; selectionMode=multiple requires ariaLabel and supplies a multi-select grid for ContentItem row/gridcell tiles.",
|
|
2103
|
+
"wireContentItems uses rendered tile positions for Left/Right/Up/Down and reaches the first or last tile with Home/End.",
|
|
2092
2104
|
"Responsive column-count changes preserve source and focus order."
|
|
2093
2105
|
]
|
|
2094
2106
|
},
|
package/ai/components/grid.md
CHANGED
|
@@ -47,6 +47,7 @@ Exact prop names and types: [`@kerfjs/ui/grid`](../public-api-signatures-v1.md#k
|
|
|
47
47
|
- boolean, finite-keyword, or typed CssFlex flex
|
|
48
48
|
- fill: the layout root fills a definite-height parent
|
|
49
49
|
- rootAttributes: safe data-\* metadata on the root
|
|
50
|
+
- selectionMode=multiple: labeled multi-select grid for ContentItem tiles
|
|
50
51
|
|
|
51
52
|
**CSS-value props** (typed builders from `@kerfjs/ui/css-values`; raw CSS strings are rejected):
|
|
52
53
|
|
|
@@ -74,7 +75,8 @@ Margin: none · border: none · padding: none (layout role: structure). `self` m
|
|
|
74
75
|
|
|
75
76
|
## Accessibility
|
|
76
77
|
|
|
77
|
-
- Grid adds
|
|
78
|
+
- Grid adds no role by default; selectionMode=multiple requires ariaLabel and supplies a multi-select grid for ContentItem row/gridcell tiles.
|
|
79
|
+
- wireContentItems uses rendered tile positions for Left/Right/Up/Down and reaches the first or last tile with Home/End.
|
|
78
80
|
- Responsive column-count changes preserve source and focus order.
|
|
79
81
|
|
|
80
82
|
## Styling boundary
|
|
@@ -43,6 +43,7 @@ Exact prop names and types: [`@kerfjs/ui/nav-stack`](../public-api-signatures-v1
|
|
|
43
43
|
- configured top toolbar
|
|
44
44
|
- custom back icon or visible back text
|
|
45
45
|
- per-view bottom toolbar
|
|
46
|
+
- persistent final top-toolbar group (panelToggle) when embedded in a Workbench panel
|
|
46
47
|
- persistent bottom-toolbar fallback
|
|
47
48
|
- chrome and bottom-toolbar dividers only while the active view scrolls beneath them (wired by wireScrollDividers)
|
|
48
49
|
- permanent or no chrome dividers (chromeDividers always or none)
|
|
@@ -56,7 +57,7 @@ Exact prop names and types: [`@kerfjs/ui/nav-stack`](../public-api-signatures-v1
|
|
|
56
57
|
|
|
57
58
|
## State and wiring
|
|
58
59
|
|
|
59
|
-
**The app owns:** ordered view stack and stable keys; view content and titles; push and pop actions; preferred initial focus targets when DOM order is insufficient; per-view bottom toolbar content or a persistent fallback; per-view leading, center, and trailing top-toolbar groups; top-toolbar configuration, title size, and heading level; whether the chrome and bottom-toolbar dividers follow the scroll, always show, or never show (chromeDividers).
|
|
60
|
+
**The app owns:** ordered view stack and stable keys; view content and titles; push and pop actions; preferred initial focus targets when DOM order is insufficient; per-view bottom toolbar content or a persistent fallback; per-view leading, center, and trailing top-toolbar groups; per-view fixed header content above the active view's scroll area; top-toolbar configuration, title size, and heading level; whether the chrome and bottom-toolbar dividers follow the scroll, always show, or never show (chromeDividers).
|
|
60
61
|
|
|
61
62
|
**Wiring:** `wireNavStack`, `wireScrollDividers` is required.
|
|
62
63
|
|
|
@@ -88,9 +89,9 @@ Margin: none · border: conditional · padding: child (layout role: structure).
|
|
|
88
89
|
|
|
89
90
|
The component owns its own styles. Configure it through its props and variants; do not override its internals.
|
|
90
91
|
|
|
91
|
-
Public class hooks (select for layout placement only, never to change the component's look): `kui-nav-stack`, `kui-nav-stack__chrome`, `kui-nav-stack__bottom`, `kui-nav-stack__chrome--entering`, `kui-nav-stack__chrome-copy`, `kui-nav-stack__chrome-copy--bottom`, `kui-nav-stack__chrome-copy--exiting`, `kui-nav-stack__viewport`, `kui-nav-stack__view`, `kui-nav-stack__view--entering`, `kui-nav-stack__view--exiting`.
|
|
92
|
+
Public class hooks (select for layout placement only, never to change the component's look): `kui-nav-stack`, `kui-nav-stack__chrome`, `kui-nav-stack__bottom`, `kui-nav-stack__chrome--entering`, `kui-nav-stack__chrome-copy`, `kui-nav-stack__chrome-copy--bottom`, `kui-nav-stack__chrome-copy--exiting`, `kui-nav-stack__header`, `kui-nav-stack__viewport`, `kui-nav-stack__view`, `kui-nav-stack__view--entering`, `kui-nav-stack__view--exiting`.
|
|
92
93
|
|
|
93
|
-
Never put `kui-nav-stack`, `kui-nav-stack__chrome`, `kui-nav-stack__bottom`, `kui-nav-stack__chrome--entering`, `kui-nav-stack__chrome-copy`, `kui-nav-stack__chrome-copy--bottom`, `kui-nav-stack__chrome-copy--exiting`, `kui-nav-stack__viewport`, `kui-nav-stack__view`, `kui-nav-stack__view--entering`, `kui-nav-stack__view--exiting` on an element you write; render `NavStack` instead (`KUI-L103`).
|
|
94
|
+
Never put `kui-nav-stack`, `kui-nav-stack__chrome`, `kui-nav-stack__bottom`, `kui-nav-stack__chrome--entering`, `kui-nav-stack__chrome-copy`, `kui-nav-stack__chrome-copy--bottom`, `kui-nav-stack__chrome-copy--exiting`, `kui-nav-stack__header`, `kui-nav-stack__viewport`, `kui-nav-stack__view`, `kui-nav-stack__view--entering`, `kui-nav-stack__view--exiting` on an element you write; render `NavStack` instead (`KUI-L103`).
|
|
94
95
|
|
|
95
96
|
Public tokens it reads: `--kui-nav-stack-transition-duration`. Set a token only where its public contract allows; prefer a prop.
|
|
96
97
|
|
|
@@ -25,7 +25,7 @@ Arrange a complex tool or editor as a stable central work area with optional per
|
|
|
25
25
|
|
|
26
26
|
## Imports
|
|
27
27
|
|
|
28
|
-
- JavaScript: `@kerfjs/ui/workbench` — exports `Workbench`, `WorkbenchChromePlacement`, `WorkbenchCompactOverlay`, `WorkbenchMainBottomToolbar`, `WorkbenchMainToolbar`, `WorkbenchPanel`, `WorkbenchPanelResizable`, `WorkbenchPanelToggle`, `WorkbenchPanelToolbar`, `WorkbenchProps`, `WorkbenchResponsiveOverlayAt`.
|
|
28
|
+
- JavaScript: `@kerfjs/ui/workbench` — exports `Workbench`, `WorkbenchChromePlacement`, `WorkbenchCompactOverlay`, `WorkbenchMainBottomToolbar`, `WorkbenchMainToolbar`, `WorkbenchPanel`, `WorkbenchStaticPanel`, `WorkbenchNavigationPanel`, `WorkbenchPanelResizable`, `WorkbenchPanelToggle`, `WorkbenchPanelToolbar`, `WorkbenchProps`, `WorkbenchResponsiveOverlayAt`.
|
|
29
29
|
- CSS: the browser build of `@kerfjs/ui/workbench` pulls its CSS automatically; import `@kerfjs/ui/workbench.css` manually only without the `browser` export condition.
|
|
30
30
|
- Wiring: `wireWorkbench` from `@kerfjs/ui/wire-workbench` (optional).
|
|
31
31
|
- Wiring: `wireScrollDividers` from `@kerfjs/ui/wire-scroll-dividers` (optional).
|
|
@@ -43,6 +43,7 @@ Exact prop names and types: [`@kerfjs/ui/workbench`](../public-api-signatures-v1
|
|
|
43
43
|
- bottom drawer
|
|
44
44
|
- all panels
|
|
45
45
|
- independently collapsed panels
|
|
46
|
+
- navigation panel with per-screen toolbar, fixed header, and one scroll owner; standard toggle remains last and relocates while collapsed
|
|
46
47
|
- opt-in drag and keyboard resizable panels with min/max limits
|
|
47
48
|
- resizable rails that leave the work area a minimum width and shrink in proportion when the Workbench narrows
|
|
48
49
|
- rails or a drawer that present as overlays below a narrow or compact Workbench container breakpoint
|
|
@@ -60,6 +61,7 @@ Exact prop names and types: [`@kerfjs/ui/workbench`](../public-api-signatures-v1
|
|
|
60
61
|
- Parents: any.
|
|
61
62
|
- Contexts: `desktop-application-shell`.
|
|
62
63
|
- Children: unrestricted.
|
|
64
|
+
- Built from: [NavStack](./nav-stack.md).
|
|
63
65
|
|
|
64
66
|
Zones (a zone is bound to JSX only through its listed prop; never assume the zone id is a prop):
|
|
65
67
|
|
|
@@ -70,7 +72,7 @@ Zones (a zone is bound to JSX only through its listed prop; never assume the zon
|
|
|
70
72
|
|
|
71
73
|
## State and wiring
|
|
72
74
|
|
|
73
|
-
**The app owns:** panel presence and content; collapsed state; panel sizes; responsive replacement below desktop; collapse controls and focus policy.
|
|
75
|
+
**The app owns:** panel presence and content; collapsed state; panel sizes; navigation panel view stack and push/pop actions when navStack is supplied; responsive replacement below desktop; collapse controls and focus policy.
|
|
74
76
|
|
|
75
77
|
**Wiring:** `wireWorkbench`, `wireScrollDividers` is optional.
|
|
76
78
|
|
|
@@ -111,6 +113,6 @@ Everything else is internal: `kerf-ui-analyze` reports private or unknown `.kui-
|
|
|
111
113
|
|
|
112
114
|
## Related
|
|
113
115
|
|
|
114
|
-
- Components: [Pane](./pane.md).
|
|
116
|
+
- Components: [NavStack](./nav-stack.md), [Pane](./pane.md).
|
|
115
117
|
- Docs: [`docs/workbench.md`](../../docs/workbench.md), [`docs/workbench.md#state-lives-in-the-app`](../../docs/workbench.md#state-lives-in-the-app).
|
|
116
118
|
- UX catalog route: `?component=workbench`.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Public API signatures for the UI authoring corpus
|
|
2
2
|
|
|
3
|
-
Generated from emitted declarations for `@kerfjs/ui@5.0.0-beta.
|
|
3
|
+
Generated from emitted declarations for `@kerfjs/ui@5.0.0-beta.66` and `kerfjs@5.0.0-beta.66`. This bounded reference covers only APIs used by the seven-task corpus. It is interface evidence, not an implementation or runtime guarantee.
|
|
4
4
|
|
|
5
5
|
## `@kerfjs/ui/css-values`
|
|
6
6
|
|
|
@@ -1250,6 +1250,8 @@ interface NavStackView {
|
|
|
1250
1250
|
center?: KerfUiContent;
|
|
1251
1251
|
/** Trailing actions for this view's top toolbar. */
|
|
1252
1252
|
toolbar?: KerfUiContent;
|
|
1253
|
+
/** Fixed chrome below this view's toolbar, above its scrolling content. */
|
|
1254
|
+
header?: KerfUiContent;
|
|
1253
1255
|
/** Bottom toolbar for this view. Cross-fades with the top chrome on navigation. */
|
|
1254
1256
|
bottomToolbar?: KerfUiContent;
|
|
1255
1257
|
}
|
|
@@ -1284,6 +1286,8 @@ interface NavStackProps {
|
|
|
1284
1286
|
backText?: string;
|
|
1285
1287
|
/** The top toolbar's configuration, forwarded to its `Toolbar`. */
|
|
1286
1288
|
toolbarConfig?: NavStackToolbarConfig;
|
|
1289
|
+
/** Persistent last group in every view's top toolbar, supplied by a hosting panel. */
|
|
1290
|
+
panelToggle?: KerfUiContent;
|
|
1287
1291
|
/** Hide the top toolbar entirely (rare — a fully custom-chrome view). */
|
|
1288
1292
|
hideToolbar?: boolean;
|
|
1289
1293
|
/** Optional persistent bottom toolbar used when the active view does not provide one. */
|
|
@@ -1312,7 +1316,7 @@ interface NavStackProps {
|
|
|
1312
1316
|
* content fills the zones, and `toolbarConfig` configures it. A single-pane
|
|
1313
1317
|
* layout is a `NavStack` with one entry. See `docs/23-app-layouts.md` §3.1.
|
|
1314
1318
|
*/
|
|
1315
|
-
declare function NavStack({ id, label, views, backLabel, backIcon, backText, toolbarConfig, hideToolbar, bottomToolbar, chromeDividers, className, slot, }: NavStackProps): kerfjs.SafeHtml;
|
|
1319
|
+
declare function NavStack({ id, label, views, backLabel, backIcon, backText, toolbarConfig, panelToggle, hideToolbar, bottomToolbar, chromeDividers, className, slot, }: NavStackProps): kerfjs.SafeHtml;
|
|
1316
1320
|
|
|
1317
1321
|
export { NavStack, type NavStackProps, type NavStackToolbarConfig, type NavStackView };
|
|
1318
1322
|
```
|
|
@@ -1537,14 +1541,16 @@ export { Pane, type PaneAppearance, type PaneChromeDividers, type PaneChromePlac
|
|
|
1537
1541
|
```ts
|
|
1538
1542
|
import { SafeHtml } from 'kerfjs';
|
|
1539
1543
|
import { ListConfig } from './list.js';
|
|
1544
|
+
import { NavStackProps } from './nav-stack.js';
|
|
1540
1545
|
import { PaneConfig } from './pane.js';
|
|
1541
1546
|
import { ResizableRegionSeparator, ResizableRegionCollapseMotion, ResizableRegionContentOverflow, ResizableRegionPresentation, ResizableRegionRestorePosition } from './resizable-region.js';
|
|
1542
1547
|
import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
|
|
1543
|
-
import { a as PanelToolbar, b as PanelChromePlacement, c as PanelBottomToolbar, d as PanelToggle } from './panel-toolbar-DDKh4uKd.js';
|
|
1544
1548
|
import { ToolbarConfig } from './toolbar.js';
|
|
1549
|
+
import { a as PanelToolbar, b as PanelChromePlacement, c as PanelBottomToolbar, d as PanelToggle } from './panel-toolbar-DDKh4uKd.js';
|
|
1545
1550
|
import './css-values.js';
|
|
1546
1551
|
import './flex-alignment-4ms8ZbV8.js';
|
|
1547
1552
|
import './sides-BPSWde0A.js';
|
|
1553
|
+
import './toolbar-text.js';
|
|
1548
1554
|
import './lucide-icon.js';
|
|
1549
1555
|
import 'lucide';
|
|
1550
1556
|
|
|
@@ -1617,37 +1623,8 @@ interface WorkbenchPanelResizable {
|
|
|
1617
1623
|
/** Largest size (default 480). */
|
|
1618
1624
|
max?: number;
|
|
1619
1625
|
}
|
|
1620
|
-
/**
|
|
1621
|
-
interface
|
|
1622
|
-
content: KerfUiContent;
|
|
1623
|
-
/**
|
|
1624
|
-
* The panel's top toolbar, composed by the Workbench: its marked groups
|
|
1625
|
-
* and standard `toggle` move to the work area's toolbar while the panel is
|
|
1626
|
-
* collapsed. With it, `content` renders in a `Pane` below the toolbar.
|
|
1627
|
-
*/
|
|
1628
|
-
toolbar?: WorkbenchPanelToolbar;
|
|
1629
|
-
/** Fixed content below a toolbar panel's top toolbar, above its scroll region. */
|
|
1630
|
-
header?: KerfUiContent;
|
|
1631
|
-
/** List layout for `header`; omitted fields keep List defaults. */
|
|
1632
|
-
headerList?: ListConfig;
|
|
1633
|
-
/** Placement of the top toolbar and header together; default `fixed`. */
|
|
1634
|
-
headerPlacement?: WorkbenchChromePlacement;
|
|
1635
|
-
/** Fixed content above a toolbar panel's bottom toolbar. */
|
|
1636
|
-
footer?: KerfUiContent;
|
|
1637
|
-
/** List layout for `footer`; omitted fields keep List defaults. */
|
|
1638
|
-
footerList?: ListConfig;
|
|
1639
|
-
/** Fixed toolbar below `footer`, using footer semantics. */
|
|
1640
|
-
bottomToolbar?: WorkbenchPanelBottomToolbar;
|
|
1641
|
-
/** Placement of the footer and bottom toolbar together; default `fixed`. */
|
|
1642
|
-
footerPlacement?: WorkbenchChromePlacement;
|
|
1643
|
-
/**
|
|
1644
|
-
* Configuration for a `toolbar` panel's `Pane` (`contentElement`,
|
|
1645
|
-
* `contentLabel`, `separators`, `safeAreaEdges`, `chromeDividers`) — for example
|
|
1646
|
-
* `{ contentElement: 'nav', contentLabel: 'Sections' }` for a navigation
|
|
1647
|
-
* rail. Omitted or `undefined` fields keep the `Pane` defaults. Ignored
|
|
1648
|
-
* without a `toolbar`, where `content` renders as given.
|
|
1649
|
-
*/
|
|
1650
|
-
pane?: PaneConfig;
|
|
1626
|
+
/** Region sizing, collapse, and presentation shared by either panel body. */
|
|
1627
|
+
interface WorkbenchPanelBase {
|
|
1651
1628
|
/** Whether the panel is currently collapsed (the app owns this). */
|
|
1652
1629
|
collapsed?: boolean;
|
|
1653
1630
|
/**
|
|
@@ -1694,6 +1671,41 @@ interface WorkbenchPanel {
|
|
|
1694
1671
|
restoreControl?: SafeHtml;
|
|
1695
1672
|
restorePosition?: ResizableRegionRestorePosition;
|
|
1696
1673
|
}
|
|
1674
|
+
/** The original static panel body: one toolbar, optional fixed chrome, and one Pane. */
|
|
1675
|
+
interface WorkbenchStaticPanel extends WorkbenchPanelBase {
|
|
1676
|
+
content: KerfUiContent;
|
|
1677
|
+
/** The composed toolbar; marked groups and its toggle relocate on collapse. */
|
|
1678
|
+
toolbar?: WorkbenchPanelToolbar;
|
|
1679
|
+
header?: KerfUiContent;
|
|
1680
|
+
headerList?: ListConfig;
|
|
1681
|
+
headerPlacement?: WorkbenchChromePlacement;
|
|
1682
|
+
footer?: KerfUiContent;
|
|
1683
|
+
footerList?: ListConfig;
|
|
1684
|
+
bottomToolbar?: WorkbenchPanelBottomToolbar;
|
|
1685
|
+
footerPlacement?: WorkbenchChromePlacement;
|
|
1686
|
+
/** Configuration for the static toolbar panel's Pane. */
|
|
1687
|
+
pane?: PaneConfig;
|
|
1688
|
+
navStack?: never;
|
|
1689
|
+
}
|
|
1690
|
+
/** A panel whose active NavStack view supplies the toolbar, fixed header, and scroll body. */
|
|
1691
|
+
interface WorkbenchNavigationPanel extends WorkbenchPanelBase {
|
|
1692
|
+
navStack: Omit<NavStackProps, 'panelToggle' | 'hideToolbar' | 'className' | 'slot'>;
|
|
1693
|
+
/** Supplies the standard toggle; active view groups precede it and may relocate on collapse. */
|
|
1694
|
+
toolbar: Omit<WorkbenchPanelToolbar, 'title' | 'leading' | 'center' | 'trailing'> & {
|
|
1695
|
+
toggle: NonNullable<WorkbenchPanelToolbar['toggle']>;
|
|
1696
|
+
};
|
|
1697
|
+
content?: never;
|
|
1698
|
+
header?: never;
|
|
1699
|
+
headerList?: never;
|
|
1700
|
+
headerPlacement?: never;
|
|
1701
|
+
footer?: never;
|
|
1702
|
+
footerList?: never;
|
|
1703
|
+
bottomToolbar?: never;
|
|
1704
|
+
footerPlacement?: never;
|
|
1705
|
+
pane?: never;
|
|
1706
|
+
}
|
|
1707
|
+
/** A collapsible Workbench side rail or bottom drawer. */
|
|
1708
|
+
type WorkbenchPanel = WorkbenchStaticPanel | WorkbenchNavigationPanel;
|
|
1697
1709
|
interface WorkbenchProps {
|
|
1698
1710
|
/**
|
|
1699
1711
|
* The Workbench's `id`. Each panel's `id` derives from it —
|
|
@@ -1794,7 +1806,7 @@ interface WorkbenchProps {
|
|
|
1794
1806
|
*/
|
|
1795
1807
|
declare function Workbench({ id, label, main, leftRail, rightRail, bottomDrawer, mainToolbar, mainHeader, mainFooter, mainBottomToolbar, mainHeaderPlacement, mainFooterPlacement, mainPane, mainHeaderList, mainFooterList, mainMinSize, mainMinHeight, overlayBackdrop, className, slot, }: WorkbenchProps): SafeHtml;
|
|
1796
1808
|
|
|
1797
|
-
export { Workbench, type WorkbenchChromePlacement, type WorkbenchCompactOverlay, type WorkbenchMainBottomToolbar, type WorkbenchMainToolbar, type WorkbenchPanel, type WorkbenchPanelBottomToolbar, type WorkbenchPanelResizable, type WorkbenchPanelToggle, type WorkbenchPanelToolbar, type WorkbenchProps, type WorkbenchResponsiveOverlayAt };
|
|
1809
|
+
export { Workbench, type WorkbenchChromePlacement, type WorkbenchCompactOverlay, type WorkbenchMainBottomToolbar, type WorkbenchMainToolbar, type WorkbenchNavigationPanel, type WorkbenchPanel, type WorkbenchPanelBottomToolbar, type WorkbenchPanelResizable, type WorkbenchPanelToggle, type WorkbenchPanelToolbar, type WorkbenchProps, type WorkbenchResponsiveOverlayAt, type WorkbenchStaticPanel };
|
|
1798
1810
|
```
|
|
1799
1811
|
|
|
1800
1812
|
## `@kerfjs/ui/wire-workbench`
|
|
@@ -2385,6 +2397,8 @@ import './workbench.js';
|
|
|
2385
2397
|
import './list.js';
|
|
2386
2398
|
import './css-values.js';
|
|
2387
2399
|
import './flex-alignment-4ms8ZbV8.js';
|
|
2400
|
+
import './nav-stack.js';
|
|
2401
|
+
import './toolbar-text.js';
|
|
2388
2402
|
import './resizable-region.js';
|
|
2389
2403
|
import './panel-toolbar-DDKh4uKd.js';
|
|
2390
2404
|
import './lucide-icon.js';
|
|
@@ -2478,6 +2492,8 @@ import './workbench.js';
|
|
|
2478
2492
|
import './list.js';
|
|
2479
2493
|
import './css-values.js';
|
|
2480
2494
|
import './flex-alignment-4ms8ZbV8.js';
|
|
2495
|
+
import './nav-stack.js';
|
|
2496
|
+
import './toolbar-text.js';
|
|
2481
2497
|
import './resizable-region.js';
|
|
2482
2498
|
import './panel-toolbar-DDKh4uKd.js';
|
|
2483
2499
|
import './lucide-icon.js';
|
|
@@ -3394,6 +3410,10 @@ type GridRootAttributes = Readonly<Record<`data-${string}`, string | undefined>
|
|
|
3394
3410
|
}>;
|
|
3395
3411
|
interface GridCommonProps {
|
|
3396
3412
|
children?: KerfUiContent;
|
|
3413
|
+
/** Make this a labeled multi-select grid for `ContentItem selectionMode="multiple"` tiles. */
|
|
3414
|
+
selectionMode?: 'multiple';
|
|
3415
|
+
/** Accessible name for the multi-select grid. */
|
|
3416
|
+
ariaLabel?: string;
|
|
3397
3417
|
/** A named UI spacing token or typed CSS length. Defaults to xs. */
|
|
3398
3418
|
gap?: UiSpaceName | CssLength;
|
|
3399
3419
|
/** Allow this grid to grow/shrink, use a keyword, or supply a typed CSS flex shorthand. */
|
|
@@ -3423,7 +3443,7 @@ type GridProps = GridCommonProps & ({
|
|
|
3423
3443
|
autoFill?: boolean;
|
|
3424
3444
|
});
|
|
3425
3445
|
/** Render equal tracks with a fixed count or a responsive minimum width. */
|
|
3426
|
-
declare function Grid({ children, columns, minColumnWidth, autoFill, gap, flex, fill, className, rootAttributes, slot, }: GridProps): kerfjs.SafeHtml;
|
|
3446
|
+
declare function Grid({ children, selectionMode, ariaLabel, columns, minColumnWidth, autoFill, gap, flex, fill, className, rootAttributes, slot, }: GridProps): kerfjs.SafeHtml;
|
|
3427
3447
|
|
|
3428
3448
|
export { CssFlex, CssFlexKeyword, CssLength, Grid, type GridProps, UiSpaceName };
|
|
3429
3449
|
```
|
package/ai/skill.md
CHANGED
|
@@ -160,6 +160,10 @@ For equal-width responsive forms, set `Grid minColumnWidth={px(376)}` instead of
|
|
|
160
160
|
`columns`. Grid fits tracks from its own container width and collapses to one
|
|
161
161
|
when a second minimum-width track plus the gap no longer fits. Constrain the
|
|
162
162
|
outer Grid width when the form should have a maximum column count.
|
|
163
|
+
For selectable document tiles, set `Grid selectionMode="multiple"` and
|
|
164
|
+
`ariaLabel`, render `ContentItem selectionMode="multiple"` children, and wire
|
|
165
|
+
`wireContentItems` for arrows, Home/End, and card activation. The app owns the
|
|
166
|
+
selection set and each tile's nested controls.
|
|
163
167
|
|
|
164
168
|
For a complete shell, sidebar, workspace header, list-detail dialog, composer
|
|
165
169
|
form, list-state lifecycle, or mixed-control toolbar, start from the runnable
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Web Awesome JSX signatures for the UI authoring corpus
|
|
2
2
|
|
|
3
|
-
Generated from the emitted `@kerfjs/ui@5.0.0-beta.
|
|
3
|
+
Generated from the emitted `@kerfjs/ui@5.0.0-beta.66` declaration boundary. Import `@kerfjs/ui/webawesome` for type effects when authoring direct `wa-*` JSX. The module emits no runtime behavior and does not register custom elements.
|
|
4
4
|
|
|
5
5
|
```ts
|
|
6
6
|
import { KerfCustomElement } from 'kerfjs/jsx-runtime';
|
package/dist/browser/catalog.js
CHANGED
|
@@ -9,8 +9,9 @@ import '../styles/skeleton.css';
|
|
|
9
9
|
import '../styles/toolbar-text.css';
|
|
10
10
|
import '../styles/resizable-region.css';
|
|
11
11
|
import '../styles/floating-toolbar.css';
|
|
12
|
-
import '../styles/pane.css';
|
|
13
12
|
import '../styles/toolbar.css';
|
|
13
|
+
import '../styles/nav-stack.css';
|
|
14
|
+
import '../styles/pane.css';
|
|
14
15
|
import '../styles/workbench.css';
|
|
15
16
|
import '../styles/popup-menu.css';
|
|
16
17
|
import '../styles/row.css';
|
|
@@ -2,10 +2,13 @@ import '../styles/foundation.css';
|
|
|
2
2
|
import '../styles/resizable-region.css';
|
|
3
3
|
import '../styles/floating-toolbar.css';
|
|
4
4
|
import '../styles/list.css';
|
|
5
|
-
import '../styles/pane.css';
|
|
6
5
|
import '../styles/lucide-icon.css';
|
|
7
6
|
import '../styles/toolbar.css';
|
|
8
7
|
import '../styles/loading-spinner.css';
|
|
9
8
|
import '../styles/toolbar-control-group.css';
|
|
9
|
+
import '../styles/skeleton.css';
|
|
10
|
+
import '../styles/toolbar-text.css';
|
|
11
|
+
import '../styles/nav-stack.css';
|
|
12
|
+
import '../styles/pane.css';
|
|
10
13
|
import '../styles/workbench.css';
|
|
11
14
|
export * from '../workbench.js';
|
|
@@ -8,6 +8,8 @@ import './workbench.js';
|
|
|
8
8
|
import './list.js';
|
|
9
9
|
import './css-values.js';
|
|
10
10
|
import './flex-alignment-4ms8ZbV8.js';
|
|
11
|
+
import './nav-stack.js';
|
|
12
|
+
import './toolbar-text.js';
|
|
11
13
|
import './resizable-region.js';
|
|
12
14
|
import './panel-toolbar-DDKh4uKd.js';
|
|
13
15
|
import './lucide-icon.js';
|
package/dist/catalog.d.ts
CHANGED
|
@@ -10,6 +10,8 @@ import './workbench.js';
|
|
|
10
10
|
import './list.js';
|
|
11
11
|
import './css-values.js';
|
|
12
12
|
import './flex-alignment-4ms8ZbV8.js';
|
|
13
|
+
import './nav-stack.js';
|
|
14
|
+
import './toolbar-text.js';
|
|
13
15
|
import './resizable-region.js';
|
|
14
16
|
import './panel-toolbar-DDKh4uKd.js';
|
|
15
17
|
import './lucide-icon.js';
|
package/dist/catalog.js
CHANGED