@masmarino/gabarit 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,10 +1,11 @@
1
1
  import * as _angular_platform_browser from '@angular/platform-browser';
2
2
  import * as _angular_core from '@angular/core';
3
- import { OnDestroy, TemplateRef, ElementRef, InjectionToken, Signal } from '@angular/core';
3
+ import { WritableSignal, Signal, OnDestroy, TemplateRef, ElementRef, PipeTransform, InjectionToken, Provider } from '@angular/core';
4
4
  import { ControlValueAccessor, FormControl } from '@angular/forms';
5
5
  import { Observable } from 'rxjs';
6
+ import * as _masmarino_gabarit from '@masmarino/gabarit';
6
7
 
7
- declare const GABARIT_VERSION = "1.1.0";
8
+ declare const GABARIT_VERSION = "1.2.0";
8
9
 
9
10
  declare class Icon {
10
11
  private readonly sanitizer;
@@ -51,9 +52,24 @@ declare class AppShell {
51
52
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AppShell, "gbt-app-shell", never, { "navLabel": { "alias": "navLabel"; "required": true; "isSignal": true; }; "skipLabel": { "alias": "skipLabel"; "required": true; "isSignal": true; }; "openMenuLabel": { "alias": "openMenuLabel"; "required": true; "isSignal": true; }; "closeMenuLabel": { "alias": "closeMenuLabel"; "required": true; "isSignal": true; }; "collapseLabel": { "alias": "collapseLabel"; "required": false; "isSignal": true; }; "expandLabel": { "alias": "expandLabel"; "required": false; "isSignal": true; }; "versionLabel": { "alias": "versionLabel"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; }, { "collapsedChange": "collapsedChange"; }, never, ["[shell-brand]", "[shell-nav]", "[shell-header]", "*"], true, never>;
52
53
  }
53
54
 
55
+ declare class AppShellNavGroup {
56
+ label: _angular_core.InputSignal<string>;
57
+ icon: _angular_core.InputSignal<string | null>;
58
+ expanded: _angular_core.ModelSignal<boolean>;
59
+ protected readonly panelId: string;
60
+ protected toggle(): void;
61
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AppShellNavGroup, never>;
62
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AppShellNavGroup, "gbt-app-shell-nav-group", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "expanded": { "alias": "expanded"; "required": false; "isSignal": true; }; }, { "expanded": "expandedChange"; }, never, ["*"], true, never>;
63
+ }
64
+
65
+ type ButtonVariant = 'primary' | 'secondary' | 'danger' | 'ghost' | 'ghost-danger' | 'link';
66
+ type ButtonSize = 'small' | 'medium' | 'large';
67
+ type ButtonHaspopup = 'menu' | 'listbox' | 'tree' | 'grid' | 'dialog' | 'true' | 'false';
54
68
  declare class Button {
55
- variant: _angular_core.InputSignal<"primary" | "secondary" | "danger">;
56
- size: _angular_core.InputSignal<"small" | "medium" | "large">;
69
+ private readonly elementRef;
70
+ protected readonly isAnchor: boolean;
71
+ variant: _angular_core.InputSignal<ButtonVariant>;
72
+ size: _angular_core.InputSignal<ButtonSize>;
57
73
  type: _angular_core.InputSignal<"button" | "submit">;
58
74
  text: _angular_core.InputSignal<string>;
59
75
  iconName: _angular_core.InputSignal<string | null>;
@@ -61,104 +77,130 @@ declare class Button {
61
77
  loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
62
78
  loadingLabel: _angular_core.InputSignal<string>;
63
79
  disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
80
+ pressed: _angular_core.InputSignalWithTransform<boolean | null, string | boolean | null | undefined>;
81
+ ariaExpanded: _angular_core.InputSignalWithTransform<boolean | null, string | boolean | null | undefined>;
82
+ ariaControls: _angular_core.InputSignal<string | null>;
83
+ ariaHaspopup: _angular_core.InputSignal<boolean | ButtonHaspopup | null>;
84
+ block: _angular_core.InputSignalWithTransform<boolean, unknown>;
85
+ iconOnly: _angular_core.InputSignalWithTransform<boolean, unknown>;
64
86
  clicked: _angular_core.OutputEmitterRef<void>;
87
+ protected readonly anchorHostClass: _angular_core.Signal<string>;
88
+ constructor();
65
89
  protected handleClick(): void;
66
90
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<Button, never>;
67
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<Button, "gbt-button", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "text": { "alias": "text"; "required": false; "isSignal": true; }; "iconName": { "alias": "iconName"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "loadingLabel": { "alias": "loadingLabel"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "clicked": "clicked"; }, never, never, true, never>;
91
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Button, "gbt-button, a[gbtButton]", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "text": { "alias": "text"; "required": false; "isSignal": true; }; "iconName": { "alias": "iconName"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "loadingLabel": { "alias": "loadingLabel"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "pressed": { "alias": "pressed"; "required": false; "isSignal": true; }; "ariaExpanded": { "alias": "ariaExpanded"; "required": false; "isSignal": true; }; "ariaControls": { "alias": "ariaControls"; "required": false; "isSignal": true; }; "ariaHaspopup": { "alias": "ariaHaspopup"; "required": false; "isSignal": true; }; "block": { "alias": "block"; "required": false; "isSignal": true; }; "iconOnly": { "alias": "iconOnly"; "required": false; "isSignal": true; }; }, { "clicked": "clicked"; }, never, ["*"], true, never>;
92
+ }
93
+
94
+ type CopyStatus = 'idle' | 'copied' | 'failed';
95
+ type CopyValue = string | (() => string);
96
+ declare function copyToClipboard(text: string): Promise<boolean>;
97
+ declare function selectContents(element: HTMLElement | null | undefined): void;
98
+ interface CopyOutcome {
99
+ copied: boolean;
100
+ text: string;
101
+ }
102
+ declare class ClipboardFeedback {
103
+ readonly status: _angular_core.WritableSignal<CopyStatus>;
104
+ private timer;
105
+ private destroyed;
106
+ constructor();
107
+ copy(value: CopyValue, feedbackMs: number, selectTarget?: HTMLElement | null): Promise<CopyOutcome | null>;
108
+ reset(): void;
109
+ private show;
110
+ private clearTimer;
68
111
  }
69
112
 
70
113
  type BadgeVariant = 'neutral' | 'success' | 'warning' | 'error' | 'info';
114
+ type BadgeAppearance = 'filled' | 'outline';
115
+ type BadgeSize = 'md' | 'sm';
71
116
  declare class Badge {
72
117
  variant: _angular_core.InputSignal<BadgeVariant>;
73
118
  icon: _angular_core.InputSignal<string | undefined>;
119
+ appearance: _angular_core.InputSignal<BadgeAppearance>;
120
+ size: _angular_core.InputSignal<BadgeSize>;
121
+ truncate: _angular_core.InputSignalWithTransform<boolean, unknown>;
122
+ tabularNums: _angular_core.InputSignalWithTransform<boolean, unknown>;
123
+ mono: _angular_core.InputSignalWithTransform<boolean, unknown>;
124
+ maxWidth: _angular_core.InputSignal<string | null>;
125
+ fullText: _angular_core.InputSignal<string | null>;
126
+ copyable: _angular_core.InputSignalWithTransform<boolean, unknown>;
127
+ copyValue: _angular_core.InputSignal<string | null>;
128
+ copyLabel: _angular_core.InputSignal<string>;
129
+ copiedText: _angular_core.InputSignal<string>;
130
+ failedText: _angular_core.InputSignal<string>;
131
+ feedbackMs: _angular_core.InputSignal<number>;
132
+ value: _angular_core.InputSignal<number | null>;
133
+ max: _angular_core.InputSignal<number | null>;
134
+ hideZero: _angular_core.InputSignalWithTransform<boolean, unknown>;
135
+ label: _angular_core.InputSignal<string | null>;
136
+ copied: _angular_core.OutputEmitterRef<string>;
137
+ copyFailed: _angular_core.OutputEmitterRef<void>;
138
+ protected readonly clipboard: ClipboardFeedback;
139
+ private readonly content;
140
+ protected readonly hasValue: _angular_core.Signal<boolean>;
141
+ private readonly count;
142
+ protected readonly displayText: _angular_core.Signal<string>;
143
+ protected readonly visible: _angular_core.Signal<boolean>;
144
+ protected readonly glyph: _angular_core.Signal<"copy" | "check" | "alert-circle">;
145
+ protected readonly statusText: _angular_core.Signal<string>;
146
+ protected copy(): Promise<void>;
74
147
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<Badge, never>;
75
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<Badge, "gbt-badge", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
148
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Badge, "gbt-badge", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "truncate": { "alias": "truncate"; "required": false; "isSignal": true; }; "tabularNums": { "alias": "tabularNums"; "required": false; "isSignal": true; }; "mono": { "alias": "mono"; "required": false; "isSignal": true; }; "maxWidth": { "alias": "maxWidth"; "required": false; "isSignal": true; }; "fullText": { "alias": "fullText"; "required": false; "isSignal": true; }; "copyable": { "alias": "copyable"; "required": false; "isSignal": true; }; "copyValue": { "alias": "copyValue"; "required": false; "isSignal": true; }; "copyLabel": { "alias": "copyLabel"; "required": false; "isSignal": true; }; "copiedText": { "alias": "copiedText"; "required": false; "isSignal": true; }; "failedText": { "alias": "failedText"; "required": false; "isSignal": true; }; "feedbackMs": { "alias": "feedbackMs"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "hideZero": { "alias": "hideZero"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, { "copied": "copied"; "copyFailed": "copyFailed"; }, never, ["*"], true, never>;
76
149
  }
77
150
 
78
- type AvatarSize = 'sm' | 'md' | 'lg';
79
- declare class Avatar {
80
- name: _angular_core.InputSignal<string>;
81
- src: _angular_core.InputSignal<string | null>;
82
- size: _angular_core.InputSignal<AvatarSize>;
83
- protected readonly imageFailed: _angular_core.WritableSignal<boolean>;
84
- protected readonly showImage: _angular_core.Signal<boolean>;
85
- protected readonly initials: _angular_core.Signal<string>;
86
- protected onImageError(): void;
87
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<Avatar, never>;
88
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<Avatar, "gbt-avatar", never, { "name": { "alias": "name"; "required": true; "isSignal": true; }; "src": { "alias": "src"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
151
+ interface Scale<T> {
152
+ map(value: T): number;
153
+ invert(pixel: number): T;
154
+ readonly domain: [T, T];
155
+ readonly range: [number, number];
89
156
  }
90
-
91
- type SkeletonVariant = 'text' | 'circle' | 'rect';
92
- declare class Skeleton {
93
- variant: _angular_core.InputSignal<SkeletonVariant>;
94
- width: _angular_core.InputSignal<string>;
95
- height: _angular_core.InputSignal<string | null>;
96
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<Skeleton, never>;
97
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<Skeleton, "gbt-skeleton", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
157
+ declare function linearScale(domain: [number, number], range: [number, number]): Scale<number>;
158
+ declare function timeScale(domain: [Date, Date], range: [number, number]): Scale<Date>;
159
+ interface BandScale {
160
+ map(value: string): number;
161
+ invert(pixel: number): string | null;
162
+ readonly bandwidth: number;
163
+ readonly domain: string[];
164
+ readonly range: [number, number];
98
165
  }
166
+ declare function bandScale(domain: string[], range: [number, number], padding?: number): BandScale;
99
167
 
100
- interface AvatarGroupItem {
101
- name: string;
102
- src?: string;
103
- }
104
- declare class AvatarGroup<T extends AvatarGroupItem = AvatarGroupItem> {
105
- private readonly elementRef;
106
- items: _angular_core.InputSignal<T[]>;
107
- max: _angular_core.InputSignal<number>;
108
- ariaLabel: _angular_core.InputSignal<string>;
109
- moreLabel: _angular_core.InputSignal<(count: number) => string>;
110
- activeItem: _angular_core.InputSignal<T | null>;
111
- itemClick: _angular_core.OutputEmitterRef<T>;
112
- protected readonly panelOpen: _angular_core.WritableSignal<boolean>;
113
- protected readonly panelStyle: _angular_core.WritableSignal<{
114
- top: string;
115
- left: string;
116
- } | null>;
117
- protected readonly visibleItems: _angular_core.Signal<T[]>;
118
- protected readonly overflowItems: _angular_core.Signal<T[]>;
119
- protected readonly overflowCount: _angular_core.Signal<number>;
120
- protected isActive(item: T): boolean;
121
- protected selectItem(item: T): void;
122
- protected toggleOverflowPanel(): void;
123
- protected updatePanelPosition(): void;
124
- protected handleClickOutside(event: MouseEvent): void;
125
- protected onKeydown(event: KeyboardEvent): void;
126
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<AvatarGroup<any>, never>;
127
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AvatarGroup<any>, "gbt-avatar-group", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "moreLabel": { "alias": "moreLabel"; "required": false; "isSignal": true; }; "activeItem": { "alias": "activeItem"; "required": false; "isSignal": true; }; }, { "itemClick": "itemClick"; }, never, never, true, never>;
168
+ declare function niceTicks(min: number, max: number, count: number): number[];
169
+ type TimeUnit = 'second' | 'minute' | 'hour' | 'day' | 'month' | 'year';
170
+ interface TimeTicks {
171
+ readonly values: Date[];
172
+ readonly unit: TimeUnit;
173
+ format(date: Date, locale: string): string;
128
174
  }
175
+ declare function timeTicks(start: Date, end: Date, pixelWidth: number): TimeTicks;
129
176
 
130
- type AlertVariant = 'info' | 'success' | 'warning' | 'error';
131
- declare class Alert {
132
- variant: _angular_core.InputSignal<AlertVariant>;
133
- dismissible: _angular_core.InputSignalWithTransform<boolean, unknown>;
134
- closeLabel: _angular_core.InputSignal<string>;
135
- dismissed: _angular_core.OutputEmitterRef<void>;
136
- protected readonly role: _angular_core.Signal<"alert" | "status">;
137
- protected readonly icon: _angular_core.Signal<string>;
138
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<Alert, never>;
139
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<Alert, "gbt-alert", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "dismissible": { "alias": "dismissible"; "required": false; "isSignal": true; }; "closeLabel": { "alias": "closeLabel"; "required": false; "isSignal": true; }; }, { "dismissed": "dismissed"; }, never, ["*"], true, never>;
177
+ declare function formatNumber(value: number, locale: string, decimals?: number): string;
178
+ declare function formatCompact(value: number, locale: string): string;
179
+ interface FormatDurationOptions {
180
+ days?: boolean;
140
181
  }
182
+ declare function formatDuration(ms: number, locale: string, options?: FormatDurationOptions): string;
183
+ declare function formatPercent(ratio: number, locale: string, decimals?: number): string;
141
184
 
142
- declare class Tag {
143
- color: _angular_core.InputSignal<string>;
144
- removable: _angular_core.InputSignal<boolean>;
145
- removeLabel: _angular_core.InputSignal<string>;
146
- disabled: _angular_core.InputSignal<boolean>;
147
- removed: _angular_core.OutputEmitterRef<void>;
148
- protected readonly textColor: _angular_core.Signal<string>;
149
- protected onRemoveClick(event: MouseEvent): void;
150
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<Tag, never>;
151
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<Tag, "gbt-tag", never, { "color": { "alias": "color"; "required": true; "isSignal": true; }; "removable": { "alias": "removable"; "required": false; "isSignal": true; }; "removeLabel": { "alias": "removeLabel"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "removed": "removed"; }, never, ["*"], true, never>;
185
+ interface FormatBytesOptions {
186
+ base?: 1000 | 1024;
187
+ decimals?: number;
188
+ binaryUnits?: 'iec' | 'legacy';
152
189
  }
190
+ declare function formatBytes(bytes: number, locale: string, options?: FormatBytesOptions): string;
153
191
 
154
- type EmptyStateIllustration = 'folder' | 'star' | 'checklist' | 'merge' | 'pipeline' | 'tag' | 'book' | 'server';
155
- declare class EmptyState {
156
- illustration: _angular_core.InputSignal<EmptyStateIllustration>;
157
- heading: _angular_core.InputSignal<string>;
158
- message: _angular_core.InputSignal<string>;
159
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<EmptyState, never>;
160
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<EmptyState, "gbt-empty-state", never, { "illustration": { "alias": "illustration"; "required": true; "isSignal": true; }; "heading": { "alias": "heading"; "required": true; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
192
+ type DateInput = Date | string | number;
193
+ interface FormatRelativeTimeOptions {
194
+ style?: 'long' | 'short' | 'narrow';
195
+ numeric?: 'auto' | 'always';
196
+ maxUnit?: 'hour' | 'day' | 'week' | 'month';
197
+ absoluteAfterDays?: number;
198
+ timeZone?: string;
161
199
  }
200
+ declare function formatRelativeTime(date: DateInput | null | undefined, locale: string, now?: DateInput, options?: FormatRelativeTimeOptions): string;
201
+ declare function formatDateTime(date: DateInput | null | undefined, locale: string, options?: Intl.DateTimeFormatOptions): string;
202
+
203
+ declare function computeInitials(name: string): string;
162
204
 
163
205
  interface SelectOption<T = string> {
164
206
  value: T;
@@ -170,7 +212,10 @@ declare class Select<T = string> implements ControlValueAccessor {
170
212
  private readonly elementRef;
171
213
  id: _angular_core.InputSignal<string>;
172
214
  label: _angular_core.InputSignal<string>;
173
- size: _angular_core.InputSignal<"sm" | "md">;
215
+ size: _angular_core.InputSignal<"md" | "sm">;
216
+ hint: _angular_core.InputSignal<string>;
217
+ hideLabel: _angular_core.InputSignalWithTransform<boolean, unknown>;
218
+ fullWidth: _angular_core.InputSignalWithTransform<boolean, unknown>;
174
219
  options: _angular_core.InputSignal<SelectOption<T>[]>;
175
220
  multiple: _angular_core.InputSignalWithTransform<boolean, unknown>;
176
221
  chips: _angular_core.InputSignalWithTransform<boolean, unknown>;
@@ -180,6 +225,7 @@ declare class Select<T = string> implements ControlValueAccessor {
180
225
  errorMessage: _angular_core.InputSignal<string | null>;
181
226
  selectedCountLabel: _angular_core.InputSignal<(count: number) => string>;
182
227
  chipRemoveLabel: _angular_core.InputSignal<(label: string) => string>;
228
+ noOptionsMessage: _angular_core.InputSignal<string>;
183
229
  protected readonly open: _angular_core.WritableSignal<boolean>;
184
230
  protected readonly activeIndex: _angular_core.WritableSignal<number>;
185
231
  protected readonly selected: _angular_core.WritableSignal<T[]>;
@@ -191,6 +237,8 @@ declare class Select<T = string> implements ControlValueAccessor {
191
237
  private readonly formDisabled;
192
238
  protected readonly labelId: _angular_core.Signal<string>;
193
239
  protected readonly chipsId: _angular_core.Signal<string>;
240
+ protected readonly hintId: _angular_core.Signal<string>;
241
+ protected readonly showHint: _angular_core.Signal<boolean>;
194
242
  protected readonly isDisabled: _angular_core.Signal<boolean>;
195
243
  private onChange;
196
244
  private onTouched;
@@ -201,30 +249,19 @@ declare class Select<T = string> implements ControlValueAccessor {
201
249
  protected readonly selectedOptions: _angular_core.Signal<SelectOption<T>[]>;
202
250
  protected readonly triggerLabel: _angular_core.Signal<string>;
203
251
  protected readonly chipsVisible: _angular_core.Signal<boolean>;
204
- /**
205
- * In chips mode the trigger keeps showing the placeholder, so the selection
206
- * is conveyed to assistive technology by describing the trigger with the
207
- * chip row itself. The error message keeps its own id in the list.
208
- */
209
252
  protected readonly describedBy: _angular_core.Signal<string | null>;
210
253
  protected readonly triggerIcon: _angular_core.Signal<string | undefined>;
211
254
  protected readonly activeOptionId: _angular_core.Signal<string | null>;
255
+ protected readonly hasNoOptions: _angular_core.Signal<boolean>;
212
256
  protected isSelected(value: T): boolean;
213
257
  protected toggleOpen(): void;
214
258
  protected updatePanelPosition(): void;
215
- /**
216
- * Removes the chip at `index`. Refuses to mutate anything while the control
217
- * is disabled (the remove buttons are not rendered then, but a programmatic
218
- * caller must not be able to bypass the disabled state either), and moves
219
- * focus off the button it is about to destroy — otherwise focus falls back
220
- * to `<body>`.
221
- */
222
259
  protected removeChip(value: T, index: number): void;
223
260
  protected selectOption(value: T): void;
224
261
  protected handleClickOutside(event: MouseEvent): void;
225
262
  protected onKeydown(event: KeyboardEvent): void;
226
263
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<Select<any>, never>;
227
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<Select<any>, "gbt-select", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": true; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "chips": { "alias": "chips"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "selectedCountLabel": { "alias": "selectedCountLabel"; "required": false; "isSignal": true; }; "chipRemoveLabel": { "alias": "chipRemoveLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
264
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Select<any>, "gbt-select", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "hideLabel": { "alias": "hideLabel"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": true; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "chips": { "alias": "chips"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "selectedCountLabel": { "alias": "selectedCountLabel"; "required": false; "isSignal": true; }; "chipRemoveLabel": { "alias": "chipRemoveLabel"; "required": false; "isSignal": true; }; "noOptionsMessage": { "alias": "noOptionsMessage"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
228
265
  }
229
266
 
230
267
  interface ListToolbarSortOption<T extends string = string> {
@@ -252,31 +289,226 @@ declare class ListToolbar<T extends string = string> {
252
289
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<ListToolbar<any>, "gbt-list-toolbar", never, { "searchValue": { "alias": "searchValue"; "required": false; "isSignal": true; }; "searchLabel": { "alias": "searchLabel"; "required": true; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "sortOptions": { "alias": "sortOptions"; "required": true; "isSignal": true; }; "sortValue": { "alias": "sortValue"; "required": true; "isSignal": true; }; "sortDirection": { "alias": "sortDirection"; "required": false; "isSignal": true; }; "sortLabel": { "alias": "sortLabel"; "required": false; "isSignal": true; }; "directionLabel": { "alias": "directionLabel"; "required": false; "isSignal": true; }; }, { "searchValueChange": "searchValueChange"; "sortValueChange": "sortValueChange"; "sortDirectionChange": "sortDirectionChange"; }, never, never, true, never>;
253
290
  }
254
291
 
292
+ type ListToolbarDirection = 'asc' | 'desc';
293
+ type ListToolbarSortValue = string | number | boolean | Date | null | undefined;
294
+ interface ListToolbarStateConfig<K extends string> {
295
+ sortOptions?: ListToolbarSortOption<K>[];
296
+ defaultSort?: K;
297
+ defaultDirection?: ListToolbarDirection;
298
+ initialSearch?: string;
299
+ }
300
+ interface ListToolbarAccessors<T, K extends string> {
301
+ text?: (item: T) => string | readonly (string | null | undefined)[] | null | undefined;
302
+ matches?: (item: T, query: string) => boolean;
303
+ sortBy?: Partial<Record<K, (item: T) => ListToolbarSortValue>>;
304
+ compare?: (a: T, b: T, key: K) => number;
305
+ locale?: string;
306
+ }
307
+ interface ListToolbarState<K extends string = string> {
308
+ readonly search: WritableSignal<string>;
309
+ readonly sortValue: WritableSignal<K>;
310
+ readonly direction: WritableSignal<ListToolbarDirection>;
311
+ readonly sortOptions: ListToolbarSortOption<K>[];
312
+ readonly dirty: Signal<boolean>;
313
+ reset(): void;
314
+ apply<T>(items: readonly T[], accessors: ListToolbarAccessors<T, K>): T[];
315
+ filtered<T>(source: () => readonly T[], accessors: ListToolbarAccessors<T, K>): Signal<T[]>;
316
+ }
317
+ declare function createListToolbarState<K extends string = string>(config?: ListToolbarStateConfig<K>): ListToolbarState<K>;
318
+
319
+ interface Point {
320
+ x: number;
321
+ y: number;
322
+ }
323
+ declare function linePath(points: Point[]): string;
324
+ declare function areaPath(points: Point[], baseline: number): string;
325
+ interface Arc {
326
+ startAngle: number;
327
+ endAngle: number;
328
+ innerRadius: number;
329
+ outerRadius: number;
330
+ }
331
+ declare function arcPath(arc: Arc): string;
332
+
333
+ declare function nearestIndex(sorted: number[], target: number): number;
334
+
335
+ type AvatarSize = 'sm' | 'md' | 'lg';
336
+ declare class Avatar {
337
+ name: _angular_core.InputSignal<string>;
338
+ src: _angular_core.InputSignal<string | null>;
339
+ size: _angular_core.InputSignal<AvatarSize>;
340
+ protected readonly imageFailed: _angular_core.WritableSignal<boolean>;
341
+ protected readonly showImage: _angular_core.Signal<boolean>;
342
+ protected readonly initials: _angular_core.Signal<string>;
343
+ protected onImageError(): void;
344
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Avatar, never>;
345
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Avatar, "gbt-avatar", never, { "name": { "alias": "name"; "required": true; "isSignal": true; }; "src": { "alias": "src"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
346
+ }
347
+
348
+ type SkeletonVariant = 'text' | 'circle' | 'rect';
349
+ declare class Skeleton {
350
+ variant: _angular_core.InputSignal<SkeletonVariant>;
351
+ width: _angular_core.InputSignal<string>;
352
+ height: _angular_core.InputSignal<string | null>;
353
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Skeleton, never>;
354
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Skeleton, "gbt-skeleton", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
355
+ }
356
+
357
+ interface AvatarGroupItem {
358
+ name: string;
359
+ src?: string;
360
+ }
361
+ declare class AvatarGroup<T extends AvatarGroupItem = AvatarGroupItem> {
362
+ private readonly elementRef;
363
+ items: _angular_core.InputSignal<T[]>;
364
+ max: _angular_core.InputSignal<number>;
365
+ ariaLabel: _angular_core.InputSignal<string>;
366
+ moreLabel: _angular_core.InputSignal<(count: number) => string>;
367
+ activeItem: _angular_core.InputSignal<T | null>;
368
+ itemClick: _angular_core.OutputEmitterRef<T>;
369
+ protected readonly panelOpen: _angular_core.WritableSignal<boolean>;
370
+ protected readonly panelStyle: _angular_core.WritableSignal<{
371
+ top: string;
372
+ left: string;
373
+ } | null>;
374
+ protected readonly visibleItems: _angular_core.Signal<T[]>;
375
+ protected readonly overflowItems: _angular_core.Signal<T[]>;
376
+ protected readonly overflowCount: _angular_core.Signal<number>;
377
+ protected isActive(item: T): boolean;
378
+ protected selectItem(item: T): void;
379
+ protected toggleOverflowPanel(): void;
380
+ protected updatePanelPosition(): void;
381
+ protected handleClickOutside(event: MouseEvent): void;
382
+ protected onKeydown(event: KeyboardEvent): void;
383
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AvatarGroup<any>, never>;
384
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AvatarGroup<any>, "gbt-avatar-group", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "moreLabel": { "alias": "moreLabel"; "required": false; "isSignal": true; }; "activeItem": { "alias": "activeItem"; "required": false; "isSignal": true; }; }, { "itemClick": "itemClick"; }, never, never, true, never>;
385
+ }
386
+
387
+ type AlertVariant = 'info' | 'success' | 'warning' | 'error' | 'neutral';
388
+ type AlertLive = 'auto' | 'assertive' | 'polite' | 'off';
389
+ type AlertSize = 'md' | 'sm';
390
+ type AlertAppearance = 'default' | 'subtle';
391
+ type AlertIconAlign = 'auto' | 'center' | 'start';
392
+ declare class Alert {
393
+ variant: _angular_core.InputSignal<AlertVariant>;
394
+ dismissible: _angular_core.InputSignalWithTransform<boolean, unknown>;
395
+ closeLabel: _angular_core.InputSignal<string>;
396
+ live: _angular_core.InputSignal<AlertLive>;
397
+ heading: _angular_core.InputSignal<string>;
398
+ size: _angular_core.InputSignal<AlertSize>;
399
+ appearance: _angular_core.InputSignal<AlertAppearance>;
400
+ iconAlign: _angular_core.InputSignal<AlertIconAlign>;
401
+ dismissed: _angular_core.OutputEmitterRef<void>;
402
+ protected readonly role: _angular_core.Signal<"alert" | "status" | null>;
403
+ protected readonly icon: _angular_core.Signal<string>;
404
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Alert, never>;
405
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Alert, "gbt-alert", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "dismissible": { "alias": "dismissible"; "required": false; "isSignal": true; }; "closeLabel": { "alias": "closeLabel"; "required": false; "isSignal": true; }; "live": { "alias": "live"; "required": false; "isSignal": true; }; "heading": { "alias": "heading"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "iconAlign": { "alias": "iconAlign"; "required": false; "isSignal": true; }; }, { "dismissed": "dismissed"; }, never, ["*", "[alert-actions]"], true, never>;
406
+ }
407
+
408
+ declare class Tag {
409
+ color: _angular_core.InputSignal<string>;
410
+ removable: _angular_core.InputSignal<boolean>;
411
+ removeLabel: _angular_core.InputSignal<string>;
412
+ disabled: _angular_core.InputSignal<boolean>;
413
+ removed: _angular_core.OutputEmitterRef<void>;
414
+ protected readonly textColor: _angular_core.Signal<string>;
415
+ protected onRemoveClick(event: MouseEvent): void;
416
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Tag, never>;
417
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Tag, "gbt-tag", never, { "color": { "alias": "color"; "required": true; "isSignal": true; }; "removable": { "alias": "removable"; "required": false; "isSignal": true; }; "removeLabel": { "alias": "removeLabel"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "removed": "removed"; }, never, ["*"], true, never>;
418
+ }
419
+
420
+ type EmptyStateIllustration = 'folder' | 'star' | 'checklist' | 'merge' | 'pipeline' | 'tag' | 'book' | 'server';
421
+ type EmptyStateSize = 'default' | 'compact';
422
+ type EmptyStateTone = 'default' | 'error';
423
+ type EmptyStateHeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;
424
+ declare class EmptyState {
425
+ illustration: _angular_core.InputSignal<EmptyStateIllustration | null | undefined>;
426
+ heading: _angular_core.InputSignal<string>;
427
+ message: _angular_core.InputSignal<string>;
428
+ icon: _angular_core.InputSignal<string | null>;
429
+ size: _angular_core.InputSignal<EmptyStateSize>;
430
+ tone: _angular_core.InputSignal<EmptyStateTone>;
431
+ headingLevel: _angular_core.InputSignal<EmptyStateHeadingLevel | null>;
432
+ headingId: _angular_core.InputSignal<string | null>;
433
+ headingFocusable: _angular_core.InputSignalWithTransform<boolean, unknown>;
434
+ private readonly headingEl;
435
+ focusHeading(): void;
436
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<EmptyState, never>;
437
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<EmptyState, "gbt-empty-state", never, { "illustration": { "alias": "illustration"; "required": false; "isSignal": true; }; "heading": { "alias": "heading"; "required": true; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "headingLevel": { "alias": "headingLevel"; "required": false; "isSignal": true; }; "headingId": { "alias": "headingId"; "required": false; "isSignal": true; }; "headingFocusable": { "alias": "headingFocusable"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
438
+ }
439
+
440
+ type CardVariant = 'elevated' | 'outlined';
441
+ type CardTone = 'default' | 'success' | 'warning' | 'error';
442
+ declare class CardHeader {
443
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CardHeader, never>;
444
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<CardHeader, "[card-header]", never, {}, {}, never, never, true, never>;
445
+ }
255
446
  declare class Card {
256
447
  hoverable: _angular_core.InputSignalWithTransform<boolean, unknown>;
257
448
  heading: _angular_core.InputSignal<string>;
258
449
  icon: _angular_core.InputSignal<string>;
259
- headingLevel: _angular_core.InputSignal<2 | 1 | 5 | 6 | 4 | 3>;
450
+ headingLevel: _angular_core.InputSignal<2 | 1 | 5 | 3 | 6 | 4>;
451
+ variant: _angular_core.InputSignal<CardVariant>;
452
+ description: _angular_core.InputSignal<string>;
453
+ count: _angular_core.InputSignal<number | null>;
454
+ flush: _angular_core.InputSignalWithTransform<boolean, unknown>;
455
+ tone: _angular_core.InputSignal<CardTone>;
456
+ selected: _angular_core.InputSignalWithTransform<boolean, unknown>;
457
+ selectedLabel: _angular_core.InputSignal<string>;
458
+ href: _angular_core.InputSignal<string | null>;
459
+ linkLabel: _angular_core.InputSignal<string | null>;
460
+ private readonly customHeader;
461
+ private readonly projectedLink;
462
+ protected readonly hasCustomHeader: _angular_core.Signal<boolean>;
463
+ protected readonly hasHeader: _angular_core.Signal<boolean>;
464
+ protected readonly linked: _angular_core.Signal<boolean>;
465
+ protected readonly headerIcon: _angular_core.Signal<string>;
260
466
  protected readonly cardClass: _angular_core.Signal<string>;
261
467
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<Card, never>;
262
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<Card, "gbt-card", never, { "hoverable": { "alias": "hoverable"; "required": false; "isSignal": true; }; "heading": { "alias": "heading"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "headingLevel": { "alias": "headingLevel"; "required": false; "isSignal": true; }; }, {}, never, ["[card-header-actions]", "*"], true, never>;
468
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Card, "gbt-card", never, { "hoverable": { "alias": "hoverable"; "required": false; "isSignal": true; }; "heading": { "alias": "heading"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "headingLevel": { "alias": "headingLevel"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "count": { "alias": "count"; "required": false; "isSignal": true; }; "flush": { "alias": "flush"; "required": false; "isSignal": true; }; "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "selectedLabel": { "alias": "selectedLabel"; "required": false; "isSignal": true; }; "href": { "alias": "href"; "required": false; "isSignal": true; }; "linkLabel": { "alias": "linkLabel"; "required": false; "isSignal": true; }; }, {}, ["customHeader", "projectedLink"], ["[card-header-actions]", "*", "[card-header]"], true, never>;
263
469
  }
264
470
 
471
+ declare class CardLink {
472
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CardLink, never>;
473
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CardLink, "a[gbtCardLink]", never, {}, {}, never, ["*"], true, never>;
474
+ }
475
+
476
+ type InputType = 'text' | 'password' | 'email' | 'number' | 'search' | 'url';
477
+ type InputSize = 'md' | 'sm';
478
+ type InputInputmode = 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search';
479
+ type InputAutocapitalize = 'off' | 'none' | 'on' | 'sentences' | 'words' | 'characters';
480
+ type InputEnterkeyhint = 'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send';
265
481
  declare class GbtInput implements ControlValueAccessor {
266
482
  id: _angular_core.InputSignal<string>;
267
483
  label: _angular_core.InputSignal<string>;
268
- type: _angular_core.InputSignal<"text" | "password" | "email">;
484
+ type: _angular_core.InputSignal<InputType>;
269
485
  required: _angular_core.InputSignalWithTransform<boolean, unknown>;
270
486
  disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
271
487
  placeholder: _angular_core.InputSignal<string>;
272
488
  errorMessage: _angular_core.InputSignal<string | null>;
273
489
  autocomplete: _angular_core.InputSignal<string>;
490
+ hint: _angular_core.InputSignal<string>;
491
+ hideLabel: _angular_core.InputSignalWithTransform<boolean, unknown>;
492
+ size: _angular_core.InputSignal<InputSize>;
493
+ mono: _angular_core.InputSignalWithTransform<boolean, unknown>;
494
+ leadingIcon: _angular_core.InputSignal<string | null>;
495
+ inputmode: _angular_core.InputSignal<InputInputmode | null>;
496
+ spellcheck: _angular_core.InputSignal<boolean | null>;
497
+ autocapitalize: _angular_core.InputSignal<InputAutocapitalize | null>;
498
+ enterkeyhint: _angular_core.InputSignal<InputEnterkeyhint | null>;
499
+ maxlength: _angular_core.InputSignal<number | null>;
500
+ min: _angular_core.InputSignal<string | number | null>;
501
+ max: _angular_core.InputSignal<string | number | null>;
274
502
  showPasswordLabel: _angular_core.InputSignal<string>;
275
503
  hidePasswordLabel: _angular_core.InputSignal<string>;
276
504
  committed: _angular_core.OutputEmitterRef<string>;
277
505
  protected readonly value: _angular_core.WritableSignal<string>;
278
506
  protected readonly passwordVisible: _angular_core.WritableSignal<boolean>;
279
- protected readonly effectiveType: _angular_core.Signal<"text" | "password" | "email">;
507
+ protected readonly effectiveType: _angular_core.Signal<InputType>;
508
+ protected readonly hintId: _angular_core.Signal<string>;
509
+ protected readonly errorId: _angular_core.Signal<string>;
510
+ protected readonly showHint: _angular_core.Signal<boolean>;
511
+ protected readonly describedBy: _angular_core.Signal<string | null>;
280
512
  private readonly formDisabled;
281
513
  protected readonly isDisabled: _angular_core.Signal<boolean>;
282
514
  private onChange;
@@ -289,14 +521,16 @@ declare class GbtInput implements ControlValueAccessor {
289
521
  protected onBlur(): void;
290
522
  protected togglePasswordVisibility(): void;
291
523
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<GbtInput, never>;
292
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<GbtInput, "gbt-input", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "showPasswordLabel": { "alias": "showPasswordLabel"; "required": false; "isSignal": true; }; "hidePasswordLabel": { "alias": "hidePasswordLabel"; "required": false; "isSignal": true; }; }, { "committed": "committed"; }, never, never, true, never>;
524
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<GbtInput, "gbt-input", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "hideLabel": { "alias": "hideLabel"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "mono": { "alias": "mono"; "required": false; "isSignal": true; }; "leadingIcon": { "alias": "leadingIcon"; "required": false; "isSignal": true; }; "inputmode": { "alias": "inputmode"; "required": false; "isSignal": true; }; "spellcheck": { "alias": "spellcheck"; "required": false; "isSignal": true; }; "autocapitalize": { "alias": "autocapitalize"; "required": false; "isSignal": true; }; "enterkeyhint": { "alias": "enterkeyhint"; "required": false; "isSignal": true; }; "maxlength": { "alias": "maxlength"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "showPasswordLabel": { "alias": "showPasswordLabel"; "required": false; "isSignal": true; }; "hidePasswordLabel": { "alias": "hidePasswordLabel"; "required": false; "isSignal": true; }; }, { "committed": "committed"; }, never, never, true, never>;
293
525
  }
294
526
 
295
527
  declare class Checkbox implements ControlValueAccessor {
296
528
  id: _angular_core.InputSignal<string>;
297
529
  label: _angular_core.InputSignal<string>;
298
530
  disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
299
- protected readonly checked: _angular_core.WritableSignal<boolean>;
531
+ hint: _angular_core.InputSignal<string>;
532
+ checked: _angular_core.ModelSignal<boolean>;
533
+ protected readonly hintId: _angular_core.Signal<string>;
300
534
  private readonly formDisabled;
301
535
  protected readonly isDisabled: _angular_core.Signal<boolean>;
302
536
  private onChange;
@@ -307,14 +541,17 @@ declare class Checkbox implements ControlValueAccessor {
307
541
  setDisabledState(isDisabled: boolean): void;
308
542
  protected onToggle(event: Event): void;
309
543
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<Checkbox, never>;
310
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<Checkbox, "gbt-checkbox", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
544
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Checkbox, "gbt-checkbox", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "checked": { "alias": "checked"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; }, never, never, true, never>;
311
545
  }
312
546
 
313
547
  declare class Modal implements OnDestroy {
314
548
  isOpen: _angular_core.InputSignal<boolean>;
315
549
  heading: _angular_core.InputSignal<string>;
316
- headingLevel: _angular_core.InputSignal<2 | 1 | 5 | 6 | 4 | 3>;
550
+ headingLevel: _angular_core.InputSignal<2 | 1 | 5 | 3 | 6 | 4>;
317
551
  closeLabel: _angular_core.InputSignal<string>;
552
+ busy: _angular_core.InputSignalWithTransform<boolean, unknown>;
553
+ busyLabel: _angular_core.InputSignal<string>;
554
+ returnFocus: _angular_core.InputSignalWithTransform<boolean, unknown>;
318
555
  closed: _angular_core.OutputEmitterRef<void>;
319
556
  private readonly dialog;
320
557
  private previouslyFocused;
@@ -322,9 +559,10 @@ declare class Modal implements OnDestroy {
322
559
  ngOnDestroy(): void;
323
560
  protected onEscape(): void;
324
561
  protected onBackdropClick(event: MouseEvent): void;
562
+ protected onCloseClick(): void;
325
563
  protected onDialogKeydown(event: KeyboardEvent): void;
326
564
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<Modal, never>;
327
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<Modal, "gbt-modal", never, { "isOpen": { "alias": "isOpen"; "required": true; "isSignal": true; }; "heading": { "alias": "heading"; "required": false; "isSignal": true; }; "headingLevel": { "alias": "headingLevel"; "required": false; "isSignal": true; }; "closeLabel": { "alias": "closeLabel"; "required": false; "isSignal": true; }; }, { "closed": "closed"; }, never, ["*"], true, never>;
565
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Modal, "gbt-modal", never, { "isOpen": { "alias": "isOpen"; "required": true; "isSignal": true; }; "heading": { "alias": "heading"; "required": false; "isSignal": true; }; "headingLevel": { "alias": "headingLevel"; "required": false; "isSignal": true; }; "closeLabel": { "alias": "closeLabel"; "required": false; "isSignal": true; }; "busy": { "alias": "busy"; "required": false; "isSignal": true; }; "busyLabel": { "alias": "busyLabel"; "required": false; "isSignal": true; }; "returnFocus": { "alias": "returnFocus"; "required": false; "isSignal": true; }; }, { "closed": "closed"; }, never, ["*", "[modal-footer]"], true, never>;
328
566
  }
329
567
 
330
568
  type DrawerEdge = 'right' | 'left' | 'top' | 'bottom';
@@ -332,7 +570,7 @@ declare class Drawer implements OnDestroy {
332
570
  isOpen: _angular_core.InputSignal<boolean>;
333
571
  edge: _angular_core.InputSignal<DrawerEdge>;
334
572
  heading: _angular_core.InputSignal<string>;
335
- headingLevel: _angular_core.InputSignal<2 | 1 | 5 | 6 | 4 | 3>;
573
+ headingLevel: _angular_core.InputSignal<2 | 1 | 5 | 3 | 6 | 4>;
336
574
  closeLabel: _angular_core.InputSignal<string>;
337
575
  closed: _angular_core.OutputEmitterRef<void>;
338
576
  protected readonly rendered: _angular_core.WritableSignal<boolean>;
@@ -365,7 +603,9 @@ declare class Table<T extends object> {
365
603
  clickableRows: _angular_core.InputSignalWithTransform<boolean, unknown>;
366
604
  rowClick: _angular_core.OutputEmitterRef<T>;
367
605
  protected trackRow: (index: number, row: T) => unknown;
606
+ protected onRowClick(event: MouseEvent, row: T): void;
368
607
  protected onRowKeydown(event: KeyboardEvent, row: T): void;
608
+ private isInteractiveTarget;
369
609
  protected cellValue(row: T, column: TableColumn<T>): unknown;
370
610
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<Table<any>, never>;
371
611
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<Table<any>, "gbt-table", never, { "data": { "alias": "data"; "required": true; "isSignal": true; }; "columns": { "alias": "columns"; "required": true; "isSignal": true; }; "trackBy": { "alias": "trackBy"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "caption": { "alias": "caption"; "required": true; "isSignal": true; }; "clickableRows": { "alias": "clickableRows"; "required": false; "isSignal": true; }; }, { "rowClick": "rowClick"; }, never, never, true, never>;
@@ -376,8 +616,10 @@ interface SearchResultCategory<T = unknown> {
376
616
  icon?: string;
377
617
  items: T[];
378
618
  }
619
+ type SearchBarCollapsible = boolean | 'narrow';
379
620
  declare class SearchBar<T = unknown> {
380
621
  private readonly elementRef;
622
+ private readonly injector;
381
623
  id: _angular_core.InputSignal<string>;
382
624
  results: _angular_core.InputSignal<T[] | null>;
383
625
  groupedResults: _angular_core.InputSignal<SearchResultCategory<T>[] | null>;
@@ -393,6 +635,10 @@ declare class SearchBar<T = unknown> {
393
635
  navigateHint: _angular_core.InputSignal<string>;
394
636
  selectHint: _angular_core.InputSignal<string>;
395
637
  closeHint: _angular_core.InputSignal<string>;
638
+ collapsible: _angular_core.InputSignalWithTransform<SearchBarCollapsible, string | boolean | null | undefined>;
639
+ expanded: _angular_core.ModelSignal<boolean>;
640
+ openLabel: _angular_core.InputSignal<string>;
641
+ closeLabel: _angular_core.InputSignal<string>;
396
642
  queryChange: _angular_core.OutputEmitterRef<string>;
397
643
  itemSelected: _angular_core.OutputEmitterRef<T>;
398
644
  clear: _angular_core.OutputEmitterRef<void>;
@@ -401,6 +647,10 @@ declare class SearchBar<T = unknown> {
401
647
  protected readonly searchQuery: _angular_core.WritableSignal<string>;
402
648
  protected readonly activeIndex: _angular_core.WritableSignal<number>;
403
649
  protected readonly searchInput: _angular_core.Signal<ElementRef<HTMLInputElement> | undefined>;
650
+ private readonly toggleButton;
651
+ protected readonly collapsibleMode: _angular_core.Signal<"narrow" | "always" | null>;
652
+ protected readonly folded: _angular_core.Signal<boolean>;
653
+ protected readonly triggerId: _angular_core.Signal<string>;
404
654
  private readonly hasGroupedResultsInput;
405
655
  protected readonly allVisibleItems: _angular_core.Signal<T[]>;
406
656
  protected readonly showOverlay: _angular_core.Signal<boolean>;
@@ -430,12 +680,15 @@ declare class SearchBar<T = unknown> {
430
680
  focusSearch(): void;
431
681
  protected blurSearch(): void;
432
682
  protected onFocus(): void;
433
- protected onBlur(): void;
683
+ protected expand(): void;
684
+ private fold;
685
+ protected close(event: Event): void;
686
+ protected onBlur(event?: FocusEvent): void;
434
687
  protected onInput(event: Event): void;
435
688
  protected onClear(): void;
436
689
  protected onSelect(item: T): void;
437
690
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SearchBar<any>, never>;
438
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SearchBar<any>, "gbt-search-bar", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "results": { "alias": "results"; "required": false; "isSignal": true; }; "groupedResults": { "alias": "groupedResults"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "displayFn": { "alias": "displayFn"; "required": false; "isSignal": true; }; "itemTemplate": { "alias": "itemTemplate"; "required": false; "isSignal": true; }; "keepQueryOnSelect": { "alias": "keepQueryOnSelect"; "required": false; "isSignal": true; }; "noResultsMessage": { "alias": "noResultsMessage"; "required": false; "isSignal": true; }; "noResultsHint": { "alias": "noResultsHint"; "required": false; "isSignal": true; }; "clearLabel": { "alias": "clearLabel"; "required": false; "isSignal": true; }; "resultsAnnouncement": { "alias": "resultsAnnouncement"; "required": false; "isSignal": true; }; "navigateHint": { "alias": "navigateHint"; "required": false; "isSignal": true; }; "selectHint": { "alias": "selectHint"; "required": false; "isSignal": true; }; "closeHint": { "alias": "closeHint"; "required": false; "isSignal": true; }; }, { "queryChange": "queryChange"; "itemSelected": "itemSelected"; "clear": "clear"; }, never, never, true, never>;
691
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SearchBar<any>, "gbt-search-bar", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "results": { "alias": "results"; "required": false; "isSignal": true; }; "groupedResults": { "alias": "groupedResults"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "displayFn": { "alias": "displayFn"; "required": false; "isSignal": true; }; "itemTemplate": { "alias": "itemTemplate"; "required": false; "isSignal": true; }; "keepQueryOnSelect": { "alias": "keepQueryOnSelect"; "required": false; "isSignal": true; }; "noResultsMessage": { "alias": "noResultsMessage"; "required": false; "isSignal": true; }; "noResultsHint": { "alias": "noResultsHint"; "required": false; "isSignal": true; }; "clearLabel": { "alias": "clearLabel"; "required": false; "isSignal": true; }; "resultsAnnouncement": { "alias": "resultsAnnouncement"; "required": false; "isSignal": true; }; "navigateHint": { "alias": "navigateHint"; "required": false; "isSignal": true; }; "selectHint": { "alias": "selectHint"; "required": false; "isSignal": true; }; "closeHint": { "alias": "closeHint"; "required": false; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; "expanded": { "alias": "expanded"; "required": false; "isSignal": true; }; "openLabel": { "alias": "openLabel"; "required": false; "isSignal": true; }; "closeLabel": { "alias": "closeLabel"; "required": false; "isSignal": true; }; }, { "expanded": "expandedChange"; "queryChange": "queryChange"; "itemSelected": "itemSelected"; "clear": "clear"; }, never, never, true, never>;
439
692
  }
440
693
 
441
694
  declare class Tab {
@@ -460,52 +713,32 @@ declare class Tabs {
460
713
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<Tabs, "gbt-tabs", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "activeIndex": { "alias": "activeIndex"; "required": false; "isSignal": true; }; }, { "activeIndex": "activeIndexChange"; }, ["tabs"], ["*"], true, never>;
461
714
  }
462
715
 
463
- interface Scale<T> {
464
- map(value: T): number;
465
- invert(pixel: number): T;
466
- readonly domain: [T, T];
467
- readonly range: [number, number];
716
+ interface GbtPipeLocale {
717
+ locale?: string;
468
718
  }
469
- declare function linearScale(domain: [number, number], range: [number, number]): Scale<number>;
470
- declare function timeScale(domain: [Date, Date], range: [number, number]): Scale<Date>;
471
- interface BandScale {
472
- map(value: string): number;
473
- invert(pixel: number): string | null;
474
- readonly bandwidth: number;
475
- readonly domain: string[];
476
- readonly range: [number, number];
477
- }
478
- declare function bandScale(domain: string[], range: [number, number], padding?: number): BandScale;
479
-
480
- declare function niceTicks(min: number, max: number, count: number): number[];
481
- type TimeUnit = 'second' | 'minute' | 'hour' | 'day' | 'month' | 'year';
482
- interface TimeTicks {
483
- readonly values: Date[];
484
- readonly unit: TimeUnit;
485
- format(date: Date, locale: string): string;
486
- }
487
- declare function timeTicks(start: Date, end: Date, pixelWidth: number): TimeTicks;
488
-
489
- declare function formatNumber(value: number, locale: string, decimals?: number): string;
490
- declare function formatCompact(value: number, locale: string): string;
491
- declare function formatDuration(ms: number, locale: string): string;
492
- declare function formatPercent(ratio: number, locale: string, decimals?: number): string;
493
-
494
- interface Point {
495
- x: number;
496
- y: number;
497
- }
498
- declare function linePath(points: Point[]): string;
499
- declare function areaPath(points: Point[], baseline: number): string;
500
- interface Arc {
501
- startAngle: number;
502
- endAngle: number;
503
- innerRadius: number;
504
- outerRadius: number;
719
+ type GbtRelativeTimePipeOptions = FormatRelativeTimeOptions & GbtPipeLocale & {
720
+ now?: DateInput;
721
+ };
722
+ type GbtBytesPipeOptions = FormatBytesOptions & GbtPipeLocale;
723
+ type GbtDateTimePipeOptions = Intl.DateTimeFormatOptions & GbtPipeLocale;
724
+ declare class GbtRelativeTimePipe implements PipeTransform {
725
+ private readonly localeId;
726
+ transform(value: DateInput | null | undefined, options?: GbtRelativeTimePipeOptions): string;
727
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<GbtRelativeTimePipe, never>;
728
+ static ɵpipe: _angular_core.ɵɵPipeDeclaration<GbtRelativeTimePipe, "gbtRelativeTime", true>;
729
+ }
730
+ declare class GbtBytesPipe implements PipeTransform {
731
+ private readonly localeId;
732
+ transform(value: number | null | undefined, options?: GbtBytesPipeOptions): string;
733
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<GbtBytesPipe, never>;
734
+ static ɵpipe: _angular_core.ɵɵPipeDeclaration<GbtBytesPipe, "gbtBytes", true>;
735
+ }
736
+ declare class GbtDateTimePipe implements PipeTransform {
737
+ private readonly localeId;
738
+ transform(value: DateInput | null | undefined, options?: GbtDateTimePipeOptions): string;
739
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<GbtDateTimePipe, never>;
740
+ static ɵpipe: _angular_core.ɵɵPipeDeclaration<GbtDateTimePipe, "gbtDateTime", true>;
505
741
  }
506
- declare function arcPath(arc: Arc): string;
507
-
508
- declare function nearestIndex(sorted: number[], target: number): number;
509
742
 
510
743
  interface ChartMargin {
511
744
  top: number;
@@ -549,7 +782,7 @@ declare class ChartFrame {
549
782
  private readonly context;
550
783
  label: _angular_core.InputSignal<string>;
551
784
  heading: _angular_core.InputSignal<string>;
552
- headingLevel: _angular_core.InputSignal<2 | 1 | 5 | 6 | 4 | 3>;
785
+ headingLevel: _angular_core.InputSignal<2 | 1 | 5 | 3 | 6 | 4>;
553
786
  headline: _angular_core.InputSignal<string>;
554
787
  trend: _angular_core.InputSignal<string>;
555
788
  x: _angular_core.InputSignal<AxisSpec>;
@@ -691,7 +924,7 @@ declare class LineChart<X extends number | Date> {
691
924
  height: number;
692
925
  } | null>;
693
926
  heading: _angular_core.InputSignal<string>;
694
- headingLevel: _angular_core.InputSignal<2 | 1 | 5 | 6 | 4 | 3>;
927
+ headingLevel: _angular_core.InputSignal<2 | 1 | 5 | 3 | 6 | 4>;
695
928
  headline: _angular_core.InputSignal<string>;
696
929
  trend: _angular_core.InputSignal<string>;
697
930
  protected readonly activeIndex: _angular_core.WritableSignal<number | null>;
@@ -747,7 +980,7 @@ declare class BarChart {
747
980
  height: number;
748
981
  } | null>;
749
982
  heading: _angular_core.InputSignal<string>;
750
- headingLevel: _angular_core.InputSignal<2 | 1 | 5 | 6 | 4 | 3>;
983
+ headingLevel: _angular_core.InputSignal<2 | 1 | 5 | 3 | 6 | 4>;
751
984
  headline: _angular_core.InputSignal<string>;
752
985
  trend: _angular_core.InputSignal<string>;
753
986
  protected readonly hasData: _angular_core.Signal<boolean>;
@@ -794,7 +1027,7 @@ declare class TimelineChart {
794
1027
  height: number;
795
1028
  } | null>;
796
1029
  heading: _angular_core.InputSignal<string>;
797
- headingLevel: _angular_core.InputSignal<2 | 1 | 5 | 6 | 4 | 3>;
1030
+ headingLevel: _angular_core.InputSignal<2 | 1 | 5 | 3 | 6 | 4>;
798
1031
  headline: _angular_core.InputSignal<string>;
799
1032
  trend: _angular_core.InputSignal<string>;
800
1033
  protected readonly hasData: _angular_core.Signal<boolean>;
@@ -983,22 +1216,29 @@ interface PopupPosition {
983
1216
  left: string | null;
984
1217
  right: string | null;
985
1218
  }
1219
+ declare class MenuTrigger {
1220
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuTrigger, never>;
1221
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MenuTrigger, "[gbtMenuTrigger]", never, {}, {}, never, never, true, never>;
1222
+ }
986
1223
  declare class Menu {
987
1224
  private readonly elementRef;
988
1225
  private readonly injector;
989
1226
  label: _angular_core.InputSignal<string>;
990
1227
  align: _angular_core.InputSignal<"start" | "end">;
991
1228
  triggerIcon: _angular_core.InputSignal<string | null>;
1229
+ triggerAriaLabel: _angular_core.InputSignal<string | null>;
1230
+ chevron: _angular_core.InputSignalWithTransform<boolean, unknown>;
992
1231
  opened: _angular_core.OutputEmitterRef<void>;
993
1232
  protected readonly open: _angular_core.WritableSignal<boolean>;
994
1233
  protected readonly position: _angular_core.WritableSignal<PopupPosition | null>;
1234
+ protected readonly customTrigger: _angular_core.Signal<MenuTrigger | undefined>;
995
1235
  private readonly trigger;
996
1236
  private readonly list;
997
1237
  protected toggle(): void;
998
1238
  protected close(returnFocus: boolean): void;
999
1239
  protected onTriggerKeydown(event: KeyboardEvent): void;
1000
1240
  protected onListKeydown(event: KeyboardEvent): void;
1001
- protected onListClick(): void;
1241
+ protected onListClick(event: MouseEvent): void;
1002
1242
  protected onDocumentClick(event: MouseEvent): void;
1003
1243
  protected onFocusOut(event: FocusEvent): void;
1004
1244
  protected updatePosition(): void;
@@ -1006,7 +1246,17 @@ declare class Menu {
1006
1246
  private focus;
1007
1247
  private focusAfterRender;
1008
1248
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<Menu, never>;
1009
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<Menu, "gbt-menu", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; "triggerIcon": { "alias": "triggerIcon"; "required": false; "isSignal": true; }; }, { "opened": "opened"; }, never, ["*"], true, never>;
1249
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Menu, "gbt-menu", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; "triggerIcon": { "alias": "triggerIcon"; "required": false; "isSignal": true; }; "triggerAriaLabel": { "alias": "triggerAriaLabel"; "required": false; "isSignal": true; }; "chevron": { "alias": "chevron"; "required": false; "isSignal": true; }; }, { "opened": "opened"; }, ["customTrigger"], ["[gbtMenuTrigger]", "*"], true, never>;
1250
+ }
1251
+
1252
+ type MenuItemVariant = 'default' | 'danger';
1253
+ declare class MenuItem {
1254
+ icon: _angular_core.InputSignal<string | null>;
1255
+ variant: _angular_core.InputSignal<MenuItemVariant>;
1256
+ disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
1257
+ constructor();
1258
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuItem, never>;
1259
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MenuItem, "button[gbtMenuItem], a[gbtMenuItem]", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1010
1260
  }
1011
1261
 
1012
1262
  type PopoverAlign = 'start' | 'end';
@@ -1035,6 +1285,8 @@ declare class Popover {
1035
1285
  }
1036
1286
 
1037
1287
  type DescriptionListLayout = 'stacked' | 'inline';
1288
+ type DescriptionListValueAlign = 'start' | 'end';
1289
+ type DescriptionListResponsive = 'viewport' | 'container';
1038
1290
  interface DescriptionListEntry {
1039
1291
  term: string;
1040
1292
  value: string | TemplateRef<unknown>;
@@ -1042,9 +1294,11 @@ interface DescriptionListEntry {
1042
1294
  declare class DescriptionList {
1043
1295
  items: _angular_core.InputSignal<DescriptionListEntry[]>;
1044
1296
  layout: _angular_core.InputSignal<DescriptionListLayout>;
1297
+ valueAlign: _angular_core.InputSignal<DescriptionListValueAlign>;
1298
+ responsive: _angular_core.InputSignal<DescriptionListResponsive>;
1045
1299
  protected isTemplate(value: DescriptionListEntry['value']): value is TemplateRef<unknown>;
1046
1300
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DescriptionList, never>;
1047
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<DescriptionList, "gbt-description-list", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "layout": { "alias": "layout"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1301
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DescriptionList, "gbt-description-list", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "valueAlign": { "alias": "valueAlign"; "required": false; "isSignal": true; }; "responsive": { "alias": "responsive"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1048
1302
  }
1049
1303
 
1050
1304
  interface SegmentedControlOption<T = string> {
@@ -1052,19 +1306,26 @@ interface SegmentedControlOption<T = string> {
1052
1306
  label: string;
1053
1307
  disabled?: boolean;
1054
1308
  }
1309
+ type SegmentedControlSize = 'md' | 'sm';
1055
1310
  declare class SegmentedControl<T = string> {
1056
1311
  private readonly group;
1057
1312
  options: _angular_core.InputSignal<SegmentedControlOption<T>[]>;
1058
1313
  value: _angular_core.ModelSignal<T>;
1059
1314
  ariaLabel: _angular_core.InputSignal<string>;
1060
1315
  disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
1316
+ label: _angular_core.InputSignal<string>;
1317
+ fullWidth: _angular_core.InputSignalWithTransform<boolean, unknown>;
1318
+ wrap: _angular_core.InputSignalWithTransform<boolean, unknown>;
1319
+ size: _angular_core.InputSignal<SegmentedControlSize>;
1320
+ tinted: _angular_core.InputSignalWithTransform<boolean, unknown>;
1321
+ protected readonly labelId: string;
1061
1322
  protected isSelected(value: T): boolean;
1062
1323
  protected select(option: SegmentedControlOption<T>): void;
1063
1324
  protected onKeydown(event: KeyboardEvent, index: number): void;
1064
1325
  private nextEnabledIndex;
1065
1326
  private focusButton;
1066
1327
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SegmentedControl<any>, never>;
1067
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SegmentedControl<any>, "gbt-segmented-control", never, { "options": { "alias": "options"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": true; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
1328
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SegmentedControl<any>, "gbt-segmented-control", never, { "options": { "alias": "options"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": true; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; "wrap": { "alias": "wrap"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "tinted": { "alias": "tinted"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
1068
1329
  }
1069
1330
 
1070
1331
  type WeekStartsOn = 0 | 1;
@@ -1074,13 +1335,14 @@ interface CalendarDay {
1074
1335
  isToday: boolean;
1075
1336
  }
1076
1337
 
1077
- type DatePickerVisibleMonths = 1 | 2;
1078
- interface DatePickerMonthView {
1338
+ interface CalendarPanelView {
1079
1339
  year: number;
1080
1340
  month: number;
1081
1341
  label: string;
1082
1342
  weeks: CalendarDay[][];
1083
1343
  }
1344
+
1345
+ type DatePickerVisibleMonths = 1 | 2;
1084
1346
  declare class DatePicker implements ControlValueAccessor {
1085
1347
  private readonly elementRef;
1086
1348
  private readonly injector;
@@ -1101,6 +1363,7 @@ declare class DatePicker implements ControlValueAccessor {
1101
1363
  yearSelectLabel: _angular_core.InputSignal<string>;
1102
1364
  minYear: _angular_core.InputSignal<number>;
1103
1365
  maxYear: _angular_core.InputSignal<number>;
1366
+ private readonly panel;
1104
1367
  protected readonly open: _angular_core.WritableSignal<boolean>;
1105
1368
  protected readonly selected: _angular_core.WritableSignal<Date | null>;
1106
1369
  protected readonly focusedDate: _angular_core.WritableSignal<Date>;
@@ -1114,7 +1377,7 @@ declare class DatePicker implements ControlValueAccessor {
1114
1377
  private onTouched;
1115
1378
  protected readonly isDisabled: _angular_core.Signal<boolean>;
1116
1379
  protected readonly showClear: _angular_core.Signal<boolean>;
1117
- protected readonly monthViews: _angular_core.Signal<DatePickerMonthView[]>;
1380
+ protected readonly monthViews: _angular_core.Signal<CalendarPanelView[]>;
1118
1381
  protected readonly panelLabel: _angular_core.Signal<string>;
1119
1382
  protected readonly weekdayLabels: _angular_core.Signal<string[]>;
1120
1383
  protected readonly monthOptions: _angular_core.Signal<{
@@ -1137,16 +1400,10 @@ declare class DatePicker implements ControlValueAccessor {
1137
1400
  protected shiftMonth(delta: number): void;
1138
1401
  protected onMonthSelect(value: string): void;
1139
1402
  protected onYearSelect(value: string): void;
1140
- private setAnchorMonth;
1141
1403
  protected onGridKeydown(event: KeyboardEvent): void;
1142
- private nextFocusedDate;
1143
- /** Shifts the anchor by the minimum amount needed so `date`'s month becomes visible. */
1144
- private ensureVisible;
1145
1404
  protected onEscape(event: KeyboardEvent): void;
1146
1405
  protected handleClickOutside(event: MouseEvent): void;
1147
1406
  protected updatePanelPosition(): void;
1148
- private trigger;
1149
- private focusCellAfterRender;
1150
1407
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DatePicker, never>;
1151
1408
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<DatePicker, "gbt-date-picker", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "weekStartsOn": { "alias": "weekStartsOn"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "previousMonthLabel": { "alias": "previousMonthLabel"; "required": false; "isSignal": true; }; "nextMonthLabel": { "alias": "nextMonthLabel"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "clearLabel": { "alias": "clearLabel"; "required": false; "isSignal": true; }; "visibleMonths": { "alias": "visibleMonths"; "required": false; "isSignal": true; }; "monthSelectLabel": { "alias": "monthSelectLabel"; "required": false; "isSignal": true; }; "yearSelectLabel": { "alias": "yearSelectLabel"; "required": false; "isSignal": true; }; "minYear": { "alias": "minYear"; "required": false; "isSignal": true; }; "maxYear": { "alias": "maxYear"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1152
1409
  }
@@ -1156,12 +1413,6 @@ interface DateRangeValue {
1156
1413
  start: Date;
1157
1414
  end: Date | null;
1158
1415
  }
1159
- interface DateRangePickerMonthView {
1160
- year: number;
1161
- month: number;
1162
- label: string;
1163
- weeks: CalendarDay[][];
1164
- }
1165
1416
  declare class DateRangePicker implements ControlValueAccessor {
1166
1417
  private readonly elementRef;
1167
1418
  private readonly injector;
@@ -1183,6 +1434,7 @@ declare class DateRangePicker implements ControlValueAccessor {
1183
1434
  minYear: _angular_core.InputSignal<number>;
1184
1435
  maxYear: _angular_core.InputSignal<number>;
1185
1436
  rangeStatus: _angular_core.InputSignal<(start: string | null, end: string | null) => string>;
1437
+ private readonly panel;
1186
1438
  protected readonly open: _angular_core.WritableSignal<boolean>;
1187
1439
  protected readonly value: _angular_core.WritableSignal<DateRangeValue | null>;
1188
1440
  protected readonly draftStart: _angular_core.WritableSignal<Date | null>;
@@ -1199,7 +1451,7 @@ declare class DateRangePicker implements ControlValueAccessor {
1199
1451
  private onTouched;
1200
1452
  protected readonly isDisabled: _angular_core.Signal<boolean>;
1201
1453
  protected readonly showClear: _angular_core.Signal<boolean>;
1202
- protected readonly monthViews: _angular_core.Signal<DateRangePickerMonthView[]>;
1454
+ protected readonly monthViews: _angular_core.Signal<CalendarPanelView[]>;
1203
1455
  protected readonly panelLabel: _angular_core.Signal<string>;
1204
1456
  protected readonly weekdayLabels: _angular_core.Signal<string[]>;
1205
1457
  protected readonly monthOptions: _angular_core.Signal<{
@@ -1209,7 +1461,6 @@ declare class DateRangePicker implements ControlValueAccessor {
1209
1461
  protected readonly yearOptions: _angular_core.Signal<number[]>;
1210
1462
  private readonly dateFormatter;
1211
1463
  protected readonly triggerLabel: _angular_core.Signal<string>;
1212
- /** The visual [lower, upper] bounds to paint — the confirmed range once `draftEnd` is set, else a live preview against `hoveredDate`. */
1213
1464
  private readonly previewBounds;
1214
1465
  protected readonly isPreviewing: _angular_core.Signal<boolean>;
1215
1466
  protected readonly statusMessage: _angular_core.Signal<string>;
@@ -1231,16 +1482,10 @@ declare class DateRangePicker implements ControlValueAccessor {
1231
1482
  protected shiftMonth(delta: number): void;
1232
1483
  protected onMonthSelect(value: string): void;
1233
1484
  protected onYearSelect(value: string): void;
1234
- private setAnchorMonth;
1235
1485
  protected onGridKeydown(event: KeyboardEvent): void;
1236
- private nextFocusedDate;
1237
- /** Shifts the anchor by the minimum amount needed so `date`'s month becomes visible. */
1238
- private ensureVisible;
1239
1486
  protected onEscape(event: KeyboardEvent): void;
1240
1487
  protected handleClickOutside(event: MouseEvent): void;
1241
1488
  protected updatePanelPosition(): void;
1242
- private trigger;
1243
- private focusCellAfterRender;
1244
1489
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DateRangePicker, never>;
1245
1490
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<DateRangePicker, "gbt-date-range-picker", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "weekStartsOn": { "alias": "weekStartsOn"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "previousMonthLabel": { "alias": "previousMonthLabel"; "required": false; "isSignal": true; }; "nextMonthLabel": { "alias": "nextMonthLabel"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "clearLabel": { "alias": "clearLabel"; "required": false; "isSignal": true; }; "visibleMonths": { "alias": "visibleMonths"; "required": false; "isSignal": true; }; "monthSelectLabel": { "alias": "monthSelectLabel"; "required": false; "isSignal": true; }; "yearSelectLabel": { "alias": "yearSelectLabel"; "required": false; "isSignal": true; }; "minYear": { "alias": "minYear"; "required": false; "isSignal": true; }; "maxYear": { "alias": "maxYear"; "required": false; "isSignal": true; }; "rangeStatus": { "alias": "rangeStatus"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1246
1491
  }
@@ -1313,24 +1558,32 @@ declare class Breadcrumb {
1313
1558
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<Breadcrumb, "gbt-breadcrumb", never, { "ariaLabel": { "alias": "ariaLabel"; "required": true; "isSignal": true; }; }, {}, never, ["[breadcrumb-ancestor]", "*"], true, never>;
1314
1559
  }
1315
1560
 
1561
+ type ConfirmDangerModalTone = 'danger' | 'warning' | 'neutral';
1316
1562
  declare class ConfirmDangerModal {
1317
1563
  isOpen: _angular_core.InputSignal<boolean>;
1318
1564
  heading: _angular_core.InputSignal<string>;
1319
1565
  message: _angular_core.InputSignal<string>;
1320
- confirmText: _angular_core.InputSignal<string>;
1566
+ confirmText: _angular_core.InputSignal<string | null | undefined>;
1321
1567
  confirmInputLabel: _angular_core.InputSignal<string>;
1322
1568
  confirmLabel: _angular_core.InputSignal<string>;
1323
1569
  cancelLabel: _angular_core.InputSignal<string>;
1324
1570
  closeLabel: _angular_core.InputSignal<string>;
1571
+ busy: _angular_core.InputSignalWithTransform<boolean, unknown>;
1572
+ busyLabel: _angular_core.InputSignal<string>;
1573
+ confirmIcon: _angular_core.InputSignal<string | null>;
1574
+ tone: _angular_core.InputSignal<ConfirmDangerModalTone>;
1325
1575
  confirmed: _angular_core.OutputEmitterRef<void>;
1326
1576
  closed: _angular_core.OutputEmitterRef<void>;
1327
1577
  protected readonly typed: _angular_core.WritableSignal<string>;
1578
+ protected readonly requiresTyping: _angular_core.Signal<boolean>;
1328
1579
  protected readonly canConfirm: _angular_core.Signal<boolean>;
1580
+ protected readonly confirmVariant: _angular_core.Signal<ButtonVariant>;
1581
+ protected readonly toneIcon: _angular_core.Signal<"info" | "alert-triangle">;
1329
1582
  constructor();
1330
1583
  protected confirm(): void;
1331
1584
  protected cancel(): void;
1332
1585
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ConfirmDangerModal, never>;
1333
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ConfirmDangerModal, "gbt-confirm-danger-modal", never, { "isOpen": { "alias": "isOpen"; "required": true; "isSignal": true; }; "heading": { "alias": "heading"; "required": true; "isSignal": true; }; "message": { "alias": "message"; "required": true; "isSignal": true; }; "confirmText": { "alias": "confirmText"; "required": true; "isSignal": true; }; "confirmInputLabel": { "alias": "confirmInputLabel"; "required": false; "isSignal": true; }; "confirmLabel": { "alias": "confirmLabel"; "required": false; "isSignal": true; }; "cancelLabel": { "alias": "cancelLabel"; "required": false; "isSignal": true; }; "closeLabel": { "alias": "closeLabel"; "required": false; "isSignal": true; }; }, { "confirmed": "confirmed"; "closed": "closed"; }, never, never, true, never>;
1586
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ConfirmDangerModal, "gbt-confirm-danger-modal", never, { "isOpen": { "alias": "isOpen"; "required": true; "isSignal": true; }; "heading": { "alias": "heading"; "required": true; "isSignal": true; }; "message": { "alias": "message"; "required": true; "isSignal": true; }; "confirmText": { "alias": "confirmText"; "required": false; "isSignal": true; }; "confirmInputLabel": { "alias": "confirmInputLabel"; "required": false; "isSignal": true; }; "confirmLabel": { "alias": "confirmLabel"; "required": false; "isSignal": true; }; "cancelLabel": { "alias": "cancelLabel"; "required": false; "isSignal": true; }; "closeLabel": { "alias": "closeLabel"; "required": false; "isSignal": true; }; "busy": { "alias": "busy"; "required": false; "isSignal": true; }; "busyLabel": { "alias": "busyLabel"; "required": false; "isSignal": true; }; "confirmIcon": { "alias": "confirmIcon"; "required": false; "isSignal": true; }; "tone": { "alias": "tone"; "required": false; "isSignal": true; }; }, { "confirmed": "confirmed"; "closed": "closed"; }, never, never, true, never>;
1334
1587
  }
1335
1588
 
1336
1589
  type ToastVariant = 'success' | 'error' | 'warning' | 'info';
@@ -1342,17 +1595,38 @@ interface ToastItem {
1342
1595
  duration?: number;
1343
1596
  }
1344
1597
  declare class Toaster implements OnDestroy {
1345
- toasts: _angular_core.InputSignal<ToastItem[]>;
1598
+ toasts: _angular_core.InputSignal<ToastItem[] | undefined>;
1346
1599
  position: _angular_core.InputSignal<ToasterPosition>;
1347
1600
  closeLabel: _angular_core.InputSignal<string>;
1348
1601
  dismissed: _angular_core.OutputEmitterRef<string>;
1602
+ private readonly service;
1349
1603
  private readonly timers;
1604
+ protected readonly items: _angular_core.Signal<ToastItem[]>;
1350
1605
  constructor();
1351
1606
  ngOnDestroy(): void;
1607
+ protected close(id: string): void;
1352
1608
  protected roleFor(variant: ToastVariant): 'alert' | 'status';
1353
1609
  protected iconFor(variant: ToastVariant): string;
1354
1610
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<Toaster, never>;
1355
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<Toaster, "gbt-toaster", never, { "toasts": { "alias": "toasts"; "required": true; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "closeLabel": { "alias": "closeLabel"; "required": false; "isSignal": true; }; }, { "dismissed": "dismissed"; }, never, never, true, never>;
1611
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Toaster, "gbt-toaster", never, { "toasts": { "alias": "toasts"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "closeLabel": { "alias": "closeLabel"; "required": false; "isSignal": true; }; }, { "dismissed": "dismissed"; }, never, never, true, never>;
1612
+ }
1613
+
1614
+ type GbtToastKind = ToastVariant;
1615
+ interface GbtToastOptions {
1616
+ duration?: number;
1617
+ }
1618
+ declare class GbtToastService {
1619
+ private readonly items;
1620
+ private readonly timers;
1621
+ readonly toasts: _angular_core.Signal<ToastItem[]>;
1622
+ readonly defaultDuration: _angular_core.WritableSignal<number>;
1623
+ constructor();
1624
+ show(message: string, kind?: GbtToastKind, options?: GbtToastOptions): string;
1625
+ dismiss(id: string): void;
1626
+ clear(): void;
1627
+ private clearTimers;
1628
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<GbtToastService, never>;
1629
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
1356
1630
  }
1357
1631
 
1358
1632
  type TooltipPosition = 'top' | 'bottom' | 'left' | 'right';
@@ -1408,10 +1682,65 @@ declare class RadioGroup<T = string> implements ControlValueAccessor {
1408
1682
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<RadioGroup<any>, "gbt-radio-group", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; "options": { "alias": "options"; "required": true; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1409
1683
  }
1410
1684
 
1685
+ interface CheckboxGroupOption<T = string> {
1686
+ value: T;
1687
+ label: string;
1688
+ hint?: string;
1689
+ disabled?: boolean;
1690
+ }
1691
+ interface CheckboxGroupSection<T = string> {
1692
+ label: string;
1693
+ options: CheckboxGroupOption<T>[];
1694
+ }
1695
+ interface RenderedItem<T> {
1696
+ id: string;
1697
+ option: CheckboxGroupOption<T>;
1698
+ }
1699
+ interface RenderedSection<T> {
1700
+ key: string;
1701
+ label: string | null;
1702
+ labelId: string;
1703
+ items: RenderedItem<T>[];
1704
+ }
1705
+ declare class CheckboxGroup<T = string> implements ControlValueAccessor {
1706
+ id: _angular_core.InputSignal<string>;
1707
+ legend: _angular_core.InputSignal<string>;
1708
+ hideLegend: _angular_core.InputSignalWithTransform<boolean, unknown>;
1709
+ options: _angular_core.InputSignal<CheckboxGroupOption<T>[]>;
1710
+ groups: _angular_core.InputSignal<CheckboxGroupSection<T>[]>;
1711
+ columns: _angular_core.InputSignal<number | "auto">;
1712
+ disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
1713
+ required: _angular_core.InputSignalWithTransform<boolean, unknown>;
1714
+ hint: _angular_core.InputSignal<string>;
1715
+ errorMessage: _angular_core.InputSignal<string | null>;
1716
+ value: _angular_core.ModelSignal<T[]>;
1717
+ private readonly formDisabled;
1718
+ protected readonly isDisabled: _angular_core.Signal<boolean>;
1719
+ protected readonly hintId: _angular_core.Signal<string>;
1720
+ protected readonly errorId: _angular_core.Signal<string>;
1721
+ protected readonly showHint: _angular_core.Signal<boolean>;
1722
+ protected readonly describedBy: _angular_core.Signal<string | null>;
1723
+ protected readonly sections: _angular_core.Signal<RenderedSection<T>[]>;
1724
+ protected readonly sectioned: _angular_core.Signal<boolean>;
1725
+ protected readonly gridColumns: _angular_core.Signal<string | null>;
1726
+ private onChange;
1727
+ private onTouched;
1728
+ writeValue(value: T[] | null): void;
1729
+ registerOnChange(fn: (value: T[]) => void): void;
1730
+ registerOnTouched(fn: () => void): void;
1731
+ setDisabledState(isDisabled: boolean): void;
1732
+ protected isChecked(value: T): boolean;
1733
+ protected setChecked(value: T, checked: boolean): void;
1734
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CheckboxGroup<any>, never>;
1735
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CheckboxGroup<any>, "gbt-checkbox-group", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "legend": { "alias": "legend"; "required": true; "isSignal": true; }; "hideLegend": { "alias": "hideLegend"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "groups": { "alias": "groups"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
1736
+ }
1737
+
1411
1738
  declare class Switch implements ControlValueAccessor {
1412
1739
  id: _angular_core.InputSignal<string>;
1413
1740
  label: _angular_core.InputSignal<string>;
1414
1741
  disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
1742
+ hint: _angular_core.InputSignal<string>;
1743
+ protected readonly hintId: _angular_core.Signal<string>;
1415
1744
  protected readonly checked: _angular_core.WritableSignal<boolean>;
1416
1745
  private readonly formDisabled;
1417
1746
  protected readonly isDisabled: _angular_core.Signal<boolean>;
@@ -1423,9 +1752,10 @@ declare class Switch implements ControlValueAccessor {
1423
1752
  setDisabledState(isDisabled: boolean): void;
1424
1753
  protected onToggle(event: Event): void;
1425
1754
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<Switch, never>;
1426
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<Switch, "gbt-switch", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1755
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Switch, "gbt-switch", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1427
1756
  }
1428
1757
 
1758
+ type TextareaResize = 'vertical' | 'none' | 'both' | 'horizontal';
1429
1759
  declare class Textarea implements ControlValueAccessor {
1430
1760
  id: _angular_core.InputSignal<string>;
1431
1761
  label: _angular_core.InputSignal<string>;
@@ -1434,10 +1764,25 @@ declare class Textarea implements ControlValueAccessor {
1434
1764
  placeholder: _angular_core.InputSignal<string>;
1435
1765
  errorMessage: _angular_core.InputSignal<string | null>;
1436
1766
  rows: _angular_core.InputSignal<number>;
1767
+ hint: _angular_core.InputSignal<string>;
1768
+ hideLabel: _angular_core.InputSignalWithTransform<boolean, unknown>;
1769
+ mono: _angular_core.InputSignalWithTransform<boolean, unknown>;
1770
+ autosize: _angular_core.InputSignalWithTransform<boolean, unknown>;
1771
+ maxRows: _angular_core.InputSignal<number | null>;
1772
+ resize: _angular_core.InputSignal<TextareaResize>;
1437
1773
  committed: _angular_core.OutputEmitterRef<string>;
1438
1774
  protected readonly value: _angular_core.WritableSignal<string>;
1775
+ private readonly field;
1776
+ protected readonly hintId: _angular_core.Signal<string>;
1777
+ protected readonly errorId: _angular_core.Signal<string>;
1778
+ protected readonly showHint: _angular_core.Signal<boolean>;
1779
+ protected readonly describedBy: _angular_core.Signal<string | null>;
1780
+ protected readonly effectiveResize: _angular_core.Signal<TextareaResize>;
1781
+ protected readonly maxRowsProperty: _angular_core.Signal<number | null>;
1439
1782
  private readonly formDisabled;
1440
1783
  protected readonly isDisabled: _angular_core.Signal<boolean>;
1784
+ constructor();
1785
+ private fitToContent;
1441
1786
  private onChange;
1442
1787
  private onTouched;
1443
1788
  writeValue(value: string): void;
@@ -1447,7 +1792,7 @@ declare class Textarea implements ControlValueAccessor {
1447
1792
  protected onInput(event: Event): void;
1448
1793
  protected onBlur(): void;
1449
1794
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<Textarea, never>;
1450
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<Textarea, "gbt-textarea", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; }, { "committed": "committed"; }, never, never, true, never>;
1795
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Textarea, "gbt-textarea", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "hideLabel": { "alias": "hideLabel"; "required": false; "isSignal": true; }; "mono": { "alias": "mono"; "required": false; "isSignal": true; }; "autosize": { "alias": "autosize"; "required": false; "isSignal": true; }; "maxRows": { "alias": "maxRows"; "required": false; "isSignal": true; }; "resize": { "alias": "resize"; "required": false; "isSignal": true; }; }, { "committed": "committed"; }, never, never, true, never>;
1451
1796
  }
1452
1797
 
1453
1798
  type AutocompleteSearchFn<T> = (query: string) => Observable<T[]> | Promise<T[]>;
@@ -1571,13 +1916,20 @@ declare class Stepper {
1571
1916
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<Stepper, "gbt-stepper", never, { "steps": { "alias": "steps"; "required": true; "isSignal": true; }; "activeIndex": { "alias": "activeIndex"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "completedLabel": { "alias": "completedLabel"; "required": false; "isSignal": true; }; "errorLabel": { "alias": "errorLabel"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; "selectedIndex": { "alias": "selectedIndex"; "required": false; "isSignal": true; }; "selectedLabel": { "alias": "selectedLabel"; "required": false; "isSignal": true; }; }, { "activeIndex": "activeIndexChange"; "selectedIndex": "selectedIndexChange"; }, never, never, true, never>;
1572
1917
  }
1573
1918
 
1574
- type JobGraphStatus = 'pending' | 'running' | 'success' | 'failed' | 'canceled';
1919
+ type JobStatusValue = 'pending' | 'running' | 'success' | 'failed' | 'canceled';
1920
+ declare class JobStatus {
1921
+ status: _angular_core.InputSignal<JobStatusValue>;
1922
+ label: _angular_core.InputSignal<string | null>;
1923
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<JobStatus, never>;
1924
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<JobStatus, "gbt-job-status", never, { "status": { "alias": "status"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1925
+ }
1926
+
1927
+ type JobGraphStatus = JobStatusValue;
1575
1928
  interface JobGraphJob {
1576
1929
  id: string;
1577
1930
  name: string;
1578
1931
  status: JobGraphStatus;
1579
1932
  durationLabel?: string;
1580
- /** Names (not ids) of the jobs this job depends on; names are unique within a graph. */
1581
1933
  needs: string[];
1582
1934
  }
1583
1935
  interface JobGraphStage {
@@ -1593,7 +1945,7 @@ interface GraphLink {
1593
1945
  declare class JobGraph {
1594
1946
  stages: _angular_core.InputSignal<JobGraphStage[]>;
1595
1947
  selectedJobId: _angular_core.InputSignal<string | null>;
1596
- statusLabels: _angular_core.InputSignal<Record<JobGraphStatus, string>>;
1948
+ statusLabels: _angular_core.InputSignal<Record<_masmarino_gabarit.JobStatusValue, string>>;
1597
1949
  needsLabel: _angular_core.InputSignal<string>;
1598
1950
  ariaLabel: _angular_core.InputSignal<string>;
1599
1951
  jobSelected: _angular_core.OutputEmitterRef<string>;
@@ -1619,6 +1971,7 @@ declare class FileUpload implements ControlValueAccessor {
1619
1971
  dropLabel: _angular_core.InputSignal<string>;
1620
1972
  removeLabel: _angular_core.InputSignal<(name: string) => string>;
1621
1973
  oversizeMessage: _angular_core.InputSignal<(name: string, maxSizeMb: number) => string>;
1974
+ extraFileMessage: _angular_core.InputSignal<(name: string) => string>;
1622
1975
  protected readonly files: _angular_core.WritableSignal<File[]>;
1623
1976
  protected readonly rejections: _angular_core.WritableSignal<string[]>;
1624
1977
  protected readonly dragOver: _angular_core.WritableSignal<boolean>;
@@ -1640,7 +1993,7 @@ declare class FileUpload implements ControlValueAccessor {
1640
1993
  protected removeFile(file: File): void;
1641
1994
  private addFiles;
1642
1995
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FileUpload, never>;
1643
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<FileUpload, "gbt-file-upload", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "maxSizeMb": { "alias": "maxSizeMb"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "dropLabel": { "alias": "dropLabel"; "required": false; "isSignal": true; }; "removeLabel": { "alias": "removeLabel"; "required": false; "isSignal": true; }; "oversizeMessage": { "alias": "oversizeMessage"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1996
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<FileUpload, "gbt-file-upload", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "maxSizeMb": { "alias": "maxSizeMb"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "dropLabel": { "alias": "dropLabel"; "required": false; "isSignal": true; }; "removeLabel": { "alias": "removeLabel"; "required": false; "isSignal": true; }; "oversizeMessage": { "alias": "oversizeMessage"; "required": false; "isSignal": true; }; "extraFileMessage": { "alias": "extraFileMessage"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1644
1997
  }
1645
1998
 
1646
1999
  type NotificationDotVariant = 'error' | 'warning' | 'success' | 'info';
@@ -1722,5 +2075,1130 @@ declare class Tree {
1722
2075
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<Tree, "gbt-tree", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "selectedId": { "alias": "selectedId"; "required": false; "isSignal": true; }; "expandedIds": { "alias": "expandedIds"; "required": false; "isSignal": true; }; "expandLabel": { "alias": "expandLabel"; "required": false; "isSignal": true; }; "collapseLabel": { "alias": "collapseLabel"; "required": false; "isSignal": true; }; }, { "selectedId": "selectedIdChange"; "expandedIds": "expandedIdsChange"; }, never, never, true, never>;
1723
2076
  }
1724
2077
 
1725
- export { Accordion, AccordionItem, Alert, AppShell, Autocomplete, Avatar, AvatarGroup, Badge, BarChart, BarSeries, Breadcrumb, Button, CHART_CONTEXT, Card, ChartAxis, ChartEmpty, ChartFrame, ChartLegend, ChartTable, ChartTooltip, Checkbox, ConfirmDangerModal, DatePicker, DateRangePicker, DescriptionList, DimensionCard, Divider, Drawer, EmptyState, FileUpload, FunnelChart, GABARIT_VERSION, GaugeBar, GbtInput, Icon, IconRegistry, JobGraph, LineChart, LineSeries, ListToolbar, Menu, Modal, NotificationDot, Pagination, PieChart, Popover, RadioGroup, SearchBar, SegmentedControl, Select, Skeleton, Slider, Sparkline, Spinner, Stepper, Switch, Tab, Table, Tabs, Tag, TagInput, Textarea, TimelineChart, TimelineSeries, Toaster, Tooltip, Tree, arcPath, areaPath, bandScale, formatCompact, formatDuration, formatNumber, formatPercent, linePath, linearScale, nearestIndex, niceTicks, niceXDomain, niceYDomain, timeScale, timeTicks };
1726
- export type { AccordionMode, AlertVariant, Arc, AutocompleteSearchFn, AvatarGroupItem, AvatarSize, AxisSpec, BadgeVariant, BandScale, CalendarDay, ChartBox, ChartInterval, ChartMargin, ChartPoint, ChartReader, ChartSeries, DateRangeValue, DescriptionListEntry, DescriptionListLayout, DimensionRow, DividerOrientation, DrawerEdge, EmptyStateIllustration, FlatTreeNode, FunnelStep, JobGraphJob, JobGraphStage, JobGraphStatus, LegendEntry, LinearAxisSpec, ListToolbarSortOption, NotificationDotVariant, PieSlice, Point, PointValue, PopoverAlign, RadioOption, Scale, SearchResultCategory, SegmentedControlOption, SelectOption, SkeletonVariant, SpinnerSize, StepperOrientation, StepperStatus, StepperStep, TableColumn, TimeTicks, TimeUnit, ToastItem, ToastVariant, ToasterPosition, TooltipPoint, TooltipPosition, TooltipRow, TreeNode, WeekStartsOn };
2078
+ type UserChipSize = 'sm' | 'md';
2079
+ declare class UserChip {
2080
+ name: _angular_core.InputSignal<string>;
2081
+ size: _angular_core.InputSignal<UserChipSize>;
2082
+ src: _angular_core.InputSignal<string | null>;
2083
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<UserChip, never>;
2084
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UserChip, "gbt-user-chip", never, { "name": { "alias": "name"; "required": true; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "src": { "alias": "src"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2085
+ }
2086
+
2087
+ type PanelHeadingLevel = 2 | 3 | 4;
2088
+ declare class Panel {
2089
+ heading: _angular_core.InputSignal<string>;
2090
+ headingLevel: _angular_core.InputSignal<PanelHeadingLevel>;
2091
+ protected readonly headingId: string;
2092
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Panel, never>;
2093
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Panel, "gbt-panel", never, { "heading": { "alias": "heading"; "required": true; "isSignal": true; }; "headingLevel": { "alias": "headingLevel"; "required": false; "isSignal": true; }; }, {}, never, ["[panel-actions]", "*"], true, never>;
2094
+ }
2095
+
2096
+ type PageHeaderLevel = 1 | 2 | 3;
2097
+ declare class PageHeader {
2098
+ heading: _angular_core.InputSignal<string>;
2099
+ headingLevel: _angular_core.InputSignal<PageHeaderLevel>;
2100
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PageHeader, never>;
2101
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PageHeader, "gbt-page-header", never, { "heading": { "alias": "heading"; "required": true; "isSignal": true; }; "headingLevel": { "alias": "headingLevel"; "required": false; "isSignal": true; }; }, {}, never, ["[header-title]", "[header-badges]", "[header-meta]", "[header-actions]"], true, never>;
2102
+ }
2103
+
2104
+ type PageLayoutWidth = 'narrow' | 'default' | 'wide' | 'full';
2105
+ type PageLayoutAsideWidth = 'sm' | 'md' | 'lg';
2106
+ type PageLayoutAsidePosition = 'start' | 'end';
2107
+ declare class PageLayout {
2108
+ width: _angular_core.InputSignal<PageLayoutWidth>;
2109
+ asideWidth: _angular_core.InputSignal<PageLayoutAsideWidth>;
2110
+ asidePosition: _angular_core.InputSignal<PageLayoutAsidePosition>;
2111
+ navLabel: _angular_core.InputSignal<string>;
2112
+ asideLabel: _angular_core.InputSignal<string | null>;
2113
+ stickyNav: _angular_core.InputSignalWithTransform<boolean, unknown>;
2114
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PageLayout, never>;
2115
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PageLayout, "gbt-page-layout", never, { "width": { "alias": "width"; "required": false; "isSignal": true; }; "asideWidth": { "alias": "asideWidth"; "required": false; "isSignal": true; }; "asidePosition": { "alias": "asidePosition"; "required": false; "isSignal": true; }; "navLabel": { "alias": "navLabel"; "required": false; "isSignal": true; }; "asideLabel": { "alias": "asideLabel"; "required": false; "isSignal": true; }; "stickyNav": { "alias": "stickyNav"; "required": false; "isSignal": true; }; }, {}, never, ["[page-nav]", "*", "[page-aside]"], true, never>;
2116
+ }
2117
+
2118
+ type ListRowTone = 'neutral' | 'success' | 'warning' | 'error' | 'info';
2119
+ declare class ListRow {
2120
+ tone: _angular_core.InputSignal<ListRowTone>;
2121
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ListRow, never>;
2122
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ListRow, "gbt-list-row", never, { "tone": { "alias": "tone"; "required": false; "isSignal": true; }; }, {}, never, ["[row-leading]", "*", "[row-meta]", "[row-trailing]"], true, never>;
2123
+ }
2124
+
2125
+ type ListCardState = 'loading' | 'failed' | 'empty' | 'ready';
2126
+ declare class ListCard {
2127
+ state: _angular_core.InputSignal<ListCardState>;
2128
+ ariaLabel: _angular_core.InputSignal<string | null>;
2129
+ loadingLabel: _angular_core.InputSignal<string>;
2130
+ skeletonRows: _angular_core.InputSignal<number>;
2131
+ skeletonHeader: _angular_core.InputSignal<boolean>;
2132
+ failedHeading: _angular_core.InputSignal<string>;
2133
+ failedMessage: _angular_core.InputSignal<string>;
2134
+ retryLabel: _angular_core.InputSignal<string | null>;
2135
+ retry: _angular_core.OutputEmitterRef<void>;
2136
+ emptyHeading: _angular_core.InputSignal<string>;
2137
+ emptyMessage: _angular_core.InputSignal<string>;
2138
+ emptyIllustration: _angular_core.InputSignal<EmptyStateIllustration | null>;
2139
+ emptyIcon: _angular_core.InputSignal<string | null>;
2140
+ /**
2141
+ * What sits above the box: the projected `[list-card-header]` (ready), its placeholder (loading,
2142
+ * unless `skeletonHeader` is off), or nothing (failed, empty).
2143
+ */
2144
+ protected readonly header: _angular_core.Signal<"slot" | "skeleton" | null>;
2145
+ protected readonly placeholders: _angular_core.Signal<string[]>;
2146
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ListCard, never>;
2147
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ListCard, "gbt-list-card", never, { "state": { "alias": "state"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "loadingLabel": { "alias": "loadingLabel"; "required": false; "isSignal": true; }; "skeletonRows": { "alias": "skeletonRows"; "required": false; "isSignal": true; }; "skeletonHeader": { "alias": "skeletonHeader"; "required": false; "isSignal": true; }; "failedHeading": { "alias": "failedHeading"; "required": false; "isSignal": true; }; "failedMessage": { "alias": "failedMessage"; "required": false; "isSignal": true; }; "retryLabel": { "alias": "retryLabel"; "required": false; "isSignal": true; }; "emptyHeading": { "alias": "emptyHeading"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "emptyIllustration": { "alias": "emptyIllustration"; "required": false; "isSignal": true; }; "emptyIcon": { "alias": "emptyIcon"; "required": false; "isSignal": true; }; }, { "retry": "retry"; }, never, ["[list-card-header]", "[list-card-failed]", "[list-card-empty]", "*"], true, never>;
2148
+ }
2149
+
2150
+ type CopyButtonFeedback = 'bubble' | 'inline' | 'hidden';
2151
+
2152
+ declare class CopyButton {
2153
+ value: _angular_core.InputSignal<CopyValue>;
2154
+ text: _angular_core.InputSignal<string>;
2155
+ ariaLabel: _angular_core.InputSignal<string | null>;
2156
+ copiedText: _angular_core.InputSignal<string>;
2157
+ failedText: _angular_core.InputSignal<string>;
2158
+ feedbackMs: _angular_core.InputSignal<number>;
2159
+ variant: _angular_core.InputSignal<ButtonVariant>;
2160
+ size: _angular_core.InputSignal<ButtonSize>;
2161
+ icon: _angular_core.InputSignal<string>;
2162
+ disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
2163
+ feedback: _angular_core.InputSignal<CopyButtonFeedback>;
2164
+ selectTarget: _angular_core.InputSignal<HTMLElement | null>;
2165
+ copied: _angular_core.OutputEmitterRef<string>;
2166
+ copyFailed: _angular_core.OutputEmitterRef<void>;
2167
+ protected readonly clipboard: ClipboardFeedback;
2168
+ constructor();
2169
+ reset(): void;
2170
+ protected readonly glyph: _angular_core.Signal<string>;
2171
+ protected readonly statusText: _angular_core.Signal<string>;
2172
+ protected readonly name: _angular_core.Signal<string | null>;
2173
+ protected copy(): Promise<void>;
2174
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CopyButton, never>;
2175
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CopyButton, "gbt-copy-button", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "text": { "alias": "text"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "copiedText": { "alias": "copiedText"; "required": false; "isSignal": true; }; "failedText": { "alias": "failedText"; "required": false; "isSignal": true; }; "feedbackMs": { "alias": "feedbackMs"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "feedback": { "alias": "feedback"; "required": false; "isSignal": true; }; "selectTarget": { "alias": "selectTarget"; "required": false; "isSignal": true; }; }, { "copied": "copied"; "copyFailed": "copyFailed"; }, never, never, true, never>;
2176
+ }
2177
+
2178
+ declare const COPY_FIELD_WRAP_AT: RegExp;
2179
+ declare class CopyField {
2180
+ value: _angular_core.InputSignal<string>;
2181
+ label: _angular_core.InputSignal<string | null>;
2182
+ copyLabel: _angular_core.InputSignal<string>;
2183
+ copiedText: _angular_core.InputSignal<string>;
2184
+ failedText: _angular_core.InputSignal<string>;
2185
+ feedbackMs: _angular_core.InputSignal<number>;
2186
+ feedback: _angular_core.InputSignal<CopyButtonFeedback>;
2187
+ wrapAt: _angular_core.InputSignal<RegExp | null>;
2188
+ copied: _angular_core.OutputEmitterRef<string>;
2189
+ copyFailed: _angular_core.OutputEmitterRef<void>;
2190
+ protected readonly labelId: string;
2191
+ protected readonly segments: _angular_core.Signal<string[]>;
2192
+ private cut;
2193
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CopyField, never>;
2194
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CopyField, "gbt-copy-field", never, { "value": { "alias": "value"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "copyLabel": { "alias": "copyLabel"; "required": false; "isSignal": true; }; "copiedText": { "alias": "copiedText"; "required": false; "isSignal": true; }; "failedText": { "alias": "failedText"; "required": false; "isSignal": true; }; "feedbackMs": { "alias": "feedbackMs"; "required": false; "isSignal": true; }; "feedback": { "alias": "feedback"; "required": false; "isSignal": true; }; "wrapAt": { "alias": "wrapAt"; "required": false; "isSignal": true; }; }, { "copied": "copied"; "copyFailed": "copyFailed"; }, never, never, true, never>;
2195
+ }
2196
+
2197
+ declare class SecretReveal {
2198
+ value: _angular_core.InputSignal<string>;
2199
+ revealed: _angular_core.ModelSignal<boolean>;
2200
+ label: _angular_core.InputSignal<string | null>;
2201
+ showLabel: _angular_core.InputSignal<string>;
2202
+ hideLabel: _angular_core.InputSignal<string>;
2203
+ hiddenLabel: _angular_core.InputSignal<string>;
2204
+ copyLabel: _angular_core.InputSignal<string>;
2205
+ copiedText: _angular_core.InputSignal<string>;
2206
+ failedText: _angular_core.InputSignal<string>;
2207
+ feedbackMs: _angular_core.InputSignal<number>;
2208
+ feedback: _angular_core.InputSignal<CopyButtonFeedback>;
2209
+ maskLength: _angular_core.InputSignal<number>;
2210
+ copied: _angular_core.OutputEmitterRef<string>;
2211
+ copyFailed: _angular_core.OutputEmitterRef<void>;
2212
+ protected readonly id: string;
2213
+ protected readonly valueId: string;
2214
+ protected readonly labelId: string;
2215
+ private readonly code;
2216
+ private readonly copyButton;
2217
+ private readonly injector;
2218
+ constructor();
2219
+ protected mask(): string;
2220
+ protected toggle(): void;
2221
+ protected onCopyFailed(): void;
2222
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SecretReveal, never>;
2223
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SecretReveal, "gbt-secret-reveal", never, { "value": { "alias": "value"; "required": true; "isSignal": true; }; "revealed": { "alias": "revealed"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "showLabel": { "alias": "showLabel"; "required": false; "isSignal": true; }; "hideLabel": { "alias": "hideLabel"; "required": false; "isSignal": true; }; "hiddenLabel": { "alias": "hiddenLabel"; "required": false; "isSignal": true; }; "copyLabel": { "alias": "copyLabel"; "required": false; "isSignal": true; }; "copiedText": { "alias": "copiedText"; "required": false; "isSignal": true; }; "failedText": { "alias": "failedText"; "required": false; "isSignal": true; }; "feedbackMs": { "alias": "feedbackMs"; "required": false; "isSignal": true; }; "feedback": { "alias": "feedback"; "required": false; "isSignal": true; }; "maskLength": { "alias": "maskLength"; "required": false; "isSignal": true; }; }, { "revealed": "revealedChange"; "copied": "copied"; "copyFailed": "copyFailed"; }, never, never, true, never>;
2224
+ }
2225
+
2226
+ type SaveStatusState = 'idle' | 'saving' | 'saved' | 'error';
2227
+ declare class SaveStatus {
2228
+ state: _angular_core.InputSignal<SaveStatusState>;
2229
+ savingLabel: _angular_core.InputSignal<string>;
2230
+ savedLabel: _angular_core.InputSignal<string>;
2231
+ errorLabel: _angular_core.InputSignal<string>;
2232
+ message: _angular_core.InputSignal<string | null>;
2233
+ protected readonly text: _angular_core.Signal<string>;
2234
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SaveStatus, never>;
2235
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SaveStatus, "gbt-save-status", never, { "state": { "alias": "state"; "required": false; "isSignal": true; }; "savingLabel": { "alias": "savingLabel"; "required": false; "isSignal": true; }; "savedLabel": { "alias": "savedLabel"; "required": false; "isSignal": true; }; "errorLabel": { "alias": "errorLabel"; "required": false; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2236
+ }
2237
+
2238
+ type IconMarkerTone = 'neutral' | 'primary' | 'success' | 'warning' | 'error' | 'info';
2239
+ type IconMarkerSize = 'sm' | 'md' | 'lg' | 'xl';
2240
+ type IconMarkerShape = 'disc' | 'tile';
2241
+ type IconMarkerAppearance = 'soft' | 'outline';
2242
+ declare class IconMarker {
2243
+ icon: _angular_core.InputSignal<string>;
2244
+ tone: _angular_core.InputSignal<IconMarkerTone>;
2245
+ size: _angular_core.InputSignal<IconMarkerSize>;
2246
+ shape: _angular_core.InputSignal<IconMarkerShape>;
2247
+ appearance: _angular_core.InputSignal<IconMarkerAppearance>;
2248
+ label: _angular_core.InputSignal<string | null>;
2249
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<IconMarker, never>;
2250
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<IconMarker, "gbt-icon-marker", never, { "icon": { "alias": "icon"; "required": true; "isSignal": true; }; "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "shape": { "alias": "shape"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2251
+ }
2252
+
2253
+ type StatGridColumns = 2 | 3 | 4 | 5 | 6;
2254
+ declare class StatGrid {
2255
+ ariaLabel: _angular_core.InputSignal<string>;
2256
+ columns: _angular_core.InputSignal<StatGridColumns>;
2257
+ loading: _angular_core.InputSignal<boolean>;
2258
+ loadingCount: _angular_core.InputSignal<number>;
2259
+ loadingLabel: _angular_core.InputSignal<string>;
2260
+ protected readonly placeholders: _angular_core.Signal<number[]>;
2261
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<StatGrid, never>;
2262
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<StatGrid, "gbt-stat-grid", never, { "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "loadingCount": { "alias": "loadingCount"; "required": false; "isSignal": true; }; "loadingLabel": { "alias": "loadingLabel"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
2263
+ }
2264
+
2265
+ type StatTileTrend = 'up' | 'down' | 'flat';
2266
+ type StatTileTrendTone = 'neutral' | 'success' | 'error';
2267
+ declare class StatTile {
2268
+ label: _angular_core.InputSignal<string>;
2269
+ value: _angular_core.InputSignal<string | number>;
2270
+ icon: _angular_core.InputSignal<string | null>;
2271
+ iconTone: _angular_core.InputSignal<IconMarkerTone>;
2272
+ hint: _angular_core.InputSignal<string | null>;
2273
+ trend: _angular_core.InputSignal<StatTileTrend | null>;
2274
+ trendLabel: _angular_core.InputSignal<string | null>;
2275
+ trendTone: _angular_core.InputSignal<StatTileTrendTone>;
2276
+ href: _angular_core.InputSignal<string | null>;
2277
+ muted: _angular_core.InputSignalWithTransform<boolean, unknown>;
2278
+ private readonly link;
2279
+ protected readonly grid: StatGrid | null;
2280
+ protected linked(): boolean;
2281
+ protected hasLink(): boolean;
2282
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<StatTile, never>;
2283
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<StatTile, "gbt-stat-tile", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": true; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "iconTone": { "alias": "iconTone"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "trend": { "alias": "trend"; "required": false; "isSignal": true; }; "trendLabel": { "alias": "trendLabel"; "required": false; "isSignal": true; }; "trendTone": { "alias": "trendTone"; "required": false; "isSignal": true; }; "href": { "alias": "href"; "required": false; "isSignal": true; }; "muted": { "alias": "muted"; "required": false; "isSignal": true; }; }, {}, ["link"], ["a[gbtStatTileLink]"], true, never>;
2284
+ }
2285
+
2286
+ declare class StatTileLink {
2287
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<StatTileLink, never>;
2288
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<StatTileLink, "a[gbtStatTileLink]", never, {}, {}, never, ["*"], true, never>;
2289
+ }
2290
+
2291
+ type SkeletonListLeading = 'circle' | 'square' | 'none';
2292
+ declare class SkeletonList {
2293
+ rows: _angular_core.InputSignal<number>;
2294
+ leading: _angular_core.InputSignal<SkeletonListLeading>;
2295
+ leadingSize: _angular_core.InputSignal<string>;
2296
+ lines: _angular_core.InputSignal<2 | 1 | 3>;
2297
+ loadingLabel: _angular_core.InputSignal<string>;
2298
+ divided: _angular_core.InputSignalWithTransform<boolean, unknown>;
2299
+ padded: _angular_core.InputSignalWithTransform<boolean, unknown>;
2300
+ protected readonly items: _angular_core.Signal<{
2301
+ row: number;
2302
+ widths: string[];
2303
+ }[]>;
2304
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SkeletonList, never>;
2305
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SkeletonList, "gbt-skeleton-list", never, { "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "leading": { "alias": "leading"; "required": false; "isSignal": true; }; "leadingSize": { "alias": "leadingSize"; "required": false; "isSignal": true; }; "lines": { "alias": "lines"; "required": false; "isSignal": true; }; "loadingLabel": { "alias": "loadingLabel"; "required": false; "isSignal": true; }; "divided": { "alias": "divided"; "required": false; "isSignal": true; }; "padded": { "alias": "padded"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2306
+ }
2307
+
2308
+ type DisclosureAppearance = 'bordered' | 'plain';
2309
+ type DisclosureHeadingLevel = 2 | 3 | 4 | 5 | 6;
2310
+ declare class Disclosure {
2311
+ label: _angular_core.InputSignal<string>;
2312
+ open: _angular_core.ModelSignal<boolean>;
2313
+ icon: _angular_core.InputSignal<string | null>;
2314
+ appearance: _angular_core.InputSignal<DisclosureAppearance>;
2315
+ headingLevel: _angular_core.InputSignal<DisclosureHeadingLevel | null>;
2316
+ protected readonly buttonId: string;
2317
+ protected readonly panelId: string;
2318
+ protected toggle(): void;
2319
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Disclosure, never>;
2320
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Disclosure, "gbt-disclosure", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "headingLevel": { "alias": "headingLevel"; "required": false; "isSignal": true; }; }, { "open": "openChange"; }, never, ["*"], true, never>;
2321
+ }
2322
+
2323
+ type NavTabsOrientation = 'horizontal' | 'vertical';
2324
+
2325
+ declare class NavTabs {
2326
+ ariaLabel: _angular_core.InputSignal<string>;
2327
+ orientation: _angular_core.InputSignal<NavTabsOrientation>;
2328
+ landmark: _angular_core.InputSignalWithTransform<boolean, unknown>;
2329
+ private readonly list;
2330
+ private readonly tabs;
2331
+ protected readonly hiddenBefore: _angular_core.WritableSignal<boolean>;
2332
+ protected readonly hiddenAfter: _angular_core.WritableSignal<boolean>;
2333
+ protected updateOverflow(): void;
2334
+ constructor();
2335
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NavTabs, never>;
2336
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NavTabs, "gbt-nav-tabs", never, { "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "landmark": { "alias": "landmark"; "required": false; "isSignal": true; }; }, {}, ["tabs"], ["*"], true, never>;
2337
+ }
2338
+
2339
+ declare class NavTab {
2340
+ active: _angular_core.InputSignalWithTransform<boolean, unknown>;
2341
+ icon: _angular_core.InputSignal<string | null>;
2342
+ badge: _angular_core.InputSignal<string | number | null>;
2343
+ private readonly nav;
2344
+ private readonly label;
2345
+ protected readonly orientation: _angular_core.Signal<_masmarino_gabarit.NavTabsOrientation>;
2346
+ protected readonly hasBadge: _angular_core.Signal<boolean>;
2347
+ constructor();
2348
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NavTab, never>;
2349
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NavTab, "a[gbtNavTab]", never, { "active": { "alias": "active"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "badge": { "alias": "badge"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
2350
+ }
2351
+
2352
+ interface LoginResponse {
2353
+ token: string | null;
2354
+ mfaToken?: string;
2355
+ mfaSetupRequired?: boolean;
2356
+ mfaHasTotp?: boolean;
2357
+ mfaHasPasskey?: boolean;
2358
+ }
2359
+ interface AuthConfig {
2360
+ registrationEnabled: boolean;
2361
+ passkeysAvailable: boolean;
2362
+ }
2363
+ interface PasskeyChallenge {
2364
+ challengeId: string;
2365
+ publicKey: unknown;
2366
+ }
2367
+ type MfaProof = {
2368
+ code: string;
2369
+ } | {
2370
+ backupCode: string;
2371
+ };
2372
+ interface TotpEnrollment {
2373
+ secret: string;
2374
+ otpauthUrl: string;
2375
+ }
2376
+ interface MfaSetupResult {
2377
+ token: string;
2378
+ backupCodes: string[];
2379
+ }
2380
+ interface AuthPort {
2381
+ authConfig(): Observable<AuthConfig>;
2382
+ login(username: string, password: string): Observable<LoginResponse>;
2383
+ register(username: string, email: string, password: string): Observable<LoginResponse>;
2384
+ activate(token: string, password: string): Observable<void>;
2385
+ verifyMfa(mfaToken: string, proof: MfaProof): Observable<void>;
2386
+ startPasskeyChallenge(mfaToken: string): Observable<PasskeyChallenge>;
2387
+ finishPasskeyChallenge(mfaToken: string, challengeId: string, credential: unknown): Observable<void>;
2388
+ enrollTotp(mfaToken: string): Observable<TotpEnrollment>;
2389
+ confirmTotp(mfaToken: string, code: string): Observable<MfaSetupResult>;
2390
+ startPasskeySetup(mfaToken: string): Observable<PasskeyChallenge>;
2391
+ finishPasskeySetup(mfaToken: string, challengeId: string, credential: unknown, name: string): Observable<MfaSetupResult>;
2392
+ setToken(token: string): void;
2393
+ }
2394
+ declare const AUTH_PORT: InjectionToken<AuthPort>;
2395
+
2396
+ interface Passkey {
2397
+ id: string;
2398
+ name: string;
2399
+ createdAt: string;
2400
+ lastUsedAt: string | null;
2401
+ }
2402
+ interface MfaStatus {
2403
+ totpEnabled: boolean;
2404
+ backupCodesRemaining: number;
2405
+ passkeys: Passkey[];
2406
+ }
2407
+ interface BackupCodesResult {
2408
+ backupCodes: string[];
2409
+ }
2410
+ interface MfaPort {
2411
+ status(): Observable<MfaStatus>;
2412
+ enroll(currentPassword: string): Observable<TotpEnrollment>;
2413
+ confirm(code: string): Observable<BackupCodesResult>;
2414
+ regenerate(currentPassword: string): Observable<BackupCodesResult>;
2415
+ disable(currentPassword: string): Observable<void>;
2416
+ startPasskeyRegistration(currentPassword: string): Observable<PasskeyChallenge>;
2417
+ finishPasskeyRegistration(challengeId: string, credential: unknown, name: string): Observable<Passkey>;
2418
+ deletePasskey(id: string, currentPassword: string): Observable<void>;
2419
+ }
2420
+ declare const MFA_PORT: InjectionToken<MfaPort>;
2421
+
2422
+ type PasskeyFailure = 'cancelled' | 'already-registered' | 'unsupported' | 'failed';
2423
+ declare function bufferToBase64Url(buffer: ArrayBuffer): string;
2424
+ declare function base64UrlToBuffer(base64Url: string): ArrayBuffer;
2425
+ declare function passkeysSupported(): boolean;
2426
+ declare function classifyPasskeyError(e: unknown): PasskeyFailure;
2427
+ declare function createPasskeyCredential(publicKey: unknown): Promise<unknown>;
2428
+ declare function getPasskeyAssertion(publicKey: unknown): Promise<unknown>;
2429
+
2430
+ type EnrolledFactor = 'totp' | 'passkey';
2431
+ interface TotpQrLabels {
2432
+ fallback: string;
2433
+ imageAlt: string;
2434
+ secretLabel: string;
2435
+ fallbackSecretLabel: string;
2436
+ copyLabel: string;
2437
+ copied: string;
2438
+ copyFailed: string;
2439
+ }
2440
+ declare const DEFAULT_TOTP_QR_LABELS: Readonly<TotpQrLabels>;
2441
+ interface BackupCodesLabels {
2442
+ listLabel: string;
2443
+ copy: string;
2444
+ copied: string;
2445
+ copyFailed: string;
2446
+ download: string;
2447
+ acknowledge: string;
2448
+ fileName: string;
2449
+ fileTitle: string;
2450
+ fileNotice: string;
2451
+ }
2452
+ declare const DEFAULT_BACKUP_CODES_LABELS: Readonly<BackupCodesLabels>;
2453
+ interface CommonFailureLabels {
2454
+ tooManyAttempts: string;
2455
+ }
2456
+ interface MfaEnrollmentLabels extends CommonFailureLabels {
2457
+ step: (current: number, total: number) => string;
2458
+ choiceHeading: string;
2459
+ scanHeading: string;
2460
+ passkeyHeading: string;
2461
+ codesHeading: string;
2462
+ mandatory: string;
2463
+ choiceLead: string;
2464
+ passkeyOption: string;
2465
+ recommended: string;
2466
+ passkeyOptionText: string;
2467
+ usePasskey: string;
2468
+ appOption: string;
2469
+ appOptionText: string;
2470
+ useApp: string;
2471
+ preparing: string;
2472
+ back: string;
2473
+ todoInstall: string;
2474
+ todoScan: string;
2475
+ todoKeep: string;
2476
+ begin: string;
2477
+ scanLead: string;
2478
+ codeLabel: string;
2479
+ activate: string;
2480
+ verifying: string;
2481
+ passkeyLead: string;
2482
+ passkeyNameLabel: string;
2483
+ defaultPasskeyName: string;
2484
+ createPasskey: string;
2485
+ creating: string;
2486
+ promptOpen: string;
2487
+ codesLead: (factor: EnrolledFactor) => string;
2488
+ continue: string;
2489
+ enterCode: string;
2490
+ wrongCode: string;
2491
+ startFailed: string;
2492
+ activationFailed: string;
2493
+ passkeyFailed: string;
2494
+ alreadyRegistered: string;
2495
+ cancelled: string;
2496
+ browserUnsupported: string;
2497
+ passkeysUnavailable: string;
2498
+ loginExpired: string;
2499
+ alreadySetUp: string;
2500
+ nameTooLong: (max: number) => string;
2501
+ nameControlCharacters: string;
2502
+ }
2503
+ declare const DEFAULT_MFA_ENROLLMENT_LABELS: Readonly<MfaEnrollmentLabels>;
2504
+ interface LoginLabels extends CommonFailureLabels {
2505
+ heading: string;
2506
+ intro: string;
2507
+ challengeHeading: string;
2508
+ enrollmentHeading: string;
2509
+ username: string;
2510
+ password: string;
2511
+ showPassword: string;
2512
+ hidePassword: string;
2513
+ submit: string;
2514
+ submitting: string;
2515
+ registerPrompt: string;
2516
+ wrongCredentials: string;
2517
+ loginFailed: string;
2518
+ introBackupCode: string;
2519
+ introPasskeyOrCode: string;
2520
+ introPasskey: string;
2521
+ introCode: string;
2522
+ blockedByServer: string;
2523
+ blockedByBrowser: string;
2524
+ backToPasskeyOrApp: string;
2525
+ backToPasskey: string;
2526
+ backToApp: string;
2527
+ useBackupCode: string;
2528
+ back: string;
2529
+ backupCodeLabel: string;
2530
+ codeLabel: string;
2531
+ verify: string;
2532
+ verifying: string;
2533
+ usePasskey: string;
2534
+ passkeyValidating: string;
2535
+ or: string;
2536
+ passkeyPrompt: string;
2537
+ enterBackupCode: string;
2538
+ enterCode: string;
2539
+ wrongCode: string;
2540
+ verifyFailed: string;
2541
+ cancelled: string;
2542
+ browserUnsupported: string;
2543
+ passkeyRefused: string;
2544
+ passkeysUnavailable: string;
2545
+ loginExpired: string;
2546
+ }
2547
+ declare const DEFAULT_LOGIN_LABELS: Readonly<LoginLabels>;
2548
+ interface RegisterLabels extends CommonFailureLabels {
2549
+ heading: string;
2550
+ intro: string;
2551
+ enrollmentHeading: string;
2552
+ loading: string;
2553
+ closedHeading: string;
2554
+ closedMessage: string;
2555
+ signIn: string;
2556
+ createdHeading: string;
2557
+ createdMessage: string;
2558
+ enrollmentExpired: string;
2559
+ createdName: string;
2560
+ username: string;
2561
+ usernameHint: string;
2562
+ email: string;
2563
+ password: string;
2564
+ passwordHint: (minLength: number) => string;
2565
+ showPassword: string;
2566
+ hidePassword: string;
2567
+ submit: string;
2568
+ submitting: string;
2569
+ signInPrompt: string;
2570
+ usernameEmpty: string;
2571
+ usernameInvalid: string;
2572
+ emailEmpty: string;
2573
+ emailInvalid: string;
2574
+ passwordEmpty: string;
2575
+ passwordTooShort: (minLength: number) => string;
2576
+ invalid: string;
2577
+ reserved: string;
2578
+ taken: string;
2579
+ failed: string;
2580
+ }
2581
+ declare const DEFAULT_REGISTER_LABELS: Readonly<RegisterLabels>;
2582
+ interface ActivateLabels extends CommonFailureLabels {
2583
+ heading: string;
2584
+ intro: string;
2585
+ password: string;
2586
+ passwordHint: (minLength: number) => string;
2587
+ confirmation: string;
2588
+ showPassword: string;
2589
+ hidePassword: string;
2590
+ submit: string;
2591
+ submitting: string;
2592
+ signInPrompt: string;
2593
+ successHeading: string;
2594
+ successMessage: string;
2595
+ invalidHeading: string;
2596
+ invalidMessage: string;
2597
+ signIn: string;
2598
+ passwordEmpty: string;
2599
+ passwordTooShort: (minLength: number) => string;
2600
+ confirmationEmpty: string;
2601
+ mismatch: string;
2602
+ weakPassword: (minLength: number) => string;
2603
+ failed: string;
2604
+ }
2605
+ declare const DEFAULT_ACTIVATE_LABELS: Readonly<ActivateLabels>;
2606
+ interface MfaSettingsLabels extends CommonFailureLabels {
2607
+ heading: string;
2608
+ enrollingHeading: string;
2609
+ codesHeading: string;
2610
+ help: string;
2611
+ codesHelp: string;
2612
+ loading: string;
2613
+ loadFailed: string;
2614
+ retry: string;
2615
+ enrollLead: string;
2616
+ enrollSubmit: string;
2617
+ enrollBusy: string;
2618
+ enrollFailed: string;
2619
+ regenerateLead: string;
2620
+ regenerateSubmit: string;
2621
+ regenerateBusy: string;
2622
+ regenerateFailed: string;
2623
+ disableSubmit: string;
2624
+ disableCheckBusy: string;
2625
+ disableFailed: string;
2626
+ removeTitle: string;
2627
+ removeHelp: string;
2628
+ removeAction: string;
2629
+ removeDialogHeading: string;
2630
+ removeDialogMessage: string;
2631
+ removePromptLead: string;
2632
+ removeBusy: string;
2633
+ resetTitle: string;
2634
+ resetHelp: string;
2635
+ resetAction: string;
2636
+ resetDialogHeading: string;
2637
+ resetDialogMessage: string;
2638
+ resetPromptLead: string;
2639
+ resetBusy: string;
2640
+ codesLeft: (count: number) => string;
2641
+ lowCodes: string;
2642
+ scanLead: string;
2643
+ codeLabel: string;
2644
+ activate: string;
2645
+ verifying: string;
2646
+ cancel: string;
2647
+ close: string;
2648
+ codesLeadEnrolled: string;
2649
+ codesLeadRegenerated: string;
2650
+ dontLeave: string;
2651
+ done: string;
2652
+ appConfigured: string;
2653
+ enabled: string;
2654
+ appHelpWithPasskey: string;
2655
+ appHelp: string;
2656
+ noApp: string;
2657
+ optional: string;
2658
+ noAppHelp: string;
2659
+ addApp: string;
2660
+ backupCodesTitle: string;
2661
+ backupCodesHelp: string;
2662
+ regenerateCodes: string;
2663
+ noFactorWarning: string;
2664
+ setUpNow: string;
2665
+ currentPassword: string;
2666
+ showPassword: string;
2667
+ hidePassword: string;
2668
+ enterPassword: string;
2669
+ wrongPassword: string;
2670
+ enterCode: string;
2671
+ wrongCode: string;
2672
+ activationFailed: string;
2673
+ signedOut: string;
2674
+ }
2675
+ declare const DEFAULT_MFA_SETTINGS_LABELS: Readonly<MfaSettingsLabels>;
2676
+ interface PasskeySettingsLabels extends CommonFailureLabels {
2677
+ heading: string;
2678
+ description: string;
2679
+ loading: string;
2680
+ loadFailed: string;
2681
+ retry: string;
2682
+ browserBlocked: string;
2683
+ serverBlocked: string;
2684
+ emptyHeading: string;
2685
+ emptyMessage: string;
2686
+ listLabel: string;
2687
+ added: (absolute: boolean) => string;
2688
+ lastUsed: (absolute: boolean) => string;
2689
+ neverUsed: string;
2690
+ delete: string;
2691
+ deleteKey: (name: string) => string;
2692
+ passkeyAdded: (name: string) => string;
2693
+ passkeyGone: (name: string) => string;
2694
+ addPasskey: string;
2695
+ finishAppFirst: string;
2696
+ deleteDialogHeading: string;
2697
+ deleteDialogMessage: (name: string, lastFactor: boolean) => string;
2698
+ deleteConfirm: string;
2699
+ cancel: string;
2700
+ close: string;
2701
+ deleting: string;
2702
+ addLead: string;
2703
+ promptOpen: string;
2704
+ nameLabel: string;
2705
+ defaultPasskeyName: string;
2706
+ currentPassword: string;
2707
+ showPassword: string;
2708
+ hidePassword: string;
2709
+ create: string;
2710
+ creating: string;
2711
+ deleteLead: (name: string) => string;
2712
+ lastFactorWarning: string;
2713
+ continue: string;
2714
+ checking: string;
2715
+ nameTooLong: (max: number) => string;
2716
+ nameControlCharacters: string;
2717
+ enterPassword: string;
2718
+ wrongPassword: string;
2719
+ tooManyPasskeys: string;
2720
+ alreadyRegistered: string;
2721
+ passkeysUnavailable: string;
2722
+ addFailed: string;
2723
+ cancelled: string;
2724
+ browserUnsupported: string;
2725
+ deleteFailed: string;
2726
+ signedOut: string;
2727
+ }
2728
+ declare const DEFAULT_PASSKEY_SETTINGS_LABELS: Readonly<PasskeySettingsLabels>;
2729
+ interface AuthLabels {
2730
+ totpQr?: Partial<TotpQrLabels>;
2731
+ backupCodes?: Partial<BackupCodesLabels>;
2732
+ mfaEnrollment?: Partial<MfaEnrollmentLabels>;
2733
+ login?: Partial<LoginLabels>;
2734
+ register?: Partial<RegisterLabels>;
2735
+ activate?: Partial<ActivateLabels>;
2736
+ mfaSettings?: Partial<MfaSettingsLabels>;
2737
+ passkeySettings?: Partial<PasskeySettingsLabels>;
2738
+ }
2739
+ declare const AUTH_LABELS: InjectionToken<AuthLabels>;
2740
+ declare function provideAuthLabels(labels: AuthLabels): Provider;
2741
+
2742
+ interface AuthPortError {
2743
+ status: number;
2744
+ error?: unknown;
2745
+ }
2746
+ declare const AUTH_PORT_ERROR_BODIES: {
2747
+ readonly invalidToken: "invalid or expired token";
2748
+ readonly invalidCode: "invalid code";
2749
+ readonly alreadySetUp: "MFA is already set up";
2750
+ readonly wrongPassword: "current password is incorrect";
2751
+ readonly tooManyPasskeys: "too many passkeys";
2752
+ readonly registrationDisabled: "registration is disabled";
2753
+ readonly usernameReserved: "username is reserved";
2754
+ readonly emailTaken: "email already in use";
2755
+ readonly invalidEmail: "email is not a valid address";
2756
+ readonly weakPasswordPrefix: "password must be at least";
2757
+ readonly usernamePrefix: "username ";
2758
+ };
2759
+ declare function isAuthPortError(err: unknown): err is AuthPortError;
2760
+ declare function portErrorMessage(err: AuthPortError): string | null;
2761
+
2762
+ type MfaFailure = 'wrong-code' | 'expired' | 'rate-limited' | 'unavailable' | 'already-set-up' | 'other';
2763
+ declare function classifyMfaFailure(err: unknown): MfaFailure;
2764
+ type PasswordGatedFailure = 'wrong-password' | 'rate-limited' | 'other';
2765
+ declare function classifyPasswordFailure(err: unknown): PasswordGatedFailure;
2766
+ declare function isTooManyPasskeys(err: unknown): boolean;
2767
+
2768
+ type RegisterFailure = 'disabled' | 'invalid' | 'username-invalid' | 'email-invalid' | 'password-weak' | 'username-reserved' | 'username-taken' | 'email-taken' | 'rate-limited' | 'other';
2769
+ type ActivateFailure = 'invalid-link' | 'weak-password' | 'rate-limited' | 'other';
2770
+ declare function classifyRegisterFailure(err: unknown): RegisterFailure;
2771
+ declare function classifyActivateFailure(err: unknown): ActivateFailure;
2772
+
2773
+ declare const MIN_PASSWORD_LENGTH = 8;
2774
+ declare const USERNAME_PATTERN: RegExp;
2775
+ type UsernameProblem = 'empty' | 'invalid';
2776
+ type EmailProblem = 'empty' | 'invalid';
2777
+ type PasswordProblem = 'empty' | 'too-short';
2778
+ declare function usernameProblem(raw: string, pattern?: RegExp): UsernameProblem | null;
2779
+ declare function emailProblem(raw: string): EmailProblem | null;
2780
+ declare function passwordProblem(password: string, minLength?: number): PasswordProblem | null;
2781
+ declare function accountName(raw: string): string;
2782
+
2783
+ declare const ACTIVATION_TOKEN_SHAPE: RegExp;
2784
+ declare function activationToken(fragment: string | null, query: string | null, shape?: RegExp): string | null;
2785
+
2786
+ declare const PASSKEY_NAME_MAX = 40;
2787
+ type PasskeyNameProblem = 'too-long' | 'control-characters';
2788
+ declare function passkeyNameProblem(name: string, maxLength?: number): PasskeyNameProblem | null;
2789
+
2790
+ type MfaFormOwner = 'passkeys' | 'app';
2791
+ declare class MfaSettingsState {
2792
+ private readonly passkeys;
2793
+ private readonly totp;
2794
+ private readonly owner;
2795
+ private readonly appFlow;
2796
+ readonly passkeyCount: _angular_core.Signal<number | null>;
2797
+ readonly totpEnabled: _angular_core.Signal<boolean | null>;
2798
+ readonly formOwner: _angular_core.Signal<MfaFormOwner | null>;
2799
+ readonly appFlowActive: _angular_core.Signal<boolean>;
2800
+ claimForm(owner: MfaFormOwner): void;
2801
+ setAppFlowActive(active: boolean): void;
2802
+ statusLoaded(status: MfaStatus): void;
2803
+ totpConfirmed(): void;
2804
+ passkeyAdded(): void;
2805
+ passkeyGone(): void;
2806
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MfaSettingsState, never>;
2807
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
2808
+ }
2809
+
2810
+ declare class AuthPanel {
2811
+ heading: _angular_core.InputSignal<string>;
2812
+ intro: _angular_core.InputSignal<string>;
2813
+ wide: _angular_core.InputSignalWithTransform<boolean, unknown>;
2814
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AuthPanel, never>;
2815
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AuthPanel, "gbt-auth-panel", never, { "heading": { "alias": "heading"; "required": false; "isSignal": true; }; "intro": { "alias": "intro"; "required": false; "isSignal": true; }; "wide": { "alias": "wide"; "required": false; "isSignal": true; }; }, {}, never, ["[auth-logo]", "*"], true, never>;
2816
+ }
2817
+
2818
+ declare class AuthFooterLink {
2819
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AuthFooterLink, never>;
2820
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AuthFooterLink, "[gbtAuthFooterLink]", never, {}, {}, never, never, true, never>;
2821
+ }
2822
+ declare class AuthFooter {
2823
+ text: _angular_core.InputSignal<string>;
2824
+ href: _angular_core.InputSignal<string | null>;
2825
+ linkText: _angular_core.InputSignal<string>;
2826
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AuthFooter, never>;
2827
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AuthFooter, "gbt-auth-footer", never, { "text": { "alias": "text"; "required": true; "isSignal": true; }; "href": { "alias": "href"; "required": false; "isSignal": true; }; "linkText": { "alias": "linkText"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
2828
+ }
2829
+
2830
+ interface TotpQrRenderOptions {
2831
+ width: number;
2832
+ margin: number;
2833
+ errorCorrectionLevel: 'L' | 'M' | 'Q' | 'H';
2834
+ }
2835
+ type TotpQrRenderer = (text: string, options: TotpQrRenderOptions) => Promise<string>;
2836
+ declare const TOTP_QR_RENDERER: InjectionToken<TotpQrRenderer>;
2837
+ declare class TotpQr {
2838
+ otpauthUrl: _angular_core.InputSignal<string>;
2839
+ secret: _angular_core.InputSignal<string>;
2840
+ labels: _angular_core.InputSignal<Partial<TotpQrLabels>>;
2841
+ protected readonly text: _angular_core.Signal<Readonly<TotpQrLabels>>;
2842
+ protected dataUrl: _angular_core.WritableSignal<string | null>;
2843
+ protected failed: _angular_core.WritableSignal<boolean>;
2844
+ private readonly render;
2845
+ private generation;
2846
+ constructor();
2847
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TotpQr, never>;
2848
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TotpQr, "gbt-totp-qr", never, { "otpauthUrl": { "alias": "otpauthUrl"; "required": true; "isSignal": true; }; "secret": { "alias": "secret"; "required": true; "isSignal": true; }; "labels": { "alias": "labels"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2849
+ }
2850
+
2851
+ declare class BackupCodes {
2852
+ codes: _angular_core.InputSignal<string[]>;
2853
+ acknowledged: _angular_core.ModelSignal<boolean>;
2854
+ labels: _angular_core.InputSignal<Partial<BackupCodesLabels>>;
2855
+ protected readonly text: _angular_core.Signal<Readonly<BackupCodesLabels>>;
2856
+ protected readonly id: string;
2857
+ private readonly document;
2858
+ protected readonly display: _angular_core.Signal<string[][]>;
2859
+ constructor();
2860
+ protected readonly codesText: _angular_core.Signal<string>;
2861
+ protected download(): void;
2862
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BackupCodes, never>;
2863
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BackupCodes, "gbt-backup-codes", never, { "codes": { "alias": "codes"; "required": true; "isSignal": true; }; "acknowledged": { "alias": "acknowledged"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": false; "isSignal": true; }; }, { "acknowledged": "acknowledgedChange"; }, never, never, true, never>;
2864
+ }
2865
+
2866
+ type Step = 'choice' | 'scan' | 'passkey' | 'codes';
2867
+ type Factor = 'totp' | 'passkey';
2868
+ declare class MfaEnrollment {
2869
+ private readonly auth;
2870
+ private readonly host;
2871
+ private readonly injector;
2872
+ mfaToken: _angular_core.InputSignal<string>;
2873
+ passkeysAvailable: _angular_core.InputSignalWithTransform<boolean, unknown>;
2874
+ labels: _angular_core.InputSignal<Partial<MfaEnrollmentLabels>>;
2875
+ completed: _angular_core.OutputEmitterRef<string>;
2876
+ cancelled: _angular_core.OutputEmitterRef<void>;
2877
+ expired: _angular_core.OutputEmitterRef<void>;
2878
+ protected readonly text: _angular_core.Signal<Readonly<MfaEnrollmentLabels>>;
2879
+ protected readonly stepCount = 3;
2880
+ protected readonly id: string;
2881
+ protected step: _angular_core.WritableSignal<Step>;
2882
+ protected factor: _angular_core.WritableSignal<Factor>;
2883
+ protected passkeyOffered: _angular_core.Signal<boolean>;
2884
+ protected passkeyName: _angular_core.WritableSignal<string>;
2885
+ protected errorVariant: _angular_core.WritableSignal<"info" | "error">;
2886
+ protected promptOpen: _angular_core.WritableSignal<boolean>;
2887
+ protected stepNumber: _angular_core.Signal<number>;
2888
+ protected secret: _angular_core.WritableSignal<string>;
2889
+ protected otpauthUrl: _angular_core.WritableSignal<string>;
2890
+ protected code: _angular_core.WritableSignal<string>;
2891
+ protected backupCodes: _angular_core.WritableSignal<string[]>;
2892
+ protected acknowledged: _angular_core.WritableSignal<boolean>;
2893
+ protected error: _angular_core.WritableSignal<string>;
2894
+ protected submitting: _angular_core.WritableSignal<boolean>;
2895
+ private sessionToken;
2896
+ private readonly browserHasPasskeys;
2897
+ private ceremony;
2898
+ constructor();
2899
+ begin(): void;
2900
+ confirm(): void;
2901
+ choosePasskey(): void;
2902
+ createPasskey(): void;
2903
+ protected back(): void;
2904
+ finish(): void;
2905
+ private goTo;
2906
+ private passkeyFailed;
2907
+ private clearError;
2908
+ private fail;
2909
+ private messageFor;
2910
+ private focus;
2911
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MfaEnrollment, never>;
2912
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MfaEnrollment, "gbt-mfa-enrollment", never, { "mfaToken": { "alias": "mfaToken"; "required": true; "isSignal": true; }; "passkeysAvailable": { "alias": "passkeysAvailable"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": false; "isSignal": true; }; }, { "completed": "completed"; "cancelled": "cancelled"; "expired": "expired"; }, never, never, true, never>;
2913
+ }
2914
+
2915
+ declare class AuthLogin {
2916
+ private readonly auth;
2917
+ private readonly host;
2918
+ private readonly injector;
2919
+ labels: _angular_core.InputSignal<Partial<LoginLabels>>;
2920
+ loggedIn: _angular_core.OutputEmitterRef<void>;
2921
+ protected readonly text: _angular_core.Signal<Readonly<LoginLabels>>;
2922
+ protected readonly registerLink: _angular_core.Signal<AuthFooterLink | undefined>;
2923
+ protected readonly id: string;
2924
+ username: _angular_core.WritableSignal<string>;
2925
+ protected password: _angular_core.WritableSignal<string>;
2926
+ error: _angular_core.WritableSignal<string>;
2927
+ submitting: _angular_core.WritableSignal<boolean>;
2928
+ protected mfaToken: _angular_core.WritableSignal<string | null>;
2929
+ mfaSetupRequired: _angular_core.WritableSignal<boolean>;
2930
+ mfaHasTotp: _angular_core.WritableSignal<boolean>;
2931
+ mfaHasPasskey: _angular_core.WritableSignal<boolean>;
2932
+ useBackupCode: _angular_core.WritableSignal<boolean>;
2933
+ protected code: _angular_core.WritableSignal<string>;
2934
+ protected backupCode: _angular_core.WritableSignal<string>;
2935
+ protected registrationEnabled: _angular_core.WritableSignal<boolean>;
2936
+ protected passkeysAvailable: _angular_core.WritableSignal<boolean | null>;
2937
+ private browserHasPasskeys;
2938
+ protected passkeyInFlight: _angular_core.WritableSignal<boolean>;
2939
+ private ceremony;
2940
+ protected errorVariant: _angular_core.WritableSignal<"info" | "error">;
2941
+ protected enrolling: _angular_core.Signal<boolean>;
2942
+ protected challenging: _angular_core.Signal<boolean>;
2943
+ protected canUsePasskey: _angular_core.Signal<boolean>;
2944
+ protected hasTotp: _angular_core.Signal<boolean>;
2945
+ protected passkeyBlocked: _angular_core.Signal<boolean>;
2946
+ protected showBackupCode: _angular_core.Signal<boolean>;
2947
+ protected blockedReason: _angular_core.Signal<string>;
2948
+ protected backFromBackupLabel: _angular_core.Signal<string>;
2949
+ protected heading: _angular_core.Signal<string>;
2950
+ protected intro: _angular_core.Signal<string>;
2951
+ constructor();
2952
+ submit(): void;
2953
+ private loginFailureMessage;
2954
+ verify(): void;
2955
+ usePasskey(): void;
2956
+ private passkeyFailed;
2957
+ toggleBackupCode(): void;
2958
+ private firstChallengeTarget;
2959
+ backToCredentials(): void;
2960
+ sessionExpired(): void;
2961
+ enrolled(token: string): void;
2962
+ private resetMfa;
2963
+ private fail;
2964
+ private focusField;
2965
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AuthLogin, never>;
2966
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AuthLogin, "gbt-auth-login", never, { "labels": { "alias": "labels"; "required": false; "isSignal": true; }; }, { "loggedIn": "loggedIn"; }, ["registerLink"], ["[auth-logo]", "[gbtAuthFooterLink]"], true, never>;
2967
+ }
2968
+
2969
+ type Registration = 'loading' | 'open' | 'closed' | 'created';
2970
+ declare class AuthRegister {
2971
+ private readonly auth;
2972
+ private readonly host;
2973
+ private readonly injector;
2974
+ labels: _angular_core.InputSignal<Partial<RegisterLabels>>;
2975
+ minPasswordLength: _angular_core.InputSignal<number>;
2976
+ usernamePattern: _angular_core.InputSignal<RegExp>;
2977
+ registered: _angular_core.OutputEmitterRef<void>;
2978
+ signIn: _angular_core.OutputEmitterRef<void>;
2979
+ protected readonly text: _angular_core.Signal<Readonly<RegisterLabels>>;
2980
+ protected readonly signInLink: _angular_core.Signal<AuthFooterLink | undefined>;
2981
+ protected readonly id: string;
2982
+ protected readonly passwordHint: _angular_core.Signal<string>;
2983
+ protected readonly skeletonFields: {
2984
+ name: string;
2985
+ hint: boolean;
2986
+ }[];
2987
+ registration: _angular_core.WritableSignal<Registration>;
2988
+ username: _angular_core.WritableSignal<string>;
2989
+ email: _angular_core.WritableSignal<string>;
2990
+ protected password: _angular_core.WritableSignal<string>;
2991
+ error: _angular_core.WritableSignal<string>;
2992
+ submitting: _angular_core.WritableSignal<boolean>;
2993
+ private attempted;
2994
+ protected mfaToken: _angular_core.WritableSignal<string | null>;
2995
+ protected passkeysAvailable: _angular_core.WritableSignal<boolean>;
2996
+ protected heading: _angular_core.Signal<string>;
2997
+ protected intro: _angular_core.Signal<string>;
2998
+ protected createdName: _angular_core.Signal<string>;
2999
+ private enrollmentExpired;
3000
+ protected createdMessage: _angular_core.Signal<string>;
3001
+ protected usernameFieldError: _angular_core.Signal<string | null>;
3002
+ protected emailFieldError: _angular_core.Signal<string | null>;
3003
+ protected passwordFieldError: _angular_core.Signal<string | null>;
3004
+ constructor();
3005
+ submit(): void;
3006
+ enrolled(token: string): void;
3007
+ enrollmentInterrupted(expired: boolean): void;
3008
+ private opened;
3009
+ private failed;
3010
+ private fail;
3011
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AuthRegister, never>;
3012
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AuthRegister, "gbt-auth-register", never, { "labels": { "alias": "labels"; "required": false; "isSignal": true; }; "minPasswordLength": { "alias": "minPasswordLength"; "required": false; "isSignal": true; }; "usernamePattern": { "alias": "usernamePattern"; "required": false; "isSignal": true; }; }, { "registered": "registered"; "signIn": "signIn"; }, ["signInLink"], ["[auth-logo]", "[gbtAuthFooterLink]"], true, never>;
3013
+ }
3014
+
3015
+ type View$2 = 'form' | 'success' | 'invalid';
3016
+ declare class AuthActivate {
3017
+ private readonly auth;
3018
+ private readonly host;
3019
+ private readonly injector;
3020
+ token: _angular_core.InputSignal<string | null>;
3021
+ labels: _angular_core.InputSignal<Partial<ActivateLabels>>;
3022
+ minPasswordLength: _angular_core.InputSignal<number>;
3023
+ activated: _angular_core.OutputEmitterRef<void>;
3024
+ signIn: _angular_core.OutputEmitterRef<void>;
3025
+ protected readonly text: _angular_core.Signal<Readonly<ActivateLabels>>;
3026
+ protected readonly id: string;
3027
+ protected readonly signInLink: _angular_core.Signal<AuthFooterLink | undefined>;
3028
+ protected readonly passwordHint: _angular_core.Signal<string>;
3029
+ private readonly spent;
3030
+ view: _angular_core.WritableSignal<View$2>;
3031
+ protected password: _angular_core.WritableSignal<string>;
3032
+ protected confirmation: _angular_core.WritableSignal<string>;
3033
+ error: _angular_core.WritableSignal<string>;
3034
+ submitting: _angular_core.WritableSignal<boolean>;
3035
+ private attempted;
3036
+ protected passwordFieldError: _angular_core.Signal<string | null>;
3037
+ protected confirmationFieldError: _angular_core.Signal<string | null>;
3038
+ constructor();
3039
+ submit(): void;
3040
+ private confirmationProblem;
3041
+ private clearPasswords;
3042
+ private show;
3043
+ private fail;
3044
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AuthActivate, never>;
3045
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AuthActivate, "gbt-auth-activate", never, { "token": { "alias": "token"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": false; "isSignal": true; }; "minPasswordLength": { "alias": "minPasswordLength"; "required": false; "isSignal": true; }; }, { "activated": "activated"; "signIn": "signIn"; }, ["signInLink"], ["[auth-logo]", "[gbtAuthFooterLink]"], true, never>;
3046
+ }
3047
+
3048
+ type View$1 = 'loading' | 'failed' | 'ready' | 'enrolling' | 'codes' | 'revoked';
3049
+ type Prompt = 'enroll' | 'regenerate' | 'disable';
3050
+ type CodesOrigin = 'enrolled' | 'regenerated';
3051
+ interface PromptCopy {
3052
+ lead: string;
3053
+ submit: string;
3054
+ busy: string;
3055
+ variant: 'primary' | 'secondary';
3056
+ failed: string;
3057
+ }
3058
+ interface RemovalCopy {
3059
+ title: string;
3060
+ help: string;
3061
+ action: string;
3062
+ dialogHeading: string;
3063
+ dialogMessage: string;
3064
+ promptLead: string;
3065
+ busy: string;
3066
+ }
3067
+ declare class MfaSettings {
3068
+ private readonly mfa;
3069
+ private readonly state;
3070
+ private readonly host;
3071
+ private readonly injector;
3072
+ labels: _angular_core.InputSignal<Partial<MfaSettingsLabels>>;
3073
+ lowCodesThreshold: _angular_core.InputSignal<number>;
3074
+ sessionRevoked: _angular_core.OutputEmitterRef<void>;
3075
+ protected readonly text: _angular_core.Signal<Readonly<MfaSettingsLabels>>;
3076
+ protected readonly id: string;
3077
+ protected view: _angular_core.WritableSignal<View$1>;
3078
+ protected status: _angular_core.WritableSignal<MfaStatus>;
3079
+ protected prompt: _angular_core.WritableSignal<Prompt | null>;
3080
+ protected password: _angular_core.WritableSignal<string>;
3081
+ protected passwordError: _angular_core.WritableSignal<string | null>;
3082
+ protected notice: _angular_core.WritableSignal<string>;
3083
+ protected secret: _angular_core.WritableSignal<string>;
3084
+ protected otpauthUrl: _angular_core.WritableSignal<string>;
3085
+ protected code: _angular_core.WritableSignal<string>;
3086
+ protected codeError: _angular_core.WritableSignal<string | null>;
3087
+ protected backupCodes: _angular_core.WritableSignal<string[]>;
3088
+ protected codesOrigin: _angular_core.WritableSignal<CodesOrigin>;
3089
+ protected acknowledged: _angular_core.WritableSignal<boolean>;
3090
+ protected busy: _angular_core.WritableSignal<boolean>;
3091
+ protected confirmingDisable: _angular_core.WritableSignal<boolean>;
3092
+ protected hasPasskey: _angular_core.Signal<boolean>;
3093
+ protected hasFactor: _angular_core.Signal<boolean>;
3094
+ protected removal: _angular_core.Signal<RemovalCopy>;
3095
+ protected lowCodes: _angular_core.Signal<boolean>;
3096
+ protected codesLeft: _angular_core.Signal<string>;
3097
+ protected promptCopy: _angular_core.Signal<PromptCopy>;
3098
+ protected heading: _angular_core.Signal<string>;
3099
+ protected help: _angular_core.Signal<string>;
3100
+ constructor();
3101
+ protected load(): void;
3102
+ private copyOf;
3103
+ protected openPrompt(prompt: Prompt): void;
3104
+ protected cancelPrompt(): void;
3105
+ protected setPassword(value: string): void;
3106
+ protected submitPrompt(): void;
3107
+ private enroll;
3108
+ private regenerate;
3109
+ protected disable(): void;
3110
+ protected closeDisableDialog(): void;
3111
+ private promptFailed;
3112
+ private resetPrompt;
3113
+ protected activate(): void;
3114
+ protected setCode(value: string): void;
3115
+ protected cancelEnrollment(): void;
3116
+ private showCodes;
3117
+ protected finishCodes(): void;
3118
+ private focus;
3119
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MfaSettings, never>;
3120
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MfaSettings, "gbt-mfa-settings", never, { "labels": { "alias": "labels"; "required": false; "isSignal": true; }; "lowCodesThreshold": { "alias": "lowCodesThreshold"; "required": false; "isSignal": true; }; }, { "sessionRevoked": "sessionRevoked"; }, never, never, true, never>;
3121
+ }
3122
+
3123
+ type View = 'loading' | 'failed' | 'ready' | 'revoked';
3124
+ declare class PasskeySettings {
3125
+ private readonly mfa;
3126
+ private readonly auth;
3127
+ private readonly state;
3128
+ private readonly host;
3129
+ private readonly injector;
3130
+ labels: _angular_core.InputSignal<Partial<PasskeySettingsLabels>>;
3131
+ locale: _angular_core.InputSignal<string | null>;
3132
+ sessionRevoked: _angular_core.OutputEmitterRef<void>;
3133
+ protected readonly text: _angular_core.Signal<Readonly<PasskeySettingsLabels>>;
3134
+ protected readonly id: string;
3135
+ protected readonly relativeOptions: _angular_core.Signal<{
3136
+ style: "short";
3137
+ maxUnit: "day";
3138
+ absoluteAfterDays: number;
3139
+ locale: string | undefined;
3140
+ }>;
3141
+ protected readonly dateOptions: _angular_core.Signal<{
3142
+ day: "2-digit";
3143
+ month: "2-digit";
3144
+ year: "numeric";
3145
+ hour: "2-digit";
3146
+ minute: "2-digit";
3147
+ locale: string | undefined;
3148
+ }>;
3149
+ protected readonly absolute: (iso: string) => boolean;
3150
+ protected view: _angular_core.WritableSignal<View>;
3151
+ protected passkeys: _angular_core.WritableSignal<Passkey[]>;
3152
+ protected totpEnabled: _angular_core.WritableSignal<boolean>;
3153
+ private serverAvailable;
3154
+ private readonly browserSupported;
3155
+ protected blockedReason: _angular_core.Signal<string | null>;
3156
+ protected result: _angular_core.WritableSignal<string | null>;
3157
+ protected adding: _angular_core.WritableSignal<boolean>;
3158
+ protected name: _angular_core.WritableSignal<string>;
3159
+ protected nameError: _angular_core.WritableSignal<string | null>;
3160
+ protected password: _angular_core.WritableSignal<string>;
3161
+ protected passwordError: _angular_core.WritableSignal<string | null>;
3162
+ protected notice: _angular_core.WritableSignal<string>;
3163
+ protected noticeVariant: _angular_core.WritableSignal<"info" | "error">;
3164
+ protected busy: _angular_core.WritableSignal<boolean>;
3165
+ protected promptOpen: _angular_core.WritableSignal<boolean>;
3166
+ private ceremony;
3167
+ protected deleting: _angular_core.WritableSignal<Passkey | null>;
3168
+ protected deletePassword: _angular_core.WritableSignal<string>;
3169
+ protected deletePasswordError: _angular_core.WritableSignal<string | null>;
3170
+ protected deleteNotice: _angular_core.WritableSignal<string>;
3171
+ protected confirmingDelete: _angular_core.WritableSignal<boolean>;
3172
+ protected deleteBusy: _angular_core.WritableSignal<boolean>;
3173
+ protected count: _angular_core.Signal<number | null>;
3174
+ protected appBusy: _angular_core.Signal<boolean>;
3175
+ protected lastFactor: _angular_core.Signal<boolean>;
3176
+ protected deleteMessage: _angular_core.Signal<string>;
3177
+ constructor();
3178
+ protected load(): void;
3179
+ protected openAdd(): void;
3180
+ protected cancelAdd(): void;
3181
+ protected setName(value: string): void;
3182
+ protected setPassword(value: string): void;
3183
+ protected submitAdd(): void;
3184
+ private addFailed;
3185
+ private fail;
3186
+ private clearNotice;
3187
+ private resetAdd;
3188
+ protected openDelete(passkey: Passkey): void;
3189
+ protected cancelDelete(): void;
3190
+ protected setDeletePassword(value: string): void;
3191
+ protected submitDelete(): void;
3192
+ protected closeDeleteDialog(): void;
3193
+ protected delete(): void;
3194
+ private deleteFailed;
3195
+ private closeDelete;
3196
+ private resetDelete;
3197
+ private cancelAddQuietly;
3198
+ private focus;
3199
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PasskeySettings, never>;
3200
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PasskeySettings, "gbt-passkey-settings", never, { "labels": { "alias": "labels"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; }, { "sessionRevoked": "sessionRevoked"; }, never, never, true, never>;
3201
+ }
3202
+
3203
+ export { ACTIVATION_TOKEN_SHAPE, AUTH_LABELS, AUTH_PORT, AUTH_PORT_ERROR_BODIES, Accordion, AccordionItem, Alert, AppShell, AppShellNavGroup, AuthActivate, AuthFooter, AuthFooterLink, AuthLogin, AuthPanel, AuthRegister, Autocomplete, Avatar, AvatarGroup, BackupCodes, Badge, BarChart, BarSeries, Breadcrumb, Button, CHART_CONTEXT, COPY_FIELD_WRAP_AT, Card, CardHeader, CardLink, ChartAxis, ChartEmpty, ChartFrame, ChartLegend, ChartTable, ChartTooltip, Checkbox, CheckboxGroup, ClipboardFeedback, ConfirmDangerModal, CopyButton, CopyField, DEFAULT_ACTIVATE_LABELS, DEFAULT_BACKUP_CODES_LABELS, DEFAULT_LOGIN_LABELS, DEFAULT_MFA_ENROLLMENT_LABELS, DEFAULT_MFA_SETTINGS_LABELS, DEFAULT_PASSKEY_SETTINGS_LABELS, DEFAULT_REGISTER_LABELS, DEFAULT_TOTP_QR_LABELS, DatePicker, DateRangePicker, DescriptionList, DimensionCard, Disclosure, Divider, Drawer, EmptyState, FileUpload, FunnelChart, GABARIT_VERSION, GaugeBar, GbtBytesPipe, GbtDateTimePipe, GbtInput, GbtRelativeTimePipe, GbtToastService, Icon, IconMarker, IconRegistry, JobGraph, JobStatus, LineChart, LineSeries, ListCard, ListRow, ListToolbar, MFA_PORT, MIN_PASSWORD_LENGTH, Menu, MenuItem, MenuTrigger, MfaEnrollment, MfaSettings, MfaSettingsState, Modal, NavTab, NavTabs, NotificationDot, PASSKEY_NAME_MAX, PageHeader, PageLayout, Pagination, Panel, PasskeySettings, PieChart, Popover, RadioGroup, SaveStatus, SearchBar, SecretReveal, SegmentedControl, Select, Skeleton, SkeletonList, Slider, Sparkline, Spinner, StatGrid, StatTile, StatTileLink, Stepper, Switch, TOTP_QR_RENDERER, Tab, Table, Tabs, Tag, TagInput, Textarea, TimelineChart, TimelineSeries, Toaster, Tooltip, TotpQr, Tree, USERNAME_PATTERN, UserChip, accountName, activationToken, arcPath, areaPath, bandScale, base64UrlToBuffer, bufferToBase64Url, classifyActivateFailure, classifyMfaFailure, classifyPasskeyError, classifyPasswordFailure, classifyRegisterFailure, computeInitials, copyToClipboard, createListToolbarState, createPasskeyCredential, emailProblem, formatBytes, formatCompact, formatDateTime, formatDuration, formatNumber, formatPercent, formatRelativeTime, getPasskeyAssertion, isAuthPortError, isTooManyPasskeys, linePath, linearScale, nearestIndex, niceTicks, niceXDomain, niceYDomain, passkeyNameProblem, passkeysSupported, passwordProblem, portErrorMessage, provideAuthLabels, selectContents, timeScale, timeTicks, usernameProblem };
3204
+ export type { AccordionMode, ActivateFailure, ActivateLabels, AlertAppearance, AlertIconAlign, AlertLive, AlertSize, AlertVariant, Arc, AuthConfig, AuthLabels, AuthPort, AuthPortError, AutocompleteSearchFn, AvatarGroupItem, AvatarSize, AxisSpec, BackupCodesLabels, BackupCodesResult, BadgeAppearance, BadgeSize, BadgeVariant, BandScale, ButtonHaspopup, ButtonSize, ButtonVariant, CalendarDay, CardTone, CardVariant, ChartBox, ChartInterval, ChartMargin, ChartPoint, ChartReader, ChartSeries, CheckboxGroupOption, CheckboxGroupSection, ConfirmDangerModalTone, CopyButtonFeedback, CopyOutcome, CopyStatus, CopyValue, DateInput, DateRangeValue, DescriptionListEntry, DescriptionListLayout, DescriptionListResponsive, DescriptionListValueAlign, DimensionRow, DisclosureAppearance, DisclosureHeadingLevel, DividerOrientation, DrawerEdge, EmailProblem, EmptyStateHeadingLevel, EmptyStateIllustration, EmptyStateSize, EmptyStateTone, EnrolledFactor, FlatTreeNode, FormatBytesOptions, FormatDurationOptions, FormatRelativeTimeOptions, FunnelStep, GbtBytesPipeOptions, GbtDateTimePipeOptions, GbtPipeLocale, GbtRelativeTimePipeOptions, GbtToastKind, GbtToastOptions, IconMarkerAppearance, IconMarkerShape, IconMarkerSize, IconMarkerTone, JobGraphJob, JobGraphStage, JobGraphStatus, JobStatusValue, LegendEntry, LinearAxisSpec, ListCardState, ListRowTone, ListToolbarAccessors, ListToolbarDirection, ListToolbarSortOption, ListToolbarSortValue, ListToolbarState, ListToolbarStateConfig, LoginLabels, LoginResponse, MenuItemVariant, MfaEnrollmentLabels, MfaFailure, MfaFormOwner, MfaPort, MfaProof, MfaSettingsLabels, MfaSetupResult, MfaStatus, NavTabsOrientation, NotificationDotVariant, PageHeaderLevel, PageLayoutAsidePosition, PageLayoutAsideWidth, PageLayoutWidth, PanelHeadingLevel, Passkey, PasskeyChallenge, PasskeyFailure, PasskeyNameProblem, PasskeySettingsLabels, PasswordGatedFailure, PasswordProblem, PieSlice, Point, PointValue, PopoverAlign, RadioOption, RegisterFailure, RegisterLabels, SaveStatusState, Scale, SearchBarCollapsible, SearchResultCategory, SegmentedControlOption, SegmentedControlSize, SelectOption, SkeletonListLeading, SkeletonVariant, SpinnerSize, StatGridColumns, StatTileTrend, StatTileTrendTone, StepperOrientation, StepperStatus, StepperStep, TableColumn, TimeTicks, TimeUnit, ToastItem, ToastVariant, ToasterPosition, TooltipPoint, TooltipPosition, TooltipRow, TotpEnrollment, TotpQrLabels, TotpQrRenderOptions, TotpQrRenderer, TreeNode, UserChipSize, UsernameProblem, WeekStartsOn };