@guildofgleks/ui 21.3.1 → 21.4.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,8 +1,8 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { TemplateRef, DoCheck, Signal, ModelSignal, ElementRef, InjectionToken, Type, Injector, OnDestroy, Provider } from '@angular/core';
3
+ import * as _guildofgleks_ui from '@guildofgleks/ui';
3
4
  import { ControlValueAccessor } from '@angular/forms';
4
5
  import * as _angular_platform_browser from '@angular/platform-browser';
5
- import * as _guildofgleks_ui from '@guildofgleks/ui';
6
6
 
7
7
  type GogSize = 'xsm' | 'sm' | 'md' | 'lg' | 'slg';
8
8
  type GogVariant = 'primary' | 'secondary' | 'outline' | 'ghost';
@@ -19,6 +19,11 @@ type GogSkeletonShape = 'text' | 'circle' | 'rect';
19
19
  type GogSkeletonAnimation = 'pulse' | 'wave' | 'none';
20
20
  type GogPaginatorRangeMode = 'window' | 'ellipsis';
21
21
  type GogSliderOrientation = GogOrientation;
22
+ /** A `gog-slider`'s value pair when `range` is on. `start` is always kept ≤ `end`. */
23
+ interface GogSliderRange {
24
+ start: number;
25
+ end: number;
26
+ }
22
27
  type GogScrollAxis = 'vertical' | 'horizontal' | 'both';
23
28
  type GogScrollSize = 'normal' | 'thin';
24
29
  /**
@@ -87,6 +92,21 @@ type GogDateSelectionMode = 'single' | 'range';
87
92
  type GogHourFormat = '12' | '24';
88
93
  /** Matches the native CSS `resize` value space, applied to `gog-textarea`'s field. */
89
94
  type GogTextareaResize = 'vertical' | 'horizontal' | 'both' | 'none';
95
+ /**
96
+ * The `type`s `gog-inputfield` renders as a single-line text-entry field.
97
+ *
98
+ * Deliberately not the whole native list: `checkbox`, `radio`, `range`, `file`, `color`,
99
+ * `submit`, `hidden` and friends are different controls with different markup and different
100
+ * accessibility contracts — the library ships `gog-checkbox`, `gog-radio-group`, `gog-slider`
101
+ * and `gog-button` for those rather than making one component shape-shift.
102
+ */
103
+ type GogInputType = 'text' | 'password' | 'email' | 'number' | 'search' | 'tel' | 'url' | 'date' | 'time' | 'datetime-local';
104
+ /**
105
+ * Mirrors the native `inputmode` attribute — the hint that decides which on-screen keyboard a
106
+ * touch device brings up. Worth setting whenever `type` alone doesn't imply it: a postcode or a
107
+ * card number is `type="text"` (no browser validation wanted) but `inputmode="numeric"`.
108
+ */
109
+ type GogInputMode = 'none' | 'text' | 'decimal' | 'numeric' | 'tel' | 'search' | 'email' | 'url';
90
110
 
