fold-ng 0.5.2 → 0.6.0

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fold-ng",
3
- "version": "0.5.2",
3
+ "version": "0.6.0",
4
4
  "description": "Accessible, dark-first Angular 22 UI component library & design system — signals-first, standalone, zoneless, SSR-ready. Design tokens + WCAG-minded components, themeable to the bone.",
5
5
  "keywords": [
6
6
  "angular",
package/tokens/scales.css CHANGED
@@ -54,6 +54,13 @@
54
54
  --fold-space-md: 12px;
55
55
  --fold-space-lg: 16px;
56
56
  --fold-space-xl: 20px;
57
+ /* Larger steps on the 4px grid — section padding, page-level gaps, hero bands.
58
+ The scale stays tight (no half-steps): a 4px-grid rhythm is the constraint;
59
+ rare off-grid needs stay explicit literals, not tokens. */
60
+ --fold-space-2xl: 24px;
61
+ --fold-space-3xl: 32px;
62
+ --fold-space-4xl: 40px;
63
+ --fold-space-5xl: 48px;
57
64
 
58
65
  /* Rail-width scale — the shared widths for the nav-rail hierarchy, named to
59
66
  pair 1:1 with the `--fold-color-bg-rail-*` colour tokens (primary app menu →
@@ -26,6 +26,18 @@
26
26
 
27
27
  /* ── Base theme: UMBRA (dark) ─────────────────────────────── */
28
28
  :root {
29
+ /* Page scaffold rhythm — FLUID defaults, read by `fold-page-layout` via
30
+ `var()`. A page/theme overrides on any ancestor (or the element) to retune;
31
+ the playground sets them inline. The gutter scales more than the gap:
32
+ horizontal room is precious on small screens, vertical rhythm less so — so
33
+ the two carry deliberately different responsive curves. */
34
+ --fold-page-gutter: clamp(1rem, 4vw, 2rem); /* 16 → 32px (fluid 400–800px) */
35
+ --fold-page-gap: clamp(
36
+ 1.25rem,
37
+ 3vw,
38
+ 2rem
39
+ ); /* 20 → 32px (fluid ~665–1065px) */
40
+
29
41
  /* Surfaces (bg- = a fill role, darkest chrome → lightest page) */
30
42
  --fold-color-bg-page: var(--fold-ref-ink-850); /* page background */
31
43
  --fold-color-bg-header: var(--fold-ref-ink-950); /* top header bar */
@@ -548,6 +548,7 @@ declare const FOLD_BUILTIN_ICONS: {
548
548
  readonly timeline: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"5\" width=\"18\" height=\"14\" rx=\"2\"/><path d=\"M3 10h18M8 5v14M13 10v9\"/></svg>";
549
549
  readonly library: "<svg viewBox=\"0 0 512 512\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"32\" y=\"96\" width=\"64\" height=\"368\" rx=\"16\" ry=\"16\" style=\"fill:none;stroke:currentColor;stroke-linejoin:round;stroke-width:32px\"/><line x1=\"112\" y1=\"224\" x2=\"240\" y2=\"224\" style=\"fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:32px\"/><line x1=\"112\" y1=\"400\" x2=\"240\" y2=\"400\" style=\"fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:32px\"/><rect x=\"112\" y=\"160\" width=\"128\" height=\"304\" rx=\"16\" ry=\"16\" style=\"fill:none;stroke:currentColor;stroke-linejoin:round;stroke-width:32px\"/><rect x=\"256\" y=\"48\" width=\"96\" height=\"416\" rx=\"16\" ry=\"16\" style=\"fill:none;stroke:currentColor;stroke-linejoin:round;stroke-width:32px\"/><path d=\"M422.46,96.11l-40.4,4.25c-11.12,1.17-19.18,11.57-17.93,23.1l34.92,321.59c1.26,11.53,11.37,20,22.49,18.84l40.4-4.25c11.12-1.17,19.18-11.57,17.93-23.1L445,115C443.69,103.42,433.58,94.94,422.46,96.11Z\" style=\"fill:none;stroke:currentColor;stroke-linejoin:round;stroke-width:32px\"/></svg>";
550
550
  readonly "add-doc": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"m21.414 5h-4.414v-4.414zm.586 2v17h-20v-21a3 3 0 0 1 3-3h10v7zm-6 7h-3v-3h-2v3h-3v2h3v3h2v-3h3z\"/></svg>";
551
+ readonly archive: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M21 8v13H3V8\"/><rect x=\"1\" y=\"3\" width=\"22\" height=\"5\" rx=\"1\"/><path d=\"M10 12h4\"/></svg>";
551
552
  readonly "arrow-back": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M19 12H5M12 19l-7-7 7-7\"/></svg>";
552
553
  readonly "arrow-right": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M5 12h14M12 5l7 7-7 7\"/></svg>";
553
554
  readonly bin: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M22,4H17V2a2,2,0,0,0-2-2H9A2,2,0,0,0,7,2V4H2V6H4V21a3,3,0,0,0,3,3H17a3,3,0,0,0,3-3V6h2ZM9,2h6V4H9Zm9,19a1,1,0,0,1-1,1H7a1,1,0,0,1-1-1V6H18Z\"/><rect x=\"9\" y=\"10\" width=\"2\" height=\"8\"/><rect x=\"13\" y=\"10\" width=\"2\" height=\"8\"/></svg>";
@@ -570,6 +571,7 @@ declare const FOLD_BUILTIN_ICONS: {
570
571
  readonly "eye-off": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M17.94 17.94A10.07 10.07 0 0112 20c-7 0-11-8-11-8a18.45 18.45 0 015.06-5.94M9.9 4.24A9.12 9.12 0 0112 4c7 0 11 8 11 8a18.5 18.5 0 01-2.16 3.19m-6.72-1.07a3 3 0 11-4.24-4.24\"/><line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\"/></svg>";
571
572
  readonly eye: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\"/><circle cx=\"12\" cy=\"12\" r=\"3\"/></svg>";
572
573
  readonly "file-add": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"/><polyline points=\"14 2 14 8 20 8\"/><line x1=\"12\" y1=\"18\" x2=\"12\" y2=\"12\"/><line x1=\"9\" y1=\"15\" x2=\"15\" y2=\"15\"/></svg>";
574
+ readonly filter: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22 3H2l8 9.46V19l4 2v-8.54L22 3z\"/></svg>";
573
575
  readonly "folder-open": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z\"/></svg>";
574
576
  readonly folder: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M21,3H12.236l-4-2H3A3,3,0,0,0,0,4V23H24V6A3,3,0,0,0,21,3ZM3,3H7.764l4,2H21a1,1,0,0,1,1,1v.881L2,6.994V4A1,1,0,0,1,3,3ZM2,21V8.994l20-.113V21Z\"/></svg>";
575
577
  readonly globe: "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M12 3C6.5 3 2 9 2 12s4.5 9 10 9 10-6 10-9-4.5-9-10-9z\"/><circle cx=\"12\" cy=\"12\" r=\"3\"/></svg>";
@@ -606,6 +608,9 @@ type FoldIconName = FoldBuiltinIconName | (string & {});
606
608
 
607
609
  /** Size presets map to an icon-size token; a number is interpreted as pixels. */
608
610
  type FoldIconSize = "xs" | "sm" | "md" | "lg" | "xl" | number;
611
+ /** Semantic tint. Unset = inherit the context's `currentColor` (the default —
612
+ * an icon matches whatever it sits in); set it to override with a role colour. */
613
+ type FoldIconTone = "primary" | "secondary" | "muted" | "faded";
609
614
  /**
610
615
  * `fold-icon` — the single surface for all SVG icons.
611
616
  *
@@ -625,6 +630,7 @@ type FoldIconSize = "xs" | "sm" | "md" | "lg" | "xl" | number;
625
630
  * <fold-icon name="search" />
626
631
  * <fold-icon name="bin" size="lg" />
627
632
  * <fold-icon name="heart" [size]="18" />
633
+ * <fold-icon name="star" tone="primary" /> <!-- accent tint, ignores context -->
628
634
  * <fold-icon name="edit" title="Edit track" /> <!-- a11y label -->
629
635
  * ```
630
636
  */
@@ -633,6 +639,9 @@ declare class FoldIconComponent {
633
639
  readonly name: _angular_core.InputSignal<FoldIconName>;
634
640
  /** Size — token (`xs…xl`) or explicit pixel number. Defaults to `md`. */
635
641
  readonly size: _angular_core.InputSignal<FoldIconSize>;
642
+ /** Semantic tint — `primary` · `secondary` · `muted` · `faded`. Unset (default)
643
+ * inherits `currentColor`, so the icon matches whatever it sits in. */
644
+ readonly tone: _angular_core.InputSignal<FoldIconTone | undefined>;
636
645
  /** Optional accessible label. Set → `aria-label`; unset → `aria-hidden`. */
637
646
  readonly title: _angular_core.InputSignal<string | undefined>;
638
647
  private readonly registry;
@@ -642,9 +651,11 @@ declare class FoldIconComponent {
642
651
  readonly href: _angular_core.Signal<string | null>;
643
652
  /** Resolves the size input to a CSS length string for `--icon-size`. */
644
653
  readonly sizeVar: _angular_core.Signal<string>;
654
+ /** The tone's colour token, or null to inherit `currentColor` (no override). */
655
+ readonly toneColor: _angular_core.Signal<string | null>;
645
656
  constructor();
646
657
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FoldIconComponent, never>;
647
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<FoldIconComponent, "fold-icon", never, { "name": { "alias": "name"; "required": true; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
658
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<FoldIconComponent, "fold-icon", never, { "name": { "alias": "name"; "required": true; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
648
659
  }
649
660
 
650
661
  /**
@@ -1439,9 +1450,12 @@ type FoldMenuTogglePlacement = "auto" | "footer" | "header" | "body";
1439
1450
  *
1440
1451
  * ## Options
1441
1452
  * - `collapsible` — render a chevron toggle that flips `expanded`.
1442
- * - `expanded` (two-way) — `false` (default) is the icon rail: items are
1443
- * icon-only with hover tooltips. `true` widens the rail and items + separators
1444
- * show their labels inline. Drive it yourself (`[expanded]`) or let the toggle.
1453
+ * - `expanded` (two-way) — `true` widens the rail and reveals inline labels;
1454
+ * `false` is the icon rail (icon-only, hover tooltips). **Left unbound it
1455
+ * follows `collapsible`:** `<fold-menu collapsible>` boots **expanded** (you
1456
+ * added a way to collapse, so open is the natural start), a bare `<fold-menu>`
1457
+ * boots the icon rail. Bind it (`[expanded]` / `[(expanded)]`) to be
1458
+ * authoritative — an explicit value always wins.
1445
1459
  *
1446
1460
  * ## Slots
1447
1461
  * | Attribute | Band |
@@ -1468,11 +1482,13 @@ declare class FoldMenuComponent {
1468
1482
  /** Show a chevron toggle that flips `expanded`. */
1469
1483
  readonly collapsible: _angular_core.InputSignalWithTransform<boolean, unknown>;
1470
1484
  /**
1471
- * Two-way: `true` widens the rail and reveals inline labels. A standalone
1472
- * state — a menu can be statically expanded (a labelled sidebar) without
1473
- * `collapsible`; `collapsible` only adds the toggle that flips it.
1485
+ * Two-way. `true` widens the rail and reveals inline labels; `false` is the
1486
+ * icon rail. **`undefined` (the default) means "unset"** — the effective state
1487
+ * then follows `collapsible` (see {@link isExpanded}), so a bare `collapsible`
1488
+ * menu opens without the consumer having to bind it. A bound value is always
1489
+ * authoritative.
1474
1490
  */
1475
- readonly expanded: _angular_core.ModelSignal<boolean>;
1491
+ readonly expanded: _angular_core.ModelSignal<boolean | undefined>;
1476
1492
  /** How items tint on hover / when active (`follow` = section colour). */
1477
1493
  readonly tint: _angular_core.InputSignal<FoldMenuTint>;
1478
1494
  /** Rail depth → background tint (`primary` default / `secondary` / `tertiary`). */
@@ -1483,6 +1499,13 @@ declare class FoldMenuComponent {
1483
1499
  private readonly footRef;
1484
1500
  private readonly hasHeader;
1485
1501
  private readonly hasFooter;
1502
+ /**
1503
+ * The effective expanded state everything renders from: the bound `expanded`
1504
+ * when set, else it follows `collapsible` (a collapsible rail boots open, a
1505
+ * plain one boots as the icon rail). Encodes the sensible default without a
1506
+ * warning — the short `<fold-menu collapsible>` Just Works.
1507
+ */
1508
+ protected readonly isExpanded: _angular_core.Signal<boolean>;
1486
1509
  /**
1487
1510
  * The band the toggle renders into: the `togglePlacement` override when set,
1488
1511
  * else auto — first in the footer, else last in the header, else the body.
@@ -1847,10 +1870,11 @@ declare function provideFoldDataTableLabels(labels: Partial<FoldDataTableLabels>
1847
1870
  * owns the chrome (sticky sortable header, row tone accents, focus/click, the
1848
1871
  * mobile card layout, the loading + empty states).
1849
1872
  *
1850
- * Selection stays controlled too: pass a `selected` set of row keys and handle
1851
- * `selectionChange` — the table renders the checkbox column, the header
1852
- * select-all (with an indeterminate state over the current rows), and the
1853
- * selected-row tint, but never owns the set.
1873
+ * Selection is a two-way model: bind `[(selected)]` with a set of row keys and
1874
+ * the table writes the next set back on any checkbox toggle — it renders the
1875
+ * checkbox column, the header select-all (with an indeterminate state over the
1876
+ * current rows), and the selected-row tint. Bind it one-way (`[selected]`) to
1877
+ * stay fully controlled.
1854
1878
  *
1855
1879
  * The narrow-screen behaviour is the parent's choice, not an imposed one, via
1856
1880
  * `mobileLayout`: `scroll` (default — stay tabular, scroll horizontally),
@@ -1901,14 +1925,17 @@ declare class FoldDataTableComponent<T> {
1901
1925
  readonly stickyFirst: _angular_core.InputSignalWithTransform<boolean, unknown>;
1902
1926
  /** Renders the checkbox column + header select-all. */
1903
1927
  readonly selectable: _angular_core.InputSignalWithTransform<boolean, unknown>;
1904
- /** Controlled selection — the set of selected row keys. The parent owns it. */
1905
- readonly selected: _angular_core.InputSignal<ReadonlySet<string | number>>;
1928
+ /**
1929
+ * Selected row keys, as a **two-way model** — bind `[(selected)]` and the
1930
+ * table writes the next set back on any toggle (it never mutates the set in
1931
+ * place). One-way `[selected]` stays fully controlled. The one source of
1932
+ * selection: there is no separate change output.
1933
+ */
1934
+ readonly selected: _angular_core.ModelSignal<ReadonlySet<string | number>>;
1906
1935
  /** Accessible label for a row's checkbox, e.g. `(row) => row.name`. */
1907
1936
  readonly selectionLabel: _angular_core.InputSignal<((row: T) => string) | undefined>;
1908
1937
  /** Per-instance label overrides (merged over the app-wide / English defaults). */
1909
1938
  readonly labels: _angular_core.InputSignal<Partial<FoldDataTableLabels> | undefined>;
1910
- /** Emits the next selection set on any checkbox toggle (never mutates input). */
1911
- readonly selectionChange: _angular_core.OutputEmitterRef<Set<string | number>>;
1912
1939
  /** Emits the clicked sortable column's `key`. */
1913
1940
  readonly sortChange: _angular_core.OutputEmitterRef<string>;
1914
1941
  readonly rowClick: _angular_core.OutputEmitterRef<T>;
@@ -1970,7 +1997,7 @@ declare class FoldDataTableComponent<T> {
1970
1997
  onRowFocus(row: T, index: number): void;
1971
1998
  onRowKeydown(event: KeyboardEvent, row: T): void;
1972
1999
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FoldDataTableComponent<any>, never>;
1973
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<FoldDataTableComponent<any>, "fold-data-table", never, { "columns": { "alias": "columns"; "required": true; "isSignal": true; }; "rows": { "alias": "rows"; "required": true; "isSignal": true; }; "rowKey": { "alias": "rowKey"; "required": false; "isSignal": true; }; "rowTone": { "alias": "rowTone"; "required": false; "isSignal": true; }; "sort": { "alias": "sort"; "required": false; "isSignal": true; }; "empty": { "alias": "empty"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "caption": { "alias": "caption"; "required": false; "isSignal": true; }; "clickable": { "alias": "clickable"; "required": false; "isSignal": true; }; "zebra": { "alias": "zebra"; "required": false; "isSignal": true; }; "hover": { "alias": "hover"; "required": false; "isSignal": true; }; "mobileLayout": { "alias": "mobileLayout"; "required": false; "isSignal": true; }; "density": { "alias": "density"; "required": false; "isSignal": true; }; "stickyFirst": { "alias": "stickyFirst"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "selectionLabel": { "alias": "selectionLabel"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": false; "isSignal": true; }; "toolbarSurface": { "alias": "toolbarSurface"; "required": false; "isSignal": true; }; }, { "selectionChange": "selectionChange"; "sortChange": "sortChange"; "rowClick": "rowClick"; }, ["cells", "rowCard"], ["[foldToolbar]"], true, never>;
2000
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<FoldDataTableComponent<any>, "fold-data-table", never, { "columns": { "alias": "columns"; "required": true; "isSignal": true; }; "rows": { "alias": "rows"; "required": true; "isSignal": true; }; "rowKey": { "alias": "rowKey"; "required": false; "isSignal": true; }; "rowTone": { "alias": "rowTone"; "required": false; "isSignal": true; }; "sort": { "alias": "sort"; "required": false; "isSignal": true; }; "empty": { "alias": "empty"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "caption": { "alias": "caption"; "required": false; "isSignal": true; }; "clickable": { "alias": "clickable"; "required": false; "isSignal": true; }; "zebra": { "alias": "zebra"; "required": false; "isSignal": true; }; "hover": { "alias": "hover"; "required": false; "isSignal": true; }; "mobileLayout": { "alias": "mobileLayout"; "required": false; "isSignal": true; }; "density": { "alias": "density"; "required": false; "isSignal": true; }; "stickyFirst": { "alias": "stickyFirst"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "selectionLabel": { "alias": "selectionLabel"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": false; "isSignal": true; }; "toolbarSurface": { "alias": "toolbarSurface"; "required": false; "isSignal": true; }; }, { "selected": "selectedChange"; "sortChange": "sortChange"; "rowClick": "rowClick"; }, ["cells", "rowCard"], ["[foldToolbar]"], true, never>;
1974
2001
  }
1975
2002
 
1976
2003
  /**
@@ -2152,7 +2179,7 @@ type FoldTextToken = (typeof FOLD_TEXT_TOKENS)[number];
2152
2179
  declare const FOLD_ICON_SIZE_TOKENS: readonly ["xs", "sm", "md", "lg", "xl"];
2153
2180
  type FoldIconSizeToken = (typeof FOLD_ICON_SIZE_TOKENS)[number];
2154
2181
  /** Space (gap / padding / margin) scale. */
2155
- declare const FOLD_SPACE_TOKENS: readonly ["xs", "sm", "md", "lg", "xl"];
2182
+ declare const FOLD_SPACE_TOKENS: readonly ["xs", "sm", "md", "lg", "xl", "2xl", "3xl", "4xl", "5xl"];
2156
2183
  type FoldSpaceToken = (typeof FOLD_SPACE_TOKENS)[number];
2157
2184
  /** Motion scale — `transition` shorthands (duration + easing). */
2158
2185
  declare const FOLD_MOTION_TOKENS: readonly ["fast", "base", "slow"];
@@ -4187,12 +4214,14 @@ declare class FoldPageTitleDirective {
4187
4214
  * given**. It does *not* cap the column — narrowing a block to a readable measure
4188
4215
  * is the content's job (wrap that block in your own max-width container), never
4189
4216
  * the page scaffold's. The *horizontal* gutter is a single token,
4190
- * `--fold-page-gutter` (default `32px`) — retune it per page/theme, or set it to
4191
- * `0` for a bleeding dashboard. A {@link FoldPageSectionComponent} with `bleed`
4192
- * cancels exactly that token to span the page edge-to-edge (a full-width band
4193
- * amid padded content), so the two never desync — including on a responsive gutter.
4194
- * The *vertical* rhythm between stacked elements is its own token,
4195
- * `--fold-page-gap` (default `32px`), retunable the same way.
4217
+ * `--fold-page-gutter` (fluid default `clamp(1rem, 4vw, 2rem)` — 16→32px) —
4218
+ * retune it per page/theme, or set it to `0` for a bleeding dashboard. A
4219
+ * {@link FoldPageSectionComponent} with `bleed` cancels exactly that token to
4220
+ * span the page edge-to-edge (a full-width band amid padded content), so the two
4221
+ * never desync — including on the fluid gutter. The *vertical* rhythm between
4222
+ * stacked elements is its own token, `--fold-page-gap` (fluid default
4223
+ * `clamp(1.25rem, 3vw, 2rem)` — 20→32px, a gentler curve than the gutter),
4224
+ * retunable the same way.
4196
4225
  *
4197
4226
  * Content projection:
4198
4227
  * - default slot → the page body (sections, cards, banners…).
@@ -4237,20 +4266,29 @@ declare class FoldPageLayoutComponent {
4237
4266
 
4238
4267
  /**
4239
4268
  * `<fold-page-section>` — a titled, semantic **`<section>`** grouping of page
4240
- * content inside a {@link FoldPageLayoutComponent}: an eyebrow `title` + optional
4269
+ * content inside a {@link FoldPageLayoutComponent}: a `title` + optional
4241
4270
  * `description`, a right-aligned actions slot, and the content below.
4242
4271
  *
4243
- * **It is structure, not a box.** The title is a real heading and the region is
4244
- * a `<section>` named by that heading (`aria-labelledby`) — so a page reads as
4245
- * an outline to assistive tech, and the DOM is self-documenting. It paints
4246
- * nothing: transparent, no border, no radius. For a **visual box**, wrap the
4247
- * content in a {@link FoldCardComponent} — the two are orthogonal and compose (a
4248
- * section can hold a card; a card never needs to know about the page).
4272
+ * **It is structure, not a box.** The `title` renders a real **`<h2>`** (a
4273
+ * genuine section heading under the page's `<h1>`, not a decorative eyebrow) and
4274
+ * the region is a `<section>` named by it (`aria-labelledby`) — so a page reads
4275
+ * as an outline to assistive tech. Set `headingLevel` to correct the `aria-level`
4276
+ * where a section nests deeper. It paints nothing: transparent, no border, no
4277
+ * radius. For a **visual box**, wrap the content in a {@link FoldCardComponent} —
4278
+ * the two are orthogonal and compose (a section can hold a card; a card never
4279
+ * needs to know about the page).
4249
4280
  *
4250
4281
  * Content projection:
4251
4282
  * - default slot → the section content.
4252
- * - `[sectionActions]` → the right-aligned header slot (re-projected into the
4253
- * heading row).
4283
+ * - `[sectionActions]` → the right-aligned header slot, beside the `title`.
4284
+ * - `[sectionHeader]` → a **bespoke** header, used *instead of* `title` when the
4285
+ * default `<h2>` isn't enough (e.g. project a {@link FoldElementTitleComponent}
4286
+ * with an icon tile + subtitle). The projected header owns its own heading
4287
+ * semantics.
4288
+ *
4289
+ * The section's vertical rhythm — the head↔body gap, and the `stack` body's
4290
+ * item gap — is a single token, `--fold-page-section-gap` (default the `lg`
4291
+ * space); retune it per section or theme.
4254
4292
  *
4255
4293
  * Two orthogonal helpers, both independent of the title:
4256
4294
  * - `stack` — lay the body out as an evenly-spaced vertical stack (form fields).
@@ -4268,6 +4306,12 @@ declare class FoldPageLayoutComponent {
4268
4306
  * …
4269
4307
  * </fold-page-section>
4270
4308
  *
4309
+ * <!-- bespoke header instead of the default h2 -->
4310
+ * <fold-page-section>
4311
+ * <fold-element-title sectionHeader variant="title" icon="company" title="Contexte" />
4312
+ * …
4313
+ * </fold-page-section>
4314
+ *
4271
4315
  * <!-- need a box? compose with fold-card -->
4272
4316
  * <fold-page-section title="Documents">
4273
4317
  * <fold-card surface="sunken">…</fold-card>
@@ -4281,6 +4325,9 @@ declare class FoldPageSectionComponent {
4281
4325
  readonly title: _angular_core.InputSignal<string | undefined>;
4282
4326
  /** An optional leading icon beside the title. */
4283
4327
  readonly icon: _angular_core.InputSignal<FoldIconName | undefined>;
4328
+ /** Tint of the leading icon — forwarded to `fold-icon`'s `tone`. Defaults to
4329
+ * `secondary` (a muted ink, a step below the title). */
4330
+ readonly iconTone: _angular_core.InputSignal<FoldIconTone>;
4284
4331
  /** A one-line description under the title. */
4285
4332
  readonly description: _angular_core.InputSignal<string | undefined>;
4286
4333
  /** Heading depth exposed to assistive tech (`aria-level`) — set it so sections
@@ -4297,7 +4344,7 @@ declare class FoldPageSectionComponent {
4297
4344
  * `aria-labelledby` (only when there's a title). */
4298
4345
  protected readonly headingId: string;
4299
4346
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FoldPageSectionComponent, never>;
4300
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<FoldPageSectionComponent, "fold-page-section", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "headingLevel": { "alias": "headingLevel"; "required": false; "isSignal": true; }; "stack": { "alias": "stack"; "required": false; "isSignal": true; }; "bleed": { "alias": "bleed"; "required": false; "isSignal": true; }; }, {}, never, ["[sectionActions]", "*"], true, never>;
4347
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<FoldPageSectionComponent, "fold-page-section", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "iconTone": { "alias": "iconTone"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "headingLevel": { "alias": "headingLevel"; "required": false; "isSignal": true; }; "stack": { "alias": "stack"; "required": false; "isSignal": true; }; "bleed": { "alias": "bleed"; "required": false; "isSignal": true; }; }, {}, never, ["[sectionActions]", "[sectionHeader]", "*"], true, never>;
4301
4348
  }
4302
4349
 
4303
4350
  /**
@@ -4432,10 +4479,17 @@ declare class FoldPaginatorComponent {
4432
4479
  readonly currentPage: _angular_core.InputSignal<number>;
4433
4480
  /** Total number of items across all pages (drives `totalPages` + range label). */
4434
4481
  readonly totalItems: _angular_core.InputSignal<number>;
4435
- /** Number of items per page. Must be > 0. */
4436
- readonly pageSize: _angular_core.InputSignal<number>;
4482
+ /**
4483
+ * Number of items per page (must be > 0). Optional: when omitted, the first
4484
+ * of {@link pageSizeOptions} is used, so the common case only needs
4485
+ * `currentPage` + `totalItems`. Everything visible derives from the effective
4486
+ * size, so a control-it-later parent stays consistent.
4487
+ */
4488
+ readonly pageSize: _angular_core.InputSignal<number | undefined>;
4437
4489
  /** Selectable page sizes. Set `[]` to hide the size selector entirely. */
4438
4490
  readonly pageSizeOptions: _angular_core.InputSignal<readonly number[]>;
4491
+ /** The size actually in effect: the `pageSize` input, else the first option. */
4492
+ readonly effectivePageSize: _angular_core.Signal<number>;
4439
4493
  /**
4440
4494
  * How many page buttons to render on each side of the current page
4441
4495
  * between the first/last anchors. Example with `siblingCount: 1`:
@@ -4488,11 +4542,11 @@ declare class FoldPaginatorComponent {
4488
4542
  next(): void;
4489
4543
  onPageSizeChange(raw: string): void;
4490
4544
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FoldPaginatorComponent, never>;
4491
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<FoldPaginatorComponent, "fold-paginator", never, { "currentPage": { "alias": "currentPage"; "required": true; "isSignal": true; }; "totalItems": { "alias": "totalItems"; "required": true; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": true; "isSignal": true; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; "isSignal": true; }; "siblingCount": { "alias": "siblingCount"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": false; "isSignal": true; }; }, { "pageChange": "pageChange"; "pageSizeChange": "pageSizeChange"; }, never, never, true, never>;
4545
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<FoldPaginatorComponent, "fold-paginator", never, { "currentPage": { "alias": "currentPage"; "required": true; "isSignal": true; }; "totalItems": { "alias": "totalItems"; "required": true; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; "isSignal": true; }; "siblingCount": { "alias": "siblingCount"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": false; "isSignal": true; }; }, { "pageChange": "pageChange"; "pageSizeChange": "pageSizeChange"; }, never, never, true, never>;
4492
4546
  }
4493
4547
 
4494
4548
  type FoldViewNavItem = {
4495
- /** Unique key — identifies the item and is emitted by `activeChange`. */
4549
+ /** Unique key — identifies the item; a button item writes it to `activeKey`. */
4496
4550
  key: string;
4497
4551
  /** Display label. */
4498
4552
  label: string;
@@ -4517,9 +4571,9 @@ type FoldViewNavItem = {
4517
4571
  * *go somewhere*. Give each item a `link` (or `href`) and it renders a real
4518
4572
  * `<a>` — so cmd/middle-click opens a new tab, the URL is a deep link, and the
4519
4573
  * active item is driven automatically by `routerLinkActive` +
4520
- * `aria-current="page"`. Without a link an item is a `<button>` that emits
4521
- * `activeChange` and reads its active state from `activeKey` (view switching
4522
- * with no route).
4574
+ * `aria-current="page"`. Without a link an item is a `<button>` that drives the
4575
+ * `activeKey` **two-way model** — bind `[(activeKey)]` for view switching with
4576
+ * no route.
4523
4577
  *
4524
4578
  * **Navigation, not the tabs widget.** Reach for this when a tab routes / switches
4525
4579
  * views. When tabs toggle **layered panels in place** (same URL), use
@@ -4546,10 +4600,12 @@ declare class FoldViewNavComponent {
4546
4600
  /** The items to render, in order. */
4547
4601
  readonly items: _angular_core.InputSignal<FoldViewNavItem[]>;
4548
4602
  /**
4549
- * The active item's `key` — for **button** items (no `link`). Link items ignore
4550
- * it: their active state comes from the URL via `routerLinkActive`.
4603
+ * The active item's `key`, as a **two-way model** — for **button** items (no
4604
+ * `link`). Bind `[(activeKey)]` and a click writes the new key back; there is
4605
+ * no separate change output (the model is the one way). Link items ignore it:
4606
+ * their active state comes from the URL via `routerLinkActive`.
4551
4607
  */
4552
- readonly activeKey: _angular_core.InputSignal<string>;
4608
+ readonly activeKey: _angular_core.ModelSignal<string>;
4553
4609
  /** How the active item reads: accent underline, or accent fill. */
4554
4610
  readonly activeStyle: _angular_core.InputSignal<"fill" | "underline">;
4555
4611
  /**
@@ -4582,14 +4638,12 @@ declare class FoldViewNavComponent {
4582
4638
  * `surface` (a filled bar that carries its own rail background).
4583
4639
  */
4584
4640
  readonly background: _angular_core.InputSignal<"transparent" | "surface">;
4585
- /** Emits the `key` of a clicked **button** item (link items just navigate). */
4586
- readonly activeChange: _angular_core.OutputEmitterRef<string>;
4587
4641
  /** The nearest layout, if any — lets `direction="auto"` follow it. */
4588
4642
  private readonly layout;
4589
4643
  /** `direction` with `auto` resolved against the wrapping layout. */
4590
4644
  protected readonly resolvedDirection: _angular_core.Signal<"vertical" | "horizontal">;
4591
4645
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FoldViewNavComponent, never>;
4592
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<FoldViewNavComponent, "fold-view-nav", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "activeKey": { "alias": "activeKey"; "required": false; "isSignal": true; }; "activeStyle": { "alias": "activeStyle"; "required": false; "isSignal": true; }; "direction": { "alias": "direction"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "background": { "alias": "background"; "required": false; "isSignal": true; }; }, { "activeChange": "activeChange"; }, never, never, true, never>;
4646
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<FoldViewNavComponent, "fold-view-nav", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "activeKey": { "alias": "activeKey"; "required": false; "isSignal": true; }; "activeStyle": { "alias": "activeStyle"; "required": false; "isSignal": true; }; "direction": { "alias": "direction"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "background": { "alias": "background"; "required": false; "isSignal": true; }; }, { "activeKey": "activeKeyChange"; }, never, never, true, never>;
4593
4647
  }
4594
4648
 
4595
4649
  /** A tab in a {@link FoldTabsComponent} bar. */
@@ -4629,15 +4683,12 @@ interface FoldTabsContext {
4629
4683
  * difference is **semantics** — use `fold-tabs` for in-page panel switching, and
4630
4684
  * `fold-view-nav` when the tabs actually navigate (route) between views.
4631
4685
  *
4686
+ * `activeKey` is a two-way model — the single way to drive selection. Bind
4687
+ * `[(activeKey)]` and the bar writes the new key back on click / arrow keys:
4688
+ *
4632
4689
  * ```html
4633
4690
  * <fold-nav-layout>
4634
- * <fold-tabs
4635
- * nav
4636
- * #t="foldTabs"
4637
- * [tabs]="tabs"
4638
- * [activeKey]="tab()"
4639
- * (tabChange)="tab.set($event)"
4640
- * />
4691
+ * <fold-tabs nav #t="foldTabs" [tabs]="tabs" [(activeKey)]="tab" />
4641
4692
  * <fold-tab-panel [tabs]="t" key="overview">…</fold-tab-panel>
4642
4693
  * <fold-tab-panel [tabs]="t" key="settings">…</fold-tab-panel>
4643
4694
  * </fold-nav-layout>
@@ -4651,8 +4702,14 @@ interface FoldTabsContext {
4651
4702
  declare class FoldTabsComponent implements FoldTabsContext {
4652
4703
  /** The tabs to render, in order. */
4653
4704
  readonly tabs: _angular_core.InputSignal<FoldTabItem[]>;
4654
- /** The `key` of the active tab (the shown panel). */
4655
- readonly activeKey: _angular_core.InputSignal<string>;
4705
+ /**
4706
+ * The `key` of the active tab (the shown panel), as a **two-way model** — the
4707
+ * single source of selection. Bind `[(activeKey)]` and the bar writes the new
4708
+ * key back on click / arrow keys; to *react* to a change without a writeback,
4709
+ * listen to the model's `(activeKeyChange)`. There is no separate change
4710
+ * output — the model is the one way.
4711
+ */
4712
+ readonly activeKey: _angular_core.ModelSignal<string>;
4656
4713
  /** How the active tab reads: accent underline, or accent fill. */
4657
4714
  readonly activeStyle: _angular_core.InputSignal<"fill" | "underline">;
4658
4715
  /**
@@ -4666,8 +4723,6 @@ declare class FoldTabsComponent implements FoldTabsContext {
4666
4723
  readonly collapsed: _angular_core.InputSignalWithTransform<boolean, unknown>;
4667
4724
  /** `surface` (filled bar, default) or `transparent`. */
4668
4725
  readonly background: _angular_core.InputSignal<"transparent" | "surface">;
4669
- /** Emits the newly-selected tab's `key`. */
4670
- readonly tabChange: _angular_core.OutputEmitterRef<string>;
4671
4726
  /** The nearest layout, if any — lets `direction="auto"` follow it. */
4672
4727
  private readonly layout;
4673
4728
  /** `direction` with `auto` resolved against the wrapping layout. */
@@ -4678,6 +4733,9 @@ declare class FoldTabsComponent implements FoldTabsContext {
4678
4733
  tabId(key: string): string;
4679
4734
  panelId(key: string): string;
4680
4735
  protected select(key: string): void;
4736
+ /** Records a new selection by writing the `activeKey` model — the two-way
4737
+ * binding (or its `activeKeyChange`) carries it to the parent. */
4738
+ private commit;
4681
4739
  /**
4682
4740
  * Roving-tabindex keyboard model (APG Tabs, automatic activation): arrows move
4683
4741
  * — and select — the adjacent tab, `Home`/`End` the ends. Both axes work, so
@@ -4686,7 +4744,7 @@ declare class FoldTabsComponent implements FoldTabsContext {
4686
4744
  */
4687
4745
  protected onKeydown(event: KeyboardEvent): void;
4688
4746
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FoldTabsComponent, never>;
4689
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<FoldTabsComponent, "fold-tabs", ["foldTabs"], { "tabs": { "alias": "tabs"; "required": true; "isSignal": true; }; "activeKey": { "alias": "activeKey"; "required": true; "isSignal": true; }; "activeStyle": { "alias": "activeStyle"; "required": false; "isSignal": true; }; "direction": { "alias": "direction"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "background": { "alias": "background"; "required": false; "isSignal": true; }; }, { "tabChange": "tabChange"; }, never, never, true, never>;
4747
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<FoldTabsComponent, "fold-tabs", ["foldTabs"], { "tabs": { "alias": "tabs"; "required": true; "isSignal": true; }; "activeKey": { "alias": "activeKey"; "required": true; "isSignal": true; }; "activeStyle": { "alias": "activeStyle"; "required": false; "isSignal": true; }; "direction": { "alias": "direction"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "background": { "alias": "background"; "required": false; "isSignal": true; }; }, { "activeKey": "activeKeyChange"; }, never, never, true, never>;
4690
4748
  }
4691
4749
 
4692
4750
  /**
@@ -4700,7 +4758,7 @@ declare class FoldTabsComponent implements FoldTabsContext {
4700
4758
  * content) and still coordinate.
4701
4759
  *
4702
4760
  * ```html
4703
- * <fold-tabs #t="foldTabs" [tabs]="tabs" [activeKey]="tab()" (tabChange)="tab.set($event)" />
4761
+ * <fold-tabs #t="foldTabs" [tabs]="tabs" [(activeKey)]="tab" />
4704
4762
  * <fold-tab-panel [tabs]="t" key="overview">…</fold-tab-panel>
4705
4763
  * ```
4706
4764
  *
@@ -5457,5 +5515,5 @@ declare class FoldPaletteRegistry {
5457
5515
  }
5458
5516
 
5459
5517
  export { FOLD_AUTO_PALETTES, FOLD_BLUR_TOKENS, FOLD_BUILTIN_ICONS, FOLD_DATA_TABLE_DEFAULT_LABELS, FOLD_DATA_TABLE_LABELS, FOLD_INLINE_CONFIRM_DEFAULT_LABELS, FOLD_INLINE_CONFIRM_LABELS, FOLD_MOTION_TOKENS, FOLD_PAGINATOR_DEFAULT_LABELS, FOLD_PAGINATOR_LABELS, FOLD_PALETTE_DEFAULT, FOLD_PANEL_CLOSE_LABEL, FOLD_RADIUS_TOKENS, FOLD_SEMANTIC_COLOR_TOKENS, FOLD_SHADOW_TOKENS, FOLD_SPACE_TOKENS, FOLD_TEXT_TOKENS, FOLD_TOAST_CONFIG, FoldAppShellComponent, FoldAsideLayoutComponent, FoldAvatarComponent, FoldAvatarDetailComponent, FoldAvatarListComponent, FoldBadgeComponent, FoldButtonComponent, FoldButtonIconComponent, FoldCalloutComponent, FoldCardComponent, FoldCheckboxComponent, FoldChoiceRowComponent, FoldContextCardComponent, FoldDataTableCellDirective, FoldDataTableComponent, FoldDataTableRowCardDirective, FoldDisclosureComponent, FoldDropdownComponent, FoldDropdownItemComponent, FoldElementTitleComponent, FoldElevatedDirective, FoldEmptyStateComponent, FoldFieldComponent, FoldFieldIdDirective, FoldFieldListComponent, FoldFileDropzoneComponent, FoldHeroCardComponent, FoldHeroSectionComponent, FoldIconComponent, FoldIconRegistry, FoldIdService, FoldInlineConfirmComponent, FoldInputComponent, FoldLinkComponent, FoldListboxComponent, FoldLoadingStateComponent, FoldMenuComponent, FoldMenuItemComponent, FoldMenuSectionComponent, FoldMenuSeparatorComponent, FoldMultiselectComponent, FoldNavLauncherComponent, FoldNavLayoutComponent, FoldNavTileComponent, FoldNumberInputComponent, FoldOptionComponent, FoldPageLayoutComponent, FoldPageSectionComponent, FoldPageTitleDirective, FoldPaginatorComponent, FoldPaletteRegistry, FoldPanelComponentOutletDirective, FoldPanelHeaderComponent, FoldPanelHostComponent, FoldPanelHostService, FoldPanelRef, FoldPanelToggle, FoldPasswordFieldComponent, FoldPopoverComponent, FoldPopoverTriggerDirective, FoldRangeSliderComponent, FoldRepeatPressDirective, FoldSearchComponent, FoldSelectComponent, FoldSliderComponent, FoldSpinnerComponent, FoldStatusBadgeComponent, FoldStickyColumnDirective, FoldSurfaceDirective, FoldTabPanelComponent, FoldTabsComponent, FoldTimelineComponent, FoldToastComponent, FoldToastContainerComponent, FoldToastService, FoldToggleIconComponent, FoldViewNavComponent, FoldViewToggleComponent, autoUpdate, computePlacement, foldBlurVar, foldCardBandChrome, foldColorProperty, foldColorVar, foldDefaultPasswordRules, foldHashSeed, foldMotionVar, foldRadiusVar, foldRegexRule, foldResolvePalette, foldShadowVar, foldSpaceVar, foldTextVar, observeElementWidth, provideFoldDataTableLabels, provideFoldIcons, provideFoldInlineConfirmLabels, provideFoldPaginatorLabels, provideFoldPalette, provideFoldPanelLabels, provideFoldToasts };
5460
- export type { FoldAutoPaletteName, FoldAvatarListItem, FoldAvatarRing, FoldAvatarRingStyle, FoldAvatarVariant, FoldBadgeVariant, FoldBlurToken, FoldBuiltinIconName, FoldButtonEmphasis, FoldButtonIconShape, FoldButtonIconSize, FoldButtonIconTone, FoldButtonIntent, FoldButtonShape, FoldButtonSize, FoldCalloutAppearance, FoldCalloutVariant, FoldCardBandChrome, FoldCardBandChromeInput, FoldChoiceOption, FoldComponentPanelDescriptor, FoldDataTableLabels, FoldIconName, FoldIconSet, FoldIconSize, FoldInlineConfirmLabels, FoldMenuItemBadgeTone, FoldMenuLevel, FoldMenuTint, FoldMenuTogglePlacement, FoldMotionToken, FoldNumberControls, FoldNumberSpinner, FoldPageItem, FoldPaginatorLabels, FoldPaletteInput, FoldPanelConfig, FoldPanelContent, FoldPanelDescriptor, FoldPanelHandle, FoldPanelLabels, FoldPanelSide, FoldPasswordRule, FoldPlacementInput, FoldPlacementResult, FoldPopoverAlign, FoldPopoverPlacement, FoldPopoverSide, FoldRadiusToken, FoldRangeValue, FoldRect, FoldSelectOption, FoldSemanticColorToken, FoldShadowToken, FoldSpaceToken, FoldSpinnerSize, FoldStickyColumnAnchor, FoldSurfaceName, FoldTabItem, FoldTableColumn, FoldTableEmpty, FoldTableSort, FoldTableSortDir, FoldTableTone, FoldTabsContext, FoldTemplatePanelDescriptor, FoldTextToken, FoldTimelineDatePlacement, FoldTimelineNode, FoldToast, FoldToastConfig, FoldToastVariant, FoldViewNavItem, FoldViewToggleOption };
5518
+ export type { FoldAutoPaletteName, FoldAvatarListItem, FoldAvatarRing, FoldAvatarRingStyle, FoldAvatarVariant, FoldBadgeVariant, FoldBlurToken, FoldBuiltinIconName, FoldButtonEmphasis, FoldButtonIconShape, FoldButtonIconSize, FoldButtonIconTone, FoldButtonIntent, FoldButtonShape, FoldButtonSize, FoldCalloutAppearance, FoldCalloutVariant, FoldCardBandChrome, FoldCardBandChromeInput, FoldChoiceOption, FoldComponentPanelDescriptor, FoldDataTableLabels, FoldIconName, FoldIconSet, FoldIconSize, FoldIconTone, FoldInlineConfirmLabels, FoldMenuItemBadgeTone, FoldMenuLevel, FoldMenuTint, FoldMenuTogglePlacement, FoldMotionToken, FoldNumberControls, FoldNumberSpinner, FoldPageItem, FoldPaginatorLabels, FoldPaletteInput, FoldPanelConfig, FoldPanelContent, FoldPanelDescriptor, FoldPanelHandle, FoldPanelLabels, FoldPanelSide, FoldPasswordRule, FoldPlacementInput, FoldPlacementResult, FoldPopoverAlign, FoldPopoverPlacement, FoldPopoverSide, FoldRadiusToken, FoldRangeValue, FoldRect, FoldSelectOption, FoldSemanticColorToken, FoldShadowToken, FoldSpaceToken, FoldSpinnerSize, FoldStickyColumnAnchor, FoldSurfaceName, FoldTabItem, FoldTableColumn, FoldTableEmpty, FoldTableSort, FoldTableSortDir, FoldTableTone, FoldTabsContext, FoldTemplatePanelDescriptor, FoldTextToken, FoldTimelineDatePlacement, FoldTimelineNode, FoldToast, FoldToastConfig, FoldToastVariant, FoldViewNavItem, FoldViewToggleOption };
5461
5519
  //# sourceMappingURL=fold-ng.d.ts.map