ng-blatui 1.32.2 → 1.34.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,12 +1,13 @@
1
1
  import { ClassValue } from 'clsx';
2
2
  export { ClassValue } from 'clsx';
3
3
  import * as _angular_core from '@angular/core';
4
- import { InjectionToken, Signal, EnvironmentProviders, OnInit, OnDestroy, TemplateRef } from '@angular/core';
4
+ import { InjectionToken, Signal, EnvironmentProviders, OnInit, OnDestroy, TemplateRef, ElementRef } from '@angular/core';
5
5
  import * as class_variance_authority_types from 'class-variance-authority/types';
6
6
  import { VariantProps } from 'class-variance-authority';
7
7
  import { ControlValueAccessor } from '@angular/forms';
8
8
  import { Menu } from '@angular/aria/menu';
9
9
  export { Menu, MenuBar, MenuContent, MenuItem, MenuTrigger } from '@angular/aria/menu';
10
+ import { ConnectedPosition } from '@angular/cdk/overlay';
10
11
  import { SafeResourceUrl } from '@angular/platform-browser';
11
12
  import { CdkDragDrop } from '@angular/cdk/drag-drop';
12
13
  export { AccordionContent, AccordionGroup, AccordionPanel, AccordionTrigger, ɵɵDeferredContent, ɵɵDeferredContentAware } from '@angular/aria/accordion';
@@ -160,6 +161,11 @@ declare const VARIANTS: {
160
161
  readonly outline: "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground";
161
162
  };