91
111
  declare class ButtonComponent {
92
112
  variant: _angular_core.InputSignal<GogVariant>;
@@ -136,6 +156,68 @@ declare class ButtonComponent {
136
156
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<ButtonComponent, "gog-button", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "debounce": { "alias": "debounce"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "gogClick": "gogClick"; }, never, ["*"], true, never>;
137
157
  }
138
158
 
159
+ /**
160
+ * Makes a consumer's own `<a>` or `<button>` look like a `gog-button`.
161
+ *
162
+ * ```html
163
+ * <a gogButton routerLink="/pricing">See pricing</a>
164
+ * <a gogButton variant="ghost" href="https://example.com" target="_blank" rel="noreferrer">Docs</a>
165
+ * <button gogButton variant="outline" size="sm" type="submit">Save</button>
166
+ * ```
167
+ *
168
+ * ## Why this exists next to `gog-button`
169
+ *
170
+ * `gog-button` renders its own `<button>`, so it can never *be* a link — and making it one would
171
+ * mean brokering the router's entire input surface (`routerLink`, `routerLinkActive`,
172
+ * `queryParams`, `fragment`, `state`, …) through a component that would then have to depend on
173
+ * `@angular/router`. This package has four peer dependencies and no router, and a navigation
174
+ * button is not worth a fifth.
175
+ *
176
+ * Inverting it costs nothing: the consumer keeps their own element, so `routerLink`, `href`,
177
+ * `target`, `download`, `type="submit"`, `disabled` and every future directive keep working
178
+ * because they were never taken away. This is the "headless primitive" axis of
179
+ * `api-design.instructions.md` — expose the behaviour, not another input.
180
+ *
181
+ * ## Which to use
182
+ *
183
+ * Use `gog-button` for a button that *does* something in the page — it adds `loading` with a
184
+ * centred spinner, `debounce` click throttling and the `gogClick` output, none of which a bare
185
+ * element can provide. Use `[gogButton]` when the element must be a link, or when you need to
186
+ * keep directives of your own on it.
187
+ *
188
+ * ## Accessibility
189
+ *
190
+ * The element stays yours, so its semantics stay correct by construction: a link is a link and a
191
+ * button is a button. Two things this deliberately does **not** do:
192
+ *
193
+ * - It does not add `disabled` handling to an `<a>`. There is no such thing — a disabled link is
194
+ * just a link. Remove the `href` or render a real `<button>`.
195
+ * - It does not fake a loading state. `gog-button`'s spinner is a projected child; a directive
196
+ * cannot add one without taking over the element's content.
197
+ */
198
+ declare class GogButtonDirective {
199
+ readonly variant: _angular_core.InputSignal<GogVariant>;
200
+ /** Unset, falls back to `GOG_CONFIG.control.size`, then to `'md'` — as on `gog-button`. */
201
+ readonly size: _angular_core.InputSignal<GogSize | undefined>;
202
+ /**
203
+ * Stretches the element to its container's width. A bare attribute is enough:
204
+ * `<a gogButton fullWidth>`.
205
+ */
206
+ readonly fullWidth: _angular_core.InputSignalWithTransform<boolean, unknown>;
207
+ private readonly globalConfig;
208
+ private readonly resolvedSize;
209
+ protected readonly variantClass: _angular_core.Signal<string>;
210
+ /**
211
+ * Unlike `gog-button`, this emits a class for `'md'` too. The component can leave the default
212
+ * size unclassed because its own stylesheet bottoms out at `--gog-btn-md-*`; here the class is
213
+ * also what a consumer reads in devtools to see which size is applied, and a silently absent
214
+ * one reads as "no size resolved".
215
+ */
216
+ protected readonly sizeClass: _angular_core.Signal<string>;
217
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<GogButtonDirective, never>;
218
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<GogButtonDirective, "a[gogButton], button[gogButton]", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
219
+ }
220
+
139
221
  interface GogAccordionItem {
140
222
  id: string | number;
141
223
  title: string;
@@ -200,7 +282,7 @@ declare class AccordionComponent {
200
282
  * Left unset by default since not every accordion instance represents document structure
201
283
  * (e.g. one nested inside a card).
202
284
  */
203
- readonly headingLevel: _angular_core.InputSignal<2 | 3 | 4 | 5 | 6 | undefined>;
285
+ readonly headingLevel: _angular_core.InputSignal<2 | 5 | 3 | 4 | 6 | undefined>;
204
286
  /**
205
287
  * Two-way bindable set of currently open item ids. Exposed as a model so consumers
206
288
  * can drive the accordion externally (e.g. `[(openIds)]="mySet"`) instead of only
@@ -417,8 +499,13 @@ declare abstract class GogDropdownBase<TValue, TOption = GogDropdownOption> impl
417
499
  * `GOG_CONFIG.control.clearable`, then to the control's own default.
418
500
  */
419
501
  readonly clearable: _angular_core.InputSignal<boolean | undefined>;
420
- /** Accessible name for the clear button. */
421
- readonly clearAriaLabel: _angular_core.InputSignal<string>;
502
+ /**
503
+ * Accessible name for the clear button. Unset, falls back to
504
+ * `GOG_CONFIG.labels.clearSelection`, then to `'Clear selection'`.
505
+ */
506
+ readonly clearAriaLabel: _angular_core.InputSignal<string | undefined>;
507
+ /** Instance input → `GOG_CONFIG.labels` → the built-in English default. */
508
+ protected readonly resolvedClearLabel: Signal<string>;
422
509
  /**
423
510
  * Smallest width the trigger may shrink to, as any CSS length. Only meaningful with
424
511
  * `[fullWidth]="false"`, where the trigger otherwise sizes to whatever is currently selected
@@ -540,7 +627,13 @@ declare abstract class GogDropdownBase<TValue, TOption = GogDropdownOption> impl
540
627
  protected readonly panelMaxHeightToken: string;
541
628
  /** Estimated row height fed into the placement math; not a real layout property. */
542
629
  protected readonly optionHeightToken: string;
543
- /** Unique per-instance suffix, so several dropdowns on a page can't collide on DOM ids. */
630
+ /**
631
+ * Unique per-instance suffix, so several dropdowns on a page can't collide on DOM ids.
632
+ *
633
+ * Deliberately a bare number rather than `nextGogControlId()` (which the single-element
634
+ * controls use): each subclass derives *several* ids from this one instance — trigger,
635
+ * listbox, label, error — so what it needs is the instance number, not one finished id.
636
+ */
544
637
  protected readonly uid: number;
545
638
  protected readonly elRef: ElementRef<any>;
546
639
  protected readonly isBrowser: boolean;
@@ -548,7 +641,8 @@ declare abstract class GogDropdownBase<TValue, TOption = GogDropdownOption> impl
548
641
  private readonly appRef;
549
642
  private readonly destroyRef;
550
643
  private readonly ngControl;
551
- private readonly globalConfig;
644
+ /** `protected` so subclasses can resolve their own inputs against the same config object. */
645
+ protected readonly globalConfig: _guildofgleks_ui.GogGlobalConfig;
552
646
  private readonly overlay;
553
647
  /** Set from `(focus)`/`(blur)` on the trigger — see `onFocusIn`/`onFocusOut`. */
554
648
  protected readonly isFocused: _angular_core.WritableSignal<boolean>;
@@ -909,17 +1003,39 @@ declare class GogBadgeDirective {
909
1003
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<GogBadgeDirective, "[gogBadge]", never, { "gogBadge": { "alias": "gogBadge"; "required": false; "isSignal": true; }; "badgePosition": { "alias": "badgePosition"; "required": false; "isSignal": true; }; "badgeVariant": { "alias": "badgeVariant"; "required": false; "isSignal": true; }; "badgeDot": { "alias": "badgeDot"; "required": false; "isSignal": true; }; "badgeMax": { "alias": "badgeMax"; "required": false; "isSignal": true; }; "badgeHidden": { "alias": "badgeHidden"; "required": false; "isSignal": true; }; "badgeAriaLabel": { "alias": "badgeAriaLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
910
1004
  }
911
1005
 
912
- type GogIconName = 'check' | 'close' | 'chevron-up' | 'chevron-down' | 'chevron-left' | 'chevron-right' | 'calendar' | 'clock' | 'sort' | 'sort-up' | 'sort-down' | 'success' | 'error' | 'warning' | 'info' | 'checkbox' | 'checkbox-checked' | 'eye' | 'eye-off' | 'copy';
913
- declare const ICON_DEFS: Record<GogIconName, string>;
1006
+ /**
1007
+ * The glyphs the package ships. Kept as a closed union so they still autocomplete and so
1008
+ * `ICON_DEFS` below stays exhaustive — a `Record` over the open `GogIconName` would collapse
1009
+ * into an index signature and stop catching a missing definition.
1010
+ */
1011
+ type GogBuiltinIconName = 'check' | 'close' | 'chevron-up' | 'chevron-down' | 'chevron-left' | 'chevron-right' | 'calendar' | 'clock' | 'sort' | 'sort-up' | 'sort-down' | 'success' | 'error' | 'warning' | 'info' | 'checkbox' | 'checkbox-checked' | 'eye' | 'eye-off' | 'copy' | 'search' | 'plus' | 'minus' | 'trash' | 'pencil' | 'download' | 'upload' | 'refresh' | 'filter' | 'external-link' | 'menu' | 'more-horizontal' | 'more-vertical' | 'arrow-left' | 'arrow-right' | 'user' | 'settings' | 'lock' | 'mail' | 'star' | 'star-filled';
1012
+ /**
1013
+ * Any icon `gog-icon` can render: one of the built-ins, or a name registered through
1014
+ * `provideGogIcons(...)`. The `(string & {})` half keeps the built-in names in autocomplete
1015
+ * while letting a registered name through — an open union is the point, since the set of icons
1016
+ * an app uses is the app's business, not the library's.
1017
+ */
1018
+ type GogIconName = GogBuiltinIconName | (string & {});
1019
+ declare const ICON_DEFS: Record<GogBuiltinIconName, string>;
914
1020
 
915
1021
  declare class IconComponent {
916
1022
  private readonly sanitizer;
1023
+ /** App-registered icons; overrides a built-in of the same name. See `provideGogIcons`. */
1024
+ private readonly registered;
1025
+ /** A built-in name, or one registered through `provideGogIcons(...)`. */
917
1026
  readonly name: _angular_core.InputSignal<GogIconName>;
918
1027
  readonly template: _angular_core.InputSignal<TemplateRef<unknown> | null>;
919
1028
  readonly title: _angular_core.InputSignal<string>;
920
1029
  readonly ariaHidden: _angular_core.InputSignal<boolean>;
921
1030
  protected readonly ariaLabel: _angular_core.Signal<string | null>;
922
- protected readonly iconSvg: _angular_core.Signal<_angular_platform_browser.SafeHtml>;
1031
+ /**
1032
+ * The markup to render, or `null` when the name resolves to nothing.
1033
+ *
1034
+ * An unknown name renders **nothing** and warns in dev mode — it never throws. An icon is
1035
+ * decoration: taking an app down mid-render over a typo in a glyph name would be a far worse
1036
+ * failure than the missing glyph, and the warning is what gets the typo fixed.
1037
+ */
1038
+ protected readonly iconSvg: _angular_core.Signal<_angular_platform_browser.SafeHtml | null>;
923
1039
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<IconComponent, never>;
924
1040
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<IconComponent, "gog-icon", never, { "name": { "alias": "name"; "required": false; "isSignal": true; }; "template": { "alias": "template"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "ariaHidden": { "alias": "ariaHidden"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
925
1041
  }
@@ -1412,10 +1528,16 @@ declare class CalendarComponent {
1412
1528
  * or "public holidays" without the consumer materialising every date in range first.
1413
1529
  */
1414
1530
  readonly disabledDates: _angular_core.InputSignal<((date: Date) => boolean) | null>;
1415
- /** BCP-47 tag driving the month and weekday names. */
1416
- readonly locale: _angular_core.InputSignal<string>;
1417
- /** 0 = Sunday … 6 = Saturday. Unset, it comes from the locale. */
1418
- readonly firstDayOfWeek: _angular_core.InputSignal<number | null>;
1531
+ /**
1532
+ * BCP-47 tag driving the month and weekday names. Unset, falls back to
1533
+ * `GOG_CONFIG.datepicker.locale`, then to `'en-US'`.
1534
+ */
1535
+ readonly locale: _angular_core.InputSignal<string | undefined>;
1536
+ /**
1537
+ * 0 = Sunday … 6 = Saturday. Unset, falls back to `GOG_CONFIG.datepicker.firstDayOfWeek`,
1538
+ * then to the locale's own first day.
1539
+ */
1540
+ readonly firstDayOfWeek: _angular_core.InputSignal<number | null | undefined>;
1419
1541
  /** Which month to open on when there is no selection yet. */
1420
1542
  readonly defaultMonth: _angular_core.InputSignal<Date | null>;
1421
1543
  /** How many months to show side by side. Two is what makes a range picker usable. */
@@ -1440,15 +1562,40 @@ declare class CalendarComponent {
1440
1562
  */
1441
1563
  readonly showThisMonthButton: _angular_core.InputSignal<boolean>;
1442
1564
  readonly size: _angular_core.InputSignal<GogSize>;
1443
- readonly todayLabel: _angular_core.InputSignal<string>;
1444
- readonly thisMonthLabel: _angular_core.InputSignal<string>;
1445
- readonly previousMonthLabel: _angular_core.InputSignal<string>;
1446
- readonly nextMonthLabel: _angular_core.InputSignal<string>;
1447
- readonly previousYearLabel: _angular_core.InputSignal<string>;
1448
- readonly nextYearLabel: _angular_core.InputSignal<string>;
1565
+ /**
1566
+ * Navigation, shortcut and time-section labels. Each falls back to the matching
1567
+ * `GOG_CONFIG.labels` field when unset, then to the built-in English default — an app
1568
+ * translating the calendar sets them once rather than on every field.
1569
+ */
1570
+ readonly todayLabel: _angular_core.InputSignal<string | undefined>;
1571
+ readonly thisMonthLabel: _angular_core.InputSignal<string | undefined>;
1572
+ readonly previousMonthLabel: _angular_core.InputSignal<string | undefined>;
1573
+ readonly nextMonthLabel: _angular_core.InputSignal<string | undefined>;
1574
+ readonly previousYearLabel: _angular_core.InputSignal<string | undefined>;
1575
+ readonly nextYearLabel: _angular_core.InputSignal<string | undefined>;
1576
+ readonly hoursLabel: _angular_core.InputSignal<string | undefined>;
1577
+ readonly minutesLabel: _angular_core.InputSignal<string | undefined>;
1578
+ readonly secondsLabel: _angular_core.InputSignal<string | undefined>;
1449
1579
  /** Emitted when a selection is *complete* — a day in single mode, both ends of a range. */
1450
1580
  readonly gogDateSelect: _angular_core.OutputEmitterRef<GogDatepickerValue>;
1451
1581
  private readonly elRef;
1582
+ private readonly globalConfig;
1583
+ /**
1584
+ * Every rendered string, resolved instance input → `GOG_CONFIG.labels` → built-in default.
1585
+ * `gog-datepicker` forwards its own `todayLabel`/`thisMonthLabel` as `undefined` when unset
1586
+ * precisely so this resolution happens here, once, rather than being pre-empted upstream.
1587
+ */
1588
+ protected readonly resolvedLabels: _angular_core.Signal<{
1589
+ today: string;
1590
+ thisMonth: string;
1591
+ previousMonth: string;
1592
+ nextMonth: string;
1593
+ previousYear: string;
1594
+ nextYear: string;
1595
+ hours: string;
1596
+ minutes: string;
1597
+ seconds: string;
1598
+ }>;
1452
1599
  /** First of the leftmost visible month. */
1453
1600
  private readonly viewMonth;
1454
1601
  /** The cell the keyboard is on, and the only one carrying `tabindex="0"`. */
@@ -1457,6 +1604,16 @@ declare class CalendarComponent {
1457
1604
  protected readonly hoverDate: _angular_core.WritableSignal<Date | null>;
1458
1605
  /** Whether a focus move should also pull the DOM focus over — only after a keypress. */
1459
1606
  private pendingFocus;
1607
+ /**
1608
+ * Instance input → `GOG_CONFIG.datepicker` → the built-in default.
1609
+ *
1610
+ * `gog-calendar` resolves these itself rather than relying on `gog-datepicker` to pass them
1611
+ * down: it is exported and usable standalone, and `GOG_CONFIG.datepicker` has always been
1612
+ * documented as applying to both. When it *is* rendered by `gog-datepicker`, that component
1613
+ * passes its own already-resolved values, which win here — and resolve to the same thing,
1614
+ * since both read the same config.
1615
+ */
1616
+ protected readonly resolvedLocale: _angular_core.Signal<string>;
1460
1617
  protected readonly resolvedFirstDayOfWeek: _angular_core.Signal<number>;
1461
1618
  protected readonly weekdays: _angular_core.Signal<string[]>;
1462
1619
  private readonly months;
@@ -1482,7 +1639,7 @@ declare class CalendarComponent {
1482
1639
  protected readonly seconds: _angular_core.Signal<number>;
1483
1640
  protected readonly isPm: _angular_core.Signal<boolean>;
1484
1641
  protected readonly maxHour: _angular_core.Signal<12 | 23>;
1485
- protected readonly minHour: _angular_core.Signal<0 | 1>;
1642
+ protected readonly minHour: _angular_core.Signal<1 | 0>;
1486
1643
  constructor();
1487
1644
  /** Steps the view by whole months or years. */
1488
1645
  protected shiftView(months: number): void;
@@ -1521,7 +1678,7 @@ declare class CalendarComponent {
1521
1678
  private applyPendingFocus;
1522
1679
  protected isFocusedDay(date: Date): boolean;
1523
1680
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CalendarComponent, never>;
1524
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<CalendarComponent, "gog-calendar", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "disabledDates": { "alias": "disabledDates"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "firstDayOfWeek": { "alias": "firstDayOfWeek"; "required": false; "isSignal": true; }; "defaultMonth": { "alias": "defaultMonth"; "required": false; "isSignal": true; }; "numberOfMonths": { "alias": "numberOfMonths"; "required": false; "isSignal": true; }; "showTime": { "alias": "showTime"; "required": false; "isSignal": true; }; "hourFormat": { "alias": "hourFormat"; "required": false; "isSignal": true; }; "minuteStep": { "alias": "minuteStep"; "required": false; "isSignal": true; }; "showSeconds": { "alias": "showSeconds"; "required": false; "isSignal": true; }; "showTodayButton": { "alias": "showTodayButton"; "required": false; "isSignal": true; }; "showThisMonthButton": { "alias": "showThisMonthButton"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "todayLabel": { "alias": "todayLabel"; "required": false; "isSignal": true; }; "thisMonthLabel": { "alias": "thisMonthLabel"; "required": false; "isSignal": true; }; "previousMonthLabel": { "alias": "previousMonthLabel"; "required": false; "isSignal": true; }; "nextMonthLabel": { "alias": "nextMonthLabel"; "required": false; "isSignal": true; }; "previousYearLabel": { "alias": "previousYearLabel"; "required": false; "isSignal": true; }; "nextYearLabel": { "alias": "nextYearLabel"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "gogDateSelect": "gogDateSelect"; }, never, never, true, never>;
1681
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CalendarComponent, "gog-calendar", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "disabledDates": { "alias": "disabledDates"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "firstDayOfWeek": { "alias": "firstDayOfWeek"; "required": false; "isSignal": true; }; "defaultMonth": { "alias": "defaultMonth"; "required": false; "isSignal": true; }; "numberOfMonths": { "alias": "numberOfMonths"; "required": false; "isSignal": true; }; "showTime": { "alias": "showTime"; "required": false; "isSignal": true; }; "hourFormat": { "alias": "hourFormat"; "required": false; "isSignal": true; }; "minuteStep": { "alias": "minuteStep"; "required": false; "isSignal": true; }; "showSeconds": { "alias": "showSeconds"; "required": false; "isSignal": true; }; "showTodayButton": { "alias": "showTodayButton"; "required": false; "isSignal": true; }; "showThisMonthButton": { "alias": "showThisMonthButton"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "todayLabel": { "alias": "todayLabel"; "required": false; "isSignal": true; }; "thisMonthLabel": { "alias": "thisMonthLabel"; "required": false; "isSignal": true; }; "previousMonthLabel": { "alias": "previousMonthLabel"; "required": false; "isSignal": true; }; "nextMonthLabel": { "alias": "nextMonthLabel"; "required": false; "isSignal": true; }; "previousYearLabel": { "alias": "previousYearLabel"; "required": false; "isSignal": true; }; "nextYearLabel": { "alias": "nextYearLabel"; "required": false; "isSignal": true; }; "hoursLabel": { "alias": "hoursLabel"; "required": false; "isSignal": true; }; "minutesLabel": { "alias": "minutesLabel"; "required": false; "isSignal": true; }; "secondsLabel": { "alias": "secondsLabel"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "gogDateSelect": "gogDateSelect"; }, never, never, true, never>;
1525
1682
  }
1526
1683
 
1527
1684
  /**
@@ -1566,8 +1723,13 @@ declare class DatepickerComponent implements ControlValueAccessor, DoCheck {
1566
1723
  * selection alone. Off by default; see `gog-calendar` for why the two are separate controls.
1567
1724
  */
1568
1725
  readonly showThisMonthButton: _angular_core.InputSignal<boolean>;
1569
- readonly todayLabel: _angular_core.InputSignal<string>;
1570
- readonly thisMonthLabel: _angular_core.InputSignal<string>;
1726
+ /**
1727
+ * Forwarded to `gog-calendar`. Left unset they stay `undefined` all the way down, so the
1728
+ * calendar resolves them against `GOG_CONFIG.labels` itself rather than receiving an English
1729
+ * default from here that would shadow the app's own.
1730
+ */
1731
+ readonly todayLabel: _angular_core.InputSignal<string | undefined>;
1732
+ readonly thisMonthLabel: _angular_core.InputSignal<string | undefined>;
1571
1733
  /**
1572
1734
  * Display and parse pattern (`dd.MM.yyyy`, `yyyy-MM-dd`, …). Left unset it is derived from
1573
1735
  * `showTime`, so switching the time section on does not also require restating the format.
@@ -1588,7 +1750,8 @@ declare class DatepickerComponent implements ControlValueAccessor, DoCheck {
1588
1750
  readonly disabled: _angular_core.InputSignal<boolean>;
1589
1751
  readonly fullWidth: _angular_core.InputSignal<boolean>;
1590
1752
  readonly clearable: _angular_core.InputSignal<boolean | undefined>;
1591
- readonly clearAriaLabel: _angular_core.InputSignal<string>;
1753
+ /** Unset, falls back to `GOG_CONFIG.labels.clearDate`, then to `'Clear date'`. */
1754
+ readonly clearAriaLabel: _angular_core.InputSignal<string | undefined>;
1592
1755
  readonly errorMessage: _angular_core.InputSignal<string>;
1593
1756
  readonly errorDisplay: _angular_core.InputSignal<GogErrorDisplay | undefined>;
1594
1757
  readonly size: _angular_core.InputSignal<GogSize | undefined>;
@@ -1597,7 +1760,8 @@ declare class DatepickerComponent implements ControlValueAccessor, DoCheck {
1597
1760
  readonly appendToBody: _angular_core.InputSignal<boolean | undefined>;
1598
1761
  readonly dropdownDirection: _angular_core.InputSignal<GogDropdownDirection | undefined>;
1599
1762
  readonly dropdownZIndex: _angular_core.InputSignal<number | null>;
1600
- readonly openCalendarLabel: _angular_core.InputSignal<string>;
1763
+ /** Unset, falls back to `GOG_CONFIG.labels.openCalendar`, then to `'Open calendar'`. */
1764
+ readonly openCalendarLabel: _angular_core.InputSignal<string | undefined>;
1601
1765
  /** Two-way bindable value: a `Date` in `'single'` mode, a `GogDateRange` in `'range'`. */
1602
1766
  readonly value: _angular_core.ModelSignal<GogDatepickerValue>;
1603
1767
  readonly isOpen: _angular_core.WritableSignal<boolean>;
@@ -1624,6 +1788,9 @@ declare class DatepickerComponent implements ControlValueAccessor, DoCheck {
1624
1788
  */
1625
1789
  private readonly isEditing;
1626
1790
  protected readonly isDisabled: _angular_core.Signal<boolean>;
1791
+ /** Instance input → `GOG_CONFIG.labels` → the built-in English default. */
1792
+ protected readonly resolvedClearLabel: _angular_core.Signal<string>;
1793
+ protected readonly resolvedOpenCalendarLabel: _angular_core.Signal<string>;
1627
1794
  protected readonly resolvedSize: _angular_core.Signal<GogSize>;
1628
1795
  protected readonly resolvedErrorDisplay: _angular_core.Signal<GogErrorDisplay>;
1629
1796
  protected readonly resolvedAppendToBody: _angular_core.Signal<boolean>;
@@ -1817,7 +1984,6 @@ interface GogRadioOption {
1817
1984
  disabled?: boolean;
1818
1985
  }
1819
1986
  declare class RadioGroupComponent implements ControlValueAccessor {
1820
- private static nextUid;
1821
1987
  protected readonly uid: string;
1822
1988
  readonly options: _angular_core.InputSignal<GogRadioOption[]>;
1823
1989
  readonly label: _angular_core.InputSignal<string>;
@@ -1917,6 +2083,11 @@ interface DialogConfig {
1917
2083
  maxWidth?: string;
1918
2084
  /** ARIA role for the dialog panel. Use 'alertdialog' for confirmation prompts. Default: 'dialog' */
1919
2085
  role?: 'dialog' | 'alertdialog';
2086
+ /**
2087
+ * Accessible name for the close button. Unset, falls back to `GOG_CONFIG.labels.closeDialog`,
2088
+ * then to `'Close dialog'`.
2089
+ */
2090
+ closeAriaLabel?: string;
1920
2091
  /** z-index of the dialog backdrop. Dropdowns inside get zIndex+10. Default: 1000 */
1921
2092
  zIndex?: number;
1922
2093
  }
@@ -1953,6 +2124,7 @@ declare class DialogService {
1953
2124
 
1954
2125
  declare class DialogComponent {
1955
2126
  protected readonly dialogService: DialogService;
2127
+ private readonly globalConfig;
1956
2128
  private readonly parentInjector;
1957
2129
  private readonly host;
1958
2130
  private readonly injectorCache;
@@ -1960,6 +2132,8 @@ declare class DialogComponent {
1960
2132
  private readonly focusableSelector;
1961
2133
  constructor();
1962
2134
  protected getInjector(dialog: OpenDialog): Injector;
2135
+ /** Per-dialog config → `GOG_CONFIG.labels` → the built-in English default. */
2136
+ protected closeLabel(dialog: OpenDialog): string;
1963
2137
  protected getTitleId(dialog: OpenDialog): string;
1964
2138
  protected close(dialog: OpenDialog): void;
1965
2139
  protected closeIfClosable(dialog: OpenDialog): void;
@@ -2049,9 +2223,13 @@ declare class ToastComponent implements OnDestroy {
2049
2223
  private remainingMs;
2050
2224
  private isClosing;
2051
2225
  private readonly progressEl;
2226
+ private readonly globalConfig;
2227
+ /**
2228
+ * `GOG_CONFIG.labels` → the built-in English default. No per-instance input: a toast is
2229
+ * created through `ToastService`, and its close button says the same thing every time.
2230
+ */
2231
+ protected readonly closeLabel: string;
2052
2232
  protected readonly hasActions: _angular_core.Signal<boolean>;
2053
- protected readonly ariaRole: _angular_core.Signal<"alert" | "status">;
2054
- protected readonly ariaLive: _angular_core.Signal<"assertive" | "polite">;
2055
2233
  constructor();
2056
2234
  ngOnDestroy(): void;
2057
2235
  close(): void;
@@ -2072,13 +2250,34 @@ declare class ToastComponent implements OnDestroy {
2072
2250
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<ToastComponent, "gog-toast", never, { "toast": { "alias": "toast"; "required": true; "isSignal": true; }; "isFront": { "alias": "isFront"; "required": false; "isSignal": true; }; }, { "dismissed": "dismissed"; }, never, never, true, never>;
2073
2251
  }
2074
2252
 
2253
+ /** One line of a live region — see `announcements`. */
2254
+ interface ToastAnnouncement {
2255
+ /** `id` alone is not enough: a deduped toast is re-shown under the same id, and re-announcing
2256
+ * it is the point of `revision`. */
2257
+ key: string;
2258
+ message: string;
2259
+ }
2075
2260
  declare class ToastContainerComponent {
2076
2261
  private readonly toastService;
2077
2262
  readonly maxVisiblePerPosition: _angular_core.InputSignal<number>;
2078
2263
  readonly groups: _angular_core.Signal<{
2079
2264
  position: ToastPosition;
2080
- toasts: _guildofgleks_ui.Toast[];
2265
+ toasts: Toast[];
2081
2266
  }[]>;
2267
+ /**
2268
+ * What the two permanently-mounted live regions in the template say right now, split by
2269
+ * urgency. The regions themselves are always in the DOM — that is the whole point of putting
2270
+ * them here rather than on `gog-toast`, whose host element only exists from the moment its
2271
+ * text does, which is exactly the case screen readers miss.
2272
+ *
2273
+ * Derived from `groups()` rather than from the raw service state so that what is announced
2274
+ * matches what is on screen: a toast queued beyond `maxVisiblePerPosition` is not visible yet
2275
+ * and must not be read out yet either.
2276
+ */
2277
+ protected readonly announcements: _angular_core.Signal<{
2278
+ polite: ToastAnnouncement[];
2279
+ assertive: ToastAnnouncement[];
2280
+ }>;
2082
2281
  protected trackGroup(_: number, group: {
2083
2282
  position: ToastPosition;
2084
2283
  }): ToastPosition;
@@ -2086,6 +2285,7 @@ declare class ToastContainerComponent {
2086
2285
  protected trackToast(_: number, toast: {
2087
2286
  id: string;
2088
2287
  }): string;
2288
+ protected trackAnnouncement(_: number, announcement: ToastAnnouncement): string;
2089
2289
  protected dismiss(id: string): void;
2090
2290
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ToastContainerComponent, never>;
2091
2291
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<ToastContainerComponent, "gog-toast-container", never, { "maxVisiblePerPosition": { "alias": "maxVisiblePerPosition"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
@@ -2128,9 +2328,34 @@ declare class GogInputAddonEndDirective {
2128
2328
  declare class InputfieldComponent implements ControlValueAccessor, DoCheck {
2129
2329
  readonly label: _angular_core.InputSignal<string>;
2130
2330
  readonly placeholder: _angular_core.InputSignal<string>;
2131
- readonly type: _angular_core.InputSignal<"number" | "text" | "password" | "email" | "date">;
2331
+ /** See `GogInputType` for why this is a subset of the native `type` list. */
2332
+ readonly type: _angular_core.InputSignal<GogInputType>;
2132
2333
  /** Defaults to 'current-password' for password fields, 'off' otherwise */
2133
2334
  readonly autocomplete: _angular_core.InputSignal<string>;
2335
+ /**
2336
+ * Native `readonly`: the value is still selectable, focusable and submitted with the form, but
2337
+ * cannot be edited. Distinct from `disabled`, which also takes the field out of the tab order,
2338
+ * greys it out and drops it from form submission.
2339
+ *
2340
+ * Suppresses the clear button and the number field's spin buttons for as long as it is on —
2341
+ * both promise an edit the field would refuse.
2342
+ */
2343
+ readonly readonly: _angular_core.InputSignal<boolean>;
2344
+ /** Native `maxlength`. Unset (`null`), no limit is applied. */
2345
+ readonly maxlength: _angular_core.InputSignal<number | null>;
2346
+ /** Native `minlength`. Unset (`null`), no minimum is applied. */
2347
+ readonly minlength: _angular_core.InputSignal<number | null>;
2348
+ /** Native `pattern`, as a regular-expression source string. Unset (`''`), nothing is applied. */
2349
+ readonly pattern: _angular_core.InputSignal<string>;
2350
+ /**
2351
+ * Native `inputmode` — see `GogInputMode`. Unset, the browser infers a keyboard from `type`.
2352
+ */
2353
+ readonly inputMode: _angular_core.InputSignal<GogInputMode | null>;
2354
+ /**
2355
+ * Native `spellcheck`. Unset (`null`), the browser's own default applies; set `false` on
2356
+ * fields holding names, codes or identifiers, where the red underline is noise.
2357
+ */
2358
+ readonly spellcheck: _angular_core.InputSignal<boolean | null>;
2134
2359
  /** Only applied when `type="number"`. */
2135
2360
  readonly min: _angular_core.InputSignal<number | null>;
2136
2361
  /** Only applied when `type="number"`. */
@@ -2147,10 +2372,10 @@ declare class InputfieldComponent implements ControlValueAccessor, DoCheck {
2147
2372
  * then to `true`.
2148
2373
  */
2149
2374
  readonly showSpinButtons: _angular_core.InputSignal<boolean | undefined>;
2150
- /** aria-label for the number field's increment button. */
2151
- readonly incrementLabel: _angular_core.InputSignal<string>;
2152
- /** aria-label for the number field's decrement button. */
2153
- readonly decrementLabel: _angular_core.InputSignal<string>;
2375
+ /** aria-label for the number field's increment button. Unset, falls back to `GOG_CONFIG.labels.increment`. */
2376
+ readonly incrementLabel: _angular_core.InputSignal<string | undefined>;
2377
+ /** aria-label for the number field's decrement button. Unset, falls back to `GOG_CONFIG.labels.decrement`. */
2378
+ readonly decrementLabel: _angular_core.InputSignal<string | undefined>;
2154
2379
  readonly errorMessage: _angular_core.InputSignal<string>;
2155
2380
  /**
2156
2381
  * See `GogErrorDisplay`. Unset, falls back to `GOG_CONFIG.control.errorDisplay`, then to
@@ -2158,6 +2383,12 @@ declare class InputfieldComponent implements ControlValueAccessor, DoCheck {
2158
2383
  */
2159
2384
  readonly errorDisplay: _angular_core.InputSignal<GogErrorDisplay | undefined>;
2160
2385
  readonly name: _angular_core.InputSignal<string>;
2386
+ /**
2387
+ * The `<input>`'s `id`. Left unset, the field generates one — the label's `for` and the error
2388
+ * message's `aria-describedby` both need a real id, and a field that is silently unlabelled
2389
+ * without one is the wrong default. Set this only when something outside the component has to
2390
+ * reference the input by a known id.
2391
+ */
2161
2392
  readonly inputId: _angular_core.InputSignal<string>;
2162
2393
  readonly disabled: _angular_core.InputSignal<boolean>;
2163
2394
  /** Unset, falls back to `GOG_CONFIG.control.size`, then to `'md'`. */
@@ -2197,17 +2428,17 @@ declare class InputfieldComponent implements ControlValueAccessor, DoCheck {
2197
2428
  * @deprecated since 21.3.0 (2026-08-07) — project a `<button gogInputAddonEnd>` element instead. Removed in 21.5.0. Put `aria-label` on that button.
2198
2429
  */
2199
2430
  readonly iconEndLabel: _angular_core.InputSignal<string>;
2200
- /** aria-label for the reveal-password button, shown when `type` is `'password'` */
2201
- readonly showPasswordLabel: _angular_core.InputSignal<string>;
2202
- /** aria-label for the hide-password button, shown once the password is revealed */
2203
- readonly hidePasswordLabel: _angular_core.InputSignal<string>;
2431
+ /** aria-label for the reveal-password button, shown when `type` is `'password'`. Unset, falls back to `GOG_CONFIG.labels.showPassword`. */
2432
+ readonly showPasswordLabel: _angular_core.InputSignal<string | undefined>;
2433
+ /** aria-label for the hide-password button, shown once the password is revealed. Unset, falls back to `GOG_CONFIG.labels.hidePassword`. */
2434
+ readonly hidePasswordLabel: _angular_core.InputSignal<string | undefined>;
2204
2435
  /**
2205
2436
  * Whether to offer a clear button once the field has text. Unset, falls back to
2206
2437
  * `GOG_CONFIG.control.clearable`, then to `false`.
2207
2438
  */
2208
2439
  readonly clearable: _angular_core.InputSignal<boolean | undefined>;
2209
- /** Accessible name for the clear button. */
2210
- readonly clearAriaLabel: _angular_core.InputSignal<string>;
2440
+ /** Accessible name for the clear button. Unset, falls back to `GOG_CONFIG.labels.clear`. */
2441
+ readonly clearAriaLabel: _angular_core.InputSignal<string | undefined>;
2211
2442
  /** Unset, falls back to `GOG_CONFIG.floatLabel.variant`, then to `'none'` (off). */
2212
2443
  readonly floatLabel: _angular_core.InputSignal<GogFloatLabelVariant | undefined>;
2213
2444
  /** Unset, falls back to `GOG_CONFIG.floatLabel.showPlaceholder`, then to `false`. */
@@ -2234,8 +2465,14 @@ declare class InputfieldComponent implements ControlValueAccessor, DoCheck {
2234
2465
  * Empty for `'md'`: that is this component's default size and has no modifier rule of its own — every `gog-input-wrapper--*` chain bottoms out at it.
2235
2466
  */
2236
2467
  protected readonly sizeClass: _angular_core.Signal<string>;
2468
+ /** Instance input → `GOG_CONFIG.labels` → the built-in English default. */
2469
+ protected readonly resolvedClearLabel: _angular_core.Signal<string>;
2470
+ protected readonly resolvedIncrementLabel: _angular_core.Signal<string>;
2471
+ protected readonly resolvedDecrementLabel: _angular_core.Signal<string>;
2237
2472
  protected readonly resolvedShowSpinButtons: _angular_core.Signal<boolean>;
2238
2473
  protected readonly isDisabled: _angular_core.Signal<boolean>;
2474
+ /** Disabled and read-only both refuse edits; the affordances that offer one key off this. */
2475
+ protected readonly isNotEditable: _angular_core.Signal<boolean>;
2239
2476
  protected readonly isPasswordField: _angular_core.Signal<boolean>;
2240
2477
  protected readonly isNumberField: _angular_core.Signal<boolean>;
2241
2478
  protected readonly hasSpinButtons: _angular_core.Signal<boolean>;
@@ -2243,14 +2480,30 @@ declare class InputfieldComponent implements ControlValueAccessor, DoCheck {
2243
2480
  private readonly numericValue;
2244
2481
  protected readonly isAtMin: _angular_core.Signal<boolean>;
2245
2482
  protected readonly isAtMax: _angular_core.Signal<boolean>;
2246
- protected readonly effectiveType: _angular_core.Signal<"number" | "text" | "password" | "email" | "date">;
2483
+ protected readonly effectiveType: _angular_core.Signal<GogInputType>;
2247
2484
  protected readonly effectiveAutocomplete: _angular_core.Signal<string>;
2248
2485
  protected readonly hasError: _angular_core.Signal<boolean>;
2249
2486
  protected readonly visibleError: _angular_core.Signal<string>;
2487
+ /** Fallback id, generated once per instance — see `resolvedInputId`. */
2488
+ private readonly autoId;
2489
+ /** The consumer's `inputId` when given, otherwise the generated one. Never empty. */
2490
+ protected readonly resolvedInputId: _angular_core.Signal<string>;
2491
+ /**
2492
+ * Only non-null while the error element is actually rendered — the template renders it on
2493
+ * `visibleError()`, and an `aria-describedby` pointing at an id that isn't in the DOM is worse
2494
+ * than none at all.
2495
+ */
2496
+ protected readonly errorId: _angular_core.Signal<string | null>;
2250
2497
  private readonly floatLabelState;
2251
2498
  private readonly clearableState;
2252
2499
  /** Whether to render the clear button right now — see `GogClearableState`. */
2253
2500
  protected readonly showClear: _angular_core.Signal<boolean>;
2501
+ /**
2502
+ * Both the stepper and the clear button are on screen — only possible on a `clearable`
2503
+ * number field with a value. Drives `.gog-input-wrapper--spin-clear`, which widens the end
2504
+ * gutter and shifts the clear button clear of the stepper; without it the two overlap.
2505
+ */
2506
+ protected readonly hasSpinAndClear: _angular_core.Signal<boolean>;
2254
2507
  protected readonly resolvedFloatLabel: _angular_core.Signal<GogFloatLabelVariant>;
2255
2508
  protected readonly isFloatLabelActive: _angular_core.Signal<boolean>;
2256
2509
  protected readonly isFloatLabelFloated: _angular_core.Signal<boolean>;
@@ -2284,12 +2537,19 @@ declare class InputfieldComponent implements ControlValueAccessor, DoCheck {
2284
2537
  onInput(event: Event): void;
2285
2538
  /** Increments (`direction: 1`) or decrements (`direction: -1`) by `step`, clamped to min/max. */
2286
2539
  protected stepValue(direction: 1 | -1): void;
2287
- /** Clears the field and notifies any attached form, then returns focus to the input. */
2540
+ /**
2541
+ * Clears the field and notifies any attached form.
2542
+ *
2543
+ * The value written to the form control has to match what `onInput` writes when the user
2544
+ * empties the field by hand — `null` for a number field, `''` otherwise. Emitting `''` for a
2545
+ * number field put a string into a control typed `number | null`, which then failed
2546
+ * `Validators.min`-style checks and round-tripped the wrong type to the server.
2547
+ */
2288
2548
  protected clearValue(event: Event): void;
2289
2549
  onFocus(): void;
2290
2550
  onBlur(): void;
2291
2551
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<InputfieldComponent, never>;
2292
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<InputfieldComponent, "gog-inputfield", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "showSpinButtons": { "alias": "showSpinButtons"; "required": false; "isSignal": true; }; "incrementLabel": { "alias": "incrementLabel"; "required": false; "isSignal": true; }; "decrementLabel": { "alias": "decrementLabel"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "errorDisplay": { "alias": "errorDisplay"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; "iconStart": { "alias": "iconStart"; "required": false; "isSignal": true; }; "iconEnd": { "alias": "iconEnd"; "required": false; "isSignal": true; }; "iconStartTemplate": { "alias": "iconStartTemplate"; "required": false; "isSignal": true; }; "iconEndTemplate": { "alias": "iconEndTemplate"; "required": false; "isSignal": true; }; "iconStartFn": { "alias": "iconStartFn"; "required": false; "isSignal": true; }; "iconEndFn": { "alias": "iconEndFn"; "required": false; "isSignal": true; }; "iconStartLabel": { "alias": "iconStartLabel"; "required": false; "isSignal": true; }; "iconEndLabel": { "alias": "iconEndLabel"; "required": false; "isSignal": true; }; "showPasswordLabel": { "alias": "showPasswordLabel"; "required": false; "isSignal": true; }; "hidePasswordLabel": { "alias": "hidePasswordLabel"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "clearAriaLabel": { "alias": "clearAriaLabel"; "required": false; "isSignal": true; }; "floatLabel": { "alias": "floatLabel"; "required": false; "isSignal": true; }; "floatLabelShowPlaceholder": { "alias": "floatLabelShowPlaceholder"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, ["addonStart", "addonEnd"], ["[gogInputAddonStart]", "[gogInputAddonEnd]"], true, never>;
2552
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<InputfieldComponent, "gog-inputfield", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "maxlength": { "alias": "maxlength"; "required": false; "isSignal": true; }; "minlength": { "alias": "minlength"; "required": false; "isSignal": true; }; "pattern": { "alias": "pattern"; "required": false; "isSignal": true; }; "inputMode": { "alias": "inputMode"; "required": false; "isSignal": true; }; "spellcheck": { "alias": "spellcheck"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "showSpinButtons": { "alias": "showSpinButtons"; "required": false; "isSignal": true; }; "incrementLabel": { "alias": "incrementLabel"; "required": false; "isSignal": true; }; "decrementLabel": { "alias": "decrementLabel"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "errorDisplay": { "alias": "errorDisplay"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; "iconStart": { "alias": "iconStart"; "required": false; "isSignal": true; }; "iconEnd": { "alias": "iconEnd"; "required": false; "isSignal": true; }; "iconStartTemplate": { "alias": "iconStartTemplate"; "required": false; "isSignal": true; }; "iconEndTemplate": { "alias": "iconEndTemplate"; "required": false; "isSignal": true; }; "iconStartFn": { "alias": "iconStartFn"; "required": false; "isSignal": true; }; "iconEndFn": { "alias": "iconEndFn"; "required": false; "isSignal": true; }; "iconStartLabel": { "alias": "iconStartLabel"; "required": false; "isSignal": true; }; "iconEndLabel": { "alias": "iconEndLabel"; "required": false; "isSignal": true; }; "showPasswordLabel": { "alias": "showPasswordLabel"; "required": false; "isSignal": true; }; "hidePasswordLabel": { "alias": "hidePasswordLabel"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "clearAriaLabel": { "alias": "clearAriaLabel"; "required": false; "isSignal": true; }; "floatLabel": { "alias": "floatLabel"; "required": false; "isSignal": true; }; "floatLabelShowPlaceholder": { "alias": "floatLabelShowPlaceholder"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, ["addonStart", "addonEnd"], ["[gogInputAddonStart]", "[gogInputAddonEnd]"], true, never>;
2293
2553
  }
2294
2554
 
2295
2555
  declare class TextareaComponent implements ControlValueAccessor, DoCheck {
@@ -2302,12 +2562,27 @@ declare class TextareaComponent implements ControlValueAccessor, DoCheck {
2302
2562
  */
2303
2563
  readonly errorDisplay: _angular_core.InputSignal<GogErrorDisplay | undefined>;
2304
2564
  readonly name: _angular_core.InputSignal<string>;
2565
+ /**
2566
+ * The `<textarea>`'s `id`. Left unset, the field generates one — see
2567
+ * `gog-inputfield`'s own `inputId` for why that is the default rather than an opt-in.
2568
+ */
2305
2569
  readonly inputId: _angular_core.InputSignal<string>;
2306
2570
  readonly disabled: _angular_core.InputSignal<boolean>;
2571
+ /**
2572
+ * Native `readonly` — see `gog-inputfield`'s own `readonly` for how it differs from
2573
+ * `disabled`. Suppresses the clear button while on.
2574
+ */
2575
+ readonly readonly: _angular_core.InputSignal<boolean>;
2307
2576
  /** Unset, falls back to `GOG_CONFIG.control.size`, then to `'md'`. */
2308
2577
  readonly size: _angular_core.InputSignal<GogSize | undefined>;
2309
2578
  /** Native `rows` attribute, controlling the field's initial height. */
2310
2579
  readonly rows: _angular_core.InputSignal<number>;
2580
+ /** Native `maxlength`. Unset (`null`), no limit is applied. */
2581
+ readonly maxlength: _angular_core.InputSignal<number | null>;
2582
+ /** Native `minlength`. Unset (`null`), no minimum is applied. */
2583
+ readonly minlength: _angular_core.InputSignal<number | null>;
2584
+ /** Native `spellcheck`. Unset (`null`), the browser's own default applies. */
2585
+ readonly spellcheck: _angular_core.InputSignal<boolean | null>;
2311
2586
  /**
2312
2587
  * Which direction(s) the field's own drag handle resizes it in — matches the native CSS
2313
2588
  * `resize` value space (`'vertical'`, `'horizontal'`, `'both'`, `'none'`). Unset, falls back
@@ -2326,8 +2601,8 @@ declare class TextareaComponent implements ControlValueAccessor, DoCheck {
2326
2601
  * `GOG_CONFIG.control.clearable`, then to `false`.
2327
2602
  */
2328
2603
  readonly clearable: _angular_core.InputSignal<boolean | undefined>;
2329
- /** Accessible name for the clear button. */
2330
- readonly clearAriaLabel: _angular_core.InputSignal<string>;
2604
+ /** Accessible name for the clear button. Unset, falls back to `GOG_CONFIG.labels.clear`. */
2605
+ readonly clearAriaLabel: _angular_core.InputSignal<string | undefined>;
2331
2606
  /** Unset, falls back to `GOG_CONFIG.floatLabel.variant`, then to `'none'` (off). */
2332
2607
  readonly floatLabel: _angular_core.InputSignal<GogFloatLabelVariant | undefined>;
2333
2608
  /** Unset, falls back to `GOG_CONFIG.floatLabel.showPlaceholder`, then to `false`. */
@@ -2370,8 +2645,18 @@ declare class TextareaComponent implements ControlValueAccessor, DoCheck {
2370
2645
  */
2371
2646
  protected readonly sizeClass: _angular_core.Signal<string>;
2372
2647
  protected readonly isDisabled: _angular_core.Signal<boolean>;
2648
+ /** Disabled and read-only both refuse edits — see `gog-inputfield`. */
2649
+ protected readonly isNotEditable: _angular_core.Signal<boolean>;
2650
+ /** Instance input → `GOG_CONFIG.labels` → the built-in English default. */
2651
+ protected readonly resolvedClearLabel: _angular_core.Signal<string>;
2373
2652
  protected readonly hasError: _angular_core.Signal<boolean>;
2374
2653
  protected readonly visibleError: _angular_core.Signal<string>;
2654
+ /** Fallback id, generated once per instance — see `resolvedInputId`. */
2655
+ private readonly autoId;
2656
+ /** The consumer's `inputId` when given, otherwise the generated one. Never empty. */
2657
+ protected readonly resolvedInputId: _angular_core.Signal<string>;
2658
+ /** Non-null only while the error element is actually rendered — see `gog-inputfield`. */
2659
+ protected readonly errorId: _angular_core.Signal<string | null>;
2375
2660
  private readonly floatLabelState;
2376
2661
  private readonly clearableState;
2377
2662
  /** Whether to render the clear button right now — see `GogClearableState`. */
@@ -2394,7 +2679,7 @@ declare class TextareaComponent implements ControlValueAccessor, DoCheck {
2394
2679
  onFocus(): void;
2395
2680
  onBlur(): void;
2396
2681
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TextareaComponent, never>;
2397
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<TextareaComponent, "gog-textarea", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "errorDisplay": { "alias": "errorDisplay"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "resize": { "alias": "resize"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "clearAriaLabel": { "alias": "clearAriaLabel"; "required": false; "isSignal": true; }; "floatLabel": { "alias": "floatLabel"; "required": false; "isSignal": true; }; "floatLabelShowPlaceholder": { "alias": "floatLabelShowPlaceholder"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
2682
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TextareaComponent, "gog-textarea", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "errorDisplay": { "alias": "errorDisplay"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "maxlength": { "alias": "maxlength"; "required": false; "isSignal": true; }; "minlength": { "alias": "minlength"; "required": false; "isSignal": true; }; "spellcheck": { "alias": "spellcheck"; "required": false; "isSignal": true; }; "resize": { "alias": "resize"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "clearAriaLabel": { "alias": "clearAriaLabel"; "required": false; "isSignal": true; }; "floatLabel": { "alias": "floatLabel"; "required": false; "isSignal": true; }; "floatLabelShowPlaceholder": { "alias": "floatLabelShowPlaceholder"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
2398
2683
  }
2399
2684
 
2400
2685
  declare class ChipComponent {
@@ -2509,12 +2794,26 @@ declare class MultiselectComponent<TOption = GogDropdownOption, TValue = string
2509
2794
  readonly showControls: _angular_core.InputSignal<boolean>;
2510
2795
  /** Where the "select all"/"clear" row sits relative to the option list. Sticky either way. */
2511
2796
  readonly controlsPosition: _angular_core.InputSignal<"top" | "bottom">;
2797
+ /**
2798
+ * Visible text of the select-all button. Unset, falls back to `GOG_CONFIG.labels.selectAll`,
2799
+ * then to `'Select all'`.
2800
+ */
2801
+ readonly selectAllLabel: _angular_core.InputSignal<string | undefined>;
2802
+ /**
2803
+ * Visible text of the clear-all button — the one inside the panel, next to select-all. The
2804
+ * trigger's own clear icon is `clearAriaLabel`. Unset, falls back to
2805
+ * `GOG_CONFIG.labels.clearAll`, then to `'Clear'`.
2806
+ */
2807
+ readonly clearAllLabel: _angular_core.InputSignal<string | undefined>;
2512
2808
  /**
2513
2809
  * @deprecated since 21.3.0 (2026-08-07) — project an `<ng-template gogMultiselectClearIcon>` into the component instead. Removed in 21.5.0.
2514
2810
  */
2515
2811
  readonly clearIconTemplate: _angular_core.InputSignal<TemplateRef<unknown> | null>;
2516
2812
  /** Projected `gogMultiselectClearIcon` template; wins over the deprecated `clearIconTemplate` input. */
2517
2813
  protected readonly clearIconSlot: _angular_core.Signal<GogMultiselectClearIconDirective | undefined>;
2814
+ /** Instance input → `GOG_CONFIG.labels` → the built-in English default. */
2815
+ protected readonly resolvedSelectAllLabel: _angular_core.Signal<string>;
2816
+ protected readonly resolvedClearAllLabel: _angular_core.Signal<string>;
2518
2817
  /**
2519
2818
  * Two-way bindable selection: `[(value)]="signal"`.
2520
2819
  *
@@ -2569,11 +2868,10 @@ declare class MultiselectComponent<TOption = GogDropdownOption, TValue = string
2569
2868
  constructor();
2570
2869
  protected extraPanelHeight(): number;
2571
2870
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<MultiselectComponent<any, any>, never>;
2572
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<MultiselectComponent<any, any>, "gog-multiselect", never, { "showControls": { "alias": "showControls"; "required": false; "isSignal": true; }; "controlsPosition": { "alias": "controlsPosition"; "required": false; "isSignal": true; }; "clearIconTemplate": { "alias": "clearIconTemplate"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, ["clearIconSlot"], never, true, never>;
2871
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MultiselectComponent<any, any>, "gog-multiselect", never, { "showControls": { "alias": "showControls"; "required": false; "isSignal": true; }; "controlsPosition": { "alias": "controlsPosition"; "required": false; "isSignal": true; }; "selectAllLabel": { "alias": "selectAllLabel"; "required": false; "isSignal": true; }; "clearAllLabel": { "alias": "clearAllLabel"; "required": false; "isSignal": true; }; "clearIconTemplate": { "alias": "clearIconTemplate"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, ["clearIconSlot"], never, true, never>;
2573
2872
  }
2574
2873
 
2575
2874
  declare class SliderComponent implements ControlValueAccessor, DoCheck {
2576
- private static nextId;
2577
2875
  protected readonly inputId: string;
2578
2876
  readonly label: _angular_core.InputSignal<string>;
2579
2877
  readonly min: _angular_core.InputSignal<number>;
@@ -2607,34 +2905,124 @@ declare class SliderComponent implements ControlValueAccessor, DoCheck {
2607
2905
  * as they do horizontally.
2608
2906
  */
2609
2907
  readonly orientation: _angular_core.InputSignal<_guildofgleks_ui.GogOrientation>;
2610
- /** Two-way bindable value: `[(value)]="signal"`. */
2908
+ /**
2909
+ * Switches the slider to two-thumb mode for picking a *range* of values instead of a
2910
+ * single one. When on, use `[(rangeValue)]` instead of `[(value)]` — the two are mutually
2911
+ * exclusive; `value`/`writeValue` are ignored while this is `true`, and vice versa.
2912
+ */
2913
+ readonly range: _angular_core.InputSignal<boolean>;
2914
+ /**
2915
+ * Accessible name for the start (lower) thumb in `range` mode. Falls back to `'Minimum'`,
2916
+ * prefixed with `label()` when one is set (e.g. `'Price Minimum'`) — a shared `<label>`
2917
+ * can't be associated with two inputs via `for`, so each thumb needs its own name.
2918
+ */
2919
+ readonly startAriaLabel: _angular_core.InputSignal<string>;
2920
+ /** Accessible name for the end (upper) thumb in `range` mode. Falls back to `'Maximum'`. */
2921
+ readonly endAriaLabel: _angular_core.InputSignal<string>;
2922
+ /**
2923
+ * Disables only the start (lower) thumb in `range` mode — e.g. to pin a range's floor
2924
+ * while letting the consumer still raise or lower its ceiling. ORed with `disabled`
2925
+ * (either one disables it), never overrides it: `disabled` still means "both thumbs off".
2926
+ * Ignored outside `range` mode, where there's only one thumb and `disabled` already covers
2927
+ * it. Unlike `disabled`, this never applies the whole-control `.gog-slider--disabled`
2928
+ * dimming/`pointer-events: none` — only the one thumb goes inert, both visually (its own
2929
+ * dot dims) and functionally (the native input's own `disabled` attribute takes it out of
2930
+ * the tab order), so the other thumb stays fully usable.
2931
+ */
2932
+ readonly startDisabled: _angular_core.InputSignal<boolean>;
2933
+ /** Disables only the end (upper) thumb in `range` mode. Mirrors `startDisabled`. */
2934
+ readonly endDisabled: _angular_core.InputSignal<boolean>;
2935
+ /** Two-way bindable value: `[(value)]="signal"`. Ignored when `range` is `true`. */
2611
2936
  readonly value: _angular_core.ModelSignal<number>;
2937
+ /** Two-way bindable `{ start, end }` pair: `[(rangeValue)]="signal"`. Used only when `range` is `true`. */
2938
+ readonly rangeValue: _angular_core.ModelSignal<GogSliderRange>;
2612
2939
  private readonly ngControl;
2613
2940
  private readonly cvaDisabled;
2614
2941
  private readonly globalConfig;
2615
2942
  private readonly resolvedErrorDisplay;
2616
2943
  private readonly errorState;
2617
2944
  protected readonly isDisabled: _angular_core.Signal<boolean>;
2945
+ /**
2946
+ * `isDisabled()` also covers `cvaDisabled()` — a `[formControl]`'s own `.disable()`, which
2947
+ * (being one FormControl backing one `rangeValue`) always speaks for both thumbs at once
2948
+ * and has no way to target just one. `startDisabled`/`endDisabled` are the only route to a
2949
+ * one-sided disable, and only make sense in `range` mode.
2950
+ */
2951
+ protected readonly isStartDisabled: _angular_core.Signal<boolean>;
2952
+ protected readonly isEndDisabled: _angular_core.Signal<boolean>;
2953
+ /**
2954
+ * Drives the whole-control `.gog-slider--disabled` class (dimming + `pointer-events: none`
2955
+ * over the whole track). Applying that class off a one-sided `isStartDisabled()`/
2956
+ * `isEndDisabled()` would also block pointer/touch input to the *other*, still-enabled
2957
+ * thumb — `pointer-events: none` on an ancestor cuts off every descendant, not just the
2958
+ * disabled one — so in `range` mode this only fires once *both* sides are disabled. A
2959
+ * still-disabled single thumb stays inert on its own regardless (its native `disabled`
2960
+ * attribute already takes it out of the tab order and stops it from firing events).
2961
+ */
2962
+ protected readonly isFullyDisabled: _angular_core.Signal<boolean>;
2618
2963
  protected readonly clampedValue: _angular_core.Signal<number>;
2964
+ /**
2965
+ * `rangeValue()` clamped to `[min, max]`, swapping the pair back in order if a consumer
2966
+ * writes `start > end` directly (e.g. via `writeValue`/a FormControl) — dragging or
2967
+ * keyboard-nudging a thumb past the other can never produce that, since
2968
+ * onRangeStartInput/onRangeEndInput already clamp against each other there.
2969
+ */
2970
+ protected readonly clampedRange: _angular_core.Signal<GogSliderRange>;
2971
+ private percentFor;
2972
+ private clampRange;
2619
2973
  protected readonly fillPercent: _angular_core.Signal<number>;
2974
+ protected readonly rangeStartPercent: _angular_core.Signal<number>;
2975
+ protected readonly rangeEndPercent: _angular_core.Signal<number>;
2620
2976
  protected readonly thumbPos: _angular_core.Signal<string>;
2621
2977
  protected readonly fillScale: _angular_core.Signal<number>;
2978
+ protected readonly rangeStartPos: _angular_core.Signal<string>;
2979
+ protected readonly rangeEndPos: _angular_core.Signal<string>;
2980
+ protected readonly rangeDisplayValue: _angular_core.Signal<string>;
2981
+ /**
2982
+ * Reserved width for `.gog-slider__value`, in `ch`. Without this the span sizes to
2983
+ * whatever the *current* value happens to print as, so it visibly resizes on every drag —
2984
+ * harmless when `fullWidth` absorbs the wiggle (the default for horizontal), but a vertical
2985
+ * slider is only ever as wide as its content (see the `fit-content` comment in the
2986
+ * stylesheet), so there the whole control jitters in width as you drag, and the header row
2987
+ * being what's regrowing/shrinking tugs the min/max labels below along with it even though
2988
+ * their own text never changes. Sized from `min()`/`max()` rather than the live value:
2989
+ * digit count only grows moving away from zero, so whichever endpoint prints the most
2990
+ * characters is already the worst case for every value in between.
2991
+ */
2992
+ protected readonly valueDisplayChars: _angular_core.Signal<number>;
2993
+ protected readonly startInputAriaLabel: _angular_core.Signal<string>;
2994
+ protected readonly endInputAriaLabel: _angular_core.Signal<string>;
2622
2995
  protected readonly isVertical: _angular_core.Signal<boolean>;
2623
2996
  protected readonly hasError: _angular_core.Signal<boolean>;
2624
2997
  protected readonly visibleError: _angular_core.Signal<string>;
2625
2998
  protected readonly errorId: _angular_core.Signal<string | null>;
2999
+ /** Fires with a plain `number` normally, or a `GogSliderRange` while `range()` is `true`. */
2626
3000
  private onChange;
2627
3001
  private onTouched;
2628
3002
  constructor();
2629
3003
  ngDoCheck(): void;
2630
- writeValue(val: number): void;
2631
- registerOnChange(fn: (val: number) => void): void;
3004
+ writeValue(val: number | GogSliderRange): void;
3005
+ registerOnChange(fn: (val: number | GogSliderRange) => void): void;
2632
3006
  registerOnTouched(fn: () => void): void;
2633
3007
  setDisabledState(isDisabled: boolean): void;
2634
3008
  onInput(event: Event): void;
2635
3009
  onBlur(): void;
3010
+ /**
3011
+ * Start (lower) thumb in `range` mode. Both native inputs keep the slider's global
3012
+ * `min()`/`max()` (see the template's comment on why), so crossing prevention happens
3013
+ * entirely here via `Math.min(current.end, ...)` rather than through a narrowed native
3014
+ * `max` attribute — which also means the browser will happily keep dragging this input's
3015
+ * own raw `.value` past `current.end` even once we've clamped the logical value. Writing
3016
+ * the clamped result back to `input.value` directly (rather than trusting the `[value]`
3017
+ * binding to do it) matters because that binding no-ops once the *next* clamped result
3018
+ * matches what Angular itself last wrote — it has no way to know the raw DOM value has
3019
+ * since drifted out from under it via native dragging.
3020
+ */
3021
+ onRangeStartInput(event: Event): void;
3022
+ /** End (upper) thumb in `range` mode. Mirrors `onRangeStartInput`. */
3023
+ onRangeEndInput(event: Event): void;
2636
3024
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SliderComponent, never>;
2637
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SliderComponent, "gog-slider", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "showValue": { "alias": "showValue"; "required": false; "isSignal": true; }; "showThumb": { "alias": "showThumb"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "errorDisplay": { "alias": "errorDisplay"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
3025
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SliderComponent, "gog-slider", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "showValue": { "alias": "showValue"; "required": false; "isSignal": true; }; "showThumb": { "alias": "showThumb"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "errorDisplay": { "alias": "errorDisplay"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "range": { "alias": "range"; "required": false; "isSignal": true; }; "startAriaLabel": { "alias": "startAriaLabel"; "required": false; "isSignal": true; }; "endAriaLabel": { "alias": "endAriaLabel"; "required": false; "isSignal": true; }; "startDisabled": { "alias": "startDisabled"; "required": false; "isSignal": true; }; "endDisabled": { "alias": "endDisabled"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "rangeValue": { "alias": "rangeValue"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "rangeValue": "rangeValueChange"; }, never, never, true, never>;
2638
3026
  }
2639
3027
 
2640
3028
  declare class SkeletonComponent {
@@ -2664,7 +3052,35 @@ declare class PaginatorComponent {
2664
3052
  * buttons instead.
2665
3053
  */
2666
3054
  readonly fullWidth: _angular_core.InputSignal<boolean>;
3055
+ /**
3056
+ * How many pages there are. Ignored when `totalRecords` is given — see there.
3057
+ */
2667
3058
  readonly totalPages: _angular_core.InputSignal<number>;
3059
+ /**
3060
+ * How many rows exist in total. Given this, the paginator computes the page count itself from
3061
+ * `pageSize`, which is what removes the `computed(() => Math.ceil(total / size))` a consumer
3062
+ * would otherwise have to write and keep in sync with the select below.
3063
+ *
3064
+ * `null` (the default) keeps the old contract: you tell it `totalPages` directly.
3065
+ */
3066
+ readonly totalRecords: _angular_core.InputSignal<number | null>;
3067
+ /**
3068
+ * Rows per page. Two-way bindable — `[(pageSize)]="size"` — which is the whole point once
3069
+ * `showPageSizeSelect` is on: the select writes back through this, and nothing has to be
3070
+ * ferried between components by hand. `gog-table` binds its own `pageSize` model straight to
3071
+ * this one.
3072
+ */
3073
+ readonly pageSize: _angular_core.ModelSignal<number>;
3074
+ /**
3075
+ * Whether to offer the rows-per-page select. Unset, falls back to
3076
+ * `GOG_CONFIG.paginator.showPageSizeSelect`, then to `false`.
3077
+ */
3078
+ readonly showPageSizeSelect: _angular_core.InputSignal<boolean | undefined>;
3079
+ /**
3080
+ * The choices the select offers. Unset, falls back to
3081
+ * `GOG_CONFIG.paginator.pageSizeOptions`, then to `[10, 20, 30, 40, 50]`.
3082
+ */
3083
+ readonly pageSizeOptions: _angular_core.InputSignal<number[] | undefined>;
2668
3084
  /**
2669
3085
  * `window` (default): a fixed number of page buttons (`visiblePages`) that slides to keep
2670
3086
  * the current page centered, clamped at the edges — no ellipsis, no pinned boundaries
@@ -2684,7 +3100,42 @@ declare class PaginatorComponent {
2684
3100
  readonly siblingCount: _angular_core.InputSignal<number>;
2685
3101
  readonly size: _angular_core.InputSignal<GogSize>;
2686
3102
  readonly disabled: _angular_core.InputSignal<boolean>;
2687
- readonly ariaLabel: _angular_core.InputSignal<string>;
3103
+ /**
3104
+ * Accessible name of the `<nav>`. Unset, falls back to `GOG_CONFIG.labels.pagination`, then
3105
+ * to `'Pagination'`.
3106
+ */
3107
+ readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
3108
+ private readonly globalConfig;
3109
+ /** Instance input → `GOG_CONFIG.labels` → the built-in English default. */
3110
+ protected readonly resolvedAriaLabel: _angular_core.Signal<string>;
3111
+ /**
3112
+ * The two step buttons. Config-only: unlike the `<nav>` name, these say the same thing on
3113
+ * every paginator in an app, so a per-instance input would be dead weight.
3114
+ */
3115
+ protected readonly resolvedPreviousLabel: _angular_core.Signal<string>;
3116
+ protected readonly resolvedNextLabel: _angular_core.Signal<string>;
3117
+ /**
3118
+ * Names one page button. A method rather than a `computed`, since it takes the page number —
3119
+ * the formatter itself is resolved once and only re-read when the config object changes.
3120
+ */
3121
+ protected pageLabel(page: number): string;
3122
+ protected readonly resolvedShowPageSizeSelect: _angular_core.Signal<boolean>;
3123
+ protected readonly resolvedRowsPerPageLabel: _angular_core.Signal<string>;
3124
+ /**
3125
+ * The select takes `{ id, name }` objects because that is `GogDropdownOption`'s default shape —
3126
+ * `optionLabel`/`optionValue` accessors for a list of plain numbers would be more API than the
3127
+ * mapping saves. The current `pageSize` is included even when it is not one of the offered
3128
+ * options, so a programmatic `[pageSize]="15"` shows 15 rather than an empty trigger.
3129
+ */
3130
+ protected readonly resolvedPageSizeOptions: _angular_core.Signal<{
3131
+ id: number;
3132
+ name: string;
3133
+ }[]>;
3134
+ /**
3135
+ * `totalRecords` when supplied, `totalPages` otherwise — every internal read goes through this
3136
+ * so the two inputs cannot disagree anywhere.
3137
+ */
3138
+ protected readonly resolvedTotalPages: _angular_core.Signal<number>;
2688
3139
  protected readonly pageNumbers: _angular_core.Signal<(number | "...")[]>;
2689
3140
  constructor();
2690
3141
  private windowRange;
@@ -2693,8 +3144,9 @@ declare class PaginatorComponent {
2693
3144
  protected goTo(target: number): void;
2694
3145
  protected prev(): void;
2695
3146
  protected next(): void;
3147
+ protected onPageSizeChange(size: number | null): void;
2696
3148
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PaginatorComponent, never>;
2697
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<PaginatorComponent, "gog-paginator", never, { "page": { "alias": "page"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; "totalPages": { "alias": "totalPages"; "required": false; "isSignal": true; }; "rangeMode": { "alias": "rangeMode"; "required": false; "isSignal": true; }; "visiblePages": { "alias": "visiblePages"; "required": false; "isSignal": true; }; "showFirstPage": { "alias": "showFirstPage"; "required": false; "isSignal": true; }; "showLastPage": { "alias": "showLastPage"; "required": false; "isSignal": true; }; "siblingCount": { "alias": "siblingCount"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "page": "pageChange"; }, never, never, true, never>;
3149
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PaginatorComponent, "gog-paginator", never, { "page": { "alias": "page"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; "totalPages": { "alias": "totalPages"; "required": false; "isSignal": true; }; "totalRecords": { "alias": "totalRecords"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "showPageSizeSelect": { "alias": "showPageSizeSelect"; "required": false; "isSignal": true; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; "isSignal": true; }; "rangeMode": { "alias": "rangeMode"; "required": false; "isSignal": true; }; "visiblePages": { "alias": "visiblePages"; "required": false; "isSignal": true; }; "showFirstPage": { "alias": "showFirstPage"; "required": false; "isSignal": true; }; "showLastPage": { "alias": "showLastPage"; "required": false; "isSignal": true; }; "siblingCount": { "alias": "siblingCount"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "page": "pageChange"; "pageSize": "pageSizeChange"; }, never, never, true, never>;
2698
3150
  }
2699
3151
 
2700
3152
  /** Snapshot of the viewport's native scroll geometry, emitted on every scroll/resize. */
@@ -2966,10 +3418,29 @@ declare class TemplateDirective {
2966
3418
  }
2967
3419
 
2968
3420
  type SortDirection = 'asc' | 'desc' | null;
2969
- interface SortState {
3421
+ /**
3422
+ * The table's sort state. `field` is `''` and `direction` `null` when nothing is sorted — the
3423
+ * third state of the header's asc → desc → none cycle.
3424
+ */
3425
+ interface GogTableSortEvent {
2970
3426
  field: string;
2971
3427
  direction: SortDirection;
2972
3428
  }
3429
+ type GogTableSelectionMode = 'none' | 'single' | 'multiple';
3430
+ /** Emitted by `gogRowClick`. */
3431
+ interface GogTableRowClickEvent<T> {
3432
+ row: T;
3433
+ /**
3434
+ * Index within the currently rendered page, not the whole data set — the same convention as
3435
+ * `GogColumnBodyContext.index`. `gog-table` cannot know the absolute index in `lazy` mode.
3436
+ */
3437
+ index: number;
3438
+ /**
3439
+ * The click (or the `keydown` for a keyboard activation), so a handler can tell a click on the
3440
+ * row from one on a button inside a cell — `event.target` is the element actually hit.
3441
+ */
3442
+ originalEvent: MouseEvent | KeyboardEvent;
3443
+ }
2973
3444
  declare class TableComponent<T extends object> {
2974
3445
  /**
2975
3446
  * The single size modifier, replacing one `[class.gog-table--<size>]` binding per size.
@@ -2982,8 +3453,96 @@ declare class TableComponent<T extends object> {
2982
3453
  * its columns' content instead.
2983
3454
  */
2984
3455
  readonly fullWidth: _angular_core.InputSignal<boolean>;
2985
- /** 0 = no pagination */
2986
- readonly pageSize: _angular_core.InputSignal<number>;
3456
+ /**
3457
+ * Rows per page; `0` (the default) means no pagination at all.
3458
+ *
3459
+ * A **`model`**, not an input, so `[pageSize]="20"` still works exactly as before *and*
3460
+ * `[(pageSize)]="size"` becomes possible. That is what lets `showPageSizeSelect` work without
3461
+ * any wiring: the table binds this model straight to its own paginator's `pageSize`, the
3462
+ * select writes back through it, and a consumer who wants to observe or persist the choice
3463
+ * binds two-way. Nothing is ferried between the two components by hand.
3464
+ *
3465
+ * In `lazy` mode a change here is a refetch signal, same as `gogPageChange` — bind
3466
+ * `[(pageSize)]` and reload from it. Changing the size always returns to page 1.
3467
+ */
3468
+ readonly pageSize: _angular_core.ModelSignal<number>;
3469
+ /**
3470
+ * Whether the paginator offers a rows-per-page select. Forwarded straight to `gog-paginator`;
3471
+ * unset, it falls back to `GOG_CONFIG.paginator.showPageSizeSelect`, then to `false`.
3472
+ */
3473
+ readonly showPageSizeSelect: _angular_core.InputSignal<boolean | undefined>;
3474
+ /**
3475
+ * The sizes that select offers. Forwarded to `gog-paginator`; unset, falls back to
3476
+ * `GOG_CONFIG.paginator.pageSizeOptions`, then to `[10, 20, 30, 40, 50]`.
3477
+ */
3478
+ readonly pageSizeOptions: _angular_core.InputSignal<number[] | undefined>;
3479
+ /**
3480
+ * Hands sorting and paging to the server.
3481
+ *
3482
+ * Off (the default), the table owns the whole data set: it sorts and slices `value` itself, and
3483
+ * `totalPages` comes from `value.length`. On, `value` is **the current page, already sorted** —
3484
+ * the table renders it as given and never re-orders or re-slices it. Supply `totalRecords` so
3485
+ * the paginator knows how many pages exist, and refetch in response to `gogSortChange` /
3486
+ * `gogPageChange`.
3487
+ *
3488
+ * ```html
3489
+ * <gog-table
3490
+ * [value]="page()"
3491
+ * [lazy]="true"
3492
+ * [totalRecords]="total()"
3493
+ * [pageSize]="20"
3494
+ * [loading]="loading()"
3495
+ * (gogSortChange)="sort.set($event); reload()"
3496
+ * (gogPageChange)="page$.set($event); reload()"
3497
+ * />
3498
+ * ```
3499
+ */
3500
+ readonly lazy: _angular_core.InputSignal<boolean>;
3501
+ /**
3502
+ * How many rows exist on the server, across all pages. `lazy` only — without it the table
3503
+ * cannot know how many pages to offer, and pagination is disabled. Ignored when `lazy` is off,
3504
+ * where `value.length` is the truth.
3505
+ */
3506
+ readonly totalRecords: _angular_core.InputSignal<number | null>;
3507
+ /**
3508
+ * Makes rows focusable and styles them as clickable, for a table whose rows navigate or open
3509
+ * something. `gogRowClick` fires on a plain click regardless; this is what makes that
3510
+ * affordance **discoverable and reachable by keyboard** (Enter and Space activate the focused
3511
+ * row), which a bare `(gogRowClick)` on a `<tr>` is not.
3512
+ *
3513
+ * If the row's action is better expressed as a control — a link to a detail page, a delete
3514
+ * button — put that in a cell instead. This is for the whole-row-is-the-target case.
3515
+ */
3516
+ readonly interactiveRows: _angular_core.InputSignal<boolean>;
3517
+ /**
3518
+ * Turns on row selection. `'single'` keeps at most one row selected, `'multiple'` any number.
3519
+ *
3520
+ * The selection itself is always a `T[]` (`[(selection)]`), including in `'single'` mode where
3521
+ * it holds zero or one row — one shape rather than a `T | T[] | null` union the consumer has to
3522
+ * narrow on every read.
3523
+ */
3524
+ readonly selectionMode: _angular_core.InputSignal<GogTableSelectionMode>;
3525
+ /**
3526
+ * Two-way bindable selected rows: `[(selection)]="selected"`.
3527
+ *
3528
+ * Rows are matched by `dataKey` when one is set, and by object identity otherwise — so with no
3529
+ * `dataKey`, a refetch that produces new objects drops the selection. In `lazy` mode that is
3530
+ * almost always the wrong behaviour: set `dataKey`.
3531
+ */
3532
+ readonly selection: _angular_core.ModelSignal<T[]>;
3533
+ /**
3534
+ * Field name (or dot-path) uniquely identifying a row — `'id'` in most data sets.
3535
+ *
3536
+ * Used for selection identity and, when set, as the `@for` track key, which is what lets the
3537
+ * DOM survive a re-fetch of the same page instead of being torn down and rebuilt.
3538
+ */
3539
+ readonly dataKey: _angular_core.InputSignal<string>;
3540
+ /**
3541
+ * Whether the checkbox column renders. On by default once `selectionMode` is set; turn it off
3542
+ * for a table that selects by clicking the row itself, and pair it with `interactiveRows` so
3543
+ * that stays reachable by keyboard.
3544
+ */
3545
+ readonly showSelectionColumn: _angular_core.InputSignal<boolean>;
2987
3546
  readonly showRowNumbers: _angular_core.InputSignal<boolean>;
2988
3547
  readonly showTotal: _angular_core.InputSignal<boolean>;
2989
3548
  readonly emptyPlaceholder: _angular_core.InputSignal<string>;
@@ -2999,10 +3558,33 @@ declare class TableComponent<T extends object> {
2999
3558
  readonly stickyHeader: _angular_core.InputSignal<boolean>;
3000
3559
  /** Row density: lg (default) / md (compact) / sm (dense) */
3001
3560
  readonly size: _angular_core.InputSignal<GogSize>;
3561
+ /**
3562
+ * Fires when a header cell changes the sort — including the third click that clears it, which
3563
+ * emits `{ field: '', direction: null }`. In `lazy` mode this is the refetch signal; the table
3564
+ * has already reset to page 1 by the time it fires.
3565
+ */
3566
+ readonly gogSortChange: _angular_core.OutputEmitterRef<GogTableSortEvent>;
3567
+ /**
3568
+ * Fires when the page changes, with the new 1-based page. Only ever fires for a *user* action
3569
+ * or a clamp — not for the initial render.
3570
+ */
3571
+ readonly gogPageChange: _angular_core.OutputEmitterRef<number>;
3572
+ /** Fires when a row is clicked, or activated with Enter/Space when `interactiveRows` is on. */
3573
+ readonly gogRowClick: _angular_core.OutputEmitterRef<GogTableRowClickEvent<T>>;
3002
3574
  readonly columns: _angular_core.Signal<readonly GogColumn[]>;
3003
3575
  readonly templates: _angular_core.Signal<readonly TemplateDirective[]>;
3004
- readonly sortState: _angular_core.WritableSignal<SortState>;
3576
+ readonly sortState: _angular_core.WritableSignal<GogTableSortEvent>;
3577
+ /**
3578
+ * In `lazy` mode `value` is the server's answer — already sorted, already the right page — so
3579
+ * both this and `visibleRows` become pass-throughs. Re-sorting it locally would reorder one
3580
+ * page against a global ordering, which looks like corruption rather than a bug.
3581
+ */
3005
3582
  readonly sortedData: _angular_core.Signal<T[]>;
3583
+ /**
3584
+ * How many rows the paginator is dividing. `value.length` normally; `totalRecords` in `lazy`
3585
+ * mode, where `value` is only the current page. Also what `showTotal` reports.
3586
+ */
3587
+ readonly rowCount: _angular_core.Signal<number>;
3006
3588
  readonly totalPages: _angular_core.Signal<number>;
3007
3589
  /**
3008
3590
  * Resets to page 1 whenever the sort changes (a new sort re-orders the whole data set,
@@ -3012,9 +3594,50 @@ declare class TableComponent<T extends object> {
3012
3594
  * self-clamps against `totalPages` on its own, so this only has to handle the reset case.
3013
3595
  */
3014
3596
  readonly currentPage: _angular_core.WritableSignal<number>;
3597
+ /** In `lazy` mode the server already sliced the page — see `sortedData`. */
3015
3598
  readonly visibleRows: _angular_core.Signal<T[]>;
3599
+ /**
3600
+ * Resolved the same way `gog-paginator` resolves it, because the footer's own visibility
3601
+ * depends on it — see `hasPagination`.
3602
+ */
3603
+ protected readonly showsPageSizeSelect: _angular_core.Signal<boolean>;
3604
+ /**
3605
+ * Normally the paginator only earns its space once there is more than one page — but the
3606
+ * rows-per-page select lives inside it, and hiding the whole thing at one page would strand the
3607
+ * user on whatever size produced that single page with no way back to a smaller one.
3608
+ */
3016
3609
  readonly hasPagination: _angular_core.Signal<boolean>;
3610
+ private readonly globalConfig;
3611
+ /** `GOG_CONFIG.labels` → the built-in English defaults. No per-instance inputs: these name
3612
+ * table chrome, and an app that relabels them does so once. */
3613
+ protected readonly resolvedLabels: _angular_core.Signal<{
3614
+ total: string;
3615
+ pagination: string;
3616
+ selectRow: string;
3617
+ selectAllRows: string;
3618
+ }>;
3619
+ protected readonly hasSelection: _angular_core.Signal<boolean>;
3620
+ protected readonly hasSelectionColumn: _angular_core.Signal<boolean>;
3017
3621
  readonly emptyColspan: _angular_core.Signal<number>;
3622
+ /**
3623
+ * Identity for selection and `@for` tracking. `dataKey`'s value when set, the row object
3624
+ * otherwise — the object works for a static data set and breaks the moment rows are re-fetched,
3625
+ * which is exactly what `dataKey` is for.
3626
+ */
3627
+ protected rowKey(row: T): unknown;
3628
+ protected isSelected(row: T): boolean;
3629
+ /** All rows on the current page are selected — drives the header checkbox. */
3630
+ protected readonly allPageRowsSelected: _angular_core.Signal<boolean>;
3631
+ /** Some but not all — the header checkbox's indeterminate state. */
3632
+ protected readonly somePageRowsSelected: _angular_core.Signal<boolean>;
3633
+ protected toggleRowSelection(row: T, selected: boolean): void;
3634
+ /**
3635
+ * Header checkbox: selects or clears **the current page**, not the whole data set. Anything
3636
+ * else would be a lie in `lazy` mode, where the table has never seen the other pages — and
3637
+ * inconsistent between the two modes, which is worse than either behaviour alone.
3638
+ */
3639
+ protected toggleAllOnPage(selected: boolean): void;
3640
+ constructor();
3018
3641
  /**
3019
3642
  * A `gogColumnBody` template declared inside the column wins; the string-keyed
3020
3643
  * `<ng-template template="field" type="body">` is the deprecated fallback.
@@ -3025,7 +3648,15 @@ declare class TableComponent<T extends object> {
3025
3648
  bodyContext(row: T, col: GogColumn, index: number): GogColumnBodyContext<T>;
3026
3649
  /** Context for a `gogColumnHeader` template — see `GogColumnHeaderContext`. */
3027
3650
  headerContext(col: GogColumn): GogColumnHeaderContext;
3651
+ /**
3652
+ * Cycles the clicked column asc → desc → unsorted, and emits the result. The emit is last, so
3653
+ * a `lazy` consumer refetching from it already sees `currentPage` reset to 1.
3654
+ */
3028
3655
  toggleSort(col: GogColumn): void;
3656
+ /** Click, or Enter/Space on a focused row when `interactiveRows` is on. */
3657
+ protected emitRowClick(row: T, index: number, originalEvent: MouseEvent | KeyboardEvent): void;
3658
+ /** Enter and Space activate the focused row; Space must not also scroll the page. */
3659
+ protected onRowKeydown(row: T, index: number, event: KeyboardEvent): void;
3029
3660
  getSortDirection(field: string): SortDirection;
3030
3661
  getAriaSort(field: string): 'ascending' | 'descending' | null;
3031
3662
  handleSortClick(col: GogColumn): void;
@@ -3039,7 +3670,7 @@ declare class TableComponent<T extends object> {
3039
3670
  private readonly bodyTemplateMap;
3040
3671
  private readonly headerTemplateMap;
3041
3672
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TableComponent<any>, never>;
3042
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<TableComponent<any>, "gog-table", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "showRowNumbers": { "alias": "showRowNumbers"; "required": false; "isSignal": true; }; "showTotal": { "alias": "showTotal"; "required": false; "isSignal": true; }; "emptyPlaceholder": { "alias": "emptyPlaceholder"; "required": false; "isSignal": true; }; "paginatorPosition": { "alias": "paginatorPosition"; "required": false; "isSignal": true; }; "totalPosition": { "alias": "totalPosition"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "showColumnBorders": { "alias": "showColumnBorders"; "required": false; "isSignal": true; }; "stickyHeader": { "alias": "stickyHeader"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, ["columns", "templates"], never, true, never>;
3673
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TableComponent<any>, "gog-table", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "showPageSizeSelect": { "alias": "showPageSizeSelect"; "required": false; "isSignal": true; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; "isSignal": true; }; "lazy": { "alias": "lazy"; "required": false; "isSignal": true; }; "totalRecords": { "alias": "totalRecords"; "required": false; "isSignal": true; }; "interactiveRows": { "alias": "interactiveRows"; "required": false; "isSignal": true; }; "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "selection": { "alias": "selection"; "required": false; "isSignal": true; }; "dataKey": { "alias": "dataKey"; "required": false; "isSignal": true; }; "showSelectionColumn": { "alias": "showSelectionColumn"; "required": false; "isSignal": true; }; "showRowNumbers": { "alias": "showRowNumbers"; "required": false; "isSignal": true; }; "showTotal": { "alias": "showTotal"; "required": false; "isSignal": true; }; "emptyPlaceholder": { "alias": "emptyPlaceholder"; "required": false; "isSignal": true; }; "paginatorPosition": { "alias": "paginatorPosition"; "required": false; "isSignal": true; }; "totalPosition": { "alias": "totalPosition"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "showColumnBorders": { "alias": "showColumnBorders"; "required": false; "isSignal": true; }; "stickyHeader": { "alias": "stickyHeader"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, { "pageSize": "pageSizeChange"; "selection": "selectionChange"; "gogSortChange": "gogSortChange"; "gogPageChange": "gogPageChange"; "gogRowClick": "gogRowClick"; }, ["columns", "templates"], never, true, never>;
3043
3674
  }
3044
3675
 
3045
3676
  declare class SpinnerComponent {
@@ -3137,14 +3768,64 @@ declare class GogTooltipDirective {
3137
3768
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<GogTooltipDirective, "[gogTooltip]", never, { "gogTooltip": { "alias": "gogTooltip"; "required": false; "isSignal": true; }; "gogTooltipPosition": { "alias": "gogTooltipPosition"; "required": false; "isSignal": true; }; "gogTooltipShowDelay": { "alias": "gogTooltipShowDelay"; "required": false; "isSignal": true; }; "gogTooltipHideDelay": { "alias": "gogTooltipHideDelay"; "required": false; "isSignal": true; }; "gogTooltipDisabled": { "alias": "gogTooltipDisabled"; "required": false; "isSignal": true; }; "gogTooltipClass": { "alias": "gogTooltipClass"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3138
3769
  }
3139
3770
 
3771
+ /**
3772
+ * Owns the `data-theme` attribute on `<html>`, which is what every `--gog-*` palette block in
3773
+ * `theme.css` keys off.
3774
+ *
3775
+ * Zero-config behaviour is unchanged from 21.3.1: it adopts whatever `data-theme` is already on
3776
+ * the document, or `'light'` if there is none. Persistence and following the OS setting are
3777
+ * both **opt-in** through `GOG_CONFIG.theme`, so an app that never configures anything cannot
3778
+ * have its theme changed out from under it by an upgrade.
3779
+ */
3140
3780
  declare class ThemeService {
3141
3781
  private readonly document;
3142
3782
  private readonly root;
3143
- readonly theme: _angular_core.WritableSignal<string>;
3783
+ private readonly isBrowser;
3784
+ private readonly destroyRef;
3785
+ private readonly config;
3786
+ private readonly state;
3787
+ /**
3788
+ * The active theme name. Read-only on purpose: writing it directly would move the signal
3789
+ * without touching the DOM attribute the styles actually read, leaving the two silently out
3790
+ * of sync. Go through `setTheme`/`toggleTheme`.
3791
+ */
3792
+ readonly theme: Signal<string>;
3793
+ /**
3794
+ * Set once the app (or the user) has chosen a theme explicitly, which stops
3795
+ * `followSystem` from overriding that choice on the next OS-level change.
3796
+ */
3797
+ private hasExplicitChoice;
3144
3798
  constructor();
3145
3799
  setTheme(theme: string): void;
3800
+ /**
3801
+ * Flips between the configured light and dark theme names (`'light'`/`'dark'` by default).
3802
+ * From a third, custom theme this lands on the dark one, since that is the only reading of
3803
+ * "toggle" that terminates.
3804
+ */
3146
3805
  toggleTheme(): void;
3147
- private readTheme;
3806
+ /**
3807
+ * In precedence order:
3808
+ *
3809
+ * 1. a `data-theme` already on `<html>` — server-rendered or set by an inline script before
3810
+ * Angular booted, and either way a decision that has already been painted;
3811
+ * 2. the persisted choice, when `storageKey` is configured;
3812
+ * 3. the OS setting, when `followSystem` is on;
3813
+ * 4. `defaultTheme`, then `'light'`.
3814
+ */
3815
+ private resolveInitialTheme;
3816
+ /**
3817
+ * Keeps the theme in step with the OS while the app has no explicit choice of its own. Only
3818
+ * wired up when `followSystem` is on, so the default configuration adds no listener at all.
3819
+ */
3820
+ private watchSystemPreference;
3821
+ private prefersDark;
3822
+ /**
3823
+ * Storage access is wrapped because it throws rather than degrades in two ordinary cases:
3824
+ * Safari's private mode, and a browser configured to block site data. A theme preference is
3825
+ * not worth taking the app down for.
3826
+ */
3827
+ private readStored;
3828
+ private persist;
3148
3829
  private applyTheme;
3149
3830
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThemeService, never>;
3150
3831
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<ThemeService>;
@@ -3252,6 +3933,20 @@ interface GogGlobalConfig {
3252
3933
  /** Display and parse pattern (`dd.MM.yyyy`, `yyyy-MM-dd`, …). */
3253
3934
  format?: string;
3254
3935
  };
3936
+ /**
3937
+ * Applies to `gog-paginator`, and through it to `gog-table`'s built-in pagination.
3938
+ *
3939
+ * The page-size select is the one piece of paginator chrome an app decides once — either its
3940
+ * tables offer the choice or they don't, and the option list is a house style. Both are still
3941
+ * overridable per instance, for the page whose table genuinely needs `5, 10, 20` while the rest
3942
+ * of the app uses `20, 50, 100`.
3943
+ */
3944
+ paginator?: {
3945
+ /** Whether the rows-per-page select renders at all. **Off by default.** */
3946
+ showPageSizeSelect?: boolean;
3947
+ /** The choices it offers. Defaults to `[10, 20, 30, 40, 50]`. */
3948
+ pageSizeOptions?: number[];
3949
+ };
3255
3950
  /** Applies to `gog-autocomplete`. */
3256
3951
  autocomplete?: {
3257
3952
  /**
@@ -3288,6 +3983,99 @@ interface GogGlobalConfig {
3288
3983
  /** How long a non-sticky toast stays up, in ms. */
3289
3984
  duration?: number;
3290
3985
  };
3986
+ /**
3987
+ * Every fixed, user-visible string the library renders — button text and accessible names for
3988
+ * chrome the consumer never writes markup for.
3989
+ *
3990
+ * These are here rather than as one input per string because they are the definition of a
3991
+ * setting an app states once: a Russian-language app relabels "Clear" once, not on all 340
3992
+ * fields. Where a per-instance input already exists (`clearAriaLabel`, `todayLabel`, …) it
3993
+ * still wins for that one control — the usual instance → config → default order.
3994
+ *
3995
+ * Deliberately excludes anything that is *content* rather than chrome: `gog-checkbox`'s
3996
+ * `ariaLabel`, `gog-button`'s `ariaLabel`, a field's `label` or `placeholder`. Those differ
3997
+ * per instance by definition and have no meaningful app-wide value.
3998
+ */
3999
+ labels?: {
4000
+ /** Clear button on `gog-inputfield` / `gog-textarea`. */
4001
+ clear?: string;
4002
+ /**
4003
+ * Clear button on `gog-select` / `gog-multiselect` / `gog-autocomplete`, which clears a
4004
+ * selection rather than text.
4005
+ */
4006
+ clearSelection?: string;
4007
+ /** Clear button on `gog-datepicker`. */
4008
+ clearDate?: string;
4009
+ /** `gog-multiselect`'s select-all / clear-all buttons — visible text, not just a label. */
4010
+ selectAll?: string;
4011
+ clearAll?: string;
4012
+ /** `gog-inputfield`'s number spin buttons. */
4013
+ increment?: string;
4014
+ decrement?: string;
4015
+ /** `gog-inputfield`'s password reveal toggle, in its two states. */
4016
+ showPassword?: string;
4017
+ hidePassword?: string;
4018
+ /** Close buttons on the two service-driven overlays. */
4019
+ closeDialog?: string;
4020
+ closeToast?: string;
4021
+ /** `gog-paginator`'s `<nav>` accessible name and its two step buttons. */
4022
+ pagination?: string;
4023
+ previousPage?: string;
4024
+ nextPage?: string;
4025
+ /**
4026
+ * `gog-paginator`'s per-page button names ("Go to page 4", "Page 4, current page").
4027
+ *
4028
+ * A function rather than a string, and the only one in this block: these interpolate the
4029
+ * page number, and a template string with a `{0}` placeholder would be a second, weaker
4030
+ * formatting language to learn — one that also can't express languages where the number's
4031
+ * position or the surrounding grammar depends on its value. The default is
4032
+ * `` (page, isCurrent) => isCurrent ? `Page ${page}, current page` : `Go to page ${page}` ``.
4033
+ */
4034
+ page?: (page: number, isCurrent: boolean) => string;
4035
+ /** `gog-datepicker`'s button that opens the calendar panel. */
4036
+ openCalendar?: string;
4037
+ /** `gog-paginator`'s rows-per-page select. */
4038
+ rowsPerPage?: string;
4039
+ /** `gog-table`: the row-count label, its paginator, and the selection checkboxes. */
4040
+ total?: string;
4041
+ tablePagination?: string;
4042
+ selectRow?: string;
4043
+ selectAllRows?: string;
4044
+ /** `gog-calendar` navigation and shortcuts. */
4045
+ today?: string;
4046
+ thisMonth?: string;
4047
+ previousMonth?: string;
4048
+ nextMonth?: string;
4049
+ previousYear?: string;
4050
+ nextYear?: string;
4051
+ /** `gog-calendar`'s time section. */
4052
+ hours?: string;
4053
+ minutes?: string;
4054
+ seconds?: string;
4055
+ };
4056
+ /**
4057
+ * Applies to `ThemeService`. Every field is off/neutral by default, so an app that configures
4058
+ * nothing keeps the pre-21.3.2 behaviour: adopt whatever `data-theme` is already on `<html>`,
4059
+ * else `'light'`.
4060
+ */
4061
+ theme?: {
4062
+ /**
4063
+ * `localStorage` key the chosen theme is written to and read back from. Unset, nothing is
4064
+ * persisted and the theme resets on every load.
4065
+ */
4066
+ storageKey?: string | null;
4067
+ /** Theme applied when nothing else decides. `'light'` by default. */
4068
+ defaultTheme?: string;
4069
+ /**
4070
+ * Whether to fall back to the OS `prefers-color-scheme` setting — and to keep following it
4071
+ * until the app calls `setTheme`/`toggleTheme`. Off by default: switching this on changes
4072
+ * which theme an existing app opens in.
4073
+ */
4074
+ followSystem?: boolean;
4075
+ /** Theme names `toggleTheme()` alternates between, and `followSystem` maps the OS setting to. */
4076
+ lightTheme?: string;
4077
+ darkTheme?: string;
4078
+ };
3291
4079
  }
3292
4080
  /**
3293
4081
  * Resolves to `{}` — every field falls through to its component's own hardcoded default —
@@ -3389,7 +4177,7 @@ declare class GogFloatLabelState {
3389
4177
  }
3390
4178
 
3391
4179
  /** Every `--gog-*` custom property the library declares or documents as an override point. */
3392
- type GogTokenName = '--gog-accent-bright' | '--gog-accent-color' | '--gog-accent-dim' | '--gog-accent-pale' | '--gog-accent-text-color' | '--gog-accordion-accent-color' | '--gog-accordion-body-bg' | '--gog-accordion-body-color' | '--gog-accordion-body-font-family' | '--gog-accordion-body-font-size' | '--gog-accordion-body-lift' | '--gog-accordion-body-line-height' | '--gog-accordion-body-padding-bottom' | '--gog-accordion-body-padding-top' | '--gog-accordion-body-radius' | '--gog-accordion-body-transition-duration' | '--gog-accordion-border-color' | '--gog-accordion-border-style' | '--gog-accordion-border-width' | '--gog-accordion-chevron-font-size' | '--gog-accordion-chevron-size' | '--gog-accordion-chevron-transition-duration' | '--gog-accordion-content-gap' | '--gog-accordion-disabled-opacity' | '--gog-accordion-focus-ring-width' | '--gog-accordion-font-family' | '--gog-accordion-font-size' | '--gog-accordion-header-bg' | '--gog-accordion-header-gap' | '--gog-accordion-header-text-transform' | '--gog-accordion-hover-bg' | '--gog-accordion-hover-ring' | '--gog-accordion-letter-spacing' | '--gog-accordion-lg-body-font-size' | '--gog-accordion-lg-body-line-height' | '--gog-accordion-lg-body-padding-bottom' | '--gog-accordion-lg-body-padding-top' | '--gog-accordion-lg-chevron-font-size' | '--gog-accordion-lg-chevron-size' | '--gog-accordion-lg-content-gap' | '--gog-accordion-lg-font-size' | '--gog-accordion-lg-letter-spacing' | '--gog-accordion-lg-padding-x' | '--gog-accordion-lg-padding-y' | '--gog-accordion-md-body-font-size' | '--gog-accordion-md-body-line-height' | '--gog-accordion-md-body-padding-bottom' | '--gog-accordion-md-body-padding-top' | '--gog-accordion-md-chevron-font-size' | '--gog-accordion-md-chevron-size' | '--gog-accordion-md-content-gap' | '--gog-accordion-md-font-size' | '--gog-accordion-md-letter-spacing' | '--gog-accordion-md-padding-x' | '--gog-accordion-md-padding-y' | '--gog-accordion-padding-x' | '--gog-accordion-padding-y' | '--gog-accordion-radius' | '--gog-accordion-slg-body-font-size' | '--gog-accordion-slg-body-line-height' | '--gog-accordion-slg-body-padding-bottom' | '--gog-accordion-slg-body-padding-top' | '--gog-accordion-slg-chevron-font-size' | '--gog-accordion-slg-chevron-size' | '--gog-accordion-slg-content-gap' | '--gog-accordion-slg-font-size' | '--gog-accordion-slg-letter-spacing' | '--gog-accordion-slg-padding-x' | '--gog-accordion-slg-padding-y' | '--gog-accordion-sm-body-font-size' | '--gog-accordion-sm-body-line-height' | '--gog-accordion-sm-body-padding-bottom' | '--gog-accordion-sm-body-padding-top' | '--gog-accordion-sm-chevron-font-size' | '--gog-accordion-sm-chevron-size' | '--gog-accordion-sm-content-gap' | '--gog-accordion-sm-font-size' | '--gog-accordion-sm-letter-spacing' | '--gog-accordion-sm-padding-x' | '--gog-accordion-sm-padding-y' | '--gog-accordion-text-color' | '--gog-accordion-transition-duration' | '--gog-accordion-xsm-body-font-size' | '--gog-accordion-xsm-body-line-height' | '--gog-accordion-xsm-body-padding-bottom' | '--gog-accordion-xsm-body-padding-top' | '--gog-accordion-xsm-chevron-font-size' | '--gog-accordion-xsm-chevron-size' | '--gog-accordion-xsm-content-gap' | '--gog-accordion-xsm-font-size' | '--gog-accordion-xsm-letter-spacing' | '--gog-accordion-xsm-padding-x' | '--gog-accordion-xsm-padding-y' | '--gog-autocomplete-actions-gap' | '--gog-autocomplete-actions-inset' | '--gog-autocomplete-actions-reserve' | '--gog-autocomplete-bg' | '--gog-autocomplete-border-color' | '--gog-autocomplete-border-style' | '--gog-autocomplete-border-width' | '--gog-autocomplete-clear-color' | '--gog-autocomplete-clear-hover-color' | '--gog-autocomplete-clear-icon-ratio' | '--gog-autocomplete-color' | '--gog-autocomplete-disabled-opacity' | '--gog-autocomplete-empty-color' | '--gog-autocomplete-empty-font-size' | '--gog-autocomplete-error-border-color' | '--gog-autocomplete-error-color' | '--gog-autocomplete-error-font-family' | '--gog-autocomplete-error-font-size' | '--gog-autocomplete-field-bg' | '--gog-autocomplete-float-label-in-top' | '--gog-autocomplete-float-label-on-bg' | '--gog-autocomplete-float-label-over-gap' | '--gog-autocomplete-float-label-over-reserve' | '--gog-autocomplete-float-label-reserve' | '--gog-autocomplete-focus-ring-color' | '--gog-autocomplete-focus-ring-offset' | '--gog-autocomplete-focus-ring-width' | '--gog-autocomplete-font-family' | '--gog-autocomplete-font-size' | '--gog-autocomplete-gap' | '--gog-autocomplete-hover-border-color' | '--gog-autocomplete-label-color' | '--gog-autocomplete-label-font-family' | '--gog-autocomplete-label-font-size' | '--gog-autocomplete-label-font-weight' | '--gog-autocomplete-label-letter-spacing' | '--gog-autocomplete-label-text-transform' | '--gog-autocomplete-line-height' | '--gog-autocomplete-min-width' | '--gog-autocomplete-option-color' | '--gog-autocomplete-option-gap' | '--gog-autocomplete-option-height' | '--gog-autocomplete-option-hover-bg' | '--gog-autocomplete-option-hover-color' | '--gog-autocomplete-option-padding' | '--gog-autocomplete-option-radius' | '--gog-autocomplete-option-selected-bg' | '--gog-autocomplete-option-selected-color' | '--gog-autocomplete-options-padding' | '--gog-autocomplete-padding-x' | '--gog-autocomplete-padding-y' | '--gog-autocomplete-panel-bg' | '--gog-autocomplete-panel-border-color' | '--gog-autocomplete-panel-border-style' | '--gog-autocomplete-panel-border-width' | '--gog-autocomplete-panel-gap' | '--gog-autocomplete-panel-max-height' | '--gog-autocomplete-panel-max-width' | '--gog-autocomplete-panel-radius' | '--gog-autocomplete-panel-shadow' | '--gog-autocomplete-placeholder-color' | '--gog-autocomplete-radius' | '--gog-autocomplete-spinner-size' | '--gog-autocomplete-text-color' | '--gog-autocomplete-transition-duration' | '--gog-background-color' | '--gog-badge-bg' | '--gog-badge-border-color' | '--gog-badge-border-style' | '--gog-badge-border-width' | '--gog-badge-color' | '--gog-badge-danger-bg' | '--gog-badge-danger-color' | '--gog-badge-dot-size' | '--gog-badge-font-family' | '--gog-badge-font-size' | '--gog-badge-font-weight' | '--gog-badge-info-bg' | '--gog-badge-info-color' | '--gog-badge-line-height' | '--gog-badge-offset' | '--gog-badge-padding-inline' | '--gog-badge-radius' | '--gog-badge-size' | '--gog-badge-success-bg' | '--gog-badge-success-color' | '--gog-badge-warning-bg' | '--gog-badge-warning-color' | '--gog-badge-z' | '--gog-border-color' | '--gog-btn-active-scale' | '--gog-btn-bg' | '--gog-btn-border' | '--gog-btn-border-style' | '--gog-btn-border-width' | '--gog-btn-color' | '--gog-btn-disabled-opacity' | '--gog-btn-focus-ring-offset' | '--gog-btn-focus-ring-width' | '--gog-btn-font-family' | '--gog-btn-font-weight' | '--gog-btn-gap' | '--gog-btn-ghost-bg' | '--gog-btn-ghost-border' | '--gog-btn-ghost-color' | '--gog-btn-ghost-hover-bg' | '--gog-btn-ghost-hover-color' | '--gog-btn-ghost-hover-shadow' | '--gog-btn-ghost-shadow' | '--gog-btn-ghost-spinner-color' | '--gog-btn-hover-bg' | '--gog-btn-hover-color' | '--gog-btn-hover-shadow' | '--gog-btn-letter-spacing' | '--gog-btn-lg-font-size' | '--gog-btn-lg-padding' | '--gog-btn-line-height' | '--gog-btn-loading-opacity' | '--gog-btn-md-font-size' | '--gog-btn-md-padding' | '--gog-btn-outline-bg' | '--gog-btn-outline-border' | '--gog-btn-outline-color' | '--gog-btn-outline-hover-bg' | '--gog-btn-outline-hover-color' | '--gog-btn-outline-hover-shadow' | '--gog-btn-outline-shadow' | '--gog-btn-outline-spinner-color' | '--gog-btn-primary-bg' | '--gog-btn-primary-border' | '--gog-btn-primary-color' | '--gog-btn-primary-hover-bg' | '--gog-btn-primary-hover-color' | '--gog-btn-primary-hover-shadow' | '--gog-btn-primary-shadow' | '--gog-btn-primary-spinner-color' | '--gog-btn-radius' | '--gog-btn-secondary-bg' | '--gog-btn-secondary-border' | '--gog-btn-secondary-color' | '--gog-btn-secondary-hover-bg' | '--gog-btn-secondary-hover-color' | '--gog-btn-secondary-hover-shadow' | '--gog-btn-secondary-shadow' | '--gog-btn-secondary-spinner-color' | '--gog-btn-shadow' | '--gog-btn-slg-font-size' | '--gog-btn-slg-padding' | '--gog-btn-sm-font-size' | '--gog-btn-sm-padding' | '--gog-btn-spinner-color' | '--gog-btn-spinner-max-size' | '--gog-btn-text-transform' | '--gog-btn-transition-duration' | '--gog-btn-xsm-font-size' | '--gog-btn-xsm-padding' | '--gog-button-toggle-bg' | '--gog-button-toggle-border-color' | '--gog-button-toggle-border-style' | '--gog-button-toggle-border-width' | '--gog-button-toggle-color' | '--gog-button-toggle-disabled-opacity' | '--gog-button-toggle-focus-ring-color' | '--gog-button-toggle-focus-ring-offset' | '--gog-button-toggle-focus-ring-width' | '--gog-button-toggle-font-family' | '--gog-button-toggle-font-size' | '--gog-button-toggle-font-weight' | '--gog-button-toggle-gap' | '--gog-button-toggle-hover-bg' | '--gog-button-toggle-hover-color' | '--gog-button-toggle-icon-size' | '--gog-button-toggle-letter-spacing' | '--gog-button-toggle-line-height' | '--gog-button-toggle-padding' | '--gog-button-toggle-radius' | '--gog-button-toggle-rest-bg' | '--gog-button-toggle-rest-color' | '--gog-button-toggle-selected-bg' | '--gog-button-toggle-selected-border-color' | '--gog-button-toggle-selected-color' | '--gog-button-toggle-separated-gap' | '--gog-button-toggle-text-transform' | '--gog-button-toggle-transition-duration' | '--gog-calendar-action-padding' | '--gog-calendar-color' | '--gog-calendar-day-bg' | '--gog-calendar-day-border-style' | '--gog-calendar-day-border-width' | '--gog-calendar-day-color' | '--gog-calendar-day-hover-bg' | '--gog-calendar-day-outside-color' | '--gog-calendar-day-radius' | '--gog-calendar-day-rest-bg' | '--gog-calendar-day-rest-color' | '--gog-calendar-day-size' | '--gog-calendar-disabled-opacity' | '--gog-calendar-divider-color' | '--gog-calendar-divider-style' | '--gog-calendar-divider-width' | '--gog-calendar-focus-ring-color' | '--gog-calendar-focus-ring-offset' | '--gog-calendar-focus-ring-width' | '--gog-calendar-font-family' | '--gog-calendar-header-gap' | '--gog-calendar-header-margin' | '--gog-calendar-lg-day-size' | '--gog-calendar-lg-font-size' | '--gog-calendar-md-day-size' | '--gog-calendar-md-font-size' | '--gog-calendar-months-gap' | '--gog-calendar-nav-bg' | '--gog-calendar-nav-color' | '--gog-calendar-nav-hover-bg' | '--gog-calendar-nav-hover-color' | '--gog-calendar-nav-icon-overlap' | '--gog-calendar-nav-icon-size' | '--gog-calendar-nav-radius' | '--gog-calendar-nav-size' | '--gog-calendar-padding' | '--gog-calendar-range-bg' | '--gog-calendar-range-color' | '--gog-calendar-selected-bg' | '--gog-calendar-selected-color' | '--gog-calendar-selected-font-weight' | '--gog-calendar-slg-day-size' | '--gog-calendar-slg-font-size' | '--gog-calendar-sm-day-size' | '--gog-calendar-sm-font-size' | '--gog-calendar-time-gap' | '--gog-calendar-time-input-bg' | '--gog-calendar-time-input-padding' | '--gog-calendar-time-input-width' | '--gog-calendar-time-margin' | '--gog-calendar-title-color' | '--gog-calendar-title-font-weight' | '--gog-calendar-today-border-color' | '--gog-calendar-today-font-weight' | '--gog-calendar-transition-duration' | '--gog-calendar-weekday-color' | '--gog-calendar-weekday-font-size' | '--gog-calendar-weekday-font-weight' | '--gog-calendar-weekday-padding' | '--gog-calendar-weekday-text-transform' | '--gog-calendar-xsm-day-size' | '--gog-calendar-xsm-font-size' | '--gog-checkbox-bg' | '--gog-checkbox-border-color' | '--gog-checkbox-border-style' | '--gog-checkbox-border-width' | '--gog-checkbox-box-size' | '--gog-checkbox-checked-bg' | '--gog-checkbox-checked-border' | '--gog-checkbox-dash-height' | '--gog-checkbox-dash-radius' | '--gog-checkbox-dash-width-ratio' | '--gog-checkbox-disabled-opacity' | '--gog-checkbox-focus-ring' | '--gog-checkbox-focus-ring-offset' | '--gog-checkbox-focus-ring-width' | '--gog-checkbox-font-family' | '--gog-checkbox-gap' | '--gog-checkbox-icon-color' | '--gog-checkbox-icon-size' | '--gog-checkbox-label-color' | '--gog-checkbox-label-line-height' | '--gog-checkbox-label-size' | '--gog-checkbox-padding' | '--gog-checkbox-radius' | '--gog-checkbox-transition-duration' | '--gog-chip-avatar-inset-ratio' | '--gog-chip-avatar-size' | '--gog-chip-bg' | '--gog-chip-border' | '--gog-chip-border-style' | '--gog-chip-border-width' | '--gog-chip-color' | '--gog-chip-disabled-opacity' | '--gog-chip-focus-ring-offset' | '--gog-chip-focus-ring-width' | '--gog-chip-font-family' | '--gog-chip-font-size' | '--gog-chip-font-weight' | '--gog-chip-gap' | '--gog-chip-hover-bg' | '--gog-chip-icon-size' | '--gog-chip-lg-avatar-size' | '--gog-chip-lg-font-size' | '--gog-chip-lg-gap' | '--gog-chip-lg-icon-size' | '--gog-chip-lg-padding-block' | '--gog-chip-lg-padding-inline' | '--gog-chip-lg-remove-size' | '--gog-chip-line-height' | '--gog-chip-md-avatar-size' | '--gog-chip-md-font-size' | '--gog-chip-md-gap' | '--gog-chip-md-icon-size' | '--gog-chip-md-padding-block' | '--gog-chip-md-padding-inline' | '--gog-chip-md-remove-size' | '--gog-chip-padding-block' | '--gog-chip-padding-inline' | '--gog-chip-pill-radius' | '--gog-chip-radius' | '--gog-chip-remove-color' | '--gog-chip-remove-hover-color' | '--gog-chip-remove-inset-ratio' | '--gog-chip-remove-scale' | '--gog-chip-remove-size' | '--gog-chip-slg-avatar-size' | '--gog-chip-slg-font-size' | '--gog-chip-slg-gap' | '--gog-chip-slg-icon-size' | '--gog-chip-slg-padding-block' | '--gog-chip-slg-padding-inline' | '--gog-chip-slg-remove-size' | '--gog-chip-sm-avatar-size' | '--gog-chip-sm-font-size' | '--gog-chip-sm-gap' | '--gog-chip-sm-icon-size' | '--gog-chip-sm-padding-block' | '--gog-chip-sm-padding-inline' | '--gog-chip-sm-remove-size' | '--gog-chip-xsm-avatar-size' | '--gog-chip-xsm-font-size' | '--gog-chip-xsm-gap' | '--gog-chip-xsm-icon-size' | '--gog-chip-xsm-padding-block' | '--gog-chip-xsm-padding-inline' | '--gog-chip-xsm-remove-size' | '--gog-collapsible-disabled-opacity' | '--gog-collapsible-max-height' | '--gog-collapsible-transition-duration' | '--gog-confirm-actions-gap' | '--gog-confirm-actions-offset' | '--gog-confirm-color' | '--gog-confirm-description-color' | '--gog-confirm-gap' | '--gog-confirm-max-width' | '--gog-confirm-min-width' | '--gog-control-border-style' | '--gog-control-border-width' | '--gog-control-checkbox-box-size-lg' | '--gog-control-checkbox-box-size-md' | '--gog-control-checkbox-box-size-slg' | '--gog-control-checkbox-box-size-sm' | '--gog-control-checkbox-box-size-xsm' | '--gog-control-checkbox-icon-size-lg' | '--gog-control-checkbox-icon-size-md' | '--gog-control-checkbox-icon-size-slg' | '--gog-control-checkbox-icon-size-sm' | '--gog-control-checkbox-icon-size-xsm' | '--gog-control-checkbox-label-size-lg' | '--gog-control-checkbox-label-size-md' | '--gog-control-checkbox-label-size-slg' | '--gog-control-checkbox-label-size-sm' | '--gog-control-checkbox-label-size-xsm' | '--gog-control-checkbox-padding' | '--gog-control-icon-offset' | '--gog-control-padding-x' | '--gog-control-padding-y' | '--gog-danger-color' | '--gog-datepicker-actions-gap' | '--gog-datepicker-actions-inset' | '--gog-datepicker-actions-reserve' | '--gog-datepicker-bg' | '--gog-datepicker-border-color' | '--gog-datepicker-border-style' | '--gog-datepicker-border-width' | '--gog-datepicker-clear-color' | '--gog-datepicker-clear-icon-ratio' | '--gog-datepicker-color' | '--gog-datepicker-disabled-opacity' | '--gog-datepicker-error-border-color' | '--gog-datepicker-error-color' | '--gog-datepicker-error-font-family' | '--gog-datepicker-error-font-size' | '--gog-datepicker-field-bg' | '--gog-datepicker-float-label-in-top' | '--gog-datepicker-float-label-on-bg' | '--gog-datepicker-float-label-over-gap' | '--gog-datepicker-float-label-over-reserve' | '--gog-datepicker-float-label-reserve' | '--gog-datepicker-focus-ring-color' | '--gog-datepicker-focus-ring-offset' | '--gog-datepicker-focus-ring-width' | '--gog-datepicker-font-family' | '--gog-datepicker-font-size' | '--gog-datepicker-gap' | '--gog-datepicker-hover-border-color' | '--gog-datepicker-icon-color' | '--gog-datepicker-icon-hover-color' | '--gog-datepicker-label-color' | '--gog-datepicker-label-font-family' | '--gog-datepicker-label-font-size' | '--gog-datepicker-label-letter-spacing' | '--gog-datepicker-label-text-transform' | '--gog-datepicker-line-height' | '--gog-datepicker-min-width' | '--gog-datepicker-padding-x' | '--gog-datepicker-padding-y' | '--gog-datepicker-panel-bg' | '--gog-datepicker-panel-border-color' | '--gog-datepicker-panel-border-style' | '--gog-datepicker-panel-border-width' | '--gog-datepicker-panel-gap' | '--gog-datepicker-panel-radius' | '--gog-datepicker-panel-shadow' | '--gog-datepicker-placeholder-color' | '--gog-datepicker-radius' | '--gog-datepicker-text-color' | '--gog-datepicker-toggle-icon-size' | '--gog-datepicker-transition-duration' | '--gog-dialog-backdrop-bg' | '--gog-dialog-backdrop-blur' | '--gog-dialog-backdrop-fade-duration' | '--gog-dialog-backdrop-padding' | '--gog-dialog-bg' | '--gog-dialog-body-max-height' | '--gog-dialog-body-padding' | '--gog-dialog-border' | '--gog-dialog-border-style' | '--gog-dialog-border-width' | '--gog-dialog-close-color' | '--gog-dialog-close-focus-ring' | '--gog-dialog-close-focus-ring-offset' | '--gog-dialog-close-focus-ring-width' | '--gog-dialog-close-font-size' | '--gog-dialog-close-hover-bg' | '--gog-dialog-close-hover-border' | '--gog-dialog-close-hover-color' | '--gog-dialog-close-size' | '--gog-dialog-color' | '--gog-dialog-enter-distance' | '--gog-dialog-enter-duration' | '--gog-dialog-font-family' | '--gog-dialog-header-border-color' | '--gog-dialog-header-gap' | '--gog-dialog-header-padding' | '--gog-dialog-max-height' | '--gog-dialog-min-width' | '--gog-dialog-offset-x' | '--gog-dialog-offset-y' | '--gog-dialog-radius' | '--gog-dialog-shadow' | '--gog-disabled-opacity' | '--gog-divider-block-spacing' | '--gog-divider-color' | '--gog-divider-dashed-style' | '--gog-divider-dotted-style' | '--gog-divider-inline-spacing' | '--gog-divider-inset-size' | '--gog-divider-label-color' | '--gog-divider-label-font-family' | '--gog-divider-label-font-size' | '--gog-divider-label-font-weight' | '--gog-divider-label-gap' | '--gog-divider-label-line-height' | '--gog-divider-line-color' | '--gog-divider-line-thickness' | '--gog-divider-solid-style' | '--gog-divider-spacing' | '--gog-divider-thickness' | '--gog-divider-vertical-length' | '--gog-dropdown-z' | '--gog-duration-base' | '--gog-duration-fast' | '--gog-duration-slow' | '--gog-easing' | '--gog-field-float-label-in-top' | '--gog-field-float-label-over-gap' | '--gog-field-float-label-over-reserve' | '--gog-field-float-label-reserve' | '--gog-field-lg-font-size' | '--gog-field-lg-icon-inset' | '--gog-field-lg-icon-offset' | '--gog-field-lg-padding-x' | '--gog-field-lg-padding-y' | '--gog-field-md-font-size' | '--gog-field-md-icon-inset' | '--gog-field-md-icon-offset' | '--gog-field-md-padding-x' | '--gog-field-md-padding-y' | '--gog-field-slg-font-size' | '--gog-field-slg-icon-inset' | '--gog-field-slg-icon-offset' | '--gog-field-slg-padding-x' | '--gog-field-slg-padding-y' | '--gog-field-sm-font-size' | '--gog-field-sm-icon-inset' | '--gog-field-sm-icon-offset' | '--gog-field-sm-padding-x' | '--gog-field-sm-padding-y' | '--gog-field-xsm-font-size' | '--gog-field-xsm-icon-inset' | '--gog-field-xsm-icon-offset' | '--gog-field-xsm-padding-x' | '--gog-field-xsm-padding-y' | '--gog-focus-ring-offset' | '--gog-focus-ring-width' | '--gog-font-body' | '--gog-font-heading' | '--gog-font-mono' | '--gog-hover-color' | '--gog-icon-fallback-size' | '--gog-icon-size' | '--gog-icon-stroke-width' | '--gog-info-color' | '--gog-input-clear-icon-ratio' | '--gog-input-clear-inset' | '--gog-input-clear-radius' | '--gog-input-disabled-opacity' | '--gog-input-error-color' | '--gog-input-error-font-size' | '--gog-input-error-offset' | '--gog-input-field-bg' | '--gog-input-field-border' | '--gog-input-field-border-style' | '--gog-input-field-border-width' | '--gog-input-field-color' | '--gog-input-float-label-in-top' | '--gog-input-float-label-on-bg' | '--gog-input-float-label-over-gap' | '--gog-input-float-label-over-reserve' | '--gog-input-float-label-reserve' | '--gog-input-focus-border' | '--gog-input-focus-glow' | '--gog-input-focus-ring' | '--gog-input-focus-ring-offset' | '--gog-input-focus-ring-width' | '--gog-input-font' | '--gog-input-font-family' | '--gog-input-gap' | '--gog-input-icon-action-radius' | '--gog-input-icon-color' | '--gog-input-icon-focus-ring-width' | '--gog-input-icon-hover-color' | '--gog-input-label-color' | '--gog-input-label-font-family' | '--gog-input-label-font-size' | '--gog-input-label-letter-spacing' | '--gog-input-label-text-transform' | '--gog-input-padding-x' | '--gog-input-padding-y' | '--gog-input-placeholder-color' | '--gog-input-radius' | '--gog-input-transition-duration' | '--gog-ms-actions-gap' | '--gog-ms-actions-inset' | '--gog-ms-arrow-icon-ratio' | '--gog-ms-arrow-transition-duration' | '--gog-ms-border-color' | '--gog-ms-checkbox-bg' | '--gog-ms-checkbox-border' | '--gog-ms-checkbox-checked-bg' | '--gog-ms-checkbox-checked-color' | '--gog-ms-clear-icon-ratio' | '--gog-ms-clear-radius' | '--gog-ms-controls-gap' | '--gog-ms-controls-padding' | '--gog-ms-disabled-opacity' | '--gog-ms-error-color' | '--gog-ms-error-font-size' | '--gog-ms-error-offset' | '--gog-ms-field-bg' | '--gog-ms-field-border' | '--gog-ms-field-border-style' | '--gog-ms-field-border-width' | '--gog-ms-field-color' | '--gog-ms-filter-border-color' | '--gog-ms-filter-border-style' | '--gog-ms-filter-border-width' | '--gog-ms-filter-empty-color' | '--gog-ms-filter-empty-padding' | '--gog-ms-filter-input-bg' | '--gog-ms-filter-input-border' | '--gog-ms-filter-input-color' | '--gog-ms-filter-input-padding-x' | '--gog-ms-filter-input-padding-y' | '--gog-ms-filter-input-radius' | '--gog-ms-filter-padding' | '--gog-ms-float-label-in-top' | '--gog-ms-float-label-over-gap' | '--gog-ms-float-label-over-reserve' | '--gog-ms-float-label-reserve' | '--gog-ms-focus-border' | '--gog-ms-focus-glow' | '--gog-ms-focus-ring' | '--gog-ms-focus-ring-offset' | '--gog-ms-focus-ring-width' | '--gog-ms-font-family' | '--gog-ms-gap' | '--gog-ms-label-color' | '--gog-ms-label-font-family' | '--gog-ms-label-font-size' | '--gog-ms-label-letter-spacing' | '--gog-ms-label-text-transform' | '--gog-ms-mark-icon-ratio' | '--gog-ms-mark-size-ratio' | '--gog-ms-min-width' | '--gog-ms-option-color' | '--gog-ms-option-disabled-opacity' | '--gog-ms-option-gap' | '--gog-ms-option-gap-inline' | '--gog-ms-option-height' | '--gog-ms-option-hover-bg' | '--gog-ms-option-radius' | '--gog-ms-option-transition-duration' | '--gog-ms-options-padding' | '--gog-ms-overflow-color' | '--gog-ms-overflow-font-size' | '--gog-ms-overflow-gap' | '--gog-ms-panel-bg' | '--gog-ms-panel-border' | '--gog-ms-panel-max-height' | '--gog-ms-panel-max-width' | '--gog-ms-panel-offset' | '--gog-ms-panel-shadow' | '--gog-ms-placeholder-color' | '--gog-ms-radius' | '--gog-ms-transition-duration' | '--gog-ms-value-color' | '--gog-multiselect-actions-gap' | '--gog-multiselect-actions-inset' | '--gog-multiselect-arrow-icon-ratio' | '--gog-multiselect-arrow-transition-duration' | '--gog-multiselect-border-color' | '--gog-multiselect-checkbox-bg' | '--gog-multiselect-checkbox-border' | '--gog-multiselect-checkbox-checked-bg' | '--gog-multiselect-checkbox-checked-color' | '--gog-multiselect-clear-icon-ratio' | '--gog-multiselect-clear-radius' | '--gog-multiselect-controls-gap' | '--gog-multiselect-controls-padding' | '--gog-multiselect-disabled-opacity' | '--gog-multiselect-error-color' | '--gog-multiselect-error-font-size' | '--gog-multiselect-error-offset' | '--gog-multiselect-field-bg' | '--gog-multiselect-field-border' | '--gog-multiselect-field-border-style' | '--gog-multiselect-field-border-width' | '--gog-multiselect-field-color' | '--gog-multiselect-filter-border-color' | '--gog-multiselect-filter-border-style' | '--gog-multiselect-filter-border-width' | '--gog-multiselect-filter-empty-color' | '--gog-multiselect-filter-empty-padding' | '--gog-multiselect-filter-input-bg' | '--gog-multiselect-filter-input-border' | '--gog-multiselect-filter-input-color' | '--gog-multiselect-filter-input-padding-x' | '--gog-multiselect-filter-input-padding-y' | '--gog-multiselect-filter-input-radius' | '--gog-multiselect-filter-padding' | '--gog-multiselect-float-label-in-top' | '--gog-multiselect-float-label-on-bg' | '--gog-multiselect-float-label-over-gap' | '--gog-multiselect-float-label-over-reserve' | '--gog-multiselect-float-label-reserve' | '--gog-multiselect-focus-border' | '--gog-multiselect-focus-glow' | '--gog-multiselect-focus-ring' | '--gog-multiselect-focus-ring-offset' | '--gog-multiselect-focus-ring-width' | '--gog-multiselect-font-family' | '--gog-multiselect-font-size' | '--gog-multiselect-gap' | '--gog-multiselect-label-color' | '--gog-multiselect-label-font-family' | '--gog-multiselect-label-font-size' | '--gog-multiselect-label-letter-spacing' | '--gog-multiselect-label-text-transform' | '--gog-multiselect-mark-icon-ratio' | '--gog-multiselect-mark-size-ratio' | '--gog-multiselect-min-width' | '--gog-multiselect-option-color' | '--gog-multiselect-option-disabled-opacity' | '--gog-multiselect-option-gap' | '--gog-multiselect-option-gap-inline' | '--gog-multiselect-option-height' | '--gog-multiselect-option-hover-bg' | '--gog-multiselect-option-radius' | '--gog-multiselect-option-transition-duration' | '--gog-multiselect-options-padding' | '--gog-multiselect-overflow-color' | '--gog-multiselect-overflow-font-size' | '--gog-multiselect-overflow-gap' | '--gog-multiselect-padding-x' | '--gog-multiselect-padding-y' | '--gog-multiselect-panel-bg' | '--gog-multiselect-panel-border' | '--gog-multiselect-panel-max-height' | '--gog-multiselect-panel-max-width' | '--gog-multiselect-panel-offset' | '--gog-multiselect-panel-shadow' | '--gog-multiselect-placeholder-color' | '--gog-multiselect-radius' | '--gog-multiselect-transition-duration' | '--gog-multiselect-value-color' | '--gog-muted-text-color' | '--gog-paginator-ellipsis-color' | '--gog-paginator-ellipsis-font-family' | '--gog-paginator-ellipsis-font-size' | '--gog-paginator-ellipsis-min-width' | '--gog-paginator-gap' | '--gog-panel-border-style' | '--gog-panel-border-width' | '--gog-panel-radius' | '--gog-panel-shadow' | '--gog-primary-color' | '--gog-progressbar-accent-bg' | '--gog-progressbar-accent-buffer-bg' | '--gog-progressbar-buffer-bg' | '--gog-progressbar-danger-bg' | '--gog-progressbar-danger-buffer-bg' | '--gog-progressbar-fill-bg' | '--gog-progressbar-height' | '--gog-progressbar-indeterminate-duration' | '--gog-progressbar-indeterminate-easing' | '--gog-progressbar-info-bg' | '--gog-progressbar-info-buffer-bg' | '--gog-progressbar-lg-height' | '--gog-progressbar-md-height' | '--gog-progressbar-radius' | '--gog-progressbar-slg-height' | '--gog-progressbar-sm-height' | '--gog-progressbar-stripe-color' | '--gog-progressbar-stripe-size' | '--gog-progressbar-success-bg' | '--gog-progressbar-success-buffer-bg' | '--gog-progressbar-track-base-bg' | '--gog-progressbar-track-bg' | '--gog-progressbar-transition-duration' | '--gog-progressbar-value-color' | '--gog-progressbar-value-font-family' | '--gog-progressbar-value-font-size' | '--gog-progressbar-value-gap' | '--gog-progressbar-value-min-width' | '--gog-progressbar-warning-bg' | '--gog-progressbar-warning-buffer-bg' | '--gog-progressbar-xsm-height' | '--gog-radio-bg' | '--gog-radio-border-color' | '--gog-radio-border-style' | '--gog-radio-border-width' | '--gog-radio-box-size' | '--gog-radio-checked-bg' | '--gog-radio-checked-border' | '--gog-radio-disabled-opacity' | '--gog-radio-dot-color' | '--gog-radio-dot-size-ratio' | '--gog-radio-error-color' | '--gog-radio-error-font-size' | '--gog-radio-focus-ring' | '--gog-radio-focus-ring-offset' | '--gog-radio-focus-ring-width' | '--gog-radio-font-family' | '--gog-radio-gap' | '--gog-radio-group-gap' | '--gog-radio-group-label-color' | '--gog-radio-group-label-size' | '--gog-radio-group-option-gap' | '--gog-radio-group-option-gap-horizontal' | '--gog-radio-label-color' | '--gog-radio-label-line-height' | '--gog-radio-label-size' | '--gog-radio-padding' | '--gog-radio-transition-duration' | '--gog-radius' | '--gog-scroll-corner-bg' | '--gog-scroll-fade-duration' | '--gog-scroll-focus-ring' | '--gog-scroll-focus-ring-width' | '--gog-scroll-normal-thumb-min-size' | '--gog-scroll-normal-track-width' | '--gog-scroll-thin-thumb-min-size' | '--gog-scroll-thin-track-width' | '--gog-scroll-thumb-active-bg' | '--gog-scroll-thumb-bg' | '--gog-scroll-thumb-hover-bg' | '--gog-scroll-thumb-inset' | '--gog-scroll-thumb-radius' | '--gog-scroll-track-bg' | '--gog-scroll-track-radius' | '--gog-secondary-color' | '--gog-select-chevron-color' | '--gog-select-chevron-icon-ratio' | '--gog-select-chevron-inset' | '--gog-select-clear-color' | '--gog-select-clear-gap' | '--gog-select-clear-hover-color' | '--gog-select-clear-icon-ratio' | '--gog-select-clear-radius' | '--gog-select-control-font' | '--gog-select-control-gap' | '--gog-select-control-padding-x' | '--gog-select-control-padding-y' | '--gog-select-disabled-opacity' | '--gog-select-error-color' | '--gog-select-error-font-size' | '--gog-select-field-bg' | '--gog-select-field-border' | '--gog-select-field-border-style' | '--gog-select-field-border-width' | '--gog-select-field-color' | '--gog-select-filter-border-color' | '--gog-select-filter-border-style' | '--gog-select-filter-border-width' | '--gog-select-filter-empty-color' | '--gog-select-filter-empty-padding' | '--gog-select-filter-input-bg' | '--gog-select-filter-input-border' | '--gog-select-filter-input-color' | '--gog-select-filter-input-padding-x' | '--gog-select-filter-input-padding-y' | '--gog-select-filter-input-radius' | '--gog-select-filter-padding' | '--gog-select-float-label-in-top' | '--gog-select-float-label-on-bg' | '--gog-select-float-label-over-gap' | '--gog-select-float-label-over-reserve' | '--gog-select-float-label-reserve' | '--gog-select-focus-border' | '--gog-select-focus-glow' | '--gog-select-focus-ring' | '--gog-select-focus-ring-offset' | '--gog-select-focus-ring-width' | '--gog-select-font-family' | '--gog-select-gap' | '--gog-select-label-color' | '--gog-select-label-font-family' | '--gog-select-label-font-size' | '--gog-select-label-letter-spacing' | '--gog-select-label-text-transform' | '--gog-select-mark-icon-ratio' | '--gog-select-mark-size-ratio' | '--gog-select-min-width' | '--gog-select-option-color' | '--gog-select-option-disabled-opacity' | '--gog-select-option-gap' | '--gog-select-option-height' | '--gog-select-option-hover-bg' | '--gog-select-option-selected-color' | '--gog-select-option-transition-duration' | '--gog-select-panel-bg' | '--gog-select-panel-max-height' | '--gog-select-panel-max-width' | '--gog-select-panel-offset' | '--gog-select-panel-shadow' | '--gog-select-placeholder-color' | '--gog-select-radius' | '--gog-select-transition-duration' | '--gog-skeleton-base' | '--gog-skeleton-circle-size-lg' | '--gog-skeleton-circle-size-md' | '--gog-skeleton-circle-size-slg' | '--gog-skeleton-circle-size-sm' | '--gog-skeleton-circle-size-xsm' | '--gog-skeleton-line-gap' | '--gog-skeleton-line-height-lg' | '--gog-skeleton-line-height-md' | '--gog-skeleton-line-height-slg' | '--gog-skeleton-line-height-sm' | '--gog-skeleton-line-height-xsm' | '--gog-skeleton-line-radius' | '--gog-skeleton-pulse-duration' | '--gog-skeleton-pulse-min-opacity' | '--gog-skeleton-radius' | '--gog-skeleton-rect-height-lg' | '--gog-skeleton-rect-height-md' | '--gog-skeleton-rect-height-slg' | '--gog-skeleton-rect-height-sm' | '--gog-skeleton-rect-height-xsm' | '--gog-skeleton-shine' | '--gog-skeleton-short-line-width' | '--gog-skeleton-square-radius' | '--gog-skeleton-wave-duration' | '--gog-slider-auto-width' | '--gog-slider-disabled-opacity' | '--gog-slider-error-color' | '--gog-slider-error-font-family' | '--gog-slider-error-font-size' | '--gog-slider-fill-bg' | '--gog-slider-focus-ring' | '--gog-slider-focus-ring-width' | '--gog-slider-gap' | '--gog-slider-label-color' | '--gog-slider-label-font-family' | '--gog-slider-label-font-size' | '--gog-slider-label-letter-spacing' | '--gog-slider-label-text-transform' | '--gog-slider-range-color' | '--gog-slider-range-font-size' | '--gog-slider-thumb-bg' | '--gog-slider-thumb-border' | '--gog-slider-thumb-border-width' | '--gog-slider-thumb-glow-size' | '--gog-slider-thumb-radius' | '--gog-slider-thumb-shadow' | '--gog-slider-thumb-size' | '--gog-slider-track-area-height' | '--gog-slider-track-bg' | '--gog-slider-track-border-color' | '--gog-slider-track-border-style' | '--gog-slider-track-border-width' | '--gog-slider-track-height' | '--gog-slider-track-radius' | '--gog-slider-value-color' | '--gog-slider-value-font-family' | '--gog-slider-value-font-size' | '--gog-slider-value-min-width' | '--gog-slider-vertical-length' | '--gog-space-2xl' | '--gog-space-lg' | '--gog-space-md' | '--gog-space-sm' | '--gog-space-xs' | '--gog-spinner-arc-inner-color' | '--gog-spinner-arc-inner-dash' | '--gog-spinner-arc-inner-glow' | '--gog-spinner-arc-inner-opacity' | '--gog-spinner-arc-inner-pulse-opacity' | '--gog-spinner-arc-inner-stroke-compact' | '--gog-spinner-arc-outer-color' | '--gog-spinner-arc-outer-dash' | '--gog-spinner-arc-outer-glow' | '--gog-spinner-arc-outer-pulse-opacity' | '--gog-spinner-diamond-color' | '--gog-spinner-diamond-glow' | '--gog-spinner-diamond-opacity' | '--gog-spinner-glow-color' | '--gog-spinner-overlay-bg' | '--gog-spinner-overlay-blur' | '--gog-spinner-overlay-fade-duration' | '--gog-spinner-overlay-z' | '--gog-spinner-pulse-duration' | '--gog-spinner-ring-duration' | '--gog-spinner-ring-glow' | '--gog-spinner-ring-padding' | '--gog-spinner-rune-color' | '--gog-spinner-rune-font-family' | '--gog-spinner-rune-glow' | '--gog-spinner-rune-pulse-opacity' | '--gog-spinner-rune-size' | '--gog-spinner-size-lg' | '--gog-spinner-size-md' | '--gog-spinner-size-slg' | '--gog-spinner-size-sm' | '--gog-spinner-size-xsm' | '--gog-spinner-spin-duration' | '--gog-spinner-spin-slow-duration' | '--gog-spinner-ticks-duration' | '--gog-spinner-track-color' | '--gog-spinner-track-opacity' | '--gog-success-color' | '--gog-surface-color' | '--gog-table-accent-bright' | '--gog-table-accent-color' | '--gog-table-border-color' | '--gog-table-border-style' | '--gog-table-border-width' | '--gog-table-empty-font-size' | '--gog-table-empty-padding' | '--gog-table-focus-ring' | '--gog-table-focus-ring-width' | '--gog-table-font-family' | '--gog-table-footer-gap' | '--gog-table-footer-min-height' | '--gog-table-gap' | '--gog-table-header-font-family' | '--gog-table-header-letter-spacing' | '--gog-table-header-text-transform' | '--gog-table-hover-bg' | '--gog-table-lg-padding-v' | '--gog-table-lg-td-font-size' | '--gog-table-lg-th-font-size' | '--gog-table-loading-opacity' | '--gog-table-loading-padding' | '--gog-table-md-padding-v' | '--gog-table-md-td-font-size' | '--gog-table-md-th-font-size' | '--gog-table-muted-color' | '--gog-table-num-col-width' | '--gog-table-num-font-size' | '--gog-table-numeric-font-family' | '--gog-table-padding-h' | '--gog-table-row-border-width' | '--gog-table-row-transition-duration' | '--gog-table-slg-padding-v' | '--gog-table-slg-td-font-size' | '--gog-table-slg-th-font-size' | '--gog-table-sm-padding-v' | '--gog-table-sm-td-font-size' | '--gog-table-sm-th-font-size' | '--gog-table-sort-icon-opacity' | '--gog-table-sort-icon-size' | '--gog-table-sort-icon-width' | '--gog-table-surface' | '--gog-table-td-font-size' | '--gog-table-td-padding-v' | '--gog-table-text-color' | '--gog-table-th-font-size' | '--gog-table-th-inner-gap' | '--gog-table-th-padding-v' | '--gog-table-total-font-size' | '--gog-table-total-letter-spacing' | '--gog-table-total-text-transform' | '--gog-table-xsm-padding-v' | '--gog-table-xsm-td-font-size' | '--gog-table-xsm-th-font-size' | '--gog-tabs-active-color' | '--gog-tabs-disabled-opacity' | '--gog-tabs-focus-ring-color' | '--gog-tabs-focus-ring-offset' | '--gog-tabs-focus-ring-width' | '--gog-tabs-font-family' | '--gog-tabs-font-weight' | '--gog-tabs-gap' | '--gog-tabs-header-border-color' | '--gog-tabs-header-border-style' | '--gog-tabs-header-border-width' | '--gog-tabs-hover-color' | '--gog-tabs-icon-size' | '--gog-tabs-indicator-color' | '--gog-tabs-indicator-radius' | '--gog-tabs-indicator-thickness' | '--gog-tabs-letter-spacing' | '--gog-tabs-lg-font-size' | '--gog-tabs-lg-padding' | '--gog-tabs-line-height' | '--gog-tabs-md-font-size' | '--gog-tabs-md-padding' | '--gog-tabs-panel-color' | '--gog-tabs-panel-padding' | '--gog-tabs-rest-bg' | '--gog-tabs-rest-color' | '--gog-tabs-slg-font-size' | '--gog-tabs-slg-padding' | '--gog-tabs-sm-font-size' | '--gog-tabs-sm-padding' | '--gog-tabs-tab-bg' | '--gog-tabs-tab-color' | '--gog-tabs-tab-font-size' | '--gog-tabs-tab-gap' | '--gog-tabs-tab-padding' | '--gog-tabs-text-transform' | '--gog-tabs-transition-duration' | '--gog-tabs-xsm-font-size' | '--gog-tabs-xsm-padding' | '--gog-tag-accent' | '--gog-tag-bg' | '--gog-tag-bg-base' | '--gog-tag-bg-mix' | '--gog-tag-border' | '--gog-tag-border-style' | '--gog-tag-border-width' | '--gog-tag-color' | '--gog-tag-color-base' | '--gog-tag-color-mix' | '--gog-tag-danger-color' | '--gog-tag-default-color' | '--gog-tag-font-family' | '--gog-tag-font-size' | '--gog-tag-font-weight' | '--gog-tag-gap' | '--gog-tag-icon-size' | '--gog-tag-info-color' | '--gog-tag-inner-border-width' | '--gog-tag-lg-font-size' | '--gog-tag-lg-gap' | '--gog-tag-lg-icon-size' | '--gog-tag-lg-padding-block' | '--gog-tag-lg-padding-inline' | '--gog-tag-line-height' | '--gog-tag-md-font-size' | '--gog-tag-md-gap' | '--gog-tag-md-icon-size' | '--gog-tag-md-padding-block' | '--gog-tag-md-padding-inline' | '--gog-tag-padding-block' | '--gog-tag-padding-inline' | '--gog-tag-pill-radius' | '--gog-tag-radius' | '--gog-tag-slg-font-size' | '--gog-tag-slg-gap' | '--gog-tag-slg-icon-size' | '--gog-tag-slg-padding-block' | '--gog-tag-slg-padding-inline' | '--gog-tag-sm-font-size' | '--gog-tag-sm-gap' | '--gog-tag-sm-icon-size' | '--gog-tag-sm-padding-block' | '--gog-tag-sm-padding-inline' | '--gog-tag-success-color' | '--gog-tag-warning-color' | '--gog-tag-xsm-font-size' | '--gog-tag-xsm-gap' | '--gog-tag-xsm-icon-size' | '--gog-tag-xsm-padding-block' | '--gog-tag-xsm-padding-inline' | '--gog-text-2xl' | '--gog-text-3xl' | '--gog-text-color' | '--gog-text-lg' | '--gog-text-md' | '--gog-text-sm' | '--gog-text-xl' | '--gog-text-xs' | '--gog-textarea-clear-icon-ratio' | '--gog-textarea-scrollbar-width' | '--gog-toast-accent-width' | '--gog-toast-action-font-size' | '--gog-toast-action-padding' | '--gog-toast-actions-gap' | '--gog-toast-base-z' | '--gog-toast-bg' | '--gog-toast-border' | '--gog-toast-close-font-size' | '--gog-toast-close-padding' | '--gog-toast-color' | '--gog-toast-content-gap' | '--gog-toast-enter-distance' | '--gog-toast-error-color' | '--gog-toast-font-family' | '--gog-toast-gap' | '--gog-toast-icon-color' | '--gog-toast-icon-line-height' | '--gog-toast-icon-size' | '--gog-toast-info-color' | '--gog-toast-main-gap' | '--gog-toast-max-width' | '--gog-toast-message-font-size' | '--gog-toast-message-line-height' | '--gog-toast-min-width' | '--gog-toast-padding' | '--gog-toast-progress-height' | '--gog-toast-progress-opacity' | '--gog-toast-radius' | '--gog-toast-shadow' | '--gog-toast-stack-expanded-gap' | '--gog-toast-stack-max-depth' | '--gog-toast-stack-min-opacity' | '--gog-toast-stack-opacity-step' | '--gog-toast-stack-padding' | '--gog-toast-stack-peek' | '--gog-toast-stack-scale-step' | '--gog-toast-success-color' | '--gog-toast-transition-duration' | '--gog-toast-warning-color' | '--gog-toast-z-index' | '--gog-toggle-border-color' | '--gog-toggle-border-style' | '--gog-toggle-border-width' | '--gog-toggle-disabled-opacity' | '--gog-toggle-focus-ring-color' | '--gog-toggle-focus-ring-offset' | '--gog-toggle-focus-ring-width' | '--gog-toggle-font-family' | '--gog-toggle-gap' | '--gog-toggle-label-color' | '--gog-toggle-label-line-height' | '--gog-toggle-lg-label-size' | '--gog-toggle-lg-state-font-size' | '--gog-toggle-lg-thumb-size' | '--gog-toggle-lg-track-height' | '--gog-toggle-lg-track-width' | '--gog-toggle-md-label-size' | '--gog-toggle-md-state-font-size' | '--gog-toggle-md-thumb-size' | '--gog-toggle-md-track-height' | '--gog-toggle-md-track-width' | '--gog-toggle-on-border-color' | '--gog-toggle-padding' | '--gog-toggle-radius' | '--gog-toggle-slg-label-size' | '--gog-toggle-slg-state-font-size' | '--gog-toggle-slg-thumb-size' | '--gog-toggle-slg-track-height' | '--gog-toggle-slg-track-width' | '--gog-toggle-sm-label-size' | '--gog-toggle-sm-state-font-size' | '--gog-toggle-sm-thumb-size' | '--gog-toggle-sm-track-height' | '--gog-toggle-sm-track-width' | '--gog-toggle-state-color' | '--gog-toggle-state-font-weight' | '--gog-toggle-state-letter-spacing' | '--gog-toggle-state-offset' | '--gog-toggle-state-padding-inline' | '--gog-toggle-state-thumb-gap' | '--gog-toggle-thumb-bg' | '--gog-toggle-thumb-inset' | '--gog-toggle-thumb-off-bg' | '--gog-toggle-thumb-on-bg' | '--gog-toggle-thumb-shadow' | '--gog-toggle-track-bg' | '--gog-toggle-track-off-bg' | '--gog-toggle-track-on-bg' | '--gog-toggle-transition-duration' | '--gog-toggle-xsm-label-size' | '--gog-toggle-xsm-state-font-size' | '--gog-toggle-xsm-thumb-size' | '--gog-toggle-xsm-track-height' | '--gog-toggle-xsm-track-width' | '--gog-tooltip-arrow-size' | '--gog-tooltip-bg' | '--gog-tooltip-border-color' | '--gog-tooltip-border-style' | '--gog-tooltip-border-width' | '--gog-tooltip-color' | '--gog-tooltip-font-family' | '--gog-tooltip-font-size' | '--gog-tooltip-gap' | '--gog-tooltip-line-height' | '--gog-tooltip-max-height' | '--gog-tooltip-max-width' | '--gog-tooltip-padding' | '--gog-tooltip-radius' | '--gog-tooltip-shadow' | '--gog-tooltip-transition-duration' | '--gog-tooltip-z' | '--gog-warning-color';
4180
+ type GogTokenName = '--gog-accent-bright' | '--gog-accent-color' | '--gog-accent-dim' | '--gog-accent-pale' | '--gog-accent-text-color' | '--gog-accordion-accent-color' | '--gog-accordion-body-bg' | '--gog-accordion-body-color' | '--gog-accordion-body-font-family' | '--gog-accordion-body-font-size' | '--gog-accordion-body-lift' | '--gog-accordion-body-line-height' | '--gog-accordion-body-padding-bottom' | '--gog-accordion-body-padding-top' | '--gog-accordion-body-radius' | '--gog-accordion-body-transition-duration' | '--gog-accordion-border-color' | '--gog-accordion-border-style' | '--gog-accordion-border-width' | '--gog-accordion-chevron-font-size' | '--gog-accordion-chevron-size' | '--gog-accordion-chevron-transition-duration' | '--gog-accordion-content-gap' | '--gog-accordion-disabled-opacity' | '--gog-accordion-focus-ring-width' | '--gog-accordion-font-family' | '--gog-accordion-font-size' | '--gog-accordion-header-bg' | '--gog-accordion-header-gap' | '--gog-accordion-header-text-transform' | '--gog-accordion-hover-bg' | '--gog-accordion-hover-ring' | '--gog-accordion-letter-spacing' | '--gog-accordion-lg-body-font-size' | '--gog-accordion-lg-body-line-height' | '--gog-accordion-lg-body-padding-bottom' | '--gog-accordion-lg-body-padding-top' | '--gog-accordion-lg-chevron-font-size' | '--gog-accordion-lg-chevron-size' | '--gog-accordion-lg-content-gap' | '--gog-accordion-lg-font-size' | '--gog-accordion-lg-letter-spacing' | '--gog-accordion-lg-padding-x' | '--gog-accordion-lg-padding-y' | '--gog-accordion-md-body-font-size' | '--gog-accordion-md-body-line-height' | '--gog-accordion-md-body-padding-bottom' | '--gog-accordion-md-body-padding-top' | '--gog-accordion-md-chevron-font-size' | '--gog-accordion-md-chevron-size' | '--gog-accordion-md-content-gap' | '--gog-accordion-md-font-size' | '--gog-accordion-md-letter-spacing' | '--gog-accordion-md-padding-x' | '--gog-accordion-md-padding-y' | '--gog-accordion-padding-x' | '--gog-accordion-padding-y' | '--gog-accordion-radius' | '--gog-accordion-slg-body-font-size' | '--gog-accordion-slg-body-line-height' | '--gog-accordion-slg-body-padding-bottom' | '--gog-accordion-slg-body-padding-top' | '--gog-accordion-slg-chevron-font-size' | '--gog-accordion-slg-chevron-size' | '--gog-accordion-slg-content-gap' | '--gog-accordion-slg-font-size' | '--gog-accordion-slg-letter-spacing' | '--gog-accordion-slg-padding-x' | '--gog-accordion-slg-padding-y' | '--gog-accordion-sm-body-font-size' | '--gog-accordion-sm-body-line-height' | '--gog-accordion-sm-body-padding-bottom' | '--gog-accordion-sm-body-padding-top' | '--gog-accordion-sm-chevron-font-size' | '--gog-accordion-sm-chevron-size' | '--gog-accordion-sm-content-gap' | '--gog-accordion-sm-font-size' | '--gog-accordion-sm-letter-spacing' | '--gog-accordion-sm-padding-x' | '--gog-accordion-sm-padding-y' | '--gog-accordion-text-color' | '--gog-accordion-transition-duration' | '--gog-accordion-xsm-body-font-size' | '--gog-accordion-xsm-body-line-height' | '--gog-accordion-xsm-body-padding-bottom' | '--gog-accordion-xsm-body-padding-top' | '--gog-accordion-xsm-chevron-font-size' | '--gog-accordion-xsm-chevron-size' | '--gog-accordion-xsm-content-gap' | '--gog-accordion-xsm-font-size' | '--gog-accordion-xsm-letter-spacing' | '--gog-accordion-xsm-padding-x' | '--gog-accordion-xsm-padding-y' | '--gog-autocomplete-actions-gap' | '--gog-autocomplete-actions-inset' | '--gog-autocomplete-actions-reserve' | '--gog-autocomplete-bg' | '--gog-autocomplete-border-color' | '--gog-autocomplete-border-style' | '--gog-autocomplete-border-width' | '--gog-autocomplete-clear-color' | '--gog-autocomplete-clear-hover-color' | '--gog-autocomplete-clear-icon-ratio' | '--gog-autocomplete-color' | '--gog-autocomplete-disabled-opacity' | '--gog-autocomplete-empty-color' | '--gog-autocomplete-empty-font-size' | '--gog-autocomplete-error-border-color' | '--gog-autocomplete-error-color' | '--gog-autocomplete-error-font-family' | '--gog-autocomplete-error-font-size' | '--gog-autocomplete-field-bg' | '--gog-autocomplete-float-label-in-top' | '--gog-autocomplete-float-label-on-bg' | '--gog-autocomplete-float-label-over-gap' | '--gog-autocomplete-float-label-over-reserve' | '--gog-autocomplete-float-label-reserve' | '--gog-autocomplete-focus-ring-color' | '--gog-autocomplete-focus-ring-offset' | '--gog-autocomplete-focus-ring-width' | '--gog-autocomplete-font-family' | '--gog-autocomplete-font-size' | '--gog-autocomplete-gap' | '--gog-autocomplete-hover-border-color' | '--gog-autocomplete-label-color' | '--gog-autocomplete-label-font-family' | '--gog-autocomplete-label-font-size' | '--gog-autocomplete-label-font-weight' | '--gog-autocomplete-label-letter-spacing' | '--gog-autocomplete-label-text-transform' | '--gog-autocomplete-line-height' | '--gog-autocomplete-min-width' | '--gog-autocomplete-option-color' | '--gog-autocomplete-option-gap' | '--gog-autocomplete-option-height' | '--gog-autocomplete-option-hover-bg' | '--gog-autocomplete-option-hover-color' | '--gog-autocomplete-option-padding' | '--gog-autocomplete-option-radius' | '--gog-autocomplete-option-selected-bg' | '--gog-autocomplete-option-selected-color' | '--gog-autocomplete-options-padding' | '--gog-autocomplete-padding-x' | '--gog-autocomplete-padding-y' | '--gog-autocomplete-panel-bg' | '--gog-autocomplete-panel-border-color' | '--gog-autocomplete-panel-border-style' | '--gog-autocomplete-panel-border-width' | '--gog-autocomplete-panel-gap' | '--gog-autocomplete-panel-max-height' | '--gog-autocomplete-panel-max-width' | '--gog-autocomplete-panel-radius' | '--gog-autocomplete-panel-shadow' | '--gog-autocomplete-placeholder-color' | '--gog-autocomplete-radius' | '--gog-autocomplete-spinner-size' | '--gog-autocomplete-text-color' | '--gog-autocomplete-transition-duration' | '--gog-background-color' | '--gog-badge-bg' | '--gog-badge-border-color' | '--gog-badge-border-style' | '--gog-badge-border-width' | '--gog-badge-color' | '--gog-badge-danger-bg' | '--gog-badge-danger-color' | '--gog-badge-dot-size' | '--gog-badge-font-family' | '--gog-badge-font-size' | '--gog-badge-font-weight' | '--gog-badge-info-bg' | '--gog-badge-info-color' | '--gog-badge-line-height' | '--gog-badge-offset' | '--gog-badge-padding-inline' | '--gog-badge-radius' | '--gog-badge-size' | '--gog-badge-success-bg' | '--gog-badge-success-color' | '--gog-badge-warning-bg' | '--gog-badge-warning-color' | '--gog-badge-z' | '--gog-border-color' | '--gog-btn-active-scale' | '--gog-btn-bg' | '--gog-btn-border' | '--gog-btn-border-style' | '--gog-btn-border-width' | '--gog-btn-color' | '--gog-btn-disabled-opacity' | '--gog-btn-focus-ring-offset' | '--gog-btn-focus-ring-width' | '--gog-btn-font-family' | '--gog-btn-font-weight' | '--gog-btn-gap' | '--gog-btn-ghost-bg' | '--gog-btn-ghost-border' | '--gog-btn-ghost-color' | '--gog-btn-ghost-hover-bg' | '--gog-btn-ghost-hover-color' | '--gog-btn-ghost-hover-shadow' | '--gog-btn-ghost-shadow' | '--gog-btn-ghost-spinner-color' | '--gog-btn-hover-bg' | '--gog-btn-hover-color' | '--gog-btn-hover-shadow' | '--gog-btn-letter-spacing' | '--gog-btn-lg-font-size' | '--gog-btn-lg-padding' | '--gog-btn-line-height' | '--gog-btn-loading-opacity' | '--gog-btn-md-font-size' | '--gog-btn-md-padding' | '--gog-btn-outline-bg' | '--gog-btn-outline-border' | '--gog-btn-outline-color' | '--gog-btn-outline-hover-bg' | '--gog-btn-outline-hover-color' | '--gog-btn-outline-hover-shadow' | '--gog-btn-outline-shadow' | '--gog-btn-outline-spinner-color' | '--gog-btn-primary-bg' | '--gog-btn-primary-border' | '--gog-btn-primary-color' | '--gog-btn-primary-hover-bg' | '--gog-btn-primary-hover-color' | '--gog-btn-primary-hover-shadow' | '--gog-btn-primary-shadow' | '--gog-btn-primary-spinner-color' | '--gog-btn-radius' | '--gog-btn-secondary-bg' | '--gog-btn-secondary-border' | '--gog-btn-secondary-color' | '--gog-btn-secondary-hover-bg' | '--gog-btn-secondary-hover-color' | '--gog-btn-secondary-hover-shadow' | '--gog-btn-secondary-shadow' | '--gog-btn-secondary-spinner-color' | '--gog-btn-shadow' | '--gog-btn-slg-font-size' | '--gog-btn-slg-padding' | '--gog-btn-sm-font-size' | '--gog-btn-sm-padding' | '--gog-btn-spinner-color' | '--gog-btn-spinner-max-size' | '--gog-btn-text-transform' | '--gog-btn-transition-duration' | '--gog-btn-xsm-font-size' | '--gog-btn-xsm-padding' | '--gog-button-toggle-bg' | '--gog-button-toggle-border-color' | '--gog-button-toggle-border-style' | '--gog-button-toggle-border-width' | '--gog-button-toggle-color' | '--gog-button-toggle-disabled-opacity' | '--gog-button-toggle-focus-ring-color' | '--gog-button-toggle-focus-ring-offset' | '--gog-button-toggle-focus-ring-width' | '--gog-button-toggle-font-family' | '--gog-button-toggle-font-size' | '--gog-button-toggle-font-weight' | '--gog-button-toggle-gap' | '--gog-button-toggle-hover-bg' | '--gog-button-toggle-hover-color' | '--gog-button-toggle-icon-size' | '--gog-button-toggle-letter-spacing' | '--gog-button-toggle-line-height' | '--gog-button-toggle-padding' | '--gog-button-toggle-radius' | '--gog-button-toggle-rest-bg' | '--gog-button-toggle-rest-color' | '--gog-button-toggle-selected-bg' | '--gog-button-toggle-selected-border-color' | '--gog-button-toggle-selected-color' | '--gog-button-toggle-separated-gap' | '--gog-button-toggle-text-transform' | '--gog-button-toggle-transition-duration' | '--gog-calendar-action-padding' | '--gog-calendar-color' | '--gog-calendar-day-bg' | '--gog-calendar-day-border-style' | '--gog-calendar-day-border-width' | '--gog-calendar-day-color' | '--gog-calendar-day-hover-bg' | '--gog-calendar-day-outside-color' | '--gog-calendar-day-radius' | '--gog-calendar-day-rest-bg' | '--gog-calendar-day-rest-color' | '--gog-calendar-day-size' | '--gog-calendar-disabled-opacity' | '--gog-calendar-divider-color' | '--gog-calendar-divider-style' | '--gog-calendar-divider-width' | '--gog-calendar-focus-ring-color' | '--gog-calendar-focus-ring-offset' | '--gog-calendar-focus-ring-width' | '--gog-calendar-font-family' | '--gog-calendar-footer-gap' | '--gog-calendar-header-gap' | '--gog-calendar-header-margin' | '--gog-calendar-lg-day-size' | '--gog-calendar-lg-font-size' | '--gog-calendar-md-day-size' | '--gog-calendar-md-font-size' | '--gog-calendar-months-gap' | '--gog-calendar-nav-bg' | '--gog-calendar-nav-color' | '--gog-calendar-nav-hover-bg' | '--gog-calendar-nav-hover-color' | '--gog-calendar-nav-icon-overlap' | '--gog-calendar-nav-icon-size' | '--gog-calendar-nav-radius' | '--gog-calendar-nav-size' | '--gog-calendar-padding' | '--gog-calendar-range-bg' | '--gog-calendar-range-color' | '--gog-calendar-selected-bg' | '--gog-calendar-selected-color' | '--gog-calendar-selected-font-weight' | '--gog-calendar-slg-day-size' | '--gog-calendar-slg-font-size' | '--gog-calendar-sm-day-size' | '--gog-calendar-sm-font-size' | '--gog-calendar-time-gap' | '--gog-calendar-time-input-bg' | '--gog-calendar-time-input-padding' | '--gog-calendar-time-input-width' | '--gog-calendar-time-margin' | '--gog-calendar-title-color' | '--gog-calendar-title-font-weight' | '--gog-calendar-today-border-color' | '--gog-calendar-today-font-weight' | '--gog-calendar-transition-duration' | '--gog-calendar-weekday-color' | '--gog-calendar-weekday-font-size' | '--gog-calendar-weekday-font-weight' | '--gog-calendar-weekday-padding' | '--gog-calendar-weekday-text-transform' | '--gog-calendar-xsm-day-size' | '--gog-calendar-xsm-font-size' | '--gog-checkbox-bg' | '--gog-checkbox-border-color' | '--gog-checkbox-border-style' | '--gog-checkbox-border-width' | '--gog-checkbox-box-size' | '--gog-checkbox-checked-bg' | '--gog-checkbox-checked-border' | '--gog-checkbox-dash-height' | '--gog-checkbox-dash-radius' | '--gog-checkbox-dash-width-ratio' | '--gog-checkbox-disabled-opacity' | '--gog-checkbox-focus-ring' | '--gog-checkbox-focus-ring-offset' | '--gog-checkbox-focus-ring-width' | '--gog-checkbox-font-family' | '--gog-checkbox-gap' | '--gog-checkbox-icon-color' | '--gog-checkbox-icon-size' | '--gog-checkbox-label-color' | '--gog-checkbox-label-line-height' | '--gog-checkbox-label-size' | '--gog-checkbox-padding' | '--gog-checkbox-radius' | '--gog-checkbox-transition-duration' | '--gog-chip-avatar-inset-ratio' | '--gog-chip-avatar-size' | '--gog-chip-bg' | '--gog-chip-border' | '--gog-chip-border-style' | '--gog-chip-border-width' | '--gog-chip-color' | '--gog-chip-disabled-opacity' | '--gog-chip-focus-ring-offset' | '--gog-chip-focus-ring-width' | '--gog-chip-font-family' | '--gog-chip-font-size' | '--gog-chip-font-weight' | '--gog-chip-gap' | '--gog-chip-hover-bg' | '--gog-chip-icon-size' | '--gog-chip-lg-avatar-size' | '--gog-chip-lg-font-size' | '--gog-chip-lg-gap' | '--gog-chip-lg-icon-size' | '--gog-chip-lg-padding-block' | '--gog-chip-lg-padding-inline' | '--gog-chip-lg-remove-size' | '--gog-chip-line-height' | '--gog-chip-md-avatar-size' | '--gog-chip-md-font-size' | '--gog-chip-md-gap' | '--gog-chip-md-icon-size' | '--gog-chip-md-padding-block' | '--gog-chip-md-padding-inline' | '--gog-chip-md-remove-size' | '--gog-chip-padding-block' | '--gog-chip-padding-inline' | '--gog-chip-pill-radius' | '--gog-chip-radius' | '--gog-chip-remove-color' | '--gog-chip-remove-hover-color' | '--gog-chip-remove-inset-ratio' | '--gog-chip-remove-scale' | '--gog-chip-remove-size' | '--gog-chip-slg-avatar-size' | '--gog-chip-slg-font-size' | '--gog-chip-slg-gap' | '--gog-chip-slg-icon-size' | '--gog-chip-slg-padding-block' | '--gog-chip-slg-padding-inline' | '--gog-chip-slg-remove-size' | '--gog-chip-sm-avatar-size' | '--gog-chip-sm-font-size' | '--gog-chip-sm-gap' | '--gog-chip-sm-icon-size' | '--gog-chip-sm-padding-block' | '--gog-chip-sm-padding-inline' | '--gog-chip-sm-remove-size' | '--gog-chip-xsm-avatar-size' | '--gog-chip-xsm-font-size' | '--gog-chip-xsm-gap' | '--gog-chip-xsm-icon-size' | '--gog-chip-xsm-padding-block' | '--gog-chip-xsm-padding-inline' | '--gog-chip-xsm-remove-size' | '--gog-collapsible-disabled-opacity' | '--gog-collapsible-max-height' | '--gog-collapsible-transition-duration' | '--gog-confirm-actions-gap' | '--gog-confirm-actions-offset' | '--gog-confirm-color' | '--gog-confirm-description-color' | '--gog-confirm-gap' | '--gog-confirm-max-width' | '--gog-confirm-min-width' | '--gog-control-border-style' | '--gog-control-border-width' | '--gog-control-checkbox-box-size-lg' | '--gog-control-checkbox-box-size-md' | '--gog-control-checkbox-box-size-slg' | '--gog-control-checkbox-box-size-sm' | '--gog-control-checkbox-box-size-xsm' | '--gog-control-checkbox-icon-size-lg' | '--gog-control-checkbox-icon-size-md' | '--gog-control-checkbox-icon-size-slg' | '--gog-control-checkbox-icon-size-sm' | '--gog-control-checkbox-icon-size-xsm' | '--gog-control-checkbox-label-size-lg' | '--gog-control-checkbox-label-size-md' | '--gog-control-checkbox-label-size-slg' | '--gog-control-checkbox-label-size-sm' | '--gog-control-checkbox-label-size-xsm' | '--gog-control-checkbox-padding' | '--gog-control-icon-offset' | '--gog-control-padding-x' | '--gog-control-padding-y' | '--gog-danger-color' | '--gog-datepicker-actions-gap' | '--gog-datepicker-actions-inset' | '--gog-datepicker-actions-reserve' | '--gog-datepicker-bg' | '--gog-datepicker-border-color' | '--gog-datepicker-border-style' | '--gog-datepicker-border-width' | '--gog-datepicker-clear-color' | '--gog-datepicker-clear-icon-ratio' | '--gog-datepicker-color' | '--gog-datepicker-disabled-opacity' | '--gog-datepicker-error-border-color' | '--gog-datepicker-error-color' | '--gog-datepicker-error-font-family' | '--gog-datepicker-error-font-size' | '--gog-datepicker-field-bg' | '--gog-datepicker-float-label-in-top' | '--gog-datepicker-float-label-on-bg' | '--gog-datepicker-float-label-over-gap' | '--gog-datepicker-float-label-over-reserve' | '--gog-datepicker-float-label-reserve' | '--gog-datepicker-focus-ring-color' | '--gog-datepicker-focus-ring-offset' | '--gog-datepicker-focus-ring-width' | '--gog-datepicker-font-family' | '--gog-datepicker-font-size' | '--gog-datepicker-gap' | '--gog-datepicker-hover-border-color' | '--gog-datepicker-icon-color' | '--gog-datepicker-icon-hover-color' | '--gog-datepicker-label-color' | '--gog-datepicker-label-font-family' | '--gog-datepicker-label-font-size' | '--gog-datepicker-label-letter-spacing' | '--gog-datepicker-label-text-transform' | '--gog-datepicker-line-height' | '--gog-datepicker-min-width' | '--gog-datepicker-padding-x' | '--gog-datepicker-padding-y' | '--gog-datepicker-panel-bg' | '--gog-datepicker-panel-border-color' | '--gog-datepicker-panel-border-style' | '--gog-datepicker-panel-border-width' | '--gog-datepicker-panel-gap' | '--gog-datepicker-panel-radius' | '--gog-datepicker-panel-shadow' | '--gog-datepicker-placeholder-color' | '--gog-datepicker-radius' | '--gog-datepicker-text-color' | '--gog-datepicker-toggle-icon-size' | '--gog-datepicker-transition-duration' | '--gog-dialog-backdrop-bg' | '--gog-dialog-backdrop-blur' | '--gog-dialog-backdrop-fade-duration' | '--gog-dialog-backdrop-padding' | '--gog-dialog-bg' | '--gog-dialog-body-max-height' | '--gog-dialog-body-padding' | '--gog-dialog-border' | '--gog-dialog-border-style' | '--gog-dialog-border-width' | '--gog-dialog-close-color' | '--gog-dialog-close-focus-ring' | '--gog-dialog-close-focus-ring-offset' | '--gog-dialog-close-focus-ring-width' | '--gog-dialog-close-font-size' | '--gog-dialog-close-hover-bg' | '--gog-dialog-close-hover-border' | '--gog-dialog-close-hover-color' | '--gog-dialog-close-size' | '--gog-dialog-color' | '--gog-dialog-enter-distance' | '--gog-dialog-enter-duration' | '--gog-dialog-font-family' | '--gog-dialog-header-border-color' | '--gog-dialog-header-gap' | '--gog-dialog-header-padding' | '--gog-dialog-max-height' | '--gog-dialog-min-width' | '--gog-dialog-offset-x' | '--gog-dialog-offset-y' | '--gog-dialog-radius' | '--gog-dialog-shadow' | '--gog-disabled-opacity' | '--gog-divider-block-spacing' | '--gog-divider-color' | '--gog-divider-dashed-style' | '--gog-divider-dotted-style' | '--gog-divider-inline-spacing' | '--gog-divider-inset-size' | '--gog-divider-label-color' | '--gog-divider-label-font-family' | '--gog-divider-label-font-size' | '--gog-divider-label-font-weight' | '--gog-divider-label-gap' | '--gog-divider-label-line-height' | '--gog-divider-line-color' | '--gog-divider-line-thickness' | '--gog-divider-solid-style' | '--gog-divider-spacing' | '--gog-divider-thickness' | '--gog-divider-vertical-length' | '--gog-dropdown-z' | '--gog-duration-base' | '--gog-duration-fast' | '--gog-duration-slow' | '--gog-easing' | '--gog-field-float-label-in-top' | '--gog-field-float-label-over-gap' | '--gog-field-float-label-over-reserve' | '--gog-field-float-label-reserve' | '--gog-field-lg-font-size' | '--gog-field-lg-icon-inset' | '--gog-field-lg-icon-offset' | '--gog-field-lg-padding-x' | '--gog-field-lg-padding-y' | '--gog-field-md-font-size' | '--gog-field-md-icon-inset' | '--gog-field-md-icon-offset' | '--gog-field-md-padding-x' | '--gog-field-md-padding-y' | '--gog-field-slg-font-size' | '--gog-field-slg-icon-inset' | '--gog-field-slg-icon-offset' | '--gog-field-slg-padding-x' | '--gog-field-slg-padding-y' | '--gog-field-sm-font-size' | '--gog-field-sm-icon-inset' | '--gog-field-sm-icon-offset' | '--gog-field-sm-padding-x' | '--gog-field-sm-padding-y' | '--gog-field-xsm-font-size' | '--gog-field-xsm-icon-inset' | '--gog-field-xsm-icon-offset' | '--gog-field-xsm-padding-x' | '--gog-field-xsm-padding-y' | '--gog-focus-ring-offset' | '--gog-focus-ring-width' | '--gog-font-body' | '--gog-font-heading' | '--gog-font-mono' | '--gog-hover-color' | '--gog-icon-fallback-size' | '--gog-icon-size' | '--gog-icon-stroke-width' | '--gog-info-color' | '--gog-input-clear-icon-ratio' | '--gog-input-clear-inset' | '--gog-input-clear-radius' | '--gog-input-disabled-opacity' | '--gog-input-error-color' | '--gog-input-error-font-size' | '--gog-input-error-offset' | '--gog-input-field-bg' | '--gog-input-field-border' | '--gog-input-field-border-style' | '--gog-input-field-border-width' | '--gog-input-field-color' | '--gog-input-float-label-in-top' | '--gog-input-float-label-on-bg' | '--gog-input-float-label-over-gap' | '--gog-input-float-label-over-reserve' | '--gog-input-float-label-reserve' | '--gog-input-focus-border' | '--gog-input-focus-glow' | '--gog-input-focus-ring' | '--gog-input-focus-ring-offset' | '--gog-input-focus-ring-width' | '--gog-input-font' | '--gog-input-font-family' | '--gog-input-gap' | '--gog-input-icon-action-radius' | '--gog-input-icon-color' | '--gog-input-icon-focus-ring-width' | '--gog-input-icon-hover-color' | '--gog-input-label-color' | '--gog-input-label-font-family' | '--gog-input-label-font-size' | '--gog-input-label-letter-spacing' | '--gog-input-label-text-transform' | '--gog-input-padding-x' | '--gog-input-padding-y' | '--gog-input-placeholder-color' | '--gog-input-radius' | '--gog-input-spin-hover-bg' | '--gog-input-spin-width' | '--gog-input-transition-duration' | '--gog-ms-actions-gap' | '--gog-ms-actions-inset' | '--gog-ms-arrow-icon-ratio' | '--gog-ms-arrow-transition-duration' | '--gog-ms-border-color' | '--gog-ms-checkbox-bg' | '--gog-ms-checkbox-border' | '--gog-ms-checkbox-checked-bg' | '--gog-ms-checkbox-checked-color' | '--gog-ms-clear-icon-ratio' | '--gog-ms-clear-radius' | '--gog-ms-controls-gap' | '--gog-ms-controls-padding' | '--gog-ms-disabled-opacity' | '--gog-ms-error-color' | '--gog-ms-error-font-size' | '--gog-ms-error-offset' | '--gog-ms-field-bg' | '--gog-ms-field-border' | '--gog-ms-field-border-style' | '--gog-ms-field-border-width' | '--gog-ms-field-color' | '--gog-ms-filter-border-color' | '--gog-ms-filter-border-style' | '--gog-ms-filter-border-width' | '--gog-ms-filter-empty-color' | '--gog-ms-filter-empty-padding' | '--gog-ms-filter-input-bg' | '--gog-ms-filter-input-border' | '--gog-ms-filter-input-color' | '--gog-ms-filter-input-padding-x' | '--gog-ms-filter-input-padding-y' | '--gog-ms-filter-input-radius' | '--gog-ms-filter-padding' | '--gog-ms-float-label-in-top' | '--gog-ms-float-label-over-gap' | '--gog-ms-float-label-over-reserve' | '--gog-ms-float-label-reserve' | '--gog-ms-focus-border' | '--gog-ms-focus-glow' | '--gog-ms-focus-ring' | '--gog-ms-focus-ring-offset' | '--gog-ms-focus-ring-width' | '--gog-ms-font-family' | '--gog-ms-gap' | '--gog-ms-label-color' | '--gog-ms-label-font-family' | '--gog-ms-label-font-size' | '--gog-ms-label-letter-spacing' | '--gog-ms-label-text-transform' | '--gog-ms-mark-icon-ratio' | '--gog-ms-mark-size-ratio' | '--gog-ms-min-width' | '--gog-ms-option-color' | '--gog-ms-option-disabled-opacity' | '--gog-ms-option-gap' | '--gog-ms-option-gap-inline' | '--gog-ms-option-height' | '--gog-ms-option-hover-bg' | '--gog-ms-option-radius' | '--gog-ms-option-transition-duration' | '--gog-ms-options-padding' | '--gog-ms-overflow-color' | '--gog-ms-overflow-font-size' | '--gog-ms-overflow-gap' | '--gog-ms-panel-bg' | '--gog-ms-panel-border' | '--gog-ms-panel-max-height' | '--gog-ms-panel-max-width' | '--gog-ms-panel-offset' | '--gog-ms-panel-shadow' | '--gog-ms-placeholder-color' | '--gog-ms-radius' | '--gog-ms-transition-duration' | '--gog-ms-value-color' | '--gog-multiselect-actions-gap' | '--gog-multiselect-actions-inset' | '--gog-multiselect-arrow-icon-ratio' | '--gog-multiselect-arrow-transition-duration' | '--gog-multiselect-border-color' | '--gog-multiselect-checkbox-bg' | '--gog-multiselect-checkbox-border' | '--gog-multiselect-checkbox-checked-bg' | '--gog-multiselect-checkbox-checked-color' | '--gog-multiselect-clear-icon-ratio' | '--gog-multiselect-clear-radius' | '--gog-multiselect-controls-gap' | '--gog-multiselect-controls-padding' | '--gog-multiselect-disabled-opacity' | '--gog-multiselect-error-color' | '--gog-multiselect-error-font-size' | '--gog-multiselect-error-offset' | '--gog-multiselect-field-bg' | '--gog-multiselect-field-border' | '--gog-multiselect-field-border-style' | '--gog-multiselect-field-border-width' | '--gog-multiselect-field-color' | '--gog-multiselect-filter-border-color' | '--gog-multiselect-filter-border-style' | '--gog-multiselect-filter-border-width' | '--gog-multiselect-filter-empty-color' | '--gog-multiselect-filter-empty-padding' | '--gog-multiselect-filter-input-bg' | '--gog-multiselect-filter-input-border' | '--gog-multiselect-filter-input-color' | '--gog-multiselect-filter-input-padding-x' | '--gog-multiselect-filter-input-padding-y' | '--gog-multiselect-filter-input-radius' | '--gog-multiselect-filter-padding' | '--gog-multiselect-float-label-in-top' | '--gog-multiselect-float-label-on-bg' | '--gog-multiselect-float-label-over-gap' | '--gog-multiselect-float-label-over-reserve' | '--gog-multiselect-float-label-reserve' | '--gog-multiselect-focus-border' | '--gog-multiselect-focus-glow' | '--gog-multiselect-focus-ring' | '--gog-multiselect-focus-ring-offset' | '--gog-multiselect-focus-ring-width' | '--gog-multiselect-font-family' | '--gog-multiselect-font-size' | '--gog-multiselect-gap' | '--gog-multiselect-label-color' | '--gog-multiselect-label-font-family' | '--gog-multiselect-label-font-size' | '--gog-multiselect-label-letter-spacing' | '--gog-multiselect-label-text-transform' | '--gog-multiselect-mark-icon-ratio' | '--gog-multiselect-mark-size-ratio' | '--gog-multiselect-min-width' | '--gog-multiselect-option-color' | '--gog-multiselect-option-disabled-opacity' | '--gog-multiselect-option-gap' | '--gog-multiselect-option-gap-inline' | '--gog-multiselect-option-height' | '--gog-multiselect-option-hover-bg' | '--gog-multiselect-option-radius' | '--gog-multiselect-option-transition-duration' | '--gog-multiselect-options-padding' | '--gog-multiselect-overflow-color' | '--gog-multiselect-overflow-font-size' | '--gog-multiselect-overflow-gap' | '--gog-multiselect-padding-x' | '--gog-multiselect-padding-y' | '--gog-multiselect-panel-bg' | '--gog-multiselect-panel-border' | '--gog-multiselect-panel-max-height' | '--gog-multiselect-panel-max-width' | '--gog-multiselect-panel-offset' | '--gog-multiselect-panel-shadow' | '--gog-multiselect-placeholder-color' | '--gog-multiselect-radius' | '--gog-multiselect-transition-duration' | '--gog-multiselect-value-color' | '--gog-muted-text-color' | '--gog-paginator-ellipsis-color' | '--gog-paginator-ellipsis-font-family' | '--gog-paginator-ellipsis-font-size' | '--gog-paginator-ellipsis-min-width' | '--gog-paginator-gap' | '--gog-paginator-page-size-min-width' | '--gog-panel-border-style' | '--gog-panel-border-width' | '--gog-panel-radius' | '--gog-panel-shadow' | '--gog-primary-color' | '--gog-progressbar-accent-bg' | '--gog-progressbar-accent-buffer-bg' | '--gog-progressbar-buffer-bg' | '--gog-progressbar-danger-bg' | '--gog-progressbar-danger-buffer-bg' | '--gog-progressbar-fill-bg' | '--gog-progressbar-height' | '--gog-progressbar-indeterminate-duration' | '--gog-progressbar-indeterminate-easing' | '--gog-progressbar-info-bg' | '--gog-progressbar-info-buffer-bg' | '--gog-progressbar-lg-height' | '--gog-progressbar-md-height' | '--gog-progressbar-radius' | '--gog-progressbar-slg-height' | '--gog-progressbar-sm-height' | '--gog-progressbar-stripe-color' | '--gog-progressbar-stripe-size' | '--gog-progressbar-success-bg' | '--gog-progressbar-success-buffer-bg' | '--gog-progressbar-track-base-bg' | '--gog-progressbar-track-bg' | '--gog-progressbar-transition-duration' | '--gog-progressbar-value-color' | '--gog-progressbar-value-font-family' | '--gog-progressbar-value-font-size' | '--gog-progressbar-value-gap' | '--gog-progressbar-value-min-width' | '--gog-progressbar-warning-bg' | '--gog-progressbar-warning-buffer-bg' | '--gog-progressbar-xsm-height' | '--gog-radio-bg' | '--gog-radio-border-color' | '--gog-radio-border-style' | '--gog-radio-border-width' | '--gog-radio-box-size' | '--gog-radio-checked-bg' | '--gog-radio-checked-border' | '--gog-radio-disabled-opacity' | '--gog-radio-dot-color' | '--gog-radio-dot-size-ratio' | '--gog-radio-error-color' | '--gog-radio-error-font-size' | '--gog-radio-focus-ring' | '--gog-radio-focus-ring-offset' | '--gog-radio-focus-ring-width' | '--gog-radio-font-family' | '--gog-radio-gap' | '--gog-radio-group-gap' | '--gog-radio-group-label-color' | '--gog-radio-group-label-size' | '--gog-radio-group-option-gap' | '--gog-radio-group-option-gap-horizontal' | '--gog-radio-label-color' | '--gog-radio-label-line-height' | '--gog-radio-label-size' | '--gog-radio-padding' | '--gog-radio-transition-duration' | '--gog-radius' | '--gog-scroll-corner-bg' | '--gog-scroll-fade-duration' | '--gog-scroll-focus-ring' | '--gog-scroll-focus-ring-width' | '--gog-scroll-normal-thumb-hit-padding' | '--gog-scroll-normal-thumb-min-size' | '--gog-scroll-normal-track-width' | '--gog-scroll-thin-thumb-hit-padding' | '--gog-scroll-thin-thumb-min-size' | '--gog-scroll-thin-track-width' | '--gog-scroll-thumb-active-bg' | '--gog-scroll-thumb-bg' | '--gog-scroll-thumb-hover-bg' | '--gog-scroll-thumb-inset' | '--gog-scroll-thumb-radius' | '--gog-scroll-track-bg' | '--gog-scroll-track-radius' | '--gog-secondary-color' | '--gog-select-chevron-color' | '--gog-select-chevron-icon-ratio' | '--gog-select-chevron-inset' | '--gog-select-clear-color' | '--gog-select-clear-gap' | '--gog-select-clear-hover-color' | '--gog-select-clear-icon-ratio' | '--gog-select-clear-radius' | '--gog-select-control-font' | '--gog-select-control-gap' | '--gog-select-control-padding-x' | '--gog-select-control-padding-y' | '--gog-select-disabled-opacity' | '--gog-select-error-color' | '--gog-select-error-font-size' | '--gog-select-field-bg' | '--gog-select-field-border' | '--gog-select-field-border-style' | '--gog-select-field-border-width' | '--gog-select-field-color' | '--gog-select-filter-border-color' | '--gog-select-filter-border-style' | '--gog-select-filter-border-width' | '--gog-select-filter-empty-color' | '--gog-select-filter-empty-padding' | '--gog-select-filter-input-bg' | '--gog-select-filter-input-border' | '--gog-select-filter-input-color' | '--gog-select-filter-input-padding-x' | '--gog-select-filter-input-padding-y' | '--gog-select-filter-input-radius' | '--gog-select-filter-padding' | '--gog-select-float-label-in-top' | '--gog-select-float-label-on-bg' | '--gog-select-float-label-over-gap' | '--gog-select-float-label-over-reserve' | '--gog-select-float-label-reserve' | '--gog-select-focus-border' | '--gog-select-focus-glow' | '--gog-select-focus-ring' | '--gog-select-focus-ring-offset' | '--gog-select-focus-ring-width' | '--gog-select-font-family' | '--gog-select-gap' | '--gog-select-label-color' | '--gog-select-label-font-family' | '--gog-select-label-font-size' | '--gog-select-label-letter-spacing' | '--gog-select-label-text-transform' | '--gog-select-mark-icon-ratio' | '--gog-select-mark-size-ratio' | '--gog-select-min-width' | '--gog-select-option-color' | '--gog-select-option-disabled-opacity' | '--gog-select-option-gap' | '--gog-select-option-height' | '--gog-select-option-hover-bg' | '--gog-select-option-selected-color' | '--gog-select-option-transition-duration' | '--gog-select-panel-bg' | '--gog-select-panel-max-height' | '--gog-select-panel-max-width' | '--gog-select-panel-offset' | '--gog-select-panel-shadow' | '--gog-select-placeholder-color' | '--gog-select-radius' | '--gog-select-transition-duration' | '--gog-skeleton-base' | '--gog-skeleton-circle-size-lg' | '--gog-skeleton-circle-size-md' | '--gog-skeleton-circle-size-slg' | '--gog-skeleton-circle-size-sm' | '--gog-skeleton-circle-size-xsm' | '--gog-skeleton-line-gap' | '--gog-skeleton-line-height-lg' | '--gog-skeleton-line-height-md' | '--gog-skeleton-line-height-slg' | '--gog-skeleton-line-height-sm' | '--gog-skeleton-line-height-xsm' | '--gog-skeleton-line-radius' | '--gog-skeleton-pulse-duration' | '--gog-skeleton-pulse-min-opacity' | '--gog-skeleton-radius' | '--gog-skeleton-rect-height-lg' | '--gog-skeleton-rect-height-md' | '--gog-skeleton-rect-height-slg' | '--gog-skeleton-rect-height-sm' | '--gog-skeleton-rect-height-xsm' | '--gog-skeleton-shine' | '--gog-skeleton-short-line-width' | '--gog-skeleton-square-radius' | '--gog-skeleton-wave-duration' | '--gog-slider-auto-width' | '--gog-slider-disabled-opacity' | '--gog-slider-error-color' | '--gog-slider-error-font-family' | '--gog-slider-error-font-size' | '--gog-slider-fill-bg' | '--gog-slider-focus-ring' | '--gog-slider-focus-ring-width' | '--gog-slider-gap' | '--gog-slider-label-color' | '--gog-slider-label-font-family' | '--gog-slider-label-font-size' | '--gog-slider-label-letter-spacing' | '--gog-slider-label-text-transform' | '--gog-slider-range-color' | '--gog-slider-range-font-size' | '--gog-slider-thumb-bg' | '--gog-slider-thumb-border' | '--gog-slider-thumb-border-width' | '--gog-slider-thumb-glow-size' | '--gog-slider-thumb-radius' | '--gog-slider-thumb-shadow' | '--gog-slider-thumb-size' | '--gog-slider-track-area-height' | '--gog-slider-track-bg' | '--gog-slider-track-border-color' | '--gog-slider-track-border-style' | '--gog-slider-track-border-width' | '--gog-slider-track-height' | '--gog-slider-track-radius' | '--gog-slider-value-color' | '--gog-slider-value-font-family' | '--gog-slider-value-font-size' | '--gog-slider-value-min-width' | '--gog-slider-vertical-length' | '--gog-space-2xl' | '--gog-space-lg' | '--gog-space-md' | '--gog-space-sm' | '--gog-space-xs' | '--gog-spinner-arc-inner-color' | '--gog-spinner-arc-inner-dash' | '--gog-spinner-arc-inner-glow' | '--gog-spinner-arc-inner-opacity' | '--gog-spinner-arc-inner-pulse-opacity' | '--gog-spinner-arc-inner-stroke-compact' | '--gog-spinner-arc-outer-color' | '--gog-spinner-arc-outer-dash' | '--gog-spinner-arc-outer-glow' | '--gog-spinner-arc-outer-pulse-opacity' | '--gog-spinner-diamond-color' | '--gog-spinner-diamond-glow' | '--gog-spinner-diamond-opacity' | '--gog-spinner-glow-color' | '--gog-spinner-overlay-bg' | '--gog-spinner-overlay-blur' | '--gog-spinner-overlay-fade-duration' | '--gog-spinner-overlay-z' | '--gog-spinner-pulse-duration' | '--gog-spinner-ring-duration' | '--gog-spinner-ring-glow' | '--gog-spinner-ring-padding' | '--gog-spinner-rune-color' | '--gog-spinner-rune-font-family' | '--gog-spinner-rune-glow' | '--gog-spinner-rune-pulse-opacity' | '--gog-spinner-rune-size' | '--gog-spinner-size-lg' | '--gog-spinner-size-md' | '--gog-spinner-size-slg' | '--gog-spinner-size-sm' | '--gog-spinner-size-xsm' | '--gog-spinner-spin-duration' | '--gog-spinner-spin-slow-duration' | '--gog-spinner-ticks-duration' | '--gog-spinner-track-color' | '--gog-spinner-track-opacity' | '--gog-success-color' | '--gog-surface-color' | '--gog-table-accent-bright' | '--gog-table-accent-color' | '--gog-table-border-color' | '--gog-table-border-style' | '--gog-table-border-width' | '--gog-table-empty-font-size' | '--gog-table-empty-padding' | '--gog-table-focus-ring' | '--gog-table-focus-ring-width' | '--gog-table-font-family' | '--gog-table-footer-gap' | '--gog-table-footer-min-height' | '--gog-table-gap' | '--gog-table-header-font-family' | '--gog-table-header-letter-spacing' | '--gog-table-header-text-transform' | '--gog-table-hover-bg' | '--gog-table-lg-padding-v' | '--gog-table-lg-td-font-size' | '--gog-table-lg-th-font-size' | '--gog-table-loading-opacity' | '--gog-table-loading-padding' | '--gog-table-md-padding-v' | '--gog-table-md-td-font-size' | '--gog-table-md-th-font-size' | '--gog-table-muted-color' | '--gog-table-num-col-width' | '--gog-table-num-font-size' | '--gog-table-numeric-font-family' | '--gog-table-padding-h' | '--gog-table-row-border-width' | '--gog-table-row-transition-duration' | '--gog-table-select-col-width' | '--gog-table-selected-bg' | '--gog-table-slg-padding-v' | '--gog-table-slg-td-font-size' | '--gog-table-slg-th-font-size' | '--gog-table-sm-padding-v' | '--gog-table-sm-td-font-size' | '--gog-table-sm-th-font-size' | '--gog-table-sort-icon-opacity' | '--gog-table-sort-icon-size' | '--gog-table-sort-icon-width' | '--gog-table-surface' | '--gog-table-td-font-size' | '--gog-table-td-padding-v' | '--gog-table-text-color' | '--gog-table-th-font-size' | '--gog-table-th-inner-gap' | '--gog-table-th-padding-v' | '--gog-table-total-font-size' | '--gog-table-total-letter-spacing' | '--gog-table-total-text-transform' | '--gog-table-xsm-padding-v' | '--gog-table-xsm-td-font-size' | '--gog-table-xsm-th-font-size' | '--gog-tabs-active-color' | '--gog-tabs-disabled-opacity' | '--gog-tabs-focus-ring-color' | '--gog-tabs-focus-ring-offset' | '--gog-tabs-focus-ring-width' | '--gog-tabs-font-family' | '--gog-tabs-font-weight' | '--gog-tabs-gap' | '--gog-tabs-header-border-color' | '--gog-tabs-header-border-style' | '--gog-tabs-header-border-width' | '--gog-tabs-hover-color' | '--gog-tabs-icon-size' | '--gog-tabs-indicator-color' | '--gog-tabs-indicator-radius' | '--gog-tabs-indicator-thickness' | '--gog-tabs-letter-spacing' | '--gog-tabs-lg-font-size' | '--gog-tabs-lg-padding' | '--gog-tabs-line-height' | '--gog-tabs-md-font-size' | '--gog-tabs-md-padding' | '--gog-tabs-panel-color' | '--gog-tabs-panel-padding' | '--gog-tabs-rest-bg' | '--gog-tabs-rest-color' | '--gog-tabs-slg-font-size' | '--gog-tabs-slg-padding' | '--gog-tabs-sm-font-size' | '--gog-tabs-sm-padding' | '--gog-tabs-tab-bg' | '--gog-tabs-tab-color' | '--gog-tabs-tab-font-size' | '--gog-tabs-tab-gap' | '--gog-tabs-tab-padding' | '--gog-tabs-text-transform' | '--gog-tabs-transition-duration' | '--gog-tabs-xsm-font-size' | '--gog-tabs-xsm-padding' | '--gog-tag-accent' | '--gog-tag-bg' | '--gog-tag-bg-base' | '--gog-tag-bg-mix' | '--gog-tag-border' | '--gog-tag-border-style' | '--gog-tag-border-width' | '--gog-tag-color' | '--gog-tag-color-base' | '--gog-tag-color-mix' | '--gog-tag-danger-color' | '--gog-tag-default-color' | '--gog-tag-font-family' | '--gog-tag-font-size' | '--gog-tag-font-weight' | '--gog-tag-gap' | '--gog-tag-icon-size' | '--gog-tag-info-color' | '--gog-tag-inner-border-width' | '--gog-tag-lg-font-size' | '--gog-tag-lg-gap' | '--gog-tag-lg-icon-size' | '--gog-tag-lg-padding-block' | '--gog-tag-lg-padding-inline' | '--gog-tag-line-height' | '--gog-tag-md-font-size' | '--gog-tag-md-gap' | '--gog-tag-md-icon-size' | '--gog-tag-md-padding-block' | '--gog-tag-md-padding-inline' | '--gog-tag-padding-block' | '--gog-tag-padding-inline' | '--gog-tag-pill-radius' | '--gog-tag-radius' | '--gog-tag-slg-font-size' | '--gog-tag-slg-gap' | '--gog-tag-slg-icon-size' | '--gog-tag-slg-padding-block' | '--gog-tag-slg-padding-inline' | '--gog-tag-sm-font-size' | '--gog-tag-sm-gap' | '--gog-tag-sm-icon-size' | '--gog-tag-sm-padding-block' | '--gog-tag-sm-padding-inline' | '--gog-tag-success-color' | '--gog-tag-warning-color' | '--gog-tag-xsm-font-size' | '--gog-tag-xsm-gap' | '--gog-tag-xsm-icon-size' | '--gog-tag-xsm-padding-block' | '--gog-tag-xsm-padding-inline' | '--gog-text-2xl' | '--gog-text-3xl' | '--gog-text-color' | '--gog-text-lg' | '--gog-text-md' | '--gog-text-sm' | '--gog-text-xl' | '--gog-text-xs' | '--gog-textarea-clear-icon-ratio' | '--gog-textarea-resize-grip-color' | '--gog-textarea-resize-grip-offset' | '--gog-textarea-resize-grip-opacity' | '--gog-textarea-resize-grip-size' | '--gog-textarea-resize-grip-stripe-gap' | '--gog-textarea-resize-grip-stripe-width' | '--gog-textarea-resize-inset-bottom' | '--gog-textarea-resize-inset-right' | '--gog-textarea-scrollbar-width' | '--gog-toast-accent-width' | '--gog-toast-action-font-size' | '--gog-toast-action-padding' | '--gog-toast-actions-gap' | '--gog-toast-base-z' | '--gog-toast-bg' | '--gog-toast-border' | '--gog-toast-close-font-size' | '--gog-toast-close-padding' | '--gog-toast-color' | '--gog-toast-content-gap' | '--gog-toast-enter-distance' | '--gog-toast-error-color' | '--gog-toast-font-family' | '--gog-toast-gap' | '--gog-toast-icon-color' | '--gog-toast-icon-line-height' | '--gog-toast-icon-size' | '--gog-toast-info-color' | '--gog-toast-main-gap' | '--gog-toast-max-width' | '--gog-toast-message-font-size' | '--gog-toast-message-line-height' | '--gog-toast-min-width' | '--gog-toast-padding' | '--gog-toast-progress-height' | '--gog-toast-progress-opacity' | '--gog-toast-radius' | '--gog-toast-shadow' | '--gog-toast-stack-expanded-gap' | '--gog-toast-stack-max-depth' | '--gog-toast-stack-min-opacity' | '--gog-toast-stack-opacity-step' | '--gog-toast-stack-padding' | '--gog-toast-stack-peek' | '--gog-toast-stack-scale-step' | '--gog-toast-success-color' | '--gog-toast-transition-duration' | '--gog-toast-warning-color' | '--gog-toast-z-index' | '--gog-toggle-border-color' | '--gog-toggle-border-style' | '--gog-toggle-border-width' | '--gog-toggle-disabled-opacity' | '--gog-toggle-focus-ring-color' | '--gog-toggle-focus-ring-offset' | '--gog-toggle-focus-ring-width' | '--gog-toggle-font-family' | '--gog-toggle-gap' | '--gog-toggle-label-color' | '--gog-toggle-label-line-height' | '--gog-toggle-lg-label-size' | '--gog-toggle-lg-state-font-size' | '--gog-toggle-lg-thumb-size' | '--gog-toggle-lg-track-height' | '--gog-toggle-lg-track-width' | '--gog-toggle-md-label-size' | '--gog-toggle-md-state-font-size' | '--gog-toggle-md-thumb-size' | '--gog-toggle-md-track-height' | '--gog-toggle-md-track-width' | '--gog-toggle-on-border-color' | '--gog-toggle-padding' | '--gog-toggle-radius' | '--gog-toggle-slg-label-size' | '--gog-toggle-slg-state-font-size' | '--gog-toggle-slg-thumb-size' | '--gog-toggle-slg-track-height' | '--gog-toggle-slg-track-width' | '--gog-toggle-sm-label-size' | '--gog-toggle-sm-state-font-size' | '--gog-toggle-sm-thumb-size' | '--gog-toggle-sm-track-height' | '--gog-toggle-sm-track-width' | '--gog-toggle-state-color' | '--gog-toggle-state-font-weight' | '--gog-toggle-state-letter-spacing' | '--gog-toggle-state-offset' | '--gog-toggle-state-padding-inline' | '--gog-toggle-state-thumb-gap' | '--gog-toggle-thumb-bg' | '--gog-toggle-thumb-inset' | '--gog-toggle-thumb-off-bg' | '--gog-toggle-thumb-on-bg' | '--gog-toggle-thumb-shadow' | '--gog-toggle-track-bg' | '--gog-toggle-track-off-bg' | '--gog-toggle-track-on-bg' | '--gog-toggle-transition-duration' | '--gog-toggle-xsm-label-size' | '--gog-toggle-xsm-state-font-size' | '--gog-toggle-xsm-thumb-size' | '--gog-toggle-xsm-track-height' | '--gog-toggle-xsm-track-width' | '--gog-tooltip-arrow-size' | '--gog-tooltip-bg' | '--gog-tooltip-border-color' | '--gog-tooltip-border-style' | '--gog-tooltip-border-width' | '--gog-tooltip-color' | '--gog-tooltip-font-family' | '--gog-tooltip-font-size' | '--gog-tooltip-gap' | '--gog-tooltip-line-height' | '--gog-tooltip-max-height' | '--gog-tooltip-max-width' | '--gog-tooltip-padding' | '--gog-tooltip-radius' | '--gog-tooltip-shadow' | '--gog-tooltip-transition-duration' | '--gog-tooltip-z' | '--gog-warning-color';
3393
4181
  /** Which of the three layers a token belongs to — see the README's theming section. */
3394
4182
  type GogTokenLayer = 'foundation' | 'component' | 'instance';
3395
4183
  interface GogTokenGroup {
@@ -3406,5 +4194,54 @@ declare const GOG_TOKEN_GROUPS: readonly GogTokenGroup[];
3406
4194
 
3407
4195
  type GogTooltipSide = 'top' | 'bottom' | 'left' | 'right';
3408
4196
 
3409
- export { AccordionComponent, AutocompleteComponent, ButtonComponent, ButtonToggleGroupComponent, CalendarComponent, CheckboxComponent, ChipComponent, CollapsibleComponent, Column, ConfirmationDialogComponent, DIALOG_DATA, DIALOG_REF, DatepickerComponent, DialogComponent, DialogService, DividerComponent, GOG_CONFIG, GOG_TABS_STATE, GOG_TOKEN_GROUPS, GogAccordionChevronDirective, GogAccordionContentDirective, GogAccordionHeaderDirective, GogBadgeDirective, GogButtonToggleOptionDirective, GogCheckboxIconDirective, GogCollapsibleContentDirective, GogCollapsibleTriggerDirective, GogColumn, GogColumnBodyDirective, GogColumnHeaderDirective, GogDropdownBase, GogDropdownChevronDirective, GogDropdownOptionDirective, GogFloatLabelState, GogInputAddonEndDirective, GogInputAddonStartDirective, GogMultiselectClearIconDirective, GogTabContentDirective, GogTabHeaderDirective, GogTagIconDirective, GogTooltipDirective, ICON_DEFS, IconComponent, InputfieldComponent, MultiselectComponent, PaginatorComponent, ProgressbarComponent, RadioGroupComponent, ScrollComponent, SelectComponent, SkeletonComponent, SliderComponent, SpinnerComponent, SpinnerOverlayComponent, TabComponent, TableComponent, TabsComponent, TagComponent, TemplateDirective, TextareaComponent, ThemeService, ToastComponent, ToastContainerComponent, ToastService, ToggleComponent, addDays, addMonths, addYears, buildMonthGrid, clampDate, copyTimeOnto, daysInMonth, defaultCompare, formatDate, getByPath, isAfterDay, isBeforeDay, isInRange, isSameDay, isSameMonth, isSameOptionValue, isWithinBounds, localeFirstDayOfWeek, monthNames, parseDate, provideGogConfig, readOption, resolveConfigured, startOfDay, weekdayNames, withTime };
3410
- export type { ConfirmDialogData, DialogConfig, DialogHandle, DialogRef, GogAccordionChevronContext, GogAccordionHeaderContext, GogAccordionItem, GogAccordionToggleEvent, GogBadgePosition, GogButtonToggleAppearance, GogButtonToggleOptionContext, GogCalendarDay, GogColumnBodyContext, GogColumnHeaderContext, GogDateRange, GogDateSelectionMode, GogDatepickerValue, GogDividerVariant, GogDropdownDirection, GogDropdownFilterPosition, GogDropdownOption, GogDropdownOptionContext, GogFloatLabelVariant, GogGlobalConfig, GogHourFormat, GogIconName, GogMultiselectOption, GogOptionAccessor, GogOrientation, GogPaginatorRangeMode, GogProgressbarMode, GogProgressbarVariant, GogRadioOption, GogScrollAxis, GogScrollMetrics, GogScrollOverscrollBehavior, GogScrollSize, GogSelectOption, GogSize, GogSkeletonAnimation, GogSkeletonShape, GogSliderOrientation, GogSpinnerVariant, GogTabHeaderContext, GogTableBodyContext, GogTableHeaderContext, GogTabsAlign, GogTabsState, GogTagShape, GogTagVariant, GogTextareaResize, GogTokenGroup, GogTokenLayer, GogTokenName, GogTooltipPosition, GogTooltipSide, GogVariant, OpenDialog, SortDirection, Toast, ToastAction, ToastConfig, ToastPosition, ToastType };
4197
+ /**
4198
+ * Icons an app has registered, keyed by the name `gog-icon` will be asked for. Resolves to `{}`
4199
+ * — only the built-ins are available — until a `provideGogIcons(...)` call fills it in.
4200
+ *
4201
+ * Values are raw `<svg>` markup, injected with `bypassSecurityTrustHtml` exactly like the
4202
+ * built-ins. See `provideGogIcons` for what that means for you.
4203
+ */
4204
+ declare const GOG_ICONS: InjectionToken<Readonly<Record<string, string>>>;
4205
+ /**
4206
+ * Registers icons by name, so `<gog-icon name="cart" />` works for glyphs the library does not
4207
+ * ship. This is the supported way to use your own icon set: the alternative — a `TemplateRef`
4208
+ * per instance through the `template` input — costs a `<ng-template>` at every use site and is
4209
+ * meant for one-offs, not for an icon set.
4210
+ *
4211
+ * ```ts
4212
+ * // app.config.ts
4213
+ * providers: [
4214
+ * provideGogIcons({
4215
+ * cart: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor">…</svg>',
4216
+ * user: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor">…</svg>',
4217
+ * }),
4218
+ * ]
4219
+ * ```
4220
+ *
4221
+ * **A registered name overrides a built-in of the same name**, which is how you swap the
4222
+ * library's checkmark or chevron for your own without touching every component that renders one.
4223
+ *
4224
+ * **Providing this again further down the injector tree layers onto the parent's set** rather
4225
+ * than replacing it, matching `provideGogConfig`: a lazy feature can register the three icons
4226
+ * only it uses, and the app-wide set stays available inside it.
4227
+ *
4228
+ * ## What to put in the SVG
4229
+ *
4230
+ * Use `stroke="currentColor"` (or `fill="currentColor"`) and a `viewBox`, and leave the sizing
4231
+ * alone — `gog-icon`'s stylesheet drives width, height and stroke width from the
4232
+ * `--gog-icon-*` tokens, so an icon inherits size and colour from wherever it is used, the same
4233
+ * as a built-in.
4234
+ *
4235
+ * ## Security
4236
+ *
4237
+ * The markup is inserted with `DomSanitizer.bypassSecurityTrustHtml`, because Angular's HTML
4238
+ * sanitizer strips SVG and would leave you with nothing. That is safe for what this is for —
4239
+ * static icon markup you wrote or imported at build time — and unsafe for anything derived from
4240
+ * user input or fetched at runtime. **Never build a registered icon string from data you did
4241
+ * not author.** If you need remote icons, fetch them yourself, sanitize them with a real SVG
4242
+ * sanitizer, and register the result.
4243
+ */
4244
+ declare function provideGogIcons(icons: Readonly<Record<string, string>>): Provider;
4245
+
4246
+ export { AccordionComponent, AutocompleteComponent, ButtonComponent, ButtonToggleGroupComponent, CalendarComponent, CheckboxComponent, ChipComponent, CollapsibleComponent, Column, ConfirmationDialogComponent, DIALOG_DATA, DIALOG_REF, DatepickerComponent, DialogComponent, DialogService, DividerComponent, GOG_CONFIG, GOG_ICONS, GOG_TABS_STATE, GOG_TOKEN_GROUPS, GogAccordionChevronDirective, GogAccordionContentDirective, GogAccordionHeaderDirective, GogBadgeDirective, GogButtonDirective, GogButtonToggleOptionDirective, GogCheckboxIconDirective, GogCollapsibleContentDirective, GogCollapsibleTriggerDirective, GogColumn, GogColumnBodyDirective, GogColumnHeaderDirective, GogDropdownBase, GogDropdownChevronDirective, GogDropdownOptionDirective, GogFloatLabelState, GogInputAddonEndDirective, GogInputAddonStartDirective, GogMultiselectClearIconDirective, GogTabContentDirective, GogTabHeaderDirective, GogTagIconDirective, GogTooltipDirective, ICON_DEFS, IconComponent, InputfieldComponent, MultiselectComponent, PaginatorComponent, ProgressbarComponent, RadioGroupComponent, ScrollComponent, SelectComponent, SkeletonComponent, SliderComponent, SpinnerComponent, SpinnerOverlayComponent, TabComponent, TableComponent, TabsComponent, TagComponent, TemplateDirective, TextareaComponent, ThemeService, ToastComponent, ToastContainerComponent, ToastService, ToggleComponent, addDays, addMonths, addYears, buildMonthGrid, clampDate, copyTimeOnto, daysInMonth, defaultCompare, formatDate, getByPath, isAfterDay, isBeforeDay, isInRange, isSameDay, isSameMonth, isSameOptionValue, isWithinBounds, localeFirstDayOfWeek, monthNames, parseDate, provideGogConfig, provideGogIcons, readOption, resolveConfigured, startOfDay, weekdayNames, withTime };
4247
+ export type { ConfirmDialogData, DialogConfig, DialogHandle, DialogRef, GogAccordionChevronContext, GogAccordionHeaderContext, GogAccordionItem, GogAccordionToggleEvent, GogBadgePosition, GogBuiltinIconName, GogButtonToggleAppearance, GogButtonToggleOptionContext, GogCalendarDay, GogColumnBodyContext, GogColumnHeaderContext, GogDateRange, GogDateSelectionMode, GogDatepickerValue, GogDividerVariant, GogDropdownDirection, GogDropdownFilterPosition, GogDropdownOption, GogDropdownOptionContext, GogFloatLabelVariant, GogGlobalConfig, GogHourFormat, GogIconName, GogInputMode, GogInputType, GogMultiselectOption, GogOptionAccessor, GogOrientation, GogPaginatorRangeMode, GogProgressbarMode, GogProgressbarVariant, GogRadioOption, GogScrollAxis, GogScrollMetrics, GogScrollOverscrollBehavior, GogScrollSize, GogSelectOption, GogSize, GogSkeletonAnimation, GogSkeletonShape, GogSliderOrientation, GogSliderRange, GogSpinnerVariant, GogTabHeaderContext, GogTableBodyContext, GogTableHeaderContext, GogTableRowClickEvent, GogTableSelectionMode, GogTableSortEvent, GogTabsAlign, GogTabsState, GogTagShape, GogTagVariant, GogTextareaResize, GogTokenGroup, GogTokenLayer, GogTokenName, GogTooltipPosition, GogTooltipSide, GogVariant, OpenDialog, SortDirection, Toast, ToastAction, ToastConfig, ToastPosition, ToastType };