@masmarino/gabarit 0.3.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@masmarino/gabarit",
3
- "version": "0.3.0",
3
+ "version": "0.5.0",
4
4
  "description": "Angular design system — UI components and dataviz for self-hosted applications.",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/Masmarino/Gabarit",
@@ -36,6 +36,9 @@
36
36
  --color-error-bg: var(--red-100);
37
37
  --color-error-bg-text: var(--red-800);
38
38
 
39
+ --color-info-bg: #dbeafe;
40
+ --color-info-bg-text: #1e40af;
41
+
39
42
  --bg-inverse: var(--grey-900);
40
43
 
41
44
  --color-success-vivid-base: var(--green-500);
@@ -100,6 +103,9 @@
100
103
  --color-error-bg: var(--red-900);
101
104
  --color-error-bg-text: var(--red-100);
102
105
 
106
+ --color-info-bg: #1e3a8a;
107
+ --color-info-bg-text: #dbeafe;
108
+
103
109
  --chart-series-1-base: #e69f00;
104
110
  --chart-series-2-base: #009e73;
105
111
  --chart-series-3-base: #0072b2;
@@ -86,14 +86,26 @@
86
86
  }
87
87
 
88
88
  .gbt-app-shell__link {
89
+ position: relative;
89
90
  display: flex;
90
91
  align-items: center;
91
92
  gap: 0.625rem;
93
+ min-width: 0;
92
94
  padding: 0.5rem 0.75rem;
93
95
  border-radius: var(--site-border-radius-sm);
94
96
  color: var(--text-secondary);
95
97
  font-size: 0.875rem;
96
98
  text-decoration: none;
99
+ overflow: hidden;
100
+ white-space: nowrap;
101
+ text-overflow: ellipsis;
102
+
103
+ > span {
104
+ min-width: 0;
105
+ overflow: hidden;
106
+ white-space: nowrap;
107
+ text-overflow: ellipsis;
108
+ }
97
109
 
98
110
  &:hover {
99
111
  background: var(--bg-hover);
@@ -111,7 +123,46 @@
111
123
  }
112
124
  }
113
125
 
126
+ @media (min-width: 769px) {
127
+ .gbt-app-shell__nav--collapsed {
128
+ .gbt-app-shell__link {
129
+ > span {
130
+ display: inline-block;
131
+ width: 0;
132
+ overflow: hidden;
133
+ white-space: nowrap;
134
+ opacity: 0;
135
+ transition: opacity 0.15s ease, width 0.2s ease;
136
+ }
137
+
138
+ &:hover > span,
139
+ &:focus-visible > span {
140
+ position: absolute;
141
+ left: 100%;
142
+ top: 50%;
143
+ transform: translateY(-50%);
144
+ width: auto;
145
+ overflow: visible;
146
+ opacity: 1;
147
+ margin-left: 0.625rem;
148
+ padding: 0.375rem 0.625rem;
149
+ background: var(--bg-principal);
150
+ border: 1px solid var(--border-color);
151
+ border-radius: var(--site-border-radius-sm);
152
+ box-shadow: var(--site-shadow-md);
153
+ }
154
+
155
+ @media (prefers-reduced-motion: reduce) {
156
+ > span {
157
+ transition: none;
158
+ }
159
+ }
160
+ }
161
+ }
162
+ }
163
+
114
164
  .gbt-container {
165
+ box-sizing: border-box;
115
166
  width: 100%;
116
167
  max-width: 1200px;
117
168
  margin-inline: auto;
@@ -119,6 +170,7 @@
119
170
  }
120
171
 
121
172
  .gbt-menu__item {
173
+ box-sizing: border-box;
122
174
  display: flex;
123
175
  align-items: center;
124
176
  gap: 0.5rem;
@@ -143,3 +195,39 @@
143
195
  outline-offset: -2px;
144
196
  }
145
197
  }
