@akcelik/strct 5.3.0 → 5.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@akcelik/strct",
3
- "version": "5.3.0",
3
+ "version": "5.5.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",
@@ -937,6 +937,22 @@ declare class StrctProgress {
937
937
  readonly valueText: _angular_core.InputSignal<string>;
938
938
  /** A quiet line under the bar — "219 GB free across 2 nodes". */
939
939
  readonly caption: _angular_core.InputSignal<string>;
940
+ /**
941
+ * The caption's tone. A critical capacity line's note — "2 GB left after the
942
+ * tightest node" — is the warning; `--t3` says it is an aside.
943
+ */
944
+ readonly captionStatus: _angular_core.InputSignal<StrctProgressStatus | null>;
945
+ /**
946
+ * The bar's accessible name, when the visible `label` is not it: a column of
947
+ * per-cluster memory bars would otherwise all be named "Memory". Defaults to
948
+ * `label`.
949
+ */
950
+ readonly ariaLabel: _angular_core.InputSignal<string>;
951
+ /**
952
+ * Where `showValue` puts the number: on its own row above the track, or
953
+ * beside it — which is what a bar inside a table cell wants.
954
+ */
955
+ readonly valuePosition: _angular_core.InputSignal<"end" | "top">;
940
956
  /** Running, but with no percentage to report. */
941
957
  readonly indeterminate: _angular_core.InputSignalWithTransform<boolean, unknown>;
942
958
  /** Stack several fills (used now + what would arrive); clamped to 100 total. */
@@ -960,7 +976,7 @@ declare class StrctProgress {
960
976
  /** Status after applying thresholds (falls back to `status` when none set). */
961
977
  protected readonly resolvedStatus: _angular_core.Signal<StrctProgressStatus>;
962
978
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctProgress, never>;
963
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctProgress, "strct-progress", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; "visibleLabel": { "alias": "visibleLabel"; "required": false; "isSignal": true; }; "showValue": { "alias": "showValue"; "required": false; "isSignal": true; }; "valueText": { "alias": "valueText"; "required": false; "isSignal": true; }; "caption": { "alias": "caption"; "required": false; "isSignal": true; }; "indeterminate": { "alias": "indeterminate"; "required": false; "isSignal": true; }; "segments": { "alias": "segments"; "required": false; "isSignal": true; }; "thresholds": { "alias": "thresholds"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
979
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctProgress, "strct-progress", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; "visibleLabel": { "alias": "visibleLabel"; "required": false; "isSignal": true; }; "showValue": { "alias": "showValue"; "required": false; "isSignal": true; }; "valueText": { "alias": "valueText"; "required": false; "isSignal": true; }; "caption": { "alias": "caption"; "required": false; "isSignal": true; }; "captionStatus": { "alias": "captionStatus"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "valuePosition": { "alias": "valuePosition"; "required": false; "isSignal": true; }; "indeterminate": { "alias": "indeterminate"; "required": false; "isSignal": true; }; "segments": { "alias": "segments"; "required": false; "isSignal": true; }; "thresholds": { "alias": "thresholds"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
964
980
  }
965
981
 
966
982
  /** Spinner size variants. */
@@ -5034,6 +5050,16 @@ interface StrctFlowEdge {
5034
5050
  style?: 'solid' | 'dashed';
5035
5051
  animated?: boolean;
5036
5052
  }
5053
+ /**
5054
+ * A column of a `fan-out` / `tree`, when a heading alone is not enough: a
5055
+ * column that no node lands in is still part of the answer — "Lands on: no
5056
+ * other member" — so it is drawn with its note in it.
5057
+ */
5058
+ interface StrctFlowColumn {
5059
+ heading: string;
5060
+ /** What the column says when nothing is in it. Empty keeps it undrawn. */
5061
+ emptyText?: string;
5062
+ }
5037
5063
  /** One endpoint in a `StrctFlow`. */
5038
5064
  interface StrctFlowNode {
5039
5065
  /** Stable identity (used as the @for track key). */
@@ -5048,6 +5074,12 @@ interface StrctFlowNode {
5048
5074
  status?: StrctStatus;
5049
5075
  /** Which column this node sits in (`fan-out`). Derived from depth in `tree`. */
5050
5076
  column?: number;
5077
+ /**
5078
+ * How far the node's `status` reaches. `border` (the default) tints the
5079
+ * outline; `surface` tints the whole box — for a node that *is* the finding,
5080
+ * like a blast radius's "Nowhere".
5081
+ */
5082
+ emphasis?: 'border' | 'surface';
5051
5083
  /** Anything the node template needs — chips, a bar, a count. */
5052
5084
  data?: unknown;
5053
5085
  }
@@ -5091,8 +5123,13 @@ declare class StrctFlow {
5091
5123
  readonly layout: _angular_core.InputSignal<"tree" | "chain" | "fan-out">;
5092
5124
  /** The edges of a fan-out / tree. `null` keeps the consecutive chain. */
5093
5125
  readonly edges: _angular_core.InputSignal<StrctFlowEdge[] | null>;
5094
- /** Column headings, in order. */
5095
- readonly columns: _angular_core.InputSignal<string[] | null>;
5126
+ /**
5127
+ * Column headings, in order — a string, or a `{ heading, emptyText }` for a
5128
+ * column that must be drawn even when no node lands in it.
5129
+ */
5130
+ readonly columns: _angular_core.InputSignal<readonly (string | StrctFlowColumn)[] | null>;
5131
+ /** The columns as declared, normalised. */
5132
+ private readonly columnDefs;
5096
5133
  private readonly host;
5097
5134
  private readonly destroyRef;
5098
5135
  protected readonly nodeTpl: _angular_core.Signal<TemplateRef<any> | undefined>;
@@ -5102,6 +5139,7 @@ declare class StrctFlow {
5102
5139
  protected readonly columnsView: _angular_core.Signal<{
5103
5140
  index: number;
5104
5141
  heading: string;
5142
+ emptyText: string;
5105
5143
  nodes: StrctFlowNode[];
5106
5144
  }[]>;
5107
5145
  /** What a node says to assistive tech: itself, then where it leads. */
@@ -5164,10 +5202,27 @@ declare class StrctMetricTile {
5164
5202
  readonly href: _angular_core.InputSignal<string | null>;
5165
5203
  /** Makes the whole tile a control that emits `activated`. */
5166
5204
  readonly interactive: _angular_core.InputSignalWithTransform<boolean, unknown>;
5205
+ /**
5206
+ * What a plain click on an `href` tile does. `browser` follows the link, as
5207
+ * today. `app` belongs to a single-page app: the click is prevented and
5208
+ * `activated` fires, so the router navigates and the page is not reloaded —
5209
+ * while a middle click or a modified one (Ctrl / Cmd / Shift / Alt) still
5210
+ * opens the link the way the browser would, because the tile is a real
5211
+ * link, not a button painted like one.
5212
+ */
5213
+ readonly navigate: _angular_core.InputSignal<"browser" | "app">;
5167
5214
  /** Emitted when an `interactive` tile is activated. */
5168
5215
  readonly activated: _angular_core.OutputEmitterRef<void>;
5169
5216
  /** The link / button's name: the KPI and its value, since the tile is the target. */
5170
5217
  protected readonly hitLabel: _angular_core.Signal<string>;
5218
+ /**
5219
+ * A plain primary click on an `href` tile, when `navigate="app"`: the
5220
+ * browser's own navigation is prevented and `activated` carries it, so a
5221
+ * single-page app routes instead of reloading. Anything the browser treats
5222
+ * as "open this somewhere else" — a middle click, Ctrl / Cmd / Shift / Alt,
5223
+ * or a link with a target — is left alone.
5224
+ */
5225
+ protected onHrefClick(event: MouseEvent): void;
5171
5226
  /** Change indicator; sign drives the arrow + colour. Null hides it. */
5172
5227
  readonly delta: _angular_core.InputSignal<number | null>;
5173
5228
  /** Suffix for the delta number. */
@@ -5192,7 +5247,7 @@ declare class StrctMetricTile {
5192
5247
  protected readonly deltaTone: _angular_core.Signal<"flat" | "up" | "down">;
5193
5248
  protected readonly sparkStatus: _angular_core.Signal<StrctChartStatus>;
5194
5249
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctMetricTile, never>;
5195
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctMetricTile, "strct-metric-tile", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": true; "isSignal": true; }; "unit": { "alias": "unit"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; "captionStatus": { "alias": "captionStatus"; "required": false; "isSignal": true; }; "href": { "alias": "href"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; "delta": { "alias": "delta"; "required": false; "isSignal": true; }; "deltaSuffix": { "alias": "deltaSuffix"; "required": false; "isSignal": true; }; "deltaAriaLabel": { "alias": "deltaAriaLabel"; "required": false; "isSignal": true; }; "invertDelta": { "alias": "invertDelta"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "caption": { "alias": "caption"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; }, { "activated": "activated"; }, never, ["[strctMetricMeter]"], true, never>;
5250
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctMetricTile, "strct-metric-tile", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": true; "isSignal": true; }; "unit": { "alias": "unit"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; "captionStatus": { "alias": "captionStatus"; "required": false; "isSignal": true; }; "href": { "alias": "href"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; "navigate": { "alias": "navigate"; "required": false; "isSignal": true; }; "delta": { "alias": "delta"; "required": false; "isSignal": true; }; "deltaSuffix": { "alias": "deltaSuffix"; "required": false; "isSignal": true; }; "deltaAriaLabel": { "alias": "deltaAriaLabel"; "required": false; "isSignal": true; }; "invertDelta": { "alias": "invertDelta"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "caption": { "alias": "caption"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; }, { "activated": "activated"; }, never, ["[strctMetricMeter]"], true, never>;
5196
5251
  }
5197
5252
 
5198
5253
  /**
@@ -5221,11 +5276,20 @@ declare class StrctHero {
5221
5276
  /** Tighter padding for secondary placements. */
5222
5277
  readonly dense: _angular_core.InputSignalWithTransform<boolean, unknown>;
5223
5278
  /**
5224
- * Opt into a polite live region (role="status") for banners whose content
5225
- * updates after load; static banners should leave this off. Critical heroes
5226
- * are always role="alert" regardless.
5279
+ * How the banner announces itself. `true` opts a non-critical hero into a
5280
+ * polite live region (`role="status"`), for content that updates after load.
5281
+ * `'polite'` and `'assertive'` say it outright, whatever the status — a page
5282
+ * that renders its verdict on navigation wants `'polite'`, so a critical
5283
+ * hero does not interrupt on every load.
5227
5284
  */
5228
- readonly live: _angular_core.InputSignalWithTransform<boolean, unknown>;
5285
+ readonly live: _angular_core.InputSignalWithTransform<boolean | "polite" | "assertive", unknown>;
5286
+ /**
5287
+ * A critical hero interrupts by default, because it usually appears in
5288
+ * answer to something the user did. A page that renders a verdict on
5289
+ * navigation would interrupt on every load instead, so `live="polite"` makes
5290
+ * it a `status`; `live="assertive"` asks for `alert` whatever the status.
5291
+ */
5292
+ protected readonly liveRole: _angular_core.Signal<"status" | "alert" | null>;
5229
5293
  protected readonly headingId: string;
5230
5294
  protected readonly resolvedIcon: _angular_core.Signal<string>;
5231
5295
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctHero, never>;
@@ -5439,6 +5503,12 @@ declare class StrctEmptyState {
5439
5503
  /** Override the preset tone (neutral / warning / critical / accent). */
5440
5504
  readonly tone: _angular_core.InputSignal<string>;
5441
5505
  readonly title: _angular_core.InputSignal<string>;
5506
+ /**
5507
+ * Which heading element the title is. `null` renders a `<p>` — what a
5508
+ * loading state inside a card wants, since it should not add a heading to
5509
+ * the page outline.
5510
+ */
5511
+ readonly titleLevel: _angular_core.InputSignal<2 | 3 | 5 | 4 | 6 | null>;
5442
5512
  /**
5443
5513
  * `sm` is the inline row a 240px frame wants: a 16px icon with the title and
5444
5514
  * description on one line. A page-sized empty state stays `md`.
@@ -5448,7 +5518,7 @@ declare class StrctEmptyState {
5448
5518
  protected readonly resolvedIcon: _angular_core.Signal<string>;
5449
5519
  protected readonly toneClass: _angular_core.Signal<string>;
5450
5520
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctEmptyState, never>;
5451
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctEmptyState, "strct-empty-state", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": true; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
5521
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctEmptyState, "strct-empty-state", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": true; "isSignal": true; }; "titleLevel": { "alias": "titleLevel"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
5452
5522
  }
5453
5523
 
5454
5524
  /**
@@ -6427,6 +6497,14 @@ interface StrctLegendItem {
6427
6497
  muted?: boolean;
6428
6498
  /** Only with `interactive`: the row reads as switched off. */
6429
6499
  off?: boolean;
6500
+ /**
6501
+ * Only with `interactive`: the row cannot be switched at all — a counter
6502
+ * this host does not collect, a series the query cannot answer. Give
6503
+ * `reason` with it: an item that cannot be picked must say why.
6504
+ */
6505
+ disabled?: boolean;
6506
+ /** Why a `disabled` row cannot be picked; its title and its description. */
6507
+ reason?: string;
6430
6508
  }
6431
6509
  /**
6432
6510
  * A chart's key is a component. The same swatch · label · value rows serve a
@@ -6446,17 +6524,24 @@ declare class StrctLegend {
6446
6524
  readonly orientation: _angular_core.InputSignal<"horizontal" | "vertical">;
6447
6525
  /** Rows become toggle buttons carrying `aria-pressed`. */
6448
6526
  readonly interactive: _angular_core.InputSignalWithTransform<boolean, unknown>;
6527
+ /**
6528
+ * `legend` is the key of what is drawn: an off row is struck through,
6529
+ * because it is a series that has been hidden. `picker` is a catalogue —
6530
+ * the counters a host could show — where an off row is simply not picked,
6531
+ * so it stays plain and the picked ones carry a check.
6532
+ */
6533
+ readonly appearance: _angular_core.InputSignal<"legend" | "picker">;
6449
6534
  /** The label of the row that was toggled. */
6450
6535
  readonly itemToggle: _angular_core.OutputEmitterRef<string>;
6451
6536
  /** The status vocabulary's own tokens — 'accent' is `--acc`, not `--accent`. */
6452
6537
  private static readonly TONE;
6453
6538
  protected swatchColor(item: StrctLegendItem): string;
6454
6539
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctLegend, never>;
6455
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctLegend, "strct-legend", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; }, { "itemToggle": "itemToggle"; }, never, never, true, never>;
6540
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctLegend, "strct-legend", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; }, { "itemToggle": "itemToggle"; }, never, never, true, never>;
6456
6541
  }
6457
6542
 
6458
6543
  /** Where one step of a watched process has got to. */
6459
- type StrctStepPhase = 'pending' | 'active' | 'done' | 'failed' | 'skipped' | 'blocked';
6544
+ type StrctStepPhase = 'planned' | 'pending' | 'active' | 'done' | 'failed' | 'skipped' | 'blocked';
6460
6545
  /** One step of a process the user watches rather than drives. */
6461
6546
  interface StrctStepState {
6462
6547
  id: string;
@@ -6499,13 +6584,20 @@ declare class StrctSteps {
6499
6584
  readonly numbered: _angular_core.InputSignalWithTransform<boolean, unknown>;
6500
6585
  /** Tighter pills, for one row per host in a long list. */
6501
6586
  readonly dense: _angular_core.InputSignalWithTransform<boolean, unknown>;
6587
+ /**
6588
+ * The list's accessible name — "Migration plan", "Upgrade progress". An
6589
+ * `<ol>` of steps with no name is one of several lists on a page.
6590
+ */
6591
+ readonly label: _angular_core.InputSignal<string>;
6592
+ /** Let a long pill label wrap instead of ending in an ellipsis. */
6593
+ readonly wrap: _angular_core.InputSignalWithTransform<boolean, unknown>;
6502
6594
  /** The state words read after each label. */
6503
6595
  readonly labels: _angular_core.InputSignal<Partial<StrctStepsLabels>>;
6504
6596
  protected readonly actionTpl: _angular_core.Signal<TemplateRef<any> | undefined>;
6505
6597
  private readonly L;
6506
6598
  protected stateWord(state: StrctStepPhase): string;
6507
6599
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctSteps, never>;
6508
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctSteps, "strct-steps", never, { "steps": { "alias": "steps"; "required": true; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "numbered": { "alias": "numbered"; "required": false; "isSignal": true; }; "dense": { "alias": "dense"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": false; "isSignal": true; }; }, {}, ["actionTpl"], never, true, never>;
6600
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctSteps, "strct-steps", never, { "steps": { "alias": "steps"; "required": true; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "numbered": { "alias": "numbered"; "required": false; "isSignal": true; }; "dense": { "alias": "dense"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "wrap": { "alias": "wrap"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": false; "isSignal": true; }; }, {}, ["actionTpl"], never, true, never>;
6509
6601
  }
6510
6602
 
6511
6603
  /** What the frame is showing instead of a picture. */
@@ -6521,6 +6613,12 @@ type StrctMediaState = 'content' | 'loading' | 'empty' | 'off' | 'error';
6521
6613
  declare class StrctMediaFrame {
6522
6614
  /** The frame's aspect ratio, as a CSS `aspect-ratio` value. */
6523
6615
  readonly ratio: _angular_core.InputSignal<string>;
6616
+ /**
6617
+ * How the media fills the frame. `cover` crops to fill, as today; `contain`
6618
+ * shows all of it — what a console thumbnail needs, since the corner it
6619
+ * would crop is where the error is.
6620
+ */
6621
+ readonly fit: _angular_core.InputSignal<"cover" | "contain">;
6524
6622
  /** What the frame shows: the projected picture, or why there is none. */
6525
6623
  readonly state: _angular_core.InputSignal<StrctMediaState>;
6526
6624
  /** The placeholder's line ("The VM is off"). */
@@ -6535,7 +6633,7 @@ declare class StrctMediaFrame {
6535
6633
  readonly activated: _angular_core.OutputEmitterRef<void>;
6536
6634
  protected readonly iconName: _angular_core.Signal<string>;
6537
6635
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctMediaFrame, never>;
6538
- 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>;
6636
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctMediaFrame, "strct-media-frame", never, { "ratio": { "alias": "ratio"; "required": false; "isSignal": true; }; "fit": { "alias": "fit"; "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>;
6539
6637
  }
6540
6638
 
6541
6639
  /** Where a window sits and how big it is, in viewport px. */
@@ -6750,6 +6848,11 @@ declare class StrctChatComposer {
6750
6848
  readonly label: _angular_core.InputSignal<string>;
6751
6849
  /** Disabled while the assistant is busy, say. */
6752
6850
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
6851
+ /**
6852
+ * Only the send button is disabled: the reader may draft their next question
6853
+ * while a reply is still streaming. `disabled` stops the typing as well.
6854
+ */
6855
+ readonly sendDisabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
6753
6856
  /** How tall the box grows before it scrolls. */
6754
6857
  readonly maxRows: _angular_core.InputSignal<number>;
6755
6858
  /** The send button's accessible name. */
@@ -6766,7 +6869,7 @@ declare class StrctChatComposer {
6766
6869
  protected onEnter(event: Event): void;
6767
6870
  submit(): void;
6768
6871
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StrctChatComposer, never>;
6769
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctChatComposer, "strct-chat-composer", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "maxRows": { "alias": "maxRows"; "required": false; "isSignal": true; }; "sendLabel": { "alias": "sendLabel"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "send": "send"; }, never, never, true, never>;
6872
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<StrctChatComposer, "strct-chat-composer", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "sendDisabled": { "alias": "sendDisabled"; "required": false; "isSignal": true; }; "maxRows": { "alias": "maxRows"; "required": false; "isSignal": true; }; "sendLabel": { "alias": "sendLabel"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "send": "send"; }, never, never, true, never>;
6770
6873
  }
6771
6874
 
6772
6875
  /**
@@ -7492,4 +7595,4 @@ declare function strctCheckHostInputs(host: HTMLElement, selector: string, owns:
7492
7595
  declare function strctCheckHostDisplay(host: HTMLElement, selector: string, expected: string): void;
7493
7596
 
7494
7597
  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, StrctAlertActions, StrctAnnouncer, StrctAvatar, StrctBadge, StrctBreadcrumb, StrctBreadcrumbItem, StrctButton, StrctButtonGroup, StrctBytesPipe, StrctCard, StrctCardBlock, StrctCardFooter, StrctCardHeader, StrctCardHeaderActions, StrctCardHeaderLeading, StrctCardHeaderMeta, StrctCardHeaderNote, StrctCascadeColumn, StrctCascadeHost, StrctCascadeSelect, StrctCellDef, StrctCellStatus, StrctChange, StrctChart, StrctChatAttachment, StrctChatComposer, StrctChatMessage, StrctChatThread, 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, StrctFieldValue, 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, StrctQr, 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, __qrInternals, focusFirstIn, keepTabInside, lockBodyScroll, parseAnsi, provideStrctWizardDefaults, registerStrctIcon, restoreFocus, saveFocusedElement, strctCheckHostDisplay, strctCheckHostInputs, strctComputeDiff, strctDpPad, strctFormatBytes, strctFormatDuration, strctFormatRate, strctFormatSi, strctQrMatrix, strctValidationIcon, strctValidationTone, unlockBodyScroll };
7495
- export type { StrctAlertType, StrctAvatarSize, StrctAvatarStatus, StrctBadgeStatus, StrctButtonSize, StrctButtonVariant, StrctCascadeOption, StrctCellContext, StrctChartAnnotation, StrctChartColor, StrctChartCurve, StrctChartSeries, StrctChartSlot, StrctChartStatus, StrctChartSummaryInfo, StrctChartThreshold, StrctChartType, StrctChatAuthor, 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, StrctQrEcc, 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 };
7598
+ export type { StrctAlertType, StrctAvatarSize, StrctAvatarStatus, StrctBadgeStatus, StrctButtonSize, StrctButtonVariant, StrctCascadeOption, StrctCellContext, StrctChartAnnotation, StrctChartColor, StrctChartCurve, StrctChartSeries, StrctChartSlot, StrctChartStatus, StrctChartSummaryInfo, StrctChartThreshold, StrctChartType, StrctChatAuthor, StrctColumn, StrctCommandItem, StrctConfirmOptions, StrctConfirmTone, StrctDatagridColumn, StrctDatagridColumnState, StrctDatagridFilters, StrctDatagridLabels, StrctDatagridLazyState, StrctDescAlign, StrctDescItem, StrctDiffRow, StrctDonutSegment, StrctDrawerSide, StrctDrawerSize, StrctEmptyVariant, StrctFilterChip, StrctFlowColumn, 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, StrctQrEcc, 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 };