@kerfjs/ui 5.0.0-beta.76 → 5.0.0-beta.78
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 +15 -0
- package/ai/application-ui-diagnostic-ids-v1.json +3 -0
- package/ai/component-catalog.json +333 -28
- package/ai/component-composition.json +224 -17
- package/ai/components/nav-stack.md +4 -3
- package/ai/components/select.md +1 -0
- package/ai/components/split-view.md +1 -0
- package/ai/components/surface-scaffold.md +11 -2
- package/ai/components/text.md +4 -2
- package/ai/components/toolbar-control-group.md +22 -3
- package/ai/components/toolbar-text.md +21 -4
- package/ai/components/toolbar.md +12 -4
- package/ai/public-api-signatures-v1.md +99 -127
- package/ai/skill.md +37 -3
- package/ai/webawesome-jsx-signatures-v1.md +1 -1
- package/dist/browser/nav-stack.js +2 -0
- package/dist/browser/split-view.js +2 -0
- package/dist/catalog-resources.d.ts +3 -3
- package/dist/catalog.d.ts +3 -3
- package/dist/catalog.js +6 -6
- package/dist/chunk-2GOCOLQL.js +270 -0
- package/dist/chunk-2GOCOLQL.js.map +1 -0
- package/dist/{chunk-ZVYA6TLR.js → chunk-4Y4L5YEI.js} +3 -1
- package/dist/chunk-4Y4L5YEI.js.map +1 -0
- package/dist/{chunk-XIZRXI7N.js → chunk-A7DYEERU.js} +13 -1
- package/dist/chunk-A7DYEERU.js.map +1 -0
- package/dist/{chunk-7QWIJEK5.js → chunk-DSLRNR43.js} +9 -8
- package/dist/chunk-DSLRNR43.js.map +1 -0
- package/dist/{chunk-AOAW55JN.js → chunk-DXQZ3BEO.js} +4 -1
- package/dist/chunk-DXQZ3BEO.js.map +1 -0
- package/dist/chunk-IKCUPTR2.js +170 -0
- package/dist/chunk-IKCUPTR2.js.map +1 -0
- package/dist/{chunk-HGSTMZZ6.js → chunk-JL4BBZP4.js} +5 -4
- package/dist/chunk-JL4BBZP4.js.map +1 -0
- package/dist/{chunk-IVLTEBBT.js → chunk-M6BWQMQY.js} +2 -2
- package/dist/{chunk-IVLTEBBT.js.map → chunk-M6BWQMQY.js.map} +1 -1
- package/dist/{chunk-72LLWYP2.js → chunk-NVKRZ5DI.js} +1 -1
- package/dist/chunk-NVKRZ5DI.js.map +1 -0
- package/dist/{chunk-GO2CZX4M.js → chunk-RRCD3A6G.js} +13 -5
- package/dist/chunk-RRCD3A6G.js.map +1 -0
- package/dist/{chunk-5PAVAR4B.js → chunk-VHXHLZ6R.js} +10 -1
- package/dist/chunk-VHXHLZ6R.js.map +1 -0
- package/dist/collapsible-panel.js +2 -2
- package/dist/index.d.ts +4 -3
- package/dist/index.js +9 -8
- package/dist/list-header.d.ts +1 -0
- package/dist/list-header.js +1 -1
- package/dist/nav-stack-B1Qc2e5q.d.ts +101 -0
- package/dist/nav-stack.d.ts +12 -93
- package/dist/nav-stack.js +5 -1
- package/dist/pane.d.ts +5 -2
- package/dist/pane.js +1 -1
- package/dist/select-register.js +3 -0
- package/dist/select-register.js.map +1 -1
- package/dist/select.d.ts +1 -0
- package/dist/select.js +1 -1
- package/dist/split-view.d.ts +9 -4
- package/dist/split-view.js +7 -3
- package/dist/split-view.js.map +1 -1
- package/dist/styles/components/actions/toolbar/toolbar.css +32 -0
- package/dist/styles/components/actions/toolbar-control-group/toolbar-control-group.css +105 -7
- package/dist/styles/components/actions/toolbar-text/toolbar-text.css +17 -0
- package/dist/styles/components/layout/pane/pane.css +7 -0
- package/dist/styles/components/navigation/nav-stack/nav-stack.css +17 -12
- package/dist/styles/components/navigation/tab-scaffold/tab-scaffold.css +17 -0
- package/dist/styles/components/surfaces/surface-scaffold/surface-scaffold.css +55 -0
- package/dist/styles/components/typography/text/text.css +19 -0
- package/dist/styles/nav-stack.css +17 -12
- package/dist/styles/pane.css +7 -0
- package/dist/styles/surface-scaffold.css +55 -0
- package/dist/styles/tab-scaffold.css +17 -0
- package/dist/styles/text.css +19 -0
- package/dist/styles/toolbar-control-group.css +105 -7
- package/dist/styles/toolbar-text.css +17 -0
- package/dist/styles/toolbar.css +32 -0
- package/dist/surface-scaffold-register.d.ts +4 -0
- package/dist/surface-scaffold-register.js +59 -0
- package/dist/surface-scaffold-register.js.map +1 -0
- package/dist/surface-scaffold.d.ts +10 -2
- package/dist/surface-scaffold.js +1 -1
- package/dist/tab-scaffold.d.ts +2 -0
- package/dist/tab-scaffold.js +1 -0
- package/dist/tab-scaffold.js.map +1 -1
- package/dist/text.d.ts +5 -2
- package/dist/text.js +1 -1
- package/dist/toolbar-control-group.d.ts +14 -2
- package/dist/toolbar-control-group.js +1 -1
- package/dist/toolbar-text.d.ts +10 -2
- package/dist/toolbar-text.js +1 -1
- package/dist/wire-nav-stack.js +58 -22
- package/dist/wire-nav-stack.js.map +1 -1
- package/dist/wire-toolbar-visibility.d.ts +13 -0
- package/dist/wire-toolbar-visibility.js +3 -0
- package/dist/wire-toolbar-visibility.js.map +1 -0
- package/dist/workbench.d.ts +5 -13
- package/dist/workbench.js +1 -1
- package/docs/accessibility.md +15 -0
- package/docs/collapsible-panel.md +4 -0
- package/docs/component-contract.md +38 -0
- package/docs/component-selection.md +56 -2
- package/docs/design/templates/toolbar/width-visibility-320-dark.svg +1 -0
- package/docs/design/templates/toolbar/width-visibility-320.svg +1 -0
- package/docs/design/templates/toolbar/width-visibility-600-dark.svg +1 -0
- package/docs/design/templates/toolbar/width-visibility-600.svg +1 -0
- package/docs/design/templates/toolbar-control-group/icon-tile-brand-dark.svg +1 -0
- package/docs/design/templates/toolbar-control-group/icon-tile-brand.svg +1 -0
- package/docs/design/templates/toolbar-control-group/icon-tile-danger-dark.svg +1 -0
- package/docs/design/templates/toolbar-control-group/icon-tile-danger.svg +1 -0
- package/docs/design/templates/toolbar-control-group/icon-tile-neutral-dark.svg +1 -0
- package/docs/design/templates/toolbar-control-group/icon-tile-neutral.svg +1 -0
- package/docs/design/templates/toolbar-control-group/icon-tile-success-dark.svg +1 -0
- package/docs/design/templates/toolbar-control-group/icon-tile-success.svg +1 -0
- package/docs/design/templates/toolbar-control-group/icon-tile-warning-dark.svg +1 -0
- package/docs/design/templates/toolbar-control-group/icon-tile-warning.svg +1 -0
- package/docs/design/templates/toolbar-control-group-dark.svg +1 -1
- package/docs/design/templates/toolbar-control-group.svg +1 -1
- package/docs/design/templates/toolbar-dark.svg +1 -1
- package/docs/design/templates/toolbar-text/dark-tone-dark.svg +1 -0
- package/docs/design/templates/toolbar-text/dark-tone.svg +1 -0
- package/docs/design/templates/toolbar-text-dark.svg +1 -1
- package/docs/design/templates/toolbar-text.svg +1 -1
- package/docs/design/templates/toolbar.svg +1 -1
- package/docs/design/templates.md +2 -0
- package/docs/layout.md +32 -1
- package/docs/nav-stack.md +35 -19
- package/docs/recipes.md +5 -1
- package/docs/split-view.md +7 -4
- package/docs/surface-scaffold.md +46 -0
- package/docs/tab-scaffold.md +57 -0
- package/docs/ui-doctor.md +23 -0
- package/docs/workbench.md +3 -2
- package/doctor/component-style-checks.mjs +224 -0
- package/doctor/index.mjs +42 -13
- package/llms.txt +34 -0
- package/package.json +11 -2
- package/ux-demo/recipes/list-detail-dialog.tsx +4 -0
- package/ux-demo/recipes/navigation-stack.tsx +2 -2
- package/dist/chunk-5PAVAR4B.js.map +0 -1
- package/dist/chunk-72LLWYP2.js.map +0 -1
- package/dist/chunk-7QWIJEK5.js.map +0 -1
- package/dist/chunk-AOAW55JN.js.map +0 -1
- package/dist/chunk-GO2CZX4M.js.map +0 -1
- package/dist/chunk-HGSTMZZ6.js.map +0 -1
- package/dist/chunk-SJY7KC45.js +0 -123
- package/dist/chunk-SJY7KC45.js.map +0 -1
- package/dist/chunk-XIZRXI7N.js.map +0 -1
- package/dist/chunk-ZVYA6TLR.js.map +0 -1
package/ai/components/toolbar.md
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
Leading, centered, and trailing toolbar composition.
|
|
10
10
|
|
|
11
11
|
- Compose application chrome or a page, panel, or dialog heading with leading, center, and trailing regions.
|
|
12
|
+
- Use typed hideBelow/showBelow lengths with wireToolbarVisibility(root) for per-item toolbar priority; keep primary actions available and provide a showBelow overflow alternative.
|
|
12
13
|
|
|
13
14
|
**Not when:**
|
|
14
15
|
|
|
@@ -17,13 +18,15 @@ Leading, centered, and trailing toolbar composition.
|
|
|
17
18
|
## Imports
|
|
18
19
|
|
|
19
20
|
- JavaScript: `@kerfjs/ui/toolbar` — exports `Toolbar`.
|
|
21
|
+
- JavaScript: `@kerfjs/ui/wire-toolbar-visibility` — exports `wireToolbarVisibility`.
|
|
20
22
|
- CSS: the browser build of `@kerfjs/ui/toolbar` pulls its CSS automatically; import `@kerfjs/ui/toolbar.css` manually only without the `browser` export condition.
|
|
21
23
|
- Wiring: `wireScrollDividers` from `@kerfjs/ui/wire-scroll-dividers` (optional).
|
|
24
|
+
- Wiring: `wireToolbarVisibility` from `@kerfjs/ui/wire-toolbar-visibility` (optional).
|
|
22
25
|
- Declared side effects: browser-condition-css.
|
|
23
26
|
|
|
24
27
|
## Props
|
|
25
28
|
|
|
26
|
-
Exact prop names and types: [`@kerfjs/ui/toolbar`](../public-api-signatures-v1.md#kerfjsuitoolbar), [`@kerfjs/ui/wire-scroll-dividers`](../public-api-signatures-v1.md#kerfjsuiwire-scroll-dividers) in `public-api-signatures-v1.md`. Do not infer props from examples.
|
|
29
|
+
Exact prop names and types: [`@kerfjs/ui/toolbar`](../public-api-signatures-v1.md#kerfjsuitoolbar), [`@kerfjs/ui/wire-toolbar-visibility`](../public-api-signatures-v1.md#kerfjsuiwire-toolbar-visibility), [`@kerfjs/ui/wire-scroll-dividers`](../public-api-signatures-v1.md#kerfjsuiwire-scroll-dividers) in `public-api-signatures-v1.md`. Do not infer props from examples.
|
|
27
30
|
|
|
28
31
|
**Variants (configure, do not restyle):**
|
|
29
32
|
|
|
@@ -38,13 +41,14 @@ Exact prop names and types: [`@kerfjs/ui/toolbar`](../public-api-signatures-v1.m
|
|
|
38
41
|
- trailing groups and a standalone primary wa-button wrap instead of clipping
|
|
39
42
|
- outer inset independently configurable from zone gap
|
|
40
43
|
- app bar or bottom bar claiming its screen edges (safeAreaEdges)
|
|
44
|
+
- typed hideBelow/showBelow thresholds at the nearest Toolbar content width
|
|
41
45
|
|
|
42
46
|
## Composition
|
|
43
47
|
|
|
44
48
|
- Parents: any.
|
|
45
49
|
- Contexts: `application-chrome`, `page-header`, `panel-header`, `dialog-header`.
|
|
46
50
|
- Children: only [ToolbarText](./toolbar-text.md), [ToolbarControlGroup](./toolbar-control-group.md), [Button](./wa-button.md).
|
|
47
|
-
- Built from: [ToolbarText](./toolbar-text.md), [ToolbarControlGroup](./toolbar-control-group.md), [Button](./wa-button.md).
|
|
51
|
+
- Built from: [ToolbarText](./toolbar-text.md), [ToolbarControlGroup](./toolbar-control-group.md), [Button](./wa-button.md), [PopupMenu](./popup-menu.md).
|
|
48
52
|
|
|
49
53
|
Zones (a zone is bound to JSX only through its listed prop; never assume the zone id is a prop):
|
|
50
54
|
|
|
@@ -56,12 +60,16 @@ Zones (a zone is bound to JSX only through its listed prop; never assume the zon
|
|
|
56
60
|
|
|
57
61
|
**The app owns:** actions; command availability; responsive relocation; which screen edges an app bar or bottom bar outside a Pane header or footer claims for device safe areas (safeAreaEdges).
|
|
58
62
|
|
|
59
|
-
**Wiring:** `wireScrollDividers` is optional.
|
|
63
|
+
**Wiring:** `wireScrollDividers`, `wireToolbarVisibility` is optional.
|
|
60
64
|
|
|
61
65
|
**Wiring-owned state attributes** — never render, remove, or branch on these as app state:
|
|
62
66
|
|
|
63
67
|
- `data-scroll-overflow` on `the targets scroller` (`wireScrollDividers`): The physical edges, in canonical t/r/b/l order, beyond which content is scrolled out of view; absent when nothing is hidden (content that fits never reports its far edges). Re-applied if a re-render drops it.
|
|
64
68
|
- `data-scroll-divider` on `a Toolbar named as targets chrome` (`wireScrollDividers`): The sides, in t/r/b/l order, on which this chrome currently draws its scroll divider: the side facing the scroller while content is hidden beyond it. Re-applied if a re-render drops it.
|
|
69
|
+
- `data-toolbar-width-hidden` on `ToolbarText, ToolbarControlGroup and its paired busy status` (`wireToolbarVisibility`): True when typed hideBelow/showBelow thresholds hide this item at the nearest Toolbar content width. Re-applied after rendering; disposal restores prior markers.
|
|
70
|
+
- `data-toolbar-visibility-probe` on `private aria-hidden measurement boxes under Toolbar` (`wireToolbarVisibility`): Internal out-of-flow CSS length resolver; created and removed by wireToolbarVisibility.
|
|
71
|
+
- `data-morph-preserve` on `private aria-hidden measurement boxes and visibility state children` (`wireToolbarVisibility`): Keeps helper-owned geometry and state across Kerf renders; replacement and explicit removal are repaired, and disposal removes them.
|
|
72
|
+
- `data-toolbar-visibility-state` on `private hidden children of width-managed items and paired busy statuses` (`wireToolbarVisibility`): Preserves actual CSS visibility while rendering removes a transient parent marker, preventing geometry-driven render feedback.
|
|
65
73
|
|
|
66
74
|
## Geometry
|
|
67
75
|
|
|
@@ -92,6 +100,6 @@ Everything else is internal: `kerf-ui-analyze` reports private or unknown `.kui-
|
|
|
92
100
|
|
|
93
101
|
## Related
|
|
94
102
|
|
|
95
|
-
- Components: [ToolbarText](./toolbar-text.md), [ToolbarControlGroup](./toolbar-control-group.md), [Button](./wa-button.md).
|
|
103
|
+
- Components: [ToolbarText](./toolbar-text.md), [ToolbarControlGroup](./toolbar-control-group.md), [Button](./wa-button.md), [PopupMenu](./popup-menu.md).
|
|
96
104
|
- Docs: [`docs/component-selection.md`](../../docs/component-selection.md), [`docs/component-selection.md#ambiguous-choices`](../../docs/component-selection.md#ambiguous-choices).
|
|
97
105
|
- UX catalog route: `?component=toolbar`.
|
|
@@ -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.78` and `kerfjs@5.0.0-beta.78`. 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
|
|
|
@@ -217,13 +217,21 @@ export { Sides, Toolbar, type ToolbarConfig, type ToolbarPosition, type ToolbarP
|
|
|
217
217
|
|
|
218
218
|
```ts
|
|
219
219
|
import * as kerfjs from 'kerfjs';
|
|
220
|
+
import { CssLength } from './css-values.js';
|
|
220
221
|
|
|
221
222
|
type ToolbarTextSize = 'xlarge' | 'xlarge-fixed' | 'large' | 'default' | 'small' | 'xsmall';
|
|
223
|
+
type ToolbarTextTone = 'default' | 'dark';
|
|
222
224
|
/** ARIA heading level for a title exposed as a heading landmark. */
|
|
223
225
|
type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;
|
|
224
226
|
interface ToolbarTextBaseProps {
|
|
225
227
|
text: string;
|
|
226
228
|
size?: ToolbarTextSize;
|
|
229
|
+
/** Use dark-toolbar foregrounds on a dark or photo-backed toolbar. */
|
|
230
|
+
tone?: ToolbarTextTone;
|
|
231
|
+
/** Hide below this Toolbar content width; requires wireToolbarVisibility. */
|
|
232
|
+
hideBelow?: CssLength;
|
|
233
|
+
/** Show only below this Toolbar content width; requires wireToolbarVisibility. */
|
|
234
|
+
showBelow?: CssLength;
|
|
227
235
|
className?: string;
|
|
228
236
|
/** Optional id, e.g. so a dialog can reference the title via aria-labelledby. */
|
|
229
237
|
id?: string;
|
|
@@ -264,9 +272,9 @@ type ToolbarTextProps = ToolbarTextBaseProps & (({
|
|
|
264
272
|
wrap?: never;
|
|
265
273
|
maxLines?: never;
|
|
266
274
|
});
|
|
267
|
-
declare function ToolbarText({ text, size, className, id, headingLevel, placeholder, wrap, ellipsis, maxLines, fill, slot, action, }: ToolbarTextProps): kerfjs.SafeHtml;
|
|
275
|
+
declare function ToolbarText({ text, size, tone, hideBelow, showBelow, className, id, headingLevel, placeholder, wrap, ellipsis, maxLines, fill, slot, action, }: ToolbarTextProps): kerfjs.SafeHtml;
|
|
268
276
|
|
|
269
|
-
export { type HeadingLevel, ToolbarText, type ToolbarTextProps, type ToolbarTextSize };
|
|
277
|
+
export { type HeadingLevel, ToolbarText, type ToolbarTextProps, type ToolbarTextSize, type ToolbarTextTone };
|
|
270
278
|
```
|
|
271
279
|
|
|
272
280
|
## `@kerfjs/ui/toolbar-control-group`
|
|
@@ -274,9 +282,12 @@ export { type HeadingLevel, ToolbarText, type ToolbarTextProps, type ToolbarText
|
|
|
274
282
|
```ts
|
|
275
283
|
import * as kerfjs from 'kerfjs';
|
|
276
284
|
import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
|
|
285
|
+
import { CssLength } from './css-values.js';
|
|
277
286
|
|
|
278
287
|
type ToolbarControlGroupAppearance = 'contained' | 'borderless';
|
|
279
288
|
type ToolbarControlGroupTone = 'default' | 'dark';
|
|
289
|
+
/** Quiet palette for a contained, single decorative icon tile. */
|
|
290
|
+
type ToolbarControlGroupTileTone = 'neutral' | 'brand' | 'success' | 'warning' | 'danger';
|
|
280
291
|
type ToolbarControlGroupButtonAppearance = 'plain' | 'push';
|
|
281
292
|
type ToolbarControlGroupShape = 'pill' | 'rounded';
|
|
282
293
|
type ToolbarControlGroupSize = 'default' | 'compact';
|
|
@@ -286,6 +297,7 @@ type ToolbarControlGroupFocusRing = 'control' | 'outline' | 'halo';
|
|
|
286
297
|
type ToolbarControlGroupSelectedChrome = 'raised' | 'filled' | 'outline';
|
|
287
298
|
type ToolbarControlGroupSelectedTone = 'brand' | 'neutral' | 'pop';
|
|
288
299
|
type ToolbarControlGroupOverflow = 'visible' | 'scroll' | 'wrap';
|
|
300
|
+
type ToolbarControlGroupExpandedOverflow = 'clip' | 'visible';
|
|
289
301
|
type ToolbarControlGroupMenuInset = 'standard' | 'compact' | 'list-zero';
|
|
290
302
|
type ToolbarControlGroupVisibility = 'always' | 'compact-only' | 'hide-collapsed-tiny' | 'yield-to-expanded-sibling';
|
|
291
303
|
type ToolbarControlGroupSizing = 'content' | 'grow' | 'fill';
|
|
@@ -314,6 +326,8 @@ interface ToolbarControlGroupProps {
|
|
|
314
326
|
single?: boolean;
|
|
315
327
|
appearance?: ToolbarControlGroupAppearance;
|
|
316
328
|
tone?: ToolbarControlGroupTone;
|
|
329
|
+
/** Quiet fill, matching border and foreground for a contained single group whose only child is a decorative SVG. Ignored for interactive or mixed content. */
|
|
330
|
+
tileTone?: ToolbarControlGroupTileTone;
|
|
317
331
|
buttonAppearance?: ToolbarControlGroupButtonAppearance;
|
|
318
332
|
/** Corner shape: fully round `pill` (default) or a softer `rounded` rectangle. */
|
|
319
333
|
shape?: ToolbarControlGroupShape;
|
|
@@ -330,8 +344,14 @@ interface ToolbarControlGroupProps {
|
|
|
330
344
|
menuInset?: ToolbarControlGroupMenuInset;
|
|
331
345
|
/** Keep an overlong row inside the available width by scrolling or wrapping. */
|
|
332
346
|
overflow?: ToolbarControlGroupOverflow;
|
|
347
|
+
/** Let app-owned anchored surfaces extend outside an expanded search group. Collapsed searches retain their clipping. */
|
|
348
|
+
expandedOverflow?: ToolbarControlGroupExpandedOverflow;
|
|
333
349
|
/** Responsive visibility owned by the enclosing Toolbar container. */
|
|
334
350
|
visibility?: ToolbarControlGroupVisibility;
|
|
351
|
+
/** Hide below this Toolbar content width; requires wireToolbarVisibility. */
|
|
352
|
+
hideBelow?: CssLength;
|
|
353
|
+
/** Show only below this Toolbar content width; requires wireToolbarVisibility. */
|
|
354
|
+
showBelow?: CssLength;
|
|
335
355
|
/** Intrinsic (default), grow from a basis, or occupy a full wrapping row. */
|
|
336
356
|
sizing?: ToolbarControlGroupSizing;
|
|
337
357
|
/** Place this group at the end of its flex row in a wrapping Toolbar zone. */
|
|
@@ -354,9 +374,9 @@ interface ToolbarControlGroupProps {
|
|
|
354
374
|
/** Native named-slot assignment when composed inside a web component. */
|
|
355
375
|
slot?: string;
|
|
356
376
|
}
|
|
357
|
-
declare function ToolbarControlGroup({ children, label, className, expanded, single, appearance, tone, buttonAppearance, shape, size, density, content, focusRing, selectedChrome, selectedTone, nestedDropdown, menuInset, overflow, visibility, sizing, placement, growBasis, relocateOnCollapse, scrim, busy, busyLabel, avatarImage, slot, }: ToolbarControlGroupProps): kerfjs.SafeHtml;
|
|
377
|
+
declare function ToolbarControlGroup({ children, label, className, expanded, single, appearance, tone, tileTone, buttonAppearance, shape, size, density, content, focusRing, selectedChrome, selectedTone, nestedDropdown, menuInset, overflow, expandedOverflow, visibility, hideBelow, showBelow, sizing, placement, growBasis, relocateOnCollapse, scrim, busy, busyLabel, avatarImage, slot, }: ToolbarControlGroupProps): kerfjs.SafeHtml;
|
|
358
378
|
|
|
359
|
-
export { ToolbarActionLink, type ToolbarActionLinkProps, ToolbarControlGroup, type ToolbarControlGroupAppearance, type ToolbarControlGroupButtonAppearance, type ToolbarControlGroupContent, type ToolbarControlGroupDensity, type ToolbarControlGroupFocusRing, type ToolbarControlGroupMenuInset, type ToolbarControlGroupOverflow, type ToolbarControlGroupPlacement, type ToolbarControlGroupProps, type ToolbarControlGroupSelectedChrome, type ToolbarControlGroupSelectedTone, type ToolbarControlGroupShape, type ToolbarControlGroupSize, type ToolbarControlGroupSizing, type ToolbarControlGroupTone, type ToolbarControlGroupVisibility };
|
|
379
|
+
export { ToolbarActionLink, type ToolbarActionLinkProps, ToolbarControlGroup, type ToolbarControlGroupAppearance, type ToolbarControlGroupButtonAppearance, type ToolbarControlGroupContent, type ToolbarControlGroupDensity, type ToolbarControlGroupExpandedOverflow, type ToolbarControlGroupFocusRing, type ToolbarControlGroupMenuInset, type ToolbarControlGroupOverflow, type ToolbarControlGroupPlacement, type ToolbarControlGroupProps, type ToolbarControlGroupSelectedChrome, type ToolbarControlGroupSelectedTone, type ToolbarControlGroupShape, type ToolbarControlGroupSize, type ToolbarControlGroupSizing, type ToolbarControlGroupTileTone, type ToolbarControlGroupTone, type ToolbarControlGroupVisibility };
|
|
360
380
|
```
|
|
361
381
|
|
|
362
382
|
## `@kerfjs/ui/floating-toolbar`
|
|
@@ -525,6 +545,7 @@ export { PopupMenu, type PopupMenuDivider, type PopupMenuElement, type PopupMenu
|
|
|
525
545
|
```ts
|
|
526
546
|
import { SafeHtml } from 'kerfjs';
|
|
527
547
|
import { HeadingLevel } from './toolbar-text.js';
|
|
548
|
+
import './css-values.js';
|
|
528
549
|
|
|
529
550
|
type ListHeaderRootAttributes = Readonly<Record<`data-${string}`, string | undefined> & {
|
|
530
551
|
'data-component'?: never;
|
|
@@ -1264,100 +1285,19 @@ export { type ScrollDividerTarget, type WireScrollDividersOptions, wireScrollDiv
|
|
|
1264
1285
|
## `@kerfjs/ui/nav-stack`
|
|
1265
1286
|
|
|
1266
1287
|
```ts
|
|
1267
|
-
|
|
1268
|
-
import
|
|
1269
|
-
import
|
|
1270
|
-
import
|
|
1271
|
-
import
|
|
1288
|
+
export { c as NavStack, N as NavStackProps, d as NavStackToolbarConfig, a as NavStackView, e as NavStackViewBottomToolbar, f as NavStackViewToolbar } from './nav-stack-B1Qc2e5q.js';
|
|
1289
|
+
import 'kerfjs';
|
|
1290
|
+
import './semantic-content-BbzjvSu9.js';
|
|
1291
|
+
import './list.js';
|
|
1292
|
+
import './flex-alignment-4ms8ZbV8.js';
|
|
1272
1293
|
import './sides-BPSWde0A.js';
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
key: string;
|
|
1281
|
-
content: KerfUiContent;
|
|
1282
|
-
/** Background of this view's scrolling work surface. */
|
|
1283
|
-
appearance?: PaneAppearance;
|
|
1284
|
-
/** Title shown in the top toolbar for this view. */
|
|
1285
|
-
title?: string;
|
|
1286
|
-
/** Leading groups for this view's top toolbar, after the back control and before the title. */
|
|
1287
|
-
leading?: KerfUiContent;
|
|
1288
|
-
/** Center content for this view's top toolbar (placed per `toolbarConfig.centerAlign`). */
|
|
1289
|
-
center?: KerfUiContent;
|
|
1290
|
-
/** Trailing actions for this view's top toolbar. */
|
|
1291
|
-
toolbar?: KerfUiContent;
|
|
1292
|
-
/** Fixed chrome below this view's toolbar, above its scrolling content. */
|
|
1293
|
-
header?: KerfUiContent;
|
|
1294
|
-
/** Bottom toolbar for this view. Cross-fades with the top chrome on navigation. */
|
|
1295
|
-
bottomToolbar?: KerfUiContent;
|
|
1296
|
-
}
|
|
1297
|
-
/**
|
|
1298
|
-
* The top toolbar's configuration. Its `ToolbarConfig` forwards to the real
|
|
1299
|
-
* `Toolbar` the stack renders; by default that toolbar draws no divider and
|
|
1300
|
-
* claims the top and side safe-area edges the stack still touches.
|
|
1301
|
-
*/
|
|
1302
|
-
interface NavStackToolbarConfig extends ToolbarConfig {
|
|
1303
|
-
/** Accessible name of the top toolbar (default: none). */
|
|
1304
|
-
label?: string;
|
|
1305
|
-
/** Size of the view title's `ToolbarText` (default `large`). */
|
|
1306
|
-
titleSize?: ToolbarTextSize;
|
|
1307
|
-
/** Expose the view title as a heading at this level (default: a plain span). */
|
|
1308
|
-
headingLevel?: HeadingLevel;
|
|
1309
|
-
}
|
|
1310
|
-
interface NavStackProps {
|
|
1311
|
-
id: string;
|
|
1312
|
-
/** Accessible name for the stack region. */
|
|
1313
|
-
label: string;
|
|
1314
|
-
/** The stack, root first; the last entry is the active top view. */
|
|
1315
|
-
views: NavStackView[];
|
|
1316
|
-
/** Accessible label for the icon-only back control (default "Back"). */
|
|
1317
|
-
backLabel?: string;
|
|
1318
|
-
/** The back control's icon (default a chevron-left `LucideIcon`). */
|
|
1319
|
-
backIcon?: KerfUiContent;
|
|
1320
|
-
/**
|
|
1321
|
-
* Visible text beside the back icon, such as the previous view's title
|
|
1322
|
-
* (default: icon only). When set, the text names the control and
|
|
1323
|
-
* `backLabel` is not used.
|
|
1324
|
-
*/
|
|
1325
|
-
backText?: string;
|
|
1326
|
-
/** The top toolbar's configuration, forwarded to its `Toolbar`. */
|
|
1327
|
-
toolbarConfig?: NavStackToolbarConfig;
|
|
1328
|
-
/** Persistent last group in every view's top toolbar, supplied by a hosting panel. */
|
|
1329
|
-
panelToggle?: KerfUiContent;
|
|
1330
|
-
/** Hide the top toolbar entirely (rare — a fully custom-chrome view). */
|
|
1331
|
-
hideToolbar?: boolean;
|
|
1332
|
-
/** Optional persistent bottom toolbar used when the active view does not provide one. */
|
|
1333
|
-
bottomToolbar?: KerfUiContent;
|
|
1334
|
-
/**
|
|
1335
|
-
* The line under the top chrome and over the bottom toolbar, where they
|
|
1336
|
-
* meet the active view. `scroll` (default) shows the chrome's line only
|
|
1337
|
-
* while the view's content is scrolled beneath it, and the bottom
|
|
1338
|
-
* toolbar's only while more content lies below — never when the content
|
|
1339
|
-
* fits — once `wireScrollDividers` (`@kerfjs/ui/wire-scroll-dividers`) is
|
|
1340
|
-
* wired above the stack; unwired, neither shows. `always` shows both
|
|
1341
|
-
* without the wiring; `none` neither, even when wired. The line is drawn
|
|
1342
|
-
* inside the chrome, so no state moves the chrome or the content. A
|
|
1343
|
-
* `toolbarConfig.dividerSides` edge is the Toolbar's own and is unaffected.
|
|
1344
|
-
*/
|
|
1345
|
-
chromeDividers?: 'scroll' | 'always' | 'none';
|
|
1346
|
-
className?: string;
|
|
1347
|
-
/** Native named-slot assignment when composed inside a web component. */
|
|
1348
|
-
slot?: string;
|
|
1349
|
-
}
|
|
1350
|
-
/**
|
|
1351
|
-
* A navigation stack (iOS-style push/pop). Renders every entry stacked, the last
|
|
1352
|
-
* one active; `@kerfjs/ui/wire-nav-stack`'s `wireNavStack` slides the content and
|
|
1353
|
-
* cross-fades the chrome across a change. Its top chrome is a real `Toolbar`: the
|
|
1354
|
-
* back control and title lead, the active view's `leading` / `center` / `toolbar`
|
|
1355
|
-
* content fills the zones, and `toolbarConfig` configures it. A single-pane
|
|
1356
|
-
* layout is a `NavStack` with one entry. See `docs/23-app-layouts.md` §3.1.
|
|
1357
|
-
*/
|
|
1358
|
-
declare function NavStack({ id, label, views, backLabel, backIcon, backText, toolbarConfig, panelToggle, hideToolbar, bottomToolbar, chromeDividers, className, slot, }: NavStackProps): kerfjs.SafeHtml;
|
|
1359
|
-
|
|
1360
|
-
export { NavStack, type NavStackProps, type NavStackToolbarConfig, type NavStackView };
|
|
1294
|
+
import './css-values.js';
|
|
1295
|
+
import './pane.js';
|
|
1296
|
+
import './panel-toolbar-CL9tYOkh.js';
|
|
1297
|
+
import './toolbar.js';
|
|
1298
|
+
import './lucide-icon.js';
|
|
1299
|
+
import 'lucide';
|
|
1300
|
+
import './toolbar-text.js';
|
|
1361
1301
|
```
|
|
1362
1302
|
|
|
1363
1303
|
## `@kerfjs/ui/wire-nav-stack`
|
|
@@ -1388,13 +1328,18 @@ export { type WireNavStackOptions, wireNavStack };
|
|
|
1388
1328
|
```ts
|
|
1389
1329
|
import * as kerfjs from 'kerfjs';
|
|
1390
1330
|
import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
|
|
1391
|
-
import { NavStackProps, NavStackView } from './nav-stack.js';
|
|
1331
|
+
import { N as NavStackProps, a as NavStackView } from './nav-stack-B1Qc2e5q.js';
|
|
1392
1332
|
import { ResizableRegionProps } from './resizable-region.js';
|
|
1393
|
-
import './
|
|
1333
|
+
import './list.js';
|
|
1334
|
+
import './flex-alignment-4ms8ZbV8.js';
|
|
1394
1335
|
import './sides-BPSWde0A.js';
|
|
1336
|
+
import './css-values.js';
|
|
1395
1337
|
import './pane.js';
|
|
1338
|
+
import './panel-toolbar-CL9tYOkh.js';
|
|
1339
|
+
import './toolbar.js';
|
|
1340
|
+
import './lucide-icon.js';
|
|
1341
|
+
import 'lucide';
|
|
1396
1342
|
import './toolbar-text.js';
|
|
1397
|
-
import './css-values.js';
|
|
1398
1343
|
|
|
1399
1344
|
/**
|
|
1400
1345
|
* The roomy list pane's `ResizableRegion`: its committed `size` and `min` /
|
|
@@ -1409,7 +1354,7 @@ interface SplitViewResizable extends Pick<ResizableRegionProps, 'separator' | 'h
|
|
|
1409
1354
|
max: number;
|
|
1410
1355
|
}
|
|
1411
1356
|
/** One compact view's top- and bottom-toolbar content (see `NavStackView`). */
|
|
1412
|
-
type SplitViewCompactViewToolbars = Pick<NavStackView, '
|
|
1357
|
+
type SplitViewCompactViewToolbars = Pick<NavStackView, 'toolbar' | 'bottomToolbar'>;
|
|
1413
1358
|
/**
|
|
1414
1359
|
* The compact `NavStack`'s configuration: its toolbar configuration, back
|
|
1415
1360
|
* control, persistent bottom toolbar, and chrome dividers forward to the
|
|
@@ -1490,6 +1435,7 @@ type PaneRootAttributes = Readonly<Record<`data-${string}`, string | undefined>
|
|
|
1490
1435
|
'data-chrome-placement'?: never;
|
|
1491
1436
|
'data-chrome-dividers'?: never;
|
|
1492
1437
|
'data-appearance'?: never;
|
|
1438
|
+
'data-deep-inset'?: never;
|
|
1493
1439
|
}>;
|
|
1494
1440
|
/** How a Pane's header and footer relate to its scrolling content. */
|
|
1495
1441
|
type PaneChromePlacement = 'fixed' | 'auto';
|
|
@@ -1529,6 +1475,8 @@ interface PaneProps {
|
|
|
1529
1475
|
chromeDividers?: PaneChromeDividers;
|
|
1530
1476
|
/** Paint the scrolling work surface with the shared lowered-surface color. */
|
|
1531
1477
|
appearance?: PaneAppearance;
|
|
1478
|
+
/** Add an extra 8px inline gutter to scrolling content (default: false). */
|
|
1479
|
+
deepInset?: boolean;
|
|
1532
1480
|
/** Root semantics. Defaults to `div`. */
|
|
1533
1481
|
element?: PaneElement;
|
|
1534
1482
|
/** Scrolling content semantics. Defaults to `div`. */
|
|
@@ -1563,14 +1511,14 @@ interface PaneProps {
|
|
|
1563
1511
|
* or a CollapsiblePanel) forwards, so the app configures that pane instead of
|
|
1564
1512
|
* styling it. An omitted or `undefined` field keeps the composite's default.
|
|
1565
1513
|
*/
|
|
1566
|
-
type PaneConfig = Pick<PaneProps, 'contentElement' | 'contentLabel' | 'separators' | 'safeAreaEdges' | 'chromeDividers' | 'appearance'>;
|
|
1514
|
+
type PaneConfig = Pick<PaneProps, 'contentElement' | 'contentLabel' | 'separators' | 'safeAreaEdges' | 'chromeDividers' | 'appearance' | 'deepInset'>;
|
|
1567
1515
|
/**
|
|
1568
1516
|
* An unpadded application column with optional fixed header/footer slots and one
|
|
1569
1517
|
* scrolling vertical content owner. Separator lines are independently opt-in on
|
|
1570
1518
|
* each logical edge, so the same component works as a sidebar, main area,
|
|
1571
1519
|
* inspector, or dialog column.
|
|
1572
1520
|
*/
|
|
1573
|
-
declare function Pane({ header, children, footer, chromePlacement, chromeDividers, appearance, element, contentElement, separators, safeAreaEdges, id, label, contentLabel, className, headerClassName, contentClassName, footerClassName, rootAttributes, slot, }: PaneProps): kerfjs.SafeHtml;
|
|
1521
|
+
declare function Pane({ header, children, footer, chromePlacement, chromeDividers, appearance, deepInset, element, contentElement, separators, safeAreaEdges, id, label, contentLabel, className, headerClassName, contentClassName, footerClassName, rootAttributes, slot, }: PaneProps): kerfjs.SafeHtml;
|
|
1574
1522
|
|
|
1575
1523
|
export { Pane, type PaneAppearance, type PaneChromeDividers, type PaneChromePlacement, type PaneConfig, type PaneContentElement, type PaneElement, type PaneProps, type PaneSeparatorSide };
|
|
1576
1524
|
```
|
|
@@ -1580,16 +1528,16 @@ export { Pane, type PaneAppearance, type PaneChromeDividers, type PaneChromePlac
|
|
|
1580
1528
|
```ts
|
|
1581
1529
|
import { SafeHtml } from 'kerfjs';
|
|
1582
1530
|
import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
|
|
1531
|
+
import { b as NavPane, N as NavStackProps } from './nav-stack-B1Qc2e5q.js';
|
|
1583
1532
|
import { ListConfig } from './list.js';
|
|
1584
|
-
import { NavStackProps } from './nav-stack.js';
|
|
1585
1533
|
import { PaneConfig } from './pane.js';
|
|
1586
1534
|
import { ResizableRegionSeparator, ResizableRegionCollapseMotion, ResizableRegionContentOverflow, ResizableRegionPresentation, ResizableRegionRestorePosition } from './resizable-region.js';
|
|
1587
|
-
import { a as PanelToolbar,
|
|
1535
|
+
import { a as PanelToolbar, c as PanelBottomToolbar, b as PanelChromePlacement, d as PanelToggle } from './panel-toolbar-CL9tYOkh.js';
|
|
1588
1536
|
import { ToolbarConfig } from './toolbar.js';
|
|
1537
|
+
import './toolbar-text.js';
|
|
1538
|
+
import './css-values.js';
|
|
1589
1539
|
import './flex-alignment-4ms8ZbV8.js';
|
|
1590
1540
|
import './sides-BPSWde0A.js';
|
|
1591
|
-
import './css-values.js';
|
|
1592
|
-
import './toolbar-text.js';
|
|
1593
1541
|
import './lucide-icon.js';
|
|
1594
1542
|
import 'lucide';
|
|
1595
1543
|
|
|
@@ -1711,19 +1659,11 @@ interface WorkbenchPanelBase {
|
|
|
1711
1659
|
restorePosition?: ResizableRegionRestorePosition;
|
|
1712
1660
|
}
|
|
1713
1661
|
/** The original static panel body: one toolbar, optional fixed chrome, and one Pane. */
|
|
1714
|
-
interface WorkbenchStaticPanel extends WorkbenchPanelBase {
|
|
1715
|
-
content: KerfUiContent;
|
|
1662
|
+
interface WorkbenchStaticPanel extends WorkbenchPanelBase, NavPane<WorkbenchPanelToolbar, WorkbenchPanelBottomToolbar> {
|
|
1716
1663
|
/** The composed toolbar; marked groups and its toggle relocate on collapse. */
|
|
1717
1664
|
toolbar?: WorkbenchPanelToolbar;
|
|
1718
|
-
header?: KerfUiContent;
|
|
1719
|
-
headerList?: ListConfig;
|
|
1720
1665
|
headerPlacement?: WorkbenchChromePlacement;
|
|
1721
|
-
footer?: KerfUiContent;
|
|
1722
|
-
footerList?: ListConfig;
|
|
1723
|
-
bottomToolbar?: WorkbenchPanelBottomToolbar;
|
|
1724
1666
|
footerPlacement?: WorkbenchChromePlacement;
|
|
1725
|
-
/** Configuration for the static toolbar panel's Pane. */
|
|
1726
|
-
pane?: PaneConfig;
|
|
1727
1667
|
navStack?: never;
|
|
1728
1668
|
}
|
|
1729
1669
|
/** A panel whose active NavStack view supplies the toolbar, fixed header, and scroll body. */
|
|
@@ -2191,6 +2131,8 @@ interface TabScaffoldTabBase<Id extends string> {
|
|
|
2191
2131
|
content: KerfUiContent;
|
|
2192
2132
|
/** Background of this scene's scrolling work surface. */
|
|
2193
2133
|
appearance?: PaneAppearance;
|
|
2134
|
+
/** Add an extra 8px inline gutter to a plain scene's scrolling content. */
|
|
2135
|
+
deepInset?: boolean;
|
|
2194
2136
|
}
|
|
2195
2137
|
/** A tab with an optional count or short-status badge. */
|
|
2196
2138
|
interface TabScaffoldTabCountBadge {
|
|
@@ -2433,15 +2375,15 @@ import './toolbar.js';
|
|
|
2433
2375
|
import './sides-BPSWde0A.js';
|
|
2434
2376
|
import './pane.js';
|
|
2435
2377
|
import './workbench.js';
|
|
2378
|
+
import './nav-stack-B1Qc2e5q.js';
|
|
2436
2379
|
import './list.js';
|
|
2437
2380
|
import './flex-alignment-4ms8ZbV8.js';
|
|
2438
2381
|
import './css-values.js';
|
|
2439
|
-
import './nav-stack.js';
|
|
2440
|
-
import './toolbar-text.js';
|
|
2441
|
-
import './resizable-region.js';
|
|
2442
2382
|
import './panel-toolbar-CL9tYOkh.js';
|
|
2443
2383
|
import './lucide-icon.js';
|
|
2444
2384
|
import 'lucide';
|
|
2385
|
+
import './toolbar-text.js';
|
|
2386
|
+
import './resizable-region.js';
|
|
2445
2387
|
|
|
2446
2388
|
/**
|
|
2447
2389
|
* Controlled, stateless component-catalog shell: a `Workbench` whose left rail
|
|
@@ -2528,15 +2470,15 @@ import './semantic-content-BbzjvSu9.js';
|
|
|
2528
2470
|
import './sides-BPSWde0A.js';
|
|
2529
2471
|
import './pane.js';
|
|
2530
2472
|
import './workbench.js';
|
|
2473
|
+
import './nav-stack-B1Qc2e5q.js';
|
|
2531
2474
|
import './list.js';
|
|
2532
2475
|
import './flex-alignment-4ms8ZbV8.js';
|
|
2533
2476
|
import './css-values.js';
|
|
2534
|
-
import './nav-stack.js';
|
|
2535
|
-
import './toolbar-text.js';
|
|
2536
|
-
import './resizable-region.js';
|
|
2537
2477
|
import './panel-toolbar-CL9tYOkh.js';
|
|
2538
2478
|
import './lucide-icon.js';
|
|
2539
2479
|
import 'lucide';
|
|
2480
|
+
import './toolbar-text.js';
|
|
2481
|
+
import './resizable-region.js';
|
|
2540
2482
|
|
|
2541
2483
|
/**
|
|
2542
2484
|
* Standard resource labels for a Kerf catalog detail footer. Keep these labels
|
|
@@ -2751,6 +2693,7 @@ interface SelectBaseProps<Value extends string = string> {
|
|
|
2751
2693
|
/** Supporting text shown below the control and associated with its combobox. */
|
|
2752
2694
|
hint?: string;
|
|
2753
2695
|
disabled?: boolean;
|
|
2696
|
+
/** Match menu width to the trigger; default menus grow to content within viewport gutters. */
|
|
2754
2697
|
fitMenu?: boolean;
|
|
2755
2698
|
/** Render as an unanimated loading skeleton: the label above a static, empty control box. */
|
|
2756
2699
|
placeholder?: boolean;
|
|
@@ -3312,27 +3255,53 @@ declare function LucideIcon({ icon, name, appearance, className, color, inline,
|
|
|
3312
3255
|
export { LucideIcon, type LucideIconProps, type LucideIconSize, type LucideNode };
|
|
3313
3256
|
```
|
|
3314
3257
|
|
|
3258
|
+
## `@kerfjs/ui/wire-toolbar-visibility`
|
|
3259
|
+
|
|
3260
|
+
```ts
|
|
3261
|
+
type Root = HTMLElement | Document;
|
|
3262
|
+
/**
|
|
3263
|
+
* Wire ToolbarText and ToolbarControlGroup width thresholds below root.
|
|
3264
|
+
* Below is strict: hideBelow hides at width < threshold; showBelow hides at
|
|
3265
|
+
* width >= threshold. Percentages use the closest Toolbar's content box;
|
|
3266
|
+
* em and custom properties use the item's own inherited context. Invalid,
|
|
3267
|
+
* negative, unresolved, or contradictory thresholds leave the item visible.
|
|
3268
|
+
* This helper changes only a component-owned visibility marker. Existing
|
|
3269
|
+
* CSS visibility policies still apply. Dispose with the owning application.
|
|
3270
|
+
*/
|
|
3271
|
+
declare function wireToolbarVisibility(root: Root): () => void;
|
|
3272
|
+
|
|
3273
|
+
export { wireToolbarVisibility };
|
|
3274
|
+
```
|
|
3275
|
+
|
|
3315
3276
|
## `@kerfjs/ui/surface-scaffold`
|
|
3316
3277
|
|
|
3317
3278
|
```ts
|
|
3318
3279
|
import * as kerfjs from 'kerfjs';
|
|
3319
3280
|
import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
|
|
3281
|
+
import { CssLength } from './css-values.js';
|
|
3320
3282
|
|
|
3321
3283
|
type DialogSurfaceSize = 'small' | 'medium' | 'large';
|
|
3322
3284
|
type DialogSurfacePresentation = 'modal' | 'side-sheet' | 'fullscreen';
|
|
3323
3285
|
type SurfaceInset = 'none' | 'compact' | 'comfortable';
|
|
3286
|
+
type DialogSurfaceMaxHeight = CssLength | 'viewport';
|
|
3324
3287
|
interface DialogSurfaceProps {
|
|
3325
3288
|
children: KerfUiContent;
|
|
3326
3289
|
size?: DialogSurfaceSize;
|
|
3327
3290
|
presentation?: DialogSurfacePresentation;
|
|
3291
|
+
/** Modal preferred width. Takes precedence over size, within the viewport cap. */
|
|
3292
|
+
preferredWidth?: CssLength;
|
|
3328
3293
|
bodyInset?: SurfaceInset;
|
|
3329
3294
|
footerInset?: SurfaceInset;
|
|
3295
|
+
/** Modal edge clearance. Omit to retain Web Awesome's default viewport cap. */
|
|
3296
|
+
viewportGutter?: CssLength;
|
|
3297
|
+
/** Modal height cap, bounded by the dynamic viewport minus both gutters. */
|
|
3298
|
+
maxHeight?: DialogSurfaceMaxHeight;
|
|
3330
3299
|
className?: string;
|
|
3331
3300
|
/** Native named-slot assignment when composed inside a web component. */
|
|
3332
3301
|
slot?: string;
|
|
3333
3302
|
}
|
|
3334
3303
|
/** Configure recurring Web Awesome dialog geometry without consumer ::part() CSS. */
|
|
3335
|
-
declare function DialogSurface({ children, size, presentation, bodyInset, footerInset, className, slot, }: DialogSurfaceProps): kerfjs.SafeHtml;
|
|
3304
|
+
declare function DialogSurface({ children, size, presentation, preferredWidth, bodyInset, footerInset, viewportGutter, maxHeight, className, slot, }: DialogSurfaceProps): kerfjs.SafeHtml;
|
|
3336
3305
|
type PopupSurfaceInset = 'standard' | 'compact' | 'list-zero';
|
|
3337
3306
|
interface PopupSurfaceProps {
|
|
3338
3307
|
children: KerfUiContent;
|
|
@@ -3344,7 +3313,7 @@ interface PopupSurfaceProps {
|
|
|
3344
3313
|
/** Configure recurring Web Awesome dropdown-menu geometry without consumer ::part() CSS. */
|
|
3345
3314
|
declare function PopupSurface({ children, inset, className, slot, }: PopupSurfaceProps): kerfjs.SafeHtml;
|
|
3346
3315
|
|
|
3347
|
-
export { DialogSurface, type DialogSurfacePresentation, type DialogSurfaceProps, type DialogSurfaceSize, PopupSurface, type PopupSurfaceInset, type PopupSurfaceProps, type SurfaceInset };
|
|
3316
|
+
export { DialogSurface, type DialogSurfaceMaxHeight, type DialogSurfacePresentation, type DialogSurfaceProps, type DialogSurfaceSize, PopupSurface, type PopupSurfaceInset, type PopupSurfaceProps, type SurfaceInset };
|
|
3348
3317
|
```
|
|
3349
3318
|
|
|
3350
3319
|
## `@kerfjs/ui/text`
|
|
@@ -3353,6 +3322,7 @@ export { DialogSurface, type DialogSurfacePresentation, type DialogSurfaceProps,
|
|
|
3353
3322
|
import * as kerfjs from 'kerfjs';
|
|
3354
3323
|
import { KerfBaseAttrs } from 'kerfjs/jsx-runtime';
|
|
3355
3324
|
import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
|
|
3325
|
+
import { S as Sides } from './sides-BPSWde0A.js';
|
|
3356
3326
|
import { CssForegroundColor } from './css-values.js';
|
|
3357
3327
|
|
|
3358
3328
|
type FieldLabelProps = Omit<KerfBaseAttrs, 'children' | 'class' | 'className'> & {
|
|
@@ -3384,6 +3354,8 @@ type TextCommonProps = Omit<KerfBaseAttrs, 'children' | 'class' | 'className'> &
|
|
|
3384
3354
|
font?: TextFont;
|
|
3385
3355
|
/** Transparent alignment border or no border when embedded in owner chrome. */
|
|
3386
3356
|
border?: TextBorder;
|
|
3357
|
+
/** Add the shared control gutter outside selected physical edges. */
|
|
3358
|
+
controlMargins?: Sides;
|
|
3387
3359
|
/** Remove the block variant's item padding and border in compact content. */
|
|
3388
3360
|
flush?: boolean;
|
|
3389
3361
|
/** Use compact leading for short dialog or metadata copy. */
|
|
@@ -3407,9 +3379,9 @@ type TextProps = TextCommonProps & ({
|
|
|
3407
3379
|
* content-item padding; `span` adds no box geometry.
|
|
3408
3380
|
* All ordinary native heading/paragraph attributes pass through to the element.
|
|
3409
3381
|
*/
|
|
3410
|
-
declare function Text({ variant: Variant, tone, color, size, font, border, flush, lineHeight, wrap, maxLines, children, class: classValue, className, style, ...attributes }: TextProps): kerfjs.SafeHtml;
|
|
3382
|
+
declare function Text({ variant: Variant, tone, color, size, font, border, flush, controlMargins, lineHeight, wrap, maxLines, children, class: classValue, className, style, ...attributes }: TextProps): kerfjs.SafeHtml;
|
|
3411
3383
|
|
|
3412
|
-
export { FieldLabel, type FieldLabelProps, Text, type TextBorder, type TextContent, type TextFont, type TextLineHeight, type TextProps, type TextSize, type TextTone, type TextVariant, type TextWrap };
|
|
3384
|
+
export { FieldLabel, type FieldLabelProps, Sides, Text, type TextBorder, type TextContent, type TextFont, type TextLineHeight, type TextProps, type TextSize, type TextTone, type TextVariant, type TextWrap };
|
|
3413
3385
|
```
|
|
3414
3386
|
|
|
3415
3387
|
## `@kerfjs/ui/row`
|