@kerfjs/ui 5.0.0-beta.100 → 5.0.0-beta.101
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 -1
- package/ai/component-catalog.json +214 -18
- package/ai/component-composition.json +216 -8
- package/ai/components/README.md +2 -0
- package/ai/components/backdrop-image.md +84 -0
- package/ai/components/nav-stack.md +6 -1
- package/ai/components/pane.md +11 -1
- package/ai/components/recipe-media-detail.md +57 -0
- package/ai/components/surface-scaffold.md +13 -6
- package/ai/components/tab-navigator.md +6 -1
- package/ai/components/toolbar-control-group.md +1 -0
- package/ai/public-api-signatures-v1.md +356 -32
- package/ai/skill.md +53 -5
- package/ai/webawesome-jsx-signatures-v1.md +1 -1
- package/dist/backdrop-image.d.ts +132 -0
- package/dist/backdrop-image.js +5 -0
- package/dist/backdrop-image.js.map +1 -0
- package/dist/browser/backdrop-image.js +3 -0
- package/dist/catalog-resources.d.ts +2 -2
- package/dist/catalog.d.ts +2 -2
- package/dist/catalog.js +10 -9
- package/dist/catalog.js.map +1 -1
- package/dist/{chunk-QIG4IGUP.js → chunk-2PXZBFEC.js} +3 -1
- package/dist/chunk-2PXZBFEC.js.map +1 -0
- package/dist/{chunk-T4WJ5VGP.js → chunk-3SKAEPPZ.js} +2 -2
- package/dist/{chunk-T4WJ5VGP.js.map → chunk-3SKAEPPZ.js.map} +1 -1
- package/dist/chunk-5NQF35VO.js +67 -0
- package/dist/chunk-5NQF35VO.js.map +1 -0
- package/dist/{chunk-CMETHPKR.js → chunk-6E2H2E5A.js} +29 -8
- package/dist/chunk-6E2H2E5A.js.map +1 -0
- package/dist/{chunk-PIVY32AE.js → chunk-BYFTHA4I.js} +16 -3
- package/dist/chunk-BYFTHA4I.js.map +1 -0
- package/dist/{chunk-HGV7J4T6.js → chunk-EKHDLBRP.js} +1 -1
- package/dist/chunk-EKHDLBRP.js.map +1 -0
- package/dist/{chunk-QROYYGWU.js → chunk-FNZQOUZ5.js} +2 -2
- package/dist/{chunk-QROYYGWU.js.map → chunk-FNZQOUZ5.js.map} +1 -1
- package/dist/{chunk-EOO6PYGF.js → chunk-IXLUZHGT.js} +4 -4
- package/dist/{chunk-EOO6PYGF.js.map → chunk-IXLUZHGT.js.map} +1 -1
- package/dist/{chunk-UMKV7YVQ.js → chunk-LPHU44S3.js} +5 -1
- package/dist/chunk-LPHU44S3.js.map +1 -0
- package/dist/{chunk-INI4WDWC.js → chunk-M5KZ26VV.js} +27 -4
- package/dist/chunk-M5KZ26VV.js.map +1 -0
- package/dist/{chunk-TLMMFQWM.js → chunk-NS762OVM.js} +3 -3
- package/dist/{chunk-TLMMFQWM.js.map → chunk-NS762OVM.js.map} +1 -1
- package/dist/{chunk-CXZXHZTR.js → chunk-OZ6X76G5.js} +34 -1
- package/dist/chunk-OZ6X76G5.js.map +1 -0
- package/dist/{chunk-YOA5W5ZH.js → chunk-PKL6QJKK.js} +31 -3
- package/dist/chunk-PKL6QJKK.js.map +1 -0
- package/dist/chunk-QTSMHH5J.js +85 -0
- package/dist/chunk-QTSMHH5J.js.map +1 -0
- package/dist/chunk-SCDWURBO.js +136 -0
- package/dist/chunk-SCDWURBO.js.map +1 -0
- package/dist/{chunk-RHD7RKGI.js → chunk-SIW64V65.js} +3 -3
- package/dist/{chunk-RHD7RKGI.js.map → chunk-SIW64V65.js.map} +1 -1
- package/dist/chunk-SQ5DH66U.js +37 -0
- package/dist/chunk-SQ5DH66U.js.map +1 -0
- package/dist/{chunk-PYBBYSZ3.js → chunk-YBWQR2OK.js} +5 -5
- package/dist/{chunk-PYBBYSZ3.js.map → chunk-YBWQR2OK.js.map} +1 -1
- package/dist/{chunk-3GLYIIFR.js → chunk-ZYU5WRC3.js} +2 -2
- package/dist/{chunk-3GLYIIFR.js.map → chunk-ZYU5WRC3.js.map} +1 -1
- package/dist/collapsible-panel.js +3 -2
- package/dist/collapsible-panel.js.map +1 -1
- package/dist/index.d.ts +5 -3
- package/dist/index.js +24 -20
- package/dist/list-action-row.js +1 -1
- package/dist/list-header.js +1 -1
- package/dist/list-item.js +1 -1
- package/dist/{nav-stack-VXTumzKa.d.ts → nav-stack-CU_0dKtI.d.ts} +41 -5
- package/dist/nav-stack.d.ts +4 -4
- package/dist/nav-stack.js +2 -1
- package/dist/pane.d.ts +76 -4
- package/dist/pane.js +2 -1
- package/dist/select.js +1 -1
- package/dist/split-view.d.ts +4 -4
- package/dist/split-view.js +3 -2
- package/dist/split-view.js.map +1 -1
- package/dist/state-banner.js +1 -1
- package/dist/styles/backdrop-image.css +241 -0
- package/dist/styles/components/actions/toolbar/toolbar.css +9 -0
- package/dist/styles/components/actions/toolbar-control-group/toolbar-control-group.css +128 -0
- package/dist/styles/components/layout/pane/pane.css +121 -1
- package/dist/styles/components/navigation/nav-stack/nav-stack.css +207 -6
- package/dist/styles/components/navigation/tab-navigator/tab-navigator.css +121 -3
- package/dist/styles/components/surfaces/backdrop-image/backdrop-image.css +241 -0
- package/dist/styles/components/surfaces/surface-scaffold/surface-scaffold.css +166 -2
- package/dist/styles/foundation.css +165 -8
- package/dist/styles/nav-stack.css +207 -6
- package/dist/styles/overlay-sheet.css +211 -0
- package/dist/styles/pane.css +121 -1
- package/dist/styles/styles.css +1 -0
- package/dist/styles/surface-scaffold.css +166 -2
- package/dist/styles/tab-navigator.css +121 -3
- package/dist/styles/toolbar-control-group.css +128 -0
- package/dist/styles/toolbar.css +9 -0
- package/dist/styles/webawesome.css +10 -0
- package/dist/surface-scaffold-register.d.ts +3 -2
- package/dist/surface-scaffold-register.js +113 -10
- package/dist/surface-scaffold-register.js.map +1 -1
- package/dist/surface-scaffold.d.ts +38 -5
- package/dist/surface-scaffold.js +1 -1
- package/dist/tab-navigator.d.ts +43 -3
- package/dist/tab-navigator.js +35 -6
- package/dist/tab-navigator.js.map +1 -1
- package/dist/toolbar-control-group.d.ts +13 -2
- package/dist/toolbar-control-group.js +1 -1
- package/dist/toolbar-text.d.ts +6 -1
- package/dist/toolbar-text.js +1 -1
- package/dist/toolbar.d.ts +1 -0
- package/dist/wire-catalog.d.ts +2 -2
- package/dist/wire-catalog.js +1 -1
- package/dist/wire-nav-stack.js +29 -3
- package/dist/wire-nav-stack.js.map +1 -1
- package/dist/wire-overlay-sheets.d.ts +20 -0
- package/dist/wire-overlay-sheets.js +4 -0
- package/dist/wire-overlay-sheets.js.map +1 -0
- package/dist/wire-scroll-dividers.js +1 -1
- package/dist/wire-token-search-fields.js +1 -1
- package/dist/workbench.d.ts +2 -2
- package/dist/workbench.js +2 -1
- package/docs/accessibility.md +35 -0
- package/docs/app-layouts.md +13 -0
- package/docs/backdrop-image.md +128 -0
- package/docs/component-contract.md +2 -0
- package/docs/component-selection.md +11 -2
- package/docs/design/templates/toolbar-control-group/glass-dark.svg +1 -0
- package/docs/design/templates/toolbar-control-group/glass.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.md +8 -0
- package/docs/layout.md +135 -5
- package/docs/manual-test-plan.md +29 -0
- package/docs/nav-stack.md +37 -1
- package/docs/recipes.md +24 -0
- package/docs/surface-scaffold.md +149 -3
- package/docs/tab-navigator.md +36 -0
- package/docs/ux-demo.md +11 -1
- package/llms.txt +42 -4
- package/package.json +13 -1
- package/ux-demo/recipes/loaders.ts +2 -0
- package/ux-demo/recipes/media-detail.tsx +272 -0
- package/dist/chunk-CMETHPKR.js.map +0 -1
- package/dist/chunk-CXZXHZTR.js.map +0 -1
- package/dist/chunk-HGV7J4T6.js.map +0 -1
- package/dist/chunk-INI4WDWC.js.map +0 -1
- package/dist/chunk-PIVY32AE.js.map +0 -1
- package/dist/chunk-QIG4IGUP.js.map +0 -1
- package/dist/chunk-UMKV7YVQ.js.map +0 -1
- package/dist/chunk-YOA5W5ZH.js.map +0 -1
|
@@ -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.101` and `kerfjs@5.0.0-beta.101`. 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
|
|
|
@@ -166,6 +166,7 @@ import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
|
|
|
166
166
|
import { S as Sides } from './sides-BPSWde0A.js';
|
|
167
167
|
import { PaneSeparatorSide } from './pane.js';
|
|
168
168
|
import './scroll-clearance-BikHljTc.js';
|
|
169
|
+
import './css-values.js';
|
|
169
170
|
|
|
170
171
|
type ToolbarPosition = 'header' | 'footer';
|
|
171
172
|
/** Control-band density: `default` (60px with 44px groups) or `compact`. */
|
|
@@ -253,7 +254,12 @@ type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;
|
|
|
253
254
|
interface ToolbarTextBaseProps {
|
|
254
255
|
text: string;
|
|
255
256
|
size?: ToolbarTextSize;
|
|
256
|
-
/**
|
|
257
|
+
/**
|
|
258
|
+
* Use loud-toolbar foregrounds on a toolbar painted with the inverse loud
|
|
259
|
+
* fill, matching dark control groups; like them it inverts with the color
|
|
260
|
+
* scheme. Over a dark photo or scrim keep the default tone inside a
|
|
261
|
+
* `BackdropImage` overlay, which takes the dark scheme under its scrim.
|
|
262
|
+
*/
|
|
257
263
|
tone?: ToolbarTextTone;
|
|
258
264
|
/** Hide below this Toolbar content width; requires wireToolbarVisibility. */
|
|
259
265
|
hideBelow?: CssLength;
|
|
@@ -326,6 +332,8 @@ import { CssLength } from './css-values.js';
|
|
|
326
332
|
|
|
327
333
|
type ToolbarControlGroupAppearance = 'contained' | 'borderless';
|
|
328
334
|
type ToolbarControlGroupTone = 'default' | 'dark';
|
|
335
|
+
/** Surface material: the opaque `solid` fill (default) or translucent `glass`. */
|
|
336
|
+
type ToolbarControlGroupMaterial = 'solid' | 'glass';
|
|
329
337
|
/** Quiet palette for a contained, single decorative icon tile. */
|
|
330
338
|
type ToolbarControlGroupTileTone = 'neutral' | 'brand' | 'success' | 'warning' | 'danger';
|
|
331
339
|
type ToolbarControlGroupButtonAppearance = 'plain' | 'push';
|
|
@@ -366,6 +374,15 @@ interface ToolbarControlGroupProps {
|
|
|
366
374
|
single?: boolean;
|
|
367
375
|
appearance?: ToolbarControlGroupAppearance;
|
|
368
376
|
tone?: ToolbarControlGroupTone;
|
|
377
|
+
/**
|
|
378
|
+
* `glass` paints the group on the translucent chrome material (backdrop
|
|
379
|
+
* blur and saturation) with a specular edge and a soft shadow, for a group
|
|
380
|
+
* floating over imagery or a clear toolbar. Controls take the normal text
|
|
381
|
+
* color so they keep AA over any content; the fill turns opaque under
|
|
382
|
+
* reduced transparency, increased contrast, static effects, or without
|
|
383
|
+
* backdrop-filter support. A borderless group has no surface and ignores it.
|
|
384
|
+
*/
|
|
385
|
+
material?: ToolbarControlGroupMaterial;
|
|
369
386
|
/** Quiet fill, matching border and foreground for a contained single group whose only child is a decorative SVG. Ignored for interactive or mixed content. */
|
|
370
387
|
tileTone?: ToolbarControlGroupTileTone;
|
|
371
388
|
buttonAppearance?: ToolbarControlGroupButtonAppearance;
|
|
@@ -421,9 +438,9 @@ interface ToolbarControlGroupProps {
|
|
|
421
438
|
/** Native named-slot assignment when composed inside a web component. */
|
|
422
439
|
slot?: string;
|
|
423
440
|
}
|
|
424
|
-
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;
|
|
441
|
+
declare function ToolbarControlGroup({ children, label, className, expanded, single, appearance, tone, material, 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;
|
|
425
442
|
|
|
426
|
-
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 };
|
|
443
|
+
export { ToolbarActionLink, type ToolbarActionLinkProps, ToolbarControlGroup, type ToolbarControlGroupAppearance, type ToolbarControlGroupButtonAppearance, type ToolbarControlGroupContent, type ToolbarControlGroupDensity, type ToolbarControlGroupExpandedOverflow, type ToolbarControlGroupFocusRing, type ToolbarControlGroupMaterial, type ToolbarControlGroupMenuInset, type ToolbarControlGroupOverflow, type ToolbarControlGroupPlacement, type ToolbarControlGroupProps, type ToolbarControlGroupSelectedChrome, type ToolbarControlGroupSelectedTone, type ToolbarControlGroupShape, type ToolbarControlGroupSize, type ToolbarControlGroupSizing, type ToolbarControlGroupTileTone, type ToolbarControlGroupTone, type ToolbarControlGroupVisibility };
|
|
427
444
|
```
|
|
428
445
|
|
|
429
446
|
## `@kerfjs/ui/floating-toolbar`
|
|
@@ -1531,6 +1548,31 @@ declare function wireScrollDividers(root: Root, { targets }?: WireScrollDividers
|
|
|
1531
1548
|
export { type ScrollDividerTarget, type WireScrollDividersOptions, wireScrollDividers };
|
|
1532
1549
|
```
|
|
1533
1550
|
|
|
1551
|
+
## `@kerfjs/ui/wire-overlay-sheets`
|
|
1552
|
+
|
|
1553
|
+
```ts
|
|
1554
|
+
/**
|
|
1555
|
+
* Give every resizable core `kerfjs/overlay` bottom sheet opened in
|
|
1556
|
+
* `container` the resize grabber a `resizable` `DialogSurface` sheet has: a
|
|
1557
|
+
* `role="separator"` at the sheet's top edge that resizes its visible height
|
|
1558
|
+
* by drag or keyboard (arrows, Page Up/Down, Home, End), between
|
|
1559
|
+
* `--kui-overlay-sheet-min-height` (160px) and the sheet's cap below the top
|
|
1560
|
+
* safe area. A sheet opts in with the `kui-overlay-sheet-resizable` class
|
|
1561
|
+
* (`overlay()` and the promise dialogs alike) and opens at its content
|
|
1562
|
+
* height each time.
|
|
1563
|
+
*
|
|
1564
|
+
* kerf appends each overlay to its `container` (`document.body` by
|
|
1565
|
+
* default), so call this once per container you open sheets in. The grabber
|
|
1566
|
+
* is `data-morph-preserve` and returns to the top of the sheet after each
|
|
1567
|
+
* re-render of the overlay's content. Requires
|
|
1568
|
+
* `@kerfjs/ui/overlay-sheet.css`. Returns a disposer that removes every
|
|
1569
|
+
* grabber and stops watching.
|
|
1570
|
+
*/
|
|
1571
|
+
declare function wireOverlaySheets(container?: ParentNode): () => void;
|
|
1572
|
+
|
|
1573
|
+
export { wireOverlaySheets };
|
|
1574
|
+
```
|
|
1575
|
+
|
|
1534
1576
|
## `@kerfjs/ui/wire-list-reorder`
|
|
1535
1577
|
|
|
1536
1578
|
```ts
|
|
@@ -1601,16 +1643,16 @@ export { wireListFocusScroll };
|
|
|
1601
1643
|
## `@kerfjs/ui/nav-stack`
|
|
1602
1644
|
|
|
1603
1645
|
```ts
|
|
1604
|
-
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-
|
|
1646
|
+
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-CU_0dKtI.js';
|
|
1605
1647
|
import 'kerfjs';
|
|
1606
1648
|
import './semantic-content-BbzjvSu9.js';
|
|
1649
|
+
import './pane.js';
|
|
1650
|
+
import './scroll-clearance-BikHljTc.js';
|
|
1651
|
+
import './css-values.js';
|
|
1607
1652
|
import './list.js';
|
|
1608
1653
|
import './extension-attributes-mu8MFUl0.js';
|
|
1609
1654
|
import './flex-alignment-4ms8ZbV8.js';
|
|
1610
|
-
import './scroll-clearance-BikHljTc.js';
|
|
1611
1655
|
import './sides-BPSWde0A.js';
|
|
1612
|
-
import './css-values.js';
|
|
1613
|
-
import './pane.js';
|
|
1614
1656
|
import './panel-toolbar-vg6Ir5Dy.js';
|
|
1615
1657
|
import './toolbar.js';
|
|
1616
1658
|
import './lucide-icon.js';
|
|
@@ -1646,15 +1688,15 @@ export { type WireNavStackOptions, wireNavStack };
|
|
|
1646
1688
|
```ts
|
|
1647
1689
|
import * as kerfjs from 'kerfjs';
|
|
1648
1690
|
import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
|
|
1649
|
-
import { N as NavStackProps, a as NavStackView } from './nav-stack-
|
|
1691
|
+
import { N as NavStackProps, a as NavStackView } from './nav-stack-CU_0dKtI.js';
|
|
1650
1692
|
import { ResizableRegionProps } from './resizable-region.js';
|
|
1693
|
+
import './pane.js';
|
|
1694
|
+
import './scroll-clearance-BikHljTc.js';
|
|
1695
|
+
import './css-values.js';
|
|
1651
1696
|
import './list.js';
|
|
1652
1697
|
import './extension-attributes-mu8MFUl0.js';
|
|
1653
1698
|
import './flex-alignment-4ms8ZbV8.js';
|
|
1654
|
-
import './scroll-clearance-BikHljTc.js';
|
|
1655
1699
|
import './sides-BPSWde0A.js';
|
|
1656
|
-
import './css-values.js';
|
|
1657
|
-
import './pane.js';
|
|
1658
1700
|
import './panel-toolbar-vg6Ir5Dy.js';
|
|
1659
1701
|
import './toolbar.js';
|
|
1660
1702
|
import './lucide-icon.js';
|
|
@@ -1751,6 +1793,38 @@ export { SplitView, type SplitViewCompactStack, type SplitViewCompactViewToolbar
|
|
|
1751
1793
|
import * as kerfjs from 'kerfjs';
|
|
1752
1794
|
import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
|
|
1753
1795
|
import { S as ScrollClearance } from './scroll-clearance-BikHljTc.js';
|
|
1796
|
+
import { CssColor } from './css-values.js';
|
|
1797
|
+
|
|
1798
|
+
/**
|
|
1799
|
+
* What clear (fully transparent) chrome fades in as content scrolls beneath
|
|
1800
|
+
* it: `none` stays clear; `material` fades in the translucent chrome
|
|
1801
|
+
* material; `surface` fades in the opaque surface. The fade tracks the scroll
|
|
1802
|
+
* over `scrollEdgeDistance` (opacity only), from the scroll state
|
|
1803
|
+
* `wireScrollDividers` reports; unwired, the chrome stays clear.
|
|
1804
|
+
*/
|
|
1805
|
+
type ScrollEdge = 'none' | 'material' | 'surface';
|
|
1806
|
+
|
|
1807
|
+
/** The color scheme an app declares for a {@link SurfaceTint}'s color. */
|
|
1808
|
+
type SurfaceTintScheme = 'light' | 'dark';
|
|
1809
|
+
/**
|
|
1810
|
+
* A scoped tint for a layout surface: the app's color (usually sampled from
|
|
1811
|
+
* artwork it already knows) and the scheme that color belongs to. Kerf does no
|
|
1812
|
+
* color detection; `scheme` says whether the color reads as a light or a dark
|
|
1813
|
+
* surface. Inside the scope the surface, raised surface, text, quiet text, and
|
|
1814
|
+
* everything built on them (quiet fills, separators' backdrop, the chrome
|
|
1815
|
+
* material) re-derive from the color, with lightness clamped so text keeps
|
|
1816
|
+
* WCAG AA over any color.
|
|
1817
|
+
*/
|
|
1818
|
+
interface SurfaceTint {
|
|
1819
|
+
color: CssColor;
|
|
1820
|
+
scheme: SurfaceTintScheme;
|
|
1821
|
+
/**
|
|
1822
|
+
* An optional accent (usually the artwork's most vivid color). The scope's
|
|
1823
|
+
* brand ramp re-derives from it: loud fills and their text, brand text and
|
|
1824
|
+
* links, text on brand fills, and the focus ring, each clamped to keep AA.
|
|
1825
|
+
*/
|
|
1826
|
+
accent?: CssColor;
|
|
1827
|
+
}
|
|
1754
1828
|
|
|
1755
1829
|
/**
|
|
1756
1830
|
* Logical pane sides: where a {@link Pane} can show a separator and where it can
|
|
@@ -1774,10 +1848,16 @@ type PaneRootAttributes = Readonly<Record<`data-${string}`, string | undefined>
|
|
|
1774
1848
|
'data-chrome-placement'?: never;
|
|
1775
1849
|
'data-chrome-dividers'?: never;
|
|
1776
1850
|
'data-appearance'?: never;
|
|
1851
|
+
'data-background'?: never;
|
|
1852
|
+
'data-kui-tint'?: never;
|
|
1853
|
+
'data-kui-tint-accent'?: never;
|
|
1777
1854
|
'data-deep-inset'?: never;
|
|
1778
1855
|
'data-outlined'?: never;
|
|
1779
1856
|
'data-scroll-clearance'?: never;
|
|
1780
1857
|
'data-header-presentation'?: never;
|
|
1858
|
+
'data-header-material'?: never;
|
|
1859
|
+
'data-scroll-edge'?: never;
|
|
1860
|
+
'data-scroll-edge-distance'?: never;
|
|
1781
1861
|
'data-header-overlay'?: never;
|
|
1782
1862
|
}>;
|
|
1783
1863
|
/** How a Pane's header and footer relate to its scrolling content. */
|
|
@@ -1792,8 +1872,12 @@ type PaneChromeDividers = 'scroll' | 'always' | 'none';
|
|
|
1792
1872
|
* How a Pane's header relates to its scrolling content: `docked` in its own
|
|
1793
1873
|
* row above the content, or `overlay` laid over the content's top edge on the
|
|
1794
1874
|
* translucent chrome material, so content scrolls visibly beneath it.
|
|
1875
|
+
* `clear` lays it over
|
|
1876
|
+
* the same edge fully transparent, for chrome over imagery: legibility comes
|
|
1877
|
+
* from glass control groups or a scrim, and with `scrollEdge="material"` the
|
|
1878
|
+
* chrome material fades in once content scrolls beneath it.
|
|
1795
1879
|
*/
|
|
1796
|
-
type PaneHeaderPresentation = 'docked' | 'overlay';
|
|
1880
|
+
type PaneHeaderPresentation = 'docked' | 'overlay' | 'clear';
|
|
1797
1881
|
/** Background treatment of the Pane's scrolling work surface. */
|
|
1798
1882
|
type PaneAppearance = 'default' | 'sunken';
|
|
1799
1883
|
interface PaneProps {
|
|
@@ -1839,8 +1923,38 @@ interface PaneProps {
|
|
|
1839
1923
|
* content passing beneath it.
|
|
1840
1924
|
*/
|
|
1841
1925
|
headerPresentation?: PaneHeaderPresentation;
|
|
1926
|
+
/**
|
|
1927
|
+
* With `headerPresentation="clear"`, `material` fades the chrome material
|
|
1928
|
+
* in behind the header once content scrolls beneath it (default `none`).
|
|
1929
|
+
*/
|
|
1930
|
+
scrollEdge?: ScrollEdge;
|
|
1931
|
+
/**
|
|
1932
|
+
* The scroll distance, in CSS pixels, over which the scroll edge fades in
|
|
1933
|
+
* (default 60).
|
|
1934
|
+
*/
|
|
1935
|
+
scrollEdgeDistance?: number;
|
|
1842
1936
|
/** Paint the scrolling work surface with the shared lowered-surface color. */
|
|
1843
1937
|
appearance?: PaneAppearance;
|
|
1938
|
+
/**
|
|
1939
|
+
* Paint the whole pane, header and footer included, in an app-chosen color
|
|
1940
|
+
* (`uiColor('surface-raised')`, `fillColor('#1f2a44')`, or `colorVar(…)`
|
|
1941
|
+
* from `@kerfjs/ui/css-values`). It replaces the appearance's fill: a sunken
|
|
1942
|
+
* pane drops its lowered color and grain. Omitted, the pane keeps its
|
|
1943
|
+
* default (transparent, or the sunken surface). Forced colors paint
|
|
1944
|
+
* `Canvas`. Keep text at AA over the color; a dark color needs a matching
|
|
1945
|
+
* tint or dark tones for its content.
|
|
1946
|
+
*/
|
|
1947
|
+
background?: CssColor;
|
|
1948
|
+
/**
|
|
1949
|
+
* A scoped tint: `{ color, scheme }`, the app's color and the scheme it
|
|
1950
|
+
* belongs to. The pane paints the tinted surface (unless `background` is
|
|
1951
|
+
* set) and its whole subtree, chrome material and quiet fills included,
|
|
1952
|
+
* re-derives its surface and text tokens from the color with lightness
|
|
1953
|
+
* clamped to keep text at WCAG AA. Without relative color syntax, or under
|
|
1954
|
+
* `prefers-contrast: more`, the scope keeps the plain palette in the
|
|
1955
|
+
* declared scheme.
|
|
1956
|
+
*/
|
|
1957
|
+
tint?: SurfaceTint;
|
|
1844
1958
|
/**
|
|
1845
1959
|
* Clear chrome that lies over the scrolling content's block-start and/or
|
|
1846
1960
|
* block-end edge, such as a `DialogSurface` floating footer over a filling
|
|
@@ -1891,16 +2005,16 @@ interface PaneProps {
|
|
|
1891
2005
|
* or a CollapsiblePanel) forwards, so the app configures that pane instead of
|
|
1892
2006
|
* styling it. An omitted or `undefined` field keeps the composite's default.
|
|
1893
2007
|
*/
|
|
1894
|
-
type PaneConfig = Pick<PaneProps, 'contentElement' | 'contentLabel' | 'separators' | 'safeAreaEdges' | 'chromeDividers' | 'headerPresentation' | 'appearance' | 'deepInset' | 'scrollClearance' | 'tabIndex' | 'outlined'>;
|
|
2008
|
+
type PaneConfig = Pick<PaneProps, 'contentElement' | 'contentLabel' | 'separators' | 'safeAreaEdges' | 'chromeDividers' | 'headerPresentation' | 'scrollEdge' | 'scrollEdgeDistance' | 'appearance' | 'background' | 'tint' | 'deepInset' | 'scrollClearance' | 'tabIndex' | 'outlined'>;
|
|
1895
2009
|
/**
|
|
1896
2010
|
* An unpadded application column with optional fixed header/footer slots and one
|
|
1897
2011
|
* scrolling vertical content owner. Separator lines are independently opt-in on
|
|
1898
2012
|
* each logical edge, so the same component works as a sidebar, main area,
|
|
1899
2013
|
* inspector, or dialog column.
|
|
1900
2014
|
*/
|
|
1901
|
-
declare function Pane({ header, children, footer, chromePlacement, chromeDividers, headerPresentation, appearance, deepInset, scrollClearance, tabIndex, outlined, element, contentElement, separators, safeAreaEdges, id, label, contentLabel, className, headerClassName, contentClassName, footerClassName, rootAttributes, slot, }: PaneProps): kerfjs.SafeHtml;
|
|
2015
|
+
declare function Pane({ header, children, footer, chromePlacement, chromeDividers, 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;
|
|
1902
2016
|
|
|
1903
|
-
export { Pane, type PaneAppearance, type PaneChromeDividers, type PaneChromePlacement, type PaneConfig, type PaneContentElement, type PaneElement, type PaneHeaderPresentation, type PaneProps, type PaneSeparatorSide, ScrollClearance };
|
|
2017
|
+
export { Pane, type PaneAppearance, type PaneChromeDividers, type PaneChromePlacement, type PaneConfig, type PaneContentElement, type PaneElement, type PaneHeaderPresentation, type PaneProps, type PaneSeparatorSide, ScrollClearance, type ScrollEdge, type SurfaceTint, type SurfaceTintScheme };
|
|
1904
2018
|
```
|
|
1905
2019
|
|
|
1906
2020
|
## `@kerfjs/ui/workbench`
|
|
@@ -1908,14 +2022,14 @@ export { Pane, type PaneAppearance, type PaneChromeDividers, type PaneChromePlac
|
|
|
1908
2022
|
```ts
|
|
1909
2023
|
import { SafeHtml } from 'kerfjs';
|
|
1910
2024
|
import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
|
|
1911
|
-
import { b as NavPane, N as NavStackProps } from './nav-stack-
|
|
2025
|
+
import { b as NavPane, N as NavStackProps } from './nav-stack-CU_0dKtI.js';
|
|
1912
2026
|
import { ListConfig } from './list.js';
|
|
1913
2027
|
import { PaneConfig } from './pane.js';
|
|
1914
2028
|
import { ResizableRegionSeparator, ResizableRegionCollapseMotion, ResizableRegionContentOverflow, ResizableRegionPresentation, ResizableRegionRestorePosition } from './resizable-region.js';
|
|
1915
2029
|
import { a as PanelToolbar, c as PanelBottomToolbar, b as PanelChromePlacement, d as PanelToggle } from './panel-toolbar-vg6Ir5Dy.js';
|
|
1916
2030
|
import { ToolbarConfig } from './toolbar.js';
|
|
1917
|
-
import './toolbar-text.js';
|
|
1918
2031
|
import './css-values.js';
|
|
2032
|
+
import './toolbar-text.js';
|
|
1919
2033
|
import './extension-attributes-mu8MFUl0.js';
|
|
1920
2034
|
import './flex-alignment-4ms8ZbV8.js';
|
|
1921
2035
|
import './scroll-clearance-BikHljTc.js';
|
|
@@ -2528,7 +2642,8 @@ export { type SidebarStorage, type WireSidebarOptions, type WireSidebarPanel, wi
|
|
|
2528
2642
|
```ts
|
|
2529
2643
|
import { SafeHtml } from 'kerfjs';
|
|
2530
2644
|
import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
|
|
2531
|
-
import { PaneAppearance } from './pane.js';
|
|
2645
|
+
import { PaneAppearance, SurfaceTint, ScrollEdge } from './pane.js';
|
|
2646
|
+
import { CssColor } from './css-values.js';
|
|
2532
2647
|
import './scroll-clearance-BikHljTc.js';
|
|
2533
2648
|
|
|
2534
2649
|
interface TabNavigatorTabBase<Id extends string> {
|
|
@@ -2540,6 +2655,17 @@ interface TabNavigatorTabBase<Id extends string> {
|
|
|
2540
2655
|
content: KerfUiContent;
|
|
2541
2656
|
/** Background of this scene's scrolling work surface. */
|
|
2542
2657
|
appearance?: PaneAppearance;
|
|
2658
|
+
/**
|
|
2659
|
+
* Paint this scene in an app-chosen color (a `@kerfjs/ui/css-values` color
|
|
2660
|
+
* builder). It replaces the appearance's fill. Forced colors paint `Canvas`.
|
|
2661
|
+
*/
|
|
2662
|
+
background?: CssColor;
|
|
2663
|
+
/**
|
|
2664
|
+
* A scoped tint (`{ color, scheme }`) for this scene: its surfaces and every
|
|
2665
|
+
* descendant re-derive their surface and text tokens from the app's color
|
|
2666
|
+
* in the declared scheme, with lightness clamped to keep text at WCAG AA.
|
|
2667
|
+
*/
|
|
2668
|
+
tint?: SurfaceTint;
|
|
2543
2669
|
/** Add 8px to every side of a plain scene's scrolling content. */
|
|
2544
2670
|
deepInset?: boolean;
|
|
2545
2671
|
/** Opt into keyboard (`0`) or programmatic (`-1`) focus on this scene. */
|
|
@@ -2585,8 +2711,13 @@ type TabNavigatorTab<Id extends string = string> = TabNavigatorTabBase<Id> & (Ta
|
|
|
2585
2711
|
* How a {@link TabNavigator}'s tab bar relates to the active scene: `docked`
|
|
2586
2712
|
* below it, or `overlay` laid over its bottom edge on the translucent chrome
|
|
2587
2713
|
* material, so the scene's content scrolls visibly beneath the bar.
|
|
2714
|
+
* `clear` lays it over
|
|
2715
|
+
* the same edge fully transparent, for chrome over imagery: legibility comes
|
|
2716
|
+
* from glass control groups or a scrim, and with `scrollEdge="material"` the
|
|
2717
|
+
* chrome material fades in once content scrolls beneath
|
|
2718
|
+
* it, until the scene scrolls to its end.
|
|
2588
2719
|
*/
|
|
2589
|
-
type TabNavigatorBarPresentation = 'docked' | 'overlay';
|
|
2720
|
+
type TabNavigatorBarPresentation = 'docked' | 'overlay' | 'clear';
|
|
2590
2721
|
interface TabNavigatorProps<Id extends string = string> {
|
|
2591
2722
|
id: string;
|
|
2592
2723
|
/** Accessible name for the tab bar. */
|
|
@@ -2625,6 +2756,29 @@ interface TabNavigatorProps<Id extends string = string> {
|
|
|
2625
2756
|
* toward the normal text color to keep AA over the content beneath.
|
|
2626
2757
|
*/
|
|
2627
2758
|
barPresentation?: TabNavigatorBarPresentation;
|
|
2759
|
+
/**
|
|
2760
|
+
* With `barPresentation="clear"`, `material` fades the chrome material in
|
|
2761
|
+
* behind the bar while the active scene continues beneath it (default
|
|
2762
|
+
* `none`).
|
|
2763
|
+
*/
|
|
2764
|
+
scrollEdge?: ScrollEdge;
|
|
2765
|
+
/**
|
|
2766
|
+
* The scroll distance, in CSS pixels, over which the scroll edge fades in
|
|
2767
|
+
* (default 60).
|
|
2768
|
+
*/
|
|
2769
|
+
scrollEdgeDistance?: number;
|
|
2770
|
+
/**
|
|
2771
|
+
* Paint the navigator, and its docked tab bar, in an app-chosen color (a
|
|
2772
|
+
* `@kerfjs/ui/css-values` color builder) instead of the surface. A tab's own
|
|
2773
|
+
* `background` paints its scene. Forced colors paint `Canvas`.
|
|
2774
|
+
*/
|
|
2775
|
+
background?: CssColor;
|
|
2776
|
+
/**
|
|
2777
|
+
* A scoped tint (`{ color, scheme }`) for the navigator, its bar, and every scene: its surfaces and every
|
|
2778
|
+
* descendant re-derive their surface and text tokens from the app's color
|
|
2779
|
+
* in the declared scheme, with lightness clamped to keep text at WCAG AA.
|
|
2780
|
+
*/
|
|
2781
|
+
tint?: SurfaceTint;
|
|
2628
2782
|
className?: string;
|
|
2629
2783
|
/** Native named-slot assignment when composed inside a web component. */
|
|
2630
2784
|
slot?: string;
|
|
@@ -2637,7 +2791,7 @@ interface TabNavigatorProps<Id extends string = string> {
|
|
|
2637
2791
|
* On larger classes, promote the tabs to a `Workbench` rail or sidebar instead of
|
|
2638
2792
|
* a bottom bar. See `docs/23-app-layouts.md` §3.4.
|
|
2639
2793
|
*/
|
|
2640
|
-
declare function TabNavigator<Id extends string>({ id, label, tabs, active, separator, chromeDividers, barPresentation, className, slot, }: TabNavigatorProps<Id>): SafeHtml;
|
|
2794
|
+
declare function TabNavigator<Id extends string>({ id, label, tabs, active, separator, chromeDividers, barPresentation, scrollEdge, scrollEdgeDistance, background, tint, className, slot, }: TabNavigatorProps<Id>): SafeHtml;
|
|
2641
2795
|
|
|
2642
2796
|
export { TabNavigator, type TabNavigatorBarPresentation, type TabNavigatorProps, type TabNavigatorTab };
|
|
2643
2797
|
```
|
|
@@ -2817,12 +2971,12 @@ import './toolbar.js';
|
|
|
2817
2971
|
import './sides-BPSWde0A.js';
|
|
2818
2972
|
import './pane.js';
|
|
2819
2973
|
import './scroll-clearance-BikHljTc.js';
|
|
2974
|
+
import './css-values.js';
|
|
2820
2975
|
import './workbench.js';
|
|
2821
|
-
import './nav-stack-
|
|
2976
|
+
import './nav-stack-CU_0dKtI.js';
|
|
2822
2977
|
import './list.js';
|
|
2823
2978
|
import './extension-attributes-mu8MFUl0.js';
|
|
2824
2979
|
import './flex-alignment-4ms8ZbV8.js';
|
|
2825
|
-
import './css-values.js';
|
|
2826
2980
|
import './panel-toolbar-vg6Ir5Dy.js';
|
|
2827
2981
|
import './lucide-icon.js';
|
|
2828
2982
|
import 'lucide';
|
|
@@ -2972,12 +3126,12 @@ import './semantic-content-BbzjvSu9.js';
|
|
|
2972
3126
|
import './sides-BPSWde0A.js';
|
|
2973
3127
|
import './pane.js';
|
|
2974
3128
|
import './scroll-clearance-BikHljTc.js';
|
|
3129
|
+
import './css-values.js';
|
|
2975
3130
|
import './workbench.js';
|
|
2976
|
-
import './nav-stack-
|
|
3131
|
+
import './nav-stack-CU_0dKtI.js';
|
|
2977
3132
|
import './list.js';
|
|
2978
3133
|
import './extension-attributes-mu8MFUl0.js';
|
|
2979
3134
|
import './flex-alignment-4ms8ZbV8.js';
|
|
2980
|
-
import './css-values.js';
|
|
2981
3135
|
import './panel-toolbar-vg6Ir5Dy.js';
|
|
2982
3136
|
import './lucide-icon.js';
|
|
2983
3137
|
import 'lucide';
|
|
@@ -3027,12 +3181,12 @@ import './semantic-content-BbzjvSu9.js';
|
|
|
3027
3181
|
import './sides-BPSWde0A.js';
|
|
3028
3182
|
import './pane.js';
|
|
3029
3183
|
import './scroll-clearance-BikHljTc.js';
|
|
3184
|
+
import './css-values.js';
|
|
3030
3185
|
import './workbench.js';
|
|
3031
|
-
import './nav-stack-
|
|
3186
|
+
import './nav-stack-CU_0dKtI.js';
|
|
3032
3187
|
import './list.js';
|
|
3033
3188
|
import './extension-attributes-mu8MFUl0.js';
|
|
3034
3189
|
import './flex-alignment-4ms8ZbV8.js';
|
|
3035
|
-
import './css-values.js';
|
|
3036
3190
|
import './panel-toolbar-vg6Ir5Dy.js';
|
|
3037
3191
|
import './lucide-icon.js';
|
|
3038
3192
|
import 'lucide';
|
|
@@ -4077,6 +4231,143 @@ declare function LucideIcon({ icon, name, appearance, className, color, inline,
|
|
|
4077
4231
|
export { LucideIcon, type LucideIconProps, type LucideIconSize, type LucideNode };
|
|
4078
4232
|
```
|
|
4079
4233
|
|
|
4234
|
+
## `@kerfjs/ui/backdrop-image`
|
|
4235
|
+
|
|
4236
|
+
```ts
|
|
4237
|
+
import * as kerfjs from 'kerfjs';
|
|
4238
|
+
import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
|
|
4239
|
+
import { S as StructuralRootAttributes } from './extension-attributes-mu8MFUl0.js';
|
|
4240
|
+
import { CssLength, CssColor } from './css-values.js';
|
|
4241
|
+
|
|
4242
|
+
/** How a single image fills the backdrop (`object-fit`). */
|
|
4243
|
+
type BackdropImageFit = 'cover' | 'contain' | 'fill';
|
|
4244
|
+
/** Which part of the image stays in view when it is cropped. */
|
|
4245
|
+
type BackdropImagePosition = 'center' | 'top' | 'bottom' | 'left' | 'right' | 'top left' | 'top right' | 'bottom left' | 'bottom right';
|
|
4246
|
+
/** Tile the image as a background instead of fitting one copy. */
|
|
4247
|
+
type BackdropImageRepeat = 'repeat' | 'repeat-x' | 'repeat-y';
|
|
4248
|
+
/**
|
|
4249
|
+
* How far the image lags the scroll: `none` scrolls with the content,
|
|
4250
|
+
* `subtle` lags by 35%, and a number from 0 to 1 is the lag factor (0.5
|
|
4251
|
+
* moves the image at half the scroll speed).
|
|
4252
|
+
*/
|
|
4253
|
+
type BackdropImageParallax = 'none' | 'subtle' | number;
|
|
4254
|
+
/**
|
|
4255
|
+
* A dimming layer under `overlay` content: `bottom` darkens toward the
|
|
4256
|
+
* block end where a title sits, `full` dims the whole image evenly.
|
|
4257
|
+
*/
|
|
4258
|
+
type BackdropImageScrim = 'none' | 'bottom' | 'full';
|
|
4259
|
+
/**
|
|
4260
|
+
* A scroll-linked progressive blur: a statically blurred copy of the image
|
|
4261
|
+
* fades in as the image block scrolls away. Only the copy's opacity (and the
|
|
4262
|
+
* optional dim layer's) animates; the blur itself is set once.
|
|
4263
|
+
*/
|
|
4264
|
+
interface BackdropImageBlur {
|
|
4265
|
+
/**
|
|
4266
|
+
* CSS blur radius applied once to the copy. Default 24px; with
|
|
4267
|
+
* `blurredSrc` the default is no filter, since that asset is already soft.
|
|
4268
|
+
*/
|
|
4269
|
+
radius?: CssLength;
|
|
4270
|
+
/**
|
|
4271
|
+
* An app-supplied pre-blurred or low-resolution copy of the image, used
|
|
4272
|
+
* instead of filtering `src`.
|
|
4273
|
+
*/
|
|
4274
|
+
blurredSrc?: string;
|
|
4275
|
+
/**
|
|
4276
|
+
* Peak opacity, from 0 to 1, of a black dim layer that ramps in with the
|
|
4277
|
+
* blur. Default 0 (no dim layer).
|
|
4278
|
+
*/
|
|
4279
|
+
dim?: number;
|
|
4280
|
+
}
|
|
4281
|
+
type BackdropImageRootAttributes = StructuralRootAttributes & Readonly<{
|
|
4282
|
+
'data-component'?: never;
|
|
4283
|
+
'data-blur'?: never;
|
|
4284
|
+
'data-parallax'?: never;
|
|
4285
|
+
'data-scrim'?: never;
|
|
4286
|
+
'data-fade'?: never;
|
|
4287
|
+
'data-repeat'?: never;
|
|
4288
|
+
'data-under-chrome'?: never;
|
|
4289
|
+
}>;
|
|
4290
|
+
interface BackdropImageCommonProps {
|
|
4291
|
+
/** Image URL. */
|
|
4292
|
+
src: string;
|
|
4293
|
+
/**
|
|
4294
|
+
* Accessible description of the image. Pass `''` for a decorative image
|
|
4295
|
+
* that only sets a mood; assistive technology then skips it.
|
|
4296
|
+
*/
|
|
4297
|
+
alt: string;
|
|
4298
|
+
/** Which part of a cropped image stays in view. Default `center`. */
|
|
4299
|
+
position?: BackdropImagePosition;
|
|
4300
|
+
/** Height of the image block. Default 320px (`remify(320)`). */
|
|
4301
|
+
height?: CssLength;
|
|
4302
|
+
/** How far the image lags the scroll. Default `none`. */
|
|
4303
|
+
parallax?: BackdropImageParallax;
|
|
4304
|
+
/**
|
|
4305
|
+
* The color the image fades into at its block end. It also paints the
|
|
4306
|
+
* whole surface, so `children` below the image sit on the same color and
|
|
4307
|
+
* the page reads as one surface. Omit for a hard edge with no surface.
|
|
4308
|
+
*/
|
|
4309
|
+
fadeTo?: CssColor;
|
|
4310
|
+
/**
|
|
4311
|
+
* Blur the image progressively as it scrolls away, by cross-fading a
|
|
4312
|
+
* statically blurred copy. Static (unblurred) wherever parallax is.
|
|
4313
|
+
*/
|
|
4314
|
+
blur?: BackdropImageBlur;
|
|
4315
|
+
/**
|
|
4316
|
+
* Run the image up beneath the scroller's block-start inset: an overlay or
|
|
4317
|
+
* clear Pane header, NavStack chrome handed to a view's Pane, and the top
|
|
4318
|
+
* safe area, the way a media page's artwork fills the screen behind
|
|
4319
|
+
* transparent chrome. The visible image keeps `height` below that inset,
|
|
4320
|
+
* and `overlay` content stays clear of the chrome. Place the image first in
|
|
4321
|
+
* the Pane's content; it reads the Pane's
|
|
4322
|
+
* `--kui-pane-content-inset-block-start`. Default `false`.
|
|
4323
|
+
*/
|
|
4324
|
+
underChrome?: boolean;
|
|
4325
|
+
/** Dim the image under `overlay` content. Default `none`. */
|
|
4326
|
+
scrim?: BackdropImageScrim;
|
|
4327
|
+
/** Content laid over the image's block end, such as a title and actions. */
|
|
4328
|
+
overlay?: KerfUiContent;
|
|
4329
|
+
/** Content that continues below the image on the `fadeTo` surface. */
|
|
4330
|
+
children?: KerfUiContent;
|
|
4331
|
+
id?: string;
|
|
4332
|
+
className?: string;
|
|
4333
|
+
/** Safe `data-*`, `aria-*`, and structural `role` metadata on the root. */
|
|
4334
|
+
rootAttributes?: BackdropImageRootAttributes;
|
|
4335
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
4336
|
+
slot?: string;
|
|
4337
|
+
}
|
|
4338
|
+
/** One fitted image, with optional responsive candidates. */
|
|
4339
|
+
interface BackdropImageSingleProps extends BackdropImageCommonProps {
|
|
4340
|
+
repeat?: undefined;
|
|
4341
|
+
/** Responsive image candidates (`srcset`). */
|
|
4342
|
+
srcset?: string;
|
|
4343
|
+
/** Rendered-size hints for `srcset` (`sizes`). */
|
|
4344
|
+
sizes?: string;
|
|
4345
|
+
/** How the image fills the block. Default `cover`. */
|
|
4346
|
+
fit?: BackdropImageFit;
|
|
4347
|
+
}
|
|
4348
|
+
/** A tiled background image at its natural size. */
|
|
4349
|
+
interface BackdropImageTiledProps extends BackdropImageCommonProps {
|
|
4350
|
+
repeat: BackdropImageRepeat;
|
|
4351
|
+
srcset?: never;
|
|
4352
|
+
sizes?: never;
|
|
4353
|
+
fit?: never;
|
|
4354
|
+
}
|
|
4355
|
+
type BackdropImageProps = BackdropImageSingleProps | BackdropImageTiledProps;
|
|
4356
|
+
/**
|
|
4357
|
+
* An image backdrop at the top of a scrolling Pane or NavStack view: the
|
|
4358
|
+
* image can lag the scroll (parallax on a scroll-driven, compositor-only
|
|
4359
|
+
* transform), fade through a mask into `fadeTo`, and that color keeps
|
|
4360
|
+
* painting under `children` so the page reads as one surface. Kerf owns the
|
|
4361
|
+
* static fallbacks: no parallax without scroll-driven animation support,
|
|
4362
|
+
* under reduced motion, under `data-kui-effects="static"`, or on a
|
|
4363
|
+
* slow-update display, and a hard edge onto solid `fadeTo` under reduced
|
|
4364
|
+
* transparency.
|
|
4365
|
+
*/
|
|
4366
|
+
declare function BackdropImage(props: BackdropImageProps): kerfjs.SafeHtml;
|
|
4367
|
+
|
|
4368
|
+
export { BackdropImage, type BackdropImageBlur, type BackdropImageFit, type BackdropImageParallax, type BackdropImagePosition, type BackdropImageProps, type BackdropImageRepeat, type BackdropImageScrim, type BackdropImageSingleProps, type BackdropImageTiledProps };
|
|
4369
|
+
```
|
|
4370
|
+
|
|
4080
4371
|
## `@kerfjs/ui/wire-toolbar-visibility`
|
|
4081
4372
|
|
|
4082
4373
|
```ts
|
|
@@ -4103,7 +4394,19 @@ import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
|
|
|
4103
4394
|
import { CssLength } from './css-values.js';
|
|
4104
4395
|
|
|
4105
4396
|
type DialogSurfaceSize = 'small' | 'medium' | 'large';
|
|
4106
|
-
|
|
4397
|
+
/**
|
|
4398
|
+
* How the dialog is presented: `modal` (default) centered on the screen,
|
|
4399
|
+
* `side-sheet` against the inline end, `fullscreen`, or `bottom-sheet`
|
|
4400
|
+
* attached to the bottom edge (square bottom corners, safe-area and
|
|
4401
|
+
* virtual-keyboard clearance, optionally user-resizable).
|
|
4402
|
+
*/
|
|
4403
|
+
type DialogSurfacePresentation = 'modal' | 'side-sheet' | 'fullscreen' | 'bottom-sheet';
|
|
4404
|
+
/**
|
|
4405
|
+
* How a bottom sheet appears or leaves: `slide` (default) moves the panel in
|
|
4406
|
+
* from, or out to, the bottom edge; `standard` keeps Web Awesome's
|
|
4407
|
+
* scale-and-fade. Both honor `prefers-reduced-motion`.
|
|
4408
|
+
*/
|
|
4409
|
+
type DialogSurfaceSheetMotion = 'slide' | 'standard';
|
|
4107
4410
|
type SurfaceInset = 'none' | 'compact' | 'comfortable';
|
|
4108
4411
|
type DialogSurfaceMaxHeight = CssLength | 'viewport';
|
|
4109
4412
|
/** A definite modal height: a length or the full viewport, minus both gutters. */
|
|
@@ -4144,13 +4447,34 @@ interface DialogSurfaceProps {
|
|
|
4144
4447
|
footerInset?: SurfaceInset;
|
|
4145
4448
|
/** Modal edge clearance. Omit to retain Web Awesome's default viewport cap. */
|
|
4146
4449
|
viewportGutter?: CssLength;
|
|
4147
|
-
/**
|
|
4450
|
+
/**
|
|
4451
|
+
* Modal height cap, bounded by the dynamic viewport minus both gutters. On a
|
|
4452
|
+
* bottom sheet, the cap (and the resize ceiling), bounded by the dynamic
|
|
4453
|
+
* viewport minus the top safe area and one gutter.
|
|
4454
|
+
*/
|
|
4148
4455
|
maxHeight?: DialogSurfaceMaxHeight;
|
|
4149
4456
|
/**
|
|
4150
4457
|
* Modal definite height, bounded the same way, so a filling child has a
|
|
4151
|
-
* height to fill. Takes precedence over `maxHeight`.
|
|
4458
|
+
* height to fill. Takes precedence over `maxHeight`. On a bottom sheet, the
|
|
4459
|
+
* height it opens at (the visible height above the safe area or keyboard).
|
|
4152
4460
|
*/
|
|
4153
4461
|
height?: DialogSurfaceHeight;
|
|
4462
|
+
/**
|
|
4463
|
+
* A resizable bottom sheet's resize floor (default 160px), the visible
|
|
4464
|
+
* height above the safe area or keyboard.
|
|
4465
|
+
*/
|
|
4466
|
+
minHeight?: CssLength;
|
|
4467
|
+
/**
|
|
4468
|
+
* Let the person resize a bottom sheet by its top grabber (drag, or the
|
|
4469
|
+
* arrow, Page Up/Down, Home and End keys) between `minHeight` and the
|
|
4470
|
+
* sheet's cap. Needs the `/register` entry; each opening starts at `height`
|
|
4471
|
+
* (or the content height). Ignored by other presentations.
|
|
4472
|
+
*/
|
|
4473
|
+
resizable?: boolean;
|
|
4474
|
+
/** How a bottom sheet appears (default `slide` up from the bottom edge). */
|
|
4475
|
+
enterMotion?: DialogSurfaceSheetMotion;
|
|
4476
|
+
/** How a bottom sheet is dismissed (default `slide` down off the bottom edge). */
|
|
4477
|
+
exitMotion?: DialogSurfaceSheetMotion;
|
|
4154
4478
|
/**
|
|
4155
4479
|
* Body layout (default `flow`); `fill` lets one child own the body and
|
|
4156
4480
|
* `fill-last` stacks fixed rows above one filling last child.
|
|
@@ -4200,7 +4524,7 @@ interface DialogSurfaceProps {
|
|
|
4200
4524
|
slot?: string;
|
|
4201
4525
|
}
|
|
4202
4526
|
/** Configure recurring Web Awesome dialog geometry without consumer ::part() CSS. */
|
|
4203
|
-
declare function DialogSurface({ children, size, presentation, preferredWidth, bodyInset, footerInset, viewportGutter, maxHeight, height, bodyLayout, headerPresentation, footerPresentation, footerOffset, rootAttributes, className, slot, }: DialogSurfaceProps): kerfjs.SafeHtml;
|
|
4527
|
+
declare function DialogSurface({ children, size, presentation, preferredWidth, bodyInset, footerInset, viewportGutter, maxHeight, height, minHeight, resizable, enterMotion, exitMotion, bodyLayout, headerPresentation, footerPresentation, footerOffset, rootAttributes, className, slot, }: DialogSurfaceProps): kerfjs.SafeHtml;
|
|
4204
4528
|
/** Where a PopoverDialogSurface appears: the top layer, or in flow. */
|
|
4205
4529
|
type PopoverDialogSurfacePresentation = 'overlay' | 'embedded';
|
|
4206
4530
|
/** Application `data-*` metadata on the surface root. */
|
|
@@ -4267,7 +4591,7 @@ interface PopupSurfaceProps {
|
|
|
4267
4591
|
/** Configure recurring Web Awesome dropdown-menu geometry without consumer ::part() CSS. */
|
|
4268
4592
|
declare function PopupSurface({ children, inset, className, slot, }: PopupSurfaceProps): kerfjs.SafeHtml;
|
|
4269
4593
|
|
|
4270
|
-
export { DialogSurface, type DialogSurfaceBodyLayout, type DialogSurfaceFooterPresentation, type DialogSurfaceHeaderPresentation, type DialogSurfaceHeight, type DialogSurfaceMaxHeight, type DialogSurfacePresentation, type DialogSurfaceProps, type DialogSurfaceRootAttributes, type DialogSurfaceSize, PopoverDialogSurface, type PopoverDialogSurfaceDataAttributes, type PopoverDialogSurfacePresentation, type PopoverDialogSurfaceProps, PopupSurface, type PopupSurfaceInset, type PopupSurfaceProps, type SurfaceInset };
|
|
4594
|
+
export { DialogSurface, type DialogSurfaceBodyLayout, type DialogSurfaceFooterPresentation, type DialogSurfaceHeaderPresentation, type DialogSurfaceHeight, type DialogSurfaceMaxHeight, type DialogSurfacePresentation, type DialogSurfaceProps, type DialogSurfaceRootAttributes, type DialogSurfaceSheetMotion, type DialogSurfaceSize, PopoverDialogSurface, type PopoverDialogSurfaceDataAttributes, type PopoverDialogSurfacePresentation, type PopoverDialogSurfaceProps, PopupSurface, type PopupSurfaceInset, type PopupSurfaceProps, type SurfaceInset };
|
|
4271
4595
|
```
|
|
4272
4596
|
|
|
4273
4597
|
## `@kerfjs/ui/text`
|