198
+
199
+ .gbt-breadcrumb__list {
200
+ display: flex;
201
+ align-items: center;
202
+ flex-wrap: wrap;
203
+ gap: 0.375rem;
204
+ margin: 0;
205
+ padding: 0;
206
+ list-style: none;
207
+ font-size: 0.875rem;
208
+ }
209
+
210
+ .gbt-breadcrumb__list > li {
211
+ display: flex;
212
+ align-items: center;
213
+ gap: 0.375rem;
214
+ }
215
+
216
+ .gbt-breadcrumb__list > li:not(:last-child)::after {
217
+ content: '/';
218
+ color: var(--text-secondary);
219
+ }
220
+
221
+ .gbt-breadcrumb__item {
222
+ color: var(--text-secondary);
223
+ text-decoration: none;
224
+
225
+ &:hover {
226
+ text-decoration: underline;
227
+ }
228
+ }
229
+
230
+ .gbt-breadcrumb__current {
231
+ color: var(--text-primary);
232
+ font-weight: 600;
233
+ }
@@ -1,9 +1,10 @@
1
1
  import * as _angular_platform_browser from '@angular/platform-browser';
2
2
  import * as _angular_core from '@angular/core';
3
3
  import { OnDestroy, TemplateRef, ElementRef, InjectionToken, Signal } from '@angular/core';
4
- import { ControlValueAccessor } from '@angular/forms';
4
+ import { ControlValueAccessor, FormControl } from '@angular/forms';
5
+ import { Observable } from 'rxjs';
5
6
 
6
- declare const GABARIT_VERSION = "0.3.0";
7
+ declare const GABARIT_VERSION = "0.5.0";
7
8
 
8
9
  declare class Icon {
9
10
  private readonly sanitizer;
@@ -28,6 +29,11 @@ declare class AppShell {
28
29
  skipLabel: _angular_core.InputSignal<string>;
29
30
  openMenuLabel: _angular_core.InputSignal<string>;
30
31
  closeMenuLabel: _angular_core.InputSignal<string>;
32
+ collapseLabel: _angular_core.InputSignal<string>;
33
+ expandLabel: _angular_core.InputSignal<string>;
34
+ collapsed: _angular_core.InputSignal<boolean>;
35
+ collapsible: _angular_core.InputSignal<boolean>;
36
+ collapsedChange: _angular_core.OutputEmitterRef<boolean>;
31
37
  private readonly id;
32
38
  protected readonly mainId: string;
33
39
  protected readonly navId: string;
@@ -37,10 +43,11 @@ declare class AppShell {
37
43
  private readonly nav;
38
44
  protected toggleMenu(): void;
39
45
  protected close(): void;
46
+ protected toggleCollapsed(): void;
40
47
  protected onEscape(): void;
41
48
  protected onNavKeydown(event: KeyboardEvent): void;
42
49
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AppShell, never>;
43
- 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; }; }, {}, never, ["[shell-brand]", "[shell-nav]", "[shell-header]", "*"], true, never>;
50
+ 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; }; "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>;
44
51
  }
45
52
 
