ng-blatui 1.0.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.
@@ -0,0 +1,485 @@
1
+ import { ClassValue } from 'clsx';
2
+ export { ClassValue } from 'clsx';
3
+ import * as _angular_core from '@angular/core';
4
+ import * as class_variance_authority_types from 'class-variance-authority/types';
5
+ import { VariantProps } from 'class-variance-authority';
6
+ export { AccordionContent, AccordionGroup, AccordionPanel, AccordionTrigger, ɵɵDeferredContent, ɵɵDeferredContentAware } from '@angular/aria/accordion';
7
+ export { DIALOG_DATA, Dialog, DialogModule, DialogRef } from '@angular/cdk/dialog';
8
+ export { Tab, TabContent, TabList, TabPanel, Tabs } from '@angular/aria/tabs';
9
+
10
+ /**
11
+ * Merge class names with `clsx` semantics and resolve Tailwind conflicts with
12
+ * `tailwind-merge`. The single utility every ng-blatui component uses to combine
13
+ * its variant classes with consumer-provided ones.
14
+ */
15
+ declare function cn(...inputs: ClassValue[]): string;
16
+
17
+ declare const buttonVariants: (props?: ({
18
+ variant?: "default" | "destructive" | "outline" | "secondary" | "ghost" | "link" | null | undefined;
19
+ size?: "default" | "xs" | "sm" | "lg" | "icon" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined;
20
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
21
+ type ButtonVariant = NonNullable<VariantProps<typeof buttonVariants>['variant']>;
22
+ type ButtonSize = NonNullable<VariantProps<typeof buttonVariants>['size']>;
23
+ /**
24
+ * Applies BlatUI button styling to a native `<button>` or `<a>`, keeping native
25
+ * semantics, focus and keyboard behavior (accessibility for free).
26
+ */
27
+ declare class BuiButton {
28
+ readonly variant: _angular_core.InputSignal<ButtonVariant>;
29
+ readonly size: _angular_core.InputSignal<ButtonSize>;
30
+ readonly userClass: _angular_core.InputSignal<ClassValue>;
31
+ protected readonly computedClass: _angular_core.Signal<string>;
32
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiButton, never>;
33
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BuiButton, "button[buiButton], a[buiButton]", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
34
+ }
35
+
36
+ declare const SIZES: {
37
+ readonly sm: "px-1.5 py-px text-[0.625rem]";
38
+ readonly default: "px-2 py-0.5 text-xs";
39
+ readonly lg: "px-3 py-1 text-sm [&>svg]:size-3.5";
40
+ };
41
+ declare const VARIANTS: {
42
+ readonly default: "border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90";
43
+ readonly secondary: "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90";
44
+ readonly destructive: "border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60";
45
+ readonly outline: "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground";
46
+ };
47
+ declare const TONES: {
48
+ readonly success: {
49
+ readonly soft: "border-transparent bg-success/10 text-success dark:bg-success/15";
50
+ readonly solid: "border-transparent bg-success text-success-foreground";
51
+ readonly outline: "text-success border-success/40";
52
+ };
53
+ readonly warning: {
54
+ readonly soft: "border-transparent bg-warning/10 text-warning dark:bg-warning/15";
55
+ readonly solid: "border-transparent bg-warning text-warning-foreground";
56
+ readonly outline: "text-warning border-warning/40";
57
+ };
58
+ readonly danger: {
59
+ readonly soft: "border-transparent bg-destructive/10 text-destructive dark:bg-destructive/15";
60
+ readonly solid: "border-transparent bg-destructive text-destructive-foreground";
61
+ readonly outline: "text-destructive border-destructive/40";
62
+ };
63
+ readonly info: {
64
+ readonly soft: "border-transparent bg-info/10 text-info dark:bg-info/15";
65
+ readonly solid: "border-transparent bg-info text-info-foreground";
66
+ readonly outline: "text-info border-info/40";
67
+ };
68
+ readonly neutral: {
69
+ readonly soft: "border-transparent bg-muted text-muted-foreground";
70
+ readonly solid: "border-transparent bg-foreground/85 text-background";
71
+ readonly outline: "text-muted-foreground border-border";
72
+ };
73
+ };
74
+ type BadgeSize = keyof typeof SIZES;
75
+ type BadgeVariant = keyof typeof VARIANTS | 'soft' | 'solid';
76
+ type BadgeTone = keyof typeof TONES;
77
+ type BadgeIntensity = keyof (typeof TONES)['success'];
78
+ /**
79
+ * BlatUI badge. Brand variants (`default | secondary | destructive | outline`)
80
+ * or semantic `tone` (`success | warning | danger | info | neutral`) where
81
+ * `variant` then selects intensity (`soft | solid | outline`). Built on a native
82
+ * element so it stays in the document flow and screen-reader friendly.
83
+ */
84
+ declare class BuiBadge {
85
+ readonly variant: _angular_core.InputSignal<BadgeVariant>;
86
+ readonly tone: _angular_core.InputSignal<"success" | "warning" | "danger" | "info" | "neutral" | null>;
87
+ readonly size: _angular_core.InputSignal<"default" | "sm" | "lg">;
88
+ readonly userClass: _angular_core.InputSignal<ClassValue>;
89
+ protected readonly computedClass: _angular_core.Signal<string>;
90
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiBadge, never>;
91
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BuiBadge, "[buiBadge]", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
92
+ }
93
+
94
+ /**
95
+ * BlatUI label. Apply to a native `<label>` (use `for`/`id` to associate it with
96
+ * a control) so the click-to-focus and screen-reader association work natively.
97
+ */
98
+ declare class BuiLabel {
99
+ readonly userClass: _angular_core.InputSignal<ClassValue>;
100
+ protected readonly computedClass: _angular_core.Signal<string>;
101
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiLabel, never>;
102
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BuiLabel, "label[buiLabel]", never, { "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
103
+ }
104
+
105
+ type SeparatorOrientation = 'horizontal' | 'vertical';
106
+ /**
107
+ * BlatUI separator. `decorative` (default) renders `role="none"`; set
108
+ * `[decorative]="false"` for a semantic `role="separator"` with `aria-orientation`.
109
+ */
110
+ declare class BuiSeparator {
111
+ readonly orientation: _angular_core.InputSignal<SeparatorOrientation>;
112
+ readonly decorative: _angular_core.InputSignal<boolean>;
113
+ readonly userClass: _angular_core.InputSignal<ClassValue>;
114
+ protected readonly computedClass: _angular_core.Signal<string>;
115
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiSeparator, never>;
116
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BuiSeparator, "[buiSeparator]", never, { "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "decorative": { "alias": "decorative"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
117
+ }
118
+
119
+ /**
120
+ * BlatUI skeleton placeholder. Marked `aria-hidden` so assistive tech ignores the
121
+ * shimmering placeholder; announce real loading state separately (e.g. aria-busy).
122
+ */
123
+ declare class BuiSkeleton {
124
+ readonly userClass: _angular_core.InputSignal<ClassValue>;
125
+ protected readonly computedClass: _angular_core.Signal<string>;
126
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiSkeleton, never>;
127
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BuiSkeleton, "[buiSkeleton]", never, { "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
128
+ }
129
+
130
+ declare const CARD_VARIANTS: {
131
+ readonly default: "bg-card text-card-foreground rounded-xl border p-6 shadow-sm";
132
+ readonly sectioned: "bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm";
133
+ };
134
+ type CardVariant = keyof typeof CARD_VARIANTS;
135
+ /** BlatUI card container. Use `variant="sectioned"` with the header/content/footer parts. */
136
+ declare class BuiCard {
137
+ readonly variant: _angular_core.InputSignal<"default" | "sectioned">;
138
+ readonly userClass: _angular_core.InputSignal<ClassValue>;
139
+ protected readonly computedClass: _angular_core.Signal<string>;
140
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiCard, never>;
141
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BuiCard, "[buiCard]", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
142
+ }
143
+ declare class BuiCardHeader {
144
+ readonly userClass: _angular_core.InputSignal<ClassValue>;
145
+ protected readonly computedClass: _angular_core.Signal<string>;
146
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiCardHeader, never>;
147
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BuiCardHeader, "[buiCardHeader]", never, { "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
148
+ }
149
+ declare class BuiCardTitle {
150
+ readonly userClass: _angular_core.InputSignal<ClassValue>;
151
+ protected readonly computedClass: _angular_core.Signal<string>;
152
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiCardTitle, never>;
153
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BuiCardTitle, "[buiCardTitle]", never, { "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
154
+ }
155
+ declare class BuiCardDescription {
156
+ readonly userClass: _angular_core.InputSignal<ClassValue>;
157
+ protected readonly computedClass: _angular_core.Signal<string>;
158
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiCardDescription, never>;
159
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BuiCardDescription, "[buiCardDescription]", never, { "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
160
+ }
161
+ declare class BuiCardAction {
162
+ readonly userClass: _angular_core.InputSignal<ClassValue>;
163
+ protected readonly computedClass: _angular_core.Signal<string>;
164
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiCardAction, never>;
165
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BuiCardAction, "[buiCardAction]", never, { "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
166
+ }
167
+ declare class BuiCardContent {
168
+ readonly userClass: _angular_core.InputSignal<ClassValue>;
169
+ protected readonly computedClass: _angular_core.Signal<string>;
170
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiCardContent, never>;
171
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BuiCardContent, "[buiCardContent]", never, { "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
172
+ }
173
+ declare class BuiCardFooter {
174
+ readonly userClass: _angular_core.InputSignal<ClassValue>;
175
+ protected readonly computedClass: _angular_core.Signal<string>;
176
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiCardFooter, never>;
177
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BuiCardFooter, "[buiCardFooter]", never, { "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
178
+ }
179
+
180
+ declare const ALERT_VARIANTS: {
181
+ readonly default: "bg-card text-card-foreground";
182
+ readonly destructive: "text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive";
183
+ };
184
+ declare const ALERT_TONES: {
185
+ readonly success: "border-success/20 bg-success/10 text-success [&>svg]:text-success *:data-[slot=alert-description]:text-success";
186
+ readonly warning: "border-warning/20 bg-warning/10 text-warning [&>svg]:text-warning *:data-[slot=alert-description]:text-warning";
187
+ readonly danger: "border-destructive/20 bg-destructive/10 text-destructive [&>svg]:text-destructive *:data-[slot=alert-description]:text-destructive";
188
+ readonly info: "border-info/20 bg-info/10 text-info [&>svg]:text-info *:data-[slot=alert-description]:text-info";
189
+ readonly neutral: "border-border bg-muted text-foreground [&>svg]:text-foreground *:data-[slot=alert-description]:text-muted-foreground";
190
+ };
191
+ type AlertVariant = keyof typeof ALERT_VARIANTS;
192
+ type AlertTone = keyof typeof ALERT_TONES;
193
+ /**
194
+ * BlatUI alert. `role="alert"` for assistive tech. Brand `variant`
195
+ * (`default | destructive`) or semantic `tone` (`success | warning | danger | info | neutral`).
196
+ */
197
+ declare class BuiAlert {
198
+ readonly variant: _angular_core.InputSignal<"default" | "destructive">;
199
+ readonly tone: _angular_core.InputSignal<"success" | "warning" | "danger" | "info" | "neutral" | null>;
200
+ readonly userClass: _angular_core.InputSignal<ClassValue>;
201
+ protected readonly computedClass: _angular_core.Signal<string>;
202
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiAlert, never>;
203
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BuiAlert, "[buiAlert]", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
204
+ }
205
+ declare class BuiAlertTitle {
206
+ readonly userClass: _angular_core.InputSignal<ClassValue>;
207
+ protected readonly computedClass: _angular_core.Signal<string>;
208
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiAlertTitle, never>;
209
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BuiAlertTitle, "[buiAlertTitle]", never, { "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
210
+ }
211
+ declare class BuiAlertDescription {
212
+ readonly userClass: _angular_core.InputSignal<ClassValue>;
213
+ protected readonly computedClass: _angular_core.Signal<string>;
214
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiAlertDescription, never>;
215
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BuiAlertDescription, "[buiAlertDescription]", never, { "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
216
+ }
217
+
218
+ declare const INPUT_SIZES: {
219
+ readonly sm: "h-8 px-2.5 py-1 text-sm file:h-6 file:text-xs";
220
+ readonly default: "h-9 px-3 py-1 text-base md:text-sm file:h-7 file:text-sm";
221
+ readonly lg: "h-10 px-4 py-2 text-base file:h-8 file:text-sm";
222
+ };
223
+ type InputSize = keyof typeof INPUT_SIZES;
224
+ /** Applies BlatUI input styling to a native `<input>` (keeps native validation & a11y). */
225
+ declare class BuiInput {
226
+ readonly size: _angular_core.InputSignal<"default" | "sm" | "lg">;
227
+ readonly userClass: _angular_core.InputSignal<ClassValue>;
228
+ protected readonly computedClass: _angular_core.Signal<string>;
229
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiInput, never>;
230
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BuiInput, "input[buiInput]", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
231
+ }
232
+
233
+ declare const TEXTAREA_SIZES: {
234
+ readonly sm: "min-h-14 px-2.5 py-1.5 text-sm";
235
+ readonly default: "min-h-16 px-3 py-2 text-base md:text-sm";
236
+ readonly lg: "min-h-20 px-4 py-2.5 text-base";
237
+ };
238
+ type TextareaSize = keyof typeof TEXTAREA_SIZES;
239
+ /** Applies BlatUI textarea styling to a native `<textarea>` (auto-grows via field-sizing). */
240
+ declare class BuiTextarea {
241
+ readonly size: _angular_core.InputSignal<"default" | "sm" | "lg">;
242
+ readonly userClass: _angular_core.InputSignal<ClassValue>;
243
+ protected readonly computedClass: _angular_core.Signal<string>;
244
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiTextarea, never>;
245
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BuiTextarea, "textarea[buiTextarea]", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
246
+ }
247
+
248
+ /**
249
+ * BlatUI linear progress bar. Exposes the full `progressbar` ARIA contract
250
+ * (valuemin/max/now/text). Set `[indeterminate]="true"` for an unknown-duration bar.
251
+ */
252
+ declare class BuiProgress {
253
+ readonly value: _angular_core.InputSignal<number>;
254
+ readonly indeterminate: _angular_core.InputSignal<boolean>;
255
+ readonly ariaLabel: _angular_core.InputSignal<string>;
256
+ readonly userClass: _angular_core.InputSignal<ClassValue>;
257
+ protected readonly pct: _angular_core.Signal<number>;
258
+ protected readonly rounded: _angular_core.Signal<number>;
259
+ protected readonly valueText: _angular_core.Signal<string>;
260
+ protected readonly indicatorTransform: _angular_core.Signal<string>;
261
+ protected readonly computedClass: _angular_core.Signal<string>;
262
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiProgress, never>;
263
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BuiProgress, "bui-progress", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "indeterminate": { "alias": "indeterminate"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
264
+ }
265
+
266
+ /**
267
+ * BlatUI avatar. Renders the image when `src` is set and loads; otherwise shows
268
+ * the projected fallback (initials, icon). Falls back automatically on load error.
269
+ */
270
+ declare class BuiAvatar {
271
+ readonly src: _angular_core.InputSignal<string | null>;
272
+ readonly alt: _angular_core.InputSignal<string>;
273
+ readonly userClass: _angular_core.InputSignal<ClassValue>;
274
+ protected readonly error: _angular_core.WritableSignal<boolean>;
275
+ protected readonly computedClass: _angular_core.Signal<string>;
276
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiAvatar, never>;
277
+ 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>;
278
+ }
279
+
280
+ /**
281
+ * BlatUI checkbox. A native `<button role="checkbox">` (Space/Enter toggle for free)
282
+ * with `[(checked)]` two-way binding and tri-state `[(indeterminate)]`.
283
+ */
284
+ declare class BuiCheckbox {
285
+ readonly checked: _angular_core.ModelSignal<boolean>;
286
+ readonly indeterminate: _angular_core.ModelSignal<boolean>;
287
+ readonly disabled: _angular_core.InputSignal<boolean>;
288
+ readonly userClass: _angular_core.InputSignal<ClassValue>;
289
+ protected readonly state: _angular_core.Signal<"indeterminate" | "checked" | "unchecked">;
290
+ protected readonly ariaChecked: _angular_core.Signal<string>;
291
+ protected readonly computedClass: _angular_core.Signal<string>;
292
+ protected toggle(): void;
293
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiCheckbox, never>;
294
+ 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"; }, never, never, true, never>;
295
+ }
296
+
297
+ declare const SWITCH_TRACK: {
298
+ readonly sm: "h-4 w-7";
299
+ readonly default: "h-[1.15rem] w-8";
300
+ readonly lg: "h-6 w-10";
301
+ };
302
+ type SwitchSize = keyof typeof SWITCH_TRACK;
303
+ /**
304
+ * BlatUI switch. A native `<button role="switch">` with `[(checked)]` two-way
305
+ * binding; keyboard activation (Space/Enter) and focus come from the native button.
306
+ */
307
+ declare class BuiSwitch {
308
+ readonly checked: _angular_core.ModelSignal<boolean>;
309
+ readonly disabled: _angular_core.InputSignal<boolean>;
310
+ readonly size: _angular_core.InputSignal<"default" | "sm" | "lg">;
311
+ readonly userClass: _angular_core.InputSignal<ClassValue>;
312
+ protected readonly state: _angular_core.Signal<"checked" | "unchecked">;
313
+ protected readonly computedClass: _angular_core.Signal<string>;
314
+ protected readonly thumbClass: _angular_core.Signal<string>;
315
+ protected toggle(): void;
316
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiSwitch, never>;
317
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BuiSwitch, "button[buiSwitch]", never, { "checked": { "alias": "checked"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; }, never, never, true, never>;
318
+ }
319
+
320
+ declare class BuiAccordion {
321
+ readonly userClass: _angular_core.InputSignal<ClassValue>;
322
+ protected readonly computedClass: _angular_core.Signal<string>;
323
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiAccordion, never>;
324
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BuiAccordion, "[buiAccordion]", never, { "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
325
+ }
326
+ declare class BuiAccordionItem {
327
+ readonly userClass: _angular_core.InputSignal<ClassValue>;
328
+ protected readonly computedClass: _angular_core.Signal<string>;
329
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiAccordionItem, never>;
330
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BuiAccordionItem, "[buiAccordionItem]", never, { "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
331
+ }
332
+ declare class BuiAccordionTrigger {
333
+ readonly userClass: _angular_core.InputSignal<ClassValue>;
334
+ protected readonly computedClass: _angular_core.Signal<string>;
335
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiAccordionTrigger, never>;
336
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BuiAccordionTrigger, "button[buiAccordionTrigger]", never, { "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
337
+ }
338
+ declare class BuiAccordionContent {
339
+ readonly userClass: _angular_core.InputSignal<ClassValue>;
340
+ protected readonly computedClass: _angular_core.Signal<string>;
341
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiAccordionContent, never>;
342
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BuiAccordionContent, "[buiAccordionContent]", never, { "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
343
+ }
344
+
345
+ declare class BuiTabs {
346
+ readonly userClass: _angular_core.InputSignal<ClassValue>;
347
+ protected readonly computedClass: _angular_core.Signal<string>;
348
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiTabs, never>;
349
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BuiTabs, "[buiTabs]", never, { "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
350
+ }
351
+ declare class BuiTabList {
352
+ readonly userClass: _angular_core.InputSignal<ClassValue>;
353
+ protected readonly computedClass: _angular_core.Signal<string>;
354
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiTabList, never>;
355
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BuiTabList, "[buiTabList]", never, { "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
356
+ }
357
+ declare class BuiTabTrigger {
358
+ readonly userClass: _angular_core.InputSignal<ClassValue>;
359
+ protected readonly computedClass: _angular_core.Signal<string>;
360
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiTabTrigger, never>;
361
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BuiTabTrigger, "[buiTabTrigger]", never, { "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
362
+ }
363
+ declare class BuiTabPanel {
364
+ readonly userClass: _angular_core.InputSignal<ClassValue>;
365
+ protected readonly computedClass: _angular_core.Signal<string>;
366
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiTabPanel, never>;
367
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BuiTabPanel, "[buiTabPanel]", never, { "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
368
+ }
369
+
370
+ declare class BuiDialogContent {
371
+ readonly userClass: _angular_core.InputSignal<ClassValue>;
372
+ protected readonly computedClass: _angular_core.Signal<string>;
373
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiDialogContent, never>;
374
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BuiDialogContent, "[buiDialogContent]", never, { "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
375
+ }
376
+ declare class BuiDialogHeader {
377
+ readonly userClass: _angular_core.InputSignal<ClassValue>;
378
+ protected readonly computedClass: _angular_core.Signal<string>;
379
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiDialogHeader, never>;
380
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BuiDialogHeader, "[buiDialogHeader]", never, { "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
381
+ }
382
+ declare class BuiDialogTitle {
383
+ readonly userClass: _angular_core.InputSignal<ClassValue>;
384
+ protected readonly computedClass: _angular_core.Signal<string>;
385
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiDialogTitle, never>;
386
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BuiDialogTitle, "[buiDialogTitle]", never, { "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
387
+ }
388
+ declare class BuiDialogDescription {
389
+ readonly userClass: _angular_core.InputSignal<ClassValue>;
390
+ protected readonly computedClass: _angular_core.Signal<string>;
391
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiDialogDescription, never>;
392
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BuiDialogDescription, "[buiDialogDescription]", never, { "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
393
+ }
394
+ declare class BuiDialogFooter {
395
+ readonly userClass: _angular_core.InputSignal<ClassValue>;
396
+ protected readonly computedClass: _angular_core.Signal<string>;
397
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiDialogFooter, never>;
398
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BuiDialogFooter, "[buiDialogFooter]", never, { "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
399
+ }
400
+
401
+ type ThemeMode = 'light' | 'dark' | 'system';
402
+ /** Every token the `@theme inline` mapping references — emitted into `:root` on export. */
403
+ declare const THEME_TOKENS: readonly ["--radius", "--spacing", "--tracking-normal", "--font-sans", "--font-serif", "--font-mono", "--shadow-2xs", "--shadow-xs", "--shadow-sm", "--shadow", "--shadow-md", "--shadow-lg", "--shadow-xl", "--shadow-2xl", "--background", "--foreground", "--card", "--card-foreground", "--popover", "--popover-foreground", "--primary", "--primary-foreground", "--secondary", "--secondary-foreground", "--muted", "--muted-foreground", "--accent", "--accent-foreground", "--destructive", "--destructive-foreground", "--border", "--input", "--ring", "--chart-1", "--chart-2", "--chart-3", "--chart-4", "--chart-5", "--sidebar", "--sidebar-foreground", "--sidebar-primary", "--sidebar-primary-foreground", "--sidebar-accent", "--sidebar-accent-foreground", "--sidebar-border", "--sidebar-ring"];
404
+ /**
405
+ * Live theme engine (the brain behind `<bui-theme-customizer>`). Mirrors BlatUI:
406
+ * every dimension just toggles a `data-*` attribute / the `.dark` class on `<html>`,
407
+ * and `blatui.css` holds all the token values. `exportCss()` serialises the active
408
+ * theme to a paste-ready stylesheet. SSR-safe and persisted to localStorage.
409
+ */
410
+ declare class ThemeStore {
411
+ private readonly isBrowser;
412
+ readonly mode: _angular_core.WritableSignal<ThemeMode>;
413
+ readonly base: _angular_core.WritableSignal<string>;
414
+ readonly preset: _angular_core.WritableSignal<string>;
415
+ readonly radius: _angular_core.WritableSignal<string>;
416
+ readonly font: _angular_core.WritableSignal<string>;
417
+ readonly fontHeading: _angular_core.WritableSignal<string>;
418
+ readonly shadow: _angular_core.WritableSignal<string>;
419
+ readonly spacing: _angular_core.WritableSignal<string>;
420
+ readonly tracking: _angular_core.WritableSignal<string>;
421
+ readonly inputStyle: _angular_core.WritableSignal<string>;
422
+ private readonly systemDark;
423
+ readonly isDark: _angular_core.Signal<boolean>;
424
+ constructor();
425
+ setMode(value: ThemeMode): void;
426
+ setBase(value: string): void;
427
+ setPreset(value: string): void;
428
+ setRadius(value: string): void;
429
+ setFont(value: string): void;
430
+ setFontHeading(value: string): void;
431
+ setShadow(value: string): void;
432
+ setSpacing(value: string): void;
433
+ setTracking(value: string): void;
434
+ setInputStyle(value: string): void;
435
+ toggle(): void;
436
+ reset(): void;
437
+ /** Serialise the active theme to a complete, paste-ready stylesheet. */
438
+ exportCss(): string;
439
+ private readTokens;
440
+ private load;
441
+ private apply;
442
+ private attr;
443
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThemeStore, never>;
444
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<ThemeStore>;
445
+ }
446
+
447
+ interface Option<T extends string = string> {
448
+ readonly value: T;
449
+ readonly label: string;
450
+ }
451
+ interface Swatch {
452
+ readonly value: string;
453
+ readonly color: string;
454
+ }
455
+ interface FontOption {
456
+ readonly value: string;
457
+ readonly label: string;
458
+ readonly family: string;
459
+ }
460
+ /**
461
+ * BlatUI's "Customize" toolbar, ported to Angular. Tunes every theme dimension
462
+ * live (mode, base, accent, radius, input style, fonts, shadow, spacing, tracking)
463
+ * through {@link ThemeStore}, then exports a paste-ready stylesheet via "Copy CSS".
464
+ */
465
+ declare class BuiThemeCustomizer {
466
+ protected readonly theme: ThemeStore;
467
+ protected readonly open: _angular_core.WritableSignal<boolean>;
468
+ protected readonly copied: _angular_core.WritableSignal<boolean>;
469
+ protected readonly modes: readonly Option<ThemeMode>[];
470
+ protected readonly bases: readonly Swatch[];
471
+ protected readonly accents: readonly Swatch[];
472
+ protected readonly radii: readonly string[];
473
+ protected readonly inputStyles: readonly Option[];
474
+ protected readonly fonts: readonly FontOption[];
475
+ protected readonly shadows: readonly Option[];
476
+ protected readonly spacings: readonly Option[];
477
+ protected readonly trackings: readonly Option[];
478
+ protected readonly _hasClipboard: _angular_core.Signal<boolean>;
479
+ protected copyCss(): Promise<void>;
480
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BuiThemeCustomizer, never>;
481
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BuiThemeCustomizer, "bui-theme-customizer", never, {}, {}, never, never, true, never>;
482
+ }
483
+
484
+ export { BuiAccordion, BuiAccordionContent, BuiAccordionItem, BuiAccordionTrigger, BuiAlert, BuiAlertDescription, BuiAlertTitle, BuiAvatar, BuiBadge, BuiButton, BuiCard, BuiCardAction, BuiCardContent, BuiCardDescription, BuiCardFooter, BuiCardHeader, BuiCardTitle, BuiCheckbox, BuiDialogContent, BuiDialogDescription, BuiDialogFooter, BuiDialogHeader, BuiDialogTitle, BuiInput, BuiLabel, BuiProgress, BuiSeparator, BuiSkeleton, BuiSwitch, BuiTabList, BuiTabPanel, BuiTabTrigger, BuiTabs, BuiTextarea, BuiThemeCustomizer, THEME_TOKENS, ThemeStore, buttonVariants, cn };
485
+ export type { AlertTone, AlertVariant, BadgeIntensity, BadgeSize, BadgeTone, BadgeVariant, ButtonSize, ButtonVariant, CardVariant, InputSize, SeparatorOrientation, SwitchSize, TextareaSize, ThemeMode };