@kerfjs/ui 5.0.0-beta.110 → 5.0.0-beta.112
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 +3 -0
- package/ai/component-catalog.json +161 -8
- package/ai/component-composition.json +119 -2
- package/ai/components/README.md +2 -0
- package/ai/components/backdrop-image.md +1 -0
- package/ai/components/button.md +5 -2
- package/ai/components/content-item.md +1 -0
- package/ai/components/editor-frame.md +80 -0
- package/ai/components/summary-row.md +5 -2
- package/ai/components/surface-scaffold.md +3 -0
- package/ai/components/value-preview.md +75 -0
- package/ai/public-api-signatures-v1.md +207 -50
- package/ai/skill.md +17 -0
- package/ai/webawesome-jsx-signatures-v1.md +1 -1
- package/dist/backdrop-image.d.ts +11 -0
- package/dist/backdrop-image.js +1 -1
- package/dist/browser/content-item.js +1 -0
- package/dist/browser/editor-frame.js +3 -0
- package/dist/browser/value-preview.js +3 -0
- package/dist/button.d.ts +4 -2
- package/dist/button.js +1 -1
- package/dist/catalog-resources.d.ts +2 -1
- package/dist/catalog.d.ts +2 -1
- package/dist/catalog.js +6 -4
- package/dist/catalog.js.map +1 -1
- package/dist/{chunk-JCCN3U6X.js → chunk-2J7XKAZX.js} +3 -2
- package/dist/chunk-2J7XKAZX.js.map +1 -0
- package/dist/chunk-3KFMLOTH.js +201 -0
- package/dist/chunk-3KFMLOTH.js.map +1 -0
- package/dist/{chunk-ATGAJVZ6.js → chunk-3OP66VXU.js} +64 -4
- package/dist/chunk-3OP66VXU.js.map +1 -0
- package/dist/{chunk-ZNROKDSZ.js → chunk-3V4OCDTL.js} +2 -8
- package/dist/chunk-3V4OCDTL.js.map +1 -0
- package/dist/{chunk-3GLYIIFR.js → chunk-3WWX2O4G.js} +3 -2
- package/dist/chunk-3WWX2O4G.js.map +1 -0
- package/dist/{chunk-SCDWURBO.js → chunk-5CLMV5YU.js} +21 -3
- package/dist/chunk-5CLMV5YU.js.map +1 -0
- package/dist/{chunk-P7EJ4CAD.js → chunk-ETFP7HAR.js} +2 -2
- package/dist/{chunk-P7EJ4CAD.js.map → chunk-ETFP7HAR.js.map} +1 -1
- package/dist/chunk-F653O57X.js +41 -0
- package/dist/chunk-F653O57X.js.map +1 -0
- package/dist/{chunk-SOFPUW3O.js → chunk-IIQ2XIMU.js} +4 -3
- package/dist/chunk-IIQ2XIMU.js.map +1 -0
- package/dist/chunk-IRC5N7FA.js +16 -0
- package/dist/chunk-IRC5N7FA.js.map +1 -0
- package/dist/{chunk-SQ5DH66U.js → chunk-ITENVZ6Q.js} +2 -15
- package/dist/chunk-ITENVZ6Q.js.map +1 -0
- package/dist/{chunk-4UB5Z3ZZ.js → chunk-K67XBCHG.js} +8 -4
- package/dist/chunk-K67XBCHG.js.map +1 -0
- package/dist/chunk-OK7FUK7U.js +9 -0
- package/dist/chunk-OK7FUK7U.js.map +1 -0
- package/dist/{chunk-WSEJ2FDE.js → chunk-OUCHU7JB.js} +2 -2
- package/dist/{chunk-WSEJ2FDE.js.map → chunk-OUCHU7JB.js.map} +1 -1
- package/dist/{chunk-KPINJHIC.js → chunk-PS24PVR6.js} +3 -1
- package/dist/chunk-PS24PVR6.js.map +1 -0
- package/dist/{chunk-6CDILXF4.js → chunk-S3DCRI2M.js} +31 -5
- package/dist/chunk-S3DCRI2M.js.map +1 -0
- package/dist/chunk-V6N3YLTM.js +56 -0
- package/dist/chunk-V6N3YLTM.js.map +1 -0
- package/dist/{chunk-HQZG3OFL.js → chunk-XRZSK2WC.js} +3 -2
- package/dist/chunk-XRZSK2WC.js.map +1 -0
- package/dist/{chunk-CPSGUGAY.js → chunk-YPAQFBMN.js} +4 -4
- package/dist/{chunk-CPSGUGAY.js.map → chunk-YPAQFBMN.js.map} +1 -1
- package/dist/collapsible-panel.d.ts +1 -0
- package/dist/collapsible-panel.js +3 -2
- package/dist/collapsible-panel.js.map +1 -1
- package/dist/content-item.d.ts +46 -2
- package/dist/content-item.js +4 -1
- package/dist/editor-frame.d.ts +41 -0
- package/dist/editor-frame.js +3 -0
- package/dist/editor-frame.js.map +1 -0
- package/dist/index.d.ts +5 -2
- package/dist/index.js +27 -23
- package/dist/list-action-row.js +2 -1
- package/dist/list-detail-dialog.d.ts +2 -1
- package/dist/list-detail-dialog.js +5 -4
- package/dist/list-detail-dialog.js.map +1 -1
- package/dist/list-item.js +2 -1
- package/dist/{nav-stack-CU_0dKtI.d.ts → nav-stack-CrZF95VO.d.ts} +2 -1
- package/dist/nav-stack.d.ts +2 -1
- package/dist/nav-stack.js +2 -1
- package/dist/pane.d.ts +3 -23
- package/dist/pane.js +2 -1
- package/dist/split-view.d.ts +2 -1
- package/dist/split-view.js +2 -1
- package/dist/styles/backdrop-image.css +24 -1
- package/dist/styles/components/actions/popup-menu/popup-menu.css +1 -1
- package/dist/styles/components/collections/summary-row/summary-row.css +7 -3
- package/dist/styles/components/data-display/value-preview/value-preview.css +18 -0
- package/dist/styles/components/surfaces/backdrop-image/backdrop-image.css +24 -1
- package/dist/styles/components/surfaces/content-item/content-item.css +52 -0
- package/dist/styles/components/surfaces/editor-frame/editor-frame.css +121 -0
- package/dist/styles/components/surfaces/surface-scaffold/surface-scaffold.css +25 -1
- package/dist/styles/content-item.css +3 -168
- package/dist/styles/editor-frame.css +121 -0
- package/dist/styles/foundation.css +9 -4
- package/dist/styles/popup-menu.css +1 -1
- package/dist/styles/styles.css +2 -0
- package/dist/styles/summary-row.css +7 -3
- package/dist/styles/surface-scaffold.css +25 -1
- package/dist/styles/value-preview.css +18 -0
- package/dist/styles/webawesome.css +2 -2
- package/dist/summary-row.d.ts +20 -11
- package/dist/summary-row.js +2 -1
- package/dist/surface-scaffold-register.js +1 -1
- package/dist/surface-scaffold.d.ts +30 -2
- package/dist/surface-scaffold.js +2 -2
- package/dist/surface-tint-DQgYCaP9.d.ts +25 -0
- package/dist/tab-navigator.d.ts +2 -1
- package/dist/tab-navigator.js +2 -1
- package/dist/tab-navigator.js.map +1 -1
- package/dist/toolbar.d.ts +1 -0
- package/dist/value-preview.d.ts +21 -0
- package/dist/value-preview.js +3 -0
- package/dist/value-preview.js.map +1 -0
- package/dist/wire-catalog.d.ts +2 -1
- package/dist/wire-catalog.js +1 -1
- package/dist/wire-content-items.js +88 -0
- package/dist/wire-content-items.js.map +1 -1
- package/dist/workbench-dialog.d.ts +2 -1
- package/dist/workbench-dialog.js +4 -3
- package/dist/workbench-dialog.js.map +1 -1
- package/dist/workbench.d.ts +2 -1
- package/dist/workbench.js +2 -1
- package/docs/accessibility.md +6 -0
- package/docs/backdrop-image.md +4 -0
- package/docs/button.md +15 -0
- package/docs/component-contract.md +34 -4
- package/docs/component-selection.md +16 -1
- package/docs/design/templates/button/emphasis-dark.svg +1 -1
- package/docs/design/templates/button-dark.svg +1 -1
- package/docs/design/templates/checkbox/error-dark.svg +1 -1
- package/docs/design/templates/checkbox/states.svg +1 -1
- package/docs/design/templates/checkbox-dark.svg +1 -1
- package/docs/design/templates/checkbox-group/horizontal-dark.svg +1 -1
- package/docs/design/templates/checkbox-group/vertical.svg +1 -1
- package/docs/design/templates/checkbox-group-dark.svg +1 -1
- package/docs/design/templates/checkbox-group.svg +1 -1
- package/docs/design/templates/checkbox.svg +1 -1
- package/docs/design/templates/choice-chips/color-palette-dark.svg +1 -1
- package/docs/design/templates/choice-chips-dark.svg +1 -1
- package/docs/design/templates/color-field/error-dark.svg +1 -1
- package/docs/design/templates/color-field/hint.svg +1 -1
- package/docs/design/templates/color-field-dark.svg +1 -1
- package/docs/design/templates/color-field.svg +1 -1
- package/docs/design/templates/color-picker/gray.svg +1 -1
- package/docs/design/templates/color-picker/hsb.svg +1 -1
- package/docs/design/templates/color-picker/rgb.svg +1 -1
- package/docs/design/templates/color-picker.svg +1 -1
- package/docs/design/templates/color-swatches/palette-dark.svg +1 -1
- package/docs/design/templates/color-swatches-dark.svg +1 -1
- package/docs/design/templates/disclosure/embedded.svg +1 -1
- package/docs/design/templates/disclosure/framed-sunken.svg +1 -1
- package/docs/design/templates/disclosure/plain.svg +1 -1
- package/docs/design/templates/disclosure.svg +1 -1
- package/docs/design/templates/message-composer/chat.svg +1 -1
- package/docs/design/templates/message-composer.svg +1 -1
- package/docs/design/templates/progress-bar/determinate.svg +1 -1
- package/docs/design/templates/progress-bar/tones.svg +1 -1
- package/docs/design/templates/progress-bar.svg +1 -1
- package/docs/design/templates/radio-group/horizontal-dark.svg +1 -1
- package/docs/design/templates/radio-group/vertical.svg +1 -1
- package/docs/design/templates/radio-group-dark.svg +1 -1
- package/docs/design/templates/radio-group.svg +1 -1
- package/docs/design/templates/search-field/empty.svg +1 -1
- package/docs/design/templates/search-field/tokens.svg +1 -1
- package/docs/design/templates/search-field.svg +1 -1
- package/docs/design/templates/select/form.svg +1 -1
- package/docs/design/templates/select.svg +1 -1
- package/docs/design/templates/slider/compact.svg +1 -1
- package/docs/design/templates/slider/readout.svg +1 -1
- package/docs/design/templates/slider/ticks.svg +1 -1
- package/docs/design/templates/slider.svg +1 -1
- package/docs/design/templates/switch/states.svg +1 -1
- package/docs/design/templates/switch.svg +1 -1
- package/docs/design/templates/tag-field/error-dark.svg +1 -1
- package/docs/design/templates/tag-field/error.svg +1 -1
- package/docs/design/templates/tag-field/tags.svg +1 -1
- package/docs/design/templates/tag-field-dark.svg +1 -1
- package/docs/design/templates/tag-field.svg +1 -1
- package/docs/design/templates/text-field/error-dark.svg +1 -1
- package/docs/design/templates/text-field/labeled.svg +1 -1
- package/docs/design/templates/text-field/multiline.svg +1 -1
- package/docs/design/templates/text-field/search.svg +1 -1
- package/docs/design/templates/text-field-dark.svg +1 -1
- package/docs/design/templates/text-field.svg +1 -1
- package/docs/design/templates/toolbar-control-group/icon-tile-danger-dark.svg +1 -1
- package/docs/design/templates/toolbar-control-group-dark.svg +1 -1
- package/docs/design/templates.md +3 -1
- package/docs/editor-frame.md +47 -0
- package/docs/investigations/content-item-media-scroll-performance.md +26 -0
- package/docs/layout.md +34 -0
- package/docs/manual-test-plan.md +27 -1
- package/docs/recipes.md +9 -0
- package/docs/surface-scaffold.md +50 -1
- package/docs/value-preview.md +16 -0
- package/llms.txt +10 -1
- package/package.json +13 -1
- package/dist/chunk-3GLYIIFR.js.map +0 -1
- package/dist/chunk-4UB5Z3ZZ.js.map +0 -1
- package/dist/chunk-5USKCWGL.js +0 -113
- package/dist/chunk-5USKCWGL.js.map +0 -1
- package/dist/chunk-6CDILXF4.js.map +0 -1
- package/dist/chunk-ATGAJVZ6.js.map +0 -1
- package/dist/chunk-HQZG3OFL.js.map +0 -1
- package/dist/chunk-JCCN3U6X.js.map +0 -1
- package/dist/chunk-KPINJHIC.js.map +0 -1
- package/dist/chunk-SCDWURBO.js.map +0 -1
- package/dist/chunk-SOFPUW3O.js.map +0 -1
- package/dist/chunk-SQ5DH66U.js.map +0 -1
- package/dist/chunk-ZNROKDSZ.js.map +0 -1
|
@@ -13,6 +13,7 @@ Configure recurring dialog and popup geometry without consumer ::part() override
|
|
|
13
13
|
- A modal task needs a dialog: render a DialogSurface with a label (or labelledBy plus a heading), its body as children, and its buttons as footer, then open it with openDialog() and close it with closeDialog(), the close button, or any element with data-dialog-close. A raw Web Awesome dropdown that needs a list-compatible menu inset uses PopupSurface.
|
|
14
14
|
- A dialog body should compose rows, sections, or aligned bare prose through List and ListInsetText.
|
|
15
15
|
- A modal needs a typed preferred width, viewport gutter, or dynamic viewport-bounded height cap while retaining native body scrolling and footer actions.
|
|
16
|
+
- A dialog needs a less prominent built-in close control: closeEmphasis="quiet" softens the glyph while keeping the native button target and close behavior.
|
|
16
17
|
- A dialog that must leave the page interactive and close on Escape or an outside press uses PopoverDialogSurface; one that fills its body with a SplitView or Pane uses height and bodyLayout="fill".
|
|
17
18
|
- A chat-style dialog floats its composer over the transcript with footerPresentation="floating" and keeps a heading or notice above one scrolling transcript with bodyLayout="fill-last".
|
|
18
19
|
- A phone-first task (compose, quick edit, a picker) should rise from the bottom edge as a sheet the person can resize: presentation="bottom-sheet" with height, and resizable with minHeight / maxHeight bounds.
|
|
@@ -57,6 +58,7 @@ Exact prop names and types: [`@kerfjs/ui/surface-scaffold`](../public-api-signat
|
|
|
57
58
|
- core kerfjs/overlay confirm/prompt/form/choice as a bottom sheet styled by @kerfjs/ui/overlay-sheet.css
|
|
58
59
|
- resizable core kerfjs/overlay bottom sheet: the kui-overlay-sheet-resizable class plus wireOverlaySheets adds the resizable DialogSurface sheet grabber
|
|
59
60
|
- header with label text or heading content, headerActions, a close button, and an optional footer; withoutHeader for content that owns its heading and close control
|
|
61
|
+
- normal (default) or quiet closeEmphasis on the built-in close button
|
|
60
62
|
- accessible description by describedBy: the heading ToolbarText descriptionId or app-owned body summary copy
|
|
61
63
|
- light dismiss (a backdrop press closes; otherwise the panel pulses)
|
|
62
64
|
|
|
@@ -89,6 +91,7 @@ Margin: parent · border: child · padding: self (layout role: structure). `self
|
|
|
89
91
|
|
|
90
92
|
- DialogSurface is a native \<dialog> opened modally (showModal): it is in the top layer, the rest of the page is inert, focus stays inside, and it returns to the opener on close. Focus starts on an autofocus element, otherwise on the panel.
|
|
91
93
|
- Name it with label (also its title text) or labelledBy (the id of a heading, such as a ToolbarText). The close button is named Close (closeLabel) and Escape asks to close; the cancelable kui-request-close event reports source close-button, escape, or backdrop.
|
|
94
|
+
- closeEmphasis="quiet" uses a smaller, quiet-colored close glyph inside the same 40px target; hover, focus ring, forced colors, accessible naming, and close requests remain available.
|
|
92
95
|
- Name a PopoverDialogSurface with label or labelledBy. Describe either surface with describedBy (rendered as aria-describedby on the dialog root), usually the heading ToolbarText descriptionId or app-owned summary copy in the body; rootAttributes accepts only data-\* attributes, so it never sets aria-describedby.
|
|
93
96
|
- A floating header's title uses the normal text color, which keeps WCAG AA over the 80% raised chrome material on any content; the material turns opaque under prefers-reduced-transparency, prefers-contrast: more, forced colors, or without backdrop-filter.
|
|
94
97
|
- A resizable bottom sheet's grabber is a focusable horizontal separator ("Resize sheet") with aria-valuemin, aria-valuenow, and aria-valuemax in visible px; the arrow keys, Page Up/Down, Home, and End resize it, and its slide motion is skipped under prefers-reduced-motion.
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# ValuePreview
|
|
2
|
+
|
|
3
|
+
<!-- Generated by scripts/sync-component-docs.mjs from ai/component-catalog.json and ai/component-composition.json. Do not edit; run `npm run catalog:sync`. -->
|
|
4
|
+
|
|
5
|
+
`@kerfjs/ui:value-preview` · Kerf UI · component · Structure
|
|
6
|
+
|
|
7
|
+
A bounded, read-only multiline text value with keyboard scrolling.
|
|
8
|
+
|
|
9
|
+
## When to use
|
|
10
|
+
|
|
11
|
+
Display a literal long value with line breaks and long tokens inside a bounded scroll region.
|
|
12
|
+
|
|
13
|
+
- A read-only value may have multiple lines or long unbroken text and needs bounded scrolling, such as a conflict version.
|
|
14
|
+
|
|
15
|
+
**Not when:**
|
|
16
|
+
|
|
17
|
+
- Do not use for editing; use a multiline TextField.
|
|
18
|
+
- Do not use for short label/value facts; use ValueTable.
|
|
19
|
+
|
|
20
|
+
**Alternatives:**
|
|
21
|
+
|
|
22
|
+
- [ValueTable](./value-table.md) (nearest) — Use ValueTable for rows of short labelled facts.
|
|
23
|
+
|
|
24
|
+
## Imports
|
|
25
|
+
|
|
26
|
+
- JavaScript: `@kerfjs/ui/value-preview` — exports `ValuePreview`.
|
|
27
|
+
- CSS: the browser build of `@kerfjs/ui/value-preview` pulls its CSS automatically; import `@kerfjs/ui/value-preview.css` manually only without the `browser` export condition.
|
|
28
|
+
- Declared side effects: browser-condition-css.
|
|
29
|
+
|
|
30
|
+
## Props
|
|
31
|
+
|
|
32
|
+
Exact prop names and types: [`@kerfjs/ui/value-preview`](../public-api-signatures-v1.md#kerfjsuivalue-preview) in `public-api-signatures-v1.md`. Do not infer props from examples.
|
|
33
|
+
|
|
34
|
+
**Variants (configure, do not restyle):**
|
|
35
|
+
|
|
36
|
+
- typed minimum and maximum height
|
|
37
|
+
|
|
38
|
+
## Composition
|
|
39
|
+
|
|
40
|
+
- Parents: any.
|
|
41
|
+
- Contexts: `application-ui`.
|
|
42
|
+
- Children: unrestricted.
|
|
43
|
+
- Built from: [SunkenPanel](./sunken-panel.md).
|
|
44
|
+
|
|
45
|
+
## State and wiring
|
|
46
|
+
|
|
47
|
+
**The app owns:** value; empty wording.
|
|
48
|
+
|
|
49
|
+
No wiring helper.
|
|
50
|
+
|
|
51
|
+
## Geometry
|
|
52
|
+
|
|
53
|
+
Margin: none · border: none · padding: none (layout role: structure). `self` means the component already owns it — do not add wrapper padding, margin, or borders around it.
|
|
54
|
+
|
|
55
|
+
## Accessibility
|
|
56
|
+
|
|
57
|
+
- Give the focusable output a label so keyboard and screen-reader users can identify and scroll it.
|
|
58
|
+
|
|
59
|
+
## Styling boundary
|
|
60
|
+
|
|
61
|
+
The component owns its own styles. Configure it through its props and variants; do not override its internals.
|
|
62
|
+
|
|
63
|
+
Public class hooks (select for layout placement only, never to change the component's look): `kui-value-preview`.
|
|
64
|
+
|
|
65
|
+
Never put `kui-value-preview` on an element you write; render `ValuePreview` instead (`KUI-L103`).
|
|
66
|
+
|
|
67
|
+
Public tokens it reads: `--kui-color-text`, `--kui-font-xs`, `--kui-focus-ring`. Set a token only where its public contract allows; prefer a prop.
|
|
68
|
+
|
|
69
|
+
Everything else is internal: `kerf-ui-analyze` reports private or unknown `.kui-*` selectors (`KUI-L001`, `KUI-L010`), unknown or private tokens (`KUI-L002`, `KUI-L012`), and any application rule that restyles the component, forced dimensions included (`KUI-L019`).
|
|
70
|
+
|
|
71
|
+
## Related
|
|
72
|
+
|
|
73
|
+
- Components: [SunkenPanel](./sunken-panel.md), [ValueTable](./value-table.md).
|
|
74
|
+
- Docs: [`docs/value-preview.md`](../../docs/value-preview.md).
|
|
75
|
+
- UX catalog route: `?component=value-preview`.
|
|
@@ -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.112` and `kerfjs@5.0.0-beta.112`. 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
|
|
|
@@ -167,6 +167,7 @@ import { S as Sides } from './sides-BPSWde0A.js';
|
|
|
167
167
|
import { PaneSeparatorSide } from './pane.js';
|
|
168
168
|
import './scroll-clearance-BikHljTc.js';
|
|
169
169
|
import './css-values.js';
|
|
170
|
+
import './surface-tint-DQgYCaP9.js';
|
|
170
171
|
|
|
171
172
|
type ToolbarPosition = 'header' | 'footer';
|
|
172
173
|
/** Control-band density: `default` (60px with 44px groups) or `compact`. */
|
|
@@ -1195,7 +1196,11 @@ export { ListInsetText, type ListInsetTextProps, Sides };
|
|
|
1195
1196
|
```ts
|
|
1196
1197
|
import * as kerfjs from 'kerfjs';
|
|
1197
1198
|
import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
|
|
1199
|
+
import { CssColor } from './css-values.js';
|
|
1198
1200
|
import { S as SemanticTone } from './semantic-tone-CdW013KF.js';
|
|
1201
|
+
import { S as SurfaceTint } from './surface-tint-DQgYCaP9.js';
|
|
1202
|
+
import { BackdropImagePosition, BackdropImageParallax, BackdropImageBlur, BackdropImageScrim } from './backdrop-image.js';
|
|
1203
|
+
import './extension-attributes-mu8MFUl0.js';
|
|
1199
1204
|
|
|
1200
1205
|
/**
|
|
1201
1206
|
* Base surface treatment, semantic status colors, or `brand-loud`: the solid
|
|
@@ -1214,12 +1219,43 @@ type ContentItemFrame = 'none' | 'framed';
|
|
|
1214
1219
|
type ContentItemShape = 'rounded' | 'pill';
|
|
1215
1220
|
/** `single` uses an option; `multiple` uses a grid row; `toggle` uses a pressed button. */
|
|
1216
1221
|
type ContentItemSelectionMode = 'none' | 'single' | 'multiple' | 'toggle';
|
|
1222
|
+
/** One card-owned lead image in the containing feed's shared scrollport. */
|
|
1223
|
+
interface ContentItemMedia {
|
|
1224
|
+
src: string;
|
|
1225
|
+
alt: string;
|
|
1226
|
+
srcset?: string;
|
|
1227
|
+
sizes?: string;
|
|
1228
|
+
/** Width divided by height; reserves the image block before it loads. Default 16/9. */
|
|
1229
|
+
aspectRatio?: number;
|
|
1230
|
+
position?: BackdropImagePosition;
|
|
1231
|
+
/** Default subtle (35% lag); set none for a static lead image. */
|
|
1232
|
+
parallax?: BackdropImageParallax;
|
|
1233
|
+
/** App-supplied soft copy; its opacity changes, never its blur filter. */
|
|
1234
|
+
blurredSrc?: string;
|
|
1235
|
+
/** Shared BackdropImage blur behavior; use instead of `blurredSrc`. */
|
|
1236
|
+
blur?: BackdropImageBlur;
|
|
1237
|
+
/** Skip offscreen media painting in long feeds while retaining card geometry. */
|
|
1238
|
+
deferOffscreen?: boolean;
|
|
1239
|
+
/** Color the image dissolves into and the card body continues on. */
|
|
1240
|
+
fadeTo?: CssColor;
|
|
1241
|
+
/** Content layered over the image, including native controls. */
|
|
1242
|
+
overlay?: KerfUiContent;
|
|
1243
|
+
/** Dim the image behind overlay content. */
|
|
1244
|
+
scrim?: BackdropImageScrim;
|
|
1245
|
+
/** Extend the image to the card's top, left, and right inner edges. */
|
|
1246
|
+
edgeToEdge?: boolean;
|
|
1247
|
+
}
|
|
1217
1248
|
type ContentItemRootAttributes = Readonly<Record<`data-${string}`, string | undefined> & {
|
|
1218
1249
|
'data-component'?: never;
|
|
1219
1250
|
'data-appearance'?: never;
|
|
1220
1251
|
'data-outlined'?: never;
|
|
1221
1252
|
'data-bubble'?: never;
|
|
1222
1253
|
'data-grid-row'?: never;
|
|
1254
|
+
'data-media-state'?: never;
|
|
1255
|
+
'data-media-edge'?: never;
|
|
1256
|
+
'data-media-fade'?: never;
|
|
1257
|
+
'data-kui-tint'?: never;
|
|
1258
|
+
'data-kui-tint-accent'?: never;
|
|
1223
1259
|
}>;
|
|
1224
1260
|
type ContentItemInteractiveRootAttributes = Readonly<Record<`data-${string}`, string | undefined> & {
|
|
1225
1261
|
'data-component'?: never;
|
|
@@ -1227,6 +1263,11 @@ type ContentItemInteractiveRootAttributes = Readonly<Record<`data-${string}`, st
|
|
|
1227
1263
|
'data-outlined'?: never;
|
|
1228
1264
|
'data-bubble'?: never;
|
|
1229
1265
|
'data-grid-row'?: never;
|
|
1266
|
+
'data-media-state'?: never;
|
|
1267
|
+
'data-media-edge'?: never;
|
|
1268
|
+
'data-media-fade'?: never;
|
|
1269
|
+
'data-kui-tint'?: never;
|
|
1270
|
+
'data-kui-tint-accent'?: never;
|
|
1230
1271
|
'data-action'?: never;
|
|
1231
1272
|
'data-item-id'?: never;
|
|
1232
1273
|
'data-interactive'?: never;
|
|
@@ -1242,6 +1283,10 @@ interface ContentItemBaseProps {
|
|
|
1242
1283
|
* semantic values match StateBanner. Defaults to `transparent`.
|
|
1243
1284
|
*/
|
|
1244
1285
|
appearance?: ContentItemAppearance;
|
|
1286
|
+
/** Reserved lead image with a per-image scroll timeline. Wire the containing root with `wireContentItems`. */
|
|
1287
|
+
media?: ContentItemMedia;
|
|
1288
|
+
/** App-sampled image color, scoped to this card once its image loads. */
|
|
1289
|
+
tint?: SurfaceTint;
|
|
1245
1290
|
/** Item content; a plain string is allowed for bare copy. */
|
|
1246
1291
|
children?: KerfUiContent | string;
|
|
1247
1292
|
/**
|
|
@@ -1318,9 +1363,9 @@ type ContentItemProps = ContentItemBaseProps & ({
|
|
|
1318
1363
|
* border (transparent unless `framed`), 8px padding, and a rounded or pill
|
|
1319
1364
|
* radius. It owns that whole geometry, so wrappers must not add more.
|
|
1320
1365
|
*/
|
|
1321
|
-
declare function ContentItem({ appearance, children, frame, flush, shape, bubble, title, ariaLabel, focusTarget, outlined, tabIndex, gridRow, interactive, action, itemId, selectionMode, selected, disabled, className, rootAttributes, slot, }: ContentItemProps): kerfjs.SafeHtml;
|
|
1366
|
+
declare function ContentItem({ appearance, media, tint, children, frame, flush, shape, bubble, title, ariaLabel, focusTarget, outlined, tabIndex, gridRow, interactive, action, itemId, selectionMode, selected, disabled, className, rootAttributes, slot, }: ContentItemProps): kerfjs.SafeHtml;
|
|
1322
1367
|
|
|
1323
|
-
export { ContentItem, type ContentItemAppearance, type ContentItemBubble, type ContentItemFrame, type ContentItemProps, type ContentItemSelectionMode, type ContentItemShape, SemanticTone };
|
|
1368
|
+
export { ContentItem, type ContentItemAppearance, type ContentItemBubble, type ContentItemFrame, type ContentItemMedia, type ContentItemProps, type ContentItemSelectionMode, type ContentItemShape, SemanticTone };
|
|
1324
1369
|
```
|
|
1325
1370
|
|
|
1326
1371
|
## `@kerfjs/ui/value-table`
|
|
@@ -1722,12 +1767,13 @@ export { wireListFocusScroll };
|
|
|
1722
1767
|
## `@kerfjs/ui/nav-stack`
|
|
1723
1768
|
|
|
1724
1769
|
```ts
|
|
1725
|
-
export { c as NavStack, d as NavStackBottomToolbarPresentation, e as NavStackChromePresentation, N as NavStackProps, f as NavStackToolbarConfig, a as NavStackView, g as NavStackViewBottomToolbar, h as NavStackViewToolbar } from './nav-stack-
|
|
1770
|
+
export { c as NavStack, d as NavStackBottomToolbarPresentation, e as NavStackChromePresentation, N as NavStackProps, f as NavStackToolbarConfig, a as NavStackView, g as NavStackViewBottomToolbar, h as NavStackViewToolbar } from './nav-stack-CrZF95VO.js';
|
|
1726
1771
|
import 'kerfjs';
|
|
1727
1772
|
import './semantic-content-BbzjvSu9.js';
|
|
1728
1773
|
import './pane.js';
|
|
1729
1774
|
import './scroll-clearance-BikHljTc.js';
|
|
1730
1775
|
import './css-values.js';
|
|
1776
|
+
import './surface-tint-DQgYCaP9.js';
|
|
1731
1777
|
import './list.js';
|
|
1732
1778
|
import './extension-attributes-mu8MFUl0.js';
|
|
1733
1779
|
import './flex-alignment-4ms8ZbV8.js';
|
|
@@ -1767,11 +1813,12 @@ export { type WireNavStackOptions, wireNavStack };
|
|
|
1767
1813
|
```ts
|
|
1768
1814
|
import * as kerfjs from 'kerfjs';
|
|
1769
1815
|
import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
|
|
1770
|
-
import { N as NavStackProps, a as NavStackView } from './nav-stack-
|
|
1816
|
+
import { N as NavStackProps, a as NavStackView } from './nav-stack-CrZF95VO.js';
|
|
1771
1817
|
import { ResizableRegionProps } from './resizable-region.js';
|
|
1772
1818
|
import './pane.js';
|
|
1773
1819
|
import './scroll-clearance-BikHljTc.js';
|
|
1774
1820
|
import './css-values.js';
|
|
1821
|
+
import './surface-tint-DQgYCaP9.js';
|
|
1775
1822
|
import './list.js';
|
|
1776
1823
|
import './extension-attributes-mu8MFUl0.js';
|
|
1777
1824
|
import './flex-alignment-4ms8ZbV8.js';
|
|
@@ -1876,6 +1923,8 @@ import * as kerfjs from 'kerfjs';
|
|
|
1876
1923
|
import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
|
|
1877
1924
|
import { S as ScrollClearance } from './scroll-clearance-BikHljTc.js';
|
|
1878
1925
|
import { CssColor } from './css-values.js';
|
|
1926
|
+
import { S as SurfaceTint } from './surface-tint-DQgYCaP9.js';
|
|
1927
|
+
export { a as SurfaceTintScheme } from './surface-tint-DQgYCaP9.js';
|
|
1879
1928
|
|
|
1880
1929
|
/**
|
|
1881
1930
|
* What clear (fully transparent) chrome fades in as content scrolls beneath
|
|
@@ -1886,28 +1935,6 @@ import { CssColor } from './css-values.js';
|
|
|
1886
1935
|
*/
|
|
1887
1936
|
type ScrollEdge = 'none' | 'material' | 'surface';
|
|
1888
1937
|
|
|
1889
|
-
/** The color scheme an app declares for a {@link SurfaceTint}'s color. */
|
|
1890
|
-
type SurfaceTintScheme = 'light' | 'dark';
|
|
1891
|
-
/**
|
|
1892
|
-
* A scoped tint for a layout surface: the app's color (usually sampled from
|
|
1893
|
-
* artwork it already knows) and the scheme that color belongs to. Kerf does no
|
|
1894
|
-
* color detection; `scheme` says whether the color reads as a light or a dark
|
|
1895
|
-
* surface. Inside the scope the surface, raised surface, text, quiet text, and
|
|
1896
|
-
* everything built on them (quiet fills, separators' backdrop, the chrome
|
|
1897
|
-
* material) re-derive from the color, with lightness clamped so text keeps
|
|
1898
|
-
* WCAG AA over any color.
|
|
1899
|
-
*/
|
|
1900
|
-
interface SurfaceTint {
|
|
1901
|
-
color: CssColor;
|
|
1902
|
-
scheme: SurfaceTintScheme;
|
|
1903
|
-
/**
|
|
1904
|
-
* An optional accent (usually the artwork's most vivid color). The scope's
|
|
1905
|
-
* brand ramp re-derives from it: loud fills and their text, brand text and
|
|
1906
|
-
* links, text on brand fills, and the focus ring, each clamped to keep AA.
|
|
1907
|
-
*/
|
|
1908
|
-
accent?: CssColor;
|
|
1909
|
-
}
|
|
1910
|
-
|
|
1911
1938
|
/**
|
|
1912
1939
|
* Logical pane sides: where a {@link Pane} can show a separator and where it can
|
|
1913
1940
|
* compensate for a device safe-area inset.
|
|
@@ -2129,7 +2156,7 @@ type PaneConfig = Pick<PaneProps, 'contentElement' | 'contentLabel' | 'separator
|
|
|
2129
2156
|
*/
|
|
2130
2157
|
declare function Pane({ header, children, footer, chromePlacement, chromeDividers, compactChrome, compactChromeOpen, headerPresentation, scrollEdge, scrollEdgeDistance, appearance, background, tint, deepInset, scrollClearance, tabIndex, outlined, element, contentElement, separators, safeAreaEdges, id, label, contentLabel, className, headerClassName, contentClassName, footerClassName, rootAttributes, slot, }: PaneProps): kerfjs.SafeHtml;
|
|
2131
2158
|
|
|
2132
|
-
export { Pane, type PaneAppearance, type PaneChromeDividers, type PaneChromePlacement, type PaneCompactChrome, type PaneCompactChromePolicy, type PaneConfig, type PaneContentElement, type PaneElement, type PaneHeaderPresentation, type PaneProps, type PaneSeparatorSide, ScrollClearance, type ScrollEdge,
|
|
2159
|
+
export { Pane, type PaneAppearance, type PaneChromeDividers, type PaneChromePlacement, type PaneCompactChrome, type PaneCompactChromePolicy, type PaneConfig, type PaneContentElement, type PaneElement, type PaneHeaderPresentation, type PaneProps, type PaneSeparatorSide, ScrollClearance, type ScrollEdge, SurfaceTint };
|
|
2133
2160
|
```
|
|
2134
2161
|
|
|
2135
2162
|
## `@kerfjs/ui/workbench`
|
|
@@ -2137,13 +2164,14 @@ export { Pane, type PaneAppearance, type PaneChromeDividers, type PaneChromePlac
|
|
|
2137
2164
|
```ts
|
|
2138
2165
|
import { SafeHtml } from 'kerfjs';
|
|
2139
2166
|
import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
|
|
2140
|
-
import { b as NavPane, N as NavStackProps } from './nav-stack-
|
|
2167
|
+
import { b as NavPane, N as NavStackProps } from './nav-stack-CrZF95VO.js';
|
|
2141
2168
|
import { ListConfig } from './list.js';
|
|
2142
2169
|
import { PaneConfig } from './pane.js';
|
|
2143
2170
|
import { ResizableRegionSeparator, ResizableRegionCollapseMotion, ResizableRegionContentOverflow, ResizableRegionPresentation, ResizableRegionRestorePosition } from './resizable-region.js';
|
|
2144
2171
|
import { a as PanelToolbar, c as PanelBottomToolbar, b as PanelChromePlacement, d as PanelToggle } from './panel-toolbar-vg6Ir5Dy.js';
|
|
2145
2172
|
import { ToolbarConfig } from './toolbar.js';
|
|
2146
2173
|
import './css-values.js';
|
|
2174
|
+
import './surface-tint-DQgYCaP9.js';
|
|
2147
2175
|
import './toolbar-text.js';
|
|
2148
2176
|
import './extension-attributes-mu8MFUl0.js';
|
|
2149
2177
|
import './flex-alignment-4ms8ZbV8.js';
|
|
@@ -2557,6 +2585,7 @@ import './sides-BPSWde0A.js';
|
|
|
2557
2585
|
import './extension-attributes-mu8MFUl0.js';
|
|
2558
2586
|
import './flex-alignment-4ms8ZbV8.js';
|
|
2559
2587
|
import './scroll-clearance-BikHljTc.js';
|
|
2588
|
+
import './surface-tint-DQgYCaP9.js';
|
|
2560
2589
|
|
|
2561
2590
|
/** Which edge a {@link CollapsiblePanel} docks to. */
|
|
2562
2591
|
type CollapsiblePanelSide = PanelSide;
|
|
@@ -2762,8 +2791,9 @@ export { type SidebarStorage, type WireSidebarOptions, type WireSidebarPanel, wi
|
|
|
2762
2791
|
```ts
|
|
2763
2792
|
import { SafeHtml } from 'kerfjs';
|
|
2764
2793
|
import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
|
|
2765
|
-
import { PaneAppearance,
|
|
2794
|
+
import { PaneAppearance, ScrollEdge } from './pane.js';
|
|
2766
2795
|
import { CssColor } from './css-values.js';
|
|
2796
|
+
import { S as SurfaceTint } from './surface-tint-DQgYCaP9.js';
|
|
2767
2797
|
import './scroll-clearance-BikHljTc.js';
|
|
2768
2798
|
|
|
2769
2799
|
interface TabNavigatorTabBase<Id extends string> {
|
|
@@ -3092,8 +3122,9 @@ import './sides-BPSWde0A.js';
|
|
|
3092
3122
|
import './pane.js';
|
|
3093
3123
|
import './scroll-clearance-BikHljTc.js';
|
|
3094
3124
|
import './css-values.js';
|
|
3125
|
+
import './surface-tint-DQgYCaP9.js';
|
|
3095
3126
|
import './workbench.js';
|
|
3096
|
-
import './nav-stack-
|
|
3127
|
+
import './nav-stack-CrZF95VO.js';
|
|
3097
3128
|
import './list.js';
|
|
3098
3129
|
import './extension-attributes-mu8MFUl0.js';
|
|
3099
3130
|
import './flex-alignment-4ms8ZbV8.js';
|
|
@@ -3247,8 +3278,9 @@ import './sides-BPSWde0A.js';
|
|
|
3247
3278
|
import './pane.js';
|
|
3248
3279
|
import './scroll-clearance-BikHljTc.js';
|
|
3249
3280
|
import './css-values.js';
|
|
3281
|
+
import './surface-tint-DQgYCaP9.js';
|
|
3250
3282
|
import './workbench.js';
|
|
3251
|
-
import './nav-stack-
|
|
3283
|
+
import './nav-stack-CrZF95VO.js';
|
|
3252
3284
|
import './list.js';
|
|
3253
3285
|
import './extension-attributes-mu8MFUl0.js';
|
|
3254
3286
|
import './flex-alignment-4ms8ZbV8.js';
|
|
@@ -3302,8 +3334,9 @@ import './sides-BPSWde0A.js';
|
|
|
3302
3334
|
import './pane.js';
|
|
3303
3335
|
import './scroll-clearance-BikHljTc.js';
|
|
3304
3336
|
import './css-values.js';
|
|
3337
|
+
import './surface-tint-DQgYCaP9.js';
|
|
3305
3338
|
import './workbench.js';
|
|
3306
|
-
import './nav-stack-
|
|
3339
|
+
import './nav-stack-CrZF95VO.js';
|
|
3307
3340
|
import './list.js';
|
|
3308
3341
|
import './extension-attributes-mu8MFUl0.js';
|
|
3309
3342
|
import './flex-alignment-4ms8ZbV8.js';
|
|
@@ -4545,6 +4578,9 @@ type BackdropImageRootAttributes = StructuralRootAttributes & Readonly<{
|
|
|
4545
4578
|
'data-fade'?: never;
|
|
4546
4579
|
'data-repeat'?: never;
|
|
4547
4580
|
'data-under-chrome'?: never;
|
|
4581
|
+
'data-aspect-ratio'?: never;
|
|
4582
|
+
'data-inline-bleed'?: never;
|
|
4583
|
+
'data-defer-offscreen'?: never;
|
|
4548
4584
|
}>;
|
|
4549
4585
|
interface BackdropImageCommonProps {
|
|
4550
4586
|
/** Image URL. */
|
|
@@ -4558,6 +4594,12 @@ interface BackdropImageCommonProps {
|
|
|
4558
4594
|
position?: BackdropImagePosition;
|
|
4559
4595
|
/** Height of the image block. Default 320px (`remify(320)`). */
|
|
4560
4596
|
height?: CssLength;
|
|
4597
|
+
/** Reserve image height from its width, useful for an inline card. Cannot be combined with `height`. */
|
|
4598
|
+
aspectRatio?: number;
|
|
4599
|
+
/** Native image loading behavior. Omit for the browser default. */
|
|
4600
|
+
loading?: 'eager' | 'lazy';
|
|
4601
|
+
/** Bleed to a Pane's inline content edges. Set false when embedded in a card. Defaults to true. */
|
|
4602
|
+
bleedInline?: boolean;
|
|
4561
4603
|
/** How far the image lags the scroll. Default `none`. */
|
|
4562
4604
|
parallax?: BackdropImageParallax;
|
|
4563
4605
|
/**
|
|
@@ -4571,6 +4613,8 @@ interface BackdropImageCommonProps {
|
|
|
4571
4613
|
* statically blurred copy. Static (unblurred) wherever parallax is.
|
|
4572
4614
|
*/
|
|
4573
4615
|
blur?: BackdropImageBlur;
|
|
4616
|
+
/** Skip painting the image hero while it is off screen in a long feed. */
|
|
4617
|
+
deferOffscreen?: boolean;
|
|
4574
4618
|
/**
|
|
4575
4619
|
* Run the image up beneath the scroller's block-start inset: an overlay or
|
|
4576
4620
|
* clear Pane header, NavStack chrome handed to a view's Pane, and the top
|
|
@@ -4672,6 +4716,15 @@ declare function openDialog(dialog: HTMLDialogElement): void;
|
|
|
4672
4716
|
* `close` event fires once it has closed.
|
|
4673
4717
|
*/
|
|
4674
4718
|
declare function closeDialog(dialog: HTMLDialogElement): void;
|
|
4719
|
+
/**
|
|
4720
|
+
* Reconcile one controlled stack after rendering its DialogSurface layers.
|
|
4721
|
+
* Opening back-to-front establishes native top-layer order; unchanged layers
|
|
4722
|
+
* keep their DOM nodes and focus. The application owns `stack.open` and handles
|
|
4723
|
+
* `kui-request-close` to update that state before calling this again.
|
|
4724
|
+
*/
|
|
4725
|
+
declare function syncDialogStack(root: ParentNode): void;
|
|
4726
|
+
/** Follow a controlled stack's render updates until the returned stop runs. */
|
|
4727
|
+
declare function wireDialogStack(root: ParentNode): () => void;
|
|
4675
4728
|
|
|
4676
4729
|
type DialogSurfaceSize = 'small' | 'medium' | 'large';
|
|
4677
4730
|
/**
|
|
@@ -4712,6 +4765,8 @@ type DialogSurfaceFooterPresentation = 'docked' | 'floating';
|
|
|
4712
4765
|
* material, so content scrolls visibly beneath the title bar.
|
|
4713
4766
|
*/
|
|
4714
4767
|
type DialogSurfaceHeaderPresentation = 'docked' | 'floating';
|
|
4768
|
+
/** The built-in close control's visual weight; `normal` keeps the default. */
|
|
4769
|
+
type DialogSurfaceCloseEmphasis = 'normal' | 'quiet';
|
|
4715
4770
|
/**
|
|
4716
4771
|
* Application `data-*` identity on the DialogSurface root, such as
|
|
4717
4772
|
* `data-key`; the surface's own configuration attributes stay protected.
|
|
@@ -4729,6 +4784,19 @@ type DialogSurfaceName = {
|
|
|
4729
4784
|
labelledBy: string;
|
|
4730
4785
|
};
|
|
4731
4786
|
type DialogSurfaceProps = DialogSurfaceName & DialogSurfaceOptions;
|
|
4787
|
+
/** Controlled state of one native modal layer inside a `wireDialogStack` root. */
|
|
4788
|
+
interface DialogSurfaceStack {
|
|
4789
|
+
/** Whether this layer belongs in the native top layer. */
|
|
4790
|
+
open: boolean;
|
|
4791
|
+
/** The one frontmost open layer; it owns modal focus and accessibility. */
|
|
4792
|
+
active: boolean;
|
|
4793
|
+
/** One-based order from the back to the front. */
|
|
4794
|
+
position: number;
|
|
4795
|
+
/** Number of layers in the stack, including closed layers still rendered. */
|
|
4796
|
+
count: number;
|
|
4797
|
+
/** Optional vertical offset for an inactive layer; omitted on phones. */
|
|
4798
|
+
offset?: CssLength;
|
|
4799
|
+
}
|
|
4732
4800
|
interface DialogSurfaceOptions {
|
|
4733
4801
|
/** The dialog's id, for `openDialog(document.getElementById(id))`. */
|
|
4734
4802
|
id?: string;
|
|
@@ -4748,6 +4816,8 @@ interface DialogSurfaceOptions {
|
|
|
4748
4816
|
alert?: boolean;
|
|
4749
4817
|
/** The body content. */
|
|
4750
4818
|
children: KerfUiContent;
|
|
4819
|
+
/** Controlled modal stack state; call `wireDialogStack` on the containing root. */
|
|
4820
|
+
stack?: DialogSurfaceStack;
|
|
4751
4821
|
/**
|
|
4752
4822
|
* Header title content in place of the `label` text, such as an xl
|
|
4753
4823
|
* `ToolbarText` with a description. The dialog keeps its `label` (or
|
|
@@ -4767,6 +4837,8 @@ interface DialogSurfaceOptions {
|
|
|
4767
4837
|
lightDismiss?: boolean;
|
|
4768
4838
|
/** The close button's accessible name (default `Close`). */
|
|
4769
4839
|
closeLabel?: string;
|
|
4840
|
+
/** Soften the built-in close control without changing its 40px target. */
|
|
4841
|
+
closeEmphasis?: DialogSurfaceCloseEmphasis;
|
|
4770
4842
|
size?: DialogSurfaceSize;
|
|
4771
4843
|
presentation?: DialogSurfacePresentation;
|
|
4772
4844
|
/** Modal preferred width. Takes precedence over size, within the viewport cap. */
|
|
@@ -4860,7 +4932,7 @@ interface DialogSurfaceOptions {
|
|
|
4860
4932
|
* floating header and footer measurement, the bottom sheet's keyboard
|
|
4861
4933
|
* clearance and grabber, and re-render resilience while open.
|
|
4862
4934
|
*/
|
|
4863
|
-
declare function DialogSurface({ id, label, labelledBy, describedBy, alert, heading, headerActions, footer, withoutHeader, lightDismiss, closeLabel, children, size, presentation, preferredWidth, bodyInset, footerInset, viewportGutter, maxHeight, height, minHeight, resizable, enterMotion, exitMotion, bodyLayout, headerPresentation, footerPresentation, footerOffset, rootAttributes, className, slot, }: DialogSurfaceProps): kerfjs.SafeHtml;
|
|
4935
|
+
declare function DialogSurface({ id, label, labelledBy, describedBy, alert, heading, headerActions, footer, withoutHeader, lightDismiss, closeLabel, closeEmphasis, children, stack, size, presentation, preferredWidth, bodyInset, footerInset, viewportGutter, maxHeight, height, minHeight, resizable, enterMotion, exitMotion, bodyLayout, headerPresentation, footerPresentation, footerOffset, rootAttributes, className, slot, }: DialogSurfaceProps): kerfjs.SafeHtml;
|
|
4864
4936
|
/** Where a PopoverDialogSurface appears: the top layer, or in flow. */
|
|
4865
4937
|
type PopoverDialogSurfacePresentation = 'overlay' | 'embedded';
|
|
4866
4938
|
/** Application `data-*` metadata on the surface root. */
|
|
@@ -4927,7 +4999,7 @@ interface PopupSurfaceProps {
|
|
|
4927
4999
|
/** Configure recurring Web Awesome dropdown-menu geometry without consumer ::part() CSS. */
|
|
4928
5000
|
declare function PopupSurface({ children, inset, className, slot, }: PopupSurfaceProps): kerfjs.SafeHtml;
|
|
4929
5001
|
|
|
4930
|
-
export { type DialogCloseSource, type DialogRequestCloseDetail, DialogSurface, type DialogSurfaceBodyLayout, type DialogSurfaceFooterPresentation, type DialogSurfaceHeaderPresentation, type DialogSurfaceHeight, type DialogSurfaceMaxHeight, type DialogSurfaceName, type DialogSurfaceOptions, type DialogSurfacePresentation, type DialogSurfaceProps, type DialogSurfaceRootAttributes, type DialogSurfaceSheetMotion, type DialogSurfaceSize, PopoverDialogSurface, type PopoverDialogSurfaceDataAttributes, type PopoverDialogSurfacePresentation, type PopoverDialogSurfaceProps, PopupSurface, type PopupSurfaceInset, type PopupSurfaceProps, type SurfaceInset, closeDialog, openDialog };
|
|
5002
|
+
export { type DialogCloseSource, type DialogRequestCloseDetail, DialogSurface, type DialogSurfaceBodyLayout, type DialogSurfaceCloseEmphasis, type DialogSurfaceFooterPresentation, type DialogSurfaceHeaderPresentation, type DialogSurfaceHeight, type DialogSurfaceMaxHeight, type DialogSurfaceName, type DialogSurfaceOptions, type DialogSurfacePresentation, type DialogSurfaceProps, type DialogSurfaceRootAttributes, type DialogSurfaceSheetMotion, type DialogSurfaceSize, type DialogSurfaceStack, PopoverDialogSurface, type PopoverDialogSurfaceDataAttributes, type PopoverDialogSurfacePresentation, type PopoverDialogSurfaceProps, PopupSurface, type PopupSurfaceInset, type PopupSurfaceProps, type SurfaceInset, closeDialog, openDialog, syncDialogStack, wireDialogStack };
|
|
4931
5003
|
```
|
|
4932
5004
|
|
|
4933
5005
|
## `@kerfjs/ui/list-detail-dialog`
|
|
@@ -4939,9 +5011,10 @@ import { CssLength } from './css-values.js';
|
|
|
4939
5011
|
import { SplitViewListWidth } from './split-view.js';
|
|
4940
5012
|
import { DialogSurfaceSize, DialogSurfaceHeight, DialogSurfaceMaxHeight, DialogSurfaceRootAttributes } from './surface-scaffold.js';
|
|
4941
5013
|
export { DialogCloseSource, DialogRequestCloseDetail, closeDialog, openDialog } from './surface-scaffold.js';
|
|
4942
|
-
import './nav-stack-
|
|
5014
|
+
import './nav-stack-CrZF95VO.js';
|
|
4943
5015
|
import './pane.js';
|
|
4944
5016
|
import './scroll-clearance-BikHljTc.js';
|
|
5017
|
+
import './surface-tint-DQgYCaP9.js';
|
|
4945
5018
|
import './list.js';
|
|
4946
5019
|
import './extension-attributes-mu8MFUl0.js';
|
|
4947
5020
|
import './flex-alignment-4ms8ZbV8.js';
|
|
@@ -5067,9 +5140,10 @@ import { CssLength } from './css-values.js';
|
|
|
5067
5140
|
import { WorkbenchMainBottomToolbar, WorkbenchPanel } from './workbench.js';
|
|
5068
5141
|
import { DialogSurfaceSize, DialogSurfaceHeight, DialogSurfaceMaxHeight, DialogSurfaceRootAttributes } from './surface-scaffold.js';
|
|
5069
5142
|
export { DialogCloseSource, DialogRequestCloseDetail, closeDialog, openDialog } from './surface-scaffold.js';
|
|
5070
|
-
import './nav-stack-
|
|
5143
|
+
import './nav-stack-CrZF95VO.js';
|
|
5071
5144
|
import './pane.js';
|
|
5072
5145
|
import './scroll-clearance-BikHljTc.js';
|
|
5146
|
+
import './surface-tint-DQgYCaP9.js';
|
|
5073
5147
|
import './list.js';
|
|
5074
5148
|
import './extension-attributes-mu8MFUl0.js';
|
|
5075
5149
|
import './flex-alignment-4ms8ZbV8.js';
|
|
@@ -5277,6 +5351,78 @@ declare function Text({ variant: Variant, tone, color, size, font, border, flush
|
|
|
5277
5351
|
export { FieldLabel, type FieldLabelProps, Sides, Text, type TextAlign, type TextBorder, type TextContent, type TextFont, type TextLineHeight, type TextProps, type TextSize, type TextTone, type TextTruncate, type TextTruncateKeep, type TextVariant, type TextWrap };
|
|
5278
5352
|
```
|
|
5279
5353
|
|
|
5354
|
+
## `@kerfjs/ui/editor-frame`
|
|
5355
|
+
|
|
5356
|
+
```ts
|
|
5357
|
+
import * as kerfjs from 'kerfjs';
|
|
5358
|
+
import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
|
|
5359
|
+
import { CssLength } from './css-values.js';
|
|
5360
|
+
|
|
5361
|
+
type EditorFrameMode = 'source' | 'preview';
|
|
5362
|
+
type EditorFrameAppearance = 'framed' | 'embedded';
|
|
5363
|
+
type EditorFrameInset = 'padded' | 'flush';
|
|
5364
|
+
interface EditorFrameProps {
|
|
5365
|
+
/** A Toolbar or other fixed controls above the writing surface. */
|
|
5366
|
+
toolbar?: KerfUiContent;
|
|
5367
|
+
/** A native textarea in source mode, or rendered content in preview mode. */
|
|
5368
|
+
children: KerfUiContent;
|
|
5369
|
+
mode: EditorFrameMode;
|
|
5370
|
+
/** Framed fixed-height card (default) or unframed content within a host. */
|
|
5371
|
+
appearance?: EditorFrameAppearance;
|
|
5372
|
+
/** Remove the writing surface inset when the host owns the text column. */
|
|
5373
|
+
inset?: EditorFrameInset;
|
|
5374
|
+
/** Fill the viewport inset as a raised editor overlay. */
|
|
5375
|
+
expanded?: boolean;
|
|
5376
|
+
/** Framed block size; defaults to 320px. Ignored while expanded or embedded. */
|
|
5377
|
+
height?: CssLength;
|
|
5378
|
+
/** Maximum framed inline size; defaults to 672px. */
|
|
5379
|
+
maxWidth?: CssLength;
|
|
5380
|
+
/** Embedded source height restored by the app. */
|
|
5381
|
+
sourceHeight?: CssLength;
|
|
5382
|
+
/** Let an embedded native textarea grow with its content. */
|
|
5383
|
+
sourceAutosize?: boolean;
|
|
5384
|
+
/** Name a distinct editor region for assistive technology. */
|
|
5385
|
+
label?: string;
|
|
5386
|
+
/** App-owned root identity for delegation or a stable morph key. */
|
|
5387
|
+
rootAttributes?: Readonly<Record<`data-${string}`, string | undefined>>;
|
|
5388
|
+
slot?: string;
|
|
5389
|
+
}
|
|
5390
|
+
/**
|
|
5391
|
+
* A fixed toolbar over one writing surface. Source mode gives a native
|
|
5392
|
+
* textarea the scrollport; preview mode scrolls the surface around rendered
|
|
5393
|
+
* content. The app owns editing, draft restoration, and preview actions.
|
|
5394
|
+
*/
|
|
5395
|
+
declare function EditorFrame({ toolbar, children, mode, appearance, inset, expanded, height, maxWidth, sourceHeight, sourceAutosize, label, rootAttributes, slot, }: EditorFrameProps): kerfjs.SafeHtml;
|
|
5396
|
+
|
|
5397
|
+
export { EditorFrame, type EditorFrameAppearance, type EditorFrameInset, type EditorFrameMode, type EditorFrameProps };
|
|
5398
|
+
```
|
|
5399
|
+
|
|
5400
|
+
## `@kerfjs/ui/value-preview`
|
|
5401
|
+
|
|
5402
|
+
```ts
|
|
5403
|
+
import * as kerfjs from 'kerfjs';
|
|
5404
|
+
import { CssLength } from './css-values.js';
|
|
5405
|
+
|
|
5406
|
+
interface ValuePreviewProps {
|
|
5407
|
+
/** Accessible name for the keyboard-scrollable value. */
|
|
5408
|
+
label: string;
|
|
5409
|
+
/** Literal plain-text value, including newlines and long unbroken text. */
|
|
5410
|
+
value: string;
|
|
5411
|
+
/** Minimum height; defaults to 48px. */
|
|
5412
|
+
minHeight?: CssLength;
|
|
5413
|
+
/** Maximum height before the value scrolls; defaults to 96px. */
|
|
5414
|
+
maxHeight?: CssLength;
|
|
5415
|
+
id?: string;
|
|
5416
|
+
className?: string;
|
|
5417
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
5418
|
+
slot?: string;
|
|
5419
|
+
}
|
|
5420
|
+
/** Read-only, bounded multiline text for a containing surface such as SunkenPanel. */
|
|
5421
|
+
declare function ValuePreview({ label, value, minHeight, maxHeight, id, className, slot, }: ValuePreviewProps): kerfjs.SafeHtml;
|
|
5422
|
+
|
|
5423
|
+
export { ValuePreview, type ValuePreviewProps };
|
|
5424
|
+
```
|
|
5425
|
+
|
|
5280
5426
|
## `@kerfjs/ui/framed-list`
|
|
5281
5427
|
|
|
5282
5428
|
```ts
|
|
@@ -5348,7 +5494,7 @@ type SummaryRowRootAttributes = Readonly<Record<`data-${string}`, string | undef
|
|
|
5348
5494
|
'data-selected'?: never;
|
|
5349
5495
|
'data-dimmed'?: never;
|
|
5350
5496
|
}>;
|
|
5351
|
-
interface
|
|
5497
|
+
interface SummaryRowBaseProps {
|
|
5352
5498
|
/** The identity line: an identifier, inline status glyphs, and the title. */
|
|
5353
5499
|
title: KerfUiContent;
|
|
5354
5500
|
/** Optional leading glyph, such as a category icon. */
|
|
@@ -5363,7 +5509,7 @@ interface SummaryRowProps {
|
|
|
5363
5509
|
titleLines?: number;
|
|
5364
5510
|
/** A leading state rail in a semantic tone (Up Next, blocked, …). */
|
|
5365
5511
|
rail?: SemanticTone;
|
|
5366
|
-
/** Selected state
|
|
5512
|
+
/** Selected visual state; also exposed as `aria-selected` for an option. */
|
|
5367
5513
|
selected?: boolean;
|
|
5368
5514
|
/** Dim a finished or cut item; hover and selection restore it. */
|
|
5369
5515
|
dimmed?: boolean;
|
|
@@ -5371,21 +5517,30 @@ interface SummaryRowProps {
|
|
|
5371
5517
|
listEdge?: SummaryRowListEdge;
|
|
5372
5518
|
/** Skip rendering while off screen in long lists (`content-visibility`). */
|
|
5373
5519
|
deferRendering?: boolean;
|
|
5374
|
-
/** Accessible name when the visible content is not a good one. */
|
|
5375
|
-
ariaLabel?: string;
|
|
5376
5520
|
id?: string;
|
|
5377
5521
|
className?: string;
|
|
5378
|
-
/** Safe `data-*` identity (an item id or delegated action) on the
|
|
5522
|
+
/** Safe `data-*` identity (an item id or delegated action) on the root. */
|
|
5379
5523
|
rootAttributes?: SummaryRowRootAttributes;
|
|
5380
5524
|
}
|
|
5525
|
+
type SummaryRowProps = SummaryRowBaseProps & ({
|
|
5526
|
+
/** Selectable option, the default; place it in a labeled listbox. */
|
|
5527
|
+
semanticRole?: 'option';
|
|
5528
|
+
/** Native HTML drag source on this option root, in row or card form. */
|
|
5529
|
+
draggable?: boolean;
|
|
5530
|
+
/** Accessible name when the visible content is not a good one. */
|
|
5531
|
+
ariaLabel?: string;
|
|
5532
|
+
} | {
|
|
5533
|
+
/** Static labeled group; nested actions own focus and activation. */
|
|
5534
|
+
semanticRole: 'group';
|
|
5535
|
+
draggable?: never;
|
|
5536
|
+
ariaLabel: string;
|
|
5537
|
+
});
|
|
5381
5538
|
/**
|
|
5382
|
-
* A
|
|
5383
|
-
*
|
|
5384
|
-
*
|
|
5385
|
-
* `role="option"`; place rows in a labeled `role="listbox"` and own selection
|
|
5386
|
-
* and keyboard movement in the application.
|
|
5539
|
+
* A list row or board card with a clamped identity line, metadata, and state
|
|
5540
|
+
* rail. The default is a focusable `role="option"` for a labeled listbox;
|
|
5541
|
+
* `semanticRole="group"` gives a static labeled row for nested actions.
|
|
5387
5542
|
*/
|
|
5388
|
-
declare function SummaryRow({ title, leading, trailingMeta, metadata, presentation, titleLines, rail, selected, dimmed, listEdge, deferRendering, ariaLabel, id, className, rootAttributes, }: SummaryRowProps): SafeHtml;
|
|
5543
|
+
declare function SummaryRow({ title, leading, trailingMeta, metadata, presentation, titleLines, rail, selected, dimmed, listEdge, deferRendering, semanticRole, draggable, ariaLabel, id, className, rootAttributes, }: SummaryRowProps): SafeHtml;
|
|
5389
5544
|
|
|
5390
5545
|
export { SummaryRow, type SummaryRowListEdge, type SummaryRowPresentation, type SummaryRowProps };
|
|
5391
5546
|
```
|
|
@@ -6662,6 +6817,8 @@ interface ButtonOptions {
|
|
|
6662
6817
|
* flips it in its `action` handler. A link (`href`) cannot be a toggle.
|
|
6663
6818
|
*/
|
|
6664
6819
|
pressed?: boolean;
|
|
6820
|
+
/** Mark the current step in a sequence with `aria-current="step"`. */
|
|
6821
|
+
currentStep?: boolean;
|
|
6665
6822
|
/**
|
|
6666
6823
|
* Busy: a spinner replaces the label (which still names it) and the button
|
|
6667
6824
|
* reports `aria-busy`. Presses still reach it; the application decides
|
|
@@ -6716,12 +6873,12 @@ interface ButtonOptions {
|
|
|
6716
6873
|
* in one of four tones and three emphases, at the 44px control height or
|
|
6717
6874
|
* compact, with a label or as an icon-only square, rounded or pill-shaped,
|
|
6718
6875
|
* sized to its label or filling its parent's width, and optionally a
|
|
6719
|
-
* `pressed` toggle. Inside a
|
|
6876
|
+
* `pressed` toggle or `currentStep` marker. Inside a
|
|
6720
6877
|
* `ToolbarControlGroup`, use a plain `<button>`, which the group styles; use
|
|
6721
6878
|
* Button for a dialog footer, a form, or a standalone action beside other
|
|
6722
6879
|
* content.
|
|
6723
6880
|
*/
|
|
6724
|
-
declare function Button({ children, tone, emphasis, size, shape, fill, pressed, icon, loading, disabled, type, name, value, form, href, target, action, focusRingInset, badge, badgeLabel, badgeTone, ariaLabel, title, id, className, rootAttributes, slot, }: ButtonProps): kerfjs.SafeHtml;
|
|
6881
|
+
declare function Button({ children, tone, emphasis, size, shape, fill, pressed, currentStep, icon, loading, disabled, type, name, value, form, href, target, action, focusRingInset, badge, badgeLabel, badgeTone, ariaLabel, title, id, className, rootAttributes, slot, }: ButtonProps): kerfjs.SafeHtml;
|
|
6725
6882
|
|
|
6726
6883
|
export { Button, type ButtonContent, type ButtonEmphasis, type ButtonLabel, type ButtonOptions, type ButtonProps, type ButtonRootAttributes, type ButtonShape, type ButtonSize, type ButtonTone, type ButtonType };
|
|
6727
6884
|
```
|