@akcelik/strct 0.4.0 → 0.5.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.
@@ -3,8 +3,11 @@ import { OnDestroy, TemplateRef } from '@angular/core';
3
3
  import { SafeHtml } from '@angular/platform-browser';
4
4
  import { ControlValueAccessor } from '@angular/forms';
5
5
 
6
+ /** Available color palettes. */
6
7
  type StrctPalette = 'arctic' | 'ember' | 'sage';
8
+ /** Light or dark mode. */
7
9
  type StrctMode = 'dark' | 'light';
10
+ /** Metadata for a color palette. */
8
11
  interface StrctPaletteInfo {
9
12
  id: StrctPalette;
10
13
  /** Human label, shown in switchers. */
@@ -73,27 +76,34 @@ declare const STRCT_RAW_ICONS: Record<string, string>;
73
76
  declare function registerStrctIcon(name: string, content: string, options?: {
74
77
  raw?: boolean;
75
78
  }): void;
76
- type StrctIconBadge = 'none' | 'ok' | 'warn' | 'crit' | 'off' | 'info';
79
+ /** Icon status dot variants. */
80
+ type StrctIconBadge = 'none' | 'success' | 'warning' | 'critical' | 'off' | 'info';
77
81
  /**
78
- * Inline stroke icon. `<strct-icon name="host" badge="ok" />` renders the host
82
+ * Inline stroke icon. `<strct-icon name="host" badge="success" />` renders the host
79
83
  * glyph with a green status dot (a "running host"). Unknown names render
80
84
  * nothing rather than throwing.
81
85
  */
82
86
  declare class StrctIcon {
83
87
  private readonly sanitizer;
88
+ /** Icon name from the STRCT_ICONS registry. */
84
89
  readonly name: _angular_core.InputSignal<string>;
90
+ /** Icon size in pixels. */
85
91
  readonly size: _angular_core.InputSignal<number>;
92
+ /** Stroke width for outline icons. */
86
93
  readonly strokeWidth: _angular_core.InputSignal<number>;
87
94
  /** Optional status dot overlaid on the glyph (object state). */
88
95
  readonly badge: _angular_core.InputSignal<StrctIconBadge>;
96
+ /** Accessible label for the icon. When empty the icon is hidden from assistive tech. */
97
+ readonly ariaLabel: _angular_core.InputSignal<string>;
89
98
  /** True when the named icon is a full-SVG (raw) icon registered by the app. */
90
99
  protected readonly isRaw: _angular_core.Signal<boolean>;
91
100
  protected readonly svg: _angular_core.Signal<SafeHtml>;
92
101
  protected readonly rawSvg: _angular_core.Signal<SafeHtml>;
93
102
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctIcon, never>;
94
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctIcon, "strct-icon", never, { "name": { "alias": "name"; "required": true; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "strokeWidth": { "alias": "strokeWidth"; "required": false; "isSignal": true; }; "badge": { "alias": "badge"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
103
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctIcon, "strct-icon", never, { "name": { "alias": "name"; "required": true; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "strokeWidth": { "alias": "strokeWidth"; "required": false; "isSignal": true; }; "badge": { "alias": "badge"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
95
104
  }
96
105
 
106
+ /** Overlay positioning strategies. */
97
107
  type StrctOverlayPlacement = 'bottom-start' | 'bottom-end' | 'top-start' | 'top-end' | 'right' | 'left';
98
108
  /**
99
109
  * Positions an overlay panel with `position: fixed` relative to an anchor
@@ -111,10 +121,13 @@ type StrctOverlayPlacement = 'bottom-start' | 'bottom-end' | 'top-start' | 'top-
111
121
  declare class StrctOverlay implements OnDestroy {
112
122
  private readonly el;
113
123
  private readonly zone;
124
+ /** Anchor element for positioning. */
114
125
  readonly anchor: _angular_core.InputSignal<HTMLElement>;
126
+ /** Preferred placement relative to the anchor. */
115
127
  readonly placement: _angular_core.InputSignal<StrctOverlayPlacement>;
116
128
  /** Match the panel width to the anchor (combobox / date / cascade fields). */
117
129
  readonly matchWidth: _angular_core.InputSignal<boolean>;
130
+ /** Gap between anchor and panel in pixels. */
118
131
  readonly gap: _angular_core.InputSignal<number>;
119
132
  private readonly onScrollResize;
120
133
  private bound;
@@ -138,8 +151,13 @@ declare class StrctShell {
138
151
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctShell, never>;
139
152
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctShell, "strct-shell", never, {}, {}, never, ["strct-header", "*", "strct-footer"], true, never>;
140
153
  }
154
+ /** Shared layout state between shell parts. */
155
+ declare class StrctShellService {
156
+ readonly mobileNavOpen: _angular_core.WritableSignal<boolean>;
157
+ }
141
158
  /** Top application bar. Holds brand on the left and actions on the right. */
142
159
  declare class StrctHeader {
160
+ protected readonly shell: StrctShellService;
143
161
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctHeader, never>;
144
162
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctHeader, "strct-header", never, {}, {}, never, ["*"], true, never>;
145
163
  }
@@ -151,6 +169,7 @@ declare class StrctFooter {
151
169
 
152
170
  /** Scrollable left sidebar surface. Holds the icon nav and/or a tree. */
153
171
  declare class StrctVerticalNav {
172
+ protected readonly shell: StrctShellService;
154
173
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctVerticalNav, never>;
155
174
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctVerticalNav, "strct-vertical-nav", never, {}, {}, never, ["*"], true, never>;
156
175
  }
@@ -161,7 +180,9 @@ declare class StrctNav {
161
180
  }
162
181
  /** A single icon tab inside `<strct-nav>`. */
163
182
  declare class StrctNavItem {
183
+ /** Whether the item is active / selected. */
164
184
  readonly active: _angular_core.InputSignal<boolean>;
185
+ /** Label text. */
165
186
  readonly label: _angular_core.InputSignal<string>;
166
187
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctNavItem, never>;
167
188
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctNavItem, "strct-nav-item", never, { "active": { "alias": "active"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
@@ -179,13 +200,17 @@ declare class StrctNavItem {
179
200
  * </strct-login>
180
201
  */
181
202
  declare class StrctLogin {
203
+ /** Maximum width in pixels. */
182
204
  readonly maxWidth: _angular_core.InputSignal<number>;
205
+ /** Enable two-panel split layout. */
183
206
  readonly split: _angular_core.InputSignalWithTransform<boolean, unknown>;
184
207
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctLogin, never>;
185
208
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctLogin, "strct-login", never, { "maxWidth": { "alias": "maxWidth"; "required": false; "isSignal": true; }; "split": { "alias": "split"; "required": false; "isSignal": true; }; }, {}, never, ["[strctLoginAside]", "[strctLoginMain]", "*"], true, never>;
186
209
  }
187
210
 
188
- type StrctButtonVariant = 'primary' | 'danger' | 'outline' | 'flat' | 'neutral';
211
+ /** Button visual variants. */
212
+ type StrctButtonVariant = 'primary' | 'critical' | 'outline' | 'flat' | 'neutral';
213
+ /** Button size variants. */
189
214
  type StrctButtonSize = 'md' | 'sm' | 'mini';
190
215
  /**
191
216
  * Styles a native `<button>` / `<a>` so it stays fully accessible and form-aware.
@@ -198,10 +223,13 @@ type StrctButtonSize = 'md' | 'sm' | 'mini';
198
223
  * <a strct-button variant="flat" size="sm" href="...">Cancel</a>
199
224
  */
200
225
  declare class StrctButton {
226
+ /** Visual variant. */
201
227
  readonly variant: _angular_core.InputSignal<StrctButtonVariant>;
228
+ /** Size variant. */
202
229
  readonly size: _angular_core.InputSignal<StrctButtonSize>;
203
230
  /** Opt in to a filled surface (use sparingly, for the primary action). */
204
231
  readonly solid: _angular_core.InputSignalWithTransform<boolean, unknown>;
232
+ /** Expand to full width. */
205
233
  readonly block: _angular_core.InputSignalWithTransform<boolean, unknown>;
206
234
  /** Square padding for a single-icon button. */
207
235
  readonly iconOnly: _angular_core.InputSignalWithTransform<boolean, unknown>;
@@ -214,9 +242,11 @@ declare class StrctButtonGroup {
214
242
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctButtonGroup, "strct-button-group", never, {}, {}, never, ["*"], true, never>;
215
243
  }
216
244
 
217
- type StrctBadgeStatus = 'neutral' | 'accent' | 'success' | 'warning' | 'danger';
245
+ /** Badge color variants. */
246
+ type StrctBadgeStatus = 'neutral' | 'accent' | 'success' | 'warning' | 'critical';
218
247
  /** Small inline status pill: `<strct-badge status="success">Active</strct-badge>`. */
219
248
  declare class StrctBadge {
249
+ /** Visual status color. */
220
250
  readonly status: _angular_core.InputSignal<StrctBadgeStatus>;
221
251
  /** Opt-in filled style instead of the default outlined style. */
222
252
  readonly solid: _angular_core.InputSignalWithTransform<boolean, unknown>;
@@ -224,48 +254,63 @@ declare class StrctBadge {
224
254
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctBadge, "strct-badge", never, { "status": { "alias": "status"; "required": false; "isSignal": true; }; "solid": { "alias": "solid"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
225
255
  }
226
256
 
227
- type StrctTagStatus = 'neutral' | 'accent' | 'success' | 'warning' | 'danger';
257
+ /** Tag color variants. */
258
+ type StrctTagStatus = 'neutral' | 'accent' | 'success' | 'warning' | 'critical';
228
259
  /**
229
260
  * Compact, optionally removable chip.
230
261
  * <strct-tag status="accent" removable (removed)="drop()">Frontend</strct-tag>
231
262
  */
232
263
  declare class StrctTag {
264
+ /** Visual status color. */
233
265
  readonly status: _angular_core.InputSignal<StrctTagStatus>;
266
+ /** Show a remove button. */
234
267
  readonly removable: _angular_core.InputSignalWithTransform<boolean, unknown>;
268
+ /** Emitted when the user clicks the remove button. */
235
269
  readonly removed: _angular_core.OutputEmitterRef<void>;
236
270
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctTag, never>;
237
271
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctTag, "strct-tag", never, { "status": { "alias": "status"; "required": false; "isSignal": true; }; "removable": { "alias": "removable"; "required": false; "isSignal": true; }; }, { "removed": "removed"; }, never, ["*"], true, never>;
238
272
  }
239
273
 
274
+ /** Avatar size variants. */
240
275
  type StrctAvatarSize = 'sm' | 'md' | 'lg';
276
+ /** Avatar presence status variants. */
241
277
  type StrctAvatarStatus = 'none' | 'online' | 'busy' | 'offline';
242
278
  /**
243
279
  * Circular avatar: an image when `src` is set, otherwise initials from `name`.
244
280
  * <strct-avatar name="Ada Lovelace" status="online" />
245
281
  */
246
282
  declare class StrctAvatar {
283
+ /** Image URL. */
247
284
  readonly src: _angular_core.InputSignal<string>;
285
+ /** Display name (used for initials when src is absent). */
248
286
  readonly name: _angular_core.InputSignal<string>;
287
+ /** Size variant. */
249
288
  readonly size: _angular_core.InputSignal<StrctAvatarSize>;
289
+ /** Visual status color. */
250
290
  readonly status: _angular_core.InputSignal<StrctAvatarStatus>;
251
291
  protected readonly initials: _angular_core.Signal<string>;
252
292
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctAvatar, never>;
253
293
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctAvatar, "strct-avatar", never, { "src": { "alias": "src"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
254
294
  }
255
295
 
256
- type StrctProgressStatus = 'accent' | 'success' | 'warning' | 'danger';
296
+ /** Progress bar color variants. */
297
+ type StrctProgressStatus = 'accent' | 'success' | 'warning' | 'critical';
257
298
  /** Horizontal value/usage bar. `<strct-progress [value]="72" status="warning" />`. */
258
299
  declare class StrctProgress {
300
+ /** Current value. */
259
301
  readonly value: _angular_core.InputSignal<number>;
302
+ /** Visual status color. */
260
303
  readonly status: _angular_core.InputSignal<StrctProgressStatus>;
261
304
  protected readonly clamped: _angular_core.Signal<number>;
262
305
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctProgress, never>;
263
306
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctProgress, "strct-progress", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
264
307
  }
265
308
 
309
+ /** Spinner size variants. */
266
310
  type StrctSpinnerSize = 'sm' | 'md' | 'lg';
267
311
  /** Indeterminate loading ring. `<strct-spinner size="sm" />`. */
268
312
  declare class StrctSpinner {
313
+ /** Size variant. */
269
314
  readonly size: _angular_core.InputSignal<StrctSpinnerSize>;
270
315
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctSpinner, never>;
271
316
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctSpinner, "strct-spinner", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
@@ -277,13 +322,17 @@ declare class StrctSpinner {
277
322
  * <strct-skeleton circle width="40px" height="40px" />
278
323
  */
279
324
  declare class StrctSkeleton {
325
+ /** Width (CSS length). */
280
326
  readonly width: _angular_core.InputSignal<string>;
327
+ /** Height in pixels. */
281
328
  readonly height: _angular_core.InputSignal<string>;
329
+ /** Circle. */
282
330
  readonly circle: _angular_core.InputSignalWithTransform<boolean, unknown>;
283
331
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctSkeleton, never>;
284
332
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctSkeleton, "strct-skeleton", never, { "width": { "alias": "width"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "circle": { "alias": "circle"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
285
333
  }
286
334
 
335
+ /** Direction the speed-dial actions expand. */
287
336
  type StrctSpeedDialDirection = 'up' | 'down' | 'left' | 'right';
288
337
  /**
289
338
  * Floating action button that fans out to reveal actions. Project icon buttons
@@ -295,7 +344,9 @@ type StrctSpeedDialDirection = 'up' | 'down' | 'left' | 'right';
295
344
  */
296
345
  declare class StrctSpeedDial {
297
346
  private readonly host;
347
+ /** Icon name. */
298
348
  readonly icon: _angular_core.InputSignal<string>;
349
+ /** Direction the actions fan out. */
299
350
  readonly direction: _angular_core.InputSignal<StrctSpeedDialDirection>;
300
351
  readonly open: _angular_core.WritableSignal<boolean>;
301
352
  toggle(): void;
@@ -317,14 +368,17 @@ declare class StrctCard {
317
368
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctCard, never>;
318
369
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctCard, "strct-card", never, {}, {}, never, ["*"], true, never>;
319
370
  }
371
+ /** Header section of a {@link StrctCard}. */
320
372
  declare class StrctCardHeader {
321
373
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctCardHeader, never>;
322
374
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctCardHeader, "strct-card-header", never, {}, {}, never, ["*"], true, never>;
323
375
  }
376
+ /** Body section of a {@link StrctCard}. */
324
377
  declare class StrctCardBlock {
325
378
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctCardBlock, never>;
326
379
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctCardBlock, "strct-card-block", never, {}, {}, never, ["*"], true, never>;
327
380
  }
381
+ /** Footer section of a {@link StrctCard}. */
328
382
  declare class StrctCardFooter {
329
383
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctCardFooter, never>;
330
384
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctCardFooter, "strct-card-footer", never, {}, {}, never, ["*"], true, never>;
@@ -337,7 +391,9 @@ declare class StrctAccordion {
337
391
  }
338
392
  /** Collapsible panel with a header. `expanded` is two-way bindable. */
339
393
  declare class StrctAccordionPanel {
394
+ /** Panel heading. */
340
395
  readonly heading: _angular_core.InputSignal<string>;
396
+ /** Whether the panel is open (two-way). */
341
397
  readonly expanded: _angular_core.ModelSignal<boolean>;
342
398
  toggle(): void;
343
399
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctAccordionPanel, never>;
@@ -346,7 +402,9 @@ declare class StrctAccordionPanel {
346
402
 
347
403
  /** A single tab. Place inside `<strct-tabs>`; `label` names its button. */
348
404
  declare class StrctTab {
405
+ /** Label text. */
349
406
  readonly label: _angular_core.InputSignal<string>;
407
+ /** Static disable flag. */
350
408
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
351
409
  private readonly _active;
352
410
  readonly active: _angular_core.Signal<boolean>;
@@ -372,7 +430,7 @@ interface StrctMenuItem {
372
430
  label?: string;
373
431
  icon?: string;
374
432
  /** Destructive styling. */
375
- danger?: boolean;
433
+ critical?: boolean;
376
434
  disabled?: boolean;
377
435
  /** Render a separator instead of an entry (label is ignored). */
378
436
  divider?: boolean;
@@ -391,12 +449,19 @@ interface StrctMenuItem {
391
449
  */
392
450
  declare class StrctMenuPanel {
393
451
  private readonly host;
452
+ /** Menu items to display. */
394
453
  readonly items: _angular_core.InputSignal<StrctMenuItem[]>;
454
+ /** Arbitrary payload passed to item actions. */
395
455
  readonly data: _angular_core.InputSignal<unknown>;
456
+ /** Horizontal position in pixels. */
396
457
  readonly x: _angular_core.InputSignal<number>;
458
+ /** Vertical position in pixels. */
397
459
  readonly y: _angular_core.InputSignal<number>;
460
+ /** Render as a nested submenu panel. */
398
461
  readonly submenu: _angular_core.InputSignalWithTransform<boolean, unknown>;
462
+ /** Emitted when an item is selected. */
399
463
  readonly select: _angular_core.OutputEmitterRef<StrctMenuItem>;
464
+ /** Emitted when the menu requests closing. */
400
465
  readonly close: _angular_core.OutputEmitterRef<void>;
401
466
  /** ArrowLeft inside a submenu — asks the parent to close it. */
402
467
  readonly back: _angular_core.OutputEmitterRef<void>;
@@ -429,8 +494,11 @@ declare class StrctContextMenuTrigger implements OnDestroy {
429
494
  private readonly envInjector;
430
495
  private readonly zone;
431
496
  private readonly doc;
497
+ /** Menu items to display. */
432
498
  readonly items: _angular_core.InputSignal<StrctMenuItem[]>;
499
+ /** Arbitrary payload passed to item actions. */
433
500
  readonly data: _angular_core.InputSignal<unknown>;
501
+ /** Emitted when a menu item is selected. */
434
502
  readonly menuSelect: _angular_core.OutputEmitterRef<StrctMenuItem>;
435
503
  private ref;
436
504
  private readonly onClose;
@@ -471,17 +539,22 @@ interface StrctTreeMenuEvent {
471
539
  * - **Data:** pass a `[node]` object that recurses over its `children` —
472
540
  * used internally by `<strct-tree [nodes]>`.
473
541
  *
474
- * <strct-tree-node label="Group" icon="layers" badge="ok" [(expanded)]="open">
542
+ * <strct-tree-node label="Group" icon="layers" badge="success" [(expanded)]="open">
475
543
  * <strct-tree-node label="Leaf" icon="vm" [active]="true" />
476
544
  * </strct-tree-node>
477
545
  */
478
546
  declare class StrctTreeNode {
479
547
  /** Data-driven node; when set, label/icon/children come from it. */
480
548
  readonly node: _angular_core.InputSignal<StrctTreeNodeData | null>;
549
+ /** Label text. */
481
550
  readonly label: _angular_core.InputSignal<string>;
551
+ /** Icon name. */
482
552
  readonly icon: _angular_core.InputSignal<string | undefined>;
553
+ /** Status dot variant. */
483
554
  readonly badge: _angular_core.InputSignal<StrctIconBadge>;
555
+ /** Whether the item is active / selected. */
484
556
  readonly active: _angular_core.InputSignal<boolean>;
557
+ /** Whether the panel is open (two-way). */
485
558
  readonly expanded: _angular_core.ModelSignal<boolean>;
486
559
  /** Per-node menu resolver (data mode); bubbles down the recursion. */
487
560
  readonly nodeMenu: _angular_core.InputSignal<StrctTreeNodeMenuFn | null>;
@@ -526,6 +599,7 @@ declare class StrctTree {
526
599
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctTree, "strct-tree", never, { "nodes": { "alias": "nodes"; "required": false; "isSignal": true; }; "nodeMenu": { "alias": "nodeMenu"; "required": false; "isSignal": true; }; }, { "nodeActivated": "nodeActivated"; "nodeMenuSelect": "nodeMenuSelect"; }, never, ["*"], true, never>;
527
600
  }
528
601
 
602
+ /** Modal width presets. */
529
603
  type StrctModalSize = 'sm' | 'md' | 'lg';
530
604
  /**
531
605
  * Overlay dialog with two-way `open`:
@@ -539,12 +613,17 @@ type StrctModalSize = 'sm' | 'md' | 'lg';
539
613
  declare class StrctModal {
540
614
  private readonly elementRef;
541
615
  private readonly doc;
616
+ /** Whether the panel is open (two-way). */
542
617
  readonly open: _angular_core.ModelSignal<boolean>;
618
+ /** Dialog title. */
543
619
  readonly title: _angular_core.InputSignal<string>;
620
+ /** Size variant. */
544
621
  readonly size: _angular_core.InputSignal<StrctModalSize>;
622
+ /** Hide the footer slot. */
545
623
  readonly hideFooter: _angular_core.InputSignalWithTransform<boolean, unknown>;
546
624
  /** Allow closing via backdrop click / Escape. */
547
- readonly dismissable: _angular_core.InputSignalWithTransform<boolean, unknown>;
625
+ readonly dismissible: _angular_core.InputSignalWithTransform<boolean, unknown>;
626
+ /** Emitted when the alert is dismissed. */
548
627
  readonly closed: _angular_core.OutputEmitterRef<void>;
549
628
  protected readonly titleId: string;
550
629
  /** Element that had focus before the dialog opened, restored on close. */
@@ -561,7 +640,7 @@ declare class StrctModal {
561
640
  private focusable;
562
641
  private focusInitial;
563
642
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctModal, never>;
564
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctModal, "strct-modal", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "hideFooter": { "alias": "hideFooter"; "required": false; "isSignal": true; }; "dismissable": { "alias": "dismissable"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "closed": "closed"; }, never, ["*", "[strctModalFooter]"], true, never>;
643
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctModal, "strct-modal", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "hideFooter": { "alias": "hideFooter"; "required": false; "isSignal": true; }; "dismissible": { "alias": "dismissible"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "closed": "closed"; }, never, ["*", "[strctModalFooter]"], true, never>;
565
644
  }
566
645
 
567
646
  /**
@@ -569,12 +648,13 @@ declare class StrctModal {
569
648
  * <strct-dropdown align="end">
570
649
  * <button strct-button strctDropdownTrigger>Actions</button>
571
650
  * <strct-dropdown-item>Rename</strct-dropdown-item>
572
- * <strct-dropdown-item danger>Delete</strct-dropdown-item>
651
+ * <strct-dropdown-item critical>Delete</strct-dropdown-item>
573
652
  * </strct-dropdown>
574
653
  */
575
654
  declare class StrctDropdown {
576
655
  private readonly host;
577
- readonly align: _angular_core.InputSignal<"end" | "start">;
656
+ /** Horizontal alignment of the menu. */
657
+ readonly align: _angular_core.InputSignal<"start" | "end">;
578
658
  readonly open: _angular_core.WritableSignal<boolean>;
579
659
  toggle(): void;
580
660
  close(): void;
@@ -585,10 +665,12 @@ declare class StrctDropdown {
585
665
  }
586
666
  /** A selectable row inside a `<strct-dropdown>`. */
587
667
  declare class StrctDropdownItem {
588
- readonly danger: _angular_core.InputSignalWithTransform<boolean, unknown>;
668
+ /** Danger. */
669
+ readonly critical: _angular_core.InputSignalWithTransform<boolean, unknown>;
670
+ /** Static disable flag. */
589
671
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
590
672
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctDropdownItem, never>;
591
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctDropdownItem, "strct-dropdown-item", never, { "danger": { "alias": "danger"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
673
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctDropdownItem, "strct-dropdown-item", never, { "critical": { "alias": "critical"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
592
674
  }
593
675
  /** Thin separator between groups of menu items. */
594
676
  declare class StrctDropdownDivider {
@@ -603,7 +685,7 @@ declare class StrctDropdownDivider {
603
685
  * <div>Right-click here</div>
604
686
  * <ng-container strctContextMenuItems>
605
687
  * <strct-dropdown-item>Open</strct-dropdown-item>
606
- * <strct-dropdown-item danger>Delete</strct-dropdown-item>
688
+ * <strct-dropdown-item critical>Delete</strct-dropdown-item>
607
689
  * </ng-container>
608
690
  * </strct-context-menu>
609
691
  */
@@ -634,6 +716,7 @@ declare class StrctContextMenu {
634
716
  */
635
717
  declare class StrctSubmenu {
636
718
  private readonly host;
719
+ /** Label text. */
637
720
  readonly label: _angular_core.InputSignal<string>;
638
721
  /** Optional leading icon; when omitted the icon column is still reserved so
639
722
  * the label stays aligned with sibling items that do have icons. */
@@ -648,6 +731,7 @@ declare class StrctSubmenu {
648
731
 
649
732
  /** A single wizard step. `label` names it in the step header. */
650
733
  declare class StrctStep {
734
+ /** Label text. */
651
735
  readonly label: _angular_core.InputSignal<string>;
652
736
  /** When false, the wizard's Next / Finish is disabled on this step. */
653
737
  readonly canAdvance: _angular_core.InputSignalWithTransform<boolean, unknown>;
@@ -668,7 +752,9 @@ declare class StrctWizard {
668
752
  readonly submitting: _angular_core.InputSignalWithTransform<boolean, unknown>;
669
753
  /** Show a Cancel button on the left. */
670
754
  readonly cancelable: _angular_core.InputSignalWithTransform<boolean, unknown>;
755
+ /** Emitted when the user clicks Finish. */
671
756
  readonly finished: _angular_core.OutputEmitterRef<void>;
757
+ /** Emitted when the user clicks Cancel. */
672
758
  readonly cancelled: _angular_core.OutputEmitterRef<void>;
673
759
  /** Emits the new step index after a Back / Next move. */
674
760
  readonly stepChange: _angular_core.OutputEmitterRef<number>;
@@ -690,6 +776,7 @@ declare class StrctWizard {
690
776
  * <strct-divider vertical />
691
777
  */
692
778
  declare class StrctDivider {
779
+ /** Render as a vertical rule. */
693
780
  readonly vertical: _angular_core.InputSignalWithTransform<boolean, unknown>;
694
781
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctDivider, never>;
695
782
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctDivider, "strct-divider", never, { "vertical": { "alias": "vertical"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
@@ -702,6 +789,7 @@ declare class StrctBreadcrumb {
702
789
  }
703
790
  /** One crumb. Mark the final one `current`. */
704
791
  declare class StrctBreadcrumbItem {
792
+ /** Mark as the current page. */
705
793
  readonly current: _angular_core.InputSignalWithTransform<boolean, unknown>;
706
794
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctBreadcrumbItem, never>;
707
795
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctBreadcrumbItem, "strct-breadcrumb-item", never, { "current": { "alias": "current"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
@@ -713,8 +801,11 @@ type PageToken = number | 'dots';
713
801
  * <strct-pagination [total]="240" [pageSize]="20" [(page)]="page" />
714
802
  */
715
803
  declare class StrctPagination {
804
+ /** Total number of items. */
716
805
  readonly total: _angular_core.InputSignal<number>;
806
+ /** Rows per page (0 disables paging). */
717
807
  readonly pageSize: _angular_core.InputSignal<number>;
808
+ /** Current page (two-way). */
718
809
  readonly page: _angular_core.ModelSignal<number>;
719
810
  readonly pageCount: _angular_core.Signal<number>;
720
811
  protected readonly pages: _angular_core.Signal<PageToken[]>;
@@ -733,8 +824,11 @@ declare class StrctPagination {
733
824
  * </strct-field>
734
825
  */
735
826
  declare class StrctField {
827
+ /** Label text. */
736
828
  readonly label: _angular_core.InputSignal<string>;
829
+ /** Show a required marker on the label. */
737
830
  readonly required: _angular_core.InputSignalWithTransform<boolean, unknown>;
831
+ /** Helper text shown below the field. */
738
832
  readonly hint: _angular_core.InputSignal<string>;
739
833
  /** Error message (string or first-of array); falsy clears the error state. */
740
834
  readonly error: _angular_core.InputSignal<string | string[] | null | undefined>;
@@ -823,7 +917,9 @@ declare class StrctRadioGroup implements ControlValueAccessor {
823
917
  }
824
918
  /** One option inside a `<strct-radio-group>`. */
825
919
  declare class StrctRadio {
920
+ /** Current value. */
826
921
  readonly value: _angular_core.InputSignal<unknown>;
922
+ /** Static disable flag. */
827
923
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
828
924
  protected readonly group: StrctRadioGroup;
829
925
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctRadio, never>;
@@ -835,10 +931,15 @@ declare class StrctRadio {
835
931
  * <strct-range [min]="0" [max]="100" [(ngModel)]="volume" showValue />
836
932
  */
837
933
  declare class StrctRange implements ControlValueAccessor {
934
+ /** Minimum allowed value. */
838
935
  readonly min: _angular_core.InputSignal<number>;
936
+ /** Maximum allowed value or top of the value axis. */
839
937
  readonly max: _angular_core.InputSignal<number>;
938
+ /** Step increment. */
840
939
  readonly step: _angular_core.InputSignal<number>;
940
+ /** Display the current numeric value. */
841
941
  readonly showValue: _angular_core.InputSignalWithTransform<boolean, unknown>;
942
+ /** Static disable flag. */
842
943
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
843
944
  readonly value: _angular_core.WritableSignal<number>;
844
945
  readonly isDisabled: _angular_core.WritableSignal<boolean>;
@@ -860,8 +961,11 @@ declare class StrctRange implements ControlValueAccessor {
860
961
  * <strct-password [(ngModel)]="pw" meter />
861
962
  */
862
963
  declare class StrctPassword implements ControlValueAccessor {
964
+ /** Placeholder text when empty. */
863
965
  readonly placeholder: _angular_core.InputSignal<string>;
966
+ /** Show a strength meter. */
864
967
  readonly meter: _angular_core.InputSignalWithTransform<boolean, unknown>;
968
+ /** Static disable flag. */
865
969
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
866
970
  readonly value: _angular_core.WritableSignal<string>;
867
971
  readonly revealed: _angular_core.WritableSignal<boolean>;
@@ -887,8 +991,11 @@ declare class StrctPassword implements ControlValueAccessor {
887
991
  * <strct-file [(ngModel)]="files" multiple accept="image/*" />
888
992
  */
889
993
  declare class StrctFile implements ControlValueAccessor {
994
+ /** Multiple. */
890
995
  readonly multiple: _angular_core.InputSignalWithTransform<boolean, unknown>;
996
+ /** Accept. */
891
997
  readonly accept: _angular_core.InputSignal<string>;
998
+ /** Static disable flag. */
892
999
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
893
1000
  readonly files: _angular_core.WritableSignal<File[]>;
894
1001
  readonly dragging: _angular_core.WritableSignal<boolean>;
@@ -911,8 +1018,11 @@ declare class StrctFile implements ControlValueAccessor {
911
1018
 
912
1019
  /** Star rating input. CVA value is the selected count (0–max). */
913
1020
  declare class StrctRating implements ControlValueAccessor {
1021
+ /** Maximum allowed value or top of the value axis. */
914
1022
  readonly max: _angular_core.InputSignal<number>;
1023
+ /** Size variant. */
915
1024
  readonly size: _angular_core.InputSignal<number>;
1025
+ /** Prevent user interaction. */
916
1026
  readonly readonly: _angular_core.InputSignalWithTransform<boolean, unknown>;
917
1027
  readonly value: _angular_core.WritableSignal<number>;
918
1028
  readonly hover: _angular_core.WritableSignal<number>;
@@ -935,7 +1045,9 @@ declare class StrctRating implements ControlValueAccessor {
935
1045
  * <strct-chips [(ngModel)]="labels" placeholder="Add a tag…" />
936
1046
  */
937
1047
  declare class StrctChips implements ControlValueAccessor {
1048
+ /** Placeholder text when empty. */
938
1049
  readonly placeholder: _angular_core.InputSignal<string>;
1050
+ /** Allow duplicate tags. */
939
1051
  readonly allowDuplicates: _angular_core.InputSignal<boolean>;
940
1052
  readonly value: _angular_core.WritableSignal<string[]>;
941
1053
  readonly draft: _angular_core.WritableSignal<string>;
@@ -961,7 +1073,9 @@ declare class StrctChips implements ControlValueAccessor {
961
1073
  */
962
1074
  declare class StrctInputOtp implements ControlValueAccessor {
963
1075
  private readonly host;
1076
+ /** Number of OTP boxes. */
964
1077
  readonly length: _angular_core.InputSignal<number>;
1078
+ /** Mask each box as a password dot. */
965
1079
  readonly masked: _angular_core.InputSignal<boolean>;
966
1080
  readonly slots: _angular_core.WritableSignal<string[]>;
967
1081
  readonly isDisabled: _angular_core.WritableSignal<boolean>;
@@ -982,7 +1096,8 @@ declare class StrctInputOtp implements ControlValueAccessor {
982
1096
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctInputOtp, "strct-input-otp", never, { "length": { "alias": "length"; "required": false; "isSignal": true; }; "masked": { "alias": "masked"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
983
1097
  }
984
1098
 
985
- type StrctKnobStatus = 'accent' | 'success' | 'warning' | 'danger';
1099
+ /** Knob accent color variants. */
1100
+ type StrctKnobStatus = 'accent' | 'success' | 'warning' | 'critical';
986
1101
  /**
987
1102
  * Rotary dial input. Drag (up/down), arrow keys, Home/End or the wheel change
988
1103
  * the value. CVA-compatible.
@@ -990,12 +1105,19 @@ type StrctKnobStatus = 'accent' | 'success' | 'warning' | 'danger';
990
1105
  */
991
1106
  declare class StrctKnob implements ControlValueAccessor {
992
1107
  private readonly elementRef;
1108
+ /** Minimum allowed value. */
993
1109
  readonly min: _angular_core.InputSignal<number>;
1110
+ /** Maximum allowed value or top of the value axis. */
994
1111
  readonly max: _angular_core.InputSignal<number>;
1112
+ /** Step increment. */
995
1113
  readonly step: _angular_core.InputSignal<number>;
1114
+ /** Size variant. */
996
1115
  readonly size: _angular_core.InputSignal<number>;
1116
+ /** Stroke thickness in pixels. */
997
1117
  readonly thickness: _angular_core.InputSignal<number>;
1118
+ /** Visual status color. */
998
1119
  readonly status: _angular_core.InputSignal<StrctKnobStatus>;
1120
+ /** Label text. */
999
1121
  readonly label: _angular_core.InputSignal<string>;
1000
1122
  readonly value: _angular_core.WritableSignal<number>;
1001
1123
  readonly isDisabled: _angular_core.WritableSignal<boolean>;
@@ -1044,7 +1166,9 @@ declare const STRCT_MASKS: {
1044
1166
  * <strct-input-mask mask="HH:HH:HH:HH:HH:HH" uppercase [(ngModel)]="mac" />
1045
1167
  */
1046
1168
  declare class StrctInputMask implements ControlValueAccessor {
1169
+ /** Mask pattern (9=digit, A=letter, H=hex, *=alnum). */
1047
1170
  readonly mask: _angular_core.InputSignal<string>;
1171
+ /** Placeholder text when empty. */
1048
1172
  readonly placeholder: _angular_core.InputSignal<string>;
1049
1173
  /** Upper-case entered letters (handy for hex MAC / WWPN). */
1050
1174
  readonly uppercase: _angular_core.InputSignalWithTransform<boolean, unknown>;
@@ -1064,6 +1188,7 @@ declare class StrctInputMask implements ControlValueAccessor {
1064
1188
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctInputMask, "strct-input-mask", never, { "mask": { "alias": "mask"; "required": true; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "uppercase": { "alias": "uppercase"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1065
1189
  }
1066
1190
 
1191
+ /** One option in a combobox or similar list. */
1067
1192
  interface StrctOption {
1068
1193
  value: unknown;
1069
1194
  label: string;
@@ -1076,8 +1201,12 @@ interface StrctOption {
1076
1201
  declare class StrctCombobox implements ControlValueAccessor {
1077
1202
  private readonly host;
1078
1203
  protected readonly listId: string;
1204
+ /** Available options. */
1079
1205
  readonly options: _angular_core.InputSignal<StrctOption[]>;
1206
+ /** Placeholder text when empty. */
1080
1207
  readonly placeholder: _angular_core.InputSignal<string>;
1208
+ /** Show a skeleton placeholder while options are loading. */
1209
+ readonly loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
1081
1210
  readonly query: _angular_core.WritableSignal<string>;
1082
1211
  readonly value: _angular_core.WritableSignal<unknown>;
1083
1212
  readonly open: _angular_core.WritableSignal<boolean>;
@@ -1103,7 +1232,7 @@ declare class StrctCombobox implements ControlValueAccessor {
1103
1232
  registerOnTouched(fn: () => void): void;
1104
1233
  setDisabledState(isDisabled: boolean): void;
1105
1234
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctCombobox, never>;
1106
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctCombobox, "strct-combobox", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1235
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctCombobox, "strct-combobox", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1107
1236
  }
1108
1237
 
1109
1238
  interface DayCell {
@@ -1117,6 +1246,7 @@ interface DayCell {
1117
1246
  */
1118
1247
  declare class StrctDatepicker implements ControlValueAccessor {
1119
1248
  private readonly host;
1249
+ /** Placeholder text when empty. */
1120
1250
  readonly placeholder: _angular_core.InputSignal<string>;
1121
1251
  protected readonly dow: string[];
1122
1252
  readonly value: _angular_core.WritableSignal<string>;
@@ -1154,6 +1284,7 @@ declare class StrctDatepicker implements ControlValueAccessor {
1154
1284
  */
1155
1285
  declare class StrctColorPicker implements ControlValueAccessor {
1156
1286
  private readonly host;
1287
+ /** Custom palette swatches. */
1157
1288
  readonly swatches: _angular_core.InputSignal<string[]>;
1158
1289
  readonly value: _angular_core.WritableSignal<string>;
1159
1290
  readonly draft: _angular_core.WritableSignal<string>;
@@ -1176,6 +1307,7 @@ declare class StrctColorPicker implements ControlValueAccessor {
1176
1307
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctColorPicker, "strct-color-picker", never, { "swatches": { "alias": "swatches"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1177
1308
  }
1178
1309
 
1310
+ /** One option in a cascade select. */
1179
1311
  interface StrctCascadeOption {
1180
1312
  label: string;
1181
1313
  value?: unknown;
@@ -1192,6 +1324,7 @@ declare abstract class StrctCascadeHost {
1192
1324
  */
1193
1325
  declare class StrctCascadeNode {
1194
1326
  private readonly host;
1327
+ /** Option. */
1195
1328
  readonly option: _angular_core.InputSignal<StrctCascadeOption>;
1196
1329
  readonly open: _angular_core.WritableSignal<boolean>;
1197
1330
  protected readonly hasChildren: _angular_core.Signal<boolean>;
@@ -1207,7 +1340,9 @@ declare class StrctCascadeNode {
1207
1340
  */
1208
1341
  declare class StrctCascadeSelect extends StrctCascadeHost implements ControlValueAccessor {
1209
1342
  private readonly elementRef;
1343
+ /** Available options. */
1210
1344
  readonly options: _angular_core.InputSignal<StrctCascadeOption[]>;
1345
+ /** Placeholder text when empty. */
1211
1346
  readonly placeholder: _angular_core.InputSignal<string>;
1212
1347
  readonly value: _angular_core.WritableSignal<unknown>;
1213
1348
  readonly open: _angular_core.WritableSignal<boolean>;
@@ -1229,12 +1364,14 @@ declare class StrctCascadeSelect extends StrctCascadeHost implements ControlValu
1229
1364
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctCascadeSelect, "strct-cascade-select", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1230
1365
  }
1231
1366
 
1367
+ /** Column definition for the table. */
1232
1368
  interface StrctColumn {
1233
1369
  key: string;
1234
1370
  label: string;
1235
1371
  align?: 'start' | 'center' | 'end';
1236
1372
  width?: string;
1237
1373
  }
1374
+ /** Shorthand for a record-shaped table/datagrid row. */
1238
1375
  type StrctRow = Record<string, unknown>;
1239
1376
  /** Context passed to a per-column cell template. */
1240
1377
  interface StrctCellContext {
@@ -1250,10 +1387,11 @@ interface StrctCellContext {
1250
1387
  * is the directive value; the row, value and column are the template context:
1251
1388
  *
1252
1389
  * <ng-template strctCell="status" let-row let-value="value">
1253
- * <strct-badge [status]="row['ok'] ? 'success' : 'danger'">{{ value }}</strct-badge>
1390
+ * <strct-badge [status]="row['success'] ? 'success' : 'critical'">{{ value }}</strct-badge>
1254
1391
  * </ng-template>
1255
1392
  */
1256
1393
  declare class StrctCellDef {
1394
+ /** Key. */
1257
1395
  readonly key: _angular_core.InputSignal<string>;
1258
1396
  readonly template: TemplateRef<StrctCellContext>;
1259
1397
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctCellDef, never>;
@@ -1265,20 +1403,28 @@ declare class StrctCellDef {
1265
1403
  * <strct-table [columns]="cols" [rows]="data" hover />
1266
1404
  */
1267
1405
  declare class StrctTable {
1406
+ /** Column definitions. */
1268
1407
  readonly columns: _angular_core.InputSignal<StrctColumn[]>;
1408
+ /** Data rows. */
1269
1409
  readonly rows: _angular_core.InputSignal<StrctRow[]>;
1410
+ /** Enable zebra-striping. */
1270
1411
  readonly striped: _angular_core.InputSignalWithTransform<boolean, unknown>;
1412
+ /** Highlight rows on hover. */
1271
1413
  readonly hover: _angular_core.InputSignalWithTransform<boolean, unknown>;
1414
+ /** Message shown when there are no rows. */
1272
1415
  readonly emptyText: _angular_core.InputSignal<string>;
1416
+ /** Show skeleton rows while data is loading. */
1417
+ readonly loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
1273
1418
  private readonly cellDefs;
1274
1419
  private readonly cellMap;
1275
1420
  protected cellTemplate(key: string): TemplateRef<StrctCellContext> | null;
1276
1421
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctTable, never>;
1277
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctTable, "strct-table", never, { "columns": { "alias": "columns"; "required": true; "isSignal": true; }; "rows": { "alias": "rows"; "required": true; "isSignal": true; }; "striped": { "alias": "striped"; "required": false; "isSignal": true; }; "hover": { "alias": "hover"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; }, {}, ["cellDefs"], never, true, never>;
1422
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctTable, "strct-table", never, { "columns": { "alias": "columns"; "required": true; "isSignal": true; }; "rows": { "alias": "rows"; "required": true; "isSignal": true; }; "striped": { "alias": "striped"; "required": false; "isSignal": true; }; "hover": { "alias": "hover"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; }, {}, ["cellDefs"], never, true, never>;
1278
1423
  }
1279
1424
 
1280
1425
  /** Resolves a stable identity for a row: a property key, or a function. */
1281
1426
  type StrctRowId = string | ((row: StrctRow) => unknown);
1427
+ /** Column definition for the datagrid. */
1282
1428
  interface StrctDatagridColumn {
1283
1429
  key: string;
1284
1430
  label: string;
@@ -1309,23 +1455,32 @@ declare class StrctDatagridActionBar {
1309
1455
  * </strct-datagrid>
1310
1456
  */
1311
1457
  declare class StrctDatagrid {
1458
+ /** Column definitions. */
1312
1459
  readonly columns: _angular_core.InputSignal<StrctDatagridColumn[]>;
1460
+ /** Data rows. */
1313
1461
  readonly rows: _angular_core.InputSignal<StrctRow[]>;
1462
+ /** Rows per page (0 disables paging). */
1314
1463
  readonly pageSize: _angular_core.InputSignal<number>;
1464
+ /** Enable row selection. */
1315
1465
  readonly selectable: _angular_core.InputSignalWithTransform<boolean, unknown>;
1316
1466
  /** Expand a row in place to reveal its detail template below it. */
1317
1467
  readonly expandable: _angular_core.InputSignalWithTransform<boolean, unknown>;
1318
1468
  /** Collapse the grid to a single column and open a side detail pane for the
1319
1469
  * clicked row (distinct from {@link expandable}). */
1320
1470
  readonly detailPane: _angular_core.InputSignalWithTransform<boolean, unknown>;
1471
+ /** Compact density mode. */
1321
1472
  readonly compact: _angular_core.InputSignalWithTransform<boolean, unknown>;
1473
+ /** Message shown when there are no rows. */
1322
1474
  readonly emptyText: _angular_core.InputSignal<string>;
1475
+ /** Show skeleton rows while data is loading. */
1476
+ readonly loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
1323
1477
  /**
1324
1478
  * Stable row identity (property key or function). Set this for live-refreshing
1325
1479
  * data so selection, expansion and the active detail row survive re-fetches
1326
1480
  * that replace the row objects. Defaults to object identity.
1327
1481
  */
1328
1482
  readonly rowId: _angular_core.InputSignal<StrctRowId | null>;
1483
+ /** Emitted when the selection changes. */
1329
1484
  readonly selectionChange: _angular_core.OutputEmitterRef<StrctRow[]>;
1330
1485
  protected readonly detailDef: _angular_core.Signal<StrctRowDetailDef | undefined>;
1331
1486
  protected readonly actionBarDef: _angular_core.Signal<StrctDatagridActionBar | undefined>;
@@ -1373,10 +1528,11 @@ declare class StrctDatagrid {
1373
1528
  private commitSelection;
1374
1529
  private compare;
1375
1530
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctDatagrid, never>;
1376
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctDatagrid, "strct-datagrid", never, { "columns": { "alias": "columns"; "required": true; "isSignal": true; }; "rows": { "alias": "rows"; "required": true; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "expandable": { "alias": "expandable"; "required": false; "isSignal": true; }; "detailPane": { "alias": "detailPane"; "required": false; "isSignal": true; }; "compact": { "alias": "compact"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "rowId": { "alias": "rowId"; "required": false; "isSignal": true; }; }, { "selectionChange": "selectionChange"; }, ["detailDef", "actionBarDef", "cellDefs"], ["[strctDatagridActionBar]", "[strctDatagridActions]"], true, never>;
1531
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctDatagrid, "strct-datagrid", never, { "columns": { "alias": "columns"; "required": true; "isSignal": true; }; "rows": { "alias": "rows"; "required": true; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "expandable": { "alias": "expandable"; "required": false; "isSignal": true; }; "detailPane": { "alias": "detailPane"; "required": false; "isSignal": true; }; "compact": { "alias": "compact"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "rowId": { "alias": "rowId"; "required": false; "isSignal": true; }; }, { "selectionChange": "selectionChange"; }, ["detailDef", "actionBarDef", "cellDefs"], ["[strctDatagridActionBar]", "[strctDatagridActions]"], true, never>;
1377
1532
  }
1378
1533
 
1379
- type StrctTimelineState = 'default' | 'current' | 'success' | 'warning' | 'danger';
1534
+ /** Timeline node state colors. */
1535
+ type StrctTimelineState = 'default' | 'current' | 'success' | 'warning' | 'critical';
1380
1536
  /** Vertical timeline container. Wraps `<strct-timeline-item>` children. */
1381
1537
  declare class StrctTimeline {
1382
1538
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctTimeline, never>;
@@ -1384,7 +1540,9 @@ declare class StrctTimeline {
1384
1540
  }
1385
1541
  /** A timeline entry: a node on the rail plus a title and projected body. */
1386
1542
  declare class StrctTimelineItem {
1543
+ /** Dialog title. */
1387
1544
  readonly title: _angular_core.InputSignal<string>;
1545
+ /** State. */
1388
1546
  readonly state: _angular_core.InputSignal<StrctTimelineState>;
1389
1547
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctTimelineItem, never>;
1390
1548
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctTimelineItem, "strct-timeline-item", never, { "title": { "alias": "title"; "required": true; "isSignal": true; }; "state": { "alias": "state"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
@@ -1397,20 +1555,27 @@ declare class StrctStack {
1397
1555
  }
1398
1556
  /** A label + value row. The value is projected content. */
1399
1557
  declare class StrctStackItem {
1558
+ /** Label text. */
1400
1559
  readonly label: _angular_core.InputSignal<string>;
1401
1560
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctStackItem, never>;
1402
1561
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctStackItem, "strct-stack-item", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1403
1562
  }
1404
1563
 
1405
- type StrctChartStatus = 'accent' | 'success' | 'warning' | 'danger';
1564
+ /** Chart / gauge / sparkline status colors. */
1565
+ type StrctChartStatus = 'accent' | 'success' | 'warning' | 'critical';
1406
1566
  /**
1407
1567
  * Tiny inline trend line. `<strct-sparkline [data]="[3,5,4,8,6,9]" area />`.
1408
1568
  */
1409
1569
  declare class StrctSparkline {
1570
+ /** Data array. */
1410
1571
  readonly data: _angular_core.InputSignal<number[]>;
1572
+ /** Visual status color. */
1411
1573
  readonly status: _angular_core.InputSignal<StrctChartStatus>;
1574
+ /** Fill the area under the line. */
1412
1575
  readonly area: _angular_core.InputSignalWithTransform<boolean, unknown>;
1576
+ /** Width (CSS length). */
1413
1577
  readonly width: _angular_core.InputSignal<number>;
1578
+ /** Height in pixels. */
1414
1579
  readonly height: _angular_core.InputSignal<number>;
1415
1580
  protected readonly color: _angular_core.Signal<string>;
1416
1581
  private readonly points;
@@ -1420,16 +1585,22 @@ declare class StrctSparkline {
1420
1585
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctSparkline, "strct-sparkline", never, { "data": { "alias": "data"; "required": true; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; "area": { "alias": "area"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1421
1586
  }
1422
1587
 
1588
+ /** Chart rendering types (line, area, bar). */
1423
1589
  type StrctChartType = 'line' | 'area' | 'bar';
1424
1590
  /**
1425
1591
  * Single-series chart (line / area / bar). Dependency-free SVG, token-coloured.
1426
1592
  * <strct-chart [data]="cpu" type="area" [labels]="hours" status="warning" />
1427
1593
  */
1428
1594
  declare class StrctChart {
1595
+ /** Data array. */
1429
1596
  readonly data: _angular_core.InputSignal<number[]>;
1597
+ /** Visual type / variant. */
1430
1598
  readonly type: _angular_core.InputSignal<StrctChartType>;
1599
+ /** X-axis labels. */
1431
1600
  readonly labels: _angular_core.InputSignal<string[]>;
1601
+ /** Visual status color. */
1432
1602
  readonly status: _angular_core.InputSignal<StrctChartStatus>;
1603
+ /** Height in pixels. */
1433
1604
  readonly height: _angular_core.InputSignal<number>;
1434
1605
  /** Override the top of the value axis (defaults to the data max + headroom). */
1435
1606
  readonly max: _angular_core.InputSignal<number | null>;
@@ -1460,6 +1631,7 @@ declare class StrctChart {
1460
1631
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctChart, "strct-chart", never, { "data": { "alias": "data"; "required": true; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1461
1632
  }
1462
1633
 
1634
+ /** A single weighted slice of a donut chart. */
1463
1635
  interface StrctDonutSegment {
1464
1636
  value: number;
1465
1637
  label?: string;
@@ -1471,10 +1643,15 @@ interface StrctDonutSegment {
1471
1643
  * centerValue="8" centerLabel="VMs" />
1472
1644
  */
1473
1645
  declare class StrctDonut {
1646
+ /** Weighted segments. */
1474
1647
  readonly segments: _angular_core.InputSignal<StrctDonutSegment[]>;
1648
+ /** Size variant. */
1475
1649
  readonly size: _angular_core.InputSignal<number>;
1650
+ /** Stroke thickness in pixels. */
1476
1651
  readonly thickness: _angular_core.InputSignal<number>;
1652
+ /** Value shown in the donut center. */
1477
1653
  readonly centerValue: _angular_core.InputSignal<string | number>;
1654
+ /** Label shown in the donut center. */
1478
1655
  readonly centerLabel: _angular_core.InputSignal<string>;
1479
1656
  protected readonly half: _angular_core.Signal<number>;
1480
1657
  protected readonly radius: _angular_core.Signal<number>;
@@ -1493,10 +1670,15 @@ declare class StrctDonut {
1493
1670
  * <strct-gauge [value]="72" status="warning" label="CPU" />
1494
1671
  */
1495
1672
  declare class StrctGauge {
1673
+ /** Current value. */
1496
1674
  readonly value: _angular_core.InputSignal<number>;
1675
+ /** Visual status color. */
1497
1676
  readonly status: _angular_core.InputSignal<StrctChartStatus>;
1677
+ /** Label text. */
1498
1678
  readonly label: _angular_core.InputSignal<string>;
1679
+ /** Size variant. */
1499
1680
  readonly size: _angular_core.InputSignal<number>;
1681
+ /** Stroke thickness in pixels. */
1500
1682
  readonly thickness: _angular_core.InputSignal<number>;
1501
1683
  protected readonly clamped: _angular_core.Signal<number>;
1502
1684
  protected readonly half: _angular_core.Signal<number>;
@@ -1509,17 +1691,22 @@ declare class StrctGauge {
1509
1691
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctGauge, "strct-gauge", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "thickness": { "alias": "thickness"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1510
1692
  }
1511
1693
 
1512
- type StrctAlertType = 'info' | 'success' | 'warning' | 'danger';
1694
+ /** Alert visual types. */
1695
+ type StrctAlertType = 'info' | 'success' | 'warning' | 'critical';
1513
1696
  /** Inline contextual banner. `<strct-alert type="warning">…</strct-alert>`. */
1514
1697
  declare class StrctAlert {
1698
+ /** Visual type / variant. */
1515
1699
  readonly type: _angular_core.InputSignal<StrctAlertType>;
1700
+ /** Show a dismiss button. */
1516
1701
  readonly closable: _angular_core.InputSignalWithTransform<boolean, unknown>;
1702
+ /** Emitted when the alert is dismissed. */
1517
1703
  readonly closed: _angular_core.OutputEmitterRef<void>;
1518
- protected readonly icon: _angular_core.Signal<"info" | "success" | "warning" | "danger">;
1704
+ protected readonly icon: _angular_core.Signal<"success" | "warning" | "critical" | "info">;
1519
1705
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctAlert, never>;
1520
1706
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctAlert, "strct-alert", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "closable": { "alias": "closable"; "required": false; "isSignal": true; }; }, { "closed": "closed"; }, never, ["*"], true, never>;
1521
1707
  }
1522
1708
 
1709
+ /** Tooltip placement relative to the host element. */
1523
1710
  type StrctTooltipPosition = 'top' | 'bottom' | 'left' | 'right';
1524
1711
  /**
1525
1712
  * Lightweight hover/focus tooltip. Renders a fixed-positioned bubble so it is
@@ -1531,7 +1718,9 @@ declare class StrctTooltip {
1531
1718
  private readonly renderer;
1532
1719
  private readonly doc;
1533
1720
  private bubble;
1721
+ /** Tooltip text. */
1534
1722
  readonly strctTooltip: _angular_core.InputSignal<string>;
1723
+ /** Tooltip placement relative to the host. */
1535
1724
  readonly tooltipPosition: _angular_core.InputSignal<StrctTooltipPosition>;
1536
1725
  protected show(): void;
1537
1726
  protected hide(): void;
@@ -1540,6 +1729,7 @@ declare class StrctTooltip {
1540
1729
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<StrctTooltip, "[strctTooltip]", never, { "strctTooltip": { "alias": "strctTooltip"; "required": true; "isSignal": true; }; "tooltipPosition": { "alias": "tooltipPosition"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1541
1730
  }
1542
1731
 
1732
+ /** Signpost popover placement. */
1543
1733
  type StrctSignpostPosition = 'top' | 'bottom' | 'left' | 'right';
1544
1734
  /**
1545
1735
  * A click-triggered popover with an arrow, for contextual help / detail.
@@ -1551,6 +1741,7 @@ type StrctSignpostPosition = 'top' | 'bottom' | 'left' | 'right';
1551
1741
  */
1552
1742
  declare class StrctSignpost {
1553
1743
  private readonly host;
1744
+ /** Popover placement relative to the trigger. */
1554
1745
  readonly position: _angular_core.InputSignal<StrctSignpostPosition>;
1555
1746
  readonly open: _angular_core.WritableSignal<boolean>;
1556
1747
  toggle(): void;
@@ -1562,7 +1753,9 @@ declare class StrctSignpost {
1562
1753
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctSignpost, "strct-signpost", never, { "position": { "alias": "position"; "required": false; "isSignal": true; }; }, {}, never, ["[strctSignpostTrigger]", "*"], true, never>;
1563
1754
  }
1564
1755
 
1565
- type StrctToastType = 'info' | 'success' | 'warning' | 'danger';
1756
+ /** Toast visual types. */
1757
+ type StrctToastType = 'info' | 'success' | 'warning' | 'critical';
1758
+ /** A single toast notification. */
1566
1759
  interface StrctToast {
1567
1760
  id: number;
1568
1761
  type: StrctToastType;
@@ -1570,6 +1763,7 @@ interface StrctToast {
1570
1763
  /** Auto-dismiss after this many ms; 0 keeps it until dismissed. */
1571
1764
  duration: number;
1572
1765
  }
1766
+ /** Options passed when creating a toast. */
1573
1767
  interface StrctToastOptions {
1574
1768
  type?: StrctToastType;
1575
1769
  duration?: number;
@@ -1587,7 +1781,7 @@ declare class StrctToastService {
1587
1781
  info(message: string, duration?: number): number;
1588
1782
  success(message: string, duration?: number): number;
1589
1783
  warning(message: string, duration?: number): number;
1590
- danger(message: string, duration?: number): number;
1784
+ critical(message: string, duration?: number): number;
1591
1785
  dismiss(id: number): void;
1592
1786
  clear(): void;
1593
1787
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctToastService, never>;
@@ -1601,5 +1795,5 @@ declare class StrctToastOutlet {
1601
1795
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctToastOutlet, "strct-toast-outlet", never, {}, {}, never, never, true, never>;
1602
1796
  }
1603
1797
 
1604
- export { STRCT_ICONS, STRCT_ICON_GROUPS, STRCT_MASKS, STRCT_PALETTES, STRCT_RAW_ICONS, StrctAccordion, StrctAccordionPanel, StrctAlert, StrctAvatar, StrctBadge, StrctBreadcrumb, StrctBreadcrumbItem, StrctButton, StrctButtonGroup, StrctCard, StrctCardBlock, StrctCardFooter, StrctCardHeader, StrctCascadeHost, StrctCascadeNode, StrctCascadeSelect, StrctCellDef, StrctChart, StrctCheckbox, StrctChips, StrctColorPicker, StrctCombobox, StrctContextMenu, StrctContextMenuTrigger, StrctDatagrid, StrctDatagridActionBar, StrctDatepicker, StrctDivider, StrctDonut, StrctDropdown, StrctDropdownDivider, StrctDropdownItem, StrctField, StrctFile, StrctFooter, StrctGauge, StrctHeader, StrctIcon, StrctInput, StrctInputMask, StrctInputOtp, StrctKnob, StrctLogin, StrctMenuPanel, StrctModal, StrctNav, StrctNavItem, StrctOverlay, StrctPagination, StrctPassword, StrctProgress, StrctRadio, StrctRadioGroup, StrctRange, StrctRating, StrctRowDetailDef, StrctShell, StrctSignpost, StrctSkeleton, StrctSparkline, StrctSpeedDial, StrctSpinner, StrctStack, StrctStackItem, StrctStep, StrctSubmenu, StrctTab, StrctTable, StrctTabs, StrctTag, StrctThemeService, StrctThemeSwitcher, StrctTimeline, StrctTimelineItem, StrctToastOutlet, StrctToastService, StrctToggle, StrctTooltip, StrctTree, StrctTreeNode, StrctVerticalNav, StrctWizard, registerStrctIcon };
1798
+ export { STRCT_ICONS, STRCT_ICON_GROUPS, STRCT_MASKS, STRCT_PALETTES, STRCT_RAW_ICONS, StrctAccordion, StrctAccordionPanel, StrctAlert, StrctAvatar, StrctBadge, StrctBreadcrumb, StrctBreadcrumbItem, StrctButton, StrctButtonGroup, StrctCard, StrctCardBlock, StrctCardFooter, StrctCardHeader, StrctCascadeHost, StrctCascadeNode, StrctCascadeSelect, StrctCellDef, StrctChart, StrctCheckbox, StrctChips, StrctColorPicker, StrctCombobox, StrctContextMenu, StrctContextMenuTrigger, StrctDatagrid, StrctDatagridActionBar, StrctDatepicker, StrctDivider, StrctDonut, StrctDropdown, StrctDropdownDivider, StrctDropdownItem, StrctField, StrctFile, StrctFooter, StrctGauge, StrctHeader, StrctIcon, StrctInput, StrctInputMask, StrctInputOtp, StrctKnob, StrctLogin, StrctMenuPanel, StrctModal, StrctNav, StrctNavItem, StrctOverlay, StrctPagination, StrctPassword, StrctProgress, StrctRadio, StrctRadioGroup, StrctRange, StrctRating, StrctRowDetailDef, StrctShell, StrctShellService, StrctSignpost, StrctSkeleton, StrctSparkline, StrctSpeedDial, StrctSpinner, StrctStack, StrctStackItem, StrctStep, StrctSubmenu, StrctTab, StrctTable, StrctTabs, StrctTag, StrctThemeService, StrctThemeSwitcher, StrctTimeline, StrctTimelineItem, StrctToastOutlet, StrctToastService, StrctToggle, StrctTooltip, StrctTree, StrctTreeNode, StrctVerticalNav, StrctWizard, registerStrctIcon };
1605
1799
  export type { StrctAlertType, StrctAvatarSize, StrctAvatarStatus, StrctBadgeStatus, StrctButtonSize, StrctButtonVariant, StrctCascadeOption, StrctCellContext, StrctChartStatus, StrctChartType, StrctColumn, StrctDatagridColumn, StrctDonutSegment, StrctIconBadge, StrctKnobStatus, StrctMenuItem, StrctModalSize, StrctMode, StrctOption, StrctOverlayPlacement, StrctPalette, StrctPaletteInfo, StrctProgressStatus, StrctRow, StrctRowId, StrctSignpostPosition, StrctSpeedDialDirection, StrctSpinnerSize, StrctTagStatus, StrctTimelineState, StrctToast, StrctToastOptions, StrctToastType, StrctTooltipPosition, StrctTreeMenuEvent, StrctTreeNodeData, StrctTreeNodeMenuFn };