162
163
  declare const TONES$1: {
164
+ readonly primary: {
165
+ readonly soft: "border-transparent bg-primary/10 text-primary dark:bg-primary/15";
166
+ readonly solid: "border-transparent bg-primary text-primary-foreground";
167
+ readonly outline: "text-primary border-primary/40";
168
+ };
163
169
  readonly success: {
164
170
  readonly soft: "border-transparent bg-success/10 text-success dark:bg-success/15";
165
171
  readonly solid: "border-transparent bg-success text-success-foreground";
@@ -196,7 +202,7 @@ type BadgeTone = keyof typeof TONES$1;
196
202
  type BadgeIntensity = keyof (typeof TONES$1)['success'];
197
203
  /**
198
204
  * BlatUI badge. Brand variants (`default | secondary | destructive | outline`)
199
- * or semantic `tone` (`success | warning | danger | info | neutral`) where
205
+ * or semantic `tone` (`primary | success | warning | danger | info | neutral`) where
200
206
  * `variant` then selects intensity (`soft | solid | outline`). Built on a native
201
207
  * element so it stays in the document flow and screen-reader friendly.
202
208
  */
@@ -204,7 +210,7 @@ declare class BuiBadge {
204
210
  /** Brand variant, or the intensity (`soft`/`solid`/`outline`) when a `tone` is set. */
205
211
  readonly variant: _angular_core.InputSignal<BadgeVariant>;
206
212
  /** Optional semantic tone; when set it overrides the brand variant's color. */
207
- readonly tone: _angular_core.InputSignal<"success" | "warning" | "danger" | "info" | "neutral" | null>;
213
+ readonly tone: _angular_core.InputSignal<"success" | "primary" | "warning" | "danger" | "info" | "neutral" | null>;
208
214
  /** Badge size preset. */
209
215
  readonly size: _angular_core.InputSignal<"default" | "sm" | "lg">;
210
216
  readonly userClass: _angular_core.InputSignal<ClassValue>;
@@ -432,6 +438,16 @@ declare class BuiAvatar {
432
438
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<BuiAvatar, "bui-avatar", never, { "src": { "alias": "src"; "required": false; "isSignal": true; }; "alt": { "alias": "alt"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
433
439
  }
434
440
 
441
+ /** Per-tone checked/indeterminate fill colors. `primary` is the default (unchanged) look. */
442
+ declare const CHECKBOX_TONES: {
443
+ readonly primary: "data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary data-[state=indeterminate]:bg-primary data-[state=indeterminate]:text-primary-foreground data-[state=indeterminate]:border-primary";
444
+ readonly success: "data-[state=checked]:bg-success data-[state=checked]:text-success-foreground data-[state=checked]:border-success data-[state=indeterminate]:bg-success data-[state=indeterminate]:text-success-foreground data-[state=indeterminate]:border-success";
445
+ readonly warning: "data-[state=checked]:bg-warning data-[state=checked]:text-warning-foreground data-[state=checked]:border-warning data-[state=indeterminate]:bg-warning data-[state=indeterminate]:text-warning-foreground data-[state=indeterminate]:border-warning";
446
+ readonly danger: "data-[state=checked]:bg-destructive data-[state=checked]:text-white data-[state=checked]:border-destructive data-[state=indeterminate]:bg-destructive data-[state=indeterminate]:text-white data-[state=indeterminate]:border-destructive";
447
+ readonly info: "data-[state=checked]:bg-info data-[state=checked]:text-info-foreground data-[state=checked]:border-info data-[state=indeterminate]:bg-info data-[state=indeterminate]:text-info-foreground data-[state=indeterminate]:border-info";
448
+ };
449
+ /** Semantic color of the checkbox's checked/indeterminate fill. */
450
+ type CheckboxTone = keyof typeof CHECKBOX_TONES;
435
451
  /**
436
452
  * BlatUI checkbox. A native `<button role="checkbox">` (Space/Enter toggle for free)
437
453
  * with `[(checked)]` two-way binding and tri-state `[(indeterminate)]`.
@@ -443,6 +459,8 @@ declare class BuiCheckbox implements ControlValueAccessor {
443
459
  readonly indeterminate: _angular_core.ModelSignal<boolean>;
444
460
  /** Whether the checkbox is disabled. Two-way bindable with `[(disabled)]`. */
445
461
  readonly disabled: _angular_core.ModelSignal<boolean>;
462
+ /** Semantic color of the checked/indeterminate fill. */
463
+ readonly tone: _angular_core.InputSignal<"success" | "primary" | "warning" | "danger" | "info">;
446
464
  readonly userClass: _angular_core.InputSignal<ClassValue>;
447
465
  private onChange;
448
466
  protected onTouched: () => void;
@@ -455,7 +473,7 @@ declare class BuiCheckbox implements ControlValueAccessor {
455
473
  registerOnTouched(callback: () => void): void;
456
474
  setDisabledState(isDisabled: boolean): void;
457
475
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiCheckbox, never>;
458
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<BuiCheckbox, "button[buiCheckbox]", never, { "checked": { "alias": "checked"; "required": false; "isSignal": true; }; "indeterminate": { "alias": "indeterminate"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; "indeterminate": "indeterminateChange"; "disabled": "disabledChange"; }, never, never, true, never>;
476
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BuiCheckbox, "button[buiCheckbox]", never, { "checked": { "alias": "checked"; "required": false; "isSignal": true; }; "indeterminate": { "alias": "indeterminate"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; "indeterminate": "indeterminateChange"; "disabled": "disabledChange"; }, never, never, true, never>;
459
477
  }
460
478
 
461
479
  declare const SWITCH_TRACK: {
@@ -546,11 +564,25 @@ declare class BuiTabPanel {
546
564
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BuiTabPanel, "[buiTabPanel]", never, { "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
547
565
  }
548
566
 
567
+ /** Caps the dialog width from the `sm` breakpoint up. On smaller screens the dialog always
568
+ * spans `calc(100vw - 2rem)` so it never collapses to its intrinsic width. */
569
+ declare const DIALOG_SIZE: {
570
+ readonly sm: "sm:max-w-sm";
571
+ readonly md: "sm:max-w-md";
572
+ readonly lg: "sm:max-w-lg";
573
+ readonly xl: "sm:max-w-xl";
574
+ readonly '2xl': "sm:max-w-2xl";
575
+ readonly full: "sm:max-w-[calc(100vw-4rem)]";
576
+ };
577
+ /** Dialog width preset. Controls the max width from the `sm` breakpoint up. */
578
+ type DialogSize = keyof typeof DIALOG_SIZE;
549
579
  declare class BuiDialogContent {
580
+ /** Width preset: `sm` | `md` | `lg` | `xl` | `2xl` | `full`. Defaults to `lg`. */
581
+ readonly size: _angular_core.InputSignal<"sm" | "lg" | "md" | "xl" | "2xl" | "full">;
550
582
  readonly userClass: _angular_core.InputSignal<ClassValue>;
551
583
  protected readonly computedClass: _angular_core.Signal<string>;
552
584
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiDialogContent, never>;
553
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BuiDialogContent, "[buiDialogContent]", never, { "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
585
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BuiDialogContent, "[buiDialogContent]", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
554
586
  }
555
587
  declare class BuiDialogHeader {
556
588
  readonly userClass: _angular_core.InputSignal<ClassValue>;
@@ -870,7 +902,7 @@ declare class BuiEmptyContent {
870
902
  /** Centered, padded page container with a max-width scale. */
871
903
  declare class BuiContainer {
872
904
  /** Maximum width preset for the container. */
873
- readonly size: _angular_core.InputSignal<"sm" | "lg" | "xl" | "md" | "prose" | "full">;
905
+ readonly size: _angular_core.InputSignal<"sm" | "lg" | "md" | "xl" | "full" | "prose">;
874
906
  readonly userClass: _angular_core.InputSignal<ClassValue>;
875
907
  protected readonly computedClass: _angular_core.Signal<string>;
876
908
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiContainer, never>;
@@ -1025,7 +1057,7 @@ declare class BuiCopyButton {
1025
1057
  */
1026
1058
  declare class BuiBanner implements OnInit {
1027
1059
  /** Color tone (`default | primary | info | success | warning | danger`). */
1028
- readonly tone: _angular_core.InputSignal<"default" | "success" | "warning" | "danger" | "info" | "primary">;
1060
+ readonly tone: _angular_core.InputSignal<"default" | "success" | "primary" | "warning" | "danger" | "info">;
1029
1061
  /** Whether to show the dismiss button. */
1030
1062
  readonly dismissible: _angular_core.InputSignal<boolean>;
1031
1063
  /** When set, the dismissal is remembered in localStorage under this key. */
@@ -1623,11 +1655,19 @@ declare class BuiAutosizeTextarea extends BuiTextarea {
1623
1655
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BuiAutosizeTextarea, "textarea[buiAutosizeTextarea]", never, {}, {}, never, never, true, never>;
1624
1656
  }
1625
1657
 
1626
- declare class BuiDropdownMenu {
1658
+ declare class BuiDropdownMenu implements OnDestroy {
1627
1659
  protected readonly menu: Menu<any>;
1660
+ private readonly overlay;
1661
+ private readonly host;
1662
+ private readonly isBrowser;
1663
+ private overlayRef;
1664
+ private portal;
1628
1665
  readonly userClass: _angular_core.InputSignal<ClassValue>;
1629
1666
  protected readonly computedClass: _angular_core.Signal<string>;
1630
- protected onScroll(): void;
1667
+ constructor();
1668
+ private attach;
1669
+ private detach;
1670
+ ngOnDestroy(): void;
1631
1671
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiDropdownMenu, never>;
1632
1672
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BuiDropdownMenu, "[buiDropdownMenu]", never, { "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1633
1673
  }
@@ -1885,6 +1925,12 @@ declare class BuiSelect implements ControlValueAccessor {
1885
1925
  readonly placeholder: _angular_core.InputSignal<string>;
1886
1926
  /** Whether the select is disabled. Two-way bindable with `[(disabled)]`. */
1887
1927
  readonly disabled: _angular_core.ModelSignal<boolean>;
1928
+ /**
1929
+ * Accessible name for the combobox. Bound from a plain `aria-label="…"` on the host
1930
+ * (consumed as an input, so it's applied to the inner combobox button rather than left
1931
+ * as a prohibited ARIA attribute on the custom element).
1932
+ */
1933
+ readonly ariaLabel: _angular_core.InputSignal<string>;
1888
1934
  readonly userClass: _angular_core.InputSignal<ClassValue>;
1889
1935
  private onChange;
1890
1936
  private onTouched;
@@ -1894,12 +1940,13 @@ declare class BuiSelect implements ControlValueAccessor {
1894
1940
  protected readonly active: _angular_core.WritableSignal<number>;
1895
1941
  protected readonly selectedOption: _angular_core.Signal<SelectOption | undefined>;
1896
1942
  protected readonly selectedLabel: _angular_core.Signal<string>;
1943
+ protected readonly listboxPositions: ConnectedPosition[];
1897
1944
  protected readonly computedClass: _angular_core.Signal<string>;
1898
1945
  protected isSelected(value: string): boolean;
1899
1946
  protected toggle(): void;
1900
1947
  protected select(option: SelectOption): void;
1901
1948
  protected onKeydown(event: KeyboardEvent): void;
1902
- protected onDocumentClick(event: MouseEvent): void;
1949
+ protected onOutsideClick(event: MouseEvent): void;
1903
1950
  private openList;
1904
1951
  private close;
1905
1952
  writeValue(value: SelectValue | null): void;
@@ -1907,7 +1954,7 @@ declare class BuiSelect implements ControlValueAccessor {
1907
1954
  registerOnTouched(callback: () => void): void;
1908
1955
  setDisabledState(isDisabled: boolean): void;
1909
1956
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiSelect, never>;
1910
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<BuiSelect, "bui-select", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "values": { "alias": "values"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "values": "valuesChange"; "disabled": "disabledChange"; }, never, never, true, never>;
1957
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BuiSelect, "bui-select", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "values": { "alias": "values"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "values": "valuesChange"; "disabled": "disabledChange"; }, never, never, true, never>;
1911
1958
  }
1912
1959
 
1913
1960
  /**
@@ -1972,13 +2019,14 @@ declare class BuiCombobox implements ControlValueAccessor {
1972
2019
  protected readonly selectedLabel: _angular_core.Signal<string>;
1973
2020
  protected readonly display: _angular_core.Signal<string>;
1974
2021
  protected readonly filtered: _angular_core.Signal<readonly ComboboxOption[]>;
2022
+ protected readonly listboxPositions: ConnectedPosition[];
1975
2023
  protected readonly computedClass: _angular_core.Signal<string>;
1976
2024
  protected onInput(event: Event): void;
1977
2025
  protected openList(): void;
1978
2026
  protected isSelected(value: string): boolean;
1979
2027
  protected select(option: ComboboxOption): void;
1980
2028
  protected onKeydown(event: KeyboardEvent): void;
1981
- protected onDocumentClick(event: MouseEvent): void;
2029
+ protected onOutsideClick(event: MouseEvent): void;
1982
2030
  writeValue(value: ComboboxValue | null): void;
1983
2031
  registerOnChange(callback: (value: ComboboxValue) => void): void;
1984
2032
  registerOnTouched(callback: () => void): void;
@@ -2929,6 +2977,49 @@ declare class BuiKnob implements ControlValueAccessor {
2929
2977
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<BuiKnob, "bui-knob", never, { "value": { "alias": "value"; "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; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "disabled": "disabledChange"; }, never, never, true, never>;
2930
2978
  }
2931
2979
 
2980
+ declare const ICON_TILE_TONES: {
2981
+ readonly primary: "bg-primary/10 text-primary";
2982
+ readonly success: "bg-success/10 text-success dark:bg-success/15";
2983
+ readonly warning: "bg-warning/10 text-warning dark:bg-warning/15";
2984
+ readonly info: "bg-info/10 text-info dark:bg-info/15";
2985
+ readonly destructive: "bg-destructive/10 text-destructive dark:bg-destructive/15";
2986
+ readonly muted: "bg-muted text-foreground";
2987
+ readonly 'chart-1': "bg-chart-1/10 text-chart-1";
2988
+ readonly 'chart-2': "bg-chart-2/10 text-chart-2";
2989
+ readonly 'chart-3': "bg-chart-3/10 text-chart-3";
2990
+ readonly 'chart-4': "bg-chart-4/10 text-chart-4";
2991
+ readonly 'chart-5': "bg-chart-5/10 text-chart-5";
2992
+ };
2993
+ declare const ICON_TILE_SIZES: {
2994
+ readonly sm: "size-8 [&_svg]:size-4";
2995
+ readonly default: "size-10 [&_svg]:size-5";
2996
+ readonly lg: "size-12 [&_svg]:size-6";
2997
+ };
2998
+ /** Tone of the icon tile's tinted background + foreground. */
2999
+ type IconTileTone = keyof typeof ICON_TILE_TONES;
3000
+ /** Preset square size of the icon tile. */
3001
+ type IconTileSize = keyof typeof ICON_TILE_SIZES;
3002
+ /** Tile shape: a rounded square (default) or a full circle. */
3003
+ type IconTileShape = 'square' | 'circle';
3004
+ /**
3005
+ * A tinted rounded square that frames a projected icon — the small "tile" used
3006
+ * across dashboards for stat-card leading icons, list-row markers, feature
3007
+ * bullets, etc. Project an icon (e.g. an inline `<svg>`) as its content; the
3008
+ * tile sizes it automatically.
3009
+ */
3010
+ declare class BuiIconTile {
3011
+ /** Colour tone (semantic or chart palette). */
3012
+ readonly tone: _angular_core.InputSignal<"destructive" | "success" | "primary" | "warning" | "info" | "muted" | "chart-1" | "chart-2" | "chart-3" | "chart-4" | "chart-5">;
3013
+ /** Square size preset. */
3014
+ readonly size: _angular_core.InputSignal<"default" | "sm" | "lg">;
3015
+ /** Tile shape — a rounded square (default) or a full circle. */
3016
+ readonly shape: _angular_core.InputSignal<IconTileShape>;
3017
+ readonly userClass: _angular_core.InputSignal<ClassValue>;
3018
+ protected readonly computedClass: _angular_core.Signal<string>;
3019
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiIconTile, never>;
3020
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BuiIconTile, "bui-icon-tile", never, { "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "shape": { "alias": "shape"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
3021
+ }
3022
+
2932
3023
  /** A lazy image with a blurred placeholder / skeleton and a graceful error state. */
2933
3024
  declare class BuiImage {
2934
3025
  /** Source URL of the full image to load. */
@@ -3014,7 +3105,7 @@ declare class BuiChatMessage {
3014
3105
  readonly userClass: _angular_core.InputSignal<ClassValue>;
3015
3106
  protected readonly isUser: _angular_core.Signal<boolean>;
3016
3107
  protected readonly initials: _angular_core.Signal<string>;
3017
- protected readonly bubbleClass: _angular_core.Signal<"bg-primary text-primary-foreground" | "bg-muted text-foreground">;
3108
+ protected readonly bubbleClass: _angular_core.Signal<"bg-muted text-foreground" | "bg-primary text-primary-foreground">;
3018
3109
  protected readonly computedClass: _angular_core.Signal<string>;
3019
3110
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiChatMessage, never>;
3020
3111
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<BuiChatMessage, "bui-chat-message", never, { "role": { "alias": "role"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "time": { "alias": "time"; "required": false; "isSignal": true; }; "avatar": { "alias": "avatar"; "required": false; "isSignal": true; }; "typing": { "alias": "typing"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
@@ -3151,6 +3242,278 @@ declare class BuiPhoneInput {
3151
3242
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<BuiPhoneInput, "bui-phone-input", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "country": { "alias": "country"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; "countryLabel": { "alias": "countryLabel"; "required": false; "isSignal": true; }; "numberLabel": { "alias": "numberLabel"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "country": "countryChange"; }, never, never, true, never>;
3152
3243
  }
3153
3244
 
3245
+ /** How the currency is shown: local symbol, narrow symbol, ISO code, or full name. */
3246
+ type CurrencyDisplay = 'symbol' | 'narrowSymbol' | 'code' | 'name';
3247
+ /**
3248
+ * A localized currency input backed by `Intl.NumberFormat`. Stores a numeric amount and displays
3249
+ * it formatted while unfocused; while focused it shows a plain editable number so the caret and
3250
+ * typing behave predictably. Works with template-driven and reactive forms (ControlValueAccessor).
3251
+ *
3252
+ * When ICU has no local glyph for a currency (so it renders the ISO code, e.g. `MAD`), pass a
3253
+ * `symbol` to override it in the locale's correct position — `symbol="DH"` shows `DH`.
3254
+ */
3255
+ declare class BuiMoneyInput implements ControlValueAccessor {
3256
+ /** The numeric amount. Two-way bindable with `[(value)]`. `null` when the field is empty. */
3257
+ readonly value: _angular_core.ModelSignal<number | null>;
3258
+ /** BCP 47 locale for formatting/parsing. Defaults to the runtime locale. */
3259
+ readonly locale: _angular_core.InputSignal<string>;
3260
+ /** ISO 4217 currency code, e.g. `USD`, `EUR`, `MAD`. */
3261
+ readonly currency: _angular_core.InputSignal<string>;
3262
+ /** How the currency is shown. `narrowSymbol` renders the local symbol when ICU has one. */
3263
+ readonly currencyDisplay: _angular_core.InputSignal<CurrencyDisplay>;
3264
+ /**
3265
+ * Custom currency symbol that overrides the one ICU would render, kept in the locale's correct
3266
+ * position and spacing. Use it when the ISO data has no local glyph — e.g. `symbol="DH"` shows
3267
+ * `DH` instead of the `MAD` code for Moroccan dirham.
3268
+ */
3269
+ readonly symbol: _angular_core.InputSignal<string>;
3270
+ /** Minimum fraction digits shown when formatted. Defaults to the currency's own default. */
3271
+ readonly minimumFractionDigits: _angular_core.InputSignal<number | null>;
3272
+ /** Maximum fraction digits shown when formatted. Defaults to the currency's own default. */
3273
+ readonly maximumFractionDigits: _angular_core.InputSignal<number | null>;
3274
+ /** Placeholder shown when the field is empty. */
3275
+ readonly placeholder: _angular_core.InputSignal<string>;
3276
+ /** Whether the field is disabled. Two-way bindable with `[(disabled)]`. */
3277
+ readonly disabled: _angular_core.ModelSignal<boolean>;
3278
+ /** Native `name` attribute for the input. */
3279
+ readonly name: _angular_core.InputSignal<string>;
3280
+ /** Native `id` attribute; falls back to a generated id. */
3281
+ readonly id: _angular_core.InputSignal<string>;
3282
+ /** Accessible name, applied to the inner input. */
3283
+ readonly ariaLabel: _angular_core.InputSignal<string>;
3284
+ readonly userClass: _angular_core.InputSignal<ClassValue>;
3285
+ protected readonly resolvedId: string;
3286
+ private onChange;
3287
+ private onTouched;
3288
+ private readonly focused;
3289
+ /** Literal string shown in the input (formatted while blurred, raw while focused/typing). */
3290
+ private readonly editText;
3291
+ private readonly formatter;
3292
+ private readonly formatted;
3293
+ protected readonly text: _angular_core.Signal<string>;
3294
+ protected readonly inputClass: _angular_core.Signal<string>;
3295
+ protected readonly computedClass: _angular_core.Signal<string>;
3296
+ protected onFocus(): void;
3297
+ protected onInput(event: Event): void;
3298
+ protected onBlur(): void;
3299
+ /** Parse a user-typed string into a number, tolerating currency symbols, grouping and either
3300
+ * `.` or `,` as the decimal separator. Returns `null` for an empty or non-numeric entry. */
3301
+ private parse;
3302
+ writeValue(value: number | null): void;
3303
+ registerOnChange(callback: (value: number | null) => void): void;
3304
+ registerOnTouched(callback: () => void): void;
3305
+ setDisabledState(isDisabled: boolean): void;
3306
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiMoneyInput, never>;
3307
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BuiMoneyInput, "bui-money-input", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "currency": { "alias": "currency"; "required": false; "isSignal": true; }; "currencyDisplay": { "alias": "currencyDisplay"; "required": false; "isSignal": true; }; "symbol": { "alias": "symbol"; "required": false; "isSignal": true; }; "minimumFractionDigits": { "alias": "minimumFractionDigits"; "required": false; "isSignal": true; }; "maximumFractionDigits": { "alias": "maximumFractionDigits"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "disabled": "disabledChange"; }, never, never, true, never>;
3308
+ }
3309
+
3310
+ /**
3311
+ * A batteries-included text field: label, control, hint and error wired together with the right
3312
+ * `for` / `id` / `aria-describedby` / `aria-invalid` relationships, on top of the `buiField` +
3313
+ * `buiInput` primitives. Reach for the primitives directly when you need a custom layout.
3314
+ *
3315
+ * ```html
3316
+ * <bui-input-field label="Email" hint="We'll never share it." type="email" [(value)]="email" />
3317
+ * ```
3318
+ */
3319
+ declare class BuiInputField implements ControlValueAccessor {
3320
+ /** The field value. Two-way bindable with `[(value)]`. */
3321
+ readonly value: _angular_core.ModelSignal<string>;
3322
+ /** Visible label. When empty, pass `aria-label` for an accessible name. */
3323
+ readonly label: _angular_core.InputSignal<string>;
3324
+ /** Helper text shown below the control while there is no error. */
3325
+ readonly hint: _angular_core.InputSignal<string>;
3326
+ /** Error message; when set, the control is marked invalid and this replaces the hint. */
3327
+ readonly error: _angular_core.InputSignal<string>;
3328
+ /** Native input type (`text`, `email`, `password`, `number`, …). */
3329
+ readonly type: _angular_core.InputSignal<string>;
3330
+ /** Placeholder shown when the field is empty. */
3331
+ readonly placeholder: _angular_core.InputSignal<string>;
3332
+ /** Whether the field is required (adds a marker and the `required` attribute). */
3333
+ readonly required: _angular_core.InputSignal<boolean>;
3334
+ /** Whether the field is disabled. Two-way bindable with `[(disabled)]`. */
3335
+ readonly disabled: _angular_core.ModelSignal<boolean>;
3336
+ /** Size preset controlling input height, padding and text size. */
3337
+ readonly size: _angular_core.InputSignal<"default" | "sm" | "lg">;
3338
+ /** Native `name` attribute. */
3339
+ readonly name: _angular_core.InputSignal<string>;
3340
+ /** Native `autocomplete` attribute. */
3341
+ readonly autocomplete: _angular_core.InputSignal<string>;
3342
+ /** Native `inputmode` attribute. */
3343
+ readonly inputmode: _angular_core.InputSignal<string>;
3344
+ /** Accessible name applied to the input when there is no visible `label`. */
3345
+ readonly ariaLabel: _angular_core.InputSignal<string>;
3346
+ readonly userClass: _angular_core.InputSignal<ClassValue>;
3347
+ private readonly ids;
3348
+ protected readonly resolvedId: string;
3349
+ protected readonly hintId: string;
3350
+ protected readonly errorId: string;
3351
+ protected onChange: (value: string) => void;
3352
+ protected onTouched: () => void;
3353
+ protected readonly describedBy: _angular_core.Signal<string | null>;
3354
+ protected readonly computedClass: _angular_core.Signal<string>;
3355
+ protected onInput(event: Event): void;
3356
+ writeValue(value: string | null): void;
3357
+ registerOnChange(callback: (value: string) => void): void;
3358
+ registerOnTouched(callback: () => void): void;
3359
+ setDisabledState(isDisabled: boolean): void;
3360
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiInputField, never>;
3361
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BuiInputField, "bui-input-field", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "inputmode": { "alias": "inputmode"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "disabled": "disabledChange"; }, never, never, true, never>;
3362
+ }
3363
+
3364
+ /** Selection behavior of the calendar. */
3365
+ type CalendarMode = 'single' | 'range' | 'multiple';
3366
+ interface CalendarRange {
3367
+ /** Start date of the range, as `yyyy-mm-dd`. */
3368
+ start: string;
3369
+ /** End date of the range, as `yyyy-mm-dd`. */
3370
+ end: string;
3371
+ }
3372
+ interface Day {
3373
+ iso: string;
3374
+ num: number;
3375
+ inMonth: boolean;
3376
+ isToday: boolean;
3377
+ disabled: boolean;
3378
+ }
3379
+ interface MonthGrid {
3380
+ key: string;
3381
+ label: string;
3382
+ weeks: Day[][];
3383
+ }
3384
+ /**
3385
+ * A date calendar. Modes: `single` (one day), `range` (start–end), `multiple` (a set of days).
3386
+ * Render several months side by side with `months`. SSR-safe.
3387
+ */
3388
+ declare class BuiCalendar implements ControlValueAccessor {
3389
+ /** Selected day (mode="single") as `yyyy-mm-dd`. Two-way bindable with `[(value)]`. */
3390
+ readonly value: _angular_core.ModelSignal<string>;
3391
+ /** Selection mode: `single` | `range` | `multiple`. */
3392
+ readonly mode: _angular_core.InputSignal<CalendarMode>;
3393
+ /** Selected range (mode="range"). */
3394
+ readonly range: _angular_core.ModelSignal<CalendarRange>;
3395
+ /** Selected days (mode="multiple"). */
3396
+ readonly values: _angular_core.ModelSignal<readonly string[]>;
3397
+ /** Number of month grids to render side by side. */
3398
+ readonly months: _angular_core.InputSignal<number>;
3399
+ /** First day of the week (0 = Sunday). */
3400
+ readonly weekStart: _angular_core.InputSignal<number>;
3401
+ /** Earliest selectable date (`yyyy-mm-dd`). */
3402
+ readonly minDate: _angular_core.InputSignal<string>;
3403
+ /** Latest selectable date (`yyyy-mm-dd`). */
3404
+ readonly maxDate: _angular_core.InputSignal<string>;
3405
+ /** Specific ISO dates (yyyy-mm-dd) to disable. */
3406
+ readonly disabledDates: _angular_core.InputSignal<readonly string[]>;
3407
+ /** Disable Saturdays and Sundays. */
3408
+ readonly disableWeekends: _angular_core.InputSignal<boolean>;
3409
+ /** Show an ISO week-number column on the left. */
3410
+ readonly showWeekNumbers: _angular_core.InputSignal<boolean>;
3411
+ /** `dropdown` swaps the month label for month + year selects (single month only). */
3412
+ readonly captionLayout: _angular_core.InputSignal<"label" | "dropdown">;
3413
+ /** Hide days that fall outside the current month. */
3414
+ readonly hideOutsideDays: _angular_core.InputSignal<boolean>;
3415
+ /** Whether the whole calendar is disabled. Two-way bindable with `[(disabled)]`. */
3416
+ readonly disabled: _angular_core.ModelSignal<boolean>;
3417
+ readonly userClass: _angular_core.InputSignal<ClassValue>;
3418
+ /** Accessible label for the previous-month button. */
3419
+ readonly previousMonthLabel: _angular_core.InputSignal<string | undefined>;
3420
+ /** Accessible label for the month dropdown. */
3421
+ readonly monthSelectLabel: _angular_core.InputSignal<string | undefined>;
3422
+ /** Accessible label for the year dropdown. */
3423
+ readonly yearLabel: _angular_core.InputSignal<string | undefined>;
3424
+ /** Accessible label for the next-month button. */
3425
+ readonly nextMonthLabel: _angular_core.InputSignal<string | undefined>;
3426
+ protected readonly previousMonthText: _angular_core.Signal<string>;
3427
+ protected readonly monthText: _angular_core.Signal<string>;
3428
+ protected readonly yearText: _angular_core.Signal<string>;
3429
+ protected readonly nextMonthText: _angular_core.Signal<string>;
3430
+ private onChange;
3431
+ protected onTouched: () => void;
3432
+ private readonly view;
3433
+ protected readonly weekdays: _angular_core.Signal<string[]>;
3434
+ protected readonly monthLabel: _angular_core.Signal<string>;
3435
+ protected readonly viewMonth: _angular_core.Signal<number>;
3436
+ protected readonly viewYear: _angular_core.Signal<number>;
3437
+ protected readonly monthOptions: _angular_core.Signal<{
3438
+ value: number;
3439
+ label: string;
3440
+ }[]>;
3441
+ protected readonly years: _angular_core.Signal<number[]>;
3442
+ protected readonly monthGrids: _angular_core.Signal<MonthGrid[]>;
3443
+ protected readonly computedClass: _angular_core.Signal<string>;
3444
+ protected weekNum(iso: string): number;
3445
+ protected changeMonth(delta: number): void;
3446
+ protected setMonth(event: Event): void;
3447
+ protected setYear(event: Event): void;
3448
+ protected select(iso: string): void;
3449
+ writeValue(value: string | null | undefined): void;
3450
+ registerOnChange(callback: (value: string) => void): void;
3451
+ registerOnTouched(callback: () => void): void;
3452
+ setDisabledState(isDisabled: boolean): void;
3453
+ protected isSelected(iso: string): boolean;
3454
+ private inRangeMiddle;
3455
+ protected dayClass(day: Day): string;
3456
+ private weeksFor;
3457
+ private isDisabled;
3458
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiCalendar, never>;
3459
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BuiCalendar, "bui-calendar", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "range": { "alias": "range"; "required": false; "isSignal": true; }; "values": { "alias": "values"; "required": false; "isSignal": true; }; "months": { "alias": "months"; "required": false; "isSignal": true; }; "weekStart": { "alias": "weekStart"; "required": false; "isSignal": true; }; "minDate": { "alias": "minDate"; "required": false; "isSignal": true; }; "maxDate": { "alias": "maxDate"; "required": false; "isSignal": true; }; "disabledDates": { "alias": "disabledDates"; "required": false; "isSignal": true; }; "disableWeekends": { "alias": "disableWeekends"; "required": false; "isSignal": true; }; "showWeekNumbers": { "alias": "showWeekNumbers"; "required": false; "isSignal": true; }; "captionLayout": { "alias": "captionLayout"; "required": false; "isSignal": true; }; "hideOutsideDays": { "alias": "hideOutsideDays"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; "previousMonthLabel": { "alias": "previousMonthLabel"; "required": false; "isSignal": true; }; "monthSelectLabel": { "alias": "monthSelectLabel"; "required": false; "isSignal": true; }; "yearLabel": { "alias": "yearLabel"; "required": false; "isSignal": true; }; "nextMonthLabel": { "alias": "nextMonthLabel"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "range": "rangeChange"; "values": "valuesChange"; "disabled": "disabledChange"; }, never, never, true, never>;
3460
+ }
3461
+
3462
+ /** A named shortcut shown beside the calendar, e.g. "Last 7 days". */
3463
+ interface DateRangePreset {
3464
+ /** Text shown for the shortcut. */
3465
+ label: string;
3466
+ /** The range it applies, as `yyyy-mm-dd` bounds. */
3467
+ range: CalendarRange;
3468
+ }
3469
+ /**
3470
+ * A start→end date range picker: a trigger that opens a two-month calendar (in a CDK overlay, so
3471
+ * it is never clipped by an `overflow: hidden` ancestor) alongside quick-pick presets. Two-way
3472
+ * bind the range with `[(value)]` or use it as a form control.
3473
+ *
3474
+ * ```html
3475
+ * <bui-date-range-picker [(value)]="range" />
3476
+ * ```
3477
+ */
3478
+ declare class BuiDateRangePicker implements ControlValueAccessor {
3479
+ /** Selected range as `yyyy-mm-dd` bounds. Two-way bindable with `[(value)]`. */
3480
+ readonly value: _angular_core.ModelSignal<CalendarRange>;
3481
+ /** Month grids shown side by side in the popover. */
3482
+ readonly months: _angular_core.InputSignal<number>;
3483
+ /** Earliest selectable date (`yyyy-mm-dd`). */
3484
+ readonly minDate: _angular_core.InputSignal<string>;
3485
+ /** Latest selectable date (`yyyy-mm-dd`). */
3486
+ readonly maxDate: _angular_core.InputSignal<string>;
3487
+ /** Text shown on the trigger when nothing is selected. */
3488
+ readonly placeholder: _angular_core.InputSignal<string>;
3489
+ /** Whether the picker is disabled. Two-way bindable with `[(disabled)]`. */
3490
+ readonly disabled: _angular_core.ModelSignal<boolean>;
3491
+ /** Quick-pick shortcuts. Pass `[]` to hide them; omit for a sensible default set. */
3492
+ readonly presets: _angular_core.InputSignal<DateRangePreset[] | null>;
3493
+ /** Accessible name applied to the trigger. */
3494
+ readonly ariaLabel: _angular_core.InputSignal<string>;
3495
+ readonly userClass: _angular_core.InputSignal<ClassValue>;
3496
+ protected readonly open: _angular_core.WritableSignal<boolean>;
3497
+ protected readonly popupPositions: ConnectedPosition[];
3498
+ private onChange;
3499
+ private onTouched;
3500
+ protected readonly hasValue: _angular_core.Signal<boolean>;
3501
+ protected readonly display: _angular_core.Signal<string>;
3502
+ protected readonly resolvedPresets: _angular_core.Signal<DateRangePreset[]>;
3503
+ protected readonly computedClass: _angular_core.Signal<string>;
3504
+ protected onRange(range: CalendarRange): void;
3505
+ protected applyPreset(preset: DateRangePreset): void;
3506
+ protected onOutsideClick(event: MouseEvent): void;
3507
+ private fmt;
3508
+ private defaultPresets;
3509
+ writeValue(value: CalendarRange | null): void;
3510
+ registerOnChange(callback: (value: CalendarRange) => void): void;
3511
+ registerOnTouched(callback: () => void): void;
3512
+ setDisabledState(isDisabled: boolean): void;
3513
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiDateRangePicker, never>;
3514
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BuiDateRangePicker, "bui-date-range-picker", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "months": { "alias": "months"; "required": false; "isSignal": true; }; "minDate": { "alias": "minDate"; "required": false; "isSignal": true; }; "maxDate": { "alias": "maxDate"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "presets": { "alias": "presets"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "disabled": "disabledChange"; }, never, never, true, never>;
3515
+ }
3516
+
3154
3517
  /** A chat composer: an autosizing textarea with a send button. Emits `submitted` on send. */
3155
3518
  declare class BuiPromptInput {
3156
3519
  /** Current textarea content. Two-way bindable with `[(value)]`. */
@@ -3815,105 +4178,10 @@ declare class BuiMarkdownEditor {
3815
4178
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<BuiMarkdownEditor, "bui-markdown-editor", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
3816
4179
  }
3817
4180
 
3818
- /** Selection behavior of the calendar. */
3819
- type CalendarMode = 'single' | 'range' | 'multiple';
3820
- interface CalendarRange {
3821
- /** Start date of the range, as `yyyy-mm-dd`. */
3822
- start: string;
3823
- /** End date of the range, as `yyyy-mm-dd`. */
3824
- end: string;
3825
- }
3826
- interface Day {
3827
- iso: string;
3828
- num: number;
3829
- inMonth: boolean;
3830
- isToday: boolean;
3831
- disabled: boolean;
3832
- }
3833
- interface MonthGrid {
3834
- key: string;
3835
- label: string;
3836
- weeks: Day[][];
3837
- }
3838
4181
  /**
3839
- * A date calendar. Modes: `single` (one day), `range` (start–end), `multiple` (a set of days).
3840
- * Render several months side by side with `months`. SSR-safe.
4182
+ * A date input that opens a calendar popover. The popover renders in a CDK overlay, so it escapes
4183
+ * any `overflow: hidden` ancestor (no clipping) and flips to stay on-screen.
3841
4184
  */
3842
- declare class BuiCalendar implements ControlValueAccessor {
3843
- /** Selected day (mode="single") as `yyyy-mm-dd`. Two-way bindable with `[(value)]`. */
3844
- readonly value: _angular_core.ModelSignal<string>;
3845
- /** Selection mode: `single` | `range` | `multiple`. */
3846
- readonly mode: _angular_core.InputSignal<CalendarMode>;
3847
- /** Selected range (mode="range"). */
3848
- readonly range: _angular_core.ModelSignal<CalendarRange>;
3849
- /** Selected days (mode="multiple"). */
3850
- readonly values: _angular_core.ModelSignal<readonly string[]>;
3851
- /** Number of month grids to render side by side. */
3852
- readonly months: _angular_core.InputSignal<number>;
3853
- /** First day of the week (0 = Sunday). */
3854
- readonly weekStart: _angular_core.InputSignal<number>;
3855
- /** Earliest selectable date (`yyyy-mm-dd`). */
3856
- readonly minDate: _angular_core.InputSignal<string>;
3857
- /** Latest selectable date (`yyyy-mm-dd`). */
3858
- readonly maxDate: _angular_core.InputSignal<string>;
3859
- /** Specific ISO dates (yyyy-mm-dd) to disable. */
3860
- readonly disabledDates: _angular_core.InputSignal<readonly string[]>;
3861
- /** Disable Saturdays and Sundays. */
3862
- readonly disableWeekends: _angular_core.InputSignal<boolean>;
3863
- /** Show an ISO week-number column on the left. */
3864
- readonly showWeekNumbers: _angular_core.InputSignal<boolean>;
3865
- /** `dropdown` swaps the month label for month + year selects (single month only). */
3866
- readonly captionLayout: _angular_core.InputSignal<"label" | "dropdown">;
3867
- /** Hide days that fall outside the current month. */
3868
- readonly hideOutsideDays: _angular_core.InputSignal<boolean>;
3869
- /** Whether the whole calendar is disabled. Two-way bindable with `[(disabled)]`. */
3870
- readonly disabled: _angular_core.ModelSignal<boolean>;
3871
- readonly userClass: _angular_core.InputSignal<ClassValue>;
3872
- /** Accessible label for the previous-month button. */
3873
- readonly previousMonthLabel: _angular_core.InputSignal<string | undefined>;
3874
- /** Accessible label for the month dropdown. */
3875
- readonly monthSelectLabel: _angular_core.InputSignal<string | undefined>;
3876
- /** Accessible label for the year dropdown. */
3877
- readonly yearLabel: _angular_core.InputSignal<string | undefined>;
3878
- /** Accessible label for the next-month button. */
3879
- readonly nextMonthLabel: _angular_core.InputSignal<string | undefined>;
3880
- protected readonly previousMonthText: _angular_core.Signal<string>;
3881
- protected readonly monthText: _angular_core.Signal<string>;
3882
- protected readonly yearText: _angular_core.Signal<string>;
3883
- protected readonly nextMonthText: _angular_core.Signal<string>;
3884
- private onChange;
3885
- protected onTouched: () => void;
3886
- private readonly view;
3887
- protected readonly weekdays: _angular_core.Signal<string[]>;
3888
- protected readonly monthLabel: _angular_core.Signal<string>;
3889
- protected readonly viewMonth: _angular_core.Signal<number>;
3890
- protected readonly viewYear: _angular_core.Signal<number>;
3891
- protected readonly monthOptions: _angular_core.Signal<{
3892
- value: number;
3893
- label: string;
3894
- }[]>;
3895
- protected readonly years: _angular_core.Signal<number[]>;
3896
- protected readonly monthGrids: _angular_core.Signal<MonthGrid[]>;
3897
- protected readonly computedClass: _angular_core.Signal<string>;
3898
- protected weekNum(iso: string): number;
3899
- protected changeMonth(delta: number): void;
3900
- protected setMonth(event: Event): void;
3901
- protected setYear(event: Event): void;
3902
- protected select(iso: string): void;
3903
- writeValue(value: string | null | undefined): void;
3904
- registerOnChange(callback: (value: string) => void): void;
3905
- registerOnTouched(callback: () => void): void;
3906
- setDisabledState(isDisabled: boolean): void;
3907
- protected isSelected(iso: string): boolean;
3908
- private inRangeMiddle;
3909
- protected dayClass(day: Day): string;
3910
- private weeksFor;
3911
- private isDisabled;
3912
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiCalendar, never>;
3913
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<BuiCalendar, "bui-calendar", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "range": { "alias": "range"; "required": false; "isSignal": true; }; "values": { "alias": "values"; "required": false; "isSignal": true; }; "months": { "alias": "months"; "required": false; "isSignal": true; }; "weekStart": { "alias": "weekStart"; "required": false; "isSignal": true; }; "minDate": { "alias": "minDate"; "required": false; "isSignal": true; }; "maxDate": { "alias": "maxDate"; "required": false; "isSignal": true; }; "disabledDates": { "alias": "disabledDates"; "required": false; "isSignal": true; }; "disableWeekends": { "alias": "disableWeekends"; "required": false; "isSignal": true; }; "showWeekNumbers": { "alias": "showWeekNumbers"; "required": false; "isSignal": true; }; "captionLayout": { "alias": "captionLayout"; "required": false; "isSignal": true; }; "hideOutsideDays": { "alias": "hideOutsideDays"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; "previousMonthLabel": { "alias": "previousMonthLabel"; "required": false; "isSignal": true; }; "monthSelectLabel": { "alias": "monthSelectLabel"; "required": false; "isSignal": true; }; "yearLabel": { "alias": "yearLabel"; "required": false; "isSignal": true; }; "nextMonthLabel": { "alias": "nextMonthLabel"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "range": "rangeChange"; "values": "valuesChange"; "disabled": "disabledChange"; }, never, never, true, never>;
3914
- }
3915
-
3916
- /** A date input that opens a calendar popover. */
3917
4185
  declare class BuiDatePicker implements ControlValueAccessor {
3918
4186
  /** Selected date (mode="single") as `yyyy-mm-dd`. Two-way bindable with `[(value)]`. */
3919
4187
  readonly value: _angular_core.ModelSignal<string>;
@@ -3950,11 +4218,12 @@ declare class BuiDatePicker implements ControlValueAccessor {
3950
4218
  protected readonly open: _angular_core.WritableSignal<boolean>;
3951
4219
  protected readonly hasValue: _angular_core.Signal<boolean>;
3952
4220
  protected readonly display: _angular_core.Signal<string>;
4221
+ protected readonly popupPositions: ConnectedPosition[];
3953
4222
  protected readonly computedClass: _angular_core.Signal<string>;
3954
4223
  protected onPick(iso: string): void;
3955
4224
  protected onRange(range: CalendarRange): void;
3956
4225
  private fmt;
3957
- protected onDocumentClick(event: MouseEvent): void;
4226
+ protected onOutsideClick(event: MouseEvent): void;
3958
4227
  writeValue(value: string | null | undefined): void;
3959
4228
  registerOnChange(callback: (value: string) => void): void;
3960
4229
  registerOnTouched(callback: () => void): void;
@@ -4076,7 +4345,10 @@ declare class BuiContextMenu {
4076
4345
  protected readonly x: _angular_core.WritableSignal<number>;
4077
4346
  protected readonly y: _angular_core.WritableSignal<number>;
4078
4347
  protected readonly computedClass: _angular_core.Signal<string>;
4348
+ private readonly menuEl;
4349
+ private readonly injector;
4079
4350
  protected onContext(event: MouseEvent): void;
4351
+ private clampToViewport;
4080
4352
  protected select(item: ContextMenuItem): void;
4081
4353
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiContextMenu, never>;
4082
4354
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<BuiContextMenu, "bui-context-menu", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, { "selected": "selected"; }, never, ["*"], true, never>;
@@ -4150,41 +4422,112 @@ interface ChartSeries {
4150
4422
  /** Optional explicit stroke/fill colour; falls back to the palette. */
4151
4423
  color?: string;
4152
4424
  }
4153
- /** A lightweight SVG chart (line / area / bar). Pure + SSR-safe. */
4425
+ /** A lightweight SVG chart (line / area / bar / donut). Pure + SSR-safe. */
4154
4426
  declare class BuiChart {
4155
- /** Chart render style: line, bar, or filled area. */
4156
- readonly type: _angular_core.InputSignal<"area" | "line" | "bar">;
4157
- /** Series to plot; bar charts use only the first series. */
4427
+ /** Chart render style: line, bar, filled area, a donut ring, or a half-ring gauge. */
4428
+ readonly type: _angular_core.InputSignal<"area" | "line" | "bar" | "donut" | "gauge">;
4429
+ /** Series to plot; bar/donut use only the first series. */
4158
4430
  readonly series: _angular_core.InputSignal<readonly ChartSeries[]>;
4159
4431
  /** X-axis tick labels rendered below the chart. */
4160
4432
  readonly labels: _angular_core.InputSignal<readonly string[]>;
4161
- /** Chart height in pixels (SVG viewBox height). */
4433
+ /** Chart height in pixels (SVG viewBox height / donut diameter). */
4162
4434
  readonly height: _angular_core.InputSignal<number>;
4435
+ /**
4436
+ * Override for the value the chart scales against. For a donut it defines the
4437
+ * full ring (e.g. `max=100` with data `[62]` fills 62%); otherwise the max of
4438
+ * the series data is used.
4439
+ */
4440
+ readonly max: _angular_core.InputSignal<number | null>;
4441
+ /** Donut ring thickness, in the 100×100 viewBox units. */
4442
+ readonly thickness: _angular_core.InputSignal<number>;
4443
+ /**
4444
+ * Index of the highlighted bar (bar charts). When set, the active bar renders
4445
+ * solid and the rest are tinted; when `null` every bar renders solid.
4446
+ */
4447
+ readonly activeIndex: _angular_core.InputSignal<number | null>;
4448
+ /** Value text shown above each bar (bar charts); pass one entry per data point. */
4449
+ readonly barLabels: _angular_core.InputSignal<readonly string[]>;
4450
+ /** Stack every series into one bar per data point, bottom-to-top (bar charts). */
4451
+ readonly stacked: _angular_core.InputSignal<boolean>;
4452
+ /** Render every series side-by-side within each data slot (grouped bar charts). */
4453
+ readonly grouped: _angular_core.InputSignal<boolean>;
4454
+ /** Per-bar fill colors (bar charts); index-aligned with the first series' data. Overrides the series color. */
4455
+ readonly barColors: _angular_core.InputSignal<readonly string[]>;
4456
+ /** Draw a faint full-height track behind each bar (bar charts). */
4457
+ readonly track: _angular_core.InputSignal<boolean>;
4458
+ /** Render a dot marker at each data point (line/area charts). */
4459
+ readonly dots: _angular_core.InputSignal<boolean>;
4460
+ /** Number of evenly-spaced vertical grid lines (line/area charts; 0 hides them). */
4461
+ readonly gridX: _angular_core.InputSignal<number>;
4163
4462
  /** Accessible label for the chart's `aria-label`. */
4164
4463
  readonly label: _angular_core.InputSignal<string>;
4165
4464
  readonly userClass: _angular_core.InputSignal<ClassValue>;
4166
4465
  protected readonly width = 600;
4167
- private readonly max;
4168
- protected readonly bars: _angular_core.Signal<{
4466
+ protected readonly donutC = 251.33;
4467
+ private readonly scaleMax;
4468
+ /**
4469
+ * HTML bar columns. Each column has an overall height (`pct`, scaled against the
4470
+ * max) plus one or more stacked `segments` (a single segment in the common case,
4471
+ * several when `stacked`). Inactive bars are tinted when `activeIndex` is set.
4472
+ */
4473
+ protected readonly barColumns: _angular_core.Signal<{
4474
+ id: number;
4475
+ pct: number;
4476
+ segments: {
4477
+ id: number;
4478
+ share: number;
4479
+ fill: string;
4480
+ }[];
4481
+ value: string;
4482
+ label: string;
4483
+ }[]>;
4484
+ /** Grouped bars: one slot per data point, each holding a side-by-side sub-bar per series. */
4485
+ protected readonly barGroups: _angular_core.Signal<{
4486
+ id: number;
4487
+ label: string;
4488
+ bars: {
4489
+ id: number;
4490
+ pct: number;
4491
+ fill: string;
4492
+ }[];
4493
+ }[]>;
4494
+ /** Half-ring gauge geometry: a 180° arc filled to the first value's share of `max`. */
4495
+ protected readonly gauge: _angular_core.Signal<{
4496
+ dash: string;
4497
+ gap: string;
4498
+ color: string | undefined;
4499
+ }>;
4500
+ /** Dot markers (line/area) as viewBox-relative percentages, immune to the non-uniform SVG scale. */
4501
+ protected readonly lineDots: _angular_core.Signal<{
4169
4502
  id: number;
4170
4503
  x: number;
4171
4504
  y: number;
4172
- w: number;
4173
- h: number;
4174
4505
  color: string;
4175
4506
  }[]>;
4507
+ /** Evenly-spaced vertical grid line x-positions (in viewBox units). */
4508
+ protected readonly gridLines: _angular_core.Signal<number[]>;
4176
4509
  protected readonly paths: _angular_core.Signal<{
4177
4510
  id: number;
4178
4511
  color: string;
4179
4512
  line: string;
4180
4513
  area: string;
4181
4514
  }[]>;
4515
+ /** Donut arcs: each value in the first series becomes a ring segment. */
4516
+ protected readonly donutSegments: _angular_core.Signal<{
4517
+ id: number;
4518
+ dash: string;
4519
+ offset: string;
4520
+ color: string;
4521
+ }[]>;
4182
4522
  protected readonly computedClass: _angular_core.Signal<string>;
4183
4523
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiChart, never>;
4184
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<BuiChart, "bui-chart", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "series": { "alias": "series"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
4524
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BuiChart, "bui-chart", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "series": { "alias": "series"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "thickness": { "alias": "thickness"; "required": false; "isSignal": true; }; "activeIndex": { "alias": "activeIndex"; "required": false; "isSignal": true; }; "barLabels": { "alias": "barLabels"; "required": false; "isSignal": true; }; "stacked": { "alias": "stacked"; "required": false; "isSignal": true; }; "grouped": { "alias": "grouped"; "required": false; "isSignal": true; }; "barColors": { "alias": "barColors"; "required": false; "isSignal": true; }; "track": { "alias": "track"; "required": false; "isSignal": true; }; "dots": { "alias": "dots"; "required": false; "isSignal": true; }; "gridX": { "alias": "gridX"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*", "*"], true, never>;
4185
4525
  }
4186
4526
 
4187
- /** A combined date + time picker in a popover. Value is `YYYY-MM-DDTHH:mm`. */
4527
+ /**
4528
+ * A combined date + time picker in a popover. Value is `YYYY-MM-DDTHH:mm`. The popover renders in a
4529
+ * CDK overlay, so it escapes any `overflow: hidden` ancestor (no clipping) and flips on-screen.
4530
+ */
4188
4531
  declare class BuiDatetimePicker implements ControlValueAccessor {
4189
4532
  /** Selected date-time (mode="single") as `YYYY-MM-DDTHH:mm`. Two-way bindable with `[(value)]`. */
4190
4533
  readonly value: _angular_core.ModelSignal<string>;
@@ -4216,12 +4559,13 @@ declare class BuiDatetimePicker implements ControlValueAccessor {
4216
4559
  protected readonly calRange: _angular_core.Signal<CalendarRange>;
4217
4560
  protected readonly hasValue: _angular_core.Signal<boolean>;
4218
4561
  protected readonly display: _angular_core.Signal<string>;
4562
+ protected readonly popupPositions: ConnectedPosition[];
4219
4563
  protected readonly computedClass: _angular_core.Signal<string>;
4220
4564
  protected onDate(iso: string): void;
4221
4565
  protected onRange(range: CalendarRange): void;
4222
4566
  protected onTime(time: string): void;
4223
4567
  private fmt;
4224
- protected onDocumentClick(event: MouseEvent): void;
4568
+ protected onOutsideClick(event: MouseEvent): void;
4225
4569
  writeValue(value: string | null | undefined): void;
4226
4570
  registerOnChange(callback: (value: string) => void): void;
4227
4571
  registerOnTouched(callback: () => void): void;
@@ -4261,7 +4605,8 @@ declare class BuiAutocomplete implements ControlValueAccessor {
4261
4605
  protected readonly boxClass: _angular_core.Signal<string>;
4262
4606
  private onChange;
4263
4607
  protected onTouched: () => void;
4264
- private readonly host;
4608
+ protected readonly host: ElementRef<HTMLElement>;
4609
+ protected readonly panelPositions: ConnectedPosition[];
4265
4610
  protected readonly listId: string;
4266
4611
  protected readonly open: _angular_core.WritableSignal<boolean>;
4267
4612
  protected readonly active: _angular_core.WritableSignal<number>;
@@ -4271,7 +4616,7 @@ declare class BuiAutocomplete implements ControlValueAccessor {
4271
4616
  protected onKeydown(event: KeyboardEvent): void;
4272
4617
  protected choose(option: string): void;
4273
4618
  protected removeChip(chip: string): void;
4274
- protected onDocumentClick(event: MouseEvent): void;
4619
+ protected onOutsideClick(event: MouseEvent): void;
4275
4620
  writeValue(value: AutocompleteValue | null): void;
4276
4621
  registerOnChange(callback: (value: AutocompleteValue) => void): void;
4277
4622
  registerOnTouched(callback: () => void): void;
@@ -4491,16 +4836,27 @@ interface NavMenuItem {
4491
4836
  /** A highlighted promo link shown at the top of the dropdown panel. */
4492
4837
  featured?: NavMenuLink;
4493
4838
  }
4494
- /** A horizontal navigation menu with hover/click dropdown panels. */
4495
- declare class BuiNavigationMenu {
4839
+ /**
4840
+ * A horizontal navigation menu with hover/click dropdown panels. The panels open in a CDK overlay
4841
+ * so they escape any `overflow: hidden` ancestor (e.g. a clipping header) and flip when they would
4842
+ * run off-screen. A short close delay bridges the gap between a trigger and its panel so moving the
4843
+ * cursor across it doesn't snap the menu shut.
4844
+ */
4845
+ declare class BuiNavigationMenu implements OnDestroy {
4496
4846
  /** Top-level menu entries, each optionally opening a dropdown panel. */
4497
4847
  readonly items: _angular_core.InputSignal<readonly NavMenuItem[]>;
4498
4848
  readonly userClass: _angular_core.InputSignal<ClassValue>;
4499
4849
  protected readonly active: _angular_core.WritableSignal<number>;
4850
+ protected readonly panelPositions: ConnectedPosition[];
4851
+ private closeTimer;
4500
4852
  protected readonly computedClass: _angular_core.Signal<string>;
4501
4853
  protected href(value: string | undefined): string;
4502
4854
  protected onEnter(index: number, item: NavMenuItem): void;
4503
4855
  protected toggle(index: number): void;
4856
+ protected close(): void;
4857
+ protected scheduleClose(): void;
4858
+ protected cancelClose(): void;
4859
+ ngOnDestroy(): void;
4504
4860
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiNavigationMenu, never>;
4505
4861
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<BuiNavigationMenu, "bui-navigation-menu", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
4506
4862
  }
@@ -4727,20 +5083,75 @@ declare class BuiRichTextEditor {
4727
5083
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<BuiRichTextEditor, "bui-rich-text-editor", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "formattingLabel": { "alias": "formattingLabel"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
4728
5084
  }
4729
5085
 
4730
- /** A collapsible vertical navigation sidebar. Toggle width with the `open` model. */
5086
+ /**
5087
+ * Shared state for an inset sidebar layout, owned by {@link BuiSidebarProvider} and
5088
+ * injected by the sidebar, trigger and inset. Tracks the desktop expanded/rail state,
5089
+ * the mobile off-canvas drawer, and a `matchMedia` breakpoint (SSR-safe).
5090
+ */
5091
+ declare class BuiSidebarState {
5092
+ private readonly isBrowser;
5093
+ /** Desktop: whether the sidebar is expanded (vs. an icon rail / hidden). */
5094
+ readonly open: _angular_core.WritableSignal<boolean>;
5095
+ /** Mobile: whether the off-canvas drawer is open. */
5096
+ readonly mobileOpen: _angular_core.WritableSignal<boolean>;
5097
+ /** Whether the viewport is below the `md` breakpoint. */
5098
+ readonly isMobile: _angular_core.WritableSignal<boolean>;
5099
+ constructor();
5100
+ /** Toggle the drawer on mobile, otherwise the desktop expanded state. */
5101
+ toggle(): void;
5102
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiSidebarState, never>;
5103
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<BuiSidebarState>;
5104
+ }
5105
+ /**
5106
+ * Layout wrapper for an inset sidebar shell. Provides {@link BuiSidebarState} to a
5107
+ * {@link BuiSidebar} + {@link BuiSidebarInset}, lays them out in a row, and renders the
5108
+ * mobile backdrop. Wrap a dashboard's sidebar and main content in this provider.
5109
+ */
5110
+ declare class BuiSidebarProvider {
5111
+ /** Shared sidebar state; exposed (via `exportAs="buiSidebar"`) for template access. */
5112
+ readonly state: BuiSidebarState;
5113
+ readonly userClass: _angular_core.InputSignal<ClassValue>;
5114
+ protected readonly computedClass: _angular_core.Signal<string>;
5115
+ /** Close the mobile drawer (e.g. after a nav item is chosen). */
5116
+ closeMobile(): void;
5117
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiSidebarProvider, never>;
5118
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BuiSidebarProvider, "bui-sidebar-provider", ["buiSidebar"], { "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
5119
+ }
5120
+ /**
5121
+ * A collapsible vertical navigation sidebar. Standalone it toggles via the `open` model;
5122
+ * inside a {@link BuiSidebarProvider} it reads shared state and becomes a mobile off-canvas
5123
+ * drawer + desktop icon-rail automatically.
5124
+ */
4731
5125
  declare class BuiSidebar {
4732
- /** Whether the sidebar is expanded. Two-way bindable with `[(open)]`. */
5126
+ private readonly state;
5127
+ /** Whether the sidebar is expanded. Two-way bindable with `[(open)]` (standalone use). */
4733
5128
  readonly open: _angular_core.ModelSignal<boolean>;
4734
5129
  /** Edge the sidebar is docked to, which sets its border side. */
4735
5130
  readonly side: _angular_core.InputSignal<"right" | "left">;
4736
5131
  /** Collapse behavior: hide entirely (`offcanvas`) or shrink to an icon rail (`icon`). */
4737
5132
  readonly collapsible: _angular_core.InputSignal<"icon" | "offcanvas">;
4738
5133
  readonly userClass: _angular_core.InputSignal<ClassValue>;
5134
+ /** Effective expanded state — provider-driven when present, else the local `open` model. */
5135
+ protected readonly expanded: _angular_core.Signal<boolean>;
4739
5136
  private readonly collapsedWidth;
4740
5137
  protected readonly computedClass: _angular_core.Signal<string>;
4741
5138
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiSidebar, never>;
4742
5139
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<BuiSidebar, "bui-sidebar", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "side": { "alias": "side"; "required": false; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, { "open": "openChange"; }, never, ["*"], true, never>;
4743
5140
  }
5141
+ /** The main content panel that sits beside a {@link BuiSidebar} inside a {@link BuiSidebarProvider}. */
5142
+ declare class BuiSidebarInset {
5143
+ readonly userClass: _angular_core.InputSignal<ClassValue>;
5144
+ protected readonly computedClass: _angular_core.Signal<string>;
5145
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiSidebarInset, never>;
5146
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BuiSidebarInset, "[buiSidebarInset]", never, { "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
5147
+ }
5148
+ /** A button that toggles the sidebar (desktop rail / mobile drawer) via {@link BuiSidebarState}. */
5149
+ declare class BuiSidebarTrigger {
5150
+ private readonly state;
5151
+ toggle(): void;
5152
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiSidebarTrigger, never>;
5153
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BuiSidebarTrigger, "[buiSidebarTrigger]", never, {}, {}, never, never, true, never>;
5154
+ }
4744
5155
  /** A styled, accessible item button for a {@link BuiSidebar} menu. */
4745
5156
  declare class BuiSidebarMenuButton {
4746
5157
  /** Whether this item is the current page; sets active styling and `aria-current`. */
@@ -4814,5 +5225,5 @@ declare class BuiQrCode {
4814
5225
  /** Encode `text` into a QR module matrix (true = dark). Level M, versions 1-10. */
4815
5226
  declare function encodeQr(text: string): boolean[][];
4816
5227
 
4817
- export { BUI_DEFAULT_LABELS, BUI_LABELS, BuiAccent, BuiAccordion, BuiAccordionContent, BuiAccordionItem, BuiAccordionTrigger, BuiAddToCart, BuiAlert, BuiAlertDescription, BuiAlertDialogAction, BuiAlertDialogCancel, BuiAlertDialogContent, BuiAlertDialogDescription, BuiAlertDialogFooter, BuiAlertDialogHeader, BuiAlertDialogTitle, BuiAlertTitle, BuiAnimatedBeam, BuiAspectRatio, BuiAudioPlayer, BuiAurora, BuiAutocomplete, BuiAutosizeTextarea, BuiAvatar, BuiAvatarGroup, BuiBackToTop, BuiBadge, BuiBanner, BuiBentoGrid, BuiBentoItem, BuiBorderBeam, BuiBottomNavigation, BuiBottomNavigationItem, BuiBreadcrumb, BuiBreadcrumbEllipsis, BuiBreadcrumbItem, BuiBreadcrumbLink, BuiBreadcrumbList, BuiBreadcrumbPage, BuiBreadcrumbSeparator, BuiButton, BuiButtonGroup, BuiButtonGroupText, BuiCalendar, BuiCard, BuiCardAction, BuiCardContent, BuiCardDescription, BuiCardFooter, BuiCardHeader, BuiCardTitle, BuiCarousel, BuiChart, BuiChat, BuiChatMessage, BuiCheckbox, BuiCitation, BuiCodeBlock, BuiCollapsible, BuiCollapsibleContent, BuiCollapsibleTrigger, BuiColorPicker, BuiCombobox, BuiCommand, BuiComparisonSlider, BuiComparisonTable, BuiConfetti, BuiContainer, BuiContextMenu, BuiCookieConsent, BuiCopyButton, BuiCountdown, BuiDataTable, BuiDatePicker, BuiDatetimePicker, BuiDescriptionItem, BuiDescriptionList, BuiDialogContent, BuiDialogDescription, BuiDialogFooter, BuiDialogHeader, BuiDialogTitle, BuiDiffViewer, BuiDock, BuiDockItem, BuiDotPattern, BuiDrawer, BuiDropdownMenu, BuiDropdownMenuItem, BuiDropdownMenuLabel, BuiDropdownMenuSeparator, BuiEditable, BuiEmpty, BuiEmptyContent, BuiEmptyDescription, BuiEmptyHeader, BuiEmptyMedia, BuiEmptyTitle, BuiField, BuiFieldContent, BuiFieldDescription, BuiFieldError, BuiFieldGroup, BuiFieldLabel, BuiFieldLegend, BuiFieldSeparator, BuiFieldSet, BuiFieldTitle, BuiFileUpload, BuiFlipCard, BuiGallery, BuiGantt, BuiGradientText, BuiGridPattern, BuiHeatmap, BuiHoverCard, BuiHoverCardContent, BuiImage, BuiInfiniteScroll, BuiInput, BuiInputGroup, BuiInputGroupAddon, BuiInputGroupButton, BuiInputGroupInput, BuiInputGroupText, BuiInputMask, BuiInputOtp, BuiItem, BuiItemActions, BuiItemContent, BuiItemDescription, BuiItemGroup, BuiItemMedia, BuiItemTitle, BuiJsonViewer, BuiJsonViewerNode, BuiKanban, BuiKbd, BuiKbdGroup, BuiKnob, BuiLabel, BuiLink, BuiLoadingOverlay, BuiMap, BuiMarkdownEditor, BuiMarquee, BuiMasonry, BuiMentionInput, BuiMenubar, BuiMenubarTrigger, BuiMeteors, BuiMeter, BuiMiniCart, BuiNavigationMenu, BuiNotificationCenter, BuiNumberInput, BuiNumberTicker, BuiOnboardingTour, BuiOrgChart, BuiOrgChartNode, BuiPageHeader, BuiPagination, BuiPaginationContent, BuiPaginationEllipsis, BuiPaginationItem, BuiPaginationLink, BuiParallax, BuiPasswordStrength, BuiPhoneInput, BuiPopover, BuiPopoverContent, BuiPresence, BuiPrice, BuiProductCard, BuiProgress, BuiPromptInput, BuiQrCode, BuiQuantitySelector, BuiQuote, BuiRadioGroup, BuiRadioGroupItem, BuiRating, BuiReasoning, BuiRepeater, BuiResizableHandle, BuiResizablePanel, BuiResizablePanelGroup, BuiRichTextEditor, BuiScheduler, BuiScrollArea, BuiScrollspy, BuiSegmentedControl, BuiSelect, BuiSeparator, BuiSheet, BuiSidebar, BuiSidebarMenuButton, BuiSignaturePad, BuiSkeleton, BuiSlider, BuiSonner, BuiSparkline, BuiSpeedDial, BuiSpinner, BuiSpotlightCard, BuiStack, BuiStat, BuiStepper, BuiStepperItem, BuiStreamingText, BuiSwitch, BuiTabList, BuiTabPanel, BuiTabTrigger, BuiTable, BuiTableBody, BuiTableCaption, BuiTableCell, BuiTableContainer, BuiTableFooter, BuiTableHead, BuiTableHeader, BuiTableRow, BuiTabs, BuiTagsInput, BuiTerminal, BuiTextReveal, BuiTextarea, BuiThemeCustomizer, BuiTiltCard, BuiTimeField, BuiTimeline, BuiTimelineItem, BuiToaster, BuiToggle, BuiToggleGroup, BuiToggleGroupItem, BuiToolCall, BuiTooltip, BuiTooltipContent, BuiTopProgress, BuiTree, BuiTreeNode, BuiTreeTable, BuiTypewriter, BuiTypography, BuiVariantSelector, BuiVideo, BuiVisuallyHidden, THEME_TOKENS, ThemeStore, buiLabel, buttonVariants, cn, encodeQr, provideBuiLabels, toggleVariants };
4818
- export type { AddToCartSize, AlertTone, AlertVariant, AutocompleteSize, BadgeIntensity, BadgeSize, BadgeTone, BadgeVariant, BuiLabels, ButtonSize, ButtonVariant, CalendarMode, CalendarRange, CardVariant, CarouselOrientation, CartItem, ChartSeries, ComboboxOption, CommandGroup, CommandItem, ComparisonRow, ConfettiDirection, ContextMenuItem, DataTableColumn, GalleryImage, GanttMilestone, GanttTask, GroupAvatar, InputSize, KanbanCard, KanbanColumn, Mention, NavMenuItem, NavMenuLink, NotificationItem, NumberInputSize, OrgNode, PhoneCountry, PopoverSide, RepeaterField, SchedulerEvent, ScrollspyItem, SegmentOption, SelectOption, SeparatorOrientation, SpeedDialAction, SwitchSize, TextareaSize, ThemeMode, TimeFieldMode, ToastOptions, ToastTone, TooltipSide, TourStep, TreeItem, TreeTableColumn, TreeTableRow, VariantOption };
5228
+ export { BUI_DEFAULT_LABELS, BUI_LABELS, BuiAccent, BuiAccordion, BuiAccordionContent, BuiAccordionItem, BuiAccordionTrigger, BuiAddToCart, BuiAlert, BuiAlertDescription, BuiAlertDialogAction, BuiAlertDialogCancel, BuiAlertDialogContent, BuiAlertDialogDescription, BuiAlertDialogFooter, BuiAlertDialogHeader, BuiAlertDialogTitle, BuiAlertTitle, BuiAnimatedBeam, BuiAspectRatio, BuiAudioPlayer, BuiAurora, BuiAutocomplete, BuiAutosizeTextarea, BuiAvatar, BuiAvatarGroup, BuiBackToTop, BuiBadge, BuiBanner, BuiBentoGrid, BuiBentoItem, BuiBorderBeam, BuiBottomNavigation, BuiBottomNavigationItem, BuiBreadcrumb, BuiBreadcrumbEllipsis, BuiBreadcrumbItem, BuiBreadcrumbLink, BuiBreadcrumbList, BuiBreadcrumbPage, BuiBreadcrumbSeparator, BuiButton, BuiButtonGroup, BuiButtonGroupText, BuiCalendar, BuiCard, BuiCardAction, BuiCardContent, BuiCardDescription, BuiCardFooter, BuiCardHeader, BuiCardTitle, BuiCarousel, BuiChart, BuiChat, BuiChatMessage, BuiCheckbox, BuiCitation, BuiCodeBlock, BuiCollapsible, BuiCollapsibleContent, BuiCollapsibleTrigger, BuiColorPicker, BuiCombobox, BuiCommand, BuiComparisonSlider, BuiComparisonTable, BuiConfetti, BuiContainer, BuiContextMenu, BuiCookieConsent, BuiCopyButton, BuiCountdown, BuiDataTable, BuiDatePicker, BuiDateRangePicker, BuiDatetimePicker, BuiDescriptionItem, BuiDescriptionList, BuiDialogContent, BuiDialogDescription, BuiDialogFooter, BuiDialogHeader, BuiDialogTitle, BuiDiffViewer, BuiDock, BuiDockItem, BuiDotPattern, BuiDrawer, BuiDropdownMenu, BuiDropdownMenuItem, BuiDropdownMenuLabel, BuiDropdownMenuSeparator, BuiEditable, BuiEmpty, BuiEmptyContent, BuiEmptyDescription, BuiEmptyHeader, BuiEmptyMedia, BuiEmptyTitle, BuiField, BuiFieldContent, BuiFieldDescription, BuiFieldError, BuiFieldGroup, BuiFieldLabel, BuiFieldLegend, BuiFieldSeparator, BuiFieldSet, BuiFieldTitle, BuiFileUpload, BuiFlipCard, BuiGallery, BuiGantt, BuiGradientText, BuiGridPattern, BuiHeatmap, BuiHoverCard, BuiHoverCardContent, BuiIconTile, BuiImage, BuiInfiniteScroll, BuiInput, BuiInputField, BuiInputGroup, BuiInputGroupAddon, BuiInputGroupButton, BuiInputGroupInput, BuiInputGroupText, BuiInputMask, BuiInputOtp, BuiItem, BuiItemActions, BuiItemContent, BuiItemDescription, BuiItemGroup, BuiItemMedia, BuiItemTitle, BuiJsonViewer, BuiJsonViewerNode, BuiKanban, BuiKbd, BuiKbdGroup, BuiKnob, BuiLabel, BuiLink, BuiLoadingOverlay, BuiMap, BuiMarkdownEditor, BuiMarquee, BuiMasonry, BuiMentionInput, BuiMenubar, BuiMenubarTrigger, BuiMeteors, BuiMeter, BuiMiniCart, BuiMoneyInput, BuiNavigationMenu, BuiNotificationCenter, BuiNumberInput, BuiNumberTicker, BuiOnboardingTour, BuiOrgChart, BuiOrgChartNode, BuiPageHeader, BuiPagination, BuiPaginationContent, BuiPaginationEllipsis, BuiPaginationItem, BuiPaginationLink, BuiParallax, BuiPasswordStrength, BuiPhoneInput, BuiPopover, BuiPopoverContent, BuiPresence, BuiPrice, BuiProductCard, BuiProgress, BuiPromptInput, BuiQrCode, BuiQuantitySelector, BuiQuote, BuiRadioGroup, BuiRadioGroupItem, BuiRating, BuiReasoning, BuiRepeater, BuiResizableHandle, BuiResizablePanel, BuiResizablePanelGroup, BuiRichTextEditor, BuiScheduler, BuiScrollArea, BuiScrollspy, BuiSegmentedControl, BuiSelect, BuiSeparator, BuiSheet, BuiSidebar, BuiSidebarInset, BuiSidebarMenuButton, BuiSidebarProvider, BuiSidebarState, BuiSidebarTrigger, BuiSignaturePad, BuiSkeleton, BuiSlider, BuiSonner, BuiSparkline, BuiSpeedDial, BuiSpinner, BuiSpotlightCard, BuiStack, BuiStat, BuiStepper, BuiStepperItem, BuiStreamingText, BuiSwitch, BuiTabList, BuiTabPanel, BuiTabTrigger, BuiTable, BuiTableBody, BuiTableCaption, BuiTableCell, BuiTableContainer, BuiTableFooter, BuiTableHead, BuiTableHeader, BuiTableRow, BuiTabs, BuiTagsInput, BuiTerminal, BuiTextReveal, BuiTextarea, BuiThemeCustomizer, BuiTiltCard, BuiTimeField, BuiTimeline, BuiTimelineItem, BuiToaster, BuiToggle, BuiToggleGroup, BuiToggleGroupItem, BuiToolCall, BuiTooltip, BuiTooltipContent, BuiTopProgress, BuiTree, BuiTreeNode, BuiTreeTable, BuiTypewriter, BuiTypography, BuiVariantSelector, BuiVideo, BuiVisuallyHidden, THEME_TOKENS, ThemeStore, buiLabel, buttonVariants, cn, encodeQr, provideBuiLabels, toggleVariants };
5229
+ export type { AddToCartSize, AlertTone, AlertVariant, AutocompleteSize, BadgeIntensity, BadgeSize, BadgeTone, BadgeVariant, BuiLabels, ButtonSize, ButtonVariant, CalendarMode, CalendarRange, CardVariant, CarouselOrientation, CartItem, ChartSeries, CheckboxTone, ComboboxOption, CommandGroup, CommandItem, ComparisonRow, ConfettiDirection, ContextMenuItem, CurrencyDisplay, DataTableColumn, DateRangePreset, DialogSize, GalleryImage, GanttMilestone, GanttTask, GroupAvatar, IconTileShape, IconTileSize, IconTileTone, InputSize, KanbanCard, KanbanColumn, Mention, NavMenuItem, NavMenuLink, NotificationItem, NumberInputSize, OrgNode, PhoneCountry, PopoverSide, RepeaterField, SchedulerEvent, ScrollspyItem, SegmentOption, SelectOption, SeparatorOrientation, SpeedDialAction, SwitchSize, TextareaSize, ThemeMode, TimeFieldMode, ToastOptions, ToastTone, TooltipSide, TourStep, TreeItem, TreeTableColumn, TreeTableRow, VariantOption };