@akcelik/strct 4.20.0 → 4.22.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": "@akcelik/strct",
3
- "version": "4.20.0",
3
+ "version": "4.22.0",
4
4
  "description": "UIStruct — a standalone Angular component library with a tokenised, multi-palette theme system, built for datacenter / infrastructure management UIs.",
5
5
  "author": "Serkan Akcelik <serkan.akcelik@gmail.com>",
6
6
  "license": "MIT",
package/styles/_base.scss CHANGED
@@ -129,3 +129,44 @@ kbd,
129
129
  transition-duration: 0.01ms !important;
130
130
  }
131
131
  }
132
+
133
+ // The splitter's gutter, as a standalone handle for layouts the splitter does
134
+ // not own (a shell grid, a docked panel). Shipped in the theme layer because
135
+ // the directive attaches only the class.
136
+ .strct-resize {
137
+ flex: none;
138
+ position: relative;
139
+ width: 5px;
140
+ cursor: col-resize;
141
+ background: transparent;
142
+ touch-action: none;
143
+ }
144
+ .strct-resize--y {
145
+ width: auto;
146
+ height: 5px;
147
+ cursor: row-resize;
148
+ }
149
+ .strct-resize::after {
150
+ content: '';
151
+ position: absolute;
152
+ inset-block: 50%;
153
+ inset-inline: 50%;
154
+ width: 3px;
155
+ height: 34px;
156
+ transform: translate(-50%, -50%);
157
+ border-radius: 999px;
158
+ background: var(--b2);
159
+ transition: background 0.14s ease;
160
+ }
161
+ .strct-resize--y::after {
162
+ width: 34px;
163
+ height: 3px;
164
+ }
165
+ .strct-resize:hover::after,
166
+ .strct-resize--dragging::after {
167
+ background: var(--acc);
168
+ }
169
+ .strct-resize:focus-visible {
170
+ outline: 2px solid var(--acc50);
171
+ outline-offset: -1px;
172
+ }
@@ -42,6 +42,7 @@
42
42
  --z-popover: 250;
43
43
  --z-nav: 300;
44
44
  --z-tour: 400;
45
+ --z-window: 500;
45
46
  --z-modal: 1000;
46
47
  --z-overlay: 1100;
47
48
  --z-toast: 1200;