46
53
  declare class Button {
@@ -59,11 +66,101 @@ declare class Button {
59
66
  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>;
60
67
  }
61
68
 
69
+ type BadgeVariant = 'neutral' | 'success' | 'warning' | 'error' | 'info';
70
+ declare class Badge {
71
+ variant: _angular_core.InputSignal<BadgeVariant>;
72
+ icon: _angular_core.InputSignal<string | undefined>;
73
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Badge, never>;
74
+ 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>;
75
+ }
76
+
77
+ type EmptyStateIllustration = 'folder' | 'star' | 'checklist' | 'merge' | 'pipeline' | 'tag' | 'book';
78
+ declare class EmptyState {
79
+ illustration: _angular_core.InputSignal<EmptyStateIllustration>;
80
+ heading: _angular_core.InputSignal<string>;
81
+ message: _angular_core.InputSignal<string>;
82
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<EmptyState, never>;
83
+ 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>;
84
+ }
85
+
86
+ interface SelectOption<T = string> {
87
+ value: T;
88
+ label: string;
89
+ icon?: string;
90
+ }
91
+ declare class Select<T = string> implements ControlValueAccessor {
92
+ private readonly elementRef;
93
+ id: _angular_core.InputSignal<string>;
94
+ label: _angular_core.InputSignal<string>;
95
+ size: _angular_core.InputSignal<"md" | "sm">;
96
+ options: _angular_core.InputSignal<SelectOption<T>[]>;
97
+ multiple: _angular_core.InputSignalWithTransform<boolean, unknown>;
98
+ placeholder: _angular_core.InputSignal<string>;
99
+ disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
100
+ required: _angular_core.InputSignalWithTransform<boolean, unknown>;
101
+ errorMessage: _angular_core.InputSignal<string | null>;
102
+ selectedCountLabel: _angular_core.InputSignal<(count: number) => string>;
103
+ protected readonly open: _angular_core.WritableSignal<boolean>;
104
+ protected readonly activeIndex: _angular_core.WritableSignal<number>;
105
+ protected readonly selected: _angular_core.WritableSignal<T[]>;
106
+ protected readonly panelStyle: _angular_core.WritableSignal<{
107
+ top: string;
108
+ left: string;
109
+ width: string;
110
+ } | null>;
111
+ private readonly formDisabled;
112
+ protected readonly labelId: _angular_core.Signal<string>;
113
+ protected readonly isDisabled: _angular_core.Signal<boolean>;
114
+ private onChange;
115
+ private onTouched;
116
+ setDisabledState(isDisabled: boolean): void;
117
+ writeValue(value: T | T[] | null): void;
118
+ registerOnChange(fn: (value: T | T[] | null) => void): void;
119
+ registerOnTouched(fn: () => void): void;
120
+ protected readonly selectedOptions: _angular_core.Signal<SelectOption<T>[]>;
121
+ protected readonly triggerLabel: _angular_core.Signal<string>;
122
+ protected readonly triggerIcon: _angular_core.Signal<string | undefined>;
123
+ protected readonly activeOptionId: _angular_core.Signal<string | null>;
124
+ protected isSelected(value: T): boolean;
125
+ protected toggleOpen(): void;
126
+ protected updatePanelPosition(): void;
127
+ protected selectOption(value: T): void;
128
+ protected handleClickOutside(event: MouseEvent): void;
129
+ protected onKeydown(event: KeyboardEvent): void;
130
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Select<any>, never>;
131
+ 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; }; "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; }; }, {}, never, never, true, never>;
132
+ }
133
+
134
+ interface ListToolbarSortOption<T extends string = string> {
135
+ value: T;
136
+ label: string;
137
+ }
138
+ declare class ListToolbar<T extends string = string> {
139
+ searchValue: _angular_core.InputSignal<string>;
140
+ searchLabel: _angular_core.InputSignal<string>;
141
+ searchPlaceholder: _angular_core.InputSignal<string>;
142
+ sortOptions: _angular_core.InputSignal<ListToolbarSortOption<T>[]>;
143
+ sortValue: _angular_core.InputSignal<T>;
144
+ sortDirection: _angular_core.InputSignal<"desc" | "asc">;
145
+ sortLabel: _angular_core.InputSignal<string>;
146
+ directionLabel: _angular_core.InputSignal<string>;
147
+ searchValueChange: _angular_core.OutputEmitterRef<string>;
148
+ sortValueChange: _angular_core.OutputEmitterRef<T>;
149
+ sortDirectionChange: _angular_core.OutputEmitterRef<"desc" | "asc">;
150
+ protected readonly searchControl: FormControl<string>;
151
+ protected readonly sortControl: FormControl<T | null>;
152
+ constructor();
153
+ protected asSelectOptions(options: ListToolbarSortOption<T>[]): SelectOption<T>[];
154
+ protected toggleDirection(): void;
155
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ListToolbar<any>, never>;
156
+ 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>;
157
+ }
158
+
62
159
  declare class Card {
63
160
  hoverable: _angular_core.InputSignalWithTransform<boolean, unknown>;
64
161
  heading: _angular_core.InputSignal<string>;
65
162
  icon: _angular_core.InputSignal<string>;
66
- headingLevel: _angular_core.InputSignal<2 | 1 | 3 | 4 | 5 | 6>;
163
+ headingLevel: _angular_core.InputSignal<2 | 1 | 6 | 3 | 4 | 5>;
67
164
  protected readonly cardClass: _angular_core.Signal<string>;
68
165
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<Card, never>;
69
166
  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>;
@@ -117,57 +214,10 @@ declare class Checkbox implements ControlValueAccessor {
117
214
  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>;
118
215
  }
119
216
 
120
- interface SelectOption<T = string> {
121
- value: T;
122
- label: string;
123
- icon?: string;
124
- }
125
- declare class Select<T = string> implements ControlValueAccessor {
126
- private readonly elementRef;
127
- id: _angular_core.InputSignal<string>;
128
- label: _angular_core.InputSignal<string>;
129
- options: _angular_core.InputSignal<SelectOption<T>[]>;
130
- multiple: _angular_core.InputSignalWithTransform<boolean, unknown>;
131
- placeholder: _angular_core.InputSignal<string>;
132
- disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
133
- required: _angular_core.InputSignalWithTransform<boolean, unknown>;
134
- errorMessage: _angular_core.InputSignal<string | null>;
135
- selectedCountLabel: _angular_core.InputSignal<(count: number) => string>;
136
- protected readonly open: _angular_core.WritableSignal<boolean>;
137
- protected readonly activeIndex: _angular_core.WritableSignal<number>;
138
- protected readonly selected: _angular_core.WritableSignal<T[]>;
139
- protected readonly panelStyle: _angular_core.WritableSignal<{
140
- top: string;
141
- left: string;
142
- width: string;
143
- } | null>;
144
- private readonly formDisabled;
145
- protected readonly labelId: _angular_core.Signal<string>;
146
- protected readonly isDisabled: _angular_core.Signal<boolean>;
147
- private onChange;
148
- private onTouched;
149
- setDisabledState(isDisabled: boolean): void;
150
- writeValue(value: T | T[] | null): void;
151
- registerOnChange(fn: (value: T | T[] | null) => void): void;
152
- registerOnTouched(fn: () => void): void;
153
- protected readonly selectedOptions: _angular_core.Signal<SelectOption<T>[]>;
154
- protected readonly triggerLabel: _angular_core.Signal<string>;
155
- protected readonly triggerIcon: _angular_core.Signal<string | undefined>;
156
- protected readonly activeOptionId: _angular_core.Signal<string | null>;
157
- protected isSelected(value: T): boolean;
158
- protected toggleOpen(): void;
159
- protected updatePanelPosition(): void;
160
- protected selectOption(value: T): void;
161
- protected handleClickOutside(event: MouseEvent): void;
162
- protected onKeydown(event: KeyboardEvent): void;
163
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<Select<any>, never>;
164
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<Select<any>, "gbt-select", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": true; "isSignal": true; }; "multiple": { "alias": "multiple"; "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; }; }, {}, never, never, true, never>;
165
- }
166
-
167
217
  declare class Modal implements OnDestroy {
168
218
  isOpen: _angular_core.InputSignal<boolean>;
169
219
  heading: _angular_core.InputSignal<string>;
170
- headingLevel: _angular_core.InputSignal<2 | 1 | 3 | 4 | 5 | 6>;
220
+ headingLevel: _angular_core.InputSignal<2 | 1 | 6 | 3 | 4 | 5>;
171
221
  closeLabel: _angular_core.InputSignal<string>;
172
222
  closed: _angular_core.OutputEmitterRef<void>;
173
223
  private readonly dialog;
@@ -282,12 +332,12 @@ declare class Tabs {
282
332
  id: _angular_core.InputSignal<string>;
283
333
  protected readonly tabs: _angular_core.Signal<readonly Tab[]>;
284
334
  private readonly triggers;
285
- protected readonly activeIndex: _angular_core.WritableSignal<number>;
335
+ activeIndex: _angular_core.ModelSignal<number>;
286
336
  constructor();
287
337
  protected select(index: number): void;
288
338
  protected onKeydown(event: KeyboardEvent, index: number): void;
289
339
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<Tabs, never>;
290
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<Tabs, "gbt-tabs", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; }, {}, ["tabs"], ["*"], true, never>;
340
+ 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>;
291
341
  }
