@besaitech/ng-design-system 0.0.65 → 0.0.67

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/index.d.ts CHANGED
@@ -1,8 +1,9 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { OnDestroy, ElementRef, TemplateRef, WritableSignal, OnInit } from '@angular/core';
2
+ import { OnDestroy, ElementRef, TemplateRef, WritableSignal, OnInit, InjectionToken, Provider } from '@angular/core';
3
3
  import { SafeHtml } from '@angular/platform-browser';
4
4
  import { ControlValueAccessor, Validator, AbstractControl, ValidationErrors } from '@angular/forms';
5
5
  import * as _besaitech_ng_design_system from '@besaitech/ng-design-system';
6
+ import * as d3_scale from 'd3-scale';
6
7
 
7
8
  /**
8
9
  * Curated set of line icons (Lucide-style, 24x24 viewBox, stroke-based).
@@ -11,6 +12,16 @@ import * as _besaitech_ng_design_system from '@besaitech/ng-design-system';
11
12
  */
12
13
  declare const SDS_ICONS: {
13
14
  readonly 'chart-column': "<path d=\"M3 3v16a2 2 0 0 0 2 2h16\"/><path d=\"M18 17V9\"/><path d=\"M13 17V5\"/><path d=\"M8 17v-3\"/>";
15
+ readonly 'chart-line': "<path d=\"M3 3v16a2 2 0 0 0 2 2h16\"/><path d=\"m19 9-5 5-4-4-3 3\"/>";
16
+ readonly 'chart-bar': "<path d=\"M3 3v16a2 2 0 0 0 2 2h16\"/><path d=\"M7 16h8\"/><path d=\"M7 11h12\"/><path d=\"M7 6h3\"/>";
17
+ readonly 'chart-area': "<path d=\"M3 3v16a2 2 0 0 0 2 2h16\"/><path d=\"M7 11.207a.5.5 0 0 1 .146-.353l2-2a.5.5 0 0 1 .708 0l3.292 3.292a.5.5 0 0 0 .708 0l4.292-4.292a.5.5 0 0 1 .854.353V16a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1z\"/>";
18
+ readonly 'chart-pie': "<path d=\"M21 12c.552 0 1.005-.449.95-.998a10 10 0 0 0-8.953-8.951c-.55-.055-.998.398-.998.95v8a1 1 0 0 0 1 1z\"/><path d=\"M21.21 15.89A10 10 0 1 1 8 2.83\"/>";
19
+ readonly 'chart-scatter': "<circle cx=\"7.5\" cy=\"7.5\" r=\".5\" fill=\"currentColor\"/><circle cx=\"18.5\" cy=\"5.5\" r=\".5\" fill=\"currentColor\"/><circle cx=\"11.5\" cy=\"11.5\" r=\".5\" fill=\"currentColor\"/><circle cx=\"7.5\" cy=\"16.5\" r=\".5\" fill=\"currentColor\"/><circle cx=\"17.5\" cy=\"14.5\" r=\".5\" fill=\"currentColor\"/><path d=\"M3 3v16a2 2 0 0 0 2 2h16\"/>";
20
+ readonly 'grid-3x3': "<rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\"/><path d=\"M3 9h18\"/><path d=\"M3 15h18\"/><path d=\"M9 3v18\"/><path d=\"M15 3v18\"/>";
21
+ readonly activity: "<path d=\"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2\"/>";
22
+ readonly gauge: "<path d=\"m12 14 4-4\"/><path d=\"M3.34 19a10 10 0 1 1 17.32 0\"/>";
23
+ readonly 'trending-up': "<polyline points=\"22 7 13.5 15.5 8.5 10.5 2 17\"/><polyline points=\"16 7 22 7 22 13\"/>";
24
+ readonly 'trending-down': "<polyline points=\"22 17 13.5 8.5 8.5 13.5 2 7\"/><polyline points=\"16 17 22 17 22 11\"/>";
14
25
  readonly 'clipboard-list': "<rect width=\"8\" height=\"4\" x=\"8\" y=\"2\" rx=\"1\" ry=\"1\"/><path d=\"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2\"/><path d=\"M12 11h4\"/><path d=\"M12 16h4\"/><path d=\"M8 11h.01\"/><path d=\"M8 16h.01\"/>";
15
26
  readonly 'credit-card': "<rect width=\"20\" height=\"14\" x=\"2\" y=\"5\" rx=\"2\"/><line x1=\"2\" x2=\"22\" y1=\"10\" y2=\"10\"/>";
16
27
  readonly 'external-link': "<path d=\"M15 3h6v6\"/><path d=\"M10 14 21 3\"/><path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"/>";
@@ -147,7 +158,7 @@ type SdsIconSize = 'sm' | 'md' | 'lg' | 'xl';
147
158
  declare class SdsIcon {
148
159
  private readonly sanitizer;
149
160
  /** Icon identifier from the registry. */
150
- readonly name: _angular_core.InputSignal<"chart-column" | "clipboard-list" | "credit-card" | "external-link" | "languages" | "megaphone" | "monitor" | "store" | "user-round" | "home" | "user-plus" | "user-check" | "hand" | "users" | "bike" | "building-2" | "package" | "package-plus" | "package-open" | "rotate-ccw" | "bar-chart-3" | "search" | "log-out" | "panel-left-close" | "panel-left-open" | "panel-left" | "calendar" | "chevron-right" | "chevron-left" | "chevron-down" | "chevron-up" | "plus" | "minus" | "chevrons-left" | "chevrons-right" | "x" | "check" | "alert-circle" | "info" | "copy" | "type" | "tag" | "ticket" | "square" | "square-check" | "circle-dot" | "circle-user" | "layout-grid" | "panels-top-left" | "panel-top" | "rows-3" | "book-open" | "palette" | "bell" | "phone" | "settings" | "align-left" | "toggle-left" | "arrow-up" | "arrow-down" | "chevrons-up-down" | "chevrons-up" | "chevrons-down" | "star" | "message-square" | "filter" | "table" | "qr-code" | "eye" | "eye-off" | "user" | "check-circle" | "arrows-clockwise" | "menu" | "file-text" | "file-check" | "hash" | "map-pin" | "inbox" | "arrow-right" | "refresh-cw" | "loader-circle" | "locate-fixed" | "locate-off" | "bug" | "scroll-text" | "moon" | "sun" | "search-x" | "command" | "sparkles" | "triangle-alert" | "octagon-x" | "ban" | "ellipsis" | "ellipsis-vertical" | "grip-vertical" | "upload" | "image" | "image-off" | "utensils" | "zoom-in" | "zoom-out" | "trash-2" | "clock" | "pencil" | "circle-help" | "stock" | "allergen-cereals-gluten" | "allergen-crustaceans" | "allergen-eggs" | "allergen-fish" | "allergen-peanuts" | "allergen-soybeans" | "allergen-milk" | "allergen-nuts" | "allergen-celery" | "allergen-mustard" | "allergen-sesame" | "allergen-sulphites" | "allergen-lupin" | "allergen-molluscs">;
161
+ readonly name: _angular_core.InputSignal<"search" | "filter" | "chart-column" | "chart-line" | "chart-bar" | "chart-area" | "chart-pie" | "chart-scatter" | "grid-3x3" | "activity" | "gauge" | "trending-up" | "trending-down" | "clipboard-list" | "credit-card" | "external-link" | "languages" | "megaphone" | "monitor" | "store" | "user-round" | "home" | "user-plus" | "user-check" | "hand" | "users" | "bike" | "building-2" | "package" | "package-plus" | "package-open" | "rotate-ccw" | "bar-chart-3" | "log-out" | "panel-left-close" | "panel-left-open" | "panel-left" | "calendar" | "chevron-right" | "chevron-left" | "chevron-down" | "chevron-up" | "plus" | "minus" | "chevrons-left" | "chevrons-right" | "x" | "check" | "alert-circle" | "info" | "copy" | "type" | "tag" | "ticket" | "square" | "square-check" | "circle-dot" | "circle-user" | "layout-grid" | "panels-top-left" | "panel-top" | "rows-3" | "book-open" | "palette" | "bell" | "phone" | "settings" | "align-left" | "toggle-left" | "arrow-up" | "arrow-down" | "chevrons-up-down" | "chevrons-up" | "chevrons-down" | "star" | "message-square" | "table" | "qr-code" | "eye" | "eye-off" | "user" | "check-circle" | "arrows-clockwise" | "menu" | "file-text" | "file-check" | "hash" | "map-pin" | "inbox" | "arrow-right" | "refresh-cw" | "loader-circle" | "locate-fixed" | "locate-off" | "bug" | "scroll-text" | "moon" | "sun" | "search-x" | "command" | "sparkles" | "triangle-alert" | "octagon-x" | "ban" | "ellipsis" | "ellipsis-vertical" | "grip-vertical" | "upload" | "image" | "image-off" | "utensils" | "zoom-in" | "zoom-out" | "trash-2" | "clock" | "pencil" | "circle-help" | "stock" | "allergen-cereals-gluten" | "allergen-crustaceans" | "allergen-eggs" | "allergen-fish" | "allergen-peanuts" | "allergen-soybeans" | "allergen-milk" | "allergen-nuts" | "allergen-celery" | "allergen-mustard" | "allergen-sesame" | "allergen-sulphites" | "allergen-lupin" | "allergen-molluscs">;
151
162
  /** Square size: a pixel number, a numeric string, or a keyword (sm·md·lg·xl). */
152
163
  readonly size: _angular_core.InputSignalWithTransform<number, string | number>;
153
164
  /** Stroke width of the line icon. */
@@ -270,8 +281,8 @@ declare class SdsInput implements ControlValueAccessor {
270
281
  * translate it — it is an icon-only control, so this string is its only name.
271
282
  */
272
283
  readonly clearLabel: _angular_core.InputSignal<string>;
273
- readonly leadingIcon: _angular_core.InputSignal<"chart-column" | "clipboard-list" | "credit-card" | "external-link" | "languages" | "megaphone" | "monitor" | "store" | "user-round" | "home" | "user-plus" | "user-check" | "hand" | "users" | "bike" | "building-2" | "package" | "package-plus" | "package-open" | "rotate-ccw" | "bar-chart-3" | "search" | "log-out" | "panel-left-close" | "panel-left-open" | "panel-left" | "calendar" | "chevron-right" | "chevron-left" | "chevron-down" | "chevron-up" | "plus" | "minus" | "chevrons-left" | "chevrons-right" | "x" | "check" | "alert-circle" | "info" | "copy" | "type" | "tag" | "ticket" | "square" | "square-check" | "circle-dot" | "circle-user" | "layout-grid" | "panels-top-left" | "panel-top" | "rows-3" | "book-open" | "palette" | "bell" | "phone" | "settings" | "align-left" | "toggle-left" | "arrow-up" | "arrow-down" | "chevrons-up-down" | "chevrons-up" | "chevrons-down" | "star" | "message-square" | "filter" | "table" | "qr-code" | "eye" | "eye-off" | "user" | "check-circle" | "arrows-clockwise" | "menu" | "file-text" | "file-check" | "hash" | "map-pin" | "inbox" | "arrow-right" | "refresh-cw" | "loader-circle" | "locate-fixed" | "locate-off" | "bug" | "scroll-text" | "moon" | "sun" | "search-x" | "command" | "sparkles" | "triangle-alert" | "octagon-x" | "ban" | "ellipsis" | "ellipsis-vertical" | "grip-vertical" | "upload" | "image" | "image-off" | "utensils" | "zoom-in" | "zoom-out" | "trash-2" | "clock" | "pencil" | "circle-help" | "stock" | "allergen-cereals-gluten" | "allergen-crustaceans" | "allergen-eggs" | "allergen-fish" | "allergen-peanuts" | "allergen-soybeans" | "allergen-milk" | "allergen-nuts" | "allergen-celery" | "allergen-mustard" | "allergen-sesame" | "allergen-sulphites" | "allergen-lupin" | "allergen-molluscs" | null>;
274
- readonly trailingIcon: _angular_core.InputSignal<"chart-column" | "clipboard-list" | "credit-card" | "external-link" | "languages" | "megaphone" | "monitor" | "store" | "user-round" | "home" | "user-plus" | "user-check" | "hand" | "users" | "bike" | "building-2" | "package" | "package-plus" | "package-open" | "rotate-ccw" | "bar-chart-3" | "search" | "log-out" | "panel-left-close" | "panel-left-open" | "panel-left" | "calendar" | "chevron-right" | "chevron-left" | "chevron-down" | "chevron-up" | "plus" | "minus" | "chevrons-left" | "chevrons-right" | "x" | "check" | "alert-circle" | "info" | "copy" | "type" | "tag" | "ticket" | "square" | "square-check" | "circle-dot" | "circle-user" | "layout-grid" | "panels-top-left" | "panel-top" | "rows-3" | "book-open" | "palette" | "bell" | "phone" | "settings" | "align-left" | "toggle-left" | "arrow-up" | "arrow-down" | "chevrons-up-down" | "chevrons-up" | "chevrons-down" | "star" | "message-square" | "filter" | "table" | "qr-code" | "eye" | "eye-off" | "user" | "check-circle" | "arrows-clockwise" | "menu" | "file-text" | "file-check" | "hash" | "map-pin" | "inbox" | "arrow-right" | "refresh-cw" | "loader-circle" | "locate-fixed" | "locate-off" | "bug" | "scroll-text" | "moon" | "sun" | "search-x" | "command" | "sparkles" | "triangle-alert" | "octagon-x" | "ban" | "ellipsis" | "ellipsis-vertical" | "grip-vertical" | "upload" | "image" | "image-off" | "utensils" | "zoom-in" | "zoom-out" | "trash-2" | "clock" | "pencil" | "circle-help" | "stock" | "allergen-cereals-gluten" | "allergen-crustaceans" | "allergen-eggs" | "allergen-fish" | "allergen-peanuts" | "allergen-soybeans" | "allergen-milk" | "allergen-nuts" | "allergen-celery" | "allergen-mustard" | "allergen-sesame" | "allergen-sulphites" | "allergen-lupin" | "allergen-molluscs" | null>;
284
+ readonly leadingIcon: _angular_core.InputSignal<"search" | "filter" | "chart-column" | "chart-line" | "chart-bar" | "chart-area" | "chart-pie" | "chart-scatter" | "grid-3x3" | "activity" | "gauge" | "trending-up" | "trending-down" | "clipboard-list" | "credit-card" | "external-link" | "languages" | "megaphone" | "monitor" | "store" | "user-round" | "home" | "user-plus" | "user-check" | "hand" | "users" | "bike" | "building-2" | "package" | "package-plus" | "package-open" | "rotate-ccw" | "bar-chart-3" | "log-out" | "panel-left-close" | "panel-left-open" | "panel-left" | "calendar" | "chevron-right" | "chevron-left" | "chevron-down" | "chevron-up" | "plus" | "minus" | "chevrons-left" | "chevrons-right" | "x" | "check" | "alert-circle" | "info" | "copy" | "type" | "tag" | "ticket" | "square" | "square-check" | "circle-dot" | "circle-user" | "layout-grid" | "panels-top-left" | "panel-top" | "rows-3" | "book-open" | "palette" | "bell" | "phone" | "settings" | "align-left" | "toggle-left" | "arrow-up" | "arrow-down" | "chevrons-up-down" | "chevrons-up" | "chevrons-down" | "star" | "message-square" | "table" | "qr-code" | "eye" | "eye-off" | "user" | "check-circle" | "arrows-clockwise" | "menu" | "file-text" | "file-check" | "hash" | "map-pin" | "inbox" | "arrow-right" | "refresh-cw" | "loader-circle" | "locate-fixed" | "locate-off" | "bug" | "scroll-text" | "moon" | "sun" | "search-x" | "command" | "sparkles" | "triangle-alert" | "octagon-x" | "ban" | "ellipsis" | "ellipsis-vertical" | "grip-vertical" | "upload" | "image" | "image-off" | "utensils" | "zoom-in" | "zoom-out" | "trash-2" | "clock" | "pencil" | "circle-help" | "stock" | "allergen-cereals-gluten" | "allergen-crustaceans" | "allergen-eggs" | "allergen-fish" | "allergen-peanuts" | "allergen-soybeans" | "allergen-milk" | "allergen-nuts" | "allergen-celery" | "allergen-mustard" | "allergen-sesame" | "allergen-sulphites" | "allergen-lupin" | "allergen-molluscs" | null>;
285
+ readonly trailingIcon: _angular_core.InputSignal<"search" | "filter" | "chart-column" | "chart-line" | "chart-bar" | "chart-area" | "chart-pie" | "chart-scatter" | "grid-3x3" | "activity" | "gauge" | "trending-up" | "trending-down" | "clipboard-list" | "credit-card" | "external-link" | "languages" | "megaphone" | "monitor" | "store" | "user-round" | "home" | "user-plus" | "user-check" | "hand" | "users" | "bike" | "building-2" | "package" | "package-plus" | "package-open" | "rotate-ccw" | "bar-chart-3" | "log-out" | "panel-left-close" | "panel-left-open" | "panel-left" | "calendar" | "chevron-right" | "chevron-left" | "chevron-down" | "chevron-up" | "plus" | "minus" | "chevrons-left" | "chevrons-right" | "x" | "check" | "alert-circle" | "info" | "copy" | "type" | "tag" | "ticket" | "square" | "square-check" | "circle-dot" | "circle-user" | "layout-grid" | "panels-top-left" | "panel-top" | "rows-3" | "book-open" | "palette" | "bell" | "phone" | "settings" | "align-left" | "toggle-left" | "arrow-up" | "arrow-down" | "chevrons-up-down" | "chevrons-up" | "chevrons-down" | "star" | "message-square" | "table" | "qr-code" | "eye" | "eye-off" | "user" | "check-circle" | "arrows-clockwise" | "menu" | "file-text" | "file-check" | "hash" | "map-pin" | "inbox" | "arrow-right" | "refresh-cw" | "loader-circle" | "locate-fixed" | "locate-off" | "bug" | "scroll-text" | "moon" | "sun" | "search-x" | "command" | "sparkles" | "triangle-alert" | "octagon-x" | "ban" | "ellipsis" | "ellipsis-vertical" | "grip-vertical" | "upload" | "image" | "image-off" | "utensils" | "zoom-in" | "zoom-out" | "trash-2" | "clock" | "pencil" | "circle-help" | "stock" | "allergen-cereals-gluten" | "allergen-crustaceans" | "allergen-eggs" | "allergen-fish" | "allergen-peanuts" | "allergen-soybeans" | "allergen-milk" | "allergen-nuts" | "allergen-celery" | "allergen-mustard" | "allergen-sesame" | "allergen-sulphites" | "allergen-lupin" | "allergen-molluscs" | null>;
275
286
  /**
276
287
  * A CLICKABLE trailing icon, for the affordances that belong to the field itself — password reveal
277
288
  * above all. Distinct from {@link trailingIcon}, which is decorative and explicitly
@@ -281,7 +292,7 @@ declare class SdsInput implements ControlValueAccessor {
281
292
  * Always pair it with {@link trailingActionLabel} — an icon-only button with no accessible name is
282
293
  * unusable by a screen reader. For a toggle, also bind {@link trailingActionPressed}.
283
294
  */
284
- readonly trailingAction: _angular_core.InputSignal<"chart-column" | "clipboard-list" | "credit-card" | "external-link" | "languages" | "megaphone" | "monitor" | "store" | "user-round" | "home" | "user-plus" | "user-check" | "hand" | "users" | "bike" | "building-2" | "package" | "package-plus" | "package-open" | "rotate-ccw" | "bar-chart-3" | "search" | "log-out" | "panel-left-close" | "panel-left-open" | "panel-left" | "calendar" | "chevron-right" | "chevron-left" | "chevron-down" | "chevron-up" | "plus" | "minus" | "chevrons-left" | "chevrons-right" | "x" | "check" | "alert-circle" | "info" | "copy" | "type" | "tag" | "ticket" | "square" | "square-check" | "circle-dot" | "circle-user" | "layout-grid" | "panels-top-left" | "panel-top" | "rows-3" | "book-open" | "palette" | "bell" | "phone" | "settings" | "align-left" | "toggle-left" | "arrow-up" | "arrow-down" | "chevrons-up-down" | "chevrons-up" | "chevrons-down" | "star" | "message-square" | "filter" | "table" | "qr-code" | "eye" | "eye-off" | "user" | "check-circle" | "arrows-clockwise" | "menu" | "file-text" | "file-check" | "hash" | "map-pin" | "inbox" | "arrow-right" | "refresh-cw" | "loader-circle" | "locate-fixed" | "locate-off" | "bug" | "scroll-text" | "moon" | "sun" | "search-x" | "command" | "sparkles" | "triangle-alert" | "octagon-x" | "ban" | "ellipsis" | "ellipsis-vertical" | "grip-vertical" | "upload" | "image" | "image-off" | "utensils" | "zoom-in" | "zoom-out" | "trash-2" | "clock" | "pencil" | "circle-help" | "stock" | "allergen-cereals-gluten" | "allergen-crustaceans" | "allergen-eggs" | "allergen-fish" | "allergen-peanuts" | "allergen-soybeans" | "allergen-milk" | "allergen-nuts" | "allergen-celery" | "allergen-mustard" | "allergen-sesame" | "allergen-sulphites" | "allergen-lupin" | "allergen-molluscs" | null>;
295
+ readonly trailingAction: _angular_core.InputSignal<"search" | "filter" | "chart-column" | "chart-line" | "chart-bar" | "chart-area" | "chart-pie" | "chart-scatter" | "grid-3x3" | "activity" | "gauge" | "trending-up" | "trending-down" | "clipboard-list" | "credit-card" | "external-link" | "languages" | "megaphone" | "monitor" | "store" | "user-round" | "home" | "user-plus" | "user-check" | "hand" | "users" | "bike" | "building-2" | "package" | "package-plus" | "package-open" | "rotate-ccw" | "bar-chart-3" | "log-out" | "panel-left-close" | "panel-left-open" | "panel-left" | "calendar" | "chevron-right" | "chevron-left" | "chevron-down" | "chevron-up" | "plus" | "minus" | "chevrons-left" | "chevrons-right" | "x" | "check" | "alert-circle" | "info" | "copy" | "type" | "tag" | "ticket" | "square" | "square-check" | "circle-dot" | "circle-user" | "layout-grid" | "panels-top-left" | "panel-top" | "rows-3" | "book-open" | "palette" | "bell" | "phone" | "settings" | "align-left" | "toggle-left" | "arrow-up" | "arrow-down" | "chevrons-up-down" | "chevrons-up" | "chevrons-down" | "star" | "message-square" | "table" | "qr-code" | "eye" | "eye-off" | "user" | "check-circle" | "arrows-clockwise" | "menu" | "file-text" | "file-check" | "hash" | "map-pin" | "inbox" | "arrow-right" | "refresh-cw" | "loader-circle" | "locate-fixed" | "locate-off" | "bug" | "scroll-text" | "moon" | "sun" | "search-x" | "command" | "sparkles" | "triangle-alert" | "octagon-x" | "ban" | "ellipsis" | "ellipsis-vertical" | "grip-vertical" | "upload" | "image" | "image-off" | "utensils" | "zoom-in" | "zoom-out" | "trash-2" | "clock" | "pencil" | "circle-help" | "stock" | "allergen-cereals-gluten" | "allergen-crustaceans" | "allergen-eggs" | "allergen-fish" | "allergen-peanuts" | "allergen-soybeans" | "allergen-milk" | "allergen-nuts" | "allergen-celery" | "allergen-mustard" | "allergen-sesame" | "allergen-sulphites" | "allergen-lupin" | "allergen-molluscs" | null>;
285
296
  /** Accessible name for {@link trailingAction}. Translate it in the consuming app. */
286
297
  readonly trailingActionLabel: _angular_core.InputSignal<string>;
287
298
  /** `aria-pressed` for a toggling action (e.g. show/hide password). Null renders no attribute. */
@@ -393,9 +404,9 @@ declare class SdsInputNumber implements ControlValueAccessor {
393
404
  readonly showButtons: _angular_core.InputSignalWithTransform<boolean, unknown>;
394
405
  readonly buttonLayout: _angular_core.InputSignal<SdsInputNumberButtonLayout>;
395
406
  /** Override the increment button icon (defaults: chevron-up when stacked, plus otherwise). */
396
- readonly incrementIcon: _angular_core.InputSignal<"chart-column" | "clipboard-list" | "credit-card" | "external-link" | "languages" | "megaphone" | "monitor" | "store" | "user-round" | "home" | "user-plus" | "user-check" | "hand" | "users" | "bike" | "building-2" | "package" | "package-plus" | "package-open" | "rotate-ccw" | "bar-chart-3" | "search" | "log-out" | "panel-left-close" | "panel-left-open" | "panel-left" | "calendar" | "chevron-right" | "chevron-left" | "chevron-down" | "chevron-up" | "plus" | "minus" | "chevrons-left" | "chevrons-right" | "x" | "check" | "alert-circle" | "info" | "copy" | "type" | "tag" | "ticket" | "square" | "square-check" | "circle-dot" | "circle-user" | "layout-grid" | "panels-top-left" | "panel-top" | "rows-3" | "book-open" | "palette" | "bell" | "phone" | "settings" | "align-left" | "toggle-left" | "arrow-up" | "arrow-down" | "chevrons-up-down" | "chevrons-up" | "chevrons-down" | "star" | "message-square" | "filter" | "table" | "qr-code" | "eye" | "eye-off" | "user" | "check-circle" | "arrows-clockwise" | "menu" | "file-text" | "file-check" | "hash" | "map-pin" | "inbox" | "arrow-right" | "refresh-cw" | "loader-circle" | "locate-fixed" | "locate-off" | "bug" | "scroll-text" | "moon" | "sun" | "search-x" | "command" | "sparkles" | "triangle-alert" | "octagon-x" | "ban" | "ellipsis" | "ellipsis-vertical" | "grip-vertical" | "upload" | "image" | "image-off" | "utensils" | "zoom-in" | "zoom-out" | "trash-2" | "clock" | "pencil" | "circle-help" | "stock" | "allergen-cereals-gluten" | "allergen-crustaceans" | "allergen-eggs" | "allergen-fish" | "allergen-peanuts" | "allergen-soybeans" | "allergen-milk" | "allergen-nuts" | "allergen-celery" | "allergen-mustard" | "allergen-sesame" | "allergen-sulphites" | "allergen-lupin" | "allergen-molluscs" | null>;
407
+ readonly incrementIcon: _angular_core.InputSignal<"search" | "filter" | "chart-column" | "chart-line" | "chart-bar" | "chart-area" | "chart-pie" | "chart-scatter" | "grid-3x3" | "activity" | "gauge" | "trending-up" | "trending-down" | "clipboard-list" | "credit-card" | "external-link" | "languages" | "megaphone" | "monitor" | "store" | "user-round" | "home" | "user-plus" | "user-check" | "hand" | "users" | "bike" | "building-2" | "package" | "package-plus" | "package-open" | "rotate-ccw" | "bar-chart-3" | "log-out" | "panel-left-close" | "panel-left-open" | "panel-left" | "calendar" | "chevron-right" | "chevron-left" | "chevron-down" | "chevron-up" | "plus" | "minus" | "chevrons-left" | "chevrons-right" | "x" | "check" | "alert-circle" | "info" | "copy" | "type" | "tag" | "ticket" | "square" | "square-check" | "circle-dot" | "circle-user" | "layout-grid" | "panels-top-left" | "panel-top" | "rows-3" | "book-open" | "palette" | "bell" | "phone" | "settings" | "align-left" | "toggle-left" | "arrow-up" | "arrow-down" | "chevrons-up-down" | "chevrons-up" | "chevrons-down" | "star" | "message-square" | "table" | "qr-code" | "eye" | "eye-off" | "user" | "check-circle" | "arrows-clockwise" | "menu" | "file-text" | "file-check" | "hash" | "map-pin" | "inbox" | "arrow-right" | "refresh-cw" | "loader-circle" | "locate-fixed" | "locate-off" | "bug" | "scroll-text" | "moon" | "sun" | "search-x" | "command" | "sparkles" | "triangle-alert" | "octagon-x" | "ban" | "ellipsis" | "ellipsis-vertical" | "grip-vertical" | "upload" | "image" | "image-off" | "utensils" | "zoom-in" | "zoom-out" | "trash-2" | "clock" | "pencil" | "circle-help" | "stock" | "allergen-cereals-gluten" | "allergen-crustaceans" | "allergen-eggs" | "allergen-fish" | "allergen-peanuts" | "allergen-soybeans" | "allergen-milk" | "allergen-nuts" | "allergen-celery" | "allergen-mustard" | "allergen-sesame" | "allergen-sulphites" | "allergen-lupin" | "allergen-molluscs" | null>;
397
408
  /** Override the decrement button icon (defaults: chevron-down when stacked, minus otherwise). */
398
- readonly decrementIcon: _angular_core.InputSignal<"chart-column" | "clipboard-list" | "credit-card" | "external-link" | "languages" | "megaphone" | "monitor" | "store" | "user-round" | "home" | "user-plus" | "user-check" | "hand" | "users" | "bike" | "building-2" | "package" | "package-plus" | "package-open" | "rotate-ccw" | "bar-chart-3" | "search" | "log-out" | "panel-left-close" | "panel-left-open" | "panel-left" | "calendar" | "chevron-right" | "chevron-left" | "chevron-down" | "chevron-up" | "plus" | "minus" | "chevrons-left" | "chevrons-right" | "x" | "check" | "alert-circle" | "info" | "copy" | "type" | "tag" | "ticket" | "square" | "square-check" | "circle-dot" | "circle-user" | "layout-grid" | "panels-top-left" | "panel-top" | "rows-3" | "book-open" | "palette" | "bell" | "phone" | "settings" | "align-left" | "toggle-left" | "arrow-up" | "arrow-down" | "chevrons-up-down" | "chevrons-up" | "chevrons-down" | "star" | "message-square" | "filter" | "table" | "qr-code" | "eye" | "eye-off" | "user" | "check-circle" | "arrows-clockwise" | "menu" | "file-text" | "file-check" | "hash" | "map-pin" | "inbox" | "arrow-right" | "refresh-cw" | "loader-circle" | "locate-fixed" | "locate-off" | "bug" | "scroll-text" | "moon" | "sun" | "search-x" | "command" | "sparkles" | "triangle-alert" | "octagon-x" | "ban" | "ellipsis" | "ellipsis-vertical" | "grip-vertical" | "upload" | "image" | "image-off" | "utensils" | "zoom-in" | "zoom-out" | "trash-2" | "clock" | "pencil" | "circle-help" | "stock" | "allergen-cereals-gluten" | "allergen-crustaceans" | "allergen-eggs" | "allergen-fish" | "allergen-peanuts" | "allergen-soybeans" | "allergen-milk" | "allergen-nuts" | "allergen-celery" | "allergen-mustard" | "allergen-sesame" | "allergen-sulphites" | "allergen-lupin" | "allergen-molluscs" | null>;
409
+ readonly decrementIcon: _angular_core.InputSignal<"search" | "filter" | "chart-column" | "chart-line" | "chart-bar" | "chart-area" | "chart-pie" | "chart-scatter" | "grid-3x3" | "activity" | "gauge" | "trending-up" | "trending-down" | "clipboard-list" | "credit-card" | "external-link" | "languages" | "megaphone" | "monitor" | "store" | "user-round" | "home" | "user-plus" | "user-check" | "hand" | "users" | "bike" | "building-2" | "package" | "package-plus" | "package-open" | "rotate-ccw" | "bar-chart-3" | "log-out" | "panel-left-close" | "panel-left-open" | "panel-left" | "calendar" | "chevron-right" | "chevron-left" | "chevron-down" | "chevron-up" | "plus" | "minus" | "chevrons-left" | "chevrons-right" | "x" | "check" | "alert-circle" | "info" | "copy" | "type" | "tag" | "ticket" | "square" | "square-check" | "circle-dot" | "circle-user" | "layout-grid" | "panels-top-left" | "panel-top" | "rows-3" | "book-open" | "palette" | "bell" | "phone" | "settings" | "align-left" | "toggle-left" | "arrow-up" | "arrow-down" | "chevrons-up-down" | "chevrons-up" | "chevrons-down" | "star" | "message-square" | "table" | "qr-code" | "eye" | "eye-off" | "user" | "check-circle" | "arrows-clockwise" | "menu" | "file-text" | "file-check" | "hash" | "map-pin" | "inbox" | "arrow-right" | "refresh-cw" | "loader-circle" | "locate-fixed" | "locate-off" | "bug" | "scroll-text" | "moon" | "sun" | "search-x" | "command" | "sparkles" | "triangle-alert" | "octagon-x" | "ban" | "ellipsis" | "ellipsis-vertical" | "grip-vertical" | "upload" | "image" | "image-off" | "utensils" | "zoom-in" | "zoom-out" | "trash-2" | "clock" | "pencil" | "circle-help" | "stock" | "allergen-cereals-gluten" | "allergen-crustaceans" | "allergen-eggs" | "allergen-fish" | "allergen-peanuts" | "allergen-soybeans" | "allergen-milk" | "allergen-nuts" | "allergen-celery" | "allergen-mustard" | "allergen-sesame" | "allergen-sulphites" | "allergen-lupin" | "allergen-molluscs" | null>;
399
410
  /** Allow an empty (null) value. When false, blurring an empty field falls back to {@link min} or 0. */
400
411
  readonly allowEmpty: _angular_core.InputSignalWithTransform<boolean, unknown>;
401
412
  readonly clearable: _angular_core.InputSignalWithTransform<boolean, unknown>;
@@ -412,8 +423,8 @@ declare class SdsInputNumber implements ControlValueAccessor {
412
423
  protected readonly isDisabled: _angular_core.Signal<boolean>;
413
424
  protected readonly describedBy: _angular_core.Signal<string | null>;
414
425
  protected readonly clearVisible: _angular_core.Signal<boolean>;
415
- protected readonly incrementIconName: _angular_core.Signal<"chart-column" | "clipboard-list" | "credit-card" | "external-link" | "languages" | "megaphone" | "monitor" | "store" | "user-round" | "home" | "user-plus" | "user-check" | "hand" | "users" | "bike" | "building-2" | "package" | "package-plus" | "package-open" | "rotate-ccw" | "bar-chart-3" | "search" | "log-out" | "panel-left-close" | "panel-left-open" | "panel-left" | "calendar" | "chevron-right" | "chevron-left" | "chevron-down" | "chevron-up" | "plus" | "minus" | "chevrons-left" | "chevrons-right" | "x" | "check" | "alert-circle" | "info" | "copy" | "type" | "tag" | "ticket" | "square" | "square-check" | "circle-dot" | "circle-user" | "layout-grid" | "panels-top-left" | "panel-top" | "rows-3" | "book-open" | "palette" | "bell" | "phone" | "settings" | "align-left" | "toggle-left" | "arrow-up" | "arrow-down" | "chevrons-up-down" | "chevrons-up" | "chevrons-down" | "star" | "message-square" | "filter" | "table" | "qr-code" | "eye" | "eye-off" | "user" | "check-circle" | "arrows-clockwise" | "menu" | "file-text" | "file-check" | "hash" | "map-pin" | "inbox" | "arrow-right" | "refresh-cw" | "loader-circle" | "locate-fixed" | "locate-off" | "bug" | "scroll-text" | "moon" | "sun" | "search-x" | "command" | "sparkles" | "triangle-alert" | "octagon-x" | "ban" | "ellipsis" | "ellipsis-vertical" | "grip-vertical" | "upload" | "image" | "image-off" | "utensils" | "zoom-in" | "zoom-out" | "trash-2" | "clock" | "pencil" | "circle-help" | "stock" | "allergen-cereals-gluten" | "allergen-crustaceans" | "allergen-eggs" | "allergen-fish" | "allergen-peanuts" | "allergen-soybeans" | "allergen-milk" | "allergen-nuts" | "allergen-celery" | "allergen-mustard" | "allergen-sesame" | "allergen-sulphites" | "allergen-lupin" | "allergen-molluscs">;
416
- protected readonly decrementIconName: _angular_core.Signal<"chart-column" | "clipboard-list" | "credit-card" | "external-link" | "languages" | "megaphone" | "monitor" | "store" | "user-round" | "home" | "user-plus" | "user-check" | "hand" | "users" | "bike" | "building-2" | "package" | "package-plus" | "package-open" | "rotate-ccw" | "bar-chart-3" | "search" | "log-out" | "panel-left-close" | "panel-left-open" | "panel-left" | "calendar" | "chevron-right" | "chevron-left" | "chevron-down" | "chevron-up" | "plus" | "minus" | "chevrons-left" | "chevrons-right" | "x" | "check" | "alert-circle" | "info" | "copy" | "type" | "tag" | "ticket" | "square" | "square-check" | "circle-dot" | "circle-user" | "layout-grid" | "panels-top-left" | "panel-top" | "rows-3" | "book-open" | "palette" | "bell" | "phone" | "settings" | "align-left" | "toggle-left" | "arrow-up" | "arrow-down" | "chevrons-up-down" | "chevrons-up" | "chevrons-down" | "star" | "message-square" | "filter" | "table" | "qr-code" | "eye" | "eye-off" | "user" | "check-circle" | "arrows-clockwise" | "menu" | "file-text" | "file-check" | "hash" | "map-pin" | "inbox" | "arrow-right" | "refresh-cw" | "loader-circle" | "locate-fixed" | "locate-off" | "bug" | "scroll-text" | "moon" | "sun" | "search-x" | "command" | "sparkles" | "triangle-alert" | "octagon-x" | "ban" | "ellipsis" | "ellipsis-vertical" | "grip-vertical" | "upload" | "image" | "image-off" | "utensils" | "zoom-in" | "zoom-out" | "trash-2" | "clock" | "pencil" | "circle-help" | "stock" | "allergen-cereals-gluten" | "allergen-crustaceans" | "allergen-eggs" | "allergen-fish" | "allergen-peanuts" | "allergen-soybeans" | "allergen-milk" | "allergen-nuts" | "allergen-celery" | "allergen-mustard" | "allergen-sesame" | "allergen-sulphites" | "allergen-lupin" | "allergen-molluscs">;
426
+ protected readonly incrementIconName: _angular_core.Signal<"search" | "filter" | "chart-column" | "chart-line" | "chart-bar" | "chart-area" | "chart-pie" | "chart-scatter" | "grid-3x3" | "activity" | "gauge" | "trending-up" | "trending-down" | "clipboard-list" | "credit-card" | "external-link" | "languages" | "megaphone" | "monitor" | "store" | "user-round" | "home" | "user-plus" | "user-check" | "hand" | "users" | "bike" | "building-2" | "package" | "package-plus" | "package-open" | "rotate-ccw" | "bar-chart-3" | "log-out" | "panel-left-close" | "panel-left-open" | "panel-left" | "calendar" | "chevron-right" | "chevron-left" | "chevron-down" | "chevron-up" | "plus" | "minus" | "chevrons-left" | "chevrons-right" | "x" | "check" | "alert-circle" | "info" | "copy" | "type" | "tag" | "ticket" | "square" | "square-check" | "circle-dot" | "circle-user" | "layout-grid" | "panels-top-left" | "panel-top" | "rows-3" | "book-open" | "palette" | "bell" | "phone" | "settings" | "align-left" | "toggle-left" | "arrow-up" | "arrow-down" | "chevrons-up-down" | "chevrons-up" | "chevrons-down" | "star" | "message-square" | "table" | "qr-code" | "eye" | "eye-off" | "user" | "check-circle" | "arrows-clockwise" | "menu" | "file-text" | "file-check" | "hash" | "map-pin" | "inbox" | "arrow-right" | "refresh-cw" | "loader-circle" | "locate-fixed" | "locate-off" | "bug" | "scroll-text" | "moon" | "sun" | "search-x" | "command" | "sparkles" | "triangle-alert" | "octagon-x" | "ban" | "ellipsis" | "ellipsis-vertical" | "grip-vertical" | "upload" | "image" | "image-off" | "utensils" | "zoom-in" | "zoom-out" | "trash-2" | "clock" | "pencil" | "circle-help" | "stock" | "allergen-cereals-gluten" | "allergen-crustaceans" | "allergen-eggs" | "allergen-fish" | "allergen-peanuts" | "allergen-soybeans" | "allergen-milk" | "allergen-nuts" | "allergen-celery" | "allergen-mustard" | "allergen-sesame" | "allergen-sulphites" | "allergen-lupin" | "allergen-molluscs">;
427
+ protected readonly decrementIconName: _angular_core.Signal<"search" | "filter" | "chart-column" | "chart-line" | "chart-bar" | "chart-area" | "chart-pie" | "chart-scatter" | "grid-3x3" | "activity" | "gauge" | "trending-up" | "trending-down" | "clipboard-list" | "credit-card" | "external-link" | "languages" | "megaphone" | "monitor" | "store" | "user-round" | "home" | "user-plus" | "user-check" | "hand" | "users" | "bike" | "building-2" | "package" | "package-plus" | "package-open" | "rotate-ccw" | "bar-chart-3" | "log-out" | "panel-left-close" | "panel-left-open" | "panel-left" | "calendar" | "chevron-right" | "chevron-left" | "chevron-down" | "chevron-up" | "plus" | "minus" | "chevrons-left" | "chevrons-right" | "x" | "check" | "alert-circle" | "info" | "copy" | "type" | "tag" | "ticket" | "square" | "square-check" | "circle-dot" | "circle-user" | "layout-grid" | "panels-top-left" | "panel-top" | "rows-3" | "book-open" | "palette" | "bell" | "phone" | "settings" | "align-left" | "toggle-left" | "arrow-up" | "arrow-down" | "chevrons-up-down" | "chevrons-up" | "chevrons-down" | "star" | "message-square" | "table" | "qr-code" | "eye" | "eye-off" | "user" | "check-circle" | "arrows-clockwise" | "menu" | "file-text" | "file-check" | "hash" | "map-pin" | "inbox" | "arrow-right" | "refresh-cw" | "loader-circle" | "locate-fixed" | "locate-off" | "bug" | "scroll-text" | "moon" | "sun" | "search-x" | "command" | "sparkles" | "triangle-alert" | "octagon-x" | "ban" | "ellipsis" | "ellipsis-vertical" | "grip-vertical" | "upload" | "image" | "image-off" | "utensils" | "zoom-in" | "zoom-out" | "trash-2" | "clock" | "pencil" | "circle-help" | "stock" | "allergen-cereals-gluten" | "allergen-crustaceans" | "allergen-eggs" | "allergen-fish" | "allergen-peanuts" | "allergen-soybeans" | "allergen-milk" | "allergen-nuts" | "allergen-celery" | "allergen-mustard" | "allergen-sesame" | "allergen-sulphites" | "allergen-lupin" | "allergen-molluscs">;
417
428
  protected readonly canIncrement: _angular_core.Signal<boolean>;
418
429
  protected readonly canDecrement: _angular_core.Signal<boolean>;
419
430
  /** Locale grouping/decimal separators, derived from Intl so parsing matches formatting. */
@@ -841,9 +852,9 @@ declare class SdsToggleSwitch implements ControlValueAccessor {
841
852
  /** Value emitted/stored when the switch is off. */
842
853
  readonly falseValue: _angular_core.InputSignal<unknown>;
843
854
  /** Icon shown on the knob when checked. */
844
- readonly onIcon: _angular_core.InputSignal<"chart-column" | "clipboard-list" | "credit-card" | "external-link" | "languages" | "megaphone" | "monitor" | "store" | "user-round" | "home" | "user-plus" | "user-check" | "hand" | "users" | "bike" | "building-2" | "package" | "package-plus" | "package-open" | "rotate-ccw" | "bar-chart-3" | "search" | "log-out" | "panel-left-close" | "panel-left-open" | "panel-left" | "calendar" | "chevron-right" | "chevron-left" | "chevron-down" | "chevron-up" | "plus" | "minus" | "chevrons-left" | "chevrons-right" | "x" | "check" | "alert-circle" | "info" | "copy" | "type" | "tag" | "ticket" | "square" | "square-check" | "circle-dot" | "circle-user" | "layout-grid" | "panels-top-left" | "panel-top" | "rows-3" | "book-open" | "palette" | "bell" | "phone" | "settings" | "align-left" | "toggle-left" | "arrow-up" | "arrow-down" | "chevrons-up-down" | "chevrons-up" | "chevrons-down" | "star" | "message-square" | "filter" | "table" | "qr-code" | "eye" | "eye-off" | "user" | "check-circle" | "arrows-clockwise" | "menu" | "file-text" | "file-check" | "hash" | "map-pin" | "inbox" | "arrow-right" | "refresh-cw" | "loader-circle" | "locate-fixed" | "locate-off" | "bug" | "scroll-text" | "moon" | "sun" | "search-x" | "command" | "sparkles" | "triangle-alert" | "octagon-x" | "ban" | "ellipsis" | "ellipsis-vertical" | "grip-vertical" | "upload" | "image" | "image-off" | "utensils" | "zoom-in" | "zoom-out" | "trash-2" | "clock" | "pencil" | "circle-help" | "stock" | "allergen-cereals-gluten" | "allergen-crustaceans" | "allergen-eggs" | "allergen-fish" | "allergen-peanuts" | "allergen-soybeans" | "allergen-milk" | "allergen-nuts" | "allergen-celery" | "allergen-mustard" | "allergen-sesame" | "allergen-sulphites" | "allergen-lupin" | "allergen-molluscs" | null>;
855
+ readonly onIcon: _angular_core.InputSignal<"search" | "filter" | "chart-column" | "chart-line" | "chart-bar" | "chart-area" | "chart-pie" | "chart-scatter" | "grid-3x3" | "activity" | "gauge" | "trending-up" | "trending-down" | "clipboard-list" | "credit-card" | "external-link" | "languages" | "megaphone" | "monitor" | "store" | "user-round" | "home" | "user-plus" | "user-check" | "hand" | "users" | "bike" | "building-2" | "package" | "package-plus" | "package-open" | "rotate-ccw" | "bar-chart-3" | "log-out" | "panel-left-close" | "panel-left-open" | "panel-left" | "calendar" | "chevron-right" | "chevron-left" | "chevron-down" | "chevron-up" | "plus" | "minus" | "chevrons-left" | "chevrons-right" | "x" | "check" | "alert-circle" | "info" | "copy" | "type" | "tag" | "ticket" | "square" | "square-check" | "circle-dot" | "circle-user" | "layout-grid" | "panels-top-left" | "panel-top" | "rows-3" | "book-open" | "palette" | "bell" | "phone" | "settings" | "align-left" | "toggle-left" | "arrow-up" | "arrow-down" | "chevrons-up-down" | "chevrons-up" | "chevrons-down" | "star" | "message-square" | "table" | "qr-code" | "eye" | "eye-off" | "user" | "check-circle" | "arrows-clockwise" | "menu" | "file-text" | "file-check" | "hash" | "map-pin" | "inbox" | "arrow-right" | "refresh-cw" | "loader-circle" | "locate-fixed" | "locate-off" | "bug" | "scroll-text" | "moon" | "sun" | "search-x" | "command" | "sparkles" | "triangle-alert" | "octagon-x" | "ban" | "ellipsis" | "ellipsis-vertical" | "grip-vertical" | "upload" | "image" | "image-off" | "utensils" | "zoom-in" | "zoom-out" | "trash-2" | "clock" | "pencil" | "circle-help" | "stock" | "allergen-cereals-gluten" | "allergen-crustaceans" | "allergen-eggs" | "allergen-fish" | "allergen-peanuts" | "allergen-soybeans" | "allergen-milk" | "allergen-nuts" | "allergen-celery" | "allergen-mustard" | "allergen-sesame" | "allergen-sulphites" | "allergen-lupin" | "allergen-molluscs" | null>;
845
856
  /** Icon shown on the knob when unchecked. */
846
- readonly offIcon: _angular_core.InputSignal<"chart-column" | "clipboard-list" | "credit-card" | "external-link" | "languages" | "megaphone" | "monitor" | "store" | "user-round" | "home" | "user-plus" | "user-check" | "hand" | "users" | "bike" | "building-2" | "package" | "package-plus" | "package-open" | "rotate-ccw" | "bar-chart-3" | "search" | "log-out" | "panel-left-close" | "panel-left-open" | "panel-left" | "calendar" | "chevron-right" | "chevron-left" | "chevron-down" | "chevron-up" | "plus" | "minus" | "chevrons-left" | "chevrons-right" | "x" | "check" | "alert-circle" | "info" | "copy" | "type" | "tag" | "ticket" | "square" | "square-check" | "circle-dot" | "circle-user" | "layout-grid" | "panels-top-left" | "panel-top" | "rows-3" | "book-open" | "palette" | "bell" | "phone" | "settings" | "align-left" | "toggle-left" | "arrow-up" | "arrow-down" | "chevrons-up-down" | "chevrons-up" | "chevrons-down" | "star" | "message-square" | "filter" | "table" | "qr-code" | "eye" | "eye-off" | "user" | "check-circle" | "arrows-clockwise" | "menu" | "file-text" | "file-check" | "hash" | "map-pin" | "inbox" | "arrow-right" | "refresh-cw" | "loader-circle" | "locate-fixed" | "locate-off" | "bug" | "scroll-text" | "moon" | "sun" | "search-x" | "command" | "sparkles" | "triangle-alert" | "octagon-x" | "ban" | "ellipsis" | "ellipsis-vertical" | "grip-vertical" | "upload" | "image" | "image-off" | "utensils" | "zoom-in" | "zoom-out" | "trash-2" | "clock" | "pencil" | "circle-help" | "stock" | "allergen-cereals-gluten" | "allergen-crustaceans" | "allergen-eggs" | "allergen-fish" | "allergen-peanuts" | "allergen-soybeans" | "allergen-milk" | "allergen-nuts" | "allergen-celery" | "allergen-mustard" | "allergen-sesame" | "allergen-sulphites" | "allergen-lupin" | "allergen-molluscs" | null>;
857
+ readonly offIcon: _angular_core.InputSignal<"search" | "filter" | "chart-column" | "chart-line" | "chart-bar" | "chart-area" | "chart-pie" | "chart-scatter" | "grid-3x3" | "activity" | "gauge" | "trending-up" | "trending-down" | "clipboard-list" | "credit-card" | "external-link" | "languages" | "megaphone" | "monitor" | "store" | "user-round" | "home" | "user-plus" | "user-check" | "hand" | "users" | "bike" | "building-2" | "package" | "package-plus" | "package-open" | "rotate-ccw" | "bar-chart-3" | "log-out" | "panel-left-close" | "panel-left-open" | "panel-left" | "calendar" | "chevron-right" | "chevron-left" | "chevron-down" | "chevron-up" | "plus" | "minus" | "chevrons-left" | "chevrons-right" | "x" | "check" | "alert-circle" | "info" | "copy" | "type" | "tag" | "ticket" | "square" | "square-check" | "circle-dot" | "circle-user" | "layout-grid" | "panels-top-left" | "panel-top" | "rows-3" | "book-open" | "palette" | "bell" | "phone" | "settings" | "align-left" | "toggle-left" | "arrow-up" | "arrow-down" | "chevrons-up-down" | "chevrons-up" | "chevrons-down" | "star" | "message-square" | "table" | "qr-code" | "eye" | "eye-off" | "user" | "check-circle" | "arrows-clockwise" | "menu" | "file-text" | "file-check" | "hash" | "map-pin" | "inbox" | "arrow-right" | "refresh-cw" | "loader-circle" | "locate-fixed" | "locate-off" | "bug" | "scroll-text" | "moon" | "sun" | "search-x" | "command" | "sparkles" | "triangle-alert" | "octagon-x" | "ban" | "ellipsis" | "ellipsis-vertical" | "grip-vertical" | "upload" | "image" | "image-off" | "utensils" | "zoom-in" | "zoom-out" | "trash-2" | "clock" | "pencil" | "circle-help" | "stock" | "allergen-cereals-gluten" | "allergen-crustaceans" | "allergen-eggs" | "allergen-fish" | "allergen-peanuts" | "allergen-soybeans" | "allergen-milk" | "allergen-nuts" | "allergen-celery" | "allergen-mustard" | "allergen-sesame" | "allergen-sulphites" | "allergen-lupin" | "allergen-molluscs" | null>;
847
858
  readonly hint: _angular_core.InputSignal<string>;
848
859
  readonly error: _angular_core.InputSignal<string>;
849
860
  /**
@@ -1022,7 +1033,7 @@ declare class SdsAvatar {
1022
1033
  * Icon shown instead of initials when there is no usable image (e.g. `utensils` or `image` for a dish).
1023
1034
  * Null (default) keeps the initials.
1024
1035
  */
1025
- readonly fallbackIcon: _angular_core.InputSignal<"chart-column" | "clipboard-list" | "credit-card" | "external-link" | "languages" | "megaphone" | "monitor" | "store" | "user-round" | "home" | "user-plus" | "user-check" | "hand" | "users" | "bike" | "building-2" | "package" | "package-plus" | "package-open" | "rotate-ccw" | "bar-chart-3" | "search" | "log-out" | "panel-left-close" | "panel-left-open" | "panel-left" | "calendar" | "chevron-right" | "chevron-left" | "chevron-down" | "chevron-up" | "plus" | "minus" | "chevrons-left" | "chevrons-right" | "x" | "check" | "alert-circle" | "info" | "copy" | "type" | "tag" | "ticket" | "square" | "square-check" | "circle-dot" | "circle-user" | "layout-grid" | "panels-top-left" | "panel-top" | "rows-3" | "book-open" | "palette" | "bell" | "phone" | "settings" | "align-left" | "toggle-left" | "arrow-up" | "arrow-down" | "chevrons-up-down" | "chevrons-up" | "chevrons-down" | "star" | "message-square" | "filter" | "table" | "qr-code" | "eye" | "eye-off" | "user" | "check-circle" | "arrows-clockwise" | "menu" | "file-text" | "file-check" | "hash" | "map-pin" | "inbox" | "arrow-right" | "refresh-cw" | "loader-circle" | "locate-fixed" | "locate-off" | "bug" | "scroll-text" | "moon" | "sun" | "search-x" | "command" | "sparkles" | "triangle-alert" | "octagon-x" | "ban" | "ellipsis" | "ellipsis-vertical" | "grip-vertical" | "upload" | "image" | "image-off" | "utensils" | "zoom-in" | "zoom-out" | "trash-2" | "clock" | "pencil" | "circle-help" | "stock" | "allergen-cereals-gluten" | "allergen-crustaceans" | "allergen-eggs" | "allergen-fish" | "allergen-peanuts" | "allergen-soybeans" | "allergen-milk" | "allergen-nuts" | "allergen-celery" | "allergen-mustard" | "allergen-sesame" | "allergen-sulphites" | "allergen-lupin" | "allergen-molluscs" | null>;
1036
+ readonly fallbackIcon: _angular_core.InputSignal<"search" | "filter" | "chart-column" | "chart-line" | "chart-bar" | "chart-area" | "chart-pie" | "chart-scatter" | "grid-3x3" | "activity" | "gauge" | "trending-up" | "trending-down" | "clipboard-list" | "credit-card" | "external-link" | "languages" | "megaphone" | "monitor" | "store" | "user-round" | "home" | "user-plus" | "user-check" | "hand" | "users" | "bike" | "building-2" | "package" | "package-plus" | "package-open" | "rotate-ccw" | "bar-chart-3" | "log-out" | "panel-left-close" | "panel-left-open" | "panel-left" | "calendar" | "chevron-right" | "chevron-left" | "chevron-down" | "chevron-up" | "plus" | "minus" | "chevrons-left" | "chevrons-right" | "x" | "check" | "alert-circle" | "info" | "copy" | "type" | "tag" | "ticket" | "square" | "square-check" | "circle-dot" | "circle-user" | "layout-grid" | "panels-top-left" | "panel-top" | "rows-3" | "book-open" | "palette" | "bell" | "phone" | "settings" | "align-left" | "toggle-left" | "arrow-up" | "arrow-down" | "chevrons-up-down" | "chevrons-up" | "chevrons-down" | "star" | "message-square" | "table" | "qr-code" | "eye" | "eye-off" | "user" | "check-circle" | "arrows-clockwise" | "menu" | "file-text" | "file-check" | "hash" | "map-pin" | "inbox" | "arrow-right" | "refresh-cw" | "loader-circle" | "locate-fixed" | "locate-off" | "bug" | "scroll-text" | "moon" | "sun" | "search-x" | "command" | "sparkles" | "triangle-alert" | "octagon-x" | "ban" | "ellipsis" | "ellipsis-vertical" | "grip-vertical" | "upload" | "image" | "image-off" | "utensils" | "zoom-in" | "zoom-out" | "trash-2" | "clock" | "pencil" | "circle-help" | "stock" | "allergen-cereals-gluten" | "allergen-crustaceans" | "allergen-eggs" | "allergen-fish" | "allergen-peanuts" | "allergen-soybeans" | "allergen-milk" | "allergen-nuts" | "allergen-celery" | "allergen-mustard" | "allergen-sesame" | "allergen-sulphites" | "allergen-lupin" | "allergen-molluscs" | null>;
1026
1037
  /** Classes of the placeholder tile behind {@link fallbackIcon}: background and icon colour. */
1027
1038
  readonly placeholderClass: _angular_core.InputSignal<string>;
1028
1039
  /**
@@ -1109,7 +1120,7 @@ declare class SdsAllergenIcon {
1109
1120
  readonly size: _angular_core.InputSignal<string | number>;
1110
1121
  /** Stroke width of the line icon. */
1111
1122
  readonly strokeWidth: _angular_core.InputSignal<number>;
1112
- protected readonly iconName: _angular_core.Signal<"chart-column" | "clipboard-list" | "credit-card" | "external-link" | "languages" | "megaphone" | "monitor" | "store" | "user-round" | "home" | "user-plus" | "user-check" | "hand" | "users" | "bike" | "building-2" | "package" | "package-plus" | "package-open" | "rotate-ccw" | "bar-chart-3" | "search" | "log-out" | "panel-left-close" | "panel-left-open" | "panel-left" | "calendar" | "chevron-right" | "chevron-left" | "chevron-down" | "chevron-up" | "plus" | "minus" | "chevrons-left" | "chevrons-right" | "x" | "check" | "alert-circle" | "info" | "copy" | "type" | "tag" | "ticket" | "square" | "square-check" | "circle-dot" | "circle-user" | "layout-grid" | "panels-top-left" | "panel-top" | "rows-3" | "book-open" | "palette" | "bell" | "phone" | "settings" | "align-left" | "toggle-left" | "arrow-up" | "arrow-down" | "chevrons-up-down" | "chevrons-up" | "chevrons-down" | "star" | "message-square" | "filter" | "table" | "qr-code" | "eye" | "eye-off" | "user" | "check-circle" | "arrows-clockwise" | "menu" | "file-text" | "file-check" | "hash" | "map-pin" | "inbox" | "arrow-right" | "refresh-cw" | "loader-circle" | "locate-fixed" | "locate-off" | "bug" | "scroll-text" | "moon" | "sun" | "search-x" | "command" | "sparkles" | "triangle-alert" | "octagon-x" | "ban" | "ellipsis" | "ellipsis-vertical" | "grip-vertical" | "upload" | "image" | "image-off" | "utensils" | "zoom-in" | "zoom-out" | "trash-2" | "clock" | "pencil" | "circle-help" | "stock" | "allergen-cereals-gluten" | "allergen-crustaceans" | "allergen-eggs" | "allergen-fish" | "allergen-peanuts" | "allergen-soybeans" | "allergen-milk" | "allergen-nuts" | "allergen-celery" | "allergen-mustard" | "allergen-sesame" | "allergen-sulphites" | "allergen-lupin" | "allergen-molluscs" | null>;
1123
+ protected readonly iconName: _angular_core.Signal<"search" | "filter" | "chart-column" | "chart-line" | "chart-bar" | "chart-area" | "chart-pie" | "chart-scatter" | "grid-3x3" | "activity" | "gauge" | "trending-up" | "trending-down" | "clipboard-list" | "credit-card" | "external-link" | "languages" | "megaphone" | "monitor" | "store" | "user-round" | "home" | "user-plus" | "user-check" | "hand" | "users" | "bike" | "building-2" | "package" | "package-plus" | "package-open" | "rotate-ccw" | "bar-chart-3" | "log-out" | "panel-left-close" | "panel-left-open" | "panel-left" | "calendar" | "chevron-right" | "chevron-left" | "chevron-down" | "chevron-up" | "plus" | "minus" | "chevrons-left" | "chevrons-right" | "x" | "check" | "alert-circle" | "info" | "copy" | "type" | "tag" | "ticket" | "square" | "square-check" | "circle-dot" | "circle-user" | "layout-grid" | "panels-top-left" | "panel-top" | "rows-3" | "book-open" | "palette" | "bell" | "phone" | "settings" | "align-left" | "toggle-left" | "arrow-up" | "arrow-down" | "chevrons-up-down" | "chevrons-up" | "chevrons-down" | "star" | "message-square" | "table" | "qr-code" | "eye" | "eye-off" | "user" | "check-circle" | "arrows-clockwise" | "menu" | "file-text" | "file-check" | "hash" | "map-pin" | "inbox" | "arrow-right" | "refresh-cw" | "loader-circle" | "locate-fixed" | "locate-off" | "bug" | "scroll-text" | "moon" | "sun" | "search-x" | "command" | "sparkles" | "triangle-alert" | "octagon-x" | "ban" | "ellipsis" | "ellipsis-vertical" | "grip-vertical" | "upload" | "image" | "image-off" | "utensils" | "zoom-in" | "zoom-out" | "trash-2" | "clock" | "pencil" | "circle-help" | "stock" | "allergen-cereals-gluten" | "allergen-crustaceans" | "allergen-eggs" | "allergen-fish" | "allergen-peanuts" | "allergen-soybeans" | "allergen-milk" | "allergen-nuts" | "allergen-celery" | "allergen-mustard" | "allergen-sesame" | "allergen-sulphites" | "allergen-lupin" | "allergen-molluscs" | null>;
1113
1124
  constructor();
1114
1125
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SdsAllergenIcon, never>;
1115
1126
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<SdsAllergenIcon, "sds-allergen-icon", never, { "allergen": { "alias": "allergen"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "showTitle": { "alias": "showTitle"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "strokeWidth": { "alias": "strokeWidth"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
@@ -1143,7 +1154,7 @@ declare class SdsTriStateChip {
1143
1154
  /** Visible name (e.g. the allergen). Required — the chip has no other accessible name. */
1144
1155
  readonly label: _angular_core.InputSignal<string>;
1145
1156
  /** Optional leading registry icon, e.g. an `allergen-*` pictogram. */
1146
- readonly icon: _angular_core.InputSignal<"chart-column" | "clipboard-list" | "credit-card" | "external-link" | "languages" | "megaphone" | "monitor" | "store" | "user-round" | "home" | "user-plus" | "user-check" | "hand" | "users" | "bike" | "building-2" | "package" | "package-plus" | "package-open" | "rotate-ccw" | "bar-chart-3" | "search" | "log-out" | "panel-left-close" | "panel-left-open" | "panel-left" | "calendar" | "chevron-right" | "chevron-left" | "chevron-down" | "chevron-up" | "plus" | "minus" | "chevrons-left" | "chevrons-right" | "x" | "check" | "alert-circle" | "info" | "copy" | "type" | "tag" | "ticket" | "square" | "square-check" | "circle-dot" | "circle-user" | "layout-grid" | "panels-top-left" | "panel-top" | "rows-3" | "book-open" | "palette" | "bell" | "phone" | "settings" | "align-left" | "toggle-left" | "arrow-up" | "arrow-down" | "chevrons-up-down" | "chevrons-up" | "chevrons-down" | "star" | "message-square" | "filter" | "table" | "qr-code" | "eye" | "eye-off" | "user" | "check-circle" | "arrows-clockwise" | "menu" | "file-text" | "file-check" | "hash" | "map-pin" | "inbox" | "arrow-right" | "refresh-cw" | "loader-circle" | "locate-fixed" | "locate-off" | "bug" | "scroll-text" | "moon" | "sun" | "search-x" | "command" | "sparkles" | "triangle-alert" | "octagon-x" | "ban" | "ellipsis" | "ellipsis-vertical" | "grip-vertical" | "upload" | "image" | "image-off" | "utensils" | "zoom-in" | "zoom-out" | "trash-2" | "clock" | "pencil" | "circle-help" | "stock" | "allergen-cereals-gluten" | "allergen-crustaceans" | "allergen-eggs" | "allergen-fish" | "allergen-peanuts" | "allergen-soybeans" | "allergen-milk" | "allergen-nuts" | "allergen-celery" | "allergen-mustard" | "allergen-sesame" | "allergen-sulphites" | "allergen-lupin" | "allergen-molluscs" | null>;
1157
+ readonly icon: _angular_core.InputSignal<"search" | "filter" | "chart-column" | "chart-line" | "chart-bar" | "chart-area" | "chart-pie" | "chart-scatter" | "grid-3x3" | "activity" | "gauge" | "trending-up" | "trending-down" | "clipboard-list" | "credit-card" | "external-link" | "languages" | "megaphone" | "monitor" | "store" | "user-round" | "home" | "user-plus" | "user-check" | "hand" | "users" | "bike" | "building-2" | "package" | "package-plus" | "package-open" | "rotate-ccw" | "bar-chart-3" | "log-out" | "panel-left-close" | "panel-left-open" | "panel-left" | "calendar" | "chevron-right" | "chevron-left" | "chevron-down" | "chevron-up" | "plus" | "minus" | "chevrons-left" | "chevrons-right" | "x" | "check" | "alert-circle" | "info" | "copy" | "type" | "tag" | "ticket" | "square" | "square-check" | "circle-dot" | "circle-user" | "layout-grid" | "panels-top-left" | "panel-top" | "rows-3" | "book-open" | "palette" | "bell" | "phone" | "settings" | "align-left" | "toggle-left" | "arrow-up" | "arrow-down" | "chevrons-up-down" | "chevrons-up" | "chevrons-down" | "star" | "message-square" | "table" | "qr-code" | "eye" | "eye-off" | "user" | "check-circle" | "arrows-clockwise" | "menu" | "file-text" | "file-check" | "hash" | "map-pin" | "inbox" | "arrow-right" | "refresh-cw" | "loader-circle" | "locate-fixed" | "locate-off" | "bug" | "scroll-text" | "moon" | "sun" | "search-x" | "command" | "sparkles" | "triangle-alert" | "octagon-x" | "ban" | "ellipsis" | "ellipsis-vertical" | "grip-vertical" | "upload" | "image" | "image-off" | "utensils" | "zoom-in" | "zoom-out" | "trash-2" | "clock" | "pencil" | "circle-help" | "stock" | "allergen-cereals-gluten" | "allergen-crustaceans" | "allergen-eggs" | "allergen-fish" | "allergen-peanuts" | "allergen-soybeans" | "allergen-milk" | "allergen-nuts" | "allergen-celery" | "allergen-mustard" | "allergen-sesame" | "allergen-sulphites" | "allergen-lupin" | "allergen-molluscs" | null>;
1147
1158
  readonly size: _angular_core.InputSignal<SdsTriStateChipSize>;
1148
1159
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
1149
1160
  /** Show the state as a small visible caption under the label. */
@@ -1260,7 +1271,7 @@ declare class SdsChip {
1260
1271
  readonly label: _angular_core.InputSignal<string>;
1261
1272
  /** On/off. Two-way: `[(selected)]`. */
1262
1273
  readonly selected: _angular_core.ModelSignal<boolean>;
1263
- readonly icon: _angular_core.InputSignal<"chart-column" | "clipboard-list" | "credit-card" | "external-link" | "languages" | "megaphone" | "monitor" | "store" | "user-round" | "home" | "user-plus" | "user-check" | "hand" | "users" | "bike" | "building-2" | "package" | "package-plus" | "package-open" | "rotate-ccw" | "bar-chart-3" | "search" | "log-out" | "panel-left-close" | "panel-left-open" | "panel-left" | "calendar" | "chevron-right" | "chevron-left" | "chevron-down" | "chevron-up" | "plus" | "minus" | "chevrons-left" | "chevrons-right" | "x" | "check" | "alert-circle" | "info" | "copy" | "type" | "tag" | "ticket" | "square" | "square-check" | "circle-dot" | "circle-user" | "layout-grid" | "panels-top-left" | "panel-top" | "rows-3" | "book-open" | "palette" | "bell" | "phone" | "settings" | "align-left" | "toggle-left" | "arrow-up" | "arrow-down" | "chevrons-up-down" | "chevrons-up" | "chevrons-down" | "star" | "message-square" | "filter" | "table" | "qr-code" | "eye" | "eye-off" | "user" | "check-circle" | "arrows-clockwise" | "menu" | "file-text" | "file-check" | "hash" | "map-pin" | "inbox" | "arrow-right" | "refresh-cw" | "loader-circle" | "locate-fixed" | "locate-off" | "bug" | "scroll-text" | "moon" | "sun" | "search-x" | "command" | "sparkles" | "triangle-alert" | "octagon-x" | "ban" | "ellipsis" | "ellipsis-vertical" | "grip-vertical" | "upload" | "image" | "image-off" | "utensils" | "zoom-in" | "zoom-out" | "trash-2" | "clock" | "pencil" | "circle-help" | "stock" | "allergen-cereals-gluten" | "allergen-crustaceans" | "allergen-eggs" | "allergen-fish" | "allergen-peanuts" | "allergen-soybeans" | "allergen-milk" | "allergen-nuts" | "allergen-celery" | "allergen-mustard" | "allergen-sesame" | "allergen-sulphites" | "allergen-lupin" | "allergen-molluscs" | null>;
1274
+ readonly icon: _angular_core.InputSignal<"search" | "filter" | "chart-column" | "chart-line" | "chart-bar" | "chart-area" | "chart-pie" | "chart-scatter" | "grid-3x3" | "activity" | "gauge" | "trending-up" | "trending-down" | "clipboard-list" | "credit-card" | "external-link" | "languages" | "megaphone" | "monitor" | "store" | "user-round" | "home" | "user-plus" | "user-check" | "hand" | "users" | "bike" | "building-2" | "package" | "package-plus" | "package-open" | "rotate-ccw" | "bar-chart-3" | "log-out" | "panel-left-close" | "panel-left-open" | "panel-left" | "calendar" | "chevron-right" | "chevron-left" | "chevron-down" | "chevron-up" | "plus" | "minus" | "chevrons-left" | "chevrons-right" | "x" | "check" | "alert-circle" | "info" | "copy" | "type" | "tag" | "ticket" | "square" | "square-check" | "circle-dot" | "circle-user" | "layout-grid" | "panels-top-left" | "panel-top" | "rows-3" | "book-open" | "palette" | "bell" | "phone" | "settings" | "align-left" | "toggle-left" | "arrow-up" | "arrow-down" | "chevrons-up-down" | "chevrons-up" | "chevrons-down" | "star" | "message-square" | "table" | "qr-code" | "eye" | "eye-off" | "user" | "check-circle" | "arrows-clockwise" | "menu" | "file-text" | "file-check" | "hash" | "map-pin" | "inbox" | "arrow-right" | "refresh-cw" | "loader-circle" | "locate-fixed" | "locate-off" | "bug" | "scroll-text" | "moon" | "sun" | "search-x" | "command" | "sparkles" | "triangle-alert" | "octagon-x" | "ban" | "ellipsis" | "ellipsis-vertical" | "grip-vertical" | "upload" | "image" | "image-off" | "utensils" | "zoom-in" | "zoom-out" | "trash-2" | "clock" | "pencil" | "circle-help" | "stock" | "allergen-cereals-gluten" | "allergen-crustaceans" | "allergen-eggs" | "allergen-fish" | "allergen-peanuts" | "allergen-soybeans" | "allergen-milk" | "allergen-nuts" | "allergen-celery" | "allergen-mustard" | "allergen-sesame" | "allergen-sulphites" | "allergen-lupin" | "allergen-molluscs" | null>;
1264
1275
  readonly count: _angular_core.InputSignal<number | null | undefined>;
1265
1276
  readonly size: _angular_core.InputSignal<SdsChipSize>;
1266
1277
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
@@ -1572,7 +1583,7 @@ declare class SdsMenu implements OnDestroy {
1572
1583
  /** Accessible name of the built-in icon trigger (required when there is no [triggerText]). */
1573
1584
  readonly triggerLabel: _angular_core.InputSignal<string>;
1574
1585
  /** Icon of the built-in trigger. */
1575
- readonly triggerIcon: _angular_core.InputSignal<"chart-column" | "clipboard-list" | "credit-card" | "external-link" | "languages" | "megaphone" | "monitor" | "store" | "user-round" | "home" | "user-plus" | "user-check" | "hand" | "users" | "bike" | "building-2" | "package" | "package-plus" | "package-open" | "rotate-ccw" | "bar-chart-3" | "search" | "log-out" | "panel-left-close" | "panel-left-open" | "panel-left" | "calendar" | "chevron-right" | "chevron-left" | "chevron-down" | "chevron-up" | "plus" | "minus" | "chevrons-left" | "chevrons-right" | "x" | "check" | "alert-circle" | "info" | "copy" | "type" | "tag" | "ticket" | "square" | "square-check" | "circle-dot" | "circle-user" | "layout-grid" | "panels-top-left" | "panel-top" | "rows-3" | "book-open" | "palette" | "bell" | "phone" | "settings" | "align-left" | "toggle-left" | "arrow-up" | "arrow-down" | "chevrons-up-down" | "chevrons-up" | "chevrons-down" | "star" | "message-square" | "filter" | "table" | "qr-code" | "eye" | "eye-off" | "user" | "check-circle" | "arrows-clockwise" | "menu" | "file-text" | "file-check" | "hash" | "map-pin" | "inbox" | "arrow-right" | "refresh-cw" | "loader-circle" | "locate-fixed" | "locate-off" | "bug" | "scroll-text" | "moon" | "sun" | "search-x" | "command" | "sparkles" | "triangle-alert" | "octagon-x" | "ban" | "ellipsis" | "ellipsis-vertical" | "grip-vertical" | "upload" | "image" | "image-off" | "utensils" | "zoom-in" | "zoom-out" | "trash-2" | "clock" | "pencil" | "circle-help" | "stock" | "allergen-cereals-gluten" | "allergen-crustaceans" | "allergen-eggs" | "allergen-fish" | "allergen-peanuts" | "allergen-soybeans" | "allergen-milk" | "allergen-nuts" | "allergen-celery" | "allergen-mustard" | "allergen-sesame" | "allergen-sulphites" | "allergen-lupin" | "allergen-molluscs">;
1586
+ readonly triggerIcon: _angular_core.InputSignal<"search" | "filter" | "chart-column" | "chart-line" | "chart-bar" | "chart-area" | "chart-pie" | "chart-scatter" | "grid-3x3" | "activity" | "gauge" | "trending-up" | "trending-down" | "clipboard-list" | "credit-card" | "external-link" | "languages" | "megaphone" | "monitor" | "store" | "user-round" | "home" | "user-plus" | "user-check" | "hand" | "users" | "bike" | "building-2" | "package" | "package-plus" | "package-open" | "rotate-ccw" | "bar-chart-3" | "log-out" | "panel-left-close" | "panel-left-open" | "panel-left" | "calendar" | "chevron-right" | "chevron-left" | "chevron-down" | "chevron-up" | "plus" | "minus" | "chevrons-left" | "chevrons-right" | "x" | "check" | "alert-circle" | "info" | "copy" | "type" | "tag" | "ticket" | "square" | "square-check" | "circle-dot" | "circle-user" | "layout-grid" | "panels-top-left" | "panel-top" | "rows-3" | "book-open" | "palette" | "bell" | "phone" | "settings" | "align-left" | "toggle-left" | "arrow-up" | "arrow-down" | "chevrons-up-down" | "chevrons-up" | "chevrons-down" | "star" | "message-square" | "table" | "qr-code" | "eye" | "eye-off" | "user" | "check-circle" | "arrows-clockwise" | "menu" | "file-text" | "file-check" | "hash" | "map-pin" | "inbox" | "arrow-right" | "refresh-cw" | "loader-circle" | "locate-fixed" | "locate-off" | "bug" | "scroll-text" | "moon" | "sun" | "search-x" | "command" | "sparkles" | "triangle-alert" | "octagon-x" | "ban" | "ellipsis" | "ellipsis-vertical" | "grip-vertical" | "upload" | "image" | "image-off" | "utensils" | "zoom-in" | "zoom-out" | "trash-2" | "clock" | "pencil" | "circle-help" | "stock" | "allergen-cereals-gluten" | "allergen-crustaceans" | "allergen-eggs" | "allergen-fish" | "allergen-peanuts" | "allergen-soybeans" | "allergen-milk" | "allergen-nuts" | "allergen-celery" | "allergen-mustard" | "allergen-sesame" | "allergen-sulphites" | "allergen-lupin" | "allergen-molluscs">;
1576
1587
  /** Optional visible text on the built-in trigger (then it is its name). */
1577
1588
  readonly triggerText: _angular_core.InputSignal<string>;
1578
1589
  /** Accessible name of the menu itself; defaults to the trigger's name. */
@@ -2082,6 +2093,18 @@ declare function isOutOfRange(d: Date, min: Date | null, max: Date | null): bool
2082
2093
  declare function isoDay(d: Date): string;
2083
2094
  /** Format a date as dd/MM/yyyy (default display format). */
2084
2095
  declare function formatDdMmYyyy(d: Date): string;
2096
+ /** Whole calendar days from `a` to `b` (b − a), ignoring time-of-day and DST shifts. */
2097
+ declare function diffInDays(a: Date, b: Date): number;
2098
+ /**
2099
+ * Format an inclusive day range for display, e.g. `1–7 Oct 2026`, `28 Sept – 4 Oct 2026` or
2100
+ * `20 Dec 2026 – 3 Jan 2027` (en-GB). Uses `Intl.DateTimeFormat#formatRange`, which collapses the
2101
+ * parts both ends share; falls back to `start – end` where it is unavailable. A one-day range prints
2102
+ * a single date.
2103
+ */
2104
+ declare function formatDateRange(range: {
2105
+ start: Date;
2106
+ end: Date;
2107
+ }, locale?: string, options?: Intl.DateTimeFormatOptions): string;
2085
2108
 
2086
2109
  type CalView = 'day' | 'month' | 'year';
2087
2110
  interface DayCell {
@@ -2329,6 +2352,273 @@ declare class SdsDatePicker implements ControlValueAccessor, OnDestroy {
2329
2352
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<SdsDatePicker, "sds-date-picker", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "firstDayOfWeek": { "alias": "firstDayOfWeek"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "inline": { "alias": "inline"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "showActions": { "alias": "showActions"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "showTime": { "alias": "showTime"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; "timeLabel": { "alias": "timeLabel"; "required": false; "isSignal": true; }; "hoursLabel": { "alias": "hoursLabel"; "required": false; "isSignal": true; }; "minutesLabel": { "alias": "minutesLabel"; "required": false; "isSignal": true; }; "doneLabel": { "alias": "doneLabel"; "required": false; "isSignal": true; }; "clearLabel": { "alias": "clearLabel"; "required": false; "isSignal": true; }; "openCalendarLabel": { "alias": "openCalendarLabel"; "required": false; "isSignal": true; }; "closeCalendarLabel": { "alias": "closeCalendarLabel"; "required": false; "isSignal": true; }; "panelLabel": { "alias": "panelLabel"; "required": false; "isSignal": true; }; "calendarLabel": { "alias": "calendarLabel"; "required": false; "isSignal": true; }; "previousLabel": { "alias": "previousLabel"; "required": false; "isSignal": true; }; "nextLabel": { "alias": "nextLabel"; "required": false; "isSignal": true; }; "todayActionLabel": { "alias": "todayActionLabel"; "required": false; "isSignal": true; }; "clearActionLabel": { "alias": "clearActionLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2330
2353
  }
2331
2354
 
2355
+ /**
2356
+ * An inclusive range of whole days. Both ends are local midnight (`startOfDay`); `end` is the last
2357
+ * day IN the range, so a one-day range has `start` and `end` on the same day.
2358
+ */
2359
+ interface SdsDateRange {
2360
+ start: Date;
2361
+ end: Date;
2362
+ }
2363
+ /**
2364
+ * A quick range shown in the left column of `<sds-date-range-picker>`. `range` is a function so
2365
+ * relative presets ("last 30 days") are computed when the panel opens, not when the app boots.
2366
+ */
2367
+ interface SdsDateRangePreset {
2368
+ /** Stable id, emitted by `(presetSelect)` — e.g. `'30d'`; keep it out of the translated text. */
2369
+ id: string;
2370
+ /** Visible text (translate it in the app). */
2371
+ label: string;
2372
+ range: () => SdsDateRange;
2373
+ }
2374
+ /** Same first and last day (time-of-day ignored). `null` only equals `null`. */
2375
+ declare function isSameRange(a: SdsDateRange | null | undefined, b: SdsDateRange | null | undefined): boolean;
2376
+ /** The last `days` days, today included: `sdsLastDays(7)` = today − 6 … today. */
2377
+ declare function sdsLastDays(days: number, today?: Date): SdsDateRange;
2378
+ /**
2379
+ * The last `months` months, today included: `sdsLastMonths(12)` on 13 Oct 2026 = 14 Oct 2025 …
2380
+ * 13 Oct 2026 (the day after the same day `months` months ago, clamped to short months).
2381
+ */
2382
+ declare function sdsLastMonths(months: number, today?: Date): SdsDateRange;
2383
+
2384
+ /** Where the soft in-range band sits behind a day: none, the whole cell, or one half of it. */
2385
+ type Band = 'none' | 'full' | 'right' | 'left';
2386
+ interface RangeCell {
2387
+ key: string;
2388
+ /** `null` = a filler cell before the 1st / after the last day of the month (rendered empty). */
2389
+ date: Date | null;
2390
+ day: number;
2391
+ today: boolean;
2392
+ disabled: boolean;
2393
+ tabbable: boolean;
2394
+ /** First day of the range. */
2395
+ isStart: boolean;
2396
+ /** Last day of a COMMITTED range (end set). */
2397
+ isEnd: boolean;
2398
+ /** Hovered/focused day previewed as the end while choosing it. */
2399
+ isPreviewEnd: boolean;
2400
+ /** Strictly between start and the (committed or previewed) end. */
2401
+ inRange: boolean;
2402
+ band: Band;
2403
+ roundLeft: boolean;
2404
+ roundRight: boolean;
2405
+ }
2406
+ interface MonthView {
2407
+ key: string;
2408
+ title: string;
2409
+ weeks: RangeCell[][];
2410
+ }
2411
+ /**
2412
+ * Range calendar: one or two side-by-side months on which a day range is picked with two clicks.
2413
+ * Used by `<sds-date-range-picker>`, and usable on its own (bind `[(start)]` and `[(end)]`).
2414
+ *
2415
+ * Selection rule: the first click sets `start` (and clears `end`); the second sets `end` — or, when
2416
+ * it lands BEFORE `start`, becomes the new `start`. Clicking the start day again gives a one-day
2417
+ * range. While the end is being chosen, the band previews start → hovered (or keyboard-focused) day.
2418
+ * `maxDays` caps the span: once a start is picked, days past `start + maxDays − 1` are disabled.
2419
+ *
2420
+ * Bare (no border / shadow / background): place it in your own card or panel.
2421
+ *
2422
+ * Keyboard: arrows move by day / week, Home / End to the week's start / end, PageUp / PageDown by
2423
+ * month (roving tabindex across both months); Enter / Space picks the focused day.
2424
+ *
2425
+ * @example
2426
+ * <sds-range-calendar [(start)]="from" [(end)]="to" [max]="today" />
2427
+ */
2428
+ declare class SdsRangeCalendar {
2429
+ private readonly host;
2430
+ private readonly injector;
2431
+ /** First day of the range (two-way: `[(start)]`). */
2432
+ readonly start: _angular_core.ModelSignal<Date | null>;
2433
+ /** Last day of the range, inclusive (two-way: `[(end)]`). `null` while the end is being chosen. */
2434
+ readonly end: _angular_core.ModelSignal<Date | null>;
2435
+ readonly min: _angular_core.InputSignal<Date | null>;
2436
+ readonly max: _angular_core.InputSignal<Date | null>;
2437
+ /** Longest selectable span in days (start and end included). `null` = no limit. */
2438
+ readonly maxDays: _angular_core.InputSignal<number | null>;
2439
+ /** 0 = Sunday, 1 = Monday (default, European). */
2440
+ readonly firstDayOfWeek: _angular_core.InputSignal<0 | 1>;
2441
+ /** BCP 47 locale for month and weekday names. Defaults to `en-GB`; pass the app's locale. */
2442
+ readonly locale: _angular_core.InputSignal<string>;
2443
+ /** Months shown side by side (from the `sm` breakpoint; always one below it). */
2444
+ readonly months: _angular_core.InputSignal<1 | 2>;
2445
+ /** Accessible name of the calendar group. English default — translate it in the app. */
2446
+ readonly calendarLabel: _angular_core.InputSignal<string>;
2447
+ /** Accessible name of the icon-only "previous month" button (its ONLY name — translate it). */
2448
+ readonly previousLabel: _angular_core.InputSignal<string>;
2449
+ /** Accessible name of the icon-only "next month" button. See {@link previousLabel}. */
2450
+ readonly nextLabel: _angular_core.InputSignal<string>;
2451
+ /** Emitted on every day pick (start or end). */
2452
+ readonly daySelect: _angular_core.OutputEmitterRef<Date>;
2453
+ /** Emitted when a pick completes the range (both ends set). */
2454
+ readonly rangeSelect: _angular_core.OutputEmitterRef<SdsDateRange>;
2455
+ /** The day under the pointer / keyboard focus (`null` when the pointer leaves the grid). */
2456
+ readonly dayHover: _angular_core.OutputEmitterRef<Date | null>;
2457
+ /** First month on screen. */
2458
+ protected readonly viewDate: _angular_core.WritableSignal<Date>;
2459
+ protected readonly focusedDate: _angular_core.WritableSignal<Date>;
2460
+ protected readonly hovered: _angular_core.WritableSignal<Date | null>;
2461
+ private readonly wide;
2462
+ /** Months actually rendered: {@link months}, but one on narrow viewports. */
2463
+ protected readonly monthsShown: _angular_core.Signal<2 | 1>;
2464
+ constructor();
2465
+ private watchViewport;
2466
+ protected readonly navBtn = "inline-flex h-8 w-8 items-center justify-center rounded-control text-ink-soft hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand-500 disabled:cursor-not-allowed disabled:opacity-40";
2467
+ protected readonly weekdayLabels: _angular_core.Signal<string[]>;
2468
+ /** The end used for drawing: the committed end, else the previewed (hovered) one. */
2469
+ private readonly previewEnd;
2470
+ protected readonly prevDisabled: _angular_core.Signal<boolean>;
2471
+ protected readonly nextDisabled: _angular_core.Signal<boolean>;
2472
+ protected readonly monthViews: _angular_core.Signal<MonthView[]>;
2473
+ private isDisabled;
2474
+ protected selectDay(d: Date): void;
2475
+ protected setHover(d: Date | null): void;
2476
+ protected onDayFocus(d: Date): void;
2477
+ protected shiftView(delta: number): void;
2478
+ private isVisible;
2479
+ /** Show `d`'s month first, or — with `last` — as the right-most month. */
2480
+ private anchorView;
2481
+ protected onGridKeydown(e: KeyboardEvent): void;
2482
+ /**
2483
+ * Show and focus the active day: the range's end (as the right-most month), else its start, else
2484
+ * today (right-most when `max` is this month or earlier, so a "past only" calendar does not open on
2485
+ * an all-disabled next month). Called by the picker when its panel opens.
2486
+ */
2487
+ focusActiveCell(): void;
2488
+ private focusHandle?;
2489
+ /**
2490
+ * Focus a day once it is rendered. A month change re-renders the grid, so try after the next
2491
+ * render AND on a timer: whichever runs once the cell exists wins (focusing twice is harmless),
2492
+ * and the timer still fires when nothing changed and no render is coming.
2493
+ */
2494
+ private focusCell;
2495
+ protected iso(d: Date): string;
2496
+ protected fullLabel(d: Date): string;
2497
+ protected bandClass(cell: RangeCell): string;
2498
+ protected dayClass(cell: RangeCell): string;
2499
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SdsRangeCalendar, never>;
2500
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SdsRangeCalendar, "sds-range-calendar", never, { "start": { "alias": "start"; "required": false; "isSignal": true; }; "end": { "alias": "end"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "maxDays": { "alias": "maxDays"; "required": false; "isSignal": true; }; "firstDayOfWeek": { "alias": "firstDayOfWeek"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "months": { "alias": "months"; "required": false; "isSignal": true; }; "calendarLabel": { "alias": "calendarLabel"; "required": false; "isSignal": true; }; "previousLabel": { "alias": "previousLabel"; "required": false; "isSignal": true; }; "nextLabel": { "alias": "nextLabel"; "required": false; "isSignal": true; }; }, { "start": "startChange"; "end": "endChange"; "daySelect": "daySelect"; "rangeSelect": "rangeSelect"; "dayHover": "dayHover"; }, never, never, true, never>;
2501
+ }
2502
+
2503
+ type SdsDateRangePickerSize = 'sm' | 'md' | 'lg';
2504
+ /**
2505
+ * Date range picker: a field that opens a panel with quick ranges (presets) on the left and a
2506
+ * two-month range calendar on the right. A preset applies at once and closes the panel; a custom
2507
+ * range is picked with two clicks and stays PENDING until "Apply" (Cancel, Escape and a click away
2508
+ * discard it).
2509
+ *
2510
+ * The value is an inclusive `SdsDateRange` (`{ start, end }`, local midnight) or `null`, bound with
2511
+ * `[(value)]` (a `model`, not a ControlValueAccessor). `(presetSelect)` emits the preset `id` when
2512
+ * one is chosen, and `activePresetId()` tells which preset the current value equals (`null` = a
2513
+ * custom range), so an app can remember "30d" rather than two dates.
2514
+ *
2515
+ * Every visible and accessible string is an input with an English default — translate them all.
2516
+ *
2517
+ * @example
2518
+ * <sds-date-range-picker label="Period" [presets]="presets" [max]="today" [(value)]="range" />
2519
+ */
2520
+ declare class SdsDateRangePicker implements OnDestroy {
2521
+ private readonly host;
2522
+ private readonly injector;
2523
+ private readonly uid;
2524
+ protected readonly fieldId: string;
2525
+ protected readonly labelId: string;
2526
+ protected readonly valueId: string;
2527
+ /** The selected range (two-way: `[(value)]`), `null` when none. Day granularity, end inclusive. */
2528
+ readonly value: _angular_core.ModelSignal<SdsDateRange | null>;
2529
+ /** Quick ranges listed on the left of the panel; choosing one applies it and closes the panel. */
2530
+ readonly presets: _angular_core.InputSignal<readonly SdsDateRangePreset[]>;
2531
+ readonly min: _angular_core.InputSignal<Date | null>;
2532
+ readonly max: _angular_core.InputSignal<Date | null>;
2533
+ /** Longest custom range in days (start and end included). `null` = no limit. */
2534
+ readonly maxDays: _angular_core.InputSignal<number | null>;
2535
+ /** 0 = Sunday, 1 = Monday (default, European). */
2536
+ readonly firstDayOfWeek: _angular_core.InputSignal<0 | 1>;
2537
+ /** BCP 47 locale for the calendar and the default range format. Defaults to `en-GB`. */
2538
+ readonly locale: _angular_core.InputSignal<string>;
2539
+ readonly size: _angular_core.InputSignal<SdsDateRangePickerSize>;
2540
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
2541
+ /** Months side by side in the panel (from the `sm` breakpoint; always one below it). */
2542
+ readonly months: _angular_core.InputSignal<1 | 2>;
2543
+ /**
2544
+ * Display formatter for the field. Default: `Intl.DateTimeFormat#formatRange` with day, short
2545
+ * month and year in {@link locale} (e.g. `1–7 Oct 2026`) — see `formatDateRange`.
2546
+ */
2547
+ readonly format: _angular_core.InputSignal<((range: SdsDateRange) => string) | null>;
2548
+ /** Visible label above the field. */
2549
+ readonly label: _angular_core.InputSignal<string>;
2550
+ /** Accessible name when there is no visible {@link label}. */
2551
+ readonly ariaLabel: _angular_core.InputSignal<string>;
2552
+ /** Field text when no range is selected. */
2553
+ readonly placeholder: _angular_core.InputSignal<string>;
2554
+ /** Accessible name of the overlay dialog. */
2555
+ readonly panelLabel: _angular_core.InputSignal<string>;
2556
+ /** Heading (and group name) of the presets column. */
2557
+ readonly presetsLabel: _angular_core.InputSignal<string>;
2558
+ /** Caption of the pending start date in the panel footer. */
2559
+ readonly startLabel: _angular_core.InputSignal<string>;
2560
+ /** Caption of the pending end date in the panel footer. */
2561
+ readonly endLabel: _angular_core.InputSignal<string>;
2562
+ /** Text of the footer's apply action. */
2563
+ readonly applyLabel: _angular_core.InputSignal<string>;
2564
+ /** Text of the footer's cancel action. */
2565
+ readonly cancelLabel: _angular_core.InputSignal<string>;
2566
+ /** Accessible name of the calendar group (forwarded to `<sds-range-calendar>`). */
2567
+ readonly calendarLabel: _angular_core.InputSignal<string>;
2568
+ /** Accessible name of the icon-only "previous month" button. */
2569
+ readonly previousLabel: _angular_core.InputSignal<string>;
2570
+ /** Accessible name of the icon-only "next month" button. */
2571
+ readonly nextLabel: _angular_core.InputSignal<string>;
2572
+ /** Emits the preset `id` when a preset is chosen (after `value` has been updated). */
2573
+ readonly presetSelect: _angular_core.OutputEmitterRef<string>;
2574
+ protected readonly open: _angular_core.WritableSignal<boolean>;
2575
+ protected readonly pendingStart: _angular_core.WritableSignal<Date | null>;
2576
+ protected readonly pendingEnd: _angular_core.WritableSignal<Date | null>;
2577
+ private readonly calendar;
2578
+ private readonly trigger;
2579
+ /** The overlay panel, relocated to document.body while open. */
2580
+ private panelEl;
2581
+ /** Id of the preset the current value equals, or `null` (no value, or a custom range). */
2582
+ readonly activePresetId: _angular_core.Signal<string | null>;
2583
+ protected readonly pendingPresetId: _angular_core.Signal<string | null>;
2584
+ protected readonly displayValue: _angular_core.Signal<string>;
2585
+ private readonly dayFmt;
2586
+ protected readonly pendingStartText: _angular_core.Signal<string>;
2587
+ protected readonly pendingEndText: _angular_core.Signal<string>;
2588
+ protected readonly canApply: _angular_core.Signal<boolean>;
2589
+ protected readonly triggerClasses: _angular_core.Signal<string>;
2590
+ protected readonly cancelBtn = "rounded-control px-3 py-1.5 text-sm font-medium text-ink-soft hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand-500";
2591
+ protected readonly applyBtn = "rounded-control bg-brand-600 px-3 py-1.5 text-sm font-semibold text-white hover:bg-brand-700 dark:hover:bg-[color:var(--sds-dark-primary-hover,var(--color-brand-700))] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand-500 focus-visible:ring-offset-1 focus-visible:ring-offset-surface disabled:cursor-not-allowed disabled:opacity-40";
2592
+ protected presetClass(active: boolean): string;
2593
+ private presetIdFor;
2594
+ protected toggle(event?: Event): void;
2595
+ protected onTriggerArrowDown(event: Event): void;
2596
+ protected openPanel(): void;
2597
+ /** Close the panel, discarding a pending (un-applied) custom range. */
2598
+ protected close(returnFocus?: boolean): void;
2599
+ protected choosePreset(p: SdsDateRangePreset): void;
2600
+ protected apply(): void;
2601
+ /**
2602
+ * Escape closes the panel and consumes the event while it is open, so an ancestor modal does not
2603
+ * also dismiss on the same keystroke. When closed, the event passes through.
2604
+ */
2605
+ protected onEscape(event: Event): void;
2606
+ /**
2607
+ * Self-contained Tab trap for the overlay. The panel lives in document.body, outside any ancestor
2608
+ * modal's focus trap; this keeps Tab / Shift+Tab cycling within the panel's own focusables.
2609
+ */
2610
+ protected onPanelKeydown(event: KeyboardEvent): void;
2611
+ protected onDocumentClick(event: MouseEvent): void;
2612
+ private readonly reflow;
2613
+ private listening;
2614
+ private addReflowListeners;
2615
+ private removeReflowListeners;
2616
+ private positionPanel;
2617
+ ngOnDestroy(): void;
2618
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SdsDateRangePicker, never>;
2619
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SdsDateRangePicker, "sds-date-range-picker", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "presets": { "alias": "presets"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "maxDays": { "alias": "maxDays"; "required": false; "isSignal": true; }; "firstDayOfWeek": { "alias": "firstDayOfWeek"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "months": { "alias": "months"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "panelLabel": { "alias": "panelLabel"; "required": false; "isSignal": true; }; "presetsLabel": { "alias": "presetsLabel"; "required": false; "isSignal": true; }; "startLabel": { "alias": "startLabel"; "required": false; "isSignal": true; }; "endLabel": { "alias": "endLabel"; "required": false; "isSignal": true; }; "applyLabel": { "alias": "applyLabel"; "required": false; "isSignal": true; }; "cancelLabel": { "alias": "cancelLabel"; "required": false; "isSignal": true; }; "calendarLabel": { "alias": "calendarLabel"; "required": false; "isSignal": true; }; "previousLabel": { "alias": "previousLabel"; "required": false; "isSignal": true; }; "nextLabel": { "alias": "nextLabel"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "presetSelect": "presetSelect"; }, never, never, true, never>;
2620
+ }
2621
+
2332
2622
  /**
2333
2623
  * Context handed to a custom option template. Lets consumers destructure with
2334
2624
  * `let-option`, `let-selected="selected"`, `let-label="label"`, etc., with full
@@ -3073,7 +3363,7 @@ declare class SdsAddressAutocomplete implements ControlValueAccessor, OnDestroy
3073
3363
  readonly appearance: _angular_core.InputSignal<SdsAddressAutocompleteAppearance>;
3074
3364
  readonly shape: _angular_core.InputSignal<SdsAddressAutocompleteShape>;
3075
3365
  /** Decorative icon at the start of the field; `null` for none. */
3076
- readonly leadingIcon: _angular_core.InputSignal<"chart-column" | "clipboard-list" | "credit-card" | "external-link" | "languages" | "megaphone" | "monitor" | "store" | "user-round" | "home" | "user-plus" | "user-check" | "hand" | "users" | "bike" | "building-2" | "package" | "package-plus" | "package-open" | "rotate-ccw" | "bar-chart-3" | "search" | "log-out" | "panel-left-close" | "panel-left-open" | "panel-left" | "calendar" | "chevron-right" | "chevron-left" | "chevron-down" | "chevron-up" | "plus" | "minus" | "chevrons-left" | "chevrons-right" | "x" | "check" | "alert-circle" | "info" | "copy" | "type" | "tag" | "ticket" | "square" | "square-check" | "circle-dot" | "circle-user" | "layout-grid" | "panels-top-left" | "panel-top" | "rows-3" | "book-open" | "palette" | "bell" | "phone" | "settings" | "align-left" | "toggle-left" | "arrow-up" | "arrow-down" | "chevrons-up-down" | "chevrons-up" | "chevrons-down" | "star" | "message-square" | "filter" | "table" | "qr-code" | "eye" | "eye-off" | "user" | "check-circle" | "arrows-clockwise" | "menu" | "file-text" | "file-check" | "hash" | "map-pin" | "inbox" | "arrow-right" | "refresh-cw" | "loader-circle" | "locate-fixed" | "locate-off" | "bug" | "scroll-text" | "moon" | "sun" | "search-x" | "command" | "sparkles" | "triangle-alert" | "octagon-x" | "ban" | "ellipsis" | "ellipsis-vertical" | "grip-vertical" | "upload" | "image" | "image-off" | "utensils" | "zoom-in" | "zoom-out" | "trash-2" | "clock" | "pencil" | "circle-help" | "stock" | "allergen-cereals-gluten" | "allergen-crustaceans" | "allergen-eggs" | "allergen-fish" | "allergen-peanuts" | "allergen-soybeans" | "allergen-milk" | "allergen-nuts" | "allergen-celery" | "allergen-mustard" | "allergen-sesame" | "allergen-sulphites" | "allergen-lupin" | "allergen-molluscs" | null>;
3366
+ readonly leadingIcon: _angular_core.InputSignal<"search" | "filter" | "chart-column" | "chart-line" | "chart-bar" | "chart-area" | "chart-pie" | "chart-scatter" | "grid-3x3" | "activity" | "gauge" | "trending-up" | "trending-down" | "clipboard-list" | "credit-card" | "external-link" | "languages" | "megaphone" | "monitor" | "store" | "user-round" | "home" | "user-plus" | "user-check" | "hand" | "users" | "bike" | "building-2" | "package" | "package-plus" | "package-open" | "rotate-ccw" | "bar-chart-3" | "log-out" | "panel-left-close" | "panel-left-open" | "panel-left" | "calendar" | "chevron-right" | "chevron-left" | "chevron-down" | "chevron-up" | "plus" | "minus" | "chevrons-left" | "chevrons-right" | "x" | "check" | "alert-circle" | "info" | "copy" | "type" | "tag" | "ticket" | "square" | "square-check" | "circle-dot" | "circle-user" | "layout-grid" | "panels-top-left" | "panel-top" | "rows-3" | "book-open" | "palette" | "bell" | "phone" | "settings" | "align-left" | "toggle-left" | "arrow-up" | "arrow-down" | "chevrons-up-down" | "chevrons-up" | "chevrons-down" | "star" | "message-square" | "table" | "qr-code" | "eye" | "eye-off" | "user" | "check-circle" | "arrows-clockwise" | "menu" | "file-text" | "file-check" | "hash" | "map-pin" | "inbox" | "arrow-right" | "refresh-cw" | "loader-circle" | "locate-fixed" | "locate-off" | "bug" | "scroll-text" | "moon" | "sun" | "search-x" | "command" | "sparkles" | "triangle-alert" | "octagon-x" | "ban" | "ellipsis" | "ellipsis-vertical" | "grip-vertical" | "upload" | "image" | "image-off" | "utensils" | "zoom-in" | "zoom-out" | "trash-2" | "clock" | "pencil" | "circle-help" | "stock" | "allergen-cereals-gluten" | "allergen-crustaceans" | "allergen-eggs" | "allergen-fish" | "allergen-peanuts" | "allergen-soybeans" | "allergen-milk" | "allergen-nuts" | "allergen-celery" | "allergen-mustard" | "allergen-sesame" | "allergen-sulphites" | "allergen-lupin" | "allergen-molluscs" | null>;
3077
3367
  readonly useLocationText: _angular_core.InputSignal<string>;
3078
3368
  readonly locatingText: _angular_core.InputSignal<string>;
3079
3369
  readonly locateFailedText: _angular_core.InputSignal<string>;
@@ -3455,7 +3745,7 @@ declare class SdsTab implements OnInit, OnDestroy {
3455
3745
  readonly value: _angular_core.InputSignal<SdsTabValue>;
3456
3746
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
3457
3747
  /** An icon from the library registry, drawn before the label. */
3458
- readonly icon: _angular_core.InputSignal<"chart-column" | "clipboard-list" | "credit-card" | "external-link" | "languages" | "megaphone" | "monitor" | "store" | "user-round" | "home" | "user-plus" | "user-check" | "hand" | "users" | "bike" | "building-2" | "package" | "package-plus" | "package-open" | "rotate-ccw" | "bar-chart-3" | "search" | "log-out" | "panel-left-close" | "panel-left-open" | "panel-left" | "calendar" | "chevron-right" | "chevron-left" | "chevron-down" | "chevron-up" | "plus" | "minus" | "chevrons-left" | "chevrons-right" | "x" | "check" | "alert-circle" | "info" | "copy" | "type" | "tag" | "ticket" | "square" | "square-check" | "circle-dot" | "circle-user" | "layout-grid" | "panels-top-left" | "panel-top" | "rows-3" | "book-open" | "palette" | "bell" | "phone" | "settings" | "align-left" | "toggle-left" | "arrow-up" | "arrow-down" | "chevrons-up-down" | "chevrons-up" | "chevrons-down" | "star" | "message-square" | "filter" | "table" | "qr-code" | "eye" | "eye-off" | "user" | "check-circle" | "arrows-clockwise" | "menu" | "file-text" | "file-check" | "hash" | "map-pin" | "inbox" | "arrow-right" | "refresh-cw" | "loader-circle" | "locate-fixed" | "locate-off" | "bug" | "scroll-text" | "moon" | "sun" | "search-x" | "command" | "sparkles" | "triangle-alert" | "octagon-x" | "ban" | "ellipsis" | "ellipsis-vertical" | "grip-vertical" | "upload" | "image" | "image-off" | "utensils" | "zoom-in" | "zoom-out" | "trash-2" | "clock" | "pencil" | "circle-help" | "stock" | "allergen-cereals-gluten" | "allergen-crustaceans" | "allergen-eggs" | "allergen-fish" | "allergen-peanuts" | "allergen-soybeans" | "allergen-milk" | "allergen-nuts" | "allergen-celery" | "allergen-mustard" | "allergen-sesame" | "allergen-sulphites" | "allergen-lupin" | "allergen-molluscs" | null>;
3748
+ readonly icon: _angular_core.InputSignal<"search" | "filter" | "chart-column" | "chart-line" | "chart-bar" | "chart-area" | "chart-pie" | "chart-scatter" | "grid-3x3" | "activity" | "gauge" | "trending-up" | "trending-down" | "clipboard-list" | "credit-card" | "external-link" | "languages" | "megaphone" | "monitor" | "store" | "user-round" | "home" | "user-plus" | "user-check" | "hand" | "users" | "bike" | "building-2" | "package" | "package-plus" | "package-open" | "rotate-ccw" | "bar-chart-3" | "log-out" | "panel-left-close" | "panel-left-open" | "panel-left" | "calendar" | "chevron-right" | "chevron-left" | "chevron-down" | "chevron-up" | "plus" | "minus" | "chevrons-left" | "chevrons-right" | "x" | "check" | "alert-circle" | "info" | "copy" | "type" | "tag" | "ticket" | "square" | "square-check" | "circle-dot" | "circle-user" | "layout-grid" | "panels-top-left" | "panel-top" | "rows-3" | "book-open" | "palette" | "bell" | "phone" | "settings" | "align-left" | "toggle-left" | "arrow-up" | "arrow-down" | "chevrons-up-down" | "chevrons-up" | "chevrons-down" | "star" | "message-square" | "table" | "qr-code" | "eye" | "eye-off" | "user" | "check-circle" | "arrows-clockwise" | "menu" | "file-text" | "file-check" | "hash" | "map-pin" | "inbox" | "arrow-right" | "refresh-cw" | "loader-circle" | "locate-fixed" | "locate-off" | "bug" | "scroll-text" | "moon" | "sun" | "search-x" | "command" | "sparkles" | "triangle-alert" | "octagon-x" | "ban" | "ellipsis" | "ellipsis-vertical" | "grip-vertical" | "upload" | "image" | "image-off" | "utensils" | "zoom-in" | "zoom-out" | "trash-2" | "clock" | "pencil" | "circle-help" | "stock" | "allergen-cereals-gluten" | "allergen-crustaceans" | "allergen-eggs" | "allergen-fish" | "allergen-peanuts" | "allergen-soybeans" | "allergen-milk" | "allergen-nuts" | "allergen-celery" | "allergen-mustard" | "allergen-sesame" | "allergen-sulphites" | "allergen-lupin" | "allergen-molluscs" | null>;
3459
3749
  /** A count badge after the label (`null` / unset: none; `0` is shown). */
3460
3750
  readonly count: _angular_core.InputSignal<string | number | null>;
3461
3751
  protected readonly active: _angular_core.Signal<boolean>;
@@ -4514,7 +4804,7 @@ declare class SdsNavGroup {
4514
4804
  /** Turn the label into an expand/collapse control. */
4515
4805
  readonly collapsible: _angular_core.InputSignalWithTransform<boolean, unknown>;
4516
4806
  /** Icon for a collapsible header, so it reads at the same weight as the items it sits among. */
4517
- readonly icon: _angular_core.InputSignal<"chart-column" | "clipboard-list" | "credit-card" | "external-link" | "languages" | "megaphone" | "monitor" | "store" | "user-round" | "home" | "user-plus" | "user-check" | "hand" | "users" | "bike" | "building-2" | "package" | "package-plus" | "package-open" | "rotate-ccw" | "bar-chart-3" | "search" | "log-out" | "panel-left-close" | "panel-left-open" | "panel-left" | "calendar" | "chevron-right" | "chevron-left" | "chevron-down" | "chevron-up" | "plus" | "minus" | "chevrons-left" | "chevrons-right" | "x" | "check" | "alert-circle" | "info" | "copy" | "type" | "tag" | "ticket" | "square" | "square-check" | "circle-dot" | "circle-user" | "layout-grid" | "panels-top-left" | "panel-top" | "rows-3" | "book-open" | "palette" | "bell" | "phone" | "settings" | "align-left" | "toggle-left" | "arrow-up" | "arrow-down" | "chevrons-up-down" | "chevrons-up" | "chevrons-down" | "star" | "message-square" | "filter" | "table" | "qr-code" | "eye" | "eye-off" | "user" | "check-circle" | "arrows-clockwise" | "menu" | "file-text" | "file-check" | "hash" | "map-pin" | "inbox" | "arrow-right" | "refresh-cw" | "loader-circle" | "locate-fixed" | "locate-off" | "bug" | "scroll-text" | "moon" | "sun" | "search-x" | "command" | "sparkles" | "triangle-alert" | "octagon-x" | "ban" | "ellipsis" | "ellipsis-vertical" | "grip-vertical" | "upload" | "image" | "image-off" | "utensils" | "zoom-in" | "zoom-out" | "trash-2" | "clock" | "pencil" | "circle-help" | "stock" | "allergen-cereals-gluten" | "allergen-crustaceans" | "allergen-eggs" | "allergen-fish" | "allergen-peanuts" | "allergen-soybeans" | "allergen-milk" | "allergen-nuts" | "allergen-celery" | "allergen-mustard" | "allergen-sesame" | "allergen-sulphites" | "allergen-lupin" | "allergen-molluscs" | null>;
4807
+ readonly icon: _angular_core.InputSignal<"search" | "filter" | "chart-column" | "chart-line" | "chart-bar" | "chart-area" | "chart-pie" | "chart-scatter" | "grid-3x3" | "activity" | "gauge" | "trending-up" | "trending-down" | "clipboard-list" | "credit-card" | "external-link" | "languages" | "megaphone" | "monitor" | "store" | "user-round" | "home" | "user-plus" | "user-check" | "hand" | "users" | "bike" | "building-2" | "package" | "package-plus" | "package-open" | "rotate-ccw" | "bar-chart-3" | "log-out" | "panel-left-close" | "panel-left-open" | "panel-left" | "calendar" | "chevron-right" | "chevron-left" | "chevron-down" | "chevron-up" | "plus" | "minus" | "chevrons-left" | "chevrons-right" | "x" | "check" | "alert-circle" | "info" | "copy" | "type" | "tag" | "ticket" | "square" | "square-check" | "circle-dot" | "circle-user" | "layout-grid" | "panels-top-left" | "panel-top" | "rows-3" | "book-open" | "palette" | "bell" | "phone" | "settings" | "align-left" | "toggle-left" | "arrow-up" | "arrow-down" | "chevrons-up-down" | "chevrons-up" | "chevrons-down" | "star" | "message-square" | "table" | "qr-code" | "eye" | "eye-off" | "user" | "check-circle" | "arrows-clockwise" | "menu" | "file-text" | "file-check" | "hash" | "map-pin" | "inbox" | "arrow-right" | "refresh-cw" | "loader-circle" | "locate-fixed" | "locate-off" | "bug" | "scroll-text" | "moon" | "sun" | "search-x" | "command" | "sparkles" | "triangle-alert" | "octagon-x" | "ban" | "ellipsis" | "ellipsis-vertical" | "grip-vertical" | "upload" | "image" | "image-off" | "utensils" | "zoom-in" | "zoom-out" | "trash-2" | "clock" | "pencil" | "circle-help" | "stock" | "allergen-cereals-gluten" | "allergen-crustaceans" | "allergen-eggs" | "allergen-fish" | "allergen-peanuts" | "allergen-soybeans" | "allergen-milk" | "allergen-nuts" | "allergen-celery" | "allergen-mustard" | "allergen-sesame" | "allergen-sulphites" | "allergen-lupin" | "allergen-molluscs" | null>;
4518
4808
  /**
4519
4809
  * URL prefix owned by this group, e.g. `/payments`. While the active route starts with it the
4520
4810
  * group counts as active and opens itself — unless the person has explicitly toggled it since.
@@ -4579,7 +4869,7 @@ type SdsNavItemBadgeTone = 'brand' | 'danger' | 'neutral';
4579
4869
  */
4580
4870
  declare class SdsNavItem {
4581
4871
  protected readonly store: SidebarStore;
4582
- readonly icon: _angular_core.InputSignal<"chart-column" | "clipboard-list" | "credit-card" | "external-link" | "languages" | "megaphone" | "monitor" | "store" | "user-round" | "home" | "user-plus" | "user-check" | "hand" | "users" | "bike" | "building-2" | "package" | "package-plus" | "package-open" | "rotate-ccw" | "bar-chart-3" | "search" | "log-out" | "panel-left-close" | "panel-left-open" | "panel-left" | "calendar" | "chevron-right" | "chevron-left" | "chevron-down" | "chevron-up" | "plus" | "minus" | "chevrons-left" | "chevrons-right" | "x" | "check" | "alert-circle" | "info" | "copy" | "type" | "tag" | "ticket" | "square" | "square-check" | "circle-dot" | "circle-user" | "layout-grid" | "panels-top-left" | "panel-top" | "rows-3" | "book-open" | "palette" | "bell" | "phone" | "settings" | "align-left" | "toggle-left" | "arrow-up" | "arrow-down" | "chevrons-up-down" | "chevrons-up" | "chevrons-down" | "star" | "message-square" | "filter" | "table" | "qr-code" | "eye" | "eye-off" | "user" | "check-circle" | "arrows-clockwise" | "menu" | "file-text" | "file-check" | "hash" | "map-pin" | "inbox" | "arrow-right" | "refresh-cw" | "loader-circle" | "locate-fixed" | "locate-off" | "bug" | "scroll-text" | "moon" | "sun" | "search-x" | "command" | "sparkles" | "triangle-alert" | "octagon-x" | "ban" | "ellipsis" | "ellipsis-vertical" | "grip-vertical" | "upload" | "image" | "image-off" | "utensils" | "zoom-in" | "zoom-out" | "trash-2" | "clock" | "pencil" | "circle-help" | "stock" | "allergen-cereals-gluten" | "allergen-crustaceans" | "allergen-eggs" | "allergen-fish" | "allergen-peanuts" | "allergen-soybeans" | "allergen-milk" | "allergen-nuts" | "allergen-celery" | "allergen-mustard" | "allergen-sesame" | "allergen-sulphites" | "allergen-lupin" | "allergen-molluscs" | null>;
4872
+ readonly icon: _angular_core.InputSignal<"search" | "filter" | "chart-column" | "chart-line" | "chart-bar" | "chart-area" | "chart-pie" | "chart-scatter" | "grid-3x3" | "activity" | "gauge" | "trending-up" | "trending-down" | "clipboard-list" | "credit-card" | "external-link" | "languages" | "megaphone" | "monitor" | "store" | "user-round" | "home" | "user-plus" | "user-check" | "hand" | "users" | "bike" | "building-2" | "package" | "package-plus" | "package-open" | "rotate-ccw" | "bar-chart-3" | "log-out" | "panel-left-close" | "panel-left-open" | "panel-left" | "calendar" | "chevron-right" | "chevron-left" | "chevron-down" | "chevron-up" | "plus" | "minus" | "chevrons-left" | "chevrons-right" | "x" | "check" | "alert-circle" | "info" | "copy" | "type" | "tag" | "ticket" | "square" | "square-check" | "circle-dot" | "circle-user" | "layout-grid" | "panels-top-left" | "panel-top" | "rows-3" | "book-open" | "palette" | "bell" | "phone" | "settings" | "align-left" | "toggle-left" | "arrow-up" | "arrow-down" | "chevrons-up-down" | "chevrons-up" | "chevrons-down" | "star" | "message-square" | "table" | "qr-code" | "eye" | "eye-off" | "user" | "check-circle" | "arrows-clockwise" | "menu" | "file-text" | "file-check" | "hash" | "map-pin" | "inbox" | "arrow-right" | "refresh-cw" | "loader-circle" | "locate-fixed" | "locate-off" | "bug" | "scroll-text" | "moon" | "sun" | "search-x" | "command" | "sparkles" | "triangle-alert" | "octagon-x" | "ban" | "ellipsis" | "ellipsis-vertical" | "grip-vertical" | "upload" | "image" | "image-off" | "utensils" | "zoom-in" | "zoom-out" | "trash-2" | "clock" | "pencil" | "circle-help" | "stock" | "allergen-cereals-gluten" | "allergen-crustaceans" | "allergen-eggs" | "allergen-fish" | "allergen-peanuts" | "allergen-soybeans" | "allergen-milk" | "allergen-nuts" | "allergen-celery" | "allergen-mustard" | "allergen-sesame" | "allergen-sulphites" | "allergen-lupin" | "allergen-molluscs" | null>;
4583
4873
  readonly label: _angular_core.InputSignal<string>;
4584
4874
  /** Router link target; when null, the item behaves as a button. */
4585
4875
  readonly link: _angular_core.InputSignal<string | unknown[] | null>;
@@ -4695,7 +4985,7 @@ type SdsMenuItemTone = 'default' | 'danger';
4695
4985
  * <sds-menu-item icon="log-out" label="Sign out" tone="danger" (select)="signOut()" />
4696
4986
  */
4697
4987
  declare class SdsMenuItem {
4698
- readonly icon: _angular_core.InputSignal<"chart-column" | "clipboard-list" | "credit-card" | "external-link" | "languages" | "megaphone" | "monitor" | "store" | "user-round" | "home" | "user-plus" | "user-check" | "hand" | "users" | "bike" | "building-2" | "package" | "package-plus" | "package-open" | "rotate-ccw" | "bar-chart-3" | "search" | "log-out" | "panel-left-close" | "panel-left-open" | "panel-left" | "calendar" | "chevron-right" | "chevron-left" | "chevron-down" | "chevron-up" | "plus" | "minus" | "chevrons-left" | "chevrons-right" | "x" | "check" | "alert-circle" | "info" | "copy" | "type" | "tag" | "ticket" | "square" | "square-check" | "circle-dot" | "circle-user" | "layout-grid" | "panels-top-left" | "panel-top" | "rows-3" | "book-open" | "palette" | "bell" | "phone" | "settings" | "align-left" | "toggle-left" | "arrow-up" | "arrow-down" | "chevrons-up-down" | "chevrons-up" | "chevrons-down" | "star" | "message-square" | "filter" | "table" | "qr-code" | "eye" | "eye-off" | "user" | "check-circle" | "arrows-clockwise" | "menu" | "file-text" | "file-check" | "hash" | "map-pin" | "inbox" | "arrow-right" | "refresh-cw" | "loader-circle" | "locate-fixed" | "locate-off" | "bug" | "scroll-text" | "moon" | "sun" | "search-x" | "command" | "sparkles" | "triangle-alert" | "octagon-x" | "ban" | "ellipsis" | "ellipsis-vertical" | "grip-vertical" | "upload" | "image" | "image-off" | "utensils" | "zoom-in" | "zoom-out" | "trash-2" | "clock" | "pencil" | "circle-help" | "stock" | "allergen-cereals-gluten" | "allergen-crustaceans" | "allergen-eggs" | "allergen-fish" | "allergen-peanuts" | "allergen-soybeans" | "allergen-milk" | "allergen-nuts" | "allergen-celery" | "allergen-mustard" | "allergen-sesame" | "allergen-sulphites" | "allergen-lupin" | "allergen-molluscs" | null>;
4988
+ readonly icon: _angular_core.InputSignal<"search" | "filter" | "chart-column" | "chart-line" | "chart-bar" | "chart-area" | "chart-pie" | "chart-scatter" | "grid-3x3" | "activity" | "gauge" | "trending-up" | "trending-down" | "clipboard-list" | "credit-card" | "external-link" | "languages" | "megaphone" | "monitor" | "store" | "user-round" | "home" | "user-plus" | "user-check" | "hand" | "users" | "bike" | "building-2" | "package" | "package-plus" | "package-open" | "rotate-ccw" | "bar-chart-3" | "log-out" | "panel-left-close" | "panel-left-open" | "panel-left" | "calendar" | "chevron-right" | "chevron-left" | "chevron-down" | "chevron-up" | "plus" | "minus" | "chevrons-left" | "chevrons-right" | "x" | "check" | "alert-circle" | "info" | "copy" | "type" | "tag" | "ticket" | "square" | "square-check" | "circle-dot" | "circle-user" | "layout-grid" | "panels-top-left" | "panel-top" | "rows-3" | "book-open" | "palette" | "bell" | "phone" | "settings" | "align-left" | "toggle-left" | "arrow-up" | "arrow-down" | "chevrons-up-down" | "chevrons-up" | "chevrons-down" | "star" | "message-square" | "table" | "qr-code" | "eye" | "eye-off" | "user" | "check-circle" | "arrows-clockwise" | "menu" | "file-text" | "file-check" | "hash" | "map-pin" | "inbox" | "arrow-right" | "refresh-cw" | "loader-circle" | "locate-fixed" | "locate-off" | "bug" | "scroll-text" | "moon" | "sun" | "search-x" | "command" | "sparkles" | "triangle-alert" | "octagon-x" | "ban" | "ellipsis" | "ellipsis-vertical" | "grip-vertical" | "upload" | "image" | "image-off" | "utensils" | "zoom-in" | "zoom-out" | "trash-2" | "clock" | "pencil" | "circle-help" | "stock" | "allergen-cereals-gluten" | "allergen-crustaceans" | "allergen-eggs" | "allergen-fish" | "allergen-peanuts" | "allergen-soybeans" | "allergen-milk" | "allergen-nuts" | "allergen-celery" | "allergen-mustard" | "allergen-sesame" | "allergen-sulphites" | "allergen-lupin" | "allergen-molluscs" | null>;
4699
4989
  readonly label: _angular_core.InputSignal<string>;
4700
4990
  /** Router link target for an in-app route; when null (default) the item is not a Router link. */
4701
4991
  readonly link: _angular_core.InputSignal<string | unknown[] | null>;
@@ -4951,5 +5241,1382 @@ declare class SdsEnvBanner {
4951
5241
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<SdsEnvBanner, "sds-env-banner", never, { "env": { "alias": "env"; "required": false; "isSignal": true; }; "devSrLabel": { "alias": "devSrLabel"; "required": false; "isSignal": true; }; "testSrLabel": { "alias": "testSrLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
4952
5242
  }
4953
5243
 
4954
- export { SDS_ALLERGENS, SDS_ALLERGEN_ICONS, SDS_ALLERGEN_LABELS_EN, SDS_ICONS, SDS_PHONE_COUNTRIES, SDS_THEME_STORAGE_KEY, SDS_UI_PREF_LANG_PARAM, SDS_UI_PREF_THEME_PARAM, SdsAccordion, SdsAccordionContent, SdsAccordionHeader, SdsAccordionPanel, SdsAccordionStore, SdsAddressAutocomplete, SdsAddressExtra, SdsAllergenIcon, SdsAvatar, SdsBadge, SdsBulkBar, SdsButton, SdsCalendar, SdsCard, SdsCheckbox, SdsChecklistRow, SdsChip, SdsChipGroup, SdsDatePicker, SdsEnvBanner, SdsFileDrop, SdsIcon, SdsImageCropper, SdsInput, SdsInputNumber, SdsLanguageSwitcher, SdsLocalizedInput, SdsMenu, SdsMenuItem, SdsMenuTrigger, SdsMultiSelect, SdsNavGroup, SdsNavItem, SdsOtpInput, SdsPaginator, SdsPhoneInput, SdsRadio, SdsScore, SdsSearchCommand, SdsSegmented, SdsSelect, SdsSelectEmpty, SdsSelectFooter, SdsSelectOption, SdsShell, SdsSidebar, SdsSortableHandle, SdsSortableItem, SdsSortableList, SdsStatusTile, SdsTab, SdsTabList, SdsTabPanel, SdsTabPanels, SdsTable, SdsTableCell, SdsTableEmpty, SdsTableHeader, SdsTableRowExpansion, SdsTabs, SdsTabsStore, SdsTextarea, SdsThemeService, SdsThemeToggle, SdsTimeInput, SdsToastHost, SdsToastService, SdsToggleSwitch, SdsTopbar, SdsTriStateChip, SdsUserMenu, SidebarStore, addDays, addMonths, addMonthsKeepDay, appendUiPrefs, formatDdMmYyyy, formatHhMm, isOutOfRange, isSameDay, isSdsThemeMode, isoDay, pad2, readUiPrefs, sdsFileMatchesAccept, sdsFormatBytes, sdsFormatNational, sdsMatchDialCode, sdsNormalizeSignificant, startOfDay, startOfMonth, stripUiPrefs };
4955
- export type { SdsAccordionActive, SdsAccordionValue, SdsAddressAutocompleteAppearance, SdsAddressAutocompleteShape, SdsAddressAutocompleteSize, SdsAddressExtraContext, SdsAddressExtraPosition, SdsAddressLocateFn, SdsAddressSearchFn, SdsAddressSuggestion, SdsAllergen, SdsAvatarShape, SdsAvatarStatus, SdsBadgeSize, SdsBadgeVariant, SdsBulkBarPosition, SdsButtonShape, SdsButtonSize, SdsButtonVariant, SdsCardVariant, SdsCheckboxSize, SdsChecklistStatus, SdsChipOption, SdsChipSize, SdsCropRect, SdsDatePickerSize, SdsEnvBannerEnv, SdsFileDropAppearance, SdsFileRejection, SdsFileRejectionReason, SdsIconName, SdsIconSize, SdsImageCropperBlobOptions, SdsImageCropperShape, SdsInputAppearance, SdsInputNumberAppearance, SdsInputNumberButtonLayout, SdsInputNumberCurrencyDisplay, SdsInputNumberMode, SdsInputNumberSize, SdsInputShape, SdsInputSize, SdsInputType, SdsLanguageOption, SdsLanguageSwitcherAlign, SdsLanguageSwitcherAppearance, SdsLanguageSwitcherDirection, SdsLocalizedInputSize, SdsLocalizedValue, SdsMenuAction, SdsMenuAlign, SdsMenuEntry, SdsMenuItemTone, SdsMenuSeparator, SdsMultiSelectDisplay, SdsMultiSelectSize, SdsNavItemBadgeTone, SdsOtpInputSize, SdsPaginatorSize, SdsPaginatorState, SdsPhoneCountry, SdsPhoneInputSize, SdsPhoneValue, SdsRadioSize, SdsScoreSize, SdsScoreTier, SdsScoreVariant, SdsSearchAppearance, SdsSearchItem, SdsSegmentedOption, SdsSegmentedSize, SdsSelectAppearance, SdsSelectEmptyContext, SdsSelectFooterContext, SdsSelectOptionContext, SdsSelectSize, SdsShellBackground, SdsSidebarAppearance, SdsSortOrder, SdsSortableAppearance, SdsSortableItemContext, SdsSortableReorderEvent, SdsStatusTileState, SdsTabValue, SdsTableCellCommitEvent, SdsTableCellContext, SdsTableCellErrors, SdsTableColumn, SdsTableEditTrigger, SdsTableEditor, SdsTableEmptyContext, SdsTableHeaderContext, SdsTableLazyEvent, SdsTableRowExpansionContext, SdsTableSelectOption, SdsTableSize, SdsTableSortEvent, SdsTabsVariant, SdsTextareaAppearance, SdsTextareaResize, SdsTextareaSize, SdsTheme, SdsThemeMode, SdsThemeToggleAppearance, SdsTimeInputAppearance, SdsTimeInputSize, SdsToast, SdsToastKind, SdsToggleSwitchSize, SdsTopbarAppearance, SdsTriState, SdsTriStateChipSize, SdsUiPrefs, SdsUserMenuAlign, SdsUserMenuAppearance };
5244
+ /** A value the x / category axis can carry. ISO date strings (`2026-03-01`) are read as dates. */
5245
+ type SdsXValue = string | number | Date;
5246
+ /**
5247
+ * How a chart reads a field from a row: either the property name, or a function. The function form
5248
+ * covers derived values (`row => row.cost / row.units`) and nested data (`row => row.stats.total`).
5249
+ */
5250
+ type SdsAccessor<T, R> = (keyof T & string) | ((row: T, index: number) => R);
5251
+ /** A number format: `Intl.NumberFormatOptions` (locale-aware, the default) or your own function. */
5252
+ type SdsNumberFormat = Intl.NumberFormatOptions | ((value: number) => string);
5253
+ /**
5254
+ * An x-axis format. Options objects are interpreted from the axis kind: `Intl.DateTimeFormatOptions`
5255
+ * on a time axis, `Intl.NumberFormatOptions` on a numeric one. Category axes print the value as-is
5256
+ * unless a function is given.
5257
+ */
5258
+ type SdsXFormat = Intl.DateTimeFormatOptions | Intl.NumberFormatOptions | ((value: SdsXValue) => string);
5259
+ /** What the x axis is. `auto` infers it from the data: Date / ISO string → time, number → linear. */
5260
+ type SdsChartXType = 'auto' | 'time' | 'linear' | 'category';
5261
+ /** Value-axis scale. `log` needs strictly positive values (non-positive points are dropped). */
5262
+ type SdsChartScale = 'linear' | 'log';
5263
+ /**
5264
+ * Where the legend sits. `auto` picks the chart's natural place (top for two or more series, none for
5265
+ * one; right for a donut). `right` falls back to below on narrow containers.
5266
+ */
5267
+ type SdsChartLegend = 'auto' | 'top' | 'bottom' | 'right' | 'none';
5268
+ /** Which gridlines to draw. They are always solid hairlines, never dashed. */
5269
+ type SdsChartGrid = 'y' | 'x' | 'both' | 'none';
5270
+ /** Stacking: `stacked` piles the series, `percent` normalises every stack to 100 %. */
5271
+ type SdsChartStack = 'none' | 'stacked' | 'percent';
5272
+ /** Semantic tone for annotations and single-colour charts. */
5273
+ type SdsChartTone = 'neutral' | 'brand' | 'success' | 'warning' | 'danger';
5274
+ /** One plotted measure. `key` is both the row property it reads and the series' identity. */
5275
+ interface SdsChartSeries<T = any> {
5276
+ /** Row property holding the value — and the stable id used for colour, legend and toggling. */
5277
+ key: string;
5278
+ /** Human label (legend, tooltip, table header). Defaults to `key`. */
5279
+ label?: string;
5280
+ /** Read the value with a function instead of `row[key]` (derived or nested values). */
5281
+ value?: (row: T, index: number) => number | null | undefined;
5282
+ /** Any CSS colour, including `var(--token)`. Defaults to the categorical slot of its index. */
5283
+ color?: string;
5284
+ /** Per-series value format (tooltip, labels, table). Falls back to the chart's `valueFormat`. */
5285
+ format?: SdsNumberFormat;
5286
+ /** Line charts: draw dashed — a forecast, a target or a projection. */
5287
+ dashed?: boolean;
5288
+ /** Bar charts: draw this series as a line over the bars (a combo chart, on the SAME axis). */
5289
+ type?: 'bar' | 'line';
5290
+ }
5291
+ /** A horizontal/vertical reference line — a target, a threshold, a mean. */
5292
+ interface SdsChartReferenceLine {
5293
+ type: 'line';
5294
+ /** `y` (default) draws across the plot at a value; `x` draws down it at an x position. */
5295
+ axis?: 'x' | 'y';
5296
+ value: SdsXValue;
5297
+ label?: string;
5298
+ tone?: SdsChartTone;
5299
+ }
5300
+ /** A shaded range — a normal range, a target zone, a holiday period. */
5301
+ interface SdsChartReferenceBand {
5302
+ type: 'band';
5303
+ axis?: 'x' | 'y';
5304
+ from: SdsXValue;
5305
+ to: SdsXValue;
5306
+ label?: string;
5307
+ tone?: SdsChartTone;
5308
+ }
5309
+ type SdsChartAnnotation = SdsChartReferenceLine | SdsChartReferenceBand;
5310
+ /** One line of the tooltip. `value` is already formatted; `raw` is the number behind it. */
5311
+ interface SdsChartTooltipRow {
5312
+ key: string;
5313
+ label: string;
5314
+ value: string;
5315
+ raw: number | null;
5316
+ color: string;
5317
+ /** Shape of the key glyph: a short line for lines, a square for bars/areas/slices, a dot for points. */
5318
+ shape: 'line' | 'rect' | 'dot';
5319
+ }
5320
+ /** Context handed to a custom `<ng-template sdsChartTooltip let-tip>` template. */
5321
+ interface SdsChartTooltipContext<T = any> {
5322
+ /** Formatted heading (the x value, the category, the slice…). */
5323
+ title: string;
5324
+ rows: SdsChartTooltipRow[];
5325
+ /** Optional footer line (a total, a share…). */
5326
+ footer?: string;
5327
+ /** The source row(s) behind the hovered position. */
5328
+ data: T[];
5329
+ index: number;
5330
+ }
5331
+ /** Emitted when a mark is clicked (or activated with Enter on the keyboard). */
5332
+ interface SdsChartPointEvent<T = any> {
5333
+ /** Series key — or the slice / cell / node id on charts without series. */
5334
+ key: string;
5335
+ /** The source row (null when the mark aggregates several rows, e.g. the "Other" slice). */
5336
+ row: T | null;
5337
+ index: number;
5338
+ value: number | null;
5339
+ x?: SdsXValue;
5340
+ /** The row dimension (heatmap). */
5341
+ y?: SdsXValue;
5342
+ }
5343
+ /** Direction of a KPI change. */
5344
+ type SdsTrendDirection = 'up' | 'down' | 'flat';
5345
+ /** What `SdsChartLabels.kpiChange` receives to build the KPI's spoken change sentence. */
5346
+ interface SdsKpiChangeText {
5347
+ direction: SdsTrendDirection;
5348
+ /** The formatted change WITHOUT its sign, e.g. `12.4%` (empty when `flat`). */
5349
+ delta: string;
5350
+ /** The KPI's `deltaLabel` (e.g. "vs last week"), or `''`. */
5351
+ period: string;
5352
+ /** Whether the change is good news (`upIsGood`); `null` when flat. */
5353
+ good: boolean | null;
5354
+ }
5355
+ /** What `SdsChartLabels.sparklineSummary` receives (numbers already formatted). */
5356
+ interface SdsSparklineSummaryText {
5357
+ /** The sparkline's `label` ('' when none — use `trend` then). */
5358
+ label: string;
5359
+ first: string;
5360
+ last: string;
5361
+ min: string;
5362
+ max: string;
5363
+ count: number;
5364
+ }
5365
+ /**
5366
+ * Every built-in string of the chart family — visible text (empty state, table toggle, table headers,
5367
+ * tooltips) and accessible text (summaries, role descriptions, live announcements). English defaults
5368
+ * ({@link SDS_CHART_LABELS_EN}); translate them once with `provideSdsCharts({ labels })`. Per-chart
5369
+ * inputs (`emptyText`, `otherLabel`, `centerLabel`, `valueLabel`, `rootLabel`, `sizeLabel`) still
5370
+ * override these for one chart.
5371
+ */
5372
+ interface SdsChartLabels {
5373
+ /** Accessible name of the legend list. */
5374
+ legend: string;
5375
+ /** Table-toggle button text while the chart shows. */
5376
+ showTable: string;
5377
+ /** Table-toggle button text while the table shows. */
5378
+ showChart: string;
5379
+ /** Empty-state text (no data). */
5380
+ empty: string;
5381
+ /** A heatmap cell without a value (tooltip). */
5382
+ noData: string;
5383
+ /** `aria-roledescription` of the chart surfaces. */
5384
+ chartRole: string;
5385
+ /** `aria-roledescription` of the heatmap matrix. */
5386
+ heatmapRole: string;
5387
+ /** Default names used in the generated summaries when there is no `heading`. */
5388
+ lineChart: string;
5389
+ barChart: string;
5390
+ donutChart: string;
5391
+ scatterChart: string;
5392
+ heatmap: string;
5393
+ treemap: string;
5394
+ /** Accessible name of the treemap breadcrumb. */
5395
+ breadcrumb: string;
5396
+ /** Spoken name of a sparkline without a `label`. */
5397
+ trend: string;
5398
+ /** Table header of the category column (bar / line / donut). */
5399
+ category: string;
5400
+ /** Table header of a time x column (line). */
5401
+ date: string;
5402
+ /** Name of a measure (donut / treemap table, treemap tooltip, heatmap default `valueLabel`). */
5403
+ value: string;
5404
+ /** Table header of the share-of-total column (donut / treemap). */
5405
+ share: string;
5406
+ /** Table header of the treemap's leaf column. */
5407
+ item: string;
5408
+ /** Table header of the scatter's group column. */
5409
+ group: string;
5410
+ /** Default scatter `sizeLabel` (bubble size). */
5411
+ size: string;
5412
+ /** Donut centre default and the stacked-tooltip footer. */
5413
+ total: string;
5414
+ /** Default donut `otherLabel` (the folded tail). */
5415
+ other: string;
5416
+ /** Default treemap `rootLabel` (breadcrumb root). */
5417
+ all: string;
5418
+ /** Treemap tooltip row: the tile's share of the whole. */
5419
+ shareOfTotal: string;
5420
+ /** Treemap tooltip row: the tile's share of its parent branch. */
5421
+ shareOf: (parent: string) => string;
5422
+ /** One "label: value" pair in spoken readouts (French typography wants `label : value`). */
5423
+ labelValue: (label: string, value: string) => string;
5424
+ /** Donut summary, e.g. "5 slices". */
5425
+ sliceCount: (count: number) => string;
5426
+ /** Donut / treemap summary, e.g. "total 1,284". */
5427
+ totalOf: (value: string) => string;
5428
+ /** Heatmap summary, e.g. "7 rows × 24 columns". */
5429
+ gridSize: (rows: number, columns: number) => string;
5430
+ /** Treemap announcement, e.g. "12 items". */
5431
+ itemCount: (count: number) => string;
5432
+ /** Treemap summary / announcement while zoomed, e.g. "zoomed to Staff › Doctors". */
5433
+ zoomedTo: (path: string) => string;
5434
+ /** Scatter summary from its axis titles, e.g. "Length of stay vs Age". */
5435
+ versus: (y: string, x: string) => string;
5436
+ /** The sparkline's spoken summary. */
5437
+ sparklineSummary: (s: SdsSparklineSummaryText) => string;
5438
+ /** The KPI's spoken change, e.g. "up 12.4% vs last week, favourable". */
5439
+ kpiChange: (c: SdsKpiChangeText) => string;
5440
+ }
5441
+ /** English defaults of {@link SdsChartLabels}. Spread it to override a few keys. */
5442
+ declare const SDS_CHART_LABELS_EN: SdsChartLabels;
5443
+ /** App-wide defaults for every chart. Provide once with `provideSdsCharts()`. */
5444
+ interface SdsChartConfig {
5445
+ /** BCP-47 locale for numbers and dates. A function may read a signal (it is tracked). */
5446
+ locale?: string | (() => string);
5447
+ /**
5448
+ * Translations of the built-in strings (merged over {@link SDS_CHART_LABELS_EN}). A function may
5449
+ * read a signal (it is tracked), so returning the current language's labels switches them live.
5450
+ */
5451
+ labels?: Partial<SdsChartLabels> | (() => Partial<SdsChartLabels>);
5452
+ /** Turn entrance / update animation off everywhere. Reduced-motion users never get it anyway. */
5453
+ animate?: boolean;
5454
+ /** Replace the 8 categorical slots (CSS colours, `var(--x)` allowed). Validate any new order! */
5455
+ palette?: readonly string[];
5456
+ }
5457
+ declare const SDS_CHART_CONFIG: InjectionToken<SdsChartConfig>;
5458
+ /**
5459
+ * App-wide chart defaults.
5460
+ *
5461
+ * @example
5462
+ * providers: [
5463
+ * provideSdsCharts({
5464
+ * locale: () => translate.currentLang(),
5465
+ * labels: () => (translate.currentLang() === 'fr' ? CHART_LABELS_FR : {}),
5466
+ * }),
5467
+ * ]
5468
+ */
5469
+ declare function provideSdsCharts(config: SdsChartConfig): Provider;
5470
+
5471
+ /**
5472
+ * Replace a chart's default tooltip body with your own markup. The template receives the hovered
5473
+ * position as `$implicit` ({ title, rows, footer, data, index }) — `data` holds the source rows, so the
5474
+ * tooltip can show fields the chart does not plot (a comment, a status, a unit).
5475
+ *
5476
+ * Works on line, bar, scatter, donut, heatmap and treemap charts (not the sparkline). The chart still
5477
+ * positions, flips and clamps the box; you style the body. The box is visual and pointer-transparent:
5478
+ * never put links or buttons in it, and keep anything essential in the plotted data too — keyboard and
5479
+ * screen-reader users get the default rows through the live region and the table twin.
5480
+ *
5481
+ * @example
5482
+ * <sds-line-chart [data]="rows" x="day" [series]="series">
5483
+ * <ng-template sdsChartTooltip let-tip>
5484
+ * <p class="font-semibold">{{ tip.title }}</p>
5485
+ * <p>{{ tip.data[0].comment }}</p>
5486
+ * </ng-template>
5487
+ * </sds-line-chart>
5488
+ */
5489
+ declare class SdsChartTooltip {
5490
+ readonly template: TemplateRef<{
5491
+ $implicit: SdsChartTooltipContext;
5492
+ }>;
5493
+ static ngTemplateContextGuard(_dir: SdsChartTooltip, ctx: unknown): ctx is {
5494
+ $implicit: SdsChartTooltipContext;
5495
+ };
5496
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SdsChartTooltip, never>;
5497
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SdsChartTooltip, "ng-template[sdsChartTooltip]", never, {}, {}, never, never, true, never>;
5498
+ }
5499
+
5500
+ interface PlotRect {
5501
+ left: number;
5502
+ top: number;
5503
+ width: number;
5504
+ height: number;
5505
+ }
5506
+ interface AxisTick {
5507
+ pos: number;
5508
+ label: string;
5509
+ }
5510
+ interface ResolvedAnnotation {
5511
+ kind: 'line' | 'band';
5512
+ x1: number;
5513
+ y1: number;
5514
+ x2: number;
5515
+ y2: number;
5516
+ label: string;
5517
+ color: string;
5518
+ labelX: number;
5519
+ labelY: number;
5520
+ anchor: 'start' | 'middle' | 'end';
5521
+ }
5522
+
5523
+ interface LegendItem {
5524
+ key: string;
5525
+ label: string;
5526
+ color: string;
5527
+ shape: 'line' | 'rect' | 'dot';
5528
+ /** Optional trailing text — a value or a share (the donut's direct labels). */
5529
+ detail?: string;
5530
+ dashed?: boolean;
5531
+ }
5532
+ interface ChartTable {
5533
+ columns: string[];
5534
+ rows: string[][];
5535
+ }
5536
+
5537
+ /** Line interpolation. `monotone` (default) is smooth but never overshoots the data. */
5538
+ type SdsLineCurve = 'linear' | 'monotone' | 'step' | 'natural';
5539
+ /** Point markers: `auto` = every point on sparse plain lines (≤ 16), only the last on dense lines and plain areas, none on stacks. */
5540
+ type SdsLineMarkers = 'auto' | 'all' | 'last' | 'none';
5541
+ interface Point<T> {
5542
+ row: T;
5543
+ index: number;
5544
+ x: SdsXValue;
5545
+ key: string;
5546
+ }
5547
+ /** [x, y, y0] in pixels; undefined where the value is missing (the line breaks there). */
5548
+ type P3 = readonly number[];
5549
+ /**
5550
+ * Line and area chart for anything over an ordered axis — time series, numeric x, or categories.
5551
+ * Multi-series, stacked or 100 % areas, smooth / step curves, log scale, reference lines and bands,
5552
+ * dashed forecast series, a crosshair tooltip listing every series, legend toggling, keyboard
5553
+ * navigation and a data-table twin. Rows are read with accessors, so API data plots as-is.
5554
+ *
5555
+ * @example
5556
+ * <sds-line-chart
5557
+ * heading="Admissions"
5558
+ * [data]="rows"
5559
+ * x="date"
5560
+ * [series]="[{ key: 'urgences', label: 'Urgences' }, { key: 'programmees', label: 'Programmées' }]"
5561
+ * />
5562
+ */
5563
+ declare class SdsLineChart<T = any> {
5564
+ /** The rows to plot — any shape; fields are read through `x` and each series' `key` / `value`. */
5565
+ readonly data: _angular_core.InputSignal<readonly T[] | null | undefined>;
5566
+ /** The x field: a property name or `(row, i) => value`. Dates, ISO strings, numbers or labels. */
5567
+ readonly x: _angular_core.InputSignal<SdsAccessor<T, SdsXValue>>;
5568
+ /** The measures to draw. A series keeps its colour slot (its index here) even when hidden. */
5569
+ readonly series: _angular_core.InputSignal<readonly SdsChartSeries<T>[]>;
5570
+ /** Force the x-axis kind instead of inferring it from the data. */
5571
+ readonly xType: _angular_core.InputSignal<SdsChartXType>;
5572
+ readonly heading: _angular_core.InputSignal<string>;
5573
+ readonly subtitle: _angular_core.InputSignal<string>;
5574
+ /** Plot height in px, axis labels included (the chart never scrolls inside itself). */
5575
+ readonly height: _angular_core.InputSignalWithTransform<number, unknown>;
5576
+ readonly curve: _angular_core.InputSignal<SdsLineCurve>;
5577
+ /** Fill under each line with a soft wash of its colour. */
5578
+ readonly area: _angular_core.InputSignalWithTransform<boolean, unknown>;
5579
+ /** Stack the series as areas (`stacked`) or as shares of 100 % (`percent`). */
5580
+ readonly stack: _angular_core.InputSignal<SdsChartStack>;
5581
+ readonly markers: _angular_core.InputSignal<SdsLineMarkers>;
5582
+ /** Label each line at its last point; converging labels spread apart with leader lines (dropped if they cannot fit). */
5583
+ readonly endLabels: _angular_core.InputSignalWithTransform<boolean, unknown>;
5584
+ readonly grid: _angular_core.InputSignal<SdsChartGrid>;
5585
+ readonly legend: _angular_core.InputSignal<SdsChartLegend>;
5586
+ /** Emphasise one series: the others fade back. */
5587
+ readonly highlight: _angular_core.InputSignal<string | null>;
5588
+ readonly annotations: _angular_core.InputSignal<readonly SdsChartAnnotation[]>;
5589
+ readonly yScale: _angular_core.InputSignal<SdsChartScale>;
5590
+ readonly yMin: _angular_core.InputSignal<number | null>;
5591
+ readonly yMax: _angular_core.InputSignal<number | null>;
5592
+ /** Start the value axis at zero. Defaults to true for areas/stacks, false for plain lines. */
5593
+ readonly includeZero: _angular_core.InputSignal<boolean | null>;
5594
+ /** Format of values in the tooltip, labels and table. Axis ticks derive a compact version. */
5595
+ readonly valueFormat: _angular_core.InputSignal<SdsNumberFormat | null>;
5596
+ /** Override the value-axis tick format. */
5597
+ readonly axisFormat: _angular_core.InputSignal<SdsNumberFormat | null>;
5598
+ /** Format of x values (ticks + tooltip heading). Time axes pick a sensible multi-scale default. */
5599
+ readonly xFormat: _angular_core.InputSignal<SdsXFormat | null>;
5600
+ readonly xLabel: _angular_core.InputSignal<string>;
5601
+ readonly yLabel: _angular_core.InputSignal<string>;
5602
+ /** BCP-47 locale for numbers and dates. Defaults to provideSdsCharts() / LOCALE_ID. */
5603
+ readonly locale: _angular_core.InputSignal<string | null>;
5604
+ readonly tooltip: _angular_core.InputSignalWithTransform<boolean, unknown>;
5605
+ readonly animate: _angular_core.InputSignalWithTransform<boolean, unknown>;
5606
+ /** Hold the current render at reduced opacity while new data loads (no skeleton flash). */
5607
+ readonly loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
5608
+ /** Empty-state text. Default (`null`): the configured `labels.empty` ("No data to display"). */
5609
+ readonly emptyText: _angular_core.InputSignal<string | null>;
5610
+ /** Show a button that swaps the plot for its data table. */
5611
+ readonly tableToggle: _angular_core.InputSignalWithTransform<boolean, unknown>;
5612
+ readonly ariaLabel: _angular_core.InputSignal<string | null>;
5613
+ /** Keys of the series currently hidden (legend toggles write it back — two-way bindable). */
5614
+ readonly hidden: _angular_core.ModelSignal<readonly string[]>;
5615
+ /** A point was clicked (the series nearest the pointer) or activated with Enter. */
5616
+ readonly pointClick: _angular_core.OutputEmitterRef<SdsChartPointEvent<T>>;
5617
+ protected readonly customTooltip: _angular_core.Signal<SdsChartTooltip | undefined>;
5618
+ protected readonly uid: string;
5619
+ protected readonly legendFocus: _angular_core.WritableSignal<string | null>;
5620
+ protected readonly active: _angular_core.WritableSignal<number | null>;
5621
+ protected readonly keyboard: _angular_core.WritableSignal<boolean>;
5622
+ /** Leaving the chart dismisses a keyboard-driven readout (a pointer one clears on pointerleave). */
5623
+ protected onBlur(): void;
5624
+ private readonly pointerY;
5625
+ private readonly width;
5626
+ private readonly loc;
5627
+ /** Built-in strings (provideSdsCharts labels over the English defaults). */
5628
+ protected readonly text: _angular_core.Signal<_besaitech_ng_design_system.SdsChartLabels>;
5629
+ private readonly animates;
5630
+ private readonly palette;
5631
+ protected readonly stacked: _angular_core.Signal<boolean>;
5632
+ private readonly model;
5633
+ private readonly allSeries;
5634
+ private readonly visible;
5635
+ /** Raw values per series, aligned with the sorted points (null = missing → a gap). */
5636
+ private readonly values;
5637
+ /** [y0, y1] per series and point — stacked offsets, or a baseline of 0 for plain lines. */
5638
+ private readonly bands;
5639
+ protected readonly isEmpty: _angular_core.Signal<boolean>;
5640
+ /** Axis formatter at a given precision (uniqueLabels raises it until ticks stop repeating). */
5641
+ private readonly axisMaker;
5642
+ private readonly fmtX;
5643
+ protected readonly layout: _angular_core.Signal<{
5644
+ width: number;
5645
+ height: number;
5646
+ plot: PlotRect;
5647
+ y: d3_scale.ScaleLinear<number, number, never>;
5648
+ xPos: (p: Point<T>) => number;
5649
+ mapX: (v: SdsXValue) => number | null;
5650
+ xTicks: AxisTick[];
5651
+ yTicks: AxisTick[];
5652
+ baseline: number;
5653
+ baseY: number;
5654
+ } | null>;
5655
+ private timeTicks;
5656
+ private readonly target;
5657
+ /** Boolean, so a resize (width A → B) never counts as a data change: resizes snap, data animates. */
5658
+ private readonly ready;
5659
+ private readonly version;
5660
+ private readonly geometry;
5661
+ protected readonly drawn: _angular_core.Signal<{
5662
+ key: string;
5663
+ color: string;
5664
+ dashed: boolean;
5665
+ dim: boolean;
5666
+ line: string;
5667
+ area: string | null;
5668
+ markers: P3[];
5669
+ }[]>;
5670
+ protected readonly annotationsPx: _angular_core.Signal<ResolvedAnnotation[]>;
5671
+ /**
5672
+ * End labels. Where lines converge the labels are spread apart (never stacked on each other) and a
5673
+ * hairline leader ties each displaced label back to its line end. If they cannot all fit in the plot
5674
+ * height the set is dropped — the legend then carries identity.
5675
+ */
5676
+ protected readonly endLabelsPx: _angular_core.Signal<{
5677
+ tx: number;
5678
+ leader: boolean;
5679
+ key: string;
5680
+ label: string;
5681
+ x: number;
5682
+ anchorY: number;
5683
+ y: number;
5684
+ dim: boolean;
5685
+ }[]>;
5686
+ protected readonly activePx: _angular_core.Signal<{
5687
+ x: number;
5688
+ dots: {
5689
+ key: string;
5690
+ y: number;
5691
+ color: string;
5692
+ }[];
5693
+ } | null>;
5694
+ protected readonly tooltipY: _angular_core.Signal<number>;
5695
+ protected readonly tooltipCtx: _angular_core.Signal<SdsChartTooltipContext<T> | null>;
5696
+ protected readonly liveText: _angular_core.Signal<string>;
5697
+ protected onPointer(event: PointerEvent): void;
5698
+ private nearestIndex;
5699
+ protected onClick(): void;
5700
+ protected onKey(event: KeyboardEvent): void;
5701
+ protected toggleSeries(key: string): void;
5702
+ protected readonly legendPosition: _angular_core.Signal<"none" | "top" | "bottom" | "right">;
5703
+ protected readonly legendItems: _angular_core.Signal<LegendItem[]>;
5704
+ protected readonly label: _angular_core.Signal<string>;
5705
+ protected readonly table: _angular_core.Signal<ChartTable>;
5706
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SdsLineChart<any>, never>;
5707
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SdsLineChart<any>, "sds-line-chart", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "x": { "alias": "x"; "required": true; "isSignal": true; }; "series": { "alias": "series"; "required": true; "isSignal": true; }; "xType": { "alias": "xType"; "required": false; "isSignal": true; }; "heading": { "alias": "heading"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "curve": { "alias": "curve"; "required": false; "isSignal": true; }; "area": { "alias": "area"; "required": false; "isSignal": true; }; "stack": { "alias": "stack"; "required": false; "isSignal": true; }; "markers": { "alias": "markers"; "required": false; "isSignal": true; }; "endLabels": { "alias": "endLabels"; "required": false; "isSignal": true; }; "grid": { "alias": "grid"; "required": false; "isSignal": true; }; "legend": { "alias": "legend"; "required": false; "isSignal": true; }; "highlight": { "alias": "highlight"; "required": false; "isSignal": true; }; "annotations": { "alias": "annotations"; "required": false; "isSignal": true; }; "yScale": { "alias": "yScale"; "required": false; "isSignal": true; }; "yMin": { "alias": "yMin"; "required": false; "isSignal": true; }; "yMax": { "alias": "yMax"; "required": false; "isSignal": true; }; "includeZero": { "alias": "includeZero"; "required": false; "isSignal": true; }; "valueFormat": { "alias": "valueFormat"; "required": false; "isSignal": true; }; "axisFormat": { "alias": "axisFormat"; "required": false; "isSignal": true; }; "xFormat": { "alias": "xFormat"; "required": false; "isSignal": true; }; "xLabel": { "alias": "xLabel"; "required": false; "isSignal": true; }; "yLabel": { "alias": "yLabel"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "animate": { "alias": "animate"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "tableToggle": { "alias": "tableToggle"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "hidden": { "alias": "hidden"; "required": false; "isSignal": true; }; }, { "hidden": "hiddenChange"; "pointClick": "pointClick"; }, ["customTooltip"], never, true, never>;
5708
+ }
5709
+
5710
+ /** `vertical` = columns rising from the category axis; `horizontal` = bars (best for long labels / rankings). */
5711
+ type SdsBarOrientation = 'vertical' | 'horizontal';
5712
+ /** Order the categories by their total. `none` keeps the data order. */
5713
+ type SdsBarSort = 'none' | 'asc' | 'desc';
5714
+ /**
5715
+ * Bar and column chart for comparing categories: grouped, stacked or 100 % stacked, vertical or
5716
+ * horizontal, with negative values, value labels that are only drawn where they fit, sorting,
5717
+ * per-bar colours, a combo `type: 'line'` series on the same axis, reference lines (targets) and a
5718
+ * per-category tooltip listing every series. Bars are capped in thickness, rounded on their data end
5719
+ * only, and separated by a 2 px surface gap — never outlined.
5720
+ *
5721
+ * @example
5722
+ * <sds-bar-chart
5723
+ * heading="Séjours par service"
5724
+ * [data]="rows"
5725
+ * x="mois"
5726
+ * [series]="[{ key: 'cardio', label: 'Cardiologie' }, { key: 'neuro', label: 'Neurologie' }]"
5727
+ * stack="stacked"
5728
+ * />
5729
+ */
5730
+ declare class SdsBarChart<T = any> {
5731
+ readonly data: _angular_core.InputSignal<readonly T[] | null | undefined>;
5732
+ /** The category field: a property name or `(row, i) => value`. */
5733
+ readonly x: _angular_core.InputSignal<SdsAccessor<T, SdsXValue>>;
5734
+ /** The measures. A `type: 'line'` series is drawn as a line over the bars (vertical only). */
5735
+ readonly series: _angular_core.InputSignal<readonly SdsChartSeries<T>[]>;
5736
+ readonly heading: _angular_core.InputSignal<string>;
5737
+ readonly subtitle: _angular_core.InputSignal<string>;
5738
+ readonly orientation: _angular_core.InputSignal<SdsBarOrientation>;
5739
+ readonly stack: _angular_core.InputSignal<SdsChartStack>;
5740
+ /** Height in px, axes included. Defaults to 300 (vertical) or one row per category (horizontal). */
5741
+ readonly height: _angular_core.InputSignalWithTransform<number | null, unknown>;
5742
+ /** Maximum bar thickness in px — bars never fill their slot; the leftover is air. */
5743
+ readonly maxBarSize: _angular_core.InputSignalWithTransform<number, unknown>;
5744
+ /** Corner radius of the bar's data end (its baseline end stays square). */
5745
+ readonly radius: _angular_core.InputSignalWithTransform<number, unknown>;
5746
+ /** Print each bar's value at its tip (each stack's total when stacked) — only where it fits. */
5747
+ readonly showValues: _angular_core.InputSignalWithTransform<boolean, unknown>;
5748
+ readonly sort: _angular_core.InputSignal<SdsBarSort>;
5749
+ /** Emphasise some categories (their x values): the other bars fade back. (Series emphasis: hover the legend.) */
5750
+ readonly highlightCategories: _angular_core.InputSignal<SdsXValue | readonly SdsXValue[] | null>;
5751
+ /** Colour one bar from its data — e.g. negatives in red, or a status. Return null to keep the series colour. */
5752
+ readonly barColor: _angular_core.InputSignal<((row: T, seriesKey: string, value: number) => string | null | undefined) | null>;
5753
+ readonly grid: _angular_core.InputSignal<SdsChartGrid | null>;
5754
+ readonly legend: _angular_core.InputSignal<SdsChartLegend>;
5755
+ /** Reference lines / bands. `axis: 'y'` (default) is the VALUE axis in both orientations. */
5756
+ readonly annotations: _angular_core.InputSignal<readonly SdsChartAnnotation[]>;
5757
+ readonly yMin: _angular_core.InputSignal<number | null>;
5758
+ readonly yMax: _angular_core.InputSignal<number | null>;
5759
+ readonly valueFormat: _angular_core.InputSignal<SdsNumberFormat | null>;
5760
+ readonly axisFormat: _angular_core.InputSignal<SdsNumberFormat | null>;
5761
+ /** Format of the category labels (dates are formatted at their granularity by default). */
5762
+ readonly xFormat: _angular_core.InputSignal<SdsXFormat | null>;
5763
+ readonly xLabel: _angular_core.InputSignal<string>;
5764
+ readonly yLabel: _angular_core.InputSignal<string>;
5765
+ readonly locale: _angular_core.InputSignal<string | null>;
5766
+ readonly tooltip: _angular_core.InputSignalWithTransform<boolean, unknown>;
5767
+ readonly animate: _angular_core.InputSignalWithTransform<boolean, unknown>;
5768
+ readonly loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
5769
+ /** Empty-state text. Default (`null`): the configured `labels.empty` ("No data to display"). */
5770
+ readonly emptyText: _angular_core.InputSignal<string | null>;
5771
+ readonly tableToggle: _angular_core.InputSignalWithTransform<boolean, unknown>;
5772
+ readonly ariaLabel: _angular_core.InputSignal<string | null>;
5773
+ readonly hidden: _angular_core.ModelSignal<readonly string[]>;
5774
+ /** A bar (or a category, from the keyboard) was clicked. */
5775
+ readonly pointClick: _angular_core.OutputEmitterRef<SdsChartPointEvent<T>>;
5776
+ protected readonly customTooltip: _angular_core.Signal<SdsChartTooltip | undefined>;
5777
+ protected readonly legendFocus: _angular_core.WritableSignal<string | null>;
5778
+ protected readonly active: _angular_core.WritableSignal<number | null>;
5779
+ protected readonly keyboard: _angular_core.WritableSignal<boolean>;
5780
+ /** Leaving the chart dismisses a keyboard-driven readout (a pointer one clears on pointerleave). */
5781
+ protected onBlur(): void;
5782
+ private readonly pointer;
5783
+ private readonly width;
5784
+ private readonly loc;
5785
+ /** Built-in strings (provideSdsCharts labels over the English defaults). */
5786
+ protected readonly text: _angular_core.Signal<_besaitech_ng_design_system.SdsChartLabels>;
5787
+ private readonly animates;
5788
+ private readonly palette;
5789
+ private readonly horizontal;
5790
+ private readonly stacked;
5791
+ private readonly allSeries;
5792
+ private readonly visible;
5793
+ private readonly barSeries;
5794
+ private readonly lineSeries;
5795
+ private readonly raw;
5796
+ private readonly rawValues;
5797
+ /** Categories in display order (sorted by total of the visible bar series when asked). */
5798
+ private readonly order;
5799
+ /** [v0, v1] per bar series per category (value space). */
5800
+ private readonly extents;
5801
+ protected readonly isEmpty: _angular_core.Signal<boolean>;
5802
+ private readonly axisMaker;
5803
+ private readonly fmtCat;
5804
+ /** Bars-per-group (1 when stacked) — drives row height for auto-sized horizontal charts. */
5805
+ private readonly groupCount;
5806
+ protected readonly resolvedHeight: _angular_core.Signal<number>;
5807
+ protected readonly layout: _angular_core.Signal<{
5808
+ readonly width: number;
5809
+ readonly height: number;
5810
+ readonly horizontal: boolean;
5811
+ readonly plot: PlotRect;
5812
+ readonly value: d3_scale.ScaleLinear<number, number, never>;
5813
+ readonly band: d3_scale.ScaleBand<number>;
5814
+ readonly bw: number;
5815
+ readonly barSize: number;
5816
+ readonly groupSize: number;
5817
+ readonly base: number;
5818
+ readonly grid: SdsChartGrid;
5819
+ readonly xTicks: AxisTick[];
5820
+ readonly yTicks: AxisTick[];
5821
+ } | null>;
5822
+ /** Formatted values that may be printed as labels (for margin sizing). */
5823
+ private readonly labelTexts;
5824
+ /** Target pixel geometry per bar / line point, plus the non-animated facts about each bar. */
5825
+ private readonly targetModel;
5826
+ private readonly target;
5827
+ private readonly meta;
5828
+ /** Boolean, so a resize (width A → B) never counts as a data change: resizes snap, data animates. */
5829
+ private readonly ready;
5830
+ private readonly version;
5831
+ private readonly geometry;
5832
+ private readonly highlightSet;
5833
+ protected readonly bars: _angular_core.Signal<{
5834
+ id: string;
5835
+ d: string;
5836
+ color: string;
5837
+ dim: boolean;
5838
+ }[]>;
5839
+ protected readonly lines: _angular_core.Signal<{
5840
+ key: string;
5841
+ color: string;
5842
+ dashed: boolean;
5843
+ dim: boolean;
5844
+ d: string;
5845
+ points: (readonly number[])[];
5846
+ }[]>;
5847
+ /** Value labels at the bar tips — dropped wherever they would not fit or would collide. */
5848
+ protected readonly valueLabels: _angular_core.Signal<{
5849
+ id: string;
5850
+ x: number;
5851
+ y: number;
5852
+ text: string;
5853
+ anchor: "start" | "middle" | "end";
5854
+ }[]>;
5855
+ protected readonly annotationsPx: _angular_core.Signal<ResolvedAnnotation[]>;
5856
+ /** One hit target per category — the whole band step, bigger than any bar in it. */
5857
+ protected readonly hits: _angular_core.Signal<{
5858
+ index: number;
5859
+ x: number;
5860
+ y: number;
5861
+ w: number;
5862
+ h: number;
5863
+ }[]>;
5864
+ protected readonly hoverBand: _angular_core.Signal<{
5865
+ x: number;
5866
+ y: number;
5867
+ w: number;
5868
+ h: number;
5869
+ } | null>;
5870
+ protected readonly tooltipAt: _angular_core.Signal<{
5871
+ x: number;
5872
+ y: number;
5873
+ }>;
5874
+ protected readonly tooltipCtx: _angular_core.Signal<SdsChartTooltipContext<T> | null>;
5875
+ protected readonly liveText: _angular_core.Signal<string>;
5876
+ private local;
5877
+ protected enter(index: number, event: PointerEvent): void;
5878
+ protected move(event: PointerEvent): void;
5879
+ protected onClick(index: number, event?: MouseEvent): void;
5880
+ protected onKey(event: KeyboardEvent): void;
5881
+ protected toggleSeries(key: string): void;
5882
+ protected readonly legendPosition: _angular_core.Signal<"none" | "top" | "bottom" | "right">;
5883
+ protected readonly legendItems: _angular_core.Signal<LegendItem[]>;
5884
+ protected readonly label: _angular_core.Signal<string>;
5885
+ protected readonly table: _angular_core.Signal<ChartTable>;
5886
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SdsBarChart<any>, never>;
5887
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SdsBarChart<any>, "sds-bar-chart", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "x": { "alias": "x"; "required": true; "isSignal": true; }; "series": { "alias": "series"; "required": true; "isSignal": true; }; "heading": { "alias": "heading"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "stack": { "alias": "stack"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "maxBarSize": { "alias": "maxBarSize"; "required": false; "isSignal": true; }; "radius": { "alias": "radius"; "required": false; "isSignal": true; }; "showValues": { "alias": "showValues"; "required": false; "isSignal": true; }; "sort": { "alias": "sort"; "required": false; "isSignal": true; }; "highlightCategories": { "alias": "highlightCategories"; "required": false; "isSignal": true; }; "barColor": { "alias": "barColor"; "required": false; "isSignal": true; }; "grid": { "alias": "grid"; "required": false; "isSignal": true; }; "legend": { "alias": "legend"; "required": false; "isSignal": true; }; "annotations": { "alias": "annotations"; "required": false; "isSignal": true; }; "yMin": { "alias": "yMin"; "required": false; "isSignal": true; }; "yMax": { "alias": "yMax"; "required": false; "isSignal": true; }; "valueFormat": { "alias": "valueFormat"; "required": false; "isSignal": true; }; "axisFormat": { "alias": "axisFormat"; "required": false; "isSignal": true; }; "xFormat": { "alias": "xFormat"; "required": false; "isSignal": true; }; "xLabel": { "alias": "xLabel"; "required": false; "isSignal": true; }; "yLabel": { "alias": "yLabel"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "animate": { "alias": "animate"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "tableToggle": { "alias": "tableToggle"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "hidden": { "alias": "hidden"; "required": false; "isSignal": true; }; }, { "hidden": "hiddenChange"; "pointClick": "pointClick"; }, ["customTooltip"], never, true, never>;
5888
+ }
5889
+
5890
+ interface Dot<T> {
5891
+ row: T;
5892
+ index: number;
5893
+ id: string;
5894
+ x: number;
5895
+ xDate: boolean;
5896
+ y: number;
5897
+ size: number | null;
5898
+ group: string;
5899
+ label: string;
5900
+ }
5901
+ /**
5902
+ * Scatter and bubble chart for relationships between two measures — with an optional third measure
5903
+ * as bubble area and a categorical group as colour. Linear / log / time axes, per-group least-squares
5904
+ * trend lines, reference lines and bands on either axis, nearest-point hover (a Delaunay search, so
5905
+ * the pointer only has to be closest — never dead-centre on an 8 px dot), keyboard stepping and a
5906
+ * data-table twin. Keep groups to three or fewer: past that, colours stop separating in a cloud.
5907
+ *
5908
+ * @example
5909
+ * <sds-scatter-chart
5910
+ * [data]="patients"
5911
+ * x="age"
5912
+ * y="duree"
5913
+ * group="service"
5914
+ * size="cout"
5915
+ * xLabel="Âge"
5916
+ * yLabel="Durée de séjour (j)"
5917
+ * trendline
5918
+ * />
5919
+ */
5920
+ declare class SdsScatterChart<T = any> {
5921
+ readonly data: _angular_core.InputSignal<readonly T[] | null | undefined>;
5922
+ /** Horizontal measure: numbers, Dates or ISO strings. */
5923
+ readonly x: _angular_core.InputSignal<SdsAccessor<T, SdsXValue>>;
5924
+ /** Vertical measure. */
5925
+ readonly y: _angular_core.InputSignal<SdsAccessor<T, number | null | undefined>>;
5926
+ /** Optional third measure, encoded as bubble AREA (not radius — area reads true). */
5927
+ readonly size: _angular_core.InputSignal<SdsAccessor<T, number | null | undefined> | null>;
5928
+ /** Optional categorical field coloured by slot. Three groups or fewer read best. */
5929
+ readonly group: _angular_core.InputSignal<SdsAccessor<T, string | null | undefined> | null>;
5930
+ /** Optional point name for the tooltip heading and the table (also the point's animation identity). */
5931
+ readonly pointLabel: _angular_core.InputSignal<SdsAccessor<T, string | null | undefined> | null>;
5932
+ /** Fix the group order (and so their colours) instead of first-appearance order. */
5933
+ readonly groupOrder: _angular_core.InputSignal<readonly string[] | null>;
5934
+ readonly heading: _angular_core.InputSignal<string>;
5935
+ readonly subtitle: _angular_core.InputSignal<string>;
5936
+ readonly height: _angular_core.InputSignalWithTransform<number, unknown>;
5937
+ /** Dot radius when there is no `size` measure. */
5938
+ readonly radius: _angular_core.InputSignalWithTransform<number, unknown>;
5939
+ /** Largest bubble radius when `size` is set. */
5940
+ readonly maxRadius: _angular_core.InputSignalWithTransform<number, unknown>;
5941
+ /** Draw a least-squares trend line per group (dashed — it is a model, not data). Linear axes only. */
5942
+ readonly trendline: _angular_core.InputSignalWithTransform<boolean, unknown>;
5943
+ readonly grid: _angular_core.InputSignal<SdsChartGrid>;
5944
+ readonly legend: _angular_core.InputSignal<SdsChartLegend>;
5945
+ readonly annotations: _angular_core.InputSignal<readonly SdsChartAnnotation[]>;
5946
+ readonly xScale: _angular_core.InputSignal<SdsChartScale>;
5947
+ readonly yScale: _angular_core.InputSignal<SdsChartScale>;
5948
+ readonly xMin: _angular_core.InputSignal<number | null>;
5949
+ readonly xMax: _angular_core.InputSignal<number | null>;
5950
+ readonly yMin: _angular_core.InputSignal<number | null>;
5951
+ readonly yMax: _angular_core.InputSignal<number | null>;
5952
+ readonly includeZero: _angular_core.InputSignalWithTransform<boolean, unknown>;
5953
+ readonly xFormat: _angular_core.InputSignal<SdsXFormat | null>;
5954
+ readonly valueFormat: _angular_core.InputSignal<SdsNumberFormat | null>;
5955
+ /** Override the y-axis tick format (defaults to a compact form of `valueFormat`). */
5956
+ readonly axisFormat: _angular_core.InputSignal<SdsNumberFormat | null>;
5957
+ readonly sizeFormat: _angular_core.InputSignal<SdsNumberFormat | null>;
5958
+ readonly xLabel: _angular_core.InputSignal<string>;
5959
+ readonly yLabel: _angular_core.InputSignal<string>;
5960
+ /** Name of the bubble size (tooltip, table). Default (`null`): the configured `labels.size`. */
5961
+ readonly sizeLabel: _angular_core.InputSignal<string | null>;
5962
+ protected readonly sizeName: _angular_core.Signal<string>;
5963
+ readonly locale: _angular_core.InputSignal<string | null>;
5964
+ readonly tooltip: _angular_core.InputSignalWithTransform<boolean, unknown>;
5965
+ readonly animate: _angular_core.InputSignalWithTransform<boolean, unknown>;
5966
+ readonly loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
5967
+ /** Empty-state text. Default (`null`): the configured `labels.empty` ("No data to display"). */
5968
+ readonly emptyText: _angular_core.InputSignal<string | null>;
5969
+ readonly tableToggle: _angular_core.InputSignalWithTransform<boolean, unknown>;
5970
+ readonly ariaLabel: _angular_core.InputSignal<string | null>;
5971
+ /** Hidden group names (two-way bindable; the legend toggles them). */
5972
+ readonly hidden: _angular_core.ModelSignal<readonly string[]>;
5973
+ readonly pointClick: _angular_core.OutputEmitterRef<SdsChartPointEvent<T>>;
5974
+ protected readonly customTooltip: _angular_core.Signal<SdsChartTooltip | undefined>;
5975
+ protected readonly uid: string;
5976
+ protected readonly legendFocus: _angular_core.WritableSignal<string | null>;
5977
+ protected readonly active: _angular_core.WritableSignal<number | null>;
5978
+ protected readonly keyboard: _angular_core.WritableSignal<boolean>;
5979
+ /** Leaving the chart dismisses a keyboard-driven readout (a pointer one clears on pointerleave). */
5980
+ protected onBlur(): void;
5981
+ private readonly width;
5982
+ private readonly loc;
5983
+ /** Built-in strings (provideSdsCharts labels over the English defaults). */
5984
+ protected readonly text: _angular_core.Signal<_besaitech_ng_design_system.SdsChartLabels>;
5985
+ private readonly animates;
5986
+ private readonly palette;
5987
+ protected readonly bubbles: _angular_core.Signal<boolean>;
5988
+ private readonly points;
5989
+ private readonly xIsTime;
5990
+ /** Groups in colour order; a group keeps its slot when others are hidden. */
5991
+ protected readonly groups: _angular_core.Signal<{
5992
+ name: string;
5993
+ color: string;
5994
+ }[]>;
5995
+ private readonly colorOf;
5996
+ private readonly visiblePoints;
5997
+ protected readonly isEmpty: _angular_core.Signal<boolean>;
5998
+ private readonly fmtY;
5999
+ private readonly fmtSize;
6000
+ private readonly fmtX;
6001
+ protected readonly layout: _angular_core.Signal<{
6002
+ width: number;
6003
+ height: number;
6004
+ plot: PlotRect;
6005
+ x: (v: number) => number;
6006
+ y: (v: number) => number;
6007
+ radius: (p: Dot<T>) => number;
6008
+ xTicks: AxisTick[];
6009
+ yTicks: {
6010
+ pos: number;
6011
+ label: string;
6012
+ }[];
6013
+ clipPad: number;
6014
+ } | null>;
6015
+ private readonly target;
6016
+ /** Boolean, so a resize (width A → B) never counts as a data change: resizes snap, data animates. */
6017
+ private readonly ready;
6018
+ private readonly version;
6019
+ private readonly geometry;
6020
+ protected readonly dots: _angular_core.Signal<{
6021
+ id: string;
6022
+ cx: number;
6023
+ cy: number;
6024
+ r: number;
6025
+ color: string;
6026
+ dim: boolean;
6027
+ size: number;
6028
+ }[]>;
6029
+ /** Least-squares fit per visible group, drawn across that group's own x range. */
6030
+ protected readonly trends: _angular_core.Signal<{
6031
+ group: string;
6032
+ x1: number;
6033
+ y1: number;
6034
+ x2: number;
6035
+ y2: number;
6036
+ color: string;
6037
+ dim: boolean;
6038
+ }[]>;
6039
+ protected readonly annotationsPx: _angular_core.Signal<ResolvedAnnotation[]>;
6040
+ /** Nearest-point index, rebuilt only when the geometry settles. */
6041
+ private readonly delaunay;
6042
+ protected readonly activeDot: _angular_core.Signal<{
6043
+ cx: number;
6044
+ cy: number;
6045
+ r: number;
6046
+ color: string;
6047
+ } | null>;
6048
+ protected readonly tooltipCtx: _angular_core.Signal<SdsChartTooltipContext<T> | null>;
6049
+ protected readonly liveText: _angular_core.Signal<string>;
6050
+ protected onPointer(event: PointerEvent): void;
6051
+ protected onClick(): void;
6052
+ /** Arrow keys step through the points in x order. */
6053
+ protected onKey(event: KeyboardEvent): void;
6054
+ protected toggleGroup(name: string): void;
6055
+ protected readonly legendPosition: _angular_core.Signal<"none" | "top" | "bottom" | "right">;
6056
+ protected readonly legendItems: _angular_core.Signal<LegendItem[]>;
6057
+ protected readonly label: _angular_core.Signal<string>;
6058
+ protected readonly table: _angular_core.Signal<ChartTable>;
6059
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SdsScatterChart<any>, never>;
6060
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SdsScatterChart<any>, "sds-scatter-chart", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "x": { "alias": "x"; "required": true; "isSignal": true; }; "y": { "alias": "y"; "required": true; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "group": { "alias": "group"; "required": false; "isSignal": true; }; "pointLabel": { "alias": "pointLabel"; "required": false; "isSignal": true; }; "groupOrder": { "alias": "groupOrder"; "required": false; "isSignal": true; }; "heading": { "alias": "heading"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "radius": { "alias": "radius"; "required": false; "isSignal": true; }; "maxRadius": { "alias": "maxRadius"; "required": false; "isSignal": true; }; "trendline": { "alias": "trendline"; "required": false; "isSignal": true; }; "grid": { "alias": "grid"; "required": false; "isSignal": true; }; "legend": { "alias": "legend"; "required": false; "isSignal": true; }; "annotations": { "alias": "annotations"; "required": false; "isSignal": true; }; "xScale": { "alias": "xScale"; "required": false; "isSignal": true; }; "yScale": { "alias": "yScale"; "required": false; "isSignal": true; }; "xMin": { "alias": "xMin"; "required": false; "isSignal": true; }; "xMax": { "alias": "xMax"; "required": false; "isSignal": true; }; "yMin": { "alias": "yMin"; "required": false; "isSignal": true; }; "yMax": { "alias": "yMax"; "required": false; "isSignal": true; }; "includeZero": { "alias": "includeZero"; "required": false; "isSignal": true; }; "xFormat": { "alias": "xFormat"; "required": false; "isSignal": true; }; "valueFormat": { "alias": "valueFormat"; "required": false; "isSignal": true; }; "axisFormat": { "alias": "axisFormat"; "required": false; "isSignal": true; }; "sizeFormat": { "alias": "sizeFormat"; "required": false; "isSignal": true; }; "xLabel": { "alias": "xLabel"; "required": false; "isSignal": true; }; "yLabel": { "alias": "yLabel"; "required": false; "isSignal": true; }; "sizeLabel": { "alias": "sizeLabel"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "animate": { "alias": "animate"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "tableToggle": { "alias": "tableToggle"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "hidden": { "alias": "hidden"; "required": false; "isSignal": true; }; }, { "hidden": "hiddenChange"; "pointClick": "pointClick"; }, ["customTooltip"], never, true, never>;
6061
+ }
6062
+
6063
+ /** `donut` has a hole for a headline figure; `pie` is solid. */
6064
+ type SdsDonutVariant = 'donut' | 'pie';
6065
+ /** What the legend prints after each label (the chart's direct labels). */
6066
+ type SdsDonutLegendValue = 'percent' | 'value' | 'both' | 'none';
6067
+ /** Slice order: `desc` = largest first, `none` = data order. */
6068
+ type SdsDonutSort = 'desc' | 'none';
6069
+ /** Key of the folded "Other" slice — in `hidden` and in `pointClick.key`. */
6070
+ declare const SDS_DONUT_OTHER_KEY = "__sds_other__";
6071
+ /**
6072
+ * Donut, pie and half-donut for part-to-whole at a glance. Small tails fold into "Other" past
6073
+ * `maxSlices` (a pie stops reading beyond ~6 parts), the legend doubles as direct labels with each
6074
+ * share, the centre states the total and swaps to the hovered slice, slices separate with a
6075
+ * constant 2 px gap, and the whole thing is keyboard-navigable with a data-table twin. Colour follows
6076
+ * the category (its position in the data), never its rank.
6077
+ *
6078
+ * @example
6079
+ * <sds-donut-chart heading="Motifs de séjour" [data]="rows" category="motif" value="sejours" />
6080
+ */
6081
+ declare class SdsDonutChart<T = any> {
6082
+ readonly data: _angular_core.InputSignal<readonly T[] | null | undefined>;
6083
+ /** The part's name. Rows sharing a name are summed into one slice. */
6084
+ readonly category: _angular_core.InputSignal<SdsAccessor<T, string | null | undefined>>;
6085
+ /** The part's size (negative and missing values are ignored). */
6086
+ readonly value: _angular_core.InputSignal<SdsAccessor<T, number | null | undefined>>;
6087
+ /** Optional per-row colour (any CSS colour) — e.g. a status palette. */
6088
+ readonly color: _angular_core.InputSignal<SdsAccessor<T, string | null | undefined> | null>;
6089
+ readonly heading: _angular_core.InputSignal<string>;
6090
+ readonly subtitle: _angular_core.InputSignal<string>;
6091
+ readonly variant: _angular_core.InputSignal<SdsDonutVariant>;
6092
+ /** Draw a half-donut (a gauge-like arc) instead of a full circle. */
6093
+ readonly half: _angular_core.InputSignalWithTransform<boolean, unknown>;
6094
+ /** Diameter cap in px (the chart also shrinks to its container). */
6095
+ readonly height: _angular_core.InputSignalWithTransform<number, unknown>;
6096
+ /** Ring thickness in px. Defaults to ~26 % of the radius. */
6097
+ readonly thickness: _angular_core.InputSignalWithTransform<number | null, unknown>;
6098
+ /** Beyond this many slices the smallest fold into one "Other" slice. */
6099
+ readonly maxSlices: _angular_core.InputSignalWithTransform<number, unknown>;
6100
+ /** Name of the folded tail slice. Default (`null`): the configured `labels.other` ("Other"). */
6101
+ readonly otherLabel: _angular_core.InputSignal<string | null>;
6102
+ /** `desc` (default) orders slices largest first; `none` keeps the data order. */
6103
+ readonly sort: _angular_core.InputSignal<SdsDonutSort>;
6104
+ /** `auto` = right of the ring (below it on narrow containers). */
6105
+ readonly legend: _angular_core.InputSignal<SdsChartLegend>;
6106
+ readonly legendValue: _angular_core.InputSignal<SdsDonutLegendValue>;
6107
+ /**
6108
+ * Headline in the hole. Default (`null`): the configured `labels.total` ("Total"). An empty string
6109
+ * `''` hides the centre readout entirely (label and figure — what `null` did before 0.0.67), and the
6110
+ * hover tooltip takes over.
6111
+ */
6112
+ readonly centerLabel: _angular_core.InputSignal<string | null>;
6113
+ /** Override the centre figure (e.g. "72 %" for a completion donut). */
6114
+ readonly centerValue: _angular_core.InputSignal<string | null>;
6115
+ readonly valueFormat: _angular_core.InputSignal<SdsNumberFormat | null>;
6116
+ readonly locale: _angular_core.InputSignal<string | null>;
6117
+ readonly tooltip: _angular_core.InputSignalWithTransform<boolean, unknown>;
6118
+ readonly animate: _angular_core.InputSignalWithTransform<boolean, unknown>;
6119
+ readonly loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
6120
+ /** Empty-state text. Default (`null`): the configured `labels.empty` ("No data to display"). */
6121
+ readonly emptyText: _angular_core.InputSignal<string | null>;
6122
+ readonly tableToggle: _angular_core.InputSignalWithTransform<boolean, unknown>;
6123
+ readonly ariaLabel: _angular_core.InputSignal<string | null>;
6124
+ /** Hidden slice keys (category names, or the "Other" slice). Two-way bindable. */
6125
+ readonly hidden: _angular_core.ModelSignal<readonly string[]>;
6126
+ readonly pointClick: _angular_core.OutputEmitterRef<SdsChartPointEvent<T>>;
6127
+ protected readonly customTooltip: _angular_core.Signal<SdsChartTooltip | undefined>;
6128
+ protected readonly focus: _angular_core.WritableSignal<string | null>;
6129
+ protected readonly active: _angular_core.WritableSignal<string | null>;
6130
+ protected readonly keyboard: _angular_core.WritableSignal<boolean>;
6131
+ /** Leaving the chart dismisses a keyboard-driven readout (a pointer one clears on pointerleave). */
6132
+ protected onBlur(): void;
6133
+ protected readonly pointer: _angular_core.WritableSignal<{
6134
+ x: number;
6135
+ y: number;
6136
+ }>;
6137
+ private readonly width;
6138
+ private readonly loc;
6139
+ /** Built-in strings (provideSdsCharts labels over the English defaults). */
6140
+ protected readonly text: _angular_core.Signal<_besaitech_ng_design_system.SdsChartLabels>;
6141
+ private readonly animates;
6142
+ private readonly palette;
6143
+ private readonly fmt;
6144
+ private readonly pct;
6145
+ /** Slices after grouping, sorting and folding the tail into "Other". */
6146
+ private readonly slices;
6147
+ private readonly visible;
6148
+ private readonly total;
6149
+ protected readonly isEmpty: _angular_core.Signal<boolean>;
6150
+ protected readonly size: _angular_core.Signal<number>;
6151
+ protected readonly boxHeight: _angular_core.Signal<number>;
6152
+ protected readonly showCenter: _angular_core.Signal<boolean>;
6153
+ protected readonly showTooltip: _angular_core.Signal<boolean>;
6154
+ protected readonly geo: _angular_core.Signal<{
6155
+ cx: number;
6156
+ cy: number;
6157
+ outer: number;
6158
+ inner: number;
6159
+ start: number;
6160
+ end: number;
6161
+ valueSize: number;
6162
+ labelSize: number;
6163
+ labelY: number;
6164
+ valueY: number;
6165
+ subY: number;
6166
+ } | null>;
6167
+ private readonly target;
6168
+ /** Boolean, so a resize (width A → B) never counts as a data change: resizes snap, data animates. */
6169
+ private readonly ready;
6170
+ private readonly version;
6171
+ private readonly tween;
6172
+ protected readonly arcs: _angular_core.Signal<{
6173
+ key: string;
6174
+ color: string;
6175
+ d: string;
6176
+ shift: string | null;
6177
+ dim: boolean;
6178
+ }[]>;
6179
+ protected readonly center: _angular_core.Signal<{
6180
+ label: string;
6181
+ value: string;
6182
+ sub: string;
6183
+ }>;
6184
+ protected readonly tooltipCtx: _angular_core.Signal<SdsChartTooltipContext<T> | null>;
6185
+ /** Spoken readout — from the full label (the centre one is truncated to fit the hole). */
6186
+ protected readonly liveText: _angular_core.Signal<string>;
6187
+ protected readonly legendPosition: _angular_core.Signal<"none" | "top" | "bottom" | "right">;
6188
+ protected hover(key: string, event: PointerEvent): void;
6189
+ protected track(event: PointerEvent): void;
6190
+ protected emit(key: string): void;
6191
+ protected onKey(event: KeyboardEvent): void;
6192
+ protected toggleSlice(key: string): void;
6193
+ protected readonly legendItems: _angular_core.Signal<LegendItem[]>;
6194
+ protected readonly label: _angular_core.Signal<string>;
6195
+ protected readonly table: _angular_core.Signal<ChartTable>;
6196
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SdsDonutChart<any>, never>;
6197
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SdsDonutChart<any>, "sds-donut-chart", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "category": { "alias": "category"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": true; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "heading": { "alias": "heading"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "half": { "alias": "half"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "thickness": { "alias": "thickness"; "required": false; "isSignal": true; }; "maxSlices": { "alias": "maxSlices"; "required": false; "isSignal": true; }; "otherLabel": { "alias": "otherLabel"; "required": false; "isSignal": true; }; "sort": { "alias": "sort"; "required": false; "isSignal": true; }; "legend": { "alias": "legend"; "required": false; "isSignal": true; }; "legendValue": { "alias": "legendValue"; "required": false; "isSignal": true; }; "centerLabel": { "alias": "centerLabel"; "required": false; "isSignal": true; }; "centerValue": { "alias": "centerValue"; "required": false; "isSignal": true; }; "valueFormat": { "alias": "valueFormat"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "animate": { "alias": "animate"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "tableToggle": { "alias": "tableToggle"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "hidden": { "alias": "hidden"; "required": false; "isSignal": true; }; }, { "hidden": "hiddenChange"; "pointClick": "pointClick"; }, ["customTooltip"], never, true, never>;
6198
+ }
6199
+
6200
+ /** `sequential` = magnitude (one hue, pale → strong); `diverging` = polarity around a midpoint. */
6201
+ type SdsHeatmapScheme = 'sequential' | 'diverging';
6202
+ /**
6203
+ * Heatmap — a matrix of two categorical dimensions coloured by a measure: weekday × hour, service ×
6204
+ * month, product × region. Sequential (one hue, light → dark) or diverging (two opposite hues around
6205
+ * a neutral gray midpoint) colour, mixed by the browser in OKLab from theme tokens so it re-themes and
6206
+ * flips to dark mode on its own. Values print inside cells only where they fit, missing cells read
6207
+ * as empty (not as zero), arrow keys move cell by cell, and a scale legend states the range.
6208
+ *
6209
+ * @example
6210
+ * <sds-heatmap [data]="rows" x="heure" y="jour" value="arrivees" heading="Arrivées aux urgences" />
6211
+ */
6212
+ declare class SdsHeatmap<T = any> {
6213
+ readonly data: _angular_core.InputSignal<readonly T[] | null | undefined>;
6214
+ /** Column dimension. */
6215
+ readonly x: _angular_core.InputSignal<SdsAccessor<T, SdsXValue>>;
6216
+ /** Row dimension. */
6217
+ readonly y: _angular_core.InputSignal<SdsAccessor<T, SdsXValue>>;
6218
+ /** The measure colouring each cell. Rows sharing an (x, y) pair are summed. */
6219
+ readonly value: _angular_core.InputSignal<SdsAccessor<T, number | null | undefined>>;
6220
+ /** Fix column order (default: first appearance). */
6221
+ readonly xOrder: _angular_core.InputSignal<readonly SdsXValue[] | null>;
6222
+ /** Fix row order (default: first appearance). */
6223
+ readonly yOrder: _angular_core.InputSignal<readonly SdsXValue[] | null>;
6224
+ readonly heading: _angular_core.InputSignal<string>;
6225
+ readonly subtitle: _angular_core.InputSignal<string>;
6226
+ readonly scheme: _angular_core.InputSignal<SdsHeatmapScheme>;
6227
+ /** Fix the colour domain instead of the data extent. */
6228
+ readonly domain: _angular_core.InputSignal<readonly [number, number] | null>;
6229
+ /** The diverging scheme's neutral value. */
6230
+ readonly midpoint: _angular_core.InputSignalWithTransform<number, unknown>;
6231
+ /** Height in px. Defaults to `cellHeight` per row. */
6232
+ readonly height: _angular_core.InputSignalWithTransform<number | null, unknown>;
6233
+ readonly cellHeight: _angular_core.InputSignalWithTransform<number, unknown>;
6234
+ readonly radius: _angular_core.InputSignalWithTransform<number, unknown>;
6235
+ /** Print each value inside its cell — only when every value fits (never a partial matrix). */
6236
+ readonly showValues: _angular_core.InputSignalWithTransform<boolean, unknown>;
6237
+ /** Show the colour-scale legend under the matrix. */
6238
+ readonly scaleLegend: _angular_core.InputSignalWithTransform<boolean, unknown>;
6239
+ readonly valueFormat: _angular_core.InputSignal<SdsNumberFormat | null>;
6240
+ /** Format of the column / row labels (a function; dates default to their day). */
6241
+ readonly xFormat: _angular_core.InputSignal<SdsXFormat | null>;
6242
+ /** Name of the measure in the tooltip (e.g. "Arrivals"). Default (`null`): `labels.value`. */
6243
+ readonly valueLabel: _angular_core.InputSignal<string | null>;
6244
+ /** Column-axis title, drawn under the matrix. */
6245
+ readonly xLabel: _angular_core.InputSignal<string>;
6246
+ /** Row-axis title, drawn vertically on the left (and the table's first column header). */
6247
+ readonly yLabel: _angular_core.InputSignal<string>;
6248
+ readonly locale: _angular_core.InputSignal<string | null>;
6249
+ readonly tooltip: _angular_core.InputSignalWithTransform<boolean, unknown>;
6250
+ /** Cross-fade cell colours when the data changes. */
6251
+ readonly animate: _angular_core.InputSignalWithTransform<boolean, unknown>;
6252
+ readonly loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
6253
+ /** Empty-state text. Default (`null`): the configured `labels.empty` ("No data to display"). */
6254
+ readonly emptyText: _angular_core.InputSignal<string | null>;
6255
+ readonly tableToggle: _angular_core.InputSignalWithTransform<boolean, unknown>;
6256
+ readonly ariaLabel: _angular_core.InputSignal<string | null>;
6257
+ readonly pointClick: _angular_core.OutputEmitterRef<SdsChartPointEvent<T>>;
6258
+ protected readonly customTooltip: _angular_core.Signal<SdsChartTooltip | undefined>;
6259
+ protected readonly active: _angular_core.WritableSignal<number | null>;
6260
+ protected readonly keyboard: _angular_core.WritableSignal<boolean>;
6261
+ /** Leaving the chart dismisses a keyboard-driven readout (a pointer one clears on pointerleave). */
6262
+ protected onBlur(): void;
6263
+ private readonly width;
6264
+ private readonly loc;
6265
+ /** Built-in strings (provideSdsCharts labels over the English defaults). */
6266
+ protected readonly text: _angular_core.Signal<_besaitech_ng_design_system.SdsChartLabels>;
6267
+ protected readonly animates: _angular_core.Signal<boolean>;
6268
+ private readonly fmt;
6269
+ private readonly matrix;
6270
+ protected readonly isEmpty: _angular_core.Signal<boolean>;
6271
+ private readonly fmtX;
6272
+ /** Colour domain; the diverging arms are made symmetric so equal distances read as equal. */
6273
+ protected readonly scale: _angular_core.Signal<{
6274
+ lo: number;
6275
+ hi: number;
6276
+ mid: number;
6277
+ minLabel: string;
6278
+ maxLabel: string;
6279
+ midLabel: string;
6280
+ gradient: string;
6281
+ }>;
6282
+ /** Signed position on the scale: 0…1 sequential, −1…1 diverging. */
6283
+ private position;
6284
+ /**
6285
+ * Where a cell label switches to the strong-end ink — measured, not guessed: the point where the
6286
+ * strong ink starts to out-contrast the pale one, per ramp, in both modes.
6287
+ */
6288
+ private strongEnd;
6289
+ protected readonly resolvedHeight: _angular_core.Signal<number>;
6290
+ protected readonly layout: _angular_core.Signal<{
6291
+ width: number;
6292
+ height: number;
6293
+ plot: {
6294
+ left: number;
6295
+ top: number;
6296
+ width: number;
6297
+ height: number;
6298
+ };
6299
+ bx: d3_scale.ScaleBand<number>;
6300
+ by: d3_scale.ScaleBand<number>;
6301
+ xTicks: AxisTick[];
6302
+ yTicks: {
6303
+ pos: number;
6304
+ label: string;
6305
+ }[];
6306
+ } | null>;
6307
+ protected readonly cells: _angular_core.Signal<{
6308
+ id: string;
6309
+ i: number;
6310
+ x: number;
6311
+ y: number;
6312
+ w: number;
6313
+ h: number;
6314
+ fill: string;
6315
+ text: string;
6316
+ ink: string;
6317
+ missing: boolean;
6318
+ }[]>;
6319
+ protected readonly activeCell: _angular_core.Signal<{
6320
+ id: string;
6321
+ i: number;
6322
+ x: number;
6323
+ y: number;
6324
+ w: number;
6325
+ h: number;
6326
+ fill: string;
6327
+ text: string;
6328
+ ink: string;
6329
+ missing: boolean;
6330
+ } | null>;
6331
+ protected readonly tooltipCtx: _angular_core.Signal<SdsChartTooltipContext<T> | null>;
6332
+ protected readonly liveText: _angular_core.Signal<string>;
6333
+ protected hover(i: number, _event: PointerEvent): void;
6334
+ protected emit(i: number): void;
6335
+ /** Arrow keys move one cell in any direction. */
6336
+ protected onKey(event: KeyboardEvent): void;
6337
+ protected readonly label: _angular_core.Signal<string>;
6338
+ protected readonly table: _angular_core.Signal<ChartTable>;
6339
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SdsHeatmap<any>, never>;
6340
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SdsHeatmap<any>, "sds-heatmap", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "x": { "alias": "x"; "required": true; "isSignal": true; }; "y": { "alias": "y"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": true; "isSignal": true; }; "xOrder": { "alias": "xOrder"; "required": false; "isSignal": true; }; "yOrder": { "alias": "yOrder"; "required": false; "isSignal": true; }; "heading": { "alias": "heading"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "scheme": { "alias": "scheme"; "required": false; "isSignal": true; }; "domain": { "alias": "domain"; "required": false; "isSignal": true; }; "midpoint": { "alias": "midpoint"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "cellHeight": { "alias": "cellHeight"; "required": false; "isSignal": true; }; "radius": { "alias": "radius"; "required": false; "isSignal": true; }; "showValues": { "alias": "showValues"; "required": false; "isSignal": true; }; "scaleLegend": { "alias": "scaleLegend"; "required": false; "isSignal": true; }; "valueFormat": { "alias": "valueFormat"; "required": false; "isSignal": true; }; "xFormat": { "alias": "xFormat"; "required": false; "isSignal": true; }; "valueLabel": { "alias": "valueLabel"; "required": false; "isSignal": true; }; "xLabel": { "alias": "xLabel"; "required": false; "isSignal": true; }; "yLabel": { "alias": "yLabel"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "animate": { "alias": "animate"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "tableToggle": { "alias": "tableToggle"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "pointClick": "pointClick"; }, ["customTooltip"], never, true, never>;
6341
+ }
6342
+
6343
+ /** A treemap node: a leaf carries `value`; a branch carries `children` (its value is their sum). */
6344
+ interface SdsTreemapNode {
6345
+ name: string;
6346
+ value?: number | null;
6347
+ children?: readonly SdsTreemapNode[];
6348
+ /** Override the colour of this node's whole branch (top-level nodes) or of one leaf. */
6349
+ color?: string;
6350
+ /** Label ink for a custom `color` (defaults to white). */
6351
+ ink?: string;
6352
+ }
6353
+ /**
6354
+ * Treemap for part-to-whole across many items or a hierarchy — budget lines, stock by family, stays
6355
+ * by service and unit. Squarified tiles sized by value, coloured by their top-level branch,
6356
+ * separated by surface gaps (wider between branches), labelled only where the name fits, with a
6357
+ * breadcrumb drill-down: click a branch to zoom into it, the breadcrumb to come back. Leaf clicks
6358
+ * emit `pointClick`.
6359
+ *
6360
+ * @example
6361
+ * <sds-treemap heading="Budget 2026" [data]="[{ name: 'Personnel', children: [{ name: 'Soins', value: 48 }] }]" />
6362
+ */
6363
+ declare class SdsTreemap {
6364
+ readonly data: _angular_core.InputSignal<readonly SdsTreemapNode[] | null | undefined>;
6365
+ readonly heading: _angular_core.InputSignal<string>;
6366
+ readonly subtitle: _angular_core.InputSignal<string>;
6367
+ readonly height: _angular_core.InputSignalWithTransform<number, unknown>;
6368
+ readonly valueFormat: _angular_core.InputSignal<SdsNumberFormat | null>;
6369
+ /** Click a branch to zoom into it (with a breadcrumb back). */
6370
+ readonly drilldown: _angular_core.InputSignalWithTransform<boolean, unknown>;
6371
+ /** Name of the top of the breadcrumb. */
6372
+ /** Default (`null`): the configured `labels.all` ("All"). */
6373
+ readonly rootLabel: _angular_core.InputSignal<string | null>;
6374
+ protected readonly rootName: _angular_core.Signal<string>;
6375
+ /** Print the value under the name inside tiles large enough. */
6376
+ readonly showValues: _angular_core.InputSignalWithTransform<boolean, unknown>;
6377
+ /** `auto` = the branch legend below the tiles when there are two or more branches. */
6378
+ readonly legend: _angular_core.InputSignal<SdsChartLegend>;
6379
+ readonly locale: _angular_core.InputSignal<string | null>;
6380
+ readonly tooltip: _angular_core.InputSignalWithTransform<boolean, unknown>;
6381
+ readonly animate: _angular_core.InputSignalWithTransform<boolean, unknown>;
6382
+ readonly loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
6383
+ /** Empty-state text. Default (`null`): the configured `labels.empty` ("No data to display"). */
6384
+ readonly emptyText: _angular_core.InputSignal<string | null>;
6385
+ readonly tableToggle: _angular_core.InputSignalWithTransform<boolean, unknown>;
6386
+ readonly ariaLabel: _angular_core.InputSignal<string | null>;
6387
+ /** A leaf tile was clicked (branches zoom instead while `drilldown` is on). `key` is the path "A › B". */
6388
+ readonly pointClick: _angular_core.OutputEmitterRef<SdsChartPointEvent<SdsTreemapNode>>;
6389
+ protected readonly customTooltip: _angular_core.Signal<SdsChartTooltip | undefined>;
6390
+ /** Requested zoom: data indices from the root down to the zoomed branch. */
6391
+ private readonly path;
6392
+ protected readonly active: _angular_core.WritableSignal<string | null>;
6393
+ protected readonly keyboard: _angular_core.WritableSignal<boolean>;
6394
+ private readonly announcement;
6395
+ protected readonly pointer: _angular_core.WritableSignal<{
6396
+ x: number;
6397
+ y: number;
6398
+ }>;
6399
+ protected readonly width: _angular_core.Signal<number>;
6400
+ private readonly loc;
6401
+ /** Built-in strings (provideSdsCharts labels over the English defaults). */
6402
+ protected readonly text: _angular_core.Signal<_besaitech_ng_design_system.SdsChartLabels>;
6403
+ private readonly animates;
6404
+ private readonly palette;
6405
+ private readonly fmt;
6406
+ private readonly pct;
6407
+ /** Leaving the chart dismisses a keyboard-driven readout (a pointer one clears on pointerleave). */
6408
+ protected onBlur(): void;
6409
+ /** Full hierarchy, summed once. */
6410
+ private readonly root;
6411
+ private build;
6412
+ protected readonly isEmpty: _angular_core.Signal<boolean>;
6413
+ /**
6414
+ * The zoom that actually applies: the requested path walked against the CURRENT data, stopping at
6415
+ * the first index that no longer names a branch — so new data can never leave a stale zoom behind.
6416
+ */
6417
+ protected readonly zoom: _angular_core.Signal<{
6418
+ node: SdsTreemapNode;
6419
+ indices: number[];
6420
+ names: string[];
6421
+ }>;
6422
+ /** Branch colour + label ink per top-level data index (colour follows the entity, not its size). */
6423
+ private readonly branchStyle;
6424
+ /** The zoomed sub-tree, laid out at the current size. */
6425
+ private readonly layoutRoot;
6426
+ private readonly tiles;
6427
+ private readonly target;
6428
+ private readonly ready;
6429
+ private readonly version;
6430
+ private readonly geometry;
6431
+ protected readonly rects: _angular_core.Signal<{
6432
+ key: string;
6433
+ x: number;
6434
+ y: number;
6435
+ w: number;
6436
+ h: number;
6437
+ color: string;
6438
+ ink: string;
6439
+ name: string;
6440
+ value: string;
6441
+ }[]>;
6442
+ protected readonly activeRect: _angular_core.Signal<{
6443
+ key: string;
6444
+ x: number;
6445
+ y: number;
6446
+ w: number;
6447
+ h: number;
6448
+ color: string;
6449
+ ink: string;
6450
+ name: string;
6451
+ value: string;
6452
+ } | null>;
6453
+ private readonly activeTile;
6454
+ protected readonly tooltipCtx: _angular_core.Signal<SdsChartTooltipContext<SdsTreemapNode> | null>;
6455
+ protected readonly liveText: _angular_core.Signal<string>;
6456
+ protected hover(key: string, event: PointerEvent): void;
6457
+ protected track(event: PointerEvent): void;
6458
+ /** Zoom to a breadcrumb depth (0 = everything) and say so to screen readers. */
6459
+ protected zoomTo(depth: number): void;
6460
+ private announceZoom;
6461
+ /** Zoom into the tile's branch — or, at the deepest level, report the leaf. */
6462
+ protected activate(key: string): void;
6463
+ protected onKey(event: KeyboardEvent): void;
6464
+ protected readonly legendItems: _angular_core.Signal<LegendItem[]>;
6465
+ protected readonly legendPosition: _angular_core.Signal<"none" | "top" | "bottom" | "right">;
6466
+ protected readonly label: _angular_core.Signal<string>;
6467
+ protected readonly table: _angular_core.Signal<ChartTable>;
6468
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SdsTreemap, never>;
6469
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SdsTreemap, "sds-treemap", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "heading": { "alias": "heading"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "valueFormat": { "alias": "valueFormat"; "required": false; "isSignal": true; }; "drilldown": { "alias": "drilldown"; "required": false; "isSignal": true; }; "rootLabel": { "alias": "rootLabel"; "required": false; "isSignal": true; }; "showValues": { "alias": "showValues"; "required": false; "isSignal": true; }; "legend": { "alias": "legend"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "animate": { "alias": "animate"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "tableToggle": { "alias": "tableToggle"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "pointClick": "pointClick"; }, ["customTooltip"], never, true, never>;
6470
+ }
6471
+
6472
+ type SdsSparklineVariant = 'line' | 'area' | 'bar';
6473
+ /**
6474
+ * A word-sized trend — in a table cell, a KPI tile, a list row. No axes, no legend: the shape is the
6475
+ * message. Line, area or micro-bars; an optional normal range band and reference value; the last
6476
+ * point (and optionally min / max) marked; a tiny hover readout; and an accessible summary (first,
6477
+ * last, min, max) so the trend is never visual-only.
6478
+ *
6479
+ * @example
6480
+ * <sds-sparkline [data]="[12, 14, 13, 18, 21, 19, 24]" label="Admissions sur 7 jours" />
6481
+ */
6482
+ declare class SdsSparkline {
6483
+ /** The values in order. `null` leaves a gap. */
6484
+ readonly data: _angular_core.InputSignal<readonly (number | null | undefined)[] | null | undefined>;
6485
+ /** Optional name per point (dates, weeks) for the hover readout. */
6486
+ readonly labels: _angular_core.InputSignal<readonly string[] | null>;
6487
+ readonly variant: _angular_core.InputSignal<SdsSparklineVariant>;
6488
+ /** Width in px; `null` (default) fills the container. */
6489
+ readonly width: _angular_core.InputSignalWithTransform<number | null, unknown>;
6490
+ readonly height: _angular_core.InputSignalWithTransform<number, unknown>;
6491
+ /** Any CSS colour. Defaults to the first categorical slot. */
6492
+ readonly color: _angular_core.InputSignal<string | null>;
6493
+ readonly strokeWidth: _angular_core.InputSignalWithTransform<number, unknown>;
6494
+ /** Mark the last point. */
6495
+ readonly showLast: _angular_core.InputSignalWithTransform<boolean, unknown>;
6496
+ /** Mark the lowest and highest points. */
6497
+ readonly showMinMax: _angular_core.InputSignalWithTransform<boolean, unknown>;
6498
+ /** Shade a normal range, e.g. [60, 100]. */
6499
+ readonly band: _angular_core.InputSignal<readonly [number, number] | null>;
6500
+ /** Draw a reference value (a target, zero, last year's mean). */
6501
+ readonly reference: _angular_core.InputSignal<number | null>;
6502
+ /** Include zero in the value range (bars always do). */
6503
+ readonly includeZero: _angular_core.InputSignalWithTransform<boolean, unknown>;
6504
+ readonly valueFormat: _angular_core.InputSignal<SdsNumberFormat | null>;
6505
+ /** What the trend measures — prefixes the spoken summary. */
6506
+ readonly label: _angular_core.InputSignal<string>;
6507
+ /** Replace the generated summary ("Trend: from 12 to 24 — min…", `labels.sparklineSummary`) entirely. */
6508
+ readonly ariaLabel: _angular_core.InputSignal<string | null>;
6509
+ readonly tooltip: _angular_core.InputSignalWithTransform<boolean, unknown>;
6510
+ readonly animate: _angular_core.InputSignalWithTransform<boolean, unknown>;
6511
+ readonly locale: _angular_core.InputSignal<string | null>;
6512
+ protected readonly uid: string;
6513
+ protected readonly active: _angular_core.WritableSignal<number | null>;
6514
+ private readonly measured;
6515
+ private readonly loc;
6516
+ /** Built-in strings (provideSdsCharts labels over the English defaults). */
6517
+ private readonly text;
6518
+ private readonly animates;
6519
+ private readonly fmt;
6520
+ private readonly palette;
6521
+ protected readonly tint: _angular_core.Signal<string>;
6522
+ protected readonly barTint: _angular_core.Signal<string>;
6523
+ private readonly values;
6524
+ protected readonly geo: _angular_core.Signal<{
6525
+ width: number;
6526
+ x: (i: number) => number;
6527
+ y: (v: number) => number;
6528
+ base: number;
6529
+ band: {
6530
+ y: number;
6531
+ h: number;
6532
+ } | null;
6533
+ ref: number | null;
6534
+ } | null>;
6535
+ private readonly target;
6536
+ private readonly ready;
6537
+ private readonly version;
6538
+ private readonly tween;
6539
+ private readonly seq;
6540
+ protected readonly paths: _angular_core.Signal<{
6541
+ line: string;
6542
+ area: string;
6543
+ }>;
6544
+ protected readonly bars: _angular_core.Signal<{
6545
+ d: string;
6546
+ last: boolean;
6547
+ }[]>;
6548
+ protected readonly markers: _angular_core.Signal<{
6549
+ kind: string;
6550
+ x: number;
6551
+ y: number;
6552
+ }[]>;
6553
+ protected readonly activePoint: _angular_core.Signal<{
6554
+ x: number;
6555
+ y: number;
6556
+ } | null>;
6557
+ protected readonly tooltipCtx: _angular_core.Signal<SdsChartTooltipContext<any> | null>;
6558
+ /** "Admissions: from 12 to 24 — min 12, max 24, 7 points" (`labels.sparklineSummary`). */
6559
+ protected readonly summary: _angular_core.Signal<string>;
6560
+ protected onPointer(event: PointerEvent): void;
6561
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SdsSparkline, never>;
6562
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SdsSparkline, "sds-sparkline", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "strokeWidth": { "alias": "strokeWidth"; "required": false; "isSignal": true; }; "showLast": { "alias": "showLast"; "required": false; "isSignal": true; }; "showMinMax": { "alias": "showMinMax"; "required": false; "isSignal": true; }; "band": { "alias": "band"; "required": false; "isSignal": true; }; "reference": { "alias": "reference"; "required": false; "isSignal": true; }; "includeZero": { "alias": "includeZero"; "required": false; "isSignal": true; }; "valueFormat": { "alias": "valueFormat"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "animate": { "alias": "animate"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
6563
+ }
6564
+
6565
+ /** How the change is expressed: relative (+12,4 %) or in the value's own unit (+38). */
6566
+ type SdsKpiDeltaMode = 'percent' | 'absolute';
6567
+ type SdsKpiSize = 'md' | 'lg';
6568
+ /** `card` draws its own surface; `plain` sits inside a card or grid you already have. */
6569
+ type SdsKpiAppearance = 'card' | 'plain';
6570
+ /**
6571
+ * A stat tile — the number IS the chart. Label, headline value, a signed change against a named
6572
+ * period whose colour means "good" or "bad" (set `upIsGood` false for waits, costs, incidents), an
6573
+ * arrow glyph and a spoken sentence so the change never relies on colour, and an optional sparkline
6574
+ * of the recent trend. Values auto-compact (12 900 → 12,9 k) unless a format says otherwise.
6575
+ *
6576
+ * @example
6577
+ * <sds-kpi label="Admissions" [value]="1284" [previous]="1150" deltaLabel="vs semaine passée" [trend]="last12Weeks" />
6578
+ */
6579
+ declare class SdsKpi {
6580
+ readonly label: _angular_core.InputSignal<string>;
6581
+ readonly value: _angular_core.InputSignal<number | null | undefined>;
6582
+ /** Value format. Default: exact below 10 000, compact above (12,9 k · 4,2 M). */
6583
+ readonly valueFormat: _angular_core.InputSignal<SdsNumberFormat | null>;
6584
+ /** The comparison value — the change is computed from it. */
6585
+ readonly previous: _angular_core.InputSignal<number | null | undefined>;
6586
+ /** Give the change directly instead of `previous` (a ratio in `percent` mode: 0.124 = +12,4 %). */
6587
+ readonly delta: _angular_core.InputSignal<number | null | undefined>;
6588
+ readonly deltaMode: _angular_core.InputSignal<SdsKpiDeltaMode>;
6589
+ /** The named period, e.g. "vs mois dernier". */
6590
+ readonly deltaLabel: _angular_core.InputSignal<string>;
6591
+ /** False when a rise is bad news (waiting time, cost, incidents). */
6592
+ readonly upIsGood: _angular_core.InputSignalWithTransform<boolean, unknown>;
6593
+ readonly trend: _angular_core.InputSignal<readonly (number | null)[] | null>;
6594
+ readonly trendLabels: _angular_core.InputSignal<readonly string[] | null>;
6595
+ readonly trendVariant: _angular_core.InputSignal<SdsSparklineVariant>;
6596
+ readonly trendColor: _angular_core.InputSignal<string | null>;
6597
+ readonly icon: _angular_core.InputSignal<"search" | "filter" | "chart-column" | "chart-line" | "chart-bar" | "chart-area" | "chart-pie" | "chart-scatter" | "grid-3x3" | "activity" | "gauge" | "trending-up" | "trending-down" | "clipboard-list" | "credit-card" | "external-link" | "languages" | "megaphone" | "monitor" | "store" | "user-round" | "home" | "user-plus" | "user-check" | "hand" | "users" | "bike" | "building-2" | "package" | "package-plus" | "package-open" | "rotate-ccw" | "bar-chart-3" | "log-out" | "panel-left-close" | "panel-left-open" | "panel-left" | "calendar" | "chevron-right" | "chevron-left" | "chevron-down" | "chevron-up" | "plus" | "minus" | "chevrons-left" | "chevrons-right" | "x" | "check" | "alert-circle" | "info" | "copy" | "type" | "tag" | "ticket" | "square" | "square-check" | "circle-dot" | "circle-user" | "layout-grid" | "panels-top-left" | "panel-top" | "rows-3" | "book-open" | "palette" | "bell" | "phone" | "settings" | "align-left" | "toggle-left" | "arrow-up" | "arrow-down" | "chevrons-up-down" | "chevrons-up" | "chevrons-down" | "star" | "message-square" | "table" | "qr-code" | "eye" | "eye-off" | "user" | "check-circle" | "arrows-clockwise" | "menu" | "file-text" | "file-check" | "hash" | "map-pin" | "inbox" | "arrow-right" | "refresh-cw" | "loader-circle" | "locate-fixed" | "locate-off" | "bug" | "scroll-text" | "moon" | "sun" | "search-x" | "command" | "sparkles" | "triangle-alert" | "octagon-x" | "ban" | "ellipsis" | "ellipsis-vertical" | "grip-vertical" | "upload" | "image" | "image-off" | "utensils" | "zoom-in" | "zoom-out" | "trash-2" | "clock" | "pencil" | "circle-help" | "stock" | "allergen-cereals-gluten" | "allergen-crustaceans" | "allergen-eggs" | "allergen-fish" | "allergen-peanuts" | "allergen-soybeans" | "allergen-milk" | "allergen-nuts" | "allergen-celery" | "allergen-mustard" | "allergen-sesame" | "allergen-sulphites" | "allergen-lupin" | "allergen-molluscs" | null>;
6598
+ /** Shown under the value when there is no change to report. */
6599
+ readonly hint: _angular_core.InputSignal<string>;
6600
+ readonly size: _angular_core.InputSignal<SdsKpiSize>;
6601
+ readonly appearance: _angular_core.InputSignal<SdsKpiAppearance>;
6602
+ readonly loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
6603
+ readonly locale: _angular_core.InputSignal<string | null>;
6604
+ private readonly loc;
6605
+ /** Built-in strings (provideSdsCharts labels over the English defaults). */
6606
+ private readonly text;
6607
+ protected readonly display: _angular_core.Signal<string>;
6608
+ private readonly deltaValue;
6609
+ /** The change, signed, with a tone that means good/bad — never colour alone (glyph + words). */
6610
+ protected readonly deltaView: _angular_core.Signal<{
6611
+ text: string;
6612
+ tone: string;
6613
+ icon: "trending-up" | "trending-down" | "minus";
6614
+ spoken: string;
6615
+ } | null>;
6616
+ private absoluteFormat;
6617
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SdsKpi, never>;
6618
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SdsKpi, "sds-kpi", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "valueFormat": { "alias": "valueFormat"; "required": false; "isSignal": true; }; "previous": { "alias": "previous"; "required": false; "isSignal": true; }; "delta": { "alias": "delta"; "required": false; "isSignal": true; }; "deltaMode": { "alias": "deltaMode"; "required": false; "isSignal": true; }; "deltaLabel": { "alias": "deltaLabel"; "required": false; "isSignal": true; }; "upIsGood": { "alias": "upIsGood"; "required": false; "isSignal": true; }; "trend": { "alias": "trend"; "required": false; "isSignal": true; }; "trendLabels": { "alias": "trendLabels"; "required": false; "isSignal": true; }; "trendVariant": { "alias": "trendVariant"; "required": false; "isSignal": true; }; "trendColor": { "alias": "trendColor"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
6619
+ }
6620
+
6621
+ export { SDS_ALLERGENS, SDS_ALLERGEN_ICONS, SDS_ALLERGEN_LABELS_EN, SDS_CHART_CONFIG, SDS_CHART_LABELS_EN, SDS_DONUT_OTHER_KEY, SDS_ICONS, SDS_PHONE_COUNTRIES, SDS_THEME_STORAGE_KEY, SDS_UI_PREF_LANG_PARAM, SDS_UI_PREF_THEME_PARAM, SdsAccordion, SdsAccordionContent, SdsAccordionHeader, SdsAccordionPanel, SdsAccordionStore, SdsAddressAutocomplete, SdsAddressExtra, SdsAllergenIcon, SdsAvatar, SdsBadge, SdsBarChart, SdsBulkBar, SdsButton, SdsCalendar, SdsCard, SdsChartTooltip, SdsCheckbox, SdsChecklistRow, SdsChip, SdsChipGroup, SdsDatePicker, SdsDateRangePicker, SdsDonutChart, SdsEnvBanner, SdsFileDrop, SdsHeatmap, SdsIcon, SdsImageCropper, SdsInput, SdsInputNumber, SdsKpi, SdsLanguageSwitcher, SdsLineChart, SdsLocalizedInput, SdsMenu, SdsMenuItem, SdsMenuTrigger, SdsMultiSelect, SdsNavGroup, SdsNavItem, SdsOtpInput, SdsPaginator, SdsPhoneInput, SdsRadio, SdsRangeCalendar, SdsScatterChart, SdsScore, SdsSearchCommand, SdsSegmented, SdsSelect, SdsSelectEmpty, SdsSelectFooter, SdsSelectOption, SdsShell, SdsSidebar, SdsSortableHandle, SdsSortableItem, SdsSortableList, SdsSparkline, SdsStatusTile, SdsTab, SdsTabList, SdsTabPanel, SdsTabPanels, SdsTable, SdsTableCell, SdsTableEmpty, SdsTableHeader, SdsTableRowExpansion, SdsTabs, SdsTabsStore, SdsTextarea, SdsThemeService, SdsThemeToggle, SdsTimeInput, SdsToastHost, SdsToastService, SdsToggleSwitch, SdsTopbar, SdsTreemap, SdsTriStateChip, SdsUserMenu, SidebarStore, addDays, addMonths, addMonthsKeepDay, appendUiPrefs, diffInDays, formatDateRange, formatDdMmYyyy, formatHhMm, isOutOfRange, isSameDay, isSameRange, isSdsThemeMode, isoDay, pad2, provideSdsCharts, readUiPrefs, sdsFileMatchesAccept, sdsFormatBytes, sdsFormatNational, sdsLastDays, sdsLastMonths, sdsMatchDialCode, sdsNormalizeSignificant, startOfDay, startOfMonth, stripUiPrefs };
6622
+ export type { SdsAccessor, SdsAccordionActive, SdsAccordionValue, SdsAddressAutocompleteAppearance, SdsAddressAutocompleteShape, SdsAddressAutocompleteSize, SdsAddressExtraContext, SdsAddressExtraPosition, SdsAddressLocateFn, SdsAddressSearchFn, SdsAddressSuggestion, SdsAllergen, SdsAvatarShape, SdsAvatarStatus, SdsBadgeSize, SdsBadgeVariant, SdsBarOrientation, SdsBarSort, SdsBulkBarPosition, SdsButtonShape, SdsButtonSize, SdsButtonVariant, SdsCardVariant, SdsChartAnnotation, SdsChartConfig, SdsChartGrid, SdsChartLabels, SdsChartLegend, SdsChartPointEvent, SdsChartReferenceBand, SdsChartReferenceLine, SdsChartScale, SdsChartSeries, SdsChartStack, SdsChartTone, SdsChartTooltipContext, SdsChartTooltipRow, SdsChartXType, SdsCheckboxSize, SdsChecklistStatus, SdsChipOption, SdsChipSize, SdsCropRect, SdsDatePickerSize, SdsDateRange, SdsDateRangePickerSize, SdsDateRangePreset, SdsDonutLegendValue, SdsDonutSort, SdsDonutVariant, SdsEnvBannerEnv, SdsFileDropAppearance, SdsFileRejection, SdsFileRejectionReason, SdsHeatmapScheme, SdsIconName, SdsIconSize, SdsImageCropperBlobOptions, SdsImageCropperShape, SdsInputAppearance, SdsInputNumberAppearance, SdsInputNumberButtonLayout, SdsInputNumberCurrencyDisplay, SdsInputNumberMode, SdsInputNumberSize, SdsInputShape, SdsInputSize, SdsInputType, SdsKpiAppearance, SdsKpiChangeText, SdsKpiDeltaMode, SdsKpiSize, SdsLanguageOption, SdsLanguageSwitcherAlign, SdsLanguageSwitcherAppearance, SdsLanguageSwitcherDirection, SdsLineCurve, SdsLineMarkers, SdsLocalizedInputSize, SdsLocalizedValue, SdsMenuAction, SdsMenuAlign, SdsMenuEntry, SdsMenuItemTone, SdsMenuSeparator, SdsMultiSelectDisplay, SdsMultiSelectSize, SdsNavItemBadgeTone, SdsNumberFormat, SdsOtpInputSize, SdsPaginatorSize, SdsPaginatorState, SdsPhoneCountry, SdsPhoneInputSize, SdsPhoneValue, SdsRadioSize, SdsScoreSize, SdsScoreTier, SdsScoreVariant, SdsSearchAppearance, SdsSearchItem, SdsSegmentedOption, SdsSegmentedSize, SdsSelectAppearance, SdsSelectEmptyContext, SdsSelectFooterContext, SdsSelectOptionContext, SdsSelectSize, SdsShellBackground, SdsSidebarAppearance, SdsSortOrder, SdsSortableAppearance, SdsSortableItemContext, SdsSortableReorderEvent, SdsSparklineSummaryText, SdsSparklineVariant, SdsStatusTileState, SdsTabValue, SdsTableCellCommitEvent, SdsTableCellContext, SdsTableCellErrors, SdsTableColumn, SdsTableEditTrigger, SdsTableEditor, SdsTableEmptyContext, SdsTableHeaderContext, SdsTableLazyEvent, SdsTableRowExpansionContext, SdsTableSelectOption, SdsTableSize, SdsTableSortEvent, SdsTabsVariant, SdsTextareaAppearance, SdsTextareaResize, SdsTextareaSize, SdsTheme, SdsThemeMode, SdsThemeToggleAppearance, SdsTimeInputAppearance, SdsTimeInputSize, SdsToast, SdsToastKind, SdsToggleSwitchSize, SdsTopbarAppearance, SdsTreemapNode, SdsTrendDirection, SdsTriState, SdsTriStateChipSize, SdsUiPrefs, SdsUserMenuAlign, SdsUserMenuAppearance, SdsXFormat, SdsXValue };