@@ -5584,13 +5584,30 @@ declare class StrctSplitter {
5584
5584
  /** Clamp bounds for the split (percent). */
5585
5585
  readonly min: _angular_core.InputSignal<number>;
5586
5586
  readonly max: _angular_core.InputSignal<number>;
5587
+ /**
5588
+ * What `split`, `minSize` and `maxSize` are measured in. A sidebar is 280px,
5589
+ * not 22%, so `px` sizes the start pane in pixels and drags it in pixels.
5590
+ */
5591
+ readonly unit: _angular_core.InputSignal<"px" | "percent">;
5592
+ /** Bounds in `unit` for the start pane; they win over `min` / `max`. */
5593
+ readonly minSize: _angular_core.InputSignal<number | null>;
5594
+ readonly maxSize: _angular_core.InputSignal<number | null>;
5595
+ /** The start pane can be collapsed to nothing (Enter on the gutter). */
5596
+ readonly collapsible: _angular_core.InputSignalWithTransform<boolean, unknown>;
5597
+ /** Whether it is collapsed (two-way). */
5598
+ readonly collapsed: _angular_core.ModelSignal<boolean>;
5587
5599
  /** Stack panes vertically (gutter drags up/down). */
5588
5600
  readonly vertical: _angular_core.InputSignalWithTransform<boolean, unknown>;
5589
5601
  /** Accessible name of the separator (localizable). */
5590
5602
  readonly gutterLabel: _angular_core.InputSignal<string>;
5591
5603
  /** Keyboard nudge step in percent. */
5592
5604
  readonly step: _angular_core.InputSignal<number>;
5605
+ /** The effective bounds, in whichever unit the splitter is measured in. */
5606
+ protected readonly lowerBound: _angular_core.Signal<number>;
5607
+ protected readonly upperBound: _angular_core.Signal<number>;
5593
5608
  protected readonly clamped: _angular_core.Signal<number>;
5609
+ /** The start pane's flex-basis: its size, or nothing while collapsed. */
5610
+ protected readonly startBasis: _angular_core.Signal<string>;
5594
5611
  protected readonly dragging: _angular_core.WritableSignal<boolean>;
5595
5612
  private moveHandler;
5596
5613
  private upHandler;
@@ -5603,7 +5620,56 @@ declare class StrctSplitter {
5603
5620
  private isRtl;
5604
5621
  protected onKeydown(event: KeyboardEvent): void;
5605
5622
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctSplitter, never>;
5606
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctSplitter, "strct-splitter", never, { "split": { "alias": "split"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "vertical": { "alias": "vertical"; "required": false; "isSignal": true; }; "gutterLabel": { "alias": "gutterLabel"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; }, { "split": "splitChange"; }, never, ["[strctPaneStart]", "[strctPaneEnd]"], true, never>;
5623
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctSplitter, "strct-splitter", never, { "split": { "alias": "split"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "unit": { "alias": "unit"; "required": false; "isSignal": true; }; "minSize": { "alias": "minSize"; "required": false; "isSignal": true; }; "maxSize": { "alias": "maxSize"; "required": false; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "vertical": { "alias": "vertical"; "required": false; "isSignal": true; }; "gutterLabel": { "alias": "gutterLabel"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; }, { "split": "splitChange"; "collapsed": "collapsedChange"; }, never, ["[strctPaneStart]", "[strctPaneEnd]"], true, never>;
5624
+ }
5625
+
5626
+ /**
5627
+ * The splitter's gutter, for layouts the splitter does not own — a shell grid,
5628
+ * a docked panel. It draws the library's grip and brings the separator
5629
+ * semantics with it: `role="separator"`, a tab stop, arrows that step, Home and
5630
+ * End for the bounds, and Enter to collapse when `collapsible`.
5631
+ *
5632
+ * <div [strctResizeHandle]="'y'" [(size)]="panelHeight" [min]="120" [max]="600"
5633
+ * aria-label="Resize the task panel"></div>
5634
+ *
5635
+ * The consumer owns the size — the handle only reports it, so the value can be
5636
+ * persisted, clamped or animated as the layout needs.
5637
+ */
5638
+ declare class StrctResizeHandle {
5639
+ /** Which axis the handle resizes along: `'x'` (default) or `'y'`. */
5640
+ readonly axis: _angular_core.InputSignal<"x" | "y">;
5641
+ /** The size being dragged, in px (two-way). */
5642
+ readonly size: _angular_core.ModelSignal<number>;
5643
+ /** Bounds, in px. */
5644
+ readonly min: _angular_core.InputSignal<number>;
5645
+ readonly max: _angular_core.InputSignal<number>;
5646
+ /** Arrow-key step in px; Shift multiplies it by four. */
5647
+ readonly step: _angular_core.InputSignal<number>;
5648
+ /** Enter collapses the pane the handle sizes. */
5649
+ readonly collapsible: _angular_core.InputSignalWithTransform<boolean, unknown>;
5650
+ /** Whether it is collapsed (two-way). */
5651
+ readonly collapsed: _angular_core.ModelSignal<boolean>;
5652
+ /**
5653
+ * Which side of the handle the sized pane is on. `'before'` (default) grows
5654
+ * the pane as the pointer moves toward the inline/block end.
5655
+ */
5656
+ readonly side: _angular_core.InputSignal<"before" | "after">;
5657
+ private readonly el;
5658
+ protected readonly dragging: _angular_core.WritableSignal<boolean>;
5659
+ private origin;
5660
+ private originSize;
5661
+ private readonly rtl;
5662
+ private readonly move;
5663
+ private readonly up;
5664
+ constructor();
5665
+ protected onDown(event: PointerEvent): void;
5666
+ private onMove;
5667
+ private onUp;
5668
+ private detach;
5669
+ protected onKeydown(event: KeyboardEvent): void;
5670
+ private commit;
5671
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctResizeHandle, never>;
5672
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<StrctResizeHandle, "[strctResizeHandle]", never, { "axis": { "alias": "strctResizeHandle"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "side": { "alias": "side"; "required": false; "isSignal": true; }; }, { "size": "sizeChange"; "collapsed": "collapsedChange"; }, never, never, true, never>;
5607
5673
  }
5608
5674
 
5609
5675
  /** One transferable item. */
@@ -5935,6 +6001,40 @@ interface StrctReorderEvent {
5935
6001
  from: number;
5936
6002
  to: number;
5937
6003
  }
6004
+ /** A completed move between two connected lists. */
6005
+ interface StrctReorderMoveEvent {
6006
+ /** The moved element, so the consumer can identify its own item. */
6007
+ item: HTMLElement;
6008
+ fromList: string;
6009
+ toList: string;
6010
+ fromIndex: number;
6011
+ toIndex: number;
6012
+ }
6013
+ /**
6014
+ * Connects several `[strctReorder]` lists, so a card can move between the
6015
+ * columns of a board — by its handle, or with Alt+ArrowLeft / Alt+ArrowRight.
6016
+ * Moves within one list stay on that list's `reordered`; moves across lists
6017
+ * come out here.
6018
+ */
6019
+ declare class StrctReorderGroup {
6020
+ /** A card moved from one list to another. */
6021
+ readonly moved: _angular_core.OutputEmitterRef<StrctReorderMoveEvent>;
6022
+ /** Every list in this group, in DOM order. */
6023
+ readonly lists: _angular_core.WritableSignal<StrctReorder[]>;
6024
+ /** Where the current drag started, so a drop elsewhere knows its origin. */
6025
+ readonly source: _angular_core.WritableSignal<{
6026
+ list: StrctReorder;
6027
+ index: number;
6028
+ } | null>;
6029
+ register(list: StrctReorder): void;
6030
+ unregister(list: StrctReorder): void;
6031
+ /** The list next to `list` in the given direction, or null at the ends. */
6032
+ neighbour(list: StrctReorder, dir: -1 | 1): StrctReorder | null;
6033
+ /** DOM order, not registration order — columns read left to right. */
6034
+ ordered(): StrctReorder[];
6035
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctReorderGroup, never>;
6036
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<StrctReorderGroup, "[strctReorderGroup]", never, {}, { "moved": "moved"; }, never, never, true, never>;
6037
+ }
5938
6038
  /**
5939
6039
  * List drag-reorder primitive — the consumer owns the array:
5940
6040
  *
@@ -5956,6 +6056,8 @@ interface StrctReorderEvent {
5956
6056
  */
5957
6057
  declare class StrctReorder implements OnDestroy {
5958
6058
  private readonly host;
6059
+ /** The group this list belongs to, when it is one of several. */
6060
+ readonly group: StrctReorderGroup | null;
5959
6061
  private readonly renderer;
5960
6062
  private readonly doc;
5961
6063
  private readonly announcer;
@@ -5973,11 +6075,19 @@ declare class StrctReorder implements OnDestroy {
5973
6075
  * (moved item's text, new 1-based position, item count).
5974
6076
  */
5975
6077
  readonly announcement: _angular_core.InputSignal<(label: string, position: number, total: number) => string>;
6078
+ /** This list's name inside a `[strctReorderGroup]`. */
6079
+ readonly listId: _angular_core.InputSignal<string>;
6080
+ /** What a move between lists says (localizable). */
6081
+ readonly moveAnnouncement: _angular_core.InputSignal<(label: string, list: string, position: number, total: number) => string>;
5976
6082
  readonly dragIndex: _angular_core.WritableSignal<number | null>;
5977
6083
  readonly overIndex: _angular_core.WritableSignal<number | null>;
5978
6084
  /** Id of the sr-only instructions element the items point to. */
5979
6085
  readonly instructionsId: string;
5980
6086
  private hint;
6087
+ /** The container element — the group orders its lists by DOM position. */
6088
+ element(): HTMLElement;
6089
+ /** Move an item into this list at `index`, and say so. */
6090
+ acceptFrom(from: StrctReorder, fromIndex: number, index: number): void;
5981
6091
  constructor();
5982
6092
  items(): HTMLElement[];
5983
6093
  indexOf(el: HTMLElement): number;
@@ -5987,7 +6097,15 @@ declare class StrctReorder implements OnDestroy {
5987
6097
  protected onDragLeave(event: DragEvent): void;
5988
6098
  ngOnDestroy(): void;
5989
6099
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctReorder, never>;
5990
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<StrctReorder, "[strctReorder]", never, { "reorderDisabled": { "alias": "reorderDisabled"; "required": false; "isSignal": true; }; "instructions": { "alias": "instructions"; "required": false; "isSignal": true; }; "announcement": { "alias": "announcement"; "required": false; "isSignal": true; }; }, { "reordered": "reordered"; }, never, never, true, never>;
6100
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<StrctReorder, "[strctReorder]", never, { "reorderDisabled": { "alias": "reorderDisabled"; "required": false; "isSignal": true; }; "instructions": { "alias": "instructions"; "required": false; "isSignal": true; }; "announcement": { "alias": "announcement"; "required": false; "isSignal": true; }; "listId": { "alias": "listId"; "required": false; "isSignal": true; }; "moveAnnouncement": { "alias": "moveAnnouncement"; "required": false; "isSignal": true; }; }, { "reordered": "reordered"; }, never, never, true, never>;
6101
+ }
6102
+ /**
6103
+ * The only place a drag may start from, when an item has one. Content that is
6104
+ * itself draggable — text selection, a chart brush — must not start a move.
6105
+ */
6106
+ declare class StrctReorderHandle {
6107
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctReorderHandle, never>;
6108
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<StrctReorderHandle, "[strctReorderHandle]", never, {}, {}, never, never, true, never>;
5991
6109
  }
5992
6110
  /** One draggable row inside a `[strctReorder]` container. */
5993
6111
  declare class StrctReorderItem {
@@ -5995,9 +6113,14 @@ declare class StrctReorderItem {
5995
6113
  private readonly el;
5996
6114
  private readonly hadOwnTabindex;
5997
6115
  protected hostTabindex(): number | null;
6116
+ /** The keys that apply: the sideways pair only when there is somewhere to go. */
6117
+ protected shortcuts(): string;
5998
6118
  protected isDragging(): boolean;
5999
6119
  protected isOver(): boolean;
6000
6120
  protected index(): number;
6121
+ /** Where the last pointerdown landed — a drag may only start on a handle. */
6122
+ private fromHandle;
6123
+ protected onPointerDown(event: PointerEvent): void;
6001
6124
  protected onDragStart(event: DragEvent): void;
6002
6125
  protected onDragOver(event: DragEvent): void;
6003
6126
  protected onDrop(event: DragEvent): void;
@@ -6246,6 +6369,138 @@ declare class StrctMediaFrame {
6246
6369
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctMediaFrame, "strct-media-frame", never, { "ratio": { "alias": "ratio"; "required": false; "isSignal": true; }; "state": { "alias": "state"; "required": false; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; "activateLabel": { "alias": "activateLabel"; "required": false; "isSignal": true; }; }, { "activated": "activated"; }, never, ["*"], true, never>;
6247
6370
  }
6248
6371
 
6372
+ /** Where a window sits and how big it is, in viewport px. */
6373
+ interface StrctWindowBounds {
6374
+ x: number;
6375
+ y: number;
6376
+ width: number;
6377
+ height: number;
6378
+ }
6379
+ /** Every string the window's own controls use. */
6380
+ interface StrctWindowLabels {
6381
+ minimize: string;
6382
+ maximize: string;
6383
+ restore: string;
6384
+ close: string;
6385
+ /** The dock's accessible name. */
6386
+ dock: string;
6387
+ }
6388
+ /**
6389
+ * Knows which windows exist, which is on top, and which are minimised — so the
6390
+ * dock can list them and a click can raise one.
6391
+ */
6392
+ declare class StrctWindowService {
6393
+ private topZ;
6394
+ readonly windows: _angular_core.WritableSignal<StrctWindow[]>;
6395
+ /** The minimised ones, in the order they were opened. */
6396
+ readonly minimized: _angular_core.Signal<StrctWindow[]>;
6397
+ register(w: StrctWindow): void;
6398
+ unregister(w: StrctWindow): void;
6399
+ /** Raise a window above the others; returns its new stacking offset. */
6400
+ raise(): number;
6401
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctWindowService, never>;
6402
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<StrctWindowService>;
6403
+ }
6404
+ /**
6405
+ * Some work lives in a window beside the page: a VM console stays open while
6406
+ * the operator browses. It can be moved, resized and minimised, and it comes
6407
+ * back from the dock. A modal blocks the page and a drawer is pinned to an
6408
+ * edge — neither is a window.
6409
+ *
6410
+ * <strct-window [(open)]="open" [(minimized)]="min" heading="APP01" palette="dark">
6411
+ * <ng-container strctWindowTitleMeta><strct-badge status="success">Running</strct-badge></ng-container>
6412
+ * <ng-container strctWindowActions>…</ng-container>
6413
+ * …content…
6414
+ * <ng-container strctWindowStatus>…</ng-container>
6415
+ * </strct-window>
6416
+ * <strct-window-dock />
6417
+ */
6418
+ declare class StrctWindow {
6419
+ /** Whether the window exists on screen (two-way). */
6420
+ readonly open: _angular_core.ModelSignal<boolean>;
6421
+ /** Minimised to the dock (two-way). */
6422
+ readonly minimized: _angular_core.ModelSignal<boolean>;
6423
+ /** Filling the viewport — not browser fullscreen (two-way). */
6424
+ readonly maximized: _angular_core.ModelSignal<boolean>;
6425
+ /** Position and size in px (two-way); null lets the window place itself. */
6426
+ readonly bounds: _angular_core.ModelSignal<StrctWindowBounds | null>;
6427
+ /** The title-bar heading, and the window's accessible name. */
6428
+ readonly heading: _angular_core.InputSignal<string>;
6429
+ /** Corner resize grips. */
6430
+ readonly resizable: _angular_core.InputSignalWithTransform<boolean, unknown>;
6431
+ readonly minWidth: _angular_core.InputSignal<number>;
6432
+ readonly minHeight: _angular_core.InputSignal<number>;
6433
+ /** `dark` / `light` force that scheme inside the window (a console is dark). */
6434
+ readonly palette: _angular_core.InputSignal<"dark" | "light" | "inherit">;
6435
+ /** What a click outside does. A window is not dismissed like a modal. */
6436
+ readonly closeOnOutside: _angular_core.InputSignal<"none" | "minimize">;
6437
+ /** The window's own strings. */
6438
+ readonly labels: _angular_core.InputSignal<Partial<StrctWindowLabels>>;
6439
+ /** The accessible name of each resize grip. */
6440
+ readonly resizeLabel: _angular_core.InputSignal<(corner: string) => string>;
6441
+ /** The window was closed. */
6442
+ readonly closed: _angular_core.OutputEmitterRef<void>;
6443
+ protected readonly CORNERS: readonly ["nw", "ne", "sw", "se"];
6444
+ protected readonly titleId: string;
6445
+ protected readonly L: _angular_core.Signal<StrctWindowLabels>;
6446
+ private readonly service;
6447
+ private readonly doc;
6448
+ private readonly host;
6449
+ private readonly zOffset;
6450
+ protected readonly zIndex: _angular_core.Signal<string>;
6451
+ /** The palette in force outside, so `palette` only swaps the scheme. */
6452
+ protected readonly hostPalette: _angular_core.Signal<string>;
6453
+ /** Where the window is. Defaults to a slightly offset, comfortable box. */
6454
+ private readonly fallback;
6455
+ protected readonly rect: _angular_core.Signal<StrctWindowBounds>;
6456
+ private restoreTo;
6457
+ constructor();
6458
+ /** Raise this window above the others when it is clicked. */
6459
+ protected focusWindow(): void;
6460
+ private focusTitle;
6461
+ minimize(): void;
6462
+ /** Bring a minimised window back and raise it. */
6463
+ restore(): void;
6464
+ close(): void;
6465
+ private dragFrom;
6466
+ private readonly onMove;
6467
+ private readonly onUp;
6468
+ protected onDragStart(event: PointerEvent): void;
6469
+ private dragMove;
6470
+ private dragEnd;
6471
+ /** Alt+arrows move the window; Escape minimises it. */
6472
+ protected onTitleKeydown(event: KeyboardEvent): void;
6473
+ private resizeFrom;
6474
+ private readonly onResizeMove;
6475
+ private readonly onResizeUp;
6476
+ protected onResizeStart(event: PointerEvent, corner: string): void;
6477
+ private resizeMove;
6478
+ private resizeEnd;
6479
+ /** Arrows resize by 16px, Shift+arrows by 64px. */
6480
+ protected onResizeKeydown(event: KeyboardEvent, corner: string): void;
6481
+ /**
6482
+ * A corner drag moves the two edges it touches: the west and north edges move
6483
+ * the window's origin as well as its size, so the opposite corner stays put.
6484
+ */
6485
+ private resized;
6486
+ private setRect;
6487
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctWindow, never>;
6488
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctWindow, "strct-window", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "minimized": { "alias": "minimized"; "required": false; "isSignal": true; }; "maximized": { "alias": "maximized"; "required": false; "isSignal": true; }; "bounds": { "alias": "bounds"; "required": false; "isSignal": true; }; "heading": { "alias": "heading"; "required": false; "isSignal": true; }; "resizable": { "alias": "resizable"; "required": false; "isSignal": true; }; "minWidth": { "alias": "minWidth"; "required": false; "isSignal": true; }; "minHeight": { "alias": "minHeight"; "required": false; "isSignal": true; }; "palette": { "alias": "palette"; "required": false; "isSignal": true; }; "closeOnOutside": { "alias": "closeOnOutside"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": false; "isSignal": true; }; "resizeLabel": { "alias": "resizeLabel"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "minimized": "minimizedChange"; "maximized": "maximizedChange"; "bounds": "boundsChange"; "closed": "closed"; }, never, ["[strctWindowTitleMeta]", "[strctWindowActions]", "*", "[strctWindowStatus]"], true, never>;
6489
+ }
6490
+ /**
6491
+ * Where minimised windows wait. Put it in a toolbar or a status bar; each entry
6492
+ * restores its window, and its × closes it.
6493
+ */
6494
+ declare class StrctWindowDock {
6495
+ protected readonly service: StrctWindowService;
6496
+ /** The dock's accessible name. */
6497
+ readonly label: _angular_core.InputSignal<string>;
6498
+ /** The name of each chip's close button. */
6499
+ readonly closeLabel: _angular_core.InputSignal<(heading: string) => string>;
6500
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctWindowDock, never>;
6501
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctWindowDock, "strct-window-dock", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "closeLabel": { "alias": "closeLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
6502
+ }
6503
+
6249
6504
  /**
6250
6505
  * A value change, as one phrase: "v10.27 → v10.28". The old value is muted, the
6251
6506
  * arrow is the library's, the new one is emphasised — and assistive tech hears
@@ -6883,5 +7138,5 @@ declare class StrctHeatmap {
6883
7138
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctHeatmap, "strct-heatmap", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "cols": { "alias": "cols"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "colLabelEvery": { "alias": "colLabelEvery"; "required": false; "isSignal": true; }; "colLabel": { "alias": "colLabel"; "required": false; "isSignal": true; }; "valueFormat": { "alias": "valueFormat"; "required": false; "isSignal": true; }; "thresholds": { "alias": "thresholds"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "summaryFormat": { "alias": "summaryFormat"; "required": false; "isSignal": true; }; "cellHeight": { "alias": "cellHeight"; "required": false; "isSignal": true; }; "gap": { "alias": "gap"; "required": false; "isSignal": true; }; "rowLabelWidth": { "alias": "rowLabelWidth"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
6884
7139
  }
6885
7140
 
6886
- export { FOCUSABLE_SELECTOR, STRCT_DP_DOW, STRCT_DP_DOW_FULL, STRCT_DP_MONTHS, STRCT_ICONS, STRCT_ICON_GROUPS, STRCT_ICON_NAMES, STRCT_MASKS, STRCT_NOTIFICATION_HISTORY_LIMIT, STRCT_PALETTES, STRCT_RAW_ICONS, STRCT_TIME_RANGE_PRESETS, STRCT_WIZARD_DEFAULTS, StrctAccordion, StrctAccordionPanel, StrctAlert, StrctAnnouncer, StrctAvatar, StrctBadge, StrctBreadcrumb, StrctBreadcrumbItem, StrctButton, StrctButtonGroup, StrctBytesPipe, StrctCard, StrctCardBlock, StrctCardFooter, StrctCardHeader, StrctCardHeaderActions, StrctCardHeaderMeta, StrctCardHeaderNote, StrctCascadeColumn, StrctCascadeHost, StrctCascadeSelect, StrctCellDef, StrctCellStatus, StrctChange, StrctChart, StrctCheckbox, StrctChips, StrctCode, StrctCodeInline, StrctColorPicker, StrctCombobox, StrctCommandPalette, StrctConfirmOutlet, StrctConfirmService, StrctContextMenu, StrctContextMenuTrigger, StrctControlDescription, StrctCopy, StrctDatagrid, StrctDatagridActionBar, StrctDatagridActionBarCaption, StrctDatepicker, StrctDatetimePicker, StrctDesc, StrctDescriptionList, StrctDiff, StrctDivider, StrctDonut, StrctDrawer, StrctDrawerFooter, StrctDropdown, StrctDropdownDivider, StrctDropdownItem, StrctDropdownItemAction, StrctDropdownTrigger, StrctDurationPipe, StrctEmptyState, StrctField, StrctFieldGroup, StrctFieldHint, StrctFieldPrefix, StrctFieldSuffix, StrctFile, StrctFilterBar, StrctFlow, StrctFlowNodeTemplate, StrctFooter, StrctGauge, StrctHeader, StrctHeatmap, StrctHero, StrctHotkeysHelp, StrctHotkeysService, StrctIcon, StrctInlineEdit, StrctInput, StrctInputMask, StrctInputOtp, StrctKbd, StrctKnob, StrctLegend, StrctList, StrctListItem, StrctListItemDescription, StrctListItemLeading, StrctListItemMeta, StrctListItemTrailing, StrctLiveIndicator, StrctLogViewer, StrctLogin, StrctMediaFrame, StrctMenuPanel, StrctMenuService, StrctMenubar, StrctMetricTile, StrctModal, StrctModalContent, StrctNav, StrctNavItem, StrctNotificationCenter, StrctNumber, StrctOverlay, StrctPageHeader, StrctPageHeaderActions, StrctPageHeaderCrumbs, StrctPageHeaderTitleMeta, StrctPagination, StrctPassword, StrctPopover, StrctPopoverTrigger, StrctProgress, StrctRadio, StrctRadioGroup, StrctRail, StrctRange, StrctRatePipe, StrctRating, StrctReorder, StrctReorderItem, StrctRowDetailDef, StrctSearchbox, StrctSectionHeader, StrctSectionHeaderActions, StrctSectionHeaderMeta, StrctSectionMenu, StrctSegmented, StrctSelect, StrctShell, StrctShellService, StrctSiPipe, StrctSignpost, StrctSignpostTrigger, StrctSkeleton, StrctSparkline, StrctSpeedDial, StrctSpinner, StrctSplitButton, StrctSplitter, StrctStack, StrctStackItem, StrctStatusDot, StrctStep, StrctStepAction, StrctSteps, StrctSubmenu, StrctTab, StrctTable, StrctTabs, StrctTag, StrctTagLeading, StrctThemeService, StrctThemeSwitcher, StrctTimeRangePicker, StrctTimeline, StrctTimelineItem, StrctToastOutlet, StrctToastService, StrctToggle, StrctToolbar, StrctToolbarCaption, StrctToolbarSpacer, StrctTooltip, StrctTour, StrctTransfer, StrctTree, StrctTreeNode, StrctTreeSelect, StrctVerticalNav, StrctWatermark, StrctWizard, StrctWizardAside, focusFirstIn, keepTabInside, lockBodyScroll, parseAnsi, provideStrctWizardDefaults, registerStrctIcon, restoreFocus, saveFocusedElement, strctComputeDiff, strctDpPad, strctFormatBytes, strctFormatDuration, strctFormatRate, strctFormatSi, strctValidationIcon, strctValidationTone, unlockBodyScroll };
6887
- export type { StrctAlertType, StrctAvatarSize, StrctAvatarStatus, StrctBadgeStatus, StrctButtonSize, StrctButtonVariant, StrctCascadeOption, StrctCellContext, StrctChartAnnotation, StrctChartColor, StrctChartCurve, StrctChartSeries, StrctChartSlot, StrctChartStatus, StrctChartSummaryInfo, StrctChartThreshold, StrctChartType, StrctColumn, StrctCommandItem, StrctConfirmOptions, StrctConfirmTone, StrctDatagridColumn, StrctDatagridColumnState, StrctDatagridFilters, StrctDatagridLabels, StrctDatagridLazyState, StrctDescAlign, StrctDescItem, StrctDiffRow, StrctDonutSegment, StrctDrawerSide, StrctDrawerSize, StrctEmptyVariant, StrctFilterChip, StrctFlowDirection, StrctFlowEdge, StrctFlowNode, StrctFlowOrientation, StrctHeatmapCell, StrctHeatmapSummaryInfo, StrctHotkey, StrctIconBadge, StrctIconName, StrctKnobStatus, StrctLegendItem, StrctLiveLabels, StrctLiveState, StrctLogLine, StrctMediaState, StrctMenuItem, StrctMenuLink, StrctMenuOpenOptions, StrctMenuPlacement, StrctMenuSection, StrctMenubarItem, StrctMetricStatus, StrctModalSize, StrctMode, StrctNotification, StrctOption, StrctOverlayPlacement, StrctPalette, StrctPaletteInfo, StrctProgressSegment, StrctProgressStatus, StrctRailItem, StrctRailStatus, StrctReorderEvent, StrctRow, StrctRowId, StrctSegmentedOption, StrctSegmentedSize, StrctSignpostPosition, StrctSpeedDialDirection, StrctSpinnerSize, StrctStatus, StrctStatusDotSize, StrctStepPhase, StrctStepState, StrctStepsLabels, StrctTagStatus, StrctThresholds, StrctTimeRange, StrctTimeRangePreset, StrctTimelineState, StrctToast, StrctToastOptions, StrctToastType, StrctTooltipPosition, StrctTourStep, StrctTransferItem, StrctTreeDropEvent, StrctTreeMenuEvent, StrctTreeNodeData, StrctTreeNodeMenuFn, StrctValidationState, StrctValidationStatus, StrctWizardDefaults };
7141
+ export { FOCUSABLE_SELECTOR, STRCT_DP_DOW, STRCT_DP_DOW_FULL, STRCT_DP_MONTHS, STRCT_ICONS, STRCT_ICON_GROUPS, STRCT_ICON_NAMES, STRCT_MASKS, STRCT_NOTIFICATION_HISTORY_LIMIT, STRCT_PALETTES, STRCT_RAW_ICONS, STRCT_TIME_RANGE_PRESETS, STRCT_WIZARD_DEFAULTS, StrctAccordion, StrctAccordionPanel, StrctAlert, StrctAnnouncer, StrctAvatar, StrctBadge, StrctBreadcrumb, StrctBreadcrumbItem, StrctButton, StrctButtonGroup, StrctBytesPipe, StrctCard, StrctCardBlock, StrctCardFooter, StrctCardHeader, StrctCardHeaderActions, StrctCardHeaderMeta, StrctCardHeaderNote, StrctCascadeColumn, StrctCascadeHost, StrctCascadeSelect, StrctCellDef, StrctCellStatus, StrctChange, StrctChart, StrctCheckbox, StrctChips, StrctCode, StrctCodeInline, StrctColorPicker, StrctCombobox, StrctCommandPalette, StrctConfirmOutlet, StrctConfirmService, StrctContextMenu, StrctContextMenuTrigger, StrctControlDescription, StrctCopy, StrctDatagrid, StrctDatagridActionBar, StrctDatagridActionBarCaption, StrctDatepicker, StrctDatetimePicker, StrctDesc, StrctDescriptionList, StrctDiff, StrctDivider, StrctDonut, StrctDrawer, StrctDrawerFooter, StrctDropdown, StrctDropdownDivider, StrctDropdownItem, StrctDropdownItemAction, StrctDropdownTrigger, StrctDurationPipe, StrctEmptyState, StrctField, StrctFieldGroup, StrctFieldHint, StrctFieldPrefix, StrctFieldSuffix, StrctFile, StrctFilterBar, StrctFlow, StrctFlowNodeTemplate, StrctFooter, StrctGauge, StrctHeader, StrctHeatmap, StrctHero, StrctHotkeysHelp, StrctHotkeysService, StrctIcon, StrctInlineEdit, StrctInput, StrctInputMask, StrctInputOtp, StrctKbd, StrctKnob, StrctLegend, StrctList, StrctListItem, StrctListItemDescription, StrctListItemLeading, StrctListItemMeta, StrctListItemTrailing, StrctLiveIndicator, StrctLogViewer, StrctLogin, StrctMediaFrame, StrctMenuPanel, StrctMenuService, StrctMenubar, StrctMetricTile, StrctModal, StrctModalContent, StrctNav, StrctNavItem, StrctNotificationCenter, StrctNumber, StrctOverlay, StrctPageHeader, StrctPageHeaderActions, StrctPageHeaderCrumbs, StrctPageHeaderTitleMeta, StrctPagination, StrctPassword, StrctPopover, StrctPopoverTrigger, StrctProgress, StrctRadio, StrctRadioGroup, StrctRail, StrctRange, StrctRatePipe, StrctRating, StrctReorder, StrctReorderGroup, StrctReorderHandle, StrctReorderItem, StrctResizeHandle, StrctRowDetailDef, StrctSearchbox, StrctSectionHeader, StrctSectionHeaderActions, StrctSectionHeaderMeta, StrctSectionMenu, StrctSegmented, StrctSelect, StrctShell, StrctShellService, StrctSiPipe, StrctSignpost, StrctSignpostTrigger, StrctSkeleton, StrctSparkline, StrctSpeedDial, StrctSpinner, StrctSplitButton, StrctSplitter, StrctStack, StrctStackItem, StrctStatusDot, StrctStep, StrctStepAction, StrctSteps, StrctSubmenu, StrctTab, StrctTable, StrctTabs, StrctTag, StrctTagLeading, StrctThemeService, StrctThemeSwitcher, StrctTimeRangePicker, StrctTimeline, StrctTimelineItem, StrctToastOutlet, StrctToastService, StrctToggle, StrctToolbar, StrctToolbarCaption, StrctToolbarSpacer, StrctTooltip, StrctTour, StrctTransfer, StrctTree, StrctTreeNode, StrctTreeSelect, StrctVerticalNav, StrctWatermark, StrctWindow, StrctWindowDock, StrctWindowService, StrctWizard, StrctWizardAside, focusFirstIn, keepTabInside, lockBodyScroll, parseAnsi, provideStrctWizardDefaults, registerStrctIcon, restoreFocus, saveFocusedElement, strctComputeDiff, strctDpPad, strctFormatBytes, strctFormatDuration, strctFormatRate, strctFormatSi, strctValidationIcon, strctValidationTone, unlockBodyScroll };
7142
+ export type { StrctAlertType, StrctAvatarSize, StrctAvatarStatus, StrctBadgeStatus, StrctButtonSize, StrctButtonVariant, StrctCascadeOption, StrctCellContext, StrctChartAnnotation, StrctChartColor, StrctChartCurve, StrctChartSeries, StrctChartSlot, StrctChartStatus, StrctChartSummaryInfo, StrctChartThreshold, StrctChartType, StrctColumn, StrctCommandItem, StrctConfirmOptions, StrctConfirmTone, StrctDatagridColumn, StrctDatagridColumnState, StrctDatagridFilters, StrctDatagridLabels, StrctDatagridLazyState, StrctDescAlign, StrctDescItem, StrctDiffRow, StrctDonutSegment, StrctDrawerSide, StrctDrawerSize, StrctEmptyVariant, StrctFilterChip, StrctFlowDirection, StrctFlowEdge, StrctFlowNode, StrctFlowOrientation, StrctHeatmapCell, StrctHeatmapSummaryInfo, StrctHotkey, StrctIconBadge, StrctIconName, StrctKnobStatus, StrctLegendItem, StrctLiveLabels, StrctLiveState, StrctLogLine, StrctMediaState, StrctMenuItem, StrctMenuLink, StrctMenuOpenOptions, StrctMenuPlacement, StrctMenuSection, StrctMenubarItem, StrctMetricStatus, StrctModalSize, StrctMode, StrctNotification, StrctOption, StrctOverlayPlacement, StrctPalette, StrctPaletteInfo, StrctProgressSegment, StrctProgressStatus, StrctRailItem, StrctRailStatus, StrctReorderEvent, StrctReorderMoveEvent, StrctRow, StrctRowId, StrctSegmentedOption, StrctSegmentedSize, StrctSignpostPosition, StrctSpeedDialDirection, StrctSpinnerSize, StrctStatus, StrctStatusDotSize, StrctStepPhase, StrctStepState, StrctStepsLabels, StrctTagStatus, StrctThresholds, StrctTimeRange, StrctTimeRangePreset, StrctTimelineState, StrctToast, StrctToastOptions, StrctToastType, StrctTooltipPosition, StrctTourStep, StrctTransferItem, StrctTreeDropEvent, StrctTreeMenuEvent, StrctTreeNodeData, StrctTreeNodeMenuFn, StrctValidationState, StrctValidationStatus, StrctWindowBounds, StrctWindowLabels, StrctWizardDefaults };