@kerfjs/ui 5.0.0-beta.48 → 5.0.0-beta.50
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 +49 -13
- package/ai/catalog-authoring.json +12 -1
- package/ai/catalog-authoring.schema.json +49 -1
- package/ai/compile-time-contracts-v1.json +14 -0
- package/ai/compile-time-contracts-v1.schema.json +1 -0
- package/ai/component-catalog-v2-overrides.json +7 -0
- package/ai/component-catalog-v2.json +164 -23
- package/ai/component-catalog.json +184 -27
- package/ai/public-api-signatures-v1.md +239 -168
- package/ai/skill.md +27 -12
- package/ai/webawesome-jsx-signatures-v1.md +1 -1
- package/dist/app-tab.d.ts +3 -1
- package/dist/app-tab.js +1 -1
- package/dist/badge.d.ts +24 -0
- package/dist/badge.js +3 -0
- package/dist/badge.js.map +1 -0
- package/dist/browser/badge.js +3 -0
- package/dist/browser/grid.js +3 -0
- package/dist/browser/list-header.js +1 -0
- package/dist/browser/state-banner.js +1 -0
- package/dist/catalog-resources.d.ts +2 -2
- package/dist/catalog.d.ts +24 -125
- package/dist/catalog.js +387 -261
- package/dist/catalog.js.map +1 -1
- package/dist/{chunk-OGTJNHRG.js → chunk-2WMSE4MK.js} +5 -3
- package/dist/chunk-2WMSE4MK.js.map +1 -0
- package/dist/{chunk-GYGM363P.js → chunk-2YOUUEWR.js} +16 -6
- package/dist/chunk-2YOUUEWR.js.map +1 -0
- package/dist/{chunk-UDHHKZWO.js → chunk-3V75EQIP.js} +8 -4
- package/dist/chunk-3V75EQIP.js.map +1 -0
- package/dist/{chunk-W2FK7ZNY.js → chunk-4R777DUZ.js} +10 -2
- package/dist/chunk-4R777DUZ.js.map +1 -0
- package/dist/{chunk-T7DOWS6T.js → chunk-54HM36IQ.js} +6 -3
- package/dist/chunk-54HM36IQ.js.map +1 -0
- package/dist/{chunk-DAO2VFTT.js → chunk-5CE64WGC.js} +6 -4
- package/dist/chunk-5CE64WGC.js.map +1 -0
- package/dist/{chunk-SOK5EUF7.js → chunk-6ZXOQEAN.js} +4 -2
- package/dist/chunk-6ZXOQEAN.js.map +1 -0
- package/dist/{chunk-OGNE3OFT.js → chunk-AQSKJ6U6.js} +4 -2
- package/dist/chunk-AQSKJ6U6.js.map +1 -0
- package/dist/{chunk-VDUJZF5G.js → chunk-CMUIXJZM.js} +2 -2
- package/dist/{chunk-VDUJZF5G.js.map → chunk-CMUIXJZM.js.map} +1 -1
- package/dist/{chunk-OMSRSL3B.js → chunk-COUPLRZG.js} +5 -3
- package/dist/chunk-COUPLRZG.js.map +1 -0
- package/dist/{chunk-2TYUFZUC.js → chunk-D7GWXIAS.js} +4 -2
- package/dist/chunk-D7GWXIAS.js.map +1 -0
- package/dist/{chunk-AQFWBG23.js → chunk-DARTMI5Z.js} +5 -3
- package/dist/chunk-DARTMI5Z.js.map +1 -0
- package/dist/{chunk-V6GQKOX2.js → chunk-DJKWFYAA.js} +5 -3
- package/dist/chunk-DJKWFYAA.js.map +1 -0
- package/dist/{chunk-6NDBE2OK.js → chunk-E36EVCKG.js} +5 -3
- package/dist/chunk-E36EVCKG.js.map +1 -0
- package/dist/chunk-ELRMBQEC.js +47 -0
- package/dist/chunk-ELRMBQEC.js.map +1 -0
- package/dist/{chunk-TIGSG6BX.js → chunk-HJKRCKDR.js} +7 -3
- package/dist/chunk-HJKRCKDR.js.map +1 -0
- package/dist/{chunk-Y6LYKFXY.js → chunk-HMQ2ZDGG.js} +5 -3
- package/dist/chunk-HMQ2ZDGG.js.map +1 -0
- package/dist/{chunk-WN52USHV.js → chunk-J3EE6XWD.js} +2 -2
- package/dist/{chunk-WN52USHV.js.map → chunk-J3EE6XWD.js.map} +1 -1
- package/dist/{chunk-CK6P5AUK.js → chunk-KKNK3JUT.js} +7 -4
- package/dist/chunk-KKNK3JUT.js.map +1 -0
- package/dist/{chunk-ZPWZIVI6.js → chunk-N3GKMPDW.js} +7 -3
- package/dist/chunk-N3GKMPDW.js.map +1 -0
- package/dist/{chunk-DYBPI5O2.js → chunk-NDUGJ4TU.js} +4 -2
- package/dist/chunk-NDUGJ4TU.js.map +1 -0
- package/dist/{chunk-WSXUPSID.js → chunk-NN6GYOA2.js} +7 -3
- package/dist/chunk-NN6GYOA2.js.map +1 -0
- package/dist/{chunk-VXFGMDA7.js → chunk-OQI7RCRP.js} +10 -2
- package/dist/chunk-OQI7RCRP.js.map +1 -0
- package/dist/{chunk-E34TE2ZI.js → chunk-S6ZTTTV7.js} +5 -3
- package/dist/chunk-S6ZTTTV7.js.map +1 -0
- package/dist/{chunk-V6HCTCVD.js → chunk-SIU2AC5W.js} +8 -4
- package/dist/chunk-SIU2AC5W.js.map +1 -0
- package/dist/{chunk-WVLMZ5SG.js → chunk-UMGY5JSP.js} +4 -2
- package/dist/chunk-UMGY5JSP.js.map +1 -0
- package/dist/{chunk-I4V3UDSA.js → chunk-V6RZWDII.js} +7 -5
- package/dist/chunk-V6RZWDII.js.map +1 -0
- package/dist/{chunk-CAB6NQ2T.js → chunk-VOCPXGQN.js} +3 -1
- package/dist/chunk-VOCPXGQN.js.map +1 -0
- package/dist/chunk-XD7DWYXG.js +34 -0
- package/dist/chunk-XD7DWYXG.js.map +1 -0
- package/dist/{chunk-B6JYRX3P.js → chunk-ZIYOJFZD.js} +43 -4
- package/dist/chunk-ZIYOJFZD.js.map +1 -0
- package/dist/{chunk-EYALJQQD.js → chunk-ZK5EGVFP.js} +4 -2
- package/dist/chunk-ZK5EGVFP.js.map +1 -0
- package/dist/{chunk-6WTETUZ6.js → chunk-ZLWQZUGF.js} +8 -2
- package/dist/chunk-ZLWQZUGF.js.map +1 -0
- package/dist/{chunk-XKFRMGMW.js → chunk-ZNZ2JDBW.js} +3 -1
- package/dist/chunk-ZNZ2JDBW.js.map +1 -0
- package/dist/{chunk-I45QO2IZ.js → chunk-ZSYLBVWG.js} +6 -4
- package/dist/chunk-ZSYLBVWG.js.map +1 -0
- package/dist/collapsible-panel.d.ts +3 -1
- package/dist/collapsible-panel.js +4 -2
- package/dist/collapsible-panel.js.map +1 -1
- package/dist/disclosure-arrow.d.ts +3 -1
- package/dist/disclosure-arrow.js +1 -1
- package/dist/empty-state.d.ts +3 -1
- package/dist/empty-state.js +1 -1
- package/dist/floating-toolbar.d.ts +3 -1
- package/dist/floating-toolbar.js +1 -1
- package/dist/grid.d.ts +20 -0
- package/dist/grid.js +4 -0
- package/dist/grid.js.map +1 -0
- package/dist/index.d.ts +4 -2
- package/dist/index.js +33 -31
- package/dist/list-action-row.d.ts +3 -1
- package/dist/list-action-row.js +1 -1
- package/dist/list-header.d.ts +6 -1
- package/dist/list-header.js +2 -1
- package/dist/list-inset-control.d.ts +3 -1
- package/dist/list-inset-control.js +1 -1
- package/dist/list-inset-text.d.ts +3 -1
- package/dist/list-inset-text.js +1 -1
- package/dist/list-item.d.ts +3 -1
- package/dist/list-item.js +1 -1
- package/dist/list.d.ts +3 -1
- package/dist/list.js +1 -1
- package/dist/loading-spinner.d.ts +3 -1
- package/dist/loading-spinner.js +1 -1
- package/dist/lucide-icon.d.ts +3 -1
- package/dist/lucide-icon.js +1 -1
- package/dist/nav-stack.d.ts +3 -1
- package/dist/nav-stack.js +1 -1
- package/dist/pane.d.ts +3 -1
- package/dist/pane.js +1 -1
- package/dist/resizable-region.d.ts +5 -2
- package/dist/resizable-region.js +1 -1
- package/dist/row.d.ts +3 -1
- package/dist/row.js +1 -1
- package/dist/segmented-control.d.ts +3 -1
- package/dist/segmented-control.js +1 -1
- package/dist/select.d.ts +3 -1
- package/dist/select.js +1 -1
- package/dist/skeleton.d.ts +3 -1
- package/dist/skeleton.js +1 -1
- package/dist/spacer.d.ts +3 -1
- package/dist/spacer.js +1 -1
- package/dist/split-view.d.ts +3 -1
- package/dist/split-view.js +24 -5
- package/dist/split-view.js.map +1 -1
- package/dist/state-banner.d.ts +3 -1
- package/dist/state-banner.js +2 -1
- package/dist/styles/badge.css +86 -0
- package/dist/styles/catalog/components/catalog-detail.css +35 -0
- package/dist/styles/catalog/components/catalog-example-stack.css +6 -0
- package/dist/styles/catalog/components/catalog-example.css +35 -0
- package/dist/styles/catalog/components/catalog-resource-footer.css +37 -0
- package/dist/styles/catalog/components/catalog-secondary-sections.css +38 -0
- package/dist/styles/catalog/components/catalog-section-list.css +22 -0
- package/dist/styles/catalog/components/catalog-sidebar.css +82 -0
- package/dist/styles/catalog/components/catalog-stage.css +60 -0
- package/dist/styles/catalog/components/catalog.css +22 -0
- package/dist/styles/catalog.css +10 -587
- package/dist/styles/grid.css +11 -0
- package/dist/styles/list-header.css +4 -60
- package/dist/styles/resizable-region.css +24 -0
- package/dist/styles/select.css +0 -3
- package/dist/styles/split-view.css +1 -1
- package/dist/styles/state-banner.css +0 -27
- package/dist/styles/styles.css +2 -0
- package/dist/styles/tab-bar.css +6 -1
- package/dist/styles/text.css +4 -0
- package/dist/styles/token-search-field.css +5 -40
- package/dist/styles/toolbar-control-group.css +110 -16
- package/dist/styles/toolbar-text.css +4 -0
- package/dist/styles/toolbar.css +72 -0
- package/dist/styles/webawesome.css +31 -0
- package/dist/sunken-panel.d.ts +3 -1
- package/dist/sunken-panel.js +1 -1
- package/dist/surface-scaffold.d.ts +6 -2
- package/dist/surface-scaffold.js +1 -1
- package/dist/tab-bar.d.ts +8 -1
- package/dist/tab-bar.js +1 -1
- package/dist/tab-scaffold.d.ts +3 -1
- package/dist/tab-scaffold.js +3 -1
- package/dist/tab-scaffold.js.map +1 -1
- package/dist/text.d.ts +5 -2
- package/dist/text.js +1 -1
- package/dist/token-search-field.d.ts +5 -1
- package/dist/token-search-field.js +1 -1
- package/dist/toolbar-control-group.d.ts +33 -3
- package/dist/toolbar-control-group.js +1 -1
- package/dist/toolbar-text.d.ts +3 -1
- package/dist/toolbar-text.js +1 -1
- package/dist/toolbar.d.ts +9 -1
- package/dist/toolbar.js +1 -1
- package/dist/types-CzgSrFXP.d.ts +64 -0
- package/dist/value-table.d.ts +6 -2
- package/dist/value-table.js +1 -1
- package/dist/wire-resizable-regions.js +1 -1
- package/dist/wire-token-search-fields.js +1 -1
- package/dist/workbench.d.ts +3 -1
- package/dist/workbench.js +3 -1
- package/dist/workbench.js.map +1 -1
- package/docs/accessibility.md +11 -1
- package/docs/catalog.md +25 -7
- package/docs/component-contract.md +71 -22
- package/docs/component-selection.md +19 -14
- package/docs/design-philosophy.md +6 -5
- package/docs/layout.md +24 -1
- package/docs/recipes.md +5 -5
- package/docs/type-contracts.md +1 -0
- package/docs/ux-demo.md +4 -4
- package/docs/webawesome-theme.md +8 -4
- package/llms.txt +35 -8
- package/package.json +15 -2
- package/ux-demo/recipes/app-shell.css +87 -0
- package/ux-demo/recipes/app-shell.tsx +207 -178
- package/ux-demo/recipes/collapsible-sidebar.css +83 -0
- package/ux-demo/recipes/collapsible-sidebar.tsx +152 -122
- package/ux-demo/recipes/compact-toolbar.css +35 -0
- package/ux-demo/recipes/compact-toolbar.tsx +104 -100
- package/ux-demo/recipes/composer-form.css +19 -0
- package/ux-demo/recipes/composer-form.tsx +19 -15
- package/ux-demo/recipes/list-detail-dialog.css +42 -0
- package/ux-demo/recipes/list-detail-dialog.tsx +127 -125
- package/ux-demo/recipes/list-workspace-states.css +30 -0
- package/ux-demo/recipes/list-workspace-states.tsx +66 -60
- package/ux-demo/recipes/loading-inspector.css +7 -0
- package/ux-demo/recipes/loading-inspector.tsx +151 -131
- package/ux-demo/recipes/navigation-sidebar.css +12 -0
- package/ux-demo/recipes/navigation-sidebar.tsx +116 -105
- package/ux-demo/recipes/navigation-stack.css +12 -0
- package/ux-demo/recipes/navigation-stack.tsx +47 -37
- package/ux-demo/recipes/recipe-root.css +67 -0
- package/ux-demo/recipes/recipe-root.tsx +87 -0
- package/ux-demo/recipes/workspace-header.css +7 -0
- package/ux-demo/recipes/workspace-header.tsx +60 -61
- package/dist/chunk-2TYUFZUC.js.map +0 -1
- package/dist/chunk-6NDBE2OK.js.map +0 -1
- package/dist/chunk-6WTETUZ6.js.map +0 -1
- package/dist/chunk-AQFWBG23.js.map +0 -1
- package/dist/chunk-B6JYRX3P.js.map +0 -1
- package/dist/chunk-CAB6NQ2T.js.map +0 -1
- package/dist/chunk-CK6P5AUK.js.map +0 -1
- package/dist/chunk-DAO2VFTT.js.map +0 -1
- package/dist/chunk-DYBPI5O2.js.map +0 -1
- package/dist/chunk-E34TE2ZI.js.map +0 -1
- package/dist/chunk-EYALJQQD.js.map +0 -1
- package/dist/chunk-GYGM363P.js.map +0 -1
- package/dist/chunk-I45QO2IZ.js.map +0 -1
- package/dist/chunk-I4V3UDSA.js.map +0 -1
- package/dist/chunk-OGNE3OFT.js.map +0 -1
- package/dist/chunk-OGTJNHRG.js.map +0 -1
- package/dist/chunk-OMSRSL3B.js.map +0 -1
- package/dist/chunk-SOK5EUF7.js.map +0 -1
- package/dist/chunk-T7DOWS6T.js.map +0 -1
- package/dist/chunk-TIGSG6BX.js.map +0 -1
- package/dist/chunk-UDHHKZWO.js.map +0 -1
- package/dist/chunk-V6GQKOX2.js.map +0 -1
- package/dist/chunk-V6HCTCVD.js.map +0 -1
- package/dist/chunk-VXFGMDA7.js.map +0 -1
- package/dist/chunk-W2FK7ZNY.js.map +0 -1
- package/dist/chunk-WSXUPSID.js.map +0 -1
- package/dist/chunk-WVLMZ5SG.js.map +0 -1
- package/dist/chunk-XKFRMGMW.js.map +0 -1
- package/dist/chunk-Y6LYKFXY.js.map +0 -1
- package/dist/chunk-ZPWZIVI6.js.map +0 -1
- package/ux-demo/recipes/recipes.css +0 -453
|
@@ -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.50` and `kerfjs@5.0.0-beta.50`. 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
|
|
|
@@ -95,8 +95,10 @@ interface DisclosureArrowProps {
|
|
|
95
95
|
/** Replacement icons should use right as their unrotated orientation. */
|
|
96
96
|
icon?: SafeHtml;
|
|
97
97
|
className?: string;
|
|
98
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
99
|
+
slot?: string;
|
|
98
100
|
}
|
|
99
|
-
declare function DisclosureArrow({ open, openDirection, closedDirection, icon, className, }: DisclosureArrowProps): SafeHtml;
|
|
101
|
+
declare function DisclosureArrow({ open, openDirection, closedDirection, icon, className, slot, }: DisclosureArrowProps): SafeHtml;
|
|
100
102
|
|
|
101
103
|
export { DisclosureArrow, type DisclosureArrowProps, type DisclosureDirection };
|
|
102
104
|
```
|
|
@@ -115,9 +117,17 @@ interface ToolbarProps {
|
|
|
115
117
|
label?: string;
|
|
116
118
|
/** Physical divider edges in canonical top/right/bottom/left order. Defaults to bottom. */
|
|
117
119
|
dividerSides?: DividerSides;
|
|
120
|
+
/** Horizontal treatment of the center zone. Defaults to centered content. */
|
|
121
|
+
centerAlign?: 'center' | 'stretch';
|
|
122
|
+
/** Component-owned responsive layout; applications choose the policy rather than restyling toolbar internals. */
|
|
123
|
+
responsive?: 'none' | 'stack' | 'center-priority';
|
|
124
|
+
/** Container width at which `responsive="stack"` activates. */
|
|
125
|
+
responsiveAt?: 'compact' | 'narrow';
|
|
118
126
|
className?: string;
|
|
127
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
128
|
+
slot?: string;
|
|
119
129
|
}
|
|
120
|
-
declare function Toolbar({ leading, center, trailing, label, dividerSides, className, }: ToolbarProps): kerfjs.SafeHtml;
|
|
130
|
+
declare function Toolbar({ leading, center, trailing, label, dividerSides, centerAlign, responsive, responsiveAt, className, slot, }: ToolbarProps): kerfjs.SafeHtml;
|
|
121
131
|
|
|
122
132
|
export { DividerSides, Toolbar, type ToolbarProps };
|
|
123
133
|
```
|
|
@@ -150,6 +160,8 @@ interface ToolbarTextBaseProps {
|
|
|
150
160
|
* instead. Default true.
|
|
151
161
|
*/
|
|
152
162
|
ellipsis?: boolean;
|
|
163
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
164
|
+
slot?: string;
|
|
153
165
|
}
|
|
154
166
|
type ToolbarTextWrappingProps = {
|
|
155
167
|
/** Wrap onto multiple lines; combine with `maxLines` to cap them. */
|
|
@@ -160,7 +172,7 @@ type ToolbarTextWrappingProps = {
|
|
|
160
172
|
maxLines?: never;
|
|
161
173
|
};
|
|
162
174
|
type ToolbarTextProps = ToolbarTextBaseProps & ToolbarTextWrappingProps;
|
|
163
|
-
declare function ToolbarText({ text, size, className, id, headingLevel, placeholder, wrap, ellipsis, maxLines, }: ToolbarTextProps): kerfjs.SafeHtml;
|
|
175
|
+
declare function ToolbarText({ text, size, className, id, headingLevel, placeholder, wrap, ellipsis, maxLines, slot, }: ToolbarTextProps): kerfjs.SafeHtml;
|
|
164
176
|
|
|
165
177
|
export { type HeadingLevel, ToolbarText, type ToolbarTextProps, type ToolbarTextSize };
|
|
166
178
|
```
|
|
@@ -177,9 +189,29 @@ type ToolbarControlGroupButtonAppearance = 'plain' | 'push';
|
|
|
177
189
|
type ToolbarControlGroupShape = 'pill' | 'rounded';
|
|
178
190
|
type ToolbarControlGroupSize = 'default' | 'compact';
|
|
179
191
|
type ToolbarControlGroupDensity = 'comfortable' | 'tight';
|
|
180
|
-
type ToolbarControlGroupContent = 'icon' | 'text' | 'mixed' | 'avatar';
|
|
192
|
+
type ToolbarControlGroupContent = 'icon' | 'text' | 'mixed' | 'avatar' | 'search';
|
|
193
|
+
type ToolbarControlGroupFocusRing = 'control' | 'outline' | 'halo';
|
|
181
194
|
type ToolbarControlGroupSelectedChrome = 'raised' | 'filled' | 'outline';
|
|
182
195
|
type ToolbarControlGroupSelectedTone = 'brand' | 'neutral' | 'pop';
|
|
196
|
+
type ToolbarControlGroupOverflow = 'visible' | 'scroll';
|
|
197
|
+
type ToolbarControlGroupMenuInset = 'standard' | 'compact' | 'list-zero';
|
|
198
|
+
type ToolbarControlGroupVisibility = 'always' | 'compact-only';
|
|
199
|
+
interface ToolbarActionLinkProps {
|
|
200
|
+
href: string;
|
|
201
|
+
label: string;
|
|
202
|
+
icon?: KerfUiContent;
|
|
203
|
+
/** Optional machine-readable detail hidden visually but included in the default accessible name. */
|
|
204
|
+
detail?: string;
|
|
205
|
+
/** Override the accessible name when surrounding context is needed. */
|
|
206
|
+
ariaLabel?: string;
|
|
207
|
+
/** Open in a new tab with a safe rel and announce that behavior. */
|
|
208
|
+
external?: boolean;
|
|
209
|
+
className?: string;
|
|
210
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
211
|
+
slot?: string;
|
|
212
|
+
}
|
|
213
|
+
/** A semantic anchor with ToolbarControlGroup-owned action geometry. */
|
|
214
|
+
declare function ToolbarActionLink({ href, label, icon, detail, ariaLabel, external, className, slot, }: ToolbarActionLinkProps): kerfjs.SafeHtml;
|
|
183
215
|
interface ToolbarControlGroupProps {
|
|
184
216
|
children: KerfUiContent;
|
|
185
217
|
label?: string;
|
|
@@ -194,10 +226,18 @@ interface ToolbarControlGroupProps {
|
|
|
194
226
|
size?: ToolbarControlGroupSize;
|
|
195
227
|
density?: ToolbarControlGroupDensity;
|
|
196
228
|
content?: ToolbarControlGroupContent;
|
|
229
|
+
/** Whether controls paint focus individually or the group paints an outline/halo on focus-within. */
|
|
230
|
+
focusRing?: ToolbarControlGroupFocusRing;
|
|
197
231
|
selectedChrome?: ToolbarControlGroupSelectedChrome;
|
|
198
232
|
selectedTone?: ToolbarControlGroupSelectedTone;
|
|
199
233
|
/** Size a nested Web Awesome dropdown trigger as part of this group. */
|
|
200
234
|
nestedDropdown?: boolean;
|
|
235
|
+
/** Configure the nested dropdown menu inset without consumer ::part() CSS. */
|
|
236
|
+
menuInset?: ToolbarControlGroupMenuInset;
|
|
237
|
+
/** Keep an overlong row of actions inside the available width with horizontal scrolling. */
|
|
238
|
+
overflow?: ToolbarControlGroupOverflow;
|
|
239
|
+
/** Responsive visibility owned by the enclosing Toolbar container. */
|
|
240
|
+
visibility?: ToolbarControlGroupVisibility;
|
|
201
241
|
/** Add contrast behind photo-backed avatar content. */
|
|
202
242
|
scrim?: boolean;
|
|
203
243
|
/**
|
|
@@ -205,10 +245,12 @@ interface ToolbarControlGroupProps {
|
|
|
205
245
|
* multi-control group paints it only on the pressed selection highlight.
|
|
206
246
|
*/
|
|
207
247
|
avatarImage?: string;
|
|
248
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
249
|
+
slot?: string;
|
|
208
250
|
}
|
|
209
|
-
declare function ToolbarControlGroup({ children, label, className, expanded, single, appearance, tone, buttonAppearance, shape, size, density, content, selectedChrome, selectedTone, nestedDropdown, scrim, avatarImage, }: ToolbarControlGroupProps): kerfjs.SafeHtml;
|
|
251
|
+
declare function ToolbarControlGroup({ children, label, className, expanded, single, appearance, tone, buttonAppearance, shape, size, density, content, focusRing, selectedChrome, selectedTone, nestedDropdown, menuInset, overflow, visibility, scrim, avatarImage, slot, }: ToolbarControlGroupProps): kerfjs.SafeHtml;
|
|
210
252
|
|
|
211
|
-
export { ToolbarControlGroup, type ToolbarControlGroupAppearance, type ToolbarControlGroupButtonAppearance, type ToolbarControlGroupContent, type ToolbarControlGroupDensity, type ToolbarControlGroupProps, type ToolbarControlGroupSelectedChrome, type ToolbarControlGroupSelectedTone, type ToolbarControlGroupShape, type ToolbarControlGroupSize, type ToolbarControlGroupTone };
|
|
253
|
+
export { ToolbarActionLink, type ToolbarActionLinkProps, ToolbarControlGroup, type ToolbarControlGroupAppearance, type ToolbarControlGroupButtonAppearance, type ToolbarControlGroupContent, type ToolbarControlGroupDensity, type ToolbarControlGroupFocusRing, type ToolbarControlGroupMenuInset, type ToolbarControlGroupOverflow, type ToolbarControlGroupProps, type ToolbarControlGroupSelectedChrome, type ToolbarControlGroupSelectedTone, type ToolbarControlGroupShape, type ToolbarControlGroupSize, type ToolbarControlGroupTone, type ToolbarControlGroupVisibility };
|
|
212
254
|
```
|
|
213
255
|
|
|
214
256
|
## `@kerfjs/ui/floating-toolbar`
|
|
@@ -230,6 +272,8 @@ interface FloatingToolbarProps {
|
|
|
230
272
|
*/
|
|
231
273
|
position?: FloatingToolbarPosition;
|
|
232
274
|
className?: string;
|
|
275
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
276
|
+
slot?: string;
|
|
233
277
|
}
|
|
234
278
|
/**
|
|
235
279
|
* A toolbar that floats above the main content of its nearest positioned
|
|
@@ -240,7 +284,7 @@ interface FloatingToolbarProps {
|
|
|
240
284
|
* top toolbar's own inset); override that token to move it. The app owns the
|
|
241
285
|
* controls and their behavior — wire them with `delegate()` as usual.
|
|
242
286
|
*/
|
|
243
|
-
declare function FloatingToolbar({ children, label, position, className, }: FloatingToolbarProps): kerfjs.SafeHtml;
|
|
287
|
+
declare function FloatingToolbar({ children, label, position, className, slot, }: FloatingToolbarProps): kerfjs.SafeHtml;
|
|
244
288
|
|
|
245
289
|
export { FloatingToolbar, type FloatingToolbarPosition, type FloatingToolbarProps };
|
|
246
290
|
```
|
|
@@ -258,6 +302,7 @@ type ListHeaderRootAttributes = Readonly<Record<`data-${string}`, string | undef
|
|
|
258
302
|
'data-density'?: never;
|
|
259
303
|
'data-divider'?: never;
|
|
260
304
|
'data-inline'?: never;
|
|
305
|
+
'data-width'?: never;
|
|
261
306
|
'data-indicator-tone'?: never;
|
|
262
307
|
'data-toggle'?: never;
|
|
263
308
|
}>;
|
|
@@ -274,11 +319,15 @@ interface ListHeaderBaseProps {
|
|
|
274
319
|
divider?: 'none' | 'before' | 'after' | 'both';
|
|
275
320
|
/** Shrink-wrap the header without its default outer margin, border, or padding. */
|
|
276
321
|
inline?: boolean;
|
|
322
|
+
/** Fill the available row or shrink-wrap while retaining normal header geometry. */
|
|
323
|
+
width?: 'fill' | 'content';
|
|
277
324
|
indicatorTone?: 'neutral' | 'accent' | 'pop' | 'danger';
|
|
278
325
|
/** Render as an unanimated loading skeleton: keep the label and action affordance, disable interaction. */
|
|
279
326
|
placeholder?: boolean;
|
|
280
327
|
rootAttributes?: ListHeaderRootAttributes;
|
|
281
328
|
triggerAttributes?: ListHeaderTriggerAttributes;
|
|
329
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
330
|
+
slot?: string;
|
|
282
331
|
}
|
|
283
332
|
type ListHeaderModeProps = {
|
|
284
333
|
/** Render the title as a controlled disclosure trigger. */
|
|
@@ -325,7 +374,7 @@ type ListHeaderIndicatorProps = {
|
|
|
325
374
|
status?: SafeHtml;
|
|
326
375
|
};
|
|
327
376
|
type ListHeaderProps = ListHeaderBaseProps & ListHeaderIndicatorProps & ListHeaderModeProps;
|
|
328
|
-
declare function ListHeader({ label, count, countLabel, badge, status, density, divider, inline, indicatorTone, action, actionLabel, actionIcon, actionDisabled, disabledReason, expanded, toggle, placeholder, rootAttributes, triggerAttributes, }: ListHeaderProps): SafeHtml;
|
|
377
|
+
declare function ListHeader({ label, count, countLabel, badge, status, density, divider, inline, width, indicatorTone, action, actionLabel, actionIcon, actionDisabled, disabledReason, expanded, toggle, placeholder, rootAttributes, triggerAttributes, slot, }: ListHeaderProps): SafeHtml;
|
|
329
378
|
|
|
330
379
|
export { ListHeader, type ListHeaderProps };
|
|
331
380
|
```
|
|
@@ -359,9 +408,11 @@ interface ListProps {
|
|
|
359
408
|
/** Physical sides that receive the standard 8px control inset. Text insets win on overlap. */
|
|
360
409
|
controlInsets?: Sides;
|
|
361
410
|
className?: string;
|
|
411
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
412
|
+
slot?: string;
|
|
362
413
|
}
|
|
363
414
|
/** A stretch-aligned vertical stack with optional gap, flex, scroll, and dividers. */
|
|
364
|
-
declare function List({ children, gap, flex, hAlign, vAlign, scrollable, dividerSides, textInsets, controlInsets, className, }: ListProps): kerfjs.SafeHtml;
|
|
415
|
+
declare function List({ children, gap, flex, hAlign, vAlign, scrollable, dividerSides, textInsets, controlInsets, className, slot, }: ListProps): kerfjs.SafeHtml;
|
|
365
416
|
|
|
366
417
|
export { CssFlex, CssFlexKeyword, CssLength, DividerSides, HorizontalAlignment, List, type ListProps, ListVerticalAlignment, Sides, UiSpaceName };
|
|
367
418
|
```
|
|
@@ -426,8 +477,10 @@ interface ListActionRowProps {
|
|
|
426
477
|
className?: string;
|
|
427
478
|
rootAttributes?: ListActionRowRootAttributes;
|
|
428
479
|
trailingActionAttributes?: ListActionRowTrailingAttributes;
|
|
480
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
481
|
+
slot?: string;
|
|
429
482
|
}
|
|
430
|
-
declare function ListActionRow({ label, description, status, busy, density, divider, icon, action, itemId, selected, pressed, accessibleLabel, title, multiline, state, disabled, tabIndex, placeholder, trailingAction, trailingActionLabel, trailingActionIcon, trailingActionDisabled, trailingActionTitle, trailingActionVisibility, className, rootAttributes, trailingActionAttributes, }: ListActionRowProps): SafeHtml;
|
|
483
|
+
declare function ListActionRow({ label, description, status, busy, density, divider, icon, action, itemId, selected, pressed, accessibleLabel, title, multiline, state, disabled, tabIndex, placeholder, trailingAction, trailingActionLabel, trailingActionIcon, trailingActionDisabled, trailingActionTitle, trailingActionVisibility, className, rootAttributes, trailingActionAttributes, slot, }: ListActionRowProps): SafeHtml;
|
|
431
484
|
|
|
432
485
|
export { ListActionRow, type ListActionRowProps };
|
|
433
486
|
```
|
|
@@ -476,8 +529,10 @@ interface ListItemProps {
|
|
|
476
529
|
/** Render the row as an unanimated loading skeleton, disabling its action. */
|
|
477
530
|
placeholder?: boolean;
|
|
478
531
|
rootAttributes?: ListItemRootAttributes;
|
|
532
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
533
|
+
slot?: string;
|
|
479
534
|
}
|
|
480
|
-
declare function ListItem({ label, description, icon, trailing, status, busy, density, divider, selected, action, itemId, className, pressed, accessibleLabel, title, multiline, state, disabled, tabIndex, placeholder, rootAttributes, }: ListItemProps): SafeHtml;
|
|
535
|
+
declare function ListItem({ label, description, icon, trailing, status, busy, density, divider, selected, action, itemId, className, pressed, accessibleLabel, title, multiline, state, disabled, tabIndex, placeholder, rootAttributes, slot, }: ListItemProps): SafeHtml;
|
|
481
536
|
|
|
482
537
|
export { ListItem, type ListItemProps };
|
|
483
538
|
```
|
|
@@ -495,6 +550,8 @@ interface ListInsetControlProps {
|
|
|
495
550
|
/** Physical inset sides in canonical top/right/bottom/left order. Defaults to all sides. */
|
|
496
551
|
sides?: Sides;
|
|
497
552
|
className?: string;
|
|
553
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
554
|
+
slot?: string;
|
|
498
555
|
}
|
|
499
556
|
/**
|
|
500
557
|
* Insets a control into a pane/list content region: an 8px inline margin (so its
|
|
@@ -502,7 +559,7 @@ interface ListInsetControlProps {
|
|
|
502
559
|
* Use it for controls that carry their own border and padding but no outer margin
|
|
503
560
|
* — the wrapper adds only the alignment margin and layout, not a second inset.
|
|
504
561
|
*/
|
|
505
|
-
declare function ListInsetControl({ children, sides, className, }: ListInsetControlProps): kerfjs.SafeHtml;
|
|
562
|
+
declare function ListInsetControl({ children, sides, className, slot, }: ListInsetControlProps): kerfjs.SafeHtml;
|
|
506
563
|
|
|
507
564
|
export { ListInsetControl, type ListInsetControlProps, Sides };
|
|
508
565
|
```
|
|
@@ -527,6 +584,8 @@ interface ListInsetTextProps {
|
|
|
527
584
|
*/
|
|
528
585
|
horizontalOnly?: boolean;
|
|
529
586
|
className?: string;
|
|
587
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
588
|
+
slot?: string;
|
|
530
589
|
}
|
|
531
590
|
/**
|
|
532
591
|
* Gives bare text the content-item geometry — an 8px inline margin, a 1px
|
|
@@ -536,7 +595,7 @@ interface ListInsetTextProps {
|
|
|
536
595
|
* Pass `horizontalOnly` to keep the horizontal inset but drop the vertical box
|
|
537
596
|
* space for tight text layout.
|
|
538
597
|
*/
|
|
539
|
-
declare function ListInsetText({ children, sides, horizontalOnly, className, }: ListInsetTextProps): kerfjs.SafeHtml;
|
|
598
|
+
declare function ListInsetText({ children, sides, horizontalOnly, className, slot, }: ListInsetTextProps): kerfjs.SafeHtml;
|
|
540
599
|
|
|
541
600
|
export { ListInsetText, type ListInsetTextProps, Sides };
|
|
542
601
|
```
|
|
@@ -555,15 +614,19 @@ interface ValueTableRowProps {
|
|
|
555
614
|
className?: string;
|
|
556
615
|
/** Render the value as an unanimated loading skeleton, keeping the field label. */
|
|
557
616
|
placeholder?: boolean;
|
|
617
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
618
|
+
slot?: string;
|
|
558
619
|
}
|
|
559
|
-
declare function ValueTableRow({ label, value, icon, className, placeholder, }: ValueTableRowProps): SafeHtml;
|
|
620
|
+
declare function ValueTableRow({ label, value, icon, className, placeholder, slot, }: ValueTableRowProps): SafeHtml;
|
|
560
621
|
|
|
561
622
|
interface ValueTableProps {
|
|
562
623
|
label: string;
|
|
563
624
|
className?: string;
|
|
564
625
|
children: KerfUiContent;
|
|
626
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
627
|
+
slot?: string;
|
|
565
628
|
}
|
|
566
|
-
declare function ValueTable({ label, className, children, }: ValueTableProps): kerfjs.SafeHtml;
|
|
629
|
+
declare function ValueTable({ label, className, children, slot, }: ValueTableProps): kerfjs.SafeHtml;
|
|
567
630
|
|
|
568
631
|
export { ValueTable, type ValueTableProps, ValueTableRow, type ValueTableRowProps };
|
|
569
632
|
```
|
|
@@ -606,8 +669,10 @@ interface AppTabProps {
|
|
|
606
669
|
/** Render as an unanimated loading skeleton, disabling select/close and dragging. */
|
|
607
670
|
placeholder?: boolean;
|
|
608
671
|
rootAttributes?: AppTabRootAttributes;
|
|
672
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
673
|
+
slot?: string;
|
|
609
674
|
}
|
|
610
|
-
declare function AppTab({ id, name, selected, closable, draggable, leading, trailing, presentation, size, labelMaxWidth, closeIcon, selectAction, closeAction, className, placeholder, rootAttributes, }: AppTabProps): SafeHtml;
|
|
675
|
+
declare function AppTab({ id, name, selected, closable, draggable, leading, trailing, presentation, size, labelMaxWidth, closeIcon, selectAction, closeAction, className, placeholder, rootAttributes, slot, }: AppTabProps): SafeHtml;
|
|
611
676
|
|
|
612
677
|
export { AppTab, type AppTabPresentation, type AppTabProps, type AppTabSize };
|
|
613
678
|
```
|
|
@@ -628,6 +693,11 @@ interface TabBarProps {
|
|
|
628
693
|
children: KerfUiContent;
|
|
629
694
|
leading?: KerfUiContent;
|
|
630
695
|
trailing?: KerfUiContent;
|
|
696
|
+
/**
|
|
697
|
+
* Action pinned to the far edge of the bar. Combine with an adjacent `trailing`
|
|
698
|
+
* action when the tab-local and workspace-level actions must remain distinct.
|
|
699
|
+
*/
|
|
700
|
+
end?: KerfUiContent;
|
|
631
701
|
className?: string;
|
|
632
702
|
/**
|
|
633
703
|
* Keyboard activation mode for this strip, emitted as `data-tab-activation` for
|
|
@@ -642,9 +712,11 @@ interface TabBarProps {
|
|
|
642
712
|
presentation?: TabBarPresentation;
|
|
643
713
|
/** Keep a trailing action beside the final tab or at the far edge of the bar. */
|
|
644
714
|
trailingPlacement?: TabBarTrailingPlacement;
|
|
715
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
716
|
+
slot?: string;
|
|
645
717
|
}
|
|
646
718
|
/** Render a controlled tab strip. The application owns selection, order, and persistence. */
|
|
647
|
-
declare function TabBar({ id, label, children, leading, trailing, className, activation, allocation, presentation, trailingPlacement, }: TabBarProps): kerfjs.SafeHtml;
|
|
719
|
+
declare function TabBar({ id, label, children, leading, trailing, end, className, activation, allocation, presentation, trailingPlacement, slot, }: TabBarProps): kerfjs.SafeHtml;
|
|
648
720
|
|
|
649
721
|
export { type TabActivation, TabBar, type TabBarAllocation, type TabBarPresentation, type TabBarProps, type TabBarTrailingPlacement };
|
|
650
722
|
```
|
|
@@ -722,6 +794,8 @@ interface NavStackProps {
|
|
|
722
794
|
/** Optional persistent bottom toolbar used when the active view does not provide one. */
|
|
723
795
|
bottomToolbar?: KerfUiContent;
|
|
724
796
|
className?: string;
|
|
797
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
798
|
+
slot?: string;
|
|
725
799
|
}
|
|
726
800
|
/**
|
|
727
801
|
* A navigation stack (iOS-style push/pop). Renders every entry stacked, the last
|
|
@@ -729,7 +803,7 @@ interface NavStackProps {
|
|
|
729
803
|
* cross-fades the chrome across a change. A single-pane layout is a `NavStack`
|
|
730
804
|
* with one entry. See `docs/23-app-layouts.md` §3.1.
|
|
731
805
|
*/
|
|
732
|
-
declare function NavStack({ id, label, views, backLabel, hideToolbar, bottomToolbar, className, }: NavStackProps): kerfjs.SafeHtml;
|
|
806
|
+
declare function NavStack({ id, label, views, backLabel, hideToolbar, bottomToolbar, className, slot, }: NavStackProps): kerfjs.SafeHtml;
|
|
733
807
|
|
|
734
808
|
export { NavStack, type NavStackProps, type NavStackView };
|
|
735
809
|
```
|
|
@@ -792,6 +866,8 @@ interface SplitViewProps {
|
|
|
792
866
|
/** A resizable separator on roomy classes (min/max px). Omit for a fixed split. */
|
|
793
867
|
resizable?: SplitViewResizable;
|
|
794
868
|
className?: string;
|
|
869
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
870
|
+
slot?: string;
|
|
795
871
|
}
|
|
796
872
|
/**
|
|
797
873
|
* A list-detail split. On roomy classes it shows both panes side
|
|
@@ -800,7 +876,7 @@ interface SplitViewProps {
|
|
|
800
876
|
* resizable wiring with `wireResizableRegions` and the compact back with
|
|
801
877
|
* `wireNavStack`.
|
|
802
878
|
*/
|
|
803
|
-
declare function SplitView({ id, label, list, detail, compact, detailActive, listTitle, detailTitle, backLabel, resizable, className, }: SplitViewProps): kerfjs.SafeHtml;
|
|
879
|
+
declare function SplitView({ id, label, list, detail, compact, detailActive, listTitle, detailTitle, backLabel, resizable, className, slot, }: SplitViewProps): kerfjs.SafeHtml;
|
|
804
880
|
|
|
805
881
|
export { SplitView, type SplitViewProps, type SplitViewResizable };
|
|
806
882
|
```
|
|
@@ -848,6 +924,8 @@ interface PaneProps {
|
|
|
848
924
|
footerClassName?: string;
|
|
849
925
|
/** Safe `data-*` metadata; Pane-owned structural attributes remain protected. */
|
|
850
926
|
rootAttributes?: PaneRootAttributes;
|
|
927
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
928
|
+
slot?: string;
|
|
851
929
|
}
|
|
852
930
|
/**
|
|
853
931
|
* An unpadded application column with optional fixed header/footer slots and one
|
|
@@ -855,7 +933,7 @@ interface PaneProps {
|
|
|
855
933
|
* each logical edge, so the same component works as a sidebar, main area,
|
|
856
934
|
* inspector, or dialog column.
|
|
857
935
|
*/
|
|
858
|
-
declare function Pane({ header, children, footer, element, contentElement, separators, id, label, contentLabel, className, headerClassName, contentClassName, footerClassName, rootAttributes, }: PaneProps): kerfjs.SafeHtml;
|
|
936
|
+
declare function Pane({ header, children, footer, element, contentElement, separators, id, label, contentLabel, className, headerClassName, contentClassName, footerClassName, rootAttributes, slot, }: PaneProps): kerfjs.SafeHtml;
|
|
859
937
|
|
|
860
938
|
export { Pane, type PaneContentElement, type PaneElement, type PaneProps, type PaneSeparatorSide };
|
|
861
939
|
```
|
|
@@ -893,6 +971,8 @@ interface WorkbenchProps {
|
|
|
893
971
|
rightRail?: WorkbenchPanel;
|
|
894
972
|
bottomDrawer?: WorkbenchPanel;
|
|
895
973
|
className?: string;
|
|
974
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
975
|
+
slot?: string;
|
|
896
976
|
}
|
|
897
977
|
/**
|
|
898
978
|
* The Xcode-like multi-panel workspace: a collapsible left rail, right rail, and
|
|
@@ -904,7 +984,7 @@ interface WorkbenchProps {
|
|
|
904
984
|
* each `collapsed` flag; the collapse is pure CSS (no wire). See
|
|
905
985
|
* `docs/23-app-layouts.md` §3.3.
|
|
906
986
|
*/
|
|
907
|
-
declare function Workbench({ id, label, main, leftRail, rightRail, bottomDrawer, className, }: WorkbenchProps): SafeHtml;
|
|
987
|
+
declare function Workbench({ id, label, main, leftRail, rightRail, bottomDrawer, className, slot, }: WorkbenchProps): SafeHtml;
|
|
908
988
|
|
|
909
989
|
export { Workbench, type WorkbenchPanel, type WorkbenchProps };
|
|
910
990
|
```
|
|
@@ -943,6 +1023,8 @@ interface CollapsiblePanelToggleProps {
|
|
|
943
1023
|
/** Accessible label; defaults to "Collapse"/"Expand". */
|
|
944
1024
|
label?: string;
|
|
945
1025
|
className?: string;
|
|
1026
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
1027
|
+
slot?: string;
|
|
946
1028
|
}
|
|
947
1029
|
/**
|
|
948
1030
|
* A standard collapse/expand toggle button for a {@link CollapsiblePanel}: the
|
|
@@ -951,7 +1033,7 @@ interface CollapsiblePanelToggleProps {
|
|
|
951
1033
|
* put it in the panel's own header (to collapse) and somewhere always-visible
|
|
952
1034
|
* (to expand while collapsed).
|
|
953
1035
|
*/
|
|
954
|
-
declare function CollapsiblePanelToggle({ side, collapsed, action, panelId, label, className, }: CollapsiblePanelToggleProps): SafeHtml;
|
|
1036
|
+
declare function CollapsiblePanelToggle({ side, collapsed, action, panelId, label, className, slot, }: CollapsiblePanelToggleProps): SafeHtml;
|
|
955
1037
|
interface CollapsiblePanelProps {
|
|
956
1038
|
/** A stable id for the panel — `wireSidebar` targets it and toggles reference it. */
|
|
957
1039
|
id: string;
|
|
@@ -1066,6 +1148,8 @@ interface TabScaffoldProps<Id extends string = string> {
|
|
|
1066
1148
|
/** The controlled active tab id (the app owns selection). */
|
|
1067
1149
|
active: NoInfer<Id>;
|
|
1068
1150
|
className?: string;
|
|
1151
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
1152
|
+
slot?: string;
|
|
1069
1153
|
}
|
|
1070
1154
|
/**
|
|
1071
1155
|
* A mobile-first, iOS-like bottom tab scaffold: a bottom tab bar that switches
|
|
@@ -1075,7 +1159,7 @@ interface TabScaffoldProps<Id extends string = string> {
|
|
|
1075
1159
|
* On larger classes, promote the tabs to a `Workbench` rail or sidebar instead of
|
|
1076
1160
|
* a bottom bar. See `docs/23-app-layouts.md` §3.4.
|
|
1077
1161
|
*/
|
|
1078
|
-
declare function TabScaffold<Id extends string>({ id, label, tabs, active, className, }: TabScaffoldProps<Id>): SafeHtml;
|
|
1162
|
+
declare function TabScaffold<Id extends string>({ id, label, tabs, active, className, slot, }: TabScaffoldProps<Id>): SafeHtml;
|
|
1079
1163
|
|
|
1080
1164
|
export { TabScaffold, type TabScaffoldProps, type TabScaffoldTab };
|
|
1081
1165
|
```
|
|
@@ -1109,6 +1193,7 @@ type ResizableRegionCollapseMotion = 'none' | 'slide' | 'fade-slide';
|
|
|
1109
1193
|
type ResizableRegionContentOverflow = 'clip' | 'auto' | 'visible';
|
|
1110
1194
|
type ResizableRegionPresentation = 'inline' | 'overlay' | 'hidden';
|
|
1111
1195
|
type ResizableRegionRestorePosition = 'bottom-start' | 'bottom-end';
|
|
1196
|
+
type ResizableRegionResponsiveFillAt = 'compact' | 'narrow';
|
|
1112
1197
|
interface ResizableRegionProps {
|
|
1113
1198
|
id: string;
|
|
1114
1199
|
label: string;
|
|
@@ -1131,15 +1216,17 @@ interface ResizableRegionProps {
|
|
|
1131
1216
|
restoreControl?: SafeHtml;
|
|
1132
1217
|
/** Safe-area-aware viewport corner for `restoreControl`. */
|
|
1133
1218
|
restorePosition?: ResizableRegionRestorePosition;
|
|
1219
|
+
/** Fill the available inline track and hide the separator below a container breakpoint. */
|
|
1220
|
+
responsiveFillAt?: ResizableRegionResponsiveFillAt;
|
|
1134
1221
|
/** Decorative dormant content for the separator handle. Must not contain interactive descendants. */
|
|
1135
1222
|
handleIcon?: SafeHtml;
|
|
1136
1223
|
children: KerfUiContent;
|
|
1137
1224
|
}
|
|
1138
1225
|
declare const clampRegionSize: (size: number, min: number, max: number) => number;
|
|
1139
1226
|
declare const resizeRegionFromPointer: (startSize: number, delta: number, edge: ResizableRegionEdge) => number;
|
|
1140
|
-
declare function ResizableRegion({ id, label, size, min, max, axis, edge, collapsed, transitioning, separator, collapseMotion, contentOverflow, presentation, restoreControl, restorePosition, handleIcon, children, }: ResizableRegionProps): SafeHtml;
|
|
1227
|
+
declare function ResizableRegion({ id, label, size, min, max, axis, edge, collapsed, transitioning, separator, collapseMotion, contentOverflow, presentation, restoreControl, restorePosition, responsiveFillAt, handleIcon, children, }: ResizableRegionProps): SafeHtml;
|
|
1141
1228
|
|
|
1142
|
-
export { ResizableRegion, type ResizableRegionAxis, type ResizableRegionCollapseMotion, type ResizableRegionContentOverflow, type ResizableRegionEdge, type ResizableRegionPresentation, type ResizableRegionProps, type ResizableRegionRestorePosition, type ResizableRegionSeparator, clampRegionSize, resizeRegionFromPointer };
|
|
1229
|
+
export { ResizableRegion, type ResizableRegionAxis, type ResizableRegionCollapseMotion, type ResizableRegionContentOverflow, type ResizableRegionEdge, type ResizableRegionPresentation, type ResizableRegionProps, type ResizableRegionResponsiveFillAt, type ResizableRegionRestorePosition, type ResizableRegionSeparator, clampRegionSize, resizeRegionFromPointer };
|
|
1143
1230
|
```
|
|
1144
1231
|
|
|
1145
1232
|
## `@kerfjs/ui/wire-resizable-regions`
|
|
@@ -1232,105 +1319,16 @@ export { DEFAULT_BREAKPOINTS, type DeviceBreakpoints, type DeviceClass, type Dev
|
|
|
1232
1319
|
## `@kerfjs/ui/catalog`
|
|
1233
1320
|
|
|
1234
1321
|
```ts
|
|
1322
|
+
import * as kerfjs from 'kerfjs';
|
|
1235
1323
|
import { SafeHtml } from 'kerfjs';
|
|
1324
|
+
import { a as CatalogProps } from './types-CzgSrFXP.js';
|
|
1325
|
+
export { b as CatalogBrand, c as CatalogEntry, d as CatalogRelated, C as CatalogResource, e as CatalogSecondaryGroup, f as CatalogSection } from './types-CzgSrFXP.js';
|
|
1236
1326
|
import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
|
|
1237
1327
|
|
|
1238
|
-
/**
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
/** Optional monospace detail (e.g. a file path) shown after the label. */
|
|
1243
|
-
detail?: string;
|
|
1244
|
-
}
|
|
1245
|
-
/** A related entry offered in the detail footer's "Related entries" popup menu. */
|
|
1246
|
-
interface CatalogRelated {
|
|
1247
|
-
id: string;
|
|
1248
|
-
name: string;
|
|
1249
|
-
/** Group heading in the menu, e.g. "Uses" / "Used by". */
|
|
1250
|
-
group: string;
|
|
1251
|
-
}
|
|
1252
|
-
interface CatalogEntry {
|
|
1253
|
-
id: string;
|
|
1254
|
-
name: string;
|
|
1255
|
-
description?: string;
|
|
1256
|
-
/** Short metadata tags shown at the trailing edge of the sidebar row. */
|
|
1257
|
-
tags?: readonly string[];
|
|
1258
|
-
resources?: readonly CatalogResource[];
|
|
1259
|
-
related?: readonly CatalogRelated[];
|
|
1260
|
-
}
|
|
1261
|
-
interface CatalogSection {
|
|
1262
|
-
category: string;
|
|
1263
|
-
entries: readonly CatalogEntry[];
|
|
1264
|
-
}
|
|
1265
|
-
/**
|
|
1266
|
-
* A secondary group of sections shown below the primary sidebar sections with a
|
|
1267
|
-
* quieter "ecosystem" treatment (e.g. third-party components). Optionally
|
|
1268
|
-
* collapsible — the app owns `expanded` and toggles it from `wireCatalog`'s
|
|
1269
|
-
* `onToggleSecondary`.
|
|
1270
|
-
*/
|
|
1271
|
-
interface CatalogSecondaryGroup {
|
|
1272
|
-
label: string;
|
|
1273
|
-
sections: readonly CatalogSection[];
|
|
1274
|
-
/** When true, the group's label is a disclosure toggle controlling `expanded`. */
|
|
1275
|
-
collapsible?: boolean;
|
|
1276
|
-
/** Whether the group is expanded (controlled). Ignored unless `collapsible`. */
|
|
1277
|
-
expanded?: boolean;
|
|
1278
|
-
}
|
|
1279
|
-
interface CatalogBrand {
|
|
1280
|
-
title: string;
|
|
1281
|
-
subtitle?: string;
|
|
1282
|
-
/** Logo image URL (rendered decorative). Omit for a text-only brand. */
|
|
1283
|
-
logoUrl?: string;
|
|
1284
|
-
}
|
|
1285
|
-
interface CatalogProps {
|
|
1286
|
-
brand: CatalogBrand;
|
|
1287
|
-
sections: readonly CatalogSection[];
|
|
1288
|
-
/** The controlled active entry id — the app owns this signal. */
|
|
1289
|
-
active: string;
|
|
1290
|
-
/** The rendered preview for the active entry; the app computes it from `active`. */
|
|
1291
|
-
content: KerfUiContent;
|
|
1292
|
-
/** Whether the sidebar is collapsed (controlled). */
|
|
1293
|
-
collapsed?: boolean;
|
|
1294
|
-
/** Current theme; when set, a theme toggle is shown that switches to the opposite. Omit to hide it. */
|
|
1295
|
-
theme?: 'light' | 'dark';
|
|
1296
|
-
/** Extra header controls placed before the theme toggle (each a `ToolbarControlGroup`). */
|
|
1297
|
-
headerActions?: KerfUiContent;
|
|
1298
|
-
/** A secondary "ecosystem" group of sections below the primary category groups. */
|
|
1299
|
-
secondarySections?: CatalogSecondaryGroup;
|
|
1300
|
-
/** Extra sidebar content below the category groups (and the secondary group). */
|
|
1301
|
-
sidebarFooter?: KerfUiContent;
|
|
1302
|
-
/** Status line content shown at the start of the detail footer. */
|
|
1303
|
-
status?: KerfUiContent;
|
|
1304
|
-
/**
|
|
1305
|
-
* Whether to highlight specimens' computed borders (or transparent outer
|
|
1306
|
-
* bounds) and non-zero margins. Pass a boolean (rather than omitting the
|
|
1307
|
-
* prop) when the active entry can switch between component and composition
|
|
1308
|
-
* previews; `wireCatalogGeometryOverlay` keeps the overlay synchronized.
|
|
1309
|
-
*/
|
|
1310
|
-
geometryOverlay?: boolean;
|
|
1311
|
-
selectAction?: string;
|
|
1312
|
-
toggleSidebarAction?: string;
|
|
1313
|
-
toggleThemeAction?: string;
|
|
1314
|
-
/** Action fired by the secondary group's disclosure toggle (when collapsible). */
|
|
1315
|
-
toggleSecondaryAction?: string;
|
|
1316
|
-
className?: string;
|
|
1317
|
-
}
|
|
1318
|
-
/**
|
|
1319
|
-
* A reusable component-catalog shell: a collapsible category sidebar, a titled
|
|
1320
|
-
* detail stage that renders the active entry's preview, and a footer with
|
|
1321
|
-
* reference links and a related-entry popup menu. Built entirely from public
|
|
1322
|
-
* `@kerfjs/ui` primitives. Controlled and stateless — the app owns the `active`,
|
|
1323
|
-
* `collapsed`, and `theme` signals and computes `content` from `active` in its own
|
|
1324
|
-
* render; wire the sidebar/collapse/theme actions with `wireCatalog`.
|
|
1325
|
-
*/
|
|
1326
|
-
declare function Catalog({ brand, sections, active, content, collapsed, theme, headerActions, secondarySections, sidebarFooter, status, geometryOverlay, selectAction, toggleSidebarAction, toggleThemeAction, toggleSecondaryAction, className, }: CatalogProps): SafeHtml;
|
|
1327
|
-
/**
|
|
1328
|
-
* How a {@link CatalogExample}'s content aligns its visible left edge with the
|
|
1329
|
-
* example's `ListHeader` label (which sits 16px in — 8px title + 8px label):
|
|
1330
|
-
* - `'glyph'` — a bare glyph/text specimen with no inline geometry insets the full 16px.
|
|
1331
|
-
* - `'inline-control'` — a control that already carries ~8px of its own inline padding insets 8px so its content lands on the same line.
|
|
1332
|
-
* - `'none'` — a content-item / composition that owns its geometry and already aligns; no inset (default).
|
|
1333
|
-
*/
|
|
1328
|
+
/** Controlled, stateless component-catalog shell. */
|
|
1329
|
+
declare function Catalog({ brand, sections, active, content, collapsed, theme, headerActions, secondarySections, sidebarFooter, status, geometryOverlay, selectAction, toggleSidebarAction, toggleThemeAction, toggleSecondaryAction, className, slot, }: CatalogProps): kerfjs.SafeHtml;
|
|
1330
|
+
|
|
1331
|
+
/** How a specimen aligns its visible edge with its `ListHeader` label. */
|
|
1334
1332
|
type CatalogExampleAlign = 'glyph' | 'inline-control' | 'none';
|
|
1335
1333
|
type CatalogExampleRootAttributes = Readonly<Record<`data-${string}`, string | undefined> & {
|
|
1336
1334
|
'data-catalog-example'?: never;
|
|
@@ -1339,58 +1337,46 @@ type CatalogExampleRootAttributes = Readonly<Record<`data-${string}`, string | u
|
|
|
1339
1337
|
'data-catalog-example-note'?: never;
|
|
1340
1338
|
'data-align'?: never;
|
|
1341
1339
|
}>;
|
|
1342
|
-
type CatalogExampleStackRootAttributes = Readonly<Record<`data-${string}`, string | undefined> & {
|
|
1343
|
-
'data-catalog-example'?: never;
|
|
1344
|
-
'data-catalog-example-stack'?: never;
|
|
1345
|
-
'data-catalog-example-label'?: never;
|
|
1346
|
-
'data-catalog-example-note'?: never;
|
|
1347
|
-
'data-align'?: never;
|
|
1348
|
-
}>;
|
|
1349
1340
|
interface CatalogExampleProps {
|
|
1350
|
-
/** The example's label, shown as a `ListHeader` above the specimen. Omit for a bare specimen. */
|
|
1351
1341
|
label?: string;
|
|
1352
|
-
/** Optional explanatory note between the label and the specimen. */
|
|
1353
1342
|
note?: SafeHtml | string;
|
|
1354
|
-
/** Alignment inset for the specimen — see {@link CatalogExampleAlign}. Default `'none'`. */
|
|
1355
1343
|
align?: CatalogExampleAlign;
|
|
1356
|
-
/** Safe authoring `data-*` metadata for the rendered section. Helper-owned structural attributes remain protected. */
|
|
1357
1344
|
rootAttributes?: CatalogExampleRootAttributes;
|
|
1358
1345
|
className?: string;
|
|
1359
1346
|
children?: KerfUiContent;
|
|
1347
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
1348
|
+
slot?: string;
|
|
1360
1349
|
}
|
|
1361
|
-
/**
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
|
|
1350
|
+
/** A labeled catalog specimen with optional explanatory text and alignment. */
|
|
1351
|
+
declare function CatalogExample({ label, note, align, rootAttributes, className, children, slot, }: CatalogExampleProps): SafeHtml;
|
|
1352
|
+
|
|
1353
|
+
type CatalogExampleStackRootAttributes = Readonly<Record<`data-${string}`, string | undefined> & {
|
|
1354
|
+
'data-catalog-example'?: never;
|
|
1355
|
+
'data-catalog-example-stack'?: never;
|
|
1356
|
+
'data-catalog-example-label'?: never;
|
|
1357
|
+
'data-catalog-example-note'?: never;
|
|
1358
|
+
'data-align'?: never;
|
|
1359
|
+
}>;
|
|
1370
1360
|
interface CatalogExampleStackProps {
|
|
1371
|
-
/** Accessible label for the stack region. */
|
|
1372
1361
|
label?: string;
|
|
1373
|
-
/** Safe authoring `data-*` metadata for the rendered stack. Helper-owned structural attributes remain protected. */
|
|
1374
1362
|
rootAttributes?: CatalogExampleStackRootAttributes;
|
|
1375
1363
|
className?: string;
|
|
1376
1364
|
children?: KerfUiContent;
|
|
1365
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
1366
|
+
slot?: string;
|
|
1377
1367
|
}
|
|
1378
|
-
/**
|
|
1379
|
-
|
|
1380
|
-
* example rhythm. The semantic `section` becomes a named `region` when `label`
|
|
1381
|
-
* is supplied; an unlabeled stack remains an ordinary grouping.
|
|
1382
|
-
*/
|
|
1383
|
-
declare function CatalogExampleStack({ label, rootAttributes, className, children, }: CatalogExampleStackProps): SafeHtml;
|
|
1368
|
+
/** A vertically stacked group of catalog examples. */
|
|
1369
|
+
declare function CatalogExampleStack({ label, rootAttributes, className, children, slot, }: CatalogExampleStackProps): kerfjs.SafeHtml;
|
|
1384
1370
|
|
|
1385
|
-
export { Catalog,
|
|
1371
|
+
export { Catalog, CatalogExample, type CatalogExampleAlign, type CatalogExampleProps, CatalogExampleStack, type CatalogExampleStackProps, CatalogProps };
|
|
1386
1372
|
```
|
|
1387
1373
|
|
|
1388
1374
|
## `@kerfjs/ui/catalog-resources`
|
|
1389
1375
|
|
|
1390
1376
|
```ts
|
|
1391
|
-
import { CatalogResource } from './
|
|
1392
|
-
import 'kerfjs';
|
|
1377
|
+
import { C as CatalogResource } from './types-CzgSrFXP.js';
|
|
1393
1378
|
import './semantic-content-BbzjvSu9.js';
|
|
1379
|
+
import 'kerfjs';
|
|
1394
1380
|
|
|
1395
1381
|
/**
|
|
1396
1382
|
* Standard resource labels for a Kerf catalog detail footer. Keep these labels
|
|
@@ -1517,8 +1503,10 @@ interface SegmentedControlProps<Value extends string = string> {
|
|
|
1517
1503
|
className?: string;
|
|
1518
1504
|
/** Render as an unanimated loading skeleton, disabling every segment. */
|
|
1519
1505
|
placeholder?: boolean;
|
|
1506
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
1507
|
+
slot?: string;
|
|
1520
1508
|
}
|
|
1521
|
-
declare function SegmentedControl<Value extends string>({ id, label, value, choices, action, appearance, shape, size, layout, className, placeholder, }: SegmentedControlProps<Value>): kerfjs.SafeHtml;
|
|
1509
|
+
declare function SegmentedControl<Value extends string>({ id, label, value, choices, action, appearance, shape, size, layout, className, placeholder, slot, }: SegmentedControlProps<Value>): kerfjs.SafeHtml;
|
|
1522
1510
|
|
|
1523
1511
|
export { SegmentedControl, type SegmentedControlAppearance, type SegmentedControlChoice, type SegmentedControlLayout, type SegmentedControlProps, type SegmentedControlShape, type SegmentedControlSize };
|
|
1524
1512
|
```
|
|
@@ -1575,9 +1563,11 @@ interface SelectBaseProps<Value extends string = string> {
|
|
|
1575
1563
|
focusRingOwner?: SelectFocusRingOwner;
|
|
1576
1564
|
/** Maximum closed-control label width in CSS pixels before ellipsis. */
|
|
1577
1565
|
labelMaxWidth?: number;
|
|
1566
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
1567
|
+
slot?: string;
|
|
1578
1568
|
}
|
|
1579
1569
|
type SelectProps<Value extends string = string> = SelectBaseProps<Value> & SelectAccessibleName;
|
|
1580
|
-
declare function Select<Value extends string>({ name, value, label, ariaLabel, choices, className, placeholderText, hint, disabled, fitMenu, renderSelected, placeholder, presentation, size, selectedPresentation, focusRingOwner, labelMaxWidth, }: SelectProps<Value>): SafeHtml;
|
|
1570
|
+
declare function Select<Value extends string>({ name, value, label, ariaLabel, choices, className, placeholderText, hint, disabled, fitMenu, renderSelected, placeholder, presentation, size, selectedPresentation, focusRingOwner, labelMaxWidth, slot, }: SelectProps<Value>): SafeHtml;
|
|
1581
1571
|
|
|
1582
1572
|
export { Select, type SelectChoice, type SelectFocusRingOwner, type SelectPresentation, type SelectProps, type SelectSelectedPresentation, type SelectSize };
|
|
1583
1573
|
```
|
|
@@ -1602,8 +1592,10 @@ interface StateBannerProps {
|
|
|
1602
1592
|
className?: string;
|
|
1603
1593
|
/** Render the title, badge, and detail as unanimated loading skeletons, keeping the icon and tone. */
|
|
1604
1594
|
placeholder?: boolean;
|
|
1595
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
1596
|
+
slot?: string;
|
|
1605
1597
|
}
|
|
1606
|
-
declare function StateBanner({ title, detail, badge, icon, action, tone, urgency, className, placeholder, }: StateBannerProps): SafeHtml;
|
|
1598
|
+
declare function StateBanner({ title, detail, badge, icon, action, tone, urgency, className, placeholder, slot, }: StateBannerProps): SafeHtml;
|
|
1607
1599
|
|
|
1608
1600
|
export { StateBanner, type StateBannerProps, type StateBannerTone, type StateBannerUrgency };
|
|
1609
1601
|
```
|
|
@@ -1621,8 +1613,10 @@ interface EmptyStateProps {
|
|
|
1621
1613
|
action?: KerfUiContent;
|
|
1622
1614
|
busy?: boolean;
|
|
1623
1615
|
className?: string;
|
|
1616
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
1617
|
+
slot?: string;
|
|
1624
1618
|
}
|
|
1625
|
-
declare function EmptyState({ title, detail, icon, action, busy, className, }: EmptyStateProps): SafeHtml;
|
|
1619
|
+
declare function EmptyState({ title, detail, icon, action, busy, className, slot, }: EmptyStateProps): SafeHtml;
|
|
1626
1620
|
|
|
1627
1621
|
export { EmptyState, type EmptyStateProps };
|
|
1628
1622
|
```
|
|
@@ -1635,9 +1629,11 @@ import * as kerfjs from 'kerfjs';
|
|
|
1635
1629
|
interface LoadingSpinnerProps {
|
|
1636
1630
|
className?: string;
|
|
1637
1631
|
label?: string;
|
|
1632
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
1633
|
+
slot?: string;
|
|
1638
1634
|
}
|
|
1639
1635
|
/** Stable viewBox-centered progress ring based on svg-spinners' MIT-licensed 180-ring. */
|
|
1640
|
-
declare function LoadingSpinner({ className, label }: LoadingSpinnerProps): kerfjs.SafeHtml;
|
|
1636
|
+
declare function LoadingSpinner({ className, label, slot, }: LoadingSpinnerProps): kerfjs.SafeHtml;
|
|
1641
1637
|
|
|
1642
1638
|
export { LoadingSpinner, type LoadingSpinnerProps };
|
|
1643
1639
|
```
|
|
@@ -1660,6 +1656,8 @@ interface SkeletonProps {
|
|
|
1660
1656
|
/** Accessible label. Omit to keep the block decorative (`aria-hidden`). */
|
|
1661
1657
|
label?: string;
|
|
1662
1658
|
className?: string;
|
|
1659
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
1660
|
+
slot?: string;
|
|
1663
1661
|
}
|
|
1664
1662
|
/**
|
|
1665
1663
|
* A subtle, deliberately **unanimated** loading placeholder block. Use it for a
|
|
@@ -1667,7 +1665,7 @@ interface SkeletonProps {
|
|
|
1667
1665
|
* `placeholder` prop. Decorative by default (`aria-hidden`); pass `label` to
|
|
1668
1666
|
* announce it. Sizes to its slot unless `width`/`height` are given.
|
|
1669
1667
|
*/
|
|
1670
|
-
declare function Skeleton({ width, height, radius, lines, label, className, }: SkeletonProps): kerfjs.SafeHtml;
|
|
1668
|
+
declare function Skeleton({ width, height, radius, lines, label, className, slot, }: SkeletonProps): kerfjs.SafeHtml;
|
|
1671
1669
|
|
|
1672
1670
|
export { Skeleton, type SkeletonProps };
|
|
1673
1671
|
```
|
|
@@ -1686,13 +1684,15 @@ interface SunkenPanelProps {
|
|
|
1686
1684
|
/** Corner shape: a rounded rectangle (default) or square corners. */
|
|
1687
1685
|
shape?: SunkenPanelShape;
|
|
1688
1686
|
className?: string;
|
|
1687
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
1688
|
+
slot?: string;
|
|
1689
1689
|
}
|
|
1690
1690
|
/**
|
|
1691
1691
|
* A lowered application surface with one compact inset and a vertical content
|
|
1692
1692
|
* stack. The panel owns its background and padding; children own their own
|
|
1693
1693
|
* borders and internal geometry.
|
|
1694
1694
|
*/
|
|
1695
|
-
declare function SunkenPanel({ children, ariaLabel, shape, className, }: SunkenPanelProps): kerfjs.SafeHtml;
|
|
1695
|
+
declare function SunkenPanel({ children, ariaLabel, shape, className, slot, }: SunkenPanelProps): kerfjs.SafeHtml;
|
|
1696
1696
|
|
|
1697
1697
|
export { SunkenPanel, type SunkenPanelProps, type SunkenPanelShape };
|
|
1698
1698
|
```
|
|
@@ -1728,12 +1728,16 @@ interface TokenSearchFieldBaseProps {
|
|
|
1728
1728
|
autofocus?: boolean;
|
|
1729
1729
|
leading?: KerfUiContent;
|
|
1730
1730
|
trailing?: KerfUiContent;
|
|
1731
|
+
/** Standalone field chrome or the inset visual layer of a configured toolbar group. */
|
|
1732
|
+
presentation?: 'standalone' | 'toolbar-group';
|
|
1731
1733
|
editAction?: string;
|
|
1732
1734
|
removeAction?: string;
|
|
1733
1735
|
clearAction?: string;
|
|
1734
1736
|
clearLabel?: string;
|
|
1735
1737
|
className?: string;
|
|
1736
1738
|
editorAttributes?: TokenSearchEditorAttributes;
|
|
1739
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
1740
|
+
slot?: string;
|
|
1737
1741
|
}
|
|
1738
1742
|
type TokenSearchCollapsibleProps = {
|
|
1739
1743
|
/** Allow an empty field to render as one iconic action. */
|
|
@@ -1753,7 +1757,7 @@ interface TokenSearchFieldValue {
|
|
|
1753
1757
|
query: string;
|
|
1754
1758
|
tokens: TokenSearchToken[];
|
|
1755
1759
|
}
|
|
1756
|
-
declare function TokenSearchField({ id, label, query, tokens, placeholder, tokenPlaceholder, disabled, autofocus, collapsible, expanded, expandAction, expandLabel, leading, trailing, editAction, removeAction, clearAction, clearLabel, className, editorAttributes, }: TokenSearchFieldProps): kerfjs.SafeHtml;
|
|
1760
|
+
declare function TokenSearchField({ id, label, query, tokens, placeholder, tokenPlaceholder, disabled, autofocus, collapsible, expanded, expandAction, expandLabel, leading, trailing, presentation, editAction, removeAction, clearAction, clearLabel, className, editorAttributes, slot, }: TokenSearchFieldProps): kerfjs.SafeHtml;
|
|
1757
1761
|
/** Read editable text and ordered token offsets from a rendered TokenSearchField editor. */
|
|
1758
1762
|
declare function readTokenSearchField(editor: HTMLElement, knownTokens?: readonly TokenSearchToken[]): TokenSearchFieldValue;
|
|
1759
1763
|
/** Focus an editor and place its caret at a text offset, skipping atomic token chips. */
|
|
@@ -1955,6 +1959,35 @@ declare function delegateActions<E extends Element = Element>(root: HTMLElement,
|
|
|
1955
1959
|
export { type ActionHandler, type DelegateActionsOptions, action, delegateActions };
|
|
1956
1960
|
```
|
|
1957
1961
|
|
|
1962
|
+
## `@kerfjs/ui/badge`
|
|
1963
|
+
|
|
1964
|
+
```ts
|
|
1965
|
+
import { SafeHtml } from 'kerfjs';
|
|
1966
|
+
|
|
1967
|
+
type BadgeTone = 'neutral' | 'brand' | 'pop' | 'success' | 'warning' | 'danger';
|
|
1968
|
+
type BadgeAppearance = 'quiet' | 'solid' | 'outline';
|
|
1969
|
+
type BadgeShape = 'pill' | 'rounded';
|
|
1970
|
+
type BadgeSize = 'compact' | 'default';
|
|
1971
|
+
interface BadgeProps {
|
|
1972
|
+
children: SafeHtml | string | number;
|
|
1973
|
+
tone?: BadgeTone;
|
|
1974
|
+
appearance?: BadgeAppearance;
|
|
1975
|
+
shape?: BadgeShape;
|
|
1976
|
+
size?: BadgeSize;
|
|
1977
|
+
/** Optional accessible name when the visible content is abbreviated. */
|
|
1978
|
+
label?: string;
|
|
1979
|
+
/** Hide a repeated visual badge from assistive technology. */
|
|
1980
|
+
ariaHidden?: boolean;
|
|
1981
|
+
className?: string;
|
|
1982
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
1983
|
+
slot?: string;
|
|
1984
|
+
}
|
|
1985
|
+
/** Compact, non-interactive metadata whose tone, emphasis, and shape are configured by props. */
|
|
1986
|
+
declare function Badge({ children, tone, appearance, shape, size, label, ariaHidden, className, slot, }: BadgeProps): SafeHtml;
|
|
1987
|
+
|
|
1988
|
+
export { Badge, type BadgeAppearance, type BadgeProps, type BadgeShape, type BadgeSize, type BadgeTone };
|
|
1989
|
+
```
|
|
1990
|
+
|
|
1958
1991
|
## `@kerfjs/ui/lucide-icon`
|
|
1959
1992
|
|
|
1960
1993
|
```ts
|
|
@@ -1967,9 +2000,11 @@ interface LucideIconProps {
|
|
|
1967
2000
|
name: string;
|
|
1968
2001
|
className?: string;
|
|
1969
2002
|
label?: string;
|
|
2003
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
2004
|
+
slot?: string;
|
|
1970
2005
|
}
|
|
1971
2006
|
/** Render a Lucide-compatible icon node without copying icon SVG strings. */
|
|
1972
|
-
declare function LucideIcon({ icon, name, className, label }: LucideIconProps): kerfjs.SafeHtml;
|
|
2007
|
+
declare function LucideIcon({ icon, name, className, label, slot, }: LucideIconProps): kerfjs.SafeHtml;
|
|
1973
2008
|
|
|
1974
2009
|
export { LucideIcon, type LucideIconProps, type LucideNode };
|
|
1975
2010
|
```
|
|
@@ -1990,17 +2025,21 @@ interface DialogSurfaceProps {
|
|
|
1990
2025
|
bodyInset?: SurfaceInset;
|
|
1991
2026
|
footerInset?: SurfaceInset;
|
|
1992
2027
|
className?: string;
|
|
2028
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
2029
|
+
slot?: string;
|
|
1993
2030
|
}
|
|
1994
2031
|
/** Configure recurring Web Awesome dialog geometry without consumer ::part() CSS. */
|
|
1995
|
-
declare function DialogSurface({ children, size, presentation, bodyInset, footerInset, className, }: DialogSurfaceProps): kerfjs.SafeHtml;
|
|
2032
|
+
declare function DialogSurface({ children, size, presentation, bodyInset, footerInset, className, slot, }: DialogSurfaceProps): kerfjs.SafeHtml;
|
|
1996
2033
|
type PopupSurfaceInset = 'standard' | 'compact' | 'list-zero';
|
|
1997
2034
|
interface PopupSurfaceProps {
|
|
1998
2035
|
children: KerfUiContent;
|
|
1999
2036
|
inset?: PopupSurfaceInset;
|
|
2000
2037
|
className?: string;
|
|
2038
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
2039
|
+
slot?: string;
|
|
2001
2040
|
}
|
|
2002
2041
|
/** Configure recurring Web Awesome dropdown-menu geometry without consumer ::part() CSS. */
|
|
2003
|
-
declare function PopupSurface({ children, inset, className, }: PopupSurfaceProps): kerfjs.SafeHtml;
|
|
2042
|
+
declare function PopupSurface({ children, inset, className, slot, }: PopupSurfaceProps): kerfjs.SafeHtml;
|
|
2004
2043
|
|
|
2005
2044
|
export { DialogSurface, type DialogSurfacePresentation, type DialogSurfaceProps, type DialogSurfaceSize, PopupSurface, type PopupSurfaceInset, type PopupSurfaceProps, type SurfaceInset };
|
|
2006
2045
|
```
|
|
@@ -2016,6 +2055,7 @@ type TextVariant = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p';
|
|
|
2016
2055
|
type TextTone = 'default' | 'quiet' | 'danger';
|
|
2017
2056
|
type TextSize = 'default' | 'compact';
|
|
2018
2057
|
type TextFont = 'default' | 'monospace';
|
|
2058
|
+
type TextBorder = 'transparent' | 'none';
|
|
2019
2059
|
type TextContent = KerfUiContent | string | number | readonly TextContent[];
|
|
2020
2060
|
type TextProps = Omit<KerfBaseAttrs, 'children' | 'class' | 'className'> & {
|
|
2021
2061
|
/** Native heading or paragraph element to render. Defaults to `p`. */
|
|
@@ -2026,6 +2066,8 @@ type TextProps = Omit<KerfBaseAttrs, 'children' | 'class' | 'className'> & {
|
|
|
2026
2066
|
size?: TextSize;
|
|
2027
2067
|
/** Font family independent of the native semantic element. */
|
|
2028
2068
|
font?: TextFont;
|
|
2069
|
+
/** Transparent alignment border or no border when embedded in owner chrome. */
|
|
2070
|
+
border?: TextBorder;
|
|
2029
2071
|
children: TextContent;
|
|
2030
2072
|
class?: string;
|
|
2031
2073
|
className?: string;
|
|
@@ -2034,9 +2076,9 @@ type TextProps = Omit<KerfBaseAttrs, 'children' | 'class' | 'className'> & {
|
|
|
2034
2076
|
* Semantic heading or paragraph text with the standard content-item padding.
|
|
2035
2077
|
* All ordinary native heading/paragraph attributes pass through to the element.
|
|
2036
2078
|
*/
|
|
2037
|
-
declare function Text({ variant: Variant, tone, size, font, children, class: classValue, className, ...attributes }: TextProps): kerfjs.SafeHtml;
|
|
2079
|
+
declare function Text({ variant: Variant, tone, size, font, border, children, class: classValue, className, ...attributes }: TextProps): kerfjs.SafeHtml;
|
|
2038
2080
|
|
|
2039
|
-
export { Text, type TextContent, type TextFont, type TextProps, type TextSize, type TextTone, type TextVariant };
|
|
2081
|
+
export { Text, type TextBorder, type TextContent, type TextFont, type TextProps, type TextSize, type TextTone, type TextVariant };
|
|
2040
2082
|
```
|
|
2041
2083
|
|
|
2042
2084
|
## `@kerfjs/ui/row`
|
|
@@ -2065,13 +2107,40 @@ interface RowProps {
|
|
|
2065
2107
|
/** Physical sides that receive the standard 8px control inset. Text insets win on overlap. */
|
|
2066
2108
|
controlInsets?: Sides;
|
|
2067
2109
|
className?: string;
|
|
2110
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
2111
|
+
slot?: string;
|
|
2068
2112
|
}
|
|
2069
2113
|
/** A horizontal flex row with explicit physical-axis alignment and spacing. */
|
|
2070
|
-
declare function Row({ children, hAlign, vAlign, gap, flex, wrap, textInsets, controlInsets, className, }: RowProps): kerfjs.SafeHtml;
|
|
2114
|
+
declare function Row({ children, hAlign, vAlign, gap, flex, wrap, textInsets, controlInsets, className, slot, }: RowProps): kerfjs.SafeHtml;
|
|
2071
2115
|
|
|
2072
2116
|
export { CssFlex, CssFlexKeyword, CssLength, HorizontalAlignment, Row, type RowProps, Sides, UiSpaceName, VerticalAlignment };
|
|
2073
2117
|
```
|
|
2074
2118
|
|
|
2119
|
+
## `@kerfjs/ui/grid`
|
|
2120
|
+
|
|
2121
|
+
```ts
|
|
2122
|
+
import * as kerfjs from 'kerfjs';
|
|
2123
|
+
import { UiSpaceName, CssLength, CssFlexKeyword, CssFlex } from './css-values.js';
|
|
2124
|
+
import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
|
|
2125
|
+
|
|
2126
|
+
interface GridProps {
|
|
2127
|
+
children?: KerfUiContent;
|
|
2128
|
+
/** Number of equal-width columns. Must be a positive safe integer. */
|
|
2129
|
+
columns: number;
|
|
2130
|
+
/** A named UI spacing token or typed CSS length. Defaults to xs. */
|
|
2131
|
+
gap?: UiSpaceName | CssLength;
|
|
2132
|
+
/** Allow this grid to grow/shrink, use a keyword, or supply a typed CSS flex shorthand. */
|
|
2133
|
+
flex?: boolean | CssFlexKeyword | CssFlex;
|
|
2134
|
+
className?: string;
|
|
2135
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
2136
|
+
slot?: string;
|
|
2137
|
+
}
|
|
2138
|
+
/** A fixed-count grid whose columns share the available width equally. */
|
|
2139
|
+
declare function Grid({ children, columns, gap, flex, className, slot, }: GridProps): kerfjs.SafeHtml;
|
|
2140
|
+
|
|
2141
|
+
export { CssFlex, CssFlexKeyword, CssLength, Grid, type GridProps, UiSpaceName };
|
|
2142
|
+
```
|
|
2143
|
+
|
|
2075
2144
|
## `@kerfjs/ui/spacer`
|
|
2076
2145
|
|
|
2077
2146
|
```ts
|
|
@@ -2086,9 +2155,11 @@ interface SpacerProps {
|
|
|
2086
2155
|
/** A named UI spacing token or typed physical height. */
|
|
2087
2156
|
height?: UiSpaceName | CssLength;
|
|
2088
2157
|
className?: string;
|
|
2158
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
2159
|
+
slot?: string;
|
|
2089
2160
|
}
|
|
2090
2161
|
/** A decorative fixed-size or flexible gap for Row, List, and other flex layouts. */
|
|
2091
|
-
declare function Spacer({ flex, width, height, className, }: SpacerProps): kerfjs.SafeHtml;
|
|
2162
|
+
declare function Spacer({ flex, width, height, className, slot, }: SpacerProps): kerfjs.SafeHtml;
|
|
2092
2163
|
|
|
2093
2164
|
export { CssLength, Spacer, type SpacerProps, UiSpaceName };
|
|
2094
2165
|
```
|