292
342
 
293
343
  interface Scale<T> {
@@ -372,7 +422,7 @@ declare class ChartFrame {
372
422
  private readonly context;
373
423
  label: _angular_core.InputSignal<string>;
374
424
  heading: _angular_core.InputSignal<string>;
375
- headingLevel: _angular_core.InputSignal<2 | 1 | 3 | 4 | 5 | 6>;
425
+ headingLevel: _angular_core.InputSignal<2 | 1 | 6 | 3 | 4 | 5>;
376
426
  headline: _angular_core.InputSignal<string>;
377
427
  trend: _angular_core.InputSignal<string>;
378
428
  x: _angular_core.InputSignal<AxisSpec>;
@@ -509,7 +559,7 @@ declare class LineChart<X extends number | Date> {
509
559
  height: number;
510
560
  } | null>;
511
561
  heading: _angular_core.InputSignal<string>;
512
- headingLevel: _angular_core.InputSignal<2 | 1 | 3 | 4 | 5 | 6>;
562
+ headingLevel: _angular_core.InputSignal<2 | 1 | 6 | 3 | 4 | 5>;
513
563
  headline: _angular_core.InputSignal<string>;
514
564
  trend: _angular_core.InputSignal<string>;
515
565
  protected readonly activeIndex: _angular_core.WritableSignal<number | null>;
@@ -565,7 +615,7 @@ declare class BarChart {
565
615
  height: number;
566
616
  } | null>;
567
617
  heading: _angular_core.InputSignal<string>;
568
- headingLevel: _angular_core.InputSignal<2 | 1 | 3 | 4 | 5 | 6>;
618
+ headingLevel: _angular_core.InputSignal<2 | 1 | 6 | 3 | 4 | 5>;
569
619
  headline: _angular_core.InputSignal<string>;
570
620
  trend: _angular_core.InputSignal<string>;
571
621
  protected readonly hasData: _angular_core.Signal<boolean>;
@@ -612,7 +662,7 @@ declare class TimelineChart {
612
662
  height: number;
613
663
  } | null>;
614
664
  heading: _angular_core.InputSignal<string>;
615
- headingLevel: _angular_core.InputSignal<2 | 1 | 3 | 4 | 5 | 6>;
665
+ headingLevel: _angular_core.InputSignal<2 | 1 | 6 | 3 | 4 | 5>;
616
666
  headline: _angular_core.InputSignal<string>;
617
667
  trend: _angular_core.InputSignal<string>;
618
668
  protected readonly hasData: _angular_core.Signal<boolean>;
@@ -765,6 +815,8 @@ declare class Menu {
765
815
  private readonly injector;
766
816
  label: _angular_core.InputSignal<string>;
767
817
  align: _angular_core.InputSignal<"start" | "end">;
818
+ triggerIcon: _angular_core.InputSignal<string | null>;
819
+ opened: _angular_core.OutputEmitterRef<void>;
768
820
  protected readonly open: _angular_core.WritableSignal<boolean>;
769
821
  protected readonly position: _angular_core.WritableSignal<PopupPosition | null>;
770
822
  private readonly trigger;
@@ -781,7 +833,65 @@ declare class Menu {
781
833
  private focus;
782
834
  private focusAfterRender;
783
835
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<Menu, never>;
784
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<Menu, "gbt-menu", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
836
+ 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>;
837
+ }
838
+
839
+ declare const ELLIPSIS: "\u2026";
840
+ type PaginationItem = number | typeof ELLIPSIS;
841
+ declare class Pagination {
842
+ page: _angular_core.InputSignal<number>;
843
+ pageSize: _angular_core.InputSignal<number>;
844
+ totalItems: _angular_core.InputSignal<number>;
845
+ siblingCount: _angular_core.InputSignal<number>;
846
+ disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
847
+ ariaLabel: _angular_core.InputSignal<string>;
848
+ previousLabel: _angular_core.InputSignal<string>;
849
+ nextLabel: _angular_core.InputSignal<string>;
850
+ pageLabel: _angular_core.InputSignal<(page: number) => string>;
851
+ pageSizeOptions: _angular_core.InputSignal<number[]>;
852
+ pageSizeLabel: _angular_core.InputSignal<(size: number) => string>;
853
+ pageSizeSelectLabel: _angular_core.InputSignal<string>;
854
+ showItemsSummary: _angular_core.InputSignalWithTransform<boolean, unknown>;
855
+ itemsSummaryLabel: _angular_core.InputSignal<(shown: number, total: number) => string>;
856
+ pageChange: _angular_core.OutputEmitterRef<number>;
857
+ pageSizeChange: _angular_core.OutputEmitterRef<number>;
858
+ protected readonly ELLIPSIS: "…";
859
+ protected readonly pageCount: _angular_core.Signal<number>;
860
+ protected readonly items: _angular_core.Signal<PaginationItem[]>;
861
+ protected readonly itemsShown: _angular_core.Signal<number>;
862
+ protected readonly itemsSummary: _angular_core.Signal<string>;
863
+ protected readonly pageSizeSelectOptions: _angular_core.Signal<SelectOption<number>[]>;
864
+ protected readonly pageSizeControl: FormControl<number>;
865
+ constructor();
866
+ protected goTo(page: number): void;
867
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Pagination, never>;
868
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Pagination, "gbt-pagination", never, { "page": { "alias": "page"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "totalItems": { "alias": "totalItems"; "required": true; "isSignal": true; }; "siblingCount": { "alias": "siblingCount"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "previousLabel": { "alias": "previousLabel"; "required": false; "isSignal": true; }; "nextLabel": { "alias": "nextLabel"; "required": false; "isSignal": true; }; "pageLabel": { "alias": "pageLabel"; "required": false; "isSignal": true; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; "isSignal": true; }; "pageSizeLabel": { "alias": "pageSizeLabel"; "required": false; "isSignal": true; }; "pageSizeSelectLabel": { "alias": "pageSizeSelectLabel"; "required": false; "isSignal": true; }; "showItemsSummary": { "alias": "showItemsSummary"; "required": false; "isSignal": true; }; "itemsSummaryLabel": { "alias": "itemsSummaryLabel"; "required": false; "isSignal": true; }; }, { "pageChange": "pageChange"; "pageSizeChange": "pageSizeChange"; }, never, never, true, never>;
869
+ }
870
+
871
+ declare class Breadcrumb {
872
+ ariaLabel: _angular_core.InputSignal<string>;
873
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Breadcrumb, never>;
874
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Breadcrumb, "gbt-breadcrumb", never, { "ariaLabel": { "alias": "ariaLabel"; "required": true; "isSignal": true; }; }, {}, never, ["[breadcrumb-ancestor]", "*"], true, never>;
875
+ }
876
+
877
+ declare class ConfirmDangerModal {
878
+ isOpen: _angular_core.InputSignal<boolean>;
879
+ heading: _angular_core.InputSignal<string>;
880
+ message: _angular_core.InputSignal<string>;
881
+ confirmText: _angular_core.InputSignal<string>;
882
+ confirmInputLabel: _angular_core.InputSignal<string>;
883
+ confirmLabel: _angular_core.InputSignal<string>;
884
+ cancelLabel: _angular_core.InputSignal<string>;
885
+ closeLabel: _angular_core.InputSignal<string>;
886
+ confirmed: _angular_core.OutputEmitterRef<void>;
887
+ closed: _angular_core.OutputEmitterRef<void>;
888
+ protected readonly typed: _angular_core.WritableSignal<string>;
889
+ protected readonly canConfirm: _angular_core.Signal<boolean>;
890
+ constructor();
891
+ protected confirm(): void;
892
+ protected cancel(): void;
893
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ConfirmDangerModal, never>;
894
+ 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>;
785
895
  }
786
896
 
787
897
  type ToastVariant = 'success' | 'error' | 'warning' | 'info';
@@ -901,5 +1011,62 @@ declare class Textarea implements ControlValueAccessor {
901
1011
  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>;
902
1012
  }
903
1013
 
904
- export { AppShell, BarChart, BarSeries, Button, CHART_CONTEXT, Card, ChartAxis, ChartEmpty, ChartFrame, ChartLegend, ChartTable, ChartTooltip, Checkbox, DimensionCard, FunnelChart, GABARIT_VERSION, GaugeBar, GbtInput, Icon, IconRegistry, LineChart, LineSeries, Menu, Modal, RadioGroup, SearchBar, Select, Sparkline, Switch, Tab, Table, Tabs, Textarea, TimelineChart, TimelineSeries, Toaster, Tooltip, areaPath, bandScale, formatCompact, formatDuration, formatNumber, formatPercent, linePath, linearScale, nearestIndex, niceTicks, niceXDomain, niceYDomain, timeScale, timeTicks };
905
- export type { AxisSpec, BandScale, ChartBox, ChartInterval, ChartMargin, ChartPoint, ChartReader, ChartSeries, DimensionRow, FunnelStep, LegendEntry, LinearAxisSpec, Point, PointValue, RadioOption, Scale, SearchResultCategory, SelectOption, TableColumn, TimeTicks, TimeUnit, ToastItem, ToastVariant, ToasterPosition, TooltipPoint, TooltipPosition, TooltipRow };
1014
+ type AutocompleteSearchFn<T> = (query: string) => Observable<T[]> | Promise<T[]>;
1015
+ declare class Autocomplete<T = unknown> implements ControlValueAccessor, OnDestroy {
1016
+ private readonly elementRef;
1017
+ id: _angular_core.InputSignal<string>;
1018
+ label: _angular_core.InputSignal<string>;
1019
+ placeholder: _angular_core.InputSignal<string>;
1020
+ disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
1021
+ required: _angular_core.InputSignalWithTransform<boolean, unknown>;
1022
+ errorMessage: _angular_core.InputSignal<string | null>;
1023
+ search: _angular_core.InputSignal<AutocompleteSearchFn<T>>;
1024
+ displayFn: _angular_core.InputSignal<(item: T) => string>;
1025
+ itemTemplate: _angular_core.InputSignal<TemplateRef<unknown> | undefined>;
1026
+ debounceMs: _angular_core.InputSignal<number>;
1027
+ minLength: _angular_core.InputSignal<number>;
1028
+ loadingMessage: _angular_core.InputSignal<string>;
1029
+ noResultsMessage: _angular_core.InputSignal<string>;
1030
+ searchErrorMessage: _angular_core.InputSignal<string>;
1031
+ resultsAnnouncement: _angular_core.InputSignal<(count: number) => string>;
1032
+ itemSelected: _angular_core.OutputEmitterRef<T>;
1033
+ protected readonly query: _angular_core.WritableSignal<string>;
1034
+ protected readonly open: _angular_core.WritableSignal<boolean>;
1035
+ protected readonly results: _angular_core.WritableSignal<T[]>;
1036
+ protected readonly loading: _angular_core.WritableSignal<boolean>;
1037
+ protected readonly searchFailed: _angular_core.WritableSignal<boolean>;
1038
+ protected readonly activeIndex: _angular_core.WritableSignal<number>;
1039
+ protected readonly selectedItem: _angular_core.WritableSignal<T | null>;
1040
+ protected readonly panelStyle: _angular_core.WritableSignal<{
1041
+ top: string;
1042
+ left: string;
1043
+ width: string;
1044
+ } | null>;
1045
+ private readonly formDisabled;
1046
+ protected readonly isDisabled: _angular_core.Signal<boolean>;
1047
+ protected readonly hasNoResults: _angular_core.Signal<boolean>;
1048
+ protected readonly activeOptionId: _angular_core.Signal<string | null>;
1049
+ private onChange;
1050
+ private onTouched;
1051
+ private requestSeq;
1052
+ private debounceHandle?;
1053
+ private subscription?;
1054
+ setDisabledState(isDisabled: boolean): void;
1055
+ writeValue(value: T | null): void;
1056
+ registerOnChange(fn: (value: T | null) => void): void;
1057
+ registerOnTouched(fn: () => void): void;
1058
+ protected onInput(event: Event): void;
1059
+ protected onFocus(): void;
1060
+ protected onBlur(): void;
1061
+ private scheduleSearch;
1062
+ private runSearch;
1063
+ protected updatePanelPosition(): void;
1064
+ protected selectOption(item: T): void;
1065
+ protected onKeydown(event: KeyboardEvent): void;
1066
+ ngOnDestroy(): void;
1067
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Autocomplete<any>, never>;
1068
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Autocomplete<any>, "gbt-autocomplete", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "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; }; "search": { "alias": "search"; "required": true; "isSignal": true; }; "displayFn": { "alias": "displayFn"; "required": false; "isSignal": true; }; "itemTemplate": { "alias": "itemTemplate"; "required": false; "isSignal": true; }; "debounceMs": { "alias": "debounceMs"; "required": false; "isSignal": true; }; "minLength": { "alias": "minLength"; "required": false; "isSignal": true; }; "loadingMessage": { "alias": "loadingMessage"; "required": false; "isSignal": true; }; "noResultsMessage": { "alias": "noResultsMessage"; "required": false; "isSignal": true; }; "searchErrorMessage": { "alias": "searchErrorMessage"; "required": false; "isSignal": true; }; "resultsAnnouncement": { "alias": "resultsAnnouncement"; "required": false; "isSignal": true; }; }, { "itemSelected": "itemSelected"; }, never, never, true, never>;
1069
+ }
1070
+
1071
+ export { AppShell, Autocomplete, Badge, BarChart, BarSeries, Breadcrumb, Button, CHART_CONTEXT, Card, ChartAxis, ChartEmpty, ChartFrame, ChartLegend, ChartTable, ChartTooltip, Checkbox, ConfirmDangerModal, DimensionCard, EmptyState, FunnelChart, GABARIT_VERSION, GaugeBar, GbtInput, Icon, IconRegistry, LineChart, LineSeries, ListToolbar, Menu, Modal, Pagination, RadioGroup, SearchBar, Select, Sparkline, Switch, Tab, Table, Tabs, Textarea, TimelineChart, TimelineSeries, Toaster, Tooltip, areaPath, bandScale, formatCompact, formatDuration, formatNumber, formatPercent, linePath, linearScale, nearestIndex, niceTicks, niceXDomain, niceYDomain, timeScale, timeTicks };
1072
+ export type { AutocompleteSearchFn, AxisSpec, BadgeVariant, BandScale, ChartBox, ChartInterval, ChartMargin, ChartPoint, ChartReader, ChartSeries, DimensionRow, EmptyStateIllustration, FunnelStep, LegendEntry, LinearAxisSpec, ListToolbarSortOption, Point, PointValue, RadioOption, Scale, SearchResultCategory, SelectOption, TableColumn, TimeTicks, TimeUnit, ToastItem, ToastVariant, ToasterPosition, TooltipPoint, TooltipPosition, TooltipRow };