@life-cockpit/angular-ui-kit 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,3621 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { EventEmitter, ElementRef, OnInit, OnDestroy, AfterViewInit, QueryList, Signal, TemplateRef, AfterContentInit } from '@angular/core';
3
+ import { ControlValueAccessor } from '@angular/forms';
4
+ import { SafeHtml } from '@angular/platform-browser';
5
+
6
+ /**
7
+ * Do not edit directly, this file was auto-generated.
8
+ */
9
+ declare const ColorPrimary50 = "#f0f8fa";
10
+ declare const ColorPrimary100 = "#e0f1f4";
11
+ declare const ColorPrimary200 = "#c1e3e9";
12
+ declare const ColorPrimary300 = "#a3d5df";
13
+ declare const ColorPrimary400 = "#84c7d4";
14
+ declare const ColorPrimary500 = "#208497";
15
+ declare const ColorPrimary600 = "#1a6a79";
16
+ declare const ColorPrimary700 = "#144f5b";
17
+ declare const ColorPrimary800 = "#0d353d";
18
+ declare const ColorPrimary900 = "#071a1f";
19
+ declare const ColorSecondary50 = "#f5f8f9";
20
+ declare const ColorSecondary100 = "#ebf1f3";
21
+ declare const ColorSecondary200 = "#d7e3e7";
22
+ declare const ColorSecondary300 = "#c3d5db";
23
+ declare const ColorSecondary400 = "#afc7cf";
24
+ declare const ColorSecondary500 = "#7097af";
25
+ declare const ColorSecondary600 = "#5a798c";
26
+ declare const ColorSecondary700 = "#435b69";
27
+ declare const ColorSecondary800 = "#2d3c46";
28
+ declare const ColorSecondary900 = "#161e23";
29
+ declare const ColorNeutral50 = "#f9fafb";
30
+ declare const ColorNeutral100 = "#f3f4f6";
31
+ declare const ColorNeutral200 = "#e5e7eb";
32
+ declare const ColorNeutral300 = "#d1d5db";
33
+ declare const ColorNeutral400 = "#9ca3af";
34
+ declare const ColorNeutral500 = "#6b7280";
35
+ declare const ColorNeutral600 = "#4b5563";
36
+ declare const ColorNeutral700 = "#374151";
37
+ declare const ColorNeutral800 = "#1f2937";
38
+ declare const ColorNeutral900 = "#111827";
39
+ declare const ColorSuccessDefault = "#8ea475";
40
+ declare const ColorSuccessLight = "#cdd6c2";
41
+ declare const ColorSuccessDark = "#5f7150";
42
+ declare const ColorErrorDefault = "#9d0e0e";
43
+ declare const ColorErrorLight = "#f7a1a1";
44
+ declare const ColorErrorDark = "#6b0909";
45
+ declare const ColorWarningDefault = "#e1a040";
46
+ declare const ColorWarningLight = "#f1d3a7";
47
+ declare const ColorWarningDark = "#9b6b2b";
48
+ declare const ColorInfoDefault = "#3b6588";
49
+ declare const ColorInfoLight = "#b8cee0";
50
+ declare const ColorInfoDark = "#27445c";
51
+ declare const ColorAccentOrange = "#df792e";
52
+ declare const ColorAccentPurple = "#866aa0";
53
+ declare const ColorAccentRed = "#9e3846";
54
+ declare const ColorAccentRust = "#c6592e";
55
+ declare const ColorAccentViolet = "#4e3f84";
56
+ declare const Spacing0 = "0";
57
+ declare const Spacing1 = "0.25rem";
58
+ declare const Spacing2 = "0.5rem";
59
+ declare const Spacing3 = "0.75rem";
60
+ declare const Spacing4 = "1rem";
61
+ declare const Spacing5 = "1.25rem";
62
+ declare const Spacing6 = "1.5rem";
63
+ declare const Spacing7 = "1.75rem";
64
+ declare const Spacing8 = "2rem";
65
+ declare const Spacing9 = "2.25rem";
66
+ declare const Spacing10 = "2.5rem";
67
+ declare const Spacing11 = "2.75rem";
68
+ declare const Spacing12 = "3rem";
69
+ declare const Spacing14 = "3.5rem";
70
+ declare const Spacing16 = "4rem";
71
+ declare const Spacing05 = "0.125rem";
72
+ declare const Spacing15 = "0.375rem";
73
+ declare const Spacing25 = "0.625rem";
74
+ declare const Spacing35 = "0.875rem";
75
+ declare const TypographyFontFamilyBase = "-apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif";
76
+ declare const TypographyFontFamilyMono = "'SF Mono', 'Monaco', 'Inconsolata', 'Fira Mono', 'Droid Sans Mono', 'Source Code Pro', monospace";
77
+ declare const TypographyFontSizeXs = "0.75rem";
78
+ declare const TypographyFontSizeSm = "0.875rem";
79
+ declare const TypographyFontSizeBase = "1rem";
80
+ declare const TypographyFontSizeLg = "1.125rem";
81
+ declare const TypographyFontSizeXl = "1.25rem";
82
+ declare const TypographyFontSize2xl = "1.5rem";
83
+ declare const TypographyFontSize3xl = "1.875rem";
84
+ declare const TypographyFontSize4xl = "2.25rem";
85
+ declare const TypographyFontSize5xl = "3rem";
86
+ declare const TypographyFontSize6xl = "3.75rem";
87
+ declare const TypographyFontWeightNormal = "400";
88
+ declare const TypographyFontWeightMedium = "500";
89
+ declare const TypographyFontWeightSemibold = "600";
90
+ declare const TypographyFontWeightBold = "700";
91
+ declare const TypographyLineHeightTight = "1.25";
92
+ declare const TypographyLineHeightNormal = "1.5";
93
+ declare const TypographyLineHeightRelaxed = "1.75";
94
+ declare const Elevation1 = "0 1px 2px 0 rgba(0, 0, 0, 0.05)";
95
+ declare const Elevation2 = "0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)";
96
+ declare const Elevation3 = "0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)";
97
+ declare const Elevation4 = "0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)";
98
+ declare const BorderRadiusNone = "0";
99
+ declare const BorderRadiusSm = "0.25rem";
100
+ declare const BorderRadiusMd = "0.5rem";
101
+ declare const BorderRadiusLg = "0.75rem";
102
+ declare const BorderRadiusXl = "1rem";
103
+ declare const BorderRadius2xl = "1.5rem";
104
+ declare const BorderRadiusFull = "9999px";
105
+ declare const AnimationDurationFast = "150ms";
106
+ declare const AnimationEasingEaseIn = "ease-in";
107
+ declare const AnimationEasingEaseOut = "ease-out";
108
+ declare const AnimationEasingEaseInOut = "ease-in-out";
109
+ declare const SizeInteractiveXsHeight = "1.5rem";
110
+ declare const SizeInteractiveXsPadding = "0.25rem 0.5rem";
111
+ declare const SizeInteractiveXsFontSize = "0.75rem";
112
+ declare const SizeInteractiveSmHeight = "2rem";
113
+ declare const SizeInteractiveSmPadding = "0.375rem 0.75rem";
114
+ declare const SizeInteractiveSmFontSize = "0.875rem";
115
+ declare const SizeInteractiveMdHeight = "2.5rem";
116
+ declare const SizeInteractiveMdPadding = "0.5rem 1rem";
117
+ declare const SizeInteractiveMdFontSize = "1rem";
118
+ declare const SizeInteractiveLgHeight = "2.75rem";
119
+ declare const SizeInteractiveLgPadding = "0.625rem 1.25rem";
120
+ declare const SizeInteractiveLgFontSize = "1.125rem";
121
+ declare const SizeMinTouchWidth = "2.75rem";
122
+ declare const SizeMinTouchHeight = "2.75rem";
123
+
124
+ /**
125
+ * Theme Types
126
+ * Defines theme modes and configuration interfaces
127
+ */
128
+ type ThemeMode = 'light' | 'dark';
129
+ interface ThemeConfig {
130
+ mode: ThemeMode;
131
+ autoDetect?: boolean;
132
+ }
133
+ interface ThemeState {
134
+ currentMode: ThemeMode;
135
+ prefersDark: boolean;
136
+ }
137
+
138
+ /**
139
+ * Theme Service
140
+ * Currently only supports light theme (dark mode disabled)
141
+ */
142
+ declare class ThemeService {
143
+ private readonly platformId;
144
+ private readonly isBrowser;
145
+ private readonly themeState;
146
+ readonly currentTheme: _angular_core.Signal<ThemeState>;
147
+ readonly isDark: _angular_core.WritableSignal<boolean>;
148
+ constructor();
149
+ /**
150
+ * Set the theme mode (currently only light is supported)
151
+ */
152
+ setTheme(mode: ThemeMode): void;
153
+ /**
154
+ * Toggle theme (disabled - always light)
155
+ */
156
+ toggleTheme(): void;
157
+ /**
158
+ * Reset to system preference (disabled - always light)
159
+ */
160
+ useSystemPreference(): void;
161
+ /**
162
+ * Apply light theme to document
163
+ */
164
+ private applyTheme;
165
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThemeService, never>;
166
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<ThemeService>;
167
+ }
168
+
169
+ /**
170
+ * NavigationItem interface for sidenav navigation
171
+ *
172
+ * Represents a navigation item with icon, label, route, and optional role requirement.
173
+ * Can also represent a section header (group) when `isSection` is true.
174
+ */
175
+ interface NavigationItem {
176
+ /**
177
+ * Unique identifier for the navigation item
178
+ */
179
+ id: string;
180
+ /**
181
+ * Icon name from lc-icons library (e.g., 'home', 'paint-brush')
182
+ */
183
+ icon: string;
184
+ /**
185
+ * Display label for the navigation item
186
+ */
187
+ label: string;
188
+ /**
189
+ * Angular route path (e.g., '/', '/trading')
190
+ */
191
+ route: string;
192
+ /**
193
+ * Optional required Cognito role (e.g., 'LC.Trader')
194
+ * If specified, item only visible to users with this role
195
+ */
196
+ requiredRole?: string;
197
+ /**
198
+ * Display order in sidebar (1 = first)
199
+ */
200
+ displayOrder: number;
201
+ /**
202
+ * Optional nested navigation items for multi-level navigation
203
+ */
204
+ children?: NavigationItem[];
205
+ /**
206
+ * When true, this item acts as a non-clickable section header/headline.
207
+ * Children are displayed beneath it with the label as a group title.
208
+ */
209
+ isSection?: boolean;
210
+ }
211
+
212
+ /**
213
+ * Accordion component for collapsible content sections.
214
+ *
215
+ * @example
216
+ * ```html
217
+ * <lc-accordion title="Section Title" [(expanded)]="isOpen">
218
+ * <p>Collapsible content here</p>
219
+ * </lc-accordion>
220
+ * ```
221
+ */
222
+ declare class AccordionComponent {
223
+ /** Title displayed in the accordion header */
224
+ readonly title: _angular_core.InputSignal<string>;
225
+ /** Whether the accordion is expanded (two-way binding) */
226
+ readonly expanded: _angular_core.ModelSignal<boolean>;
227
+ /** Visual variant */
228
+ readonly variant: _angular_core.InputSignal<"outlined" | "flat">;
229
+ /** Size of the header */
230
+ readonly size: _angular_core.InputSignal<"sm" | "md" | "lg">;
231
+ /** Whether the accordion is disabled */
232
+ readonly disabled: _angular_core.InputSignal<boolean>;
233
+ /** Computed CSS classes */
234
+ protected accordionClasses: _angular_core.Signal<string>;
235
+ /** Toggle expanded state */
236
+ protected toggle(): void;
237
+ /** Handle keyboard events for accessibility */
238
+ protected onKeydown(event: KeyboardEvent): void;
239
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AccordionComponent, never>;
240
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AccordionComponent, "lc-accordion", never, { "title": { "alias": "title"; "required": true; "isSignal": true; }; "expanded": { "alias": "expanded"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "expanded": "expandedChange"; }, never, ["*"], true, never>;
241
+ }
242
+
243
+ type ButtonVariant = 'primary' | 'secondary' | 'outline' | 'ghost' | 'link' | 'danger' | 'warning' | 'info';
244
+ type ButtonSize = 'xs' | 'sm' | 'md' | 'lg';
245
+ type ButtonType = 'button' | 'submit' | 'reset';
246
+ declare class ButtonComponent {
247
+ variant: ButtonVariant;
248
+ size: ButtonSize;
249
+ disabled: boolean;
250
+ loading: boolean;
251
+ isLoading: boolean;
252
+ iconOnly: boolean;
253
+ fullWidth: boolean;
254
+ ariaLabel: string;
255
+ type: ButtonType;
256
+ readonly clicked: EventEmitter<void>;
257
+ readonly focused: EventEmitter<void>;
258
+ readonly blurred: EventEmitter<void>;
259
+ buttonElement: ElementRef<HTMLButtonElement>;
260
+ get isDisabled(): boolean;
261
+ handleClick(): void;
262
+ handleFocus(): void;
263
+ handleBlur(): void;
264
+ focus(): void;
265
+ blur(): void;
266
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ButtonComponent, never>;
267
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ButtonComponent, "lc-button", never, { "variant": { "alias": "variant"; "required": false; }; "size": { "alias": "size"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "isLoading": { "alias": "isLoading"; "required": false; }; "iconOnly": { "alias": "iconOnly"; "required": false; }; "fullWidth": { "alias": "fullWidth"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "type": { "alias": "type"; "required": false; }; }, { "clicked": "clicked"; "focused": "focused"; "blurred": "blurred"; }, never, ["[slot='icon-before']", "*", "[slot='icon-after']"], true, never>;
268
+ }
269
+
270
+ /**
271
+ * Card component for content grouping and hierarchy.
272
+ *
273
+ * @example
274
+ * ```html
275
+ * <lc-card title="Card Title" variant="elevated" padding="md">
276
+ * <p>Card body content</p>
277
+ * </lc-card>
278
+ * ```
279
+ */
280
+ declare class CardComponent {
281
+ /**
282
+ * Optional title rendered as a styled header.
283
+ * For complex headers (e.g. title + action button), use content projection instead.
284
+ */
285
+ title: _angular_core.InputSignal<string | undefined>;
286
+ /**
287
+ * Optional subtitle rendered below the title.
288
+ */
289
+ subtitle: _angular_core.InputSignal<string | undefined>;
290
+ /**
291
+ * Visual variant of the card
292
+ * - elevated: Box shadow (default)
293
+ * - outlined: Border only
294
+ * - flat: No shadow or border
295
+ * @default 'elevated'
296
+ */
297
+ variant: _angular_core.InputSignal<"outlined" | "flat" | "elevated">;
298
+ /**
299
+ * Padding inside the card
300
+ * @default 'md'
301
+ */
302
+ padding: _angular_core.InputSignal<"xs" | "sm" | "md" | "lg" | "none">;
303
+ /**
304
+ * Whether the card is clickable (hover effects, cursor pointer)
305
+ * @default false
306
+ */
307
+ clickable: _angular_core.InputSignal<boolean>;
308
+ /**
309
+ * Whether the card is selected (if clickable)
310
+ * @default false
311
+ */
312
+ selected: _angular_core.InputSignal<boolean>;
313
+ /**
314
+ * Border radius size
315
+ * @default 'md'
316
+ */
317
+ borderRadius: _angular_core.InputSignal<"sm" | "md" | "lg" | "none" | "full">;
318
+ /**
319
+ * ARIA label for accessibility
320
+ */
321
+ ariaLabel: _angular_core.InputSignal<string | undefined>;
322
+ /**
323
+ * Emitted when card is clicked (if clickable)
324
+ */
325
+ readonly cardClick: _angular_core.OutputEmitterRef<MouseEvent>;
326
+ /**
327
+ * Compute card CSS classes based on inputs
328
+ */
329
+ protected cardClasses: _angular_core.Signal<string>;
330
+ /**
331
+ * Compute ARIA role based on clickable state
332
+ */
333
+ protected role: _angular_core.Signal<"button" | "article">;
334
+ /**
335
+ * Handle card click events
336
+ */
337
+ protected handleClick(event: MouseEvent): void;
338
+ /**
339
+ * Handle keyboard events for accessibility
340
+ */
341
+ protected handleKeydown(event: KeyboardEvent): void;
342
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CardComponent, never>;
343
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CardComponent, "lc-card", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "padding": { "alias": "padding"; "required": false; "isSignal": true; }; "clickable": { "alias": "clickable"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "borderRadius": { "alias": "borderRadius"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "cardClick": "cardClick"; }, never, ["[card-header]", "*", "[card-footer]"], true, never>;
344
+ }
345
+
346
+ type CheckboxSize = 'xs' | 'sm' | 'md' | 'lg';
347
+ declare class CheckboxComponent implements ControlValueAccessor {
348
+ readonly id: _angular_core.InputSignal<string>;
349
+ readonly label: _angular_core.InputSignal<string>;
350
+ readonly error: _angular_core.InputSignal<boolean>;
351
+ readonly errorMessage: _angular_core.InputSignal<string>;
352
+ readonly helpText: _angular_core.InputSignal<string>;
353
+ readonly size: _angular_core.InputSignal<CheckboxSize>;
354
+ readonly required: _angular_core.InputSignal<boolean>;
355
+ readonly ariaLabel: _angular_core.InputSignal<string>;
356
+ readonly ariaLabelledBy: _angular_core.InputSignal<string>;
357
+ readonly ariaDescribedBy: _angular_core.InputSignal<string>;
358
+ readonly checkedChange: _angular_core.OutputEmitterRef<boolean>;
359
+ readonly checked: _angular_core.WritableSignal<boolean>;
360
+ readonly disabled: _angular_core.WritableSignal<boolean>;
361
+ readonly indeterminate: _angular_core.WritableSignal<boolean>;
362
+ readonly computedChecked: _angular_core.Signal<boolean>;
363
+ readonly computedDisabled: _angular_core.Signal<boolean>;
364
+ readonly computedIndeterminate: _angular_core.Signal<boolean>;
365
+ readonly labelClasses: _angular_core.Signal<string>;
366
+ writeValue(value: boolean | null): void;
367
+ registerOnChange(fn: (value: boolean) => void): void;
368
+ registerOnTouched(fn: () => void): void;
369
+ setDisabledState(isDisabled: boolean): void;
370
+ handleChange(event: Event): void;
371
+ handleBlur(): void;
372
+ private onChange;
373
+ private onTouched;
374
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CheckboxComponent, never>;
375
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CheckboxComponent, "lc-checkbox", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "helpText": { "alias": "helpText"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "ariaLabelledBy": { "alias": "ariaLabelledBy"; "required": false; "isSignal": true; }; "ariaDescribedBy": { "alias": "ariaDescribedBy"; "required": false; "isSignal": true; }; }, { "checkedChange": "checkedChange"; }, never, never, true, never>;
376
+ }
377
+
378
+ type IconVariant = 'outline' | 'solid';
379
+ type IconSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
380
+ /**
381
+ * Icon component - Heroicons wrapper for displaying SVG icons
382
+ *
383
+ * Features:
384
+ * - Signal-based reactive API
385
+ * - Support for outline and solid variants
386
+ * - Multiple size options (xs, sm, md, lg, xl)
387
+ * - Custom color support (CSS colors, variables, Tailwind classes)
388
+ * - Accessibility attributes (ARIA labels, decorative icons)
389
+ * - Dynamic SVG loading from Heroicons
390
+ *
391
+ * @example
392
+ * ```html
393
+ * <!-- Basic usage -->
394
+ * <lc-icon name="user" />
395
+ *
396
+ * <!-- With variant and size -->
397
+ * <lc-icon name="check" variant="solid" size="lg" />
398
+ *
399
+ * <!-- With custom color -->
400
+ * <lc-icon name="arrow-right" color="#FF5733" />
401
+ *
402
+ * <!-- With Tailwind color -->
403
+ * <lc-icon name="star" color="text-primary-500" />
404
+ *
405
+ * <!-- With accessibility label -->
406
+ * <lc-icon name="user" ariaLabel="User profile" />
407
+ *
408
+ * <!-- Decorative icon (hidden from screen readers) -->
409
+ * <lc-icon name="sparkles" [decorative]="true" />
410
+ * ```
411
+ */
412
+ declare class IconComponent {
413
+ private readonly sanitizer;
414
+ private readonly http;
415
+ /**
416
+ * Icon name from Heroicons library
417
+ * @example "user", "check", "arrow-right"
418
+ */
419
+ readonly name: _angular_core.InputSignal<string>;
420
+ /**
421
+ * Icon variant (outline or solid)
422
+ * @default "outline"
423
+ */
424
+ readonly variant: _angular_core.InputSignal<IconVariant>;
425
+ /**
426
+ * Icon size
427
+ * - xs: 16px
428
+ * - sm: 20px
429
+ * - md: 24px (default)
430
+ * - lg: 32px
431
+ * - xl: 40px
432
+ * @default "md"
433
+ */
434
+ readonly size: _angular_core.InputSignal<IconSize>;
435
+ /**
436
+ * Icon color
437
+ * Can be:
438
+ * - CSS color: "#FF5733", "rgb(255, 87, 51)"
439
+ * - CSS variable: "var(--color-primary-500)"
440
+ * - Tailwind class: "text-primary-500"
441
+ * - "currentColor" (default - inherits from parent)
442
+ * @default "currentColor"
443
+ */
444
+ readonly color: _angular_core.InputSignal<string>;
445
+ /**
446
+ * Accessible label for screen readers
447
+ * Required if icon has semantic meaning
448
+ */
449
+ readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
450
+ /**
451
+ * Whether icon is purely decorative (hidden from screen readers)
452
+ * @default false
453
+ */
454
+ readonly decorative: _angular_core.InputSignal<boolean>;
455
+ /**
456
+ * SVG content loaded from Heroicons
457
+ * @internal
458
+ */
459
+ readonly svgContent: _angular_core.WritableSignal<SafeHtml>;
460
+ /**
461
+ * Alias map for non-Heroicon names (e.g. Material Design names)
462
+ * Maps alternative names to their Heroicon equivalents
463
+ * @internal
464
+ */
465
+ private readonly iconAliasMap;
466
+ /**
467
+ * Inline SVG map for common icons (fallback when HTTP loading not available)
468
+ * @internal
469
+ */
470
+ private readonly inlineSvgMap;
471
+ /**
472
+ * Computed path to SVG file
473
+ * @internal
474
+ */
475
+ readonly iconPath: _angular_core.Signal<string>;
476
+ /**
477
+ * Computed size in pixels
478
+ * @internal
479
+ */
480
+ readonly sizeInPixels: _angular_core.Signal<string>;
481
+ /**
482
+ * Computed CSS classes
483
+ * @internal
484
+ */
485
+ readonly computedClasses: _angular_core.Signal<string>;
486
+ /**
487
+ * Computed inline color style
488
+ * @internal
489
+ */
490
+ readonly colorStyle: _angular_core.Signal<string>;
491
+ constructor();
492
+ /**
493
+ * Process SVG string to add size, color, and accessibility attributes
494
+ * @private
495
+ */
496
+ private processSvgString;
497
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<IconComponent, never>;
498
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<IconComponent, "lc-icon", never, { "name": { "alias": "name"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "decorative": { "alias": "decorative"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
499
+ }
500
+
501
+ /**
502
+ * Logo Component
503
+ *
504
+ * Displays the Life-Cockpit logo or emblem.
505
+ *
506
+ * Usage:
507
+ * ```html
508
+ * <lc-logo variant="full" size="md"></lc-logo>
509
+ * <lc-logo variant="emblem" size="sm"></lc-logo>
510
+ * ```
511
+ */
512
+ declare class LogoComponent {
513
+ /**
514
+ * Logo variant to display
515
+ * - 'full': Full logo with text
516
+ * - 'emblem': Just the emblem/icon
517
+ */
518
+ variant: 'full' | 'emblem';
519
+ /**
520
+ * Size of the logo
521
+ * - 'xs': 24px height
522
+ * - 'sm': 32px height
523
+ * - 'md': 48px height (default)
524
+ * - 'lg': 64px height
525
+ * - 'xl': 96px height
526
+ */
527
+ size: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
528
+ /**
529
+ * Alt text for accessibility
530
+ */
531
+ alt: string;
532
+ /**
533
+ * Makes the logo appear clickable
534
+ */
535
+ clickable: boolean;
536
+ get logoSrc(): string;
537
+ get logoClasses(): string;
538
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<LogoComponent, never>;
539
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<LogoComponent, "lc-logo", never, { "variant": { "alias": "variant"; "required": false; }; "size": { "alias": "size"; "required": false; }; "alt": { "alias": "alt"; "required": false; }; "clickable": { "alias": "clickable"; "required": false; }; }, {}, never, never, true, never>;
540
+ }
541
+
542
+ interface MenuItem {
543
+ id: string;
544
+ label: string;
545
+ icon?: string;
546
+ iconSize?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
547
+ href?: string;
548
+ target?: '_blank' | '_self' | '_parent' | '_top';
549
+ variant?: 'default' | 'danger';
550
+ dividerAfter?: boolean;
551
+ disabled?: boolean;
552
+ metadata?: {
553
+ subtitle?: string;
554
+ badge?: string;
555
+ };
556
+ }
557
+ /**
558
+ * Menu Component - Dropdown menu for navigation and actions
559
+ *
560
+ * Features:
561
+ * - Customizable menu items with icons
562
+ * - Support for links and buttons
563
+ * - Dividers between menu sections
564
+ * - Optional subtitle/metadata for items
565
+ * - Danger variant for destructive actions
566
+ * - Click outside to close
567
+ * - Keyboard navigation (Escape to close)
568
+ * - OnPush change detection for performance
569
+ *
570
+ * @example
571
+ * ```html
572
+ * <lc-menu
573
+ * [items]="menuItems"
574
+ * [isOpen]="isMenuOpen"
575
+ * (itemClick)="handleMenuClick($event)"
576
+ * (closed)="isMenuOpen = false"
577
+ * >
578
+ * <button trigger>Open Menu</button>
579
+ * <div header>User Profile</div>
580
+ * </lc-menu>
581
+ * ```
582
+ */
583
+ declare class MenuComponent {
584
+ /**
585
+ * Menu items to display
586
+ */
587
+ items: MenuItem[];
588
+ /**
589
+ * Whether the menu is open
590
+ */
591
+ isOpen: boolean;
592
+ /**
593
+ * Menu position relative to trigger
594
+ * @default 'bottom-right'
595
+ */
596
+ position: 'bottom-left' | 'bottom-right' | 'top-left' | 'top-right';
597
+ /**
598
+ * Minimum width of menu dropdown
599
+ * @default '220px'
600
+ */
601
+ minWidth: string;
602
+ /**
603
+ * Emitted when a menu item is clicked
604
+ */
605
+ readonly itemClick: EventEmitter<MenuItem>;
606
+ /**
607
+ * Emitted when the menu should be closed (e.g., click outside, Escape key)
608
+ */
609
+ readonly closed: EventEmitter<void>;
610
+ private elementRef;
611
+ /**
612
+ * Handle menu item click
613
+ */
614
+ onItemClick(item: MenuItem, event: Event): void;
615
+ /**
616
+ * Close the menu
617
+ */
618
+ close(): void;
619
+ /**
620
+ * Handle click outside to close menu
621
+ */
622
+ onDocumentClick(event: MouseEvent): void;
623
+ /**
624
+ * Handle Escape key to close menu
625
+ */
626
+ onEscapeKey(): void;
627
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuComponent, never>;
628
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MenuComponent, "lc-menu", never, { "items": { "alias": "items"; "required": false; }; "isOpen": { "alias": "isOpen"; "required": false; }; "position": { "alias": "position"; "required": false; }; "minWidth": { "alias": "minWidth"; "required": false; }; }, { "itemClick": "itemClick"; "closed": "closed"; }, never, ["[trigger]", "[header]", "[footer]"], true, never>;
629
+ }
630
+
631
+ /**
632
+ * Text input component for form data entry.
633
+ *
634
+ * Implements ControlValueAccessor for seamless integration with Angular forms.
635
+ * Supports validation, icons, character count, and accessibility features.
636
+ *
637
+ * @example
638
+ * ```html
639
+ * <lc-input
640
+ * label="Email"
641
+ * type="email"
642
+ * placeholder="Enter your email"
643
+ * [(ngModel)]="email"
644
+ * [error]="emailError"
645
+ * ></lc-input>
646
+ * ```
647
+ */
648
+ declare class InputComponent implements ControlValueAccessor {
649
+ /**
650
+ * Input label (displayed above input)
651
+ */
652
+ readonly label: _angular_core.InputSignal<string | undefined>;
653
+ /**
654
+ * Placeholder text
655
+ * @default ''
656
+ */
657
+ readonly placeholder: _angular_core.InputSignal<string>;
658
+ /**
659
+ * Input type
660
+ * @default 'text'
661
+ */
662
+ readonly type: _angular_core.InputSignal<"number" | "text" | "email" | "password" | "tel" | "url">;
663
+ /**
664
+ * Size of the input
665
+ * @default 'md'
666
+ */
667
+ readonly size: _angular_core.InputSignal<"xs" | "sm" | "md" | "lg">;
668
+ /**
669
+ * Whether the input is disabled
670
+ * @default false
671
+ */
672
+ readonly disabled: _angular_core.InputSignal<boolean>;
673
+ /**
674
+ * Whether the input is read-only
675
+ * @default false
676
+ */
677
+ readonly readonly: _angular_core.InputSignal<boolean>;
678
+ /**
679
+ * Whether the input is required
680
+ * @default false
681
+ */
682
+ readonly required: _angular_core.InputSignal<boolean>;
683
+ /**
684
+ * Error message to display (if validation fails)
685
+ */
686
+ readonly error: _angular_core.InputSignal<string | undefined>;
687
+ /**
688
+ * Helper text to display below input
689
+ */
690
+ readonly helperText: _angular_core.InputSignal<string | undefined>;
691
+ /**
692
+ * Icon to display before input text (Heroicons name)
693
+ * @example 'envelope'
694
+ */
695
+ readonly iconBefore: _angular_core.InputSignal<string | undefined>;
696
+ /**
697
+ * Icon to display after input text (Heroicons name)
698
+ * @example 'eye'
699
+ */
700
+ readonly iconAfter: _angular_core.InputSignal<string | undefined>;
701
+ /**
702
+ * Maximum number of characters
703
+ */
704
+ readonly maxLength: _angular_core.InputSignal<number | undefined>;
705
+ /**
706
+ * Whether to show character count
707
+ * @default false
708
+ */
709
+ readonly showCharCount: _angular_core.InputSignal<boolean>;
710
+ /**
711
+ * ARIA label for accessibility
712
+ */
713
+ readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
714
+ /**
715
+ * Emitted when input value changes
716
+ */
717
+ readonly valueChange: _angular_core.OutputEmitterRef<string>;
718
+ /**
719
+ * Emitted when input receives focus
720
+ */
721
+ readonly focused: _angular_core.OutputEmitterRef<void>;
722
+ /**
723
+ * Emitted when input loses focus
724
+ */
725
+ readonly blurred: _angular_core.OutputEmitterRef<void>;
726
+ /**
727
+ * Emitted when Enter key is pressed
728
+ */
729
+ readonly enterPressed: _angular_core.OutputEmitterRef<void>;
730
+ readonly value: _angular_core.WritableSignal<string>;
731
+ readonly inputId: string;
732
+ private readonly inputElement;
733
+ private readonly _formDisabled;
734
+ private onChange;
735
+ private onTouched;
736
+ /**
737
+ * Computed disabled state from both input and form control
738
+ */
739
+ protected get isDisabled(): boolean;
740
+ /**
741
+ * Gets current character count
742
+ */
743
+ protected get charCount(): number;
744
+ /**
745
+ * Determines if error state should be shown
746
+ */
747
+ protected get hasError(): boolean;
748
+ /**
749
+ * Programmatically focus the input
750
+ */
751
+ focus(): void;
752
+ /**
753
+ * Programmatically select input text
754
+ */
755
+ select(): void;
756
+ /**
757
+ * Clear the input value
758
+ */
759
+ clear(): void;
760
+ writeValue(value: string): void;
761
+ registerOnChange(fn: (value: string) => void): void;
762
+ registerOnTouched(fn: () => void): void;
763
+ setDisabledState(isDisabled: boolean): void;
764
+ /**
765
+ * Handles input value changes
766
+ */
767
+ protected onInput(event: Event): void;
768
+ /**
769
+ * Handles input focus
770
+ */
771
+ protected onFocus(): void;
772
+ /**
773
+ * Handles input blur
774
+ */
775
+ protected onBlur(): void;
776
+ /**
777
+ * Handles keydown events
778
+ */
779
+ protected onKeydown(event: KeyboardEvent): void;
780
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<InputComponent, never>;
781
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<InputComponent, "lc-input", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "helperText": { "alias": "helperText"; "required": false; "isSignal": true; }; "iconBefore": { "alias": "iconBefore"; "required": false; "isSignal": true; }; "iconAfter": { "alias": "iconAfter"; "required": false; "isSignal": true; }; "maxLength": { "alias": "maxLength"; "required": false; "isSignal": true; }; "showCharCount": { "alias": "showCharCount"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; "focused": "focused"; "blurred": "blurred"; "enterPressed": "enterPressed"; }, never, never, true, never>;
782
+ }
783
+
784
+ type RadioSize = 'xs' | 'sm' | 'md' | 'lg';
785
+ declare class RadioComponent implements ControlValueAccessor, OnInit, OnDestroy {
786
+ readonly id: _angular_core.InputSignal<string>;
787
+ readonly label: _angular_core.InputSignal<string>;
788
+ readonly value: _angular_core.InputSignal<string>;
789
+ readonly name: _angular_core.InputSignal<string>;
790
+ readonly error: _angular_core.InputSignal<boolean>;
791
+ readonly errorMessage: _angular_core.InputSignal<string>;
792
+ readonly helpText: _angular_core.InputSignal<string>;
793
+ readonly size: _angular_core.InputSignal<RadioSize>;
794
+ readonly required: _angular_core.InputSignal<boolean>;
795
+ readonly ariaLabel: _angular_core.InputSignal<string>;
796
+ readonly ariaLabelledBy: _angular_core.InputSignal<string>;
797
+ readonly ariaDescribedBy: _angular_core.InputSignal<string>;
798
+ readonly checkedChange: _angular_core.OutputEmitterRef<boolean>;
799
+ readonly valueChange: _angular_core.OutputEmitterRef<string>;
800
+ readonly checked: _angular_core.Signal<boolean>;
801
+ readonly disabled: _angular_core.WritableSignal<boolean>;
802
+ readonly computedChecked: _angular_core.Signal<boolean>;
803
+ readonly computedDisabled: _angular_core.Signal<boolean>;
804
+ readonly labelClasses: _angular_core.Signal<string>;
805
+ private readonly cdr;
806
+ private readonly ngControl;
807
+ private formValue;
808
+ private valueChangeSub?;
809
+ private onChange;
810
+ private onTouched;
811
+ constructor();
812
+ ngOnInit(): void;
813
+ ngOnDestroy(): void;
814
+ writeValue(value: string | null): void;
815
+ registerOnChange(fn: (value: string) => void): void;
816
+ registerOnTouched(fn: () => void): void;
817
+ setDisabledState(isDisabled: boolean): void;
818
+ handleChange(event: Event): void;
819
+ handleBlur(): void;
820
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RadioComponent, never>;
821
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<RadioComponent, "lc-radio", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "helpText": { "alias": "helpText"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "ariaLabelledBy": { "alias": "ariaLabelledBy"; "required": false; "isSignal": true; }; "ariaDescribedBy": { "alias": "ariaDescribedBy"; "required": false; "isSignal": true; }; }, { "checkedChange": "checkedChange"; "valueChange": "valueChange"; }, never, never, true, never>;
822
+ }
823
+
824
+ /**
825
+ * Typography Component
826
+ *
827
+ * A flexible text component that provides consistent typography styling across the application.
828
+ * Supports semantic HTML elements (h1-h6, p, span), text alignment, color variants,
829
+ * font weights, text transforms, and line clamping.
830
+ *
831
+ * @example
832
+ * ```html
833
+ * <lc-typography variant="h1" align="center" color="primary">
834
+ * Main Heading
835
+ * </lc-typography>
836
+ *
837
+ * <lc-typography variant="body1" gutterBottom>
838
+ * Body text with bottom margin
839
+ * </lc-typography>
840
+ *
841
+ * <lc-typography variant="caption" color="secondary" lineClamp="2">
842
+ * This is a caption that will be truncated after 2 lines...
843
+ * </lc-typography>
844
+ * ```
845
+ */
846
+ declare class TypographyComponent {
847
+ /**
848
+ * Typography variant determining the HTML element and default styles
849
+ * - h1-h6: Heading elements with corresponding sizes
850
+ * - body1: Default paragraph text (16px)
851
+ * - body2: Smaller body text (14px)
852
+ * - subtitle1: Larger subtitle (18px)
853
+ * - subtitle2: Smaller subtitle (14px)
854
+ * - caption: Small helper text (12px)
855
+ * - overline: Uppercase accent text (10px)
856
+ * @default 'body1'
857
+ */
858
+ variant: _angular_core.InputSignal<"caption" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "body1" | "body2" | "subtitle1" | "subtitle2" | "overline">;
859
+ /**
860
+ * Text alignment
861
+ * @default 'left'
862
+ */
863
+ align: _angular_core.InputSignal<"center" | "left" | "right" | "justify">;
864
+ /**
865
+ * Text color using semantic color tokens
866
+ * @default 'primary'
867
+ */
868
+ color: _angular_core.InputSignal<"error" | "primary" | "secondary" | "warning" | "info" | "disabled" | "success">;
869
+ /**
870
+ * Font weight
871
+ * @default 'regular'
872
+ */
873
+ weight: _angular_core.InputSignal<"regular" | "medium" | "semibold" | "bold">;
874
+ /**
875
+ * Text transform
876
+ * @default 'none'
877
+ */
878
+ transform: _angular_core.InputSignal<"none" | "uppercase" | "lowercase" | "capitalize">;
879
+ /**
880
+ * Prevent text wrapping (applies ellipsis on overflow)
881
+ * @default false
882
+ */
883
+ noWrap: _angular_core.InputSignal<boolean>;
884
+ /**
885
+ * Limit text to a specific number of lines (1-6)
886
+ * Uses CSS line-clamp for multi-line truncation
887
+ * @default undefined
888
+ */
889
+ lineClamp: _angular_core.InputSignal<number | undefined>;
890
+ /**
891
+ * Add bottom margin (1rem) for spacing between elements
892
+ * @default false
893
+ */
894
+ gutterBottom: _angular_core.InputSignal<boolean>;
895
+ /**
896
+ * Compute the HTML element tag based on variant
897
+ */
898
+ readonly elementTag: _angular_core.Signal<string>;
899
+ /**
900
+ * Compute all CSS classes based on inputs
901
+ */
902
+ readonly typographyClasses: _angular_core.Signal<string>;
903
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TypographyComponent, never>;
904
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TypographyComponent, "lc-typography", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "weight": { "alias": "weight"; "required": false; "isSignal": true; }; "transform": { "alias": "transform"; "required": false; "isSignal": true; }; "noWrap": { "alias": "noWrap"; "required": false; "isSignal": true; }; "lineClamp": { "alias": "lineClamp"; "required": false; "isSignal": true; }; "gutterBottom": { "alias": "gutterBottom"; "required": false; "isSignal": true; }; }, {}, never, ["*", "*", "*", "*", "*", "*", "*", "*"], true, never>;
905
+ }
906
+
907
+ type DateValue = Date | string | null;
908
+ /**
909
+ * DatePicker component for date selection with calendar.
910
+ *
911
+ * @example
912
+ * ```html
913
+ * <lc-datepicker
914
+ * variant="outline"
915
+ * size="md"
916
+ * placeholder="Select a date"
917
+ * [(ngModel)]="selectedDate"
918
+ * ></lc-datepicker>
919
+ * ```
920
+ */
921
+ declare class DatepickerComponent implements ControlValueAccessor {
922
+ datepickerInput: ElementRef;
923
+ /**
924
+ * Visual variant of the datepicker
925
+ */
926
+ variant: 'outline' | 'filled';
927
+ /**
928
+ * Size of the datepicker
929
+ */
930
+ size: 'xs' | 'sm' | 'md' | 'lg';
931
+ /**
932
+ * Whether the datepicker is disabled
933
+ */
934
+ disabled: boolean;
935
+ /**
936
+ * Whether the datepicker is in error state
937
+ */
938
+ error: boolean;
939
+ /**
940
+ * Whether the datepicker is required
941
+ */
942
+ required: boolean;
943
+ /**
944
+ * Whether the datepicker is readonly
945
+ */
946
+ readonly: boolean;
947
+ /**
948
+ * Placeholder text
949
+ */
950
+ placeholder: string;
951
+ /**
952
+ * Helper text displayed below the datepicker
953
+ */
954
+ helperText: string;
955
+ /**
956
+ * Error message displayed when error is true
957
+ */
958
+ errorMessage: string;
959
+ /**
960
+ * ARIA label for accessibility
961
+ */
962
+ ariaLabel: string | undefined;
963
+ /**
964
+ * Date format string (e.g., 'YYYY-MM-DD', 'MM/DD/YYYY')
965
+ */
966
+ format: string;
967
+ /**
968
+ * Minimum selectable date
969
+ */
970
+ minDate: Date | undefined;
971
+ /**
972
+ * Maximum selectable date
973
+ */
974
+ maxDate: Date | undefined;
975
+ /**
976
+ * Array of disabled dates
977
+ */
978
+ disabledDates: Date[];
979
+ /**
980
+ * Whether to disable weekends
981
+ */
982
+ disableWeekends: boolean;
983
+ /**
984
+ * Emitted when date selection changes
985
+ */
986
+ readonly dateChange: EventEmitter<Date | null>;
987
+ /**
988
+ * Emitted when calendar opens
989
+ */
990
+ readonly opened: EventEmitter<void>;
991
+ /**
992
+ * Emitted when calendar closes
993
+ */
994
+ readonly closed: EventEmitter<void>;
995
+ selectedDate: _angular_core.WritableSignal<Date | null>;
996
+ isOpen: _angular_core.WritableSignal<boolean>;
997
+ currentMonth: _angular_core.WritableSignal<number>;
998
+ currentYear: _angular_core.WritableSignal<number>;
999
+ inputValue: _angular_core.WritableSignal<string>;
1000
+ formattedDate: _angular_core.Signal<string>;
1001
+ weekDays: string[];
1002
+ monthNames: string[];
1003
+ currentMonthName: _angular_core.Signal<string>;
1004
+ private elementRef;
1005
+ private onChange;
1006
+ private onTouched;
1007
+ /**
1008
+ * Toggle calendar open/closed
1009
+ */
1010
+ toggle(): void;
1011
+ /**
1012
+ * Open calendar
1013
+ */
1014
+ open(): void;
1015
+ /**
1016
+ * Close calendar
1017
+ */
1018
+ close(): void;
1019
+ /**
1020
+ * Select a date
1021
+ */
1022
+ selectDate(date: Date): void;
1023
+ /**
1024
+ * Clear selected date
1025
+ */
1026
+ clear(): void;
1027
+ /**
1028
+ * Check if a date is disabled
1029
+ */
1030
+ isDateDisabled(date: Date): boolean;
1031
+ /**
1032
+ * Check if date is today
1033
+ */
1034
+ isToday(date: Date): boolean;
1035
+ /**
1036
+ * Check if date is selected
1037
+ */
1038
+ isSelectedDate(date: Date): boolean;
1039
+ /**
1040
+ * Generate calendar days for current month
1041
+ */
1042
+ generateCalendarDays(): Date[];
1043
+ /**
1044
+ * Navigate to next month
1045
+ */
1046
+ nextMonth(): void;
1047
+ /**
1048
+ * Navigate to previous month
1049
+ */
1050
+ previousMonth(): void;
1051
+ /**
1052
+ * Navigate to today
1053
+ */
1054
+ goToToday(): void;
1055
+ /**
1056
+ * Handle input change (manual date entry)
1057
+ */
1058
+ onInputChange(value: string): void;
1059
+ /**
1060
+ * Handle keyboard navigation
1061
+ */
1062
+ onKeyDown(event: KeyboardEvent): void;
1063
+ /**
1064
+ * Handle blur event
1065
+ */
1066
+ onBlur(): void;
1067
+ /**
1068
+ * Handle click outside
1069
+ */
1070
+ onClickOutside(): void;
1071
+ writeValue(value: DateValue): void;
1072
+ registerOnChange(fn: (value: Date | null) => void): void;
1073
+ registerOnTouched(fn: () => void): void;
1074
+ setDisabledState(isDisabled: boolean): void;
1075
+ /**
1076
+ * Get computed classes for the datepicker element
1077
+ */
1078
+ get datepickerClasses(): string;
1079
+ /**
1080
+ * Check if date is in current month
1081
+ */
1082
+ isCurrentMonth(date: Date): boolean;
1083
+ /**
1084
+ * Check if two dates are the same day
1085
+ */
1086
+ private isSameDate;
1087
+ private formatDate;
1088
+ private parseDate;
1089
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DatepickerComponent, never>;
1090
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DatepickerComponent, "lc-datepicker", never, { "variant": { "alias": "variant"; "required": false; }; "size": { "alias": "size"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "error": { "alias": "error"; "required": false; }; "required": { "alias": "required"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "helperText": { "alias": "helperText"; "required": false; }; "errorMessage": { "alias": "errorMessage"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "format": { "alias": "format"; "required": false; }; "minDate": { "alias": "minDate"; "required": false; }; "maxDate": { "alias": "maxDate"; "required": false; }; "disabledDates": { "alias": "disabledDates"; "required": false; }; "disableWeekends": { "alias": "disableWeekends"; "required": false; }; }, { "dateChange": "dateChange"; "opened": "opened"; "closed": "closed"; }, never, never, true, never>;
1091
+ }
1092
+
1093
+ interface SelectOption {
1094
+ value: string | number;
1095
+ label: string;
1096
+ disabled?: boolean;
1097
+ }
1098
+ interface SelectOptionGroup {
1099
+ label: string;
1100
+ options: SelectOption[];
1101
+ }
1102
+ type SelectValue = string | number | string[] | number[] | null;
1103
+ /**
1104
+ * Select component for dropdown selection with single or multiple options.
1105
+ *
1106
+ * @example
1107
+ * ```html
1108
+ * <lc-select
1109
+ * [options]="options"
1110
+ * variant="outline"
1111
+ * size="md"
1112
+ * placeholder="Select an option"
1113
+ * [(ngModel)]="selectedValue"
1114
+ * ></lc-select>
1115
+ * ```
1116
+ */
1117
+ declare class SelectComponent implements ControlValueAccessor {
1118
+ selectTrigger: ElementRef;
1119
+ /**
1120
+ * Visual variant of the select
1121
+ */
1122
+ variant: 'outline' | 'filled';
1123
+ /**
1124
+ * Size of the select
1125
+ */
1126
+ size: 'xs' | 'sm' | 'md' | 'lg';
1127
+ /**
1128
+ * Whether the select is disabled
1129
+ */
1130
+ disabled: boolean;
1131
+ /**
1132
+ * Whether the select is in error state
1133
+ */
1134
+ error: boolean;
1135
+ /**
1136
+ * Whether the select is required
1137
+ */
1138
+ required: boolean;
1139
+ /**
1140
+ * Whether the select is in loading state
1141
+ */
1142
+ loading: boolean;
1143
+ /**
1144
+ * Whether the select allows searching
1145
+ */
1146
+ searchable: boolean;
1147
+ /**
1148
+ * Whether multiple options can be selected
1149
+ */
1150
+ multiple: boolean;
1151
+ /**
1152
+ * Placeholder text when no option is selected
1153
+ */
1154
+ placeholder: string;
1155
+ /**
1156
+ * Helper text displayed below the select
1157
+ */
1158
+ helperText: string;
1159
+ /**
1160
+ * Error message displayed when error is true
1161
+ */
1162
+ errorMessage: string;
1163
+ /**
1164
+ * ARIA label for accessibility
1165
+ */
1166
+ ariaLabel: string | undefined;
1167
+ /**
1168
+ * Select options (flat list)
1169
+ */
1170
+ get options(): SelectOption[] | SelectOptionGroup[];
1171
+ set options(v: SelectOption[] | SelectOptionGroup[]);
1172
+ private _options;
1173
+ /**
1174
+ * Emitted when selection changes
1175
+ */
1176
+ readonly selectionChange: EventEmitter<SelectValue>;
1177
+ /**
1178
+ * Emitted when dropdown opens
1179
+ */
1180
+ readonly opened: EventEmitter<void>;
1181
+ /**
1182
+ * Emitted when dropdown closes
1183
+ */
1184
+ readonly closed: EventEmitter<void>;
1185
+ value: _angular_core.WritableSignal<SelectValue>;
1186
+ isOpen: _angular_core.WritableSignal<boolean>;
1187
+ searchQuery: _angular_core.WritableSignal<string>;
1188
+ highlightedIndex: _angular_core.WritableSignal<number>;
1189
+ selectedLabel: _angular_core.Signal<string>;
1190
+ displayValue: _angular_core.Signal<string>;
1191
+ filteredOptions: _angular_core.Signal<SelectOption[]>;
1192
+ private elementRef;
1193
+ private onChange;
1194
+ private onTouched;
1195
+ /**
1196
+ * Toggle dropdown open/closed
1197
+ */
1198
+ toggle(): void;
1199
+ /**
1200
+ * Open dropdown
1201
+ */
1202
+ open(): void;
1203
+ /**
1204
+ * Close dropdown
1205
+ */
1206
+ close(): void;
1207
+ /**
1208
+ * Select an option
1209
+ */
1210
+ selectOption(option: SelectOption): void;
1211
+ /**
1212
+ * Check if an option is selected
1213
+ */
1214
+ isSelected(option: SelectOption): boolean;
1215
+ /**
1216
+ * Clear selection
1217
+ */
1218
+ clear(): void;
1219
+ /**
1220
+ * Handle keyboard navigation
1221
+ */
1222
+ onKeyDown(event: KeyboardEvent): void;
1223
+ /**
1224
+ * Handle blur event
1225
+ */
1226
+ onBlur(): void;
1227
+ /**
1228
+ * Handle click outside
1229
+ */
1230
+ onClickOutside(): void;
1231
+ writeValue(value: SelectValue): void;
1232
+ registerOnChange(fn: (value: SelectValue) => void): void;
1233
+ registerOnTouched(fn: () => void): void;
1234
+ setDisabledState(isDisabled: boolean): void;
1235
+ /**
1236
+ * Get computed classes for the select element
1237
+ */
1238
+ get selectClasses(): string;
1239
+ private findOptionByValue;
1240
+ private flattenOptions;
1241
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SelectComponent, never>;
1242
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SelectComponent, "lc-select", never, { "variant": { "alias": "variant"; "required": false; }; "size": { "alias": "size"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "error": { "alias": "error"; "required": false; }; "required": { "alias": "required"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "searchable": { "alias": "searchable"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "helperText": { "alias": "helperText"; "required": false; }; "errorMessage": { "alias": "errorMessage"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "options": { "alias": "options"; "required": false; }; }, { "selectionChange": "selectionChange"; "opened": "opened"; "closed": "closed"; }, never, never, true, never>;
1243
+ }
1244
+
1245
+ /**
1246
+ * Switch component for toggle functionality.
1247
+ *
1248
+ * @example
1249
+ * ```html
1250
+ * <lc-switch
1251
+ * variant="primary"
1252
+ * size="md"
1253
+ * label="Enable notifications"
1254
+ * [(ngModel)]="isEnabled"
1255
+ * ></lc-switch>
1256
+ * ```
1257
+ */
1258
+ declare class SwitchComponent implements ControlValueAccessor {
1259
+ /**
1260
+ * Visual variant of the switch
1261
+ */
1262
+ variant: 'primary' | 'secondary' | 'success' | 'warning' | 'danger';
1263
+ /**
1264
+ * Size of the switch
1265
+ */
1266
+ size: 'sm' | 'md' | 'lg';
1267
+ /**
1268
+ * Whether the switch is checked
1269
+ */
1270
+ checked: boolean;
1271
+ /**
1272
+ * Whether the switch is disabled
1273
+ */
1274
+ disabled: boolean;
1275
+ /**
1276
+ * Whether the switch is required
1277
+ */
1278
+ required: boolean;
1279
+ /**
1280
+ * Whether the switch is in loading state
1281
+ */
1282
+ loading: boolean;
1283
+ /**
1284
+ * Label text
1285
+ */
1286
+ label: string;
1287
+ /**
1288
+ * Label position relative to switch
1289
+ */
1290
+ labelPosition: 'left' | 'right';
1291
+ /**
1292
+ * ARIA label for accessibility
1293
+ */
1294
+ ariaLabel: string | undefined;
1295
+ /**
1296
+ * Emitted when checked state changes
1297
+ */
1298
+ readonly checkedChange: EventEmitter<boolean>;
1299
+ private elementRef;
1300
+ private onChange;
1301
+ private onTouched;
1302
+ /**
1303
+ * Toggle the switch state
1304
+ */
1305
+ toggle(): void;
1306
+ /**
1307
+ * Handle click event
1308
+ */
1309
+ onClick(): void;
1310
+ /**
1311
+ * Handle keyboard navigation
1312
+ */
1313
+ onKeyDown(event: KeyboardEvent): void;
1314
+ writeValue(value: boolean | null | undefined): void;
1315
+ registerOnChange(fn: (value: boolean) => void): void;
1316
+ registerOnTouched(fn: () => void): void;
1317
+ setDisabledState(isDisabled: boolean): void;
1318
+ /**
1319
+ * Get computed classes for the switch element
1320
+ */
1321
+ get switchClasses(): string;
1322
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SwitchComponent, never>;
1323
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SwitchComponent, "lc-switch", never, { "variant": { "alias": "variant"; "required": false; }; "size": { "alias": "size"; "required": false; }; "checked": { "alias": "checked"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "required": { "alias": "required"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "label": { "alias": "label"; "required": false; }; "labelPosition": { "alias": "labelPosition"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; }, { "checkedChange": "checkedChange"; }, never, never, true, never>;
1324
+ }
1325
+
1326
+ /**
1327
+ * Textarea component for multi-line text input.
1328
+ *
1329
+ * @example
1330
+ * ```html
1331
+ * <lc-textarea
1332
+ * variant="outline"
1333
+ * size="md"
1334
+ * placeholder="Enter your message"
1335
+ * [(ngModel)]="message"
1336
+ * ></lc-textarea>
1337
+ * ```
1338
+ */
1339
+ declare class TextareaComponent implements ControlValueAccessor, AfterViewInit {
1340
+ private textareaElement;
1341
+ /**
1342
+ * Visual variant of the textarea
1343
+ */
1344
+ variant: 'outline' | 'filled';
1345
+ /**
1346
+ * Size of the textarea
1347
+ */
1348
+ size: 'xs' | 'sm' | 'md' | 'lg';
1349
+ /**
1350
+ * Whether the textarea is disabled
1351
+ */
1352
+ disabled: boolean;
1353
+ /**
1354
+ * Whether the textarea is in error state
1355
+ */
1356
+ error: boolean;
1357
+ /**
1358
+ * Whether the textarea is required
1359
+ */
1360
+ required: boolean;
1361
+ /**
1362
+ * Whether the textarea is readonly
1363
+ */
1364
+ readonly: boolean;
1365
+ /**
1366
+ * Placeholder text
1367
+ */
1368
+ placeholder: string;
1369
+ /**
1370
+ * Label text displayed above the textarea
1371
+ */
1372
+ label: string;
1373
+ /**
1374
+ * Helper text displayed below the textarea
1375
+ */
1376
+ helperText: string;
1377
+ /**
1378
+ * Error message displayed when error is true
1379
+ */
1380
+ errorMessage: string;
1381
+ /**
1382
+ * ARIA label for accessibility
1383
+ */
1384
+ ariaLabel: string | undefined;
1385
+ /**
1386
+ * Number of visible text rows
1387
+ */
1388
+ rows: number;
1389
+ /**
1390
+ * Maximum number of characters allowed
1391
+ */
1392
+ maxLength: number | undefined;
1393
+ /**
1394
+ * Whether to show character count
1395
+ */
1396
+ showCharacterCount: boolean;
1397
+ /**
1398
+ * Whether to automatically resize based on content
1399
+ */
1400
+ autoResize: boolean;
1401
+ /**
1402
+ * Minimum number of rows for auto-resize
1403
+ */
1404
+ minRows: number;
1405
+ /**
1406
+ * Maximum number of rows for auto-resize
1407
+ */
1408
+ maxRows: number | undefined;
1409
+ /**
1410
+ * Emitted when value changes
1411
+ */
1412
+ readonly valueChange: EventEmitter<string>;
1413
+ value: _angular_core.WritableSignal<string>;
1414
+ currentCharacterCount: _angular_core.Signal<number>;
1415
+ characterCountText: _angular_core.Signal<string>;
1416
+ isOverLimit: _angular_core.Signal<boolean>;
1417
+ private elementRef;
1418
+ private onChange;
1419
+ private onTouched;
1420
+ ngAfterViewInit(): void;
1421
+ /**
1422
+ * Handle input changes
1423
+ */
1424
+ onInput(value: string): void;
1425
+ /**
1426
+ * Handle blur event
1427
+ */
1428
+ onBlur(): void;
1429
+ writeValue(value: string | null | undefined): void;
1430
+ registerOnChange(fn: (value: string) => void): void;
1431
+ registerOnTouched(fn: () => void): void;
1432
+ setDisabledState(isDisabled: boolean): void;
1433
+ /**
1434
+ * Get computed classes for the textarea element
1435
+ */
1436
+ get textareaClasses(): string;
1437
+ private adjustHeight;
1438
+ private calculateMinHeight;
1439
+ private calculateMaxHeight;
1440
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TextareaComponent, never>;
1441
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TextareaComponent, "lc-textarea", never, { "variant": { "alias": "variant"; "required": false; }; "size": { "alias": "size"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "error": { "alias": "error"; "required": false; }; "required": { "alias": "required"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "label": { "alias": "label"; "required": false; }; "helperText": { "alias": "helperText"; "required": false; }; "errorMessage": { "alias": "errorMessage"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; "maxLength": { "alias": "maxLength"; "required": false; }; "showCharacterCount": { "alias": "showCharacterCount"; "required": false; }; "autoResize": { "alias": "autoResize"; "required": false; }; "minRows": { "alias": "minRows"; "required": false; }; "maxRows": { "alias": "maxRows"; "required": false; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
1442
+ }
1443
+
1444
+ /**
1445
+ * Password Input Component with Show/Hide Toggle and Strength Meter
1446
+ *
1447
+ * Per research.md Decision 7: Password Strength Indicator
1448
+ *
1449
+ * Features:
1450
+ * - Show/Hide password toggle (eye icon)
1451
+ * - Real-time password strength indicator (Weak/Fair/Good/Strong)
1452
+ * - Visual strength meter bar with color coding
1453
+ * - Validation feedback (length, uppercase, lowercase, digit, symbol)
1454
+ * - Accessible ARIA attributes
1455
+ * - Reactive Forms ControlValueAccessor implementation
1456
+ *
1457
+ * Strength Criteria:
1458
+ * - Weak (0-25%): < 8 chars OR missing 3+ requirements
1459
+ * - Fair (26-50%): 8+ chars, missing 2 requirements
1460
+ * - Good (51-75%): 8+ chars, missing 1 requirement
1461
+ * - Strong (76-100%): 8+ chars, all requirements met
1462
+ *
1463
+ * Requirements (Cognito password policy):
1464
+ * - Minimum 8 characters
1465
+ * - At least one uppercase letter (A-Z)
1466
+ * - At least one lowercase letter (a-z)
1467
+ * - At least one digit (0-9)
1468
+ * - At least one symbol (!@#$%^&*()_+-=[]{}|;:,.<>?)
1469
+ *
1470
+ * Usage:
1471
+ * ```html
1472
+ * <lc-password-input
1473
+ * [formControl]="passwordControl"
1474
+ * label="Password"
1475
+ * placeholder="Enter your password"
1476
+ * [showStrengthMeter]="true"
1477
+ * ></lc-password-input>
1478
+ * ```
1479
+ *
1480
+ * User Story: US0 (User Registration)
1481
+ */
1482
+ declare class PasswordInputComponent implements ControlValueAccessor {
1483
+ label: string;
1484
+ placeholder: string;
1485
+ showStrengthMeter: boolean;
1486
+ showRequirements: boolean;
1487
+ disabled: boolean;
1488
+ required: boolean;
1489
+ error?: string;
1490
+ readonly strengthChange: EventEmitter<PasswordStrength>;
1491
+ value: string;
1492
+ isPasswordVisible: boolean;
1493
+ strength: PasswordStrength;
1494
+ requirements: PasswordRequirement[];
1495
+ private onChange;
1496
+ private onTouched;
1497
+ private cdr;
1498
+ constructor();
1499
+ /**
1500
+ * ControlValueAccessor: Write value from form control
1501
+ */
1502
+ writeValue(value: string): void;
1503
+ /**
1504
+ * ControlValueAccessor: Register onChange callback
1505
+ */
1506
+ registerOnChange(fn: (value: string) => void): void;
1507
+ /**
1508
+ * ControlValueAccessor: Register onTouched callback
1509
+ */
1510
+ registerOnTouched(fn: () => void): void;
1511
+ /**
1512
+ * ControlValueAccessor: Set disabled state
1513
+ */
1514
+ setDisabledState(isDisabled: boolean): void;
1515
+ /**
1516
+ * Toggle password visibility
1517
+ */
1518
+ togglePasswordVisibility(): void;
1519
+ /**
1520
+ * Handle input changes
1521
+ */
1522
+ onInput(event: Event): void;
1523
+ /**
1524
+ * Handle blur event
1525
+ */
1526
+ onBlur(): void;
1527
+ /**
1528
+ * Calculate password strength and update requirements
1529
+ */
1530
+ private updateStrength;
1531
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PasswordInputComponent, never>;
1532
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PasswordInputComponent, "lc-password-input", never, { "label": { "alias": "label"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "showStrengthMeter": { "alias": "showStrengthMeter"; "required": false; }; "showRequirements": { "alias": "showRequirements"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "required": { "alias": "required"; "required": false; }; "error": { "alias": "error"; "required": false; }; }, { "strengthChange": "strengthChange"; }, never, never, true, never>;
1533
+ }
1534
+ /**
1535
+ * Password strength information
1536
+ */
1537
+ interface PasswordStrength {
1538
+ score: number;
1539
+ level: 'Weak' | 'Fair' | 'Good' | 'Strong';
1540
+ percentage: number;
1541
+ }
1542
+ /**
1543
+ * Individual password requirement
1544
+ */
1545
+ interface PasswordRequirement {
1546
+ label: string;
1547
+ met: boolean;
1548
+ icon: string;
1549
+ }
1550
+
1551
+ /**
1552
+ * Verification Code Input Component with 6 Separate Digit Inputs
1553
+ *
1554
+ * Per research.md Decision 8: Email Verification Code Format
1555
+ *
1556
+ * Features:
1557
+ * - 6 separate input fields (one digit each)
1558
+ * - Automatic focus advancement after entering digit
1559
+ * - Backspace moves to previous input
1560
+ * - Paste support (splits 6-digit code across inputs)
1561
+ * - Accessible ARIA attributes
1562
+ * - Reactive Forms ControlValueAccessor implementation
1563
+ * - Auto-submit on complete (optional)
1564
+ *
1565
+ * Usage:
1566
+ * ```html
1567
+ * <lc-verification-code-input
1568
+ * [formControl]="codeControl"
1569
+ * label="Verification Code"
1570
+ * [autoSubmit]="true"
1571
+ * (complete)="onCodeComplete($event)"
1572
+ * ></lc-verification-code-input>
1573
+ * ```
1574
+ *
1575
+ * Cognito Email Format:
1576
+ * - 6-digit numeric code (e.g., 123456)
1577
+ * - Sent via email with click-to-verify link (?code=XXX)
1578
+ * - Valid for 24 hours
1579
+ *
1580
+ * User Stories: US0 (Registration Email Verification), US2 (Password Reset)
1581
+ */
1582
+ declare class VerificationCodeInputComponent implements ControlValueAccessor, AfterViewInit {
1583
+ label: string;
1584
+ length: number;
1585
+ disabled: boolean;
1586
+ required: boolean;
1587
+ error?: string;
1588
+ autoSubmit: boolean;
1589
+ readonly complete: EventEmitter<string>;
1590
+ digitInputs: QueryList<ElementRef<HTMLInputElement>>;
1591
+ digits: string[];
1592
+ private onChange;
1593
+ private onTouched;
1594
+ ngAfterViewInit(): void;
1595
+ /**
1596
+ * ControlValueAccessor: Write value from form control
1597
+ */
1598
+ writeValue(value: string): void;
1599
+ /**
1600
+ * ControlValueAccessor: Register onChange callback
1601
+ */
1602
+ registerOnChange(fn: (value: string) => void): void;
1603
+ /**
1604
+ * ControlValueAccessor: Register onTouched callback
1605
+ */
1606
+ registerOnTouched(fn: () => void): void;
1607
+ /**
1608
+ * ControlValueAccessor: Set disabled state
1609
+ */
1610
+ setDisabledState(isDisabled: boolean): void;
1611
+ /**
1612
+ * Handle digit input
1613
+ */
1614
+ onDigitInput(event: Event, index: number): void;
1615
+ /**
1616
+ * Handle keydown events (backspace, arrow keys, paste)
1617
+ */
1618
+ onKeyDown(event: KeyboardEvent, index: number): void;
1619
+ /**
1620
+ * Handle paste event (split 6-digit code across inputs)
1621
+ */
1622
+ onPaste(event: ClipboardEvent): void;
1623
+ /**
1624
+ * Focus specific input by index
1625
+ */
1626
+ private focusInput;
1627
+ /**
1628
+ * Check if all digits entered
1629
+ */
1630
+ private isComplete;
1631
+ /**
1632
+ * Get complete verification code
1633
+ */
1634
+ private getCode;
1635
+ /**
1636
+ * Update form control value
1637
+ */
1638
+ private updateValue;
1639
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VerificationCodeInputComponent, never>;
1640
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VerificationCodeInputComponent, "lc-verification-code-input", never, { "label": { "alias": "label"; "required": false; }; "length": { "alias": "length"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "required": { "alias": "required"; "required": false; }; "error": { "alias": "error"; "required": false; }; "autoSubmit": { "alias": "autoSubmit"; "required": false; }; }, { "complete": "complete"; }, never, never, true, never>;
1641
+ }
1642
+
1643
+ /**
1644
+ * Email input component with RFC 5322 validation.
1645
+ *
1646
+ * Extends the base input component with email-specific validation
1647
+ * and provides visual feedback for valid/invalid email addresses.
1648
+ *
1649
+ * @example
1650
+ * ```html
1651
+ * <lc-email-input
1652
+ * label="Email Address"
1653
+ * placeholder="you@example.com"
1654
+ * [(ngModel)]="email"
1655
+ * [required]="true"
1656
+ * (validationChange)="handleValidation($event)"
1657
+ * ></lc-email-input>
1658
+ * ```
1659
+ */
1660
+ declare class EmailInputComponent implements ControlValueAccessor {
1661
+ /**
1662
+ * Input label (displayed above input)
1663
+ * @default 'Email'
1664
+ */
1665
+ readonly label: _angular_core.InputSignal<string>;
1666
+ /**
1667
+ * Placeholder text
1668
+ * @default 'you@example.com'
1669
+ */
1670
+ readonly placeholder: _angular_core.InputSignal<string>;
1671
+ /**
1672
+ * Size of the input
1673
+ * @default 'md'
1674
+ */
1675
+ readonly size: _angular_core.InputSignal<"xs" | "sm" | "md" | "lg">;
1676
+ /**
1677
+ * Whether the input is disabled
1678
+ * @default false
1679
+ */
1680
+ readonly disabled: _angular_core.InputSignal<boolean>;
1681
+ /**
1682
+ * Whether the input is read-only
1683
+ * @default false
1684
+ */
1685
+ readonly readonly: _angular_core.InputSignal<boolean>;
1686
+ /**
1687
+ * Whether the input is required
1688
+ * @default false
1689
+ */
1690
+ readonly required: _angular_core.InputSignal<boolean>;
1691
+ /**
1692
+ * Custom error message (overrides validation error)
1693
+ */
1694
+ readonly error: _angular_core.InputSignal<string | undefined>;
1695
+ /**
1696
+ * Helper text to display below input
1697
+ */
1698
+ readonly helperText: _angular_core.InputSignal<string | undefined>;
1699
+ /**
1700
+ * Whether to show validation feedback immediately
1701
+ * @default false (validates on blur)
1702
+ */
1703
+ readonly validateOnInput: _angular_core.InputSignal<boolean>;
1704
+ /**
1705
+ * ARIA label for accessibility
1706
+ */
1707
+ readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
1708
+ /**
1709
+ * Emitted when email value changes
1710
+ */
1711
+ readonly valueChange: _angular_core.OutputEmitterRef<string>;
1712
+ /**
1713
+ * Emitted when validation state changes
1714
+ */
1715
+ readonly validationChange: _angular_core.OutputEmitterRef<{
1716
+ valid: boolean;
1717
+ error?: string;
1718
+ }>;
1719
+ /**
1720
+ * Emitted when input receives focus
1721
+ */
1722
+ readonly focused: _angular_core.OutputEmitterRef<void>;
1723
+ /**
1724
+ * Emitted when input loses focus
1725
+ */
1726
+ readonly blurred: _angular_core.OutputEmitterRef<void>;
1727
+ /**
1728
+ * Emitted when Enter key is pressed
1729
+ */
1730
+ readonly enterPressed: _angular_core.OutputEmitterRef<void>;
1731
+ readonly value: _angular_core.WritableSignal<string>;
1732
+ private readonly touched;
1733
+ private readonly _formDisabled;
1734
+ /**
1735
+ * RFC 5322 compliant email regex (simplified but robust)
1736
+ * Validates: local-part@domain
1737
+ * - Local part: alphanumeric, dots, hyphens, underscores, plus signs
1738
+ * - Domain: alphanumeric, dots, hyphens with valid TLD
1739
+ */
1740
+ private readonly EMAIL_REGEX;
1741
+ private onChange;
1742
+ private onTouched;
1743
+ /**
1744
+ * Computed validation state
1745
+ */
1746
+ protected readonly isValid: _angular_core.Signal<boolean>;
1747
+ /**
1748
+ * Computed error message
1749
+ */
1750
+ protected readonly validationError: _angular_core.Signal<string | undefined>;
1751
+ /**
1752
+ * Computed disabled state
1753
+ */
1754
+ protected get isDisabled(): boolean;
1755
+ constructor();
1756
+ writeValue(value: string): void;
1757
+ registerOnChange(fn: (value: string) => void): void;
1758
+ registerOnTouched(fn: () => void): void;
1759
+ setDisabledState(isDisabled: boolean): void;
1760
+ /**
1761
+ * Public method to trigger validation
1762
+ */
1763
+ validate(): boolean;
1764
+ /**
1765
+ * Public method to reset validation state
1766
+ */
1767
+ resetValidation(): void;
1768
+ /**
1769
+ * Handles value changes from base input
1770
+ */
1771
+ protected onValueChange(newValue: string): void;
1772
+ /**
1773
+ * Handles focus events
1774
+ */
1775
+ protected onFocus(): void;
1776
+ /**
1777
+ * Handles blur events
1778
+ */
1779
+ protected onBlur(): void;
1780
+ /**
1781
+ * Handles Enter key press
1782
+ */
1783
+ protected onEnterPressed(): void;
1784
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<EmailInputComponent, never>;
1785
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<EmailInputComponent, "lc-email-input", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "helperText": { "alias": "helperText"; "required": false; "isSignal": true; }; "validateOnInput": { "alias": "validateOnInput"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; "validationChange": "validationChange"; "focused": "focused"; "blurred": "blurred"; "enterPressed": "enterPressed"; }, never, never, true, never>;
1786
+ }
1787
+
1788
+ type ContainerSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';
1789
+ declare class ContainerComponent {
1790
+ size: _angular_core.InputSignal<ContainerSize>;
1791
+ noPadding: _angular_core.InputSignal<boolean>;
1792
+ paddingY: _angular_core.InputSignal<boolean>;
1793
+ get hostClasses(): string;
1794
+ classes: _angular_core.Signal<string>;
1795
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ContainerComponent, never>;
1796
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ContainerComponent, "lc-container", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "noPadding": { "alias": "noPadding"; "required": false; "isSignal": true; }; "paddingY": { "alias": "paddingY"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1797
+ }
1798
+
1799
+ type SectionSpacing = 'none' | 'sm' | 'md' | 'lg' | 'xl';
1800
+ type SectionBackground = 'none' | 'gray' | 'primary' | 'secondary';
1801
+ declare class SectionComponent {
1802
+ spacing: _angular_core.InputSignal<SectionSpacing>;
1803
+ background: _angular_core.InputSignal<SectionBackground>;
1804
+ noPaddingX: _angular_core.InputSignal<boolean>;
1805
+ noPaddingY: _angular_core.InputSignal<boolean>;
1806
+ get hostClasses(): string;
1807
+ classes: _angular_core.Signal<string>;
1808
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SectionComponent, never>;
1809
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SectionComponent, "lc-section", never, { "spacing": { "alias": "spacing"; "required": false; "isSignal": true; }; "background": { "alias": "background"; "required": false; "isSignal": true; }; "noPaddingX": { "alias": "noPaddingX"; "required": false; "isSignal": true; }; "noPaddingY": { "alias": "noPaddingY"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1810
+ }
1811
+
1812
+ type SpacerSize = 'auto' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';
1813
+ declare class SpacerComponent {
1814
+ size: _angular_core.InputSignal<SpacerSize>;
1815
+ get hostClasses(): string;
1816
+ get ariaHidden(): string;
1817
+ get tabIndex(): number;
1818
+ classes: _angular_core.Signal<string>;
1819
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SpacerComponent, never>;
1820
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SpacerComponent, "lc-spacer", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1821
+ }
1822
+
1823
+ type StackDirection = 'vertical' | 'horizontal';
1824
+ type StackGap = 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';
1825
+ type StackAlign = 'start' | 'center' | 'end' | 'stretch' | 'baseline';
1826
+ type StackJustify = 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly';
1827
+ declare class StackComponent {
1828
+ direction: _angular_core.InputSignal<StackDirection>;
1829
+ gap: _angular_core.InputSignal<StackGap>;
1830
+ align: _angular_core.InputSignal<StackAlign>;
1831
+ justify: _angular_core.InputSignal<StackJustify>;
1832
+ wrap: _angular_core.InputSignal<boolean>;
1833
+ fullWidth: _angular_core.InputSignal<boolean>;
1834
+ get hostClasses(): string;
1835
+ classes: _angular_core.Signal<string>;
1836
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<StackComponent, never>;
1837
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<StackComponent, "lc-stack", never, { "direction": { "alias": "direction"; "required": false; "isSignal": true; }; "gap": { "alias": "gap"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; "justify": { "alias": "justify"; "required": false; "isSignal": true; }; "wrap": { "alias": "wrap"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1838
+ }
1839
+
1840
+ type AlertVariant = 'success' | 'error' | 'warning' | 'info';
1841
+ /**
1842
+ * Alert component for inline notifications.
1843
+ *
1844
+ * @example
1845
+ * ```html
1846
+ * <lc-alert variant="success" title="Success!" [dismissible]="true">
1847
+ * Your changes have been saved.
1848
+ * </lc-alert>
1849
+ * ```
1850
+ */
1851
+ declare class AlertComponent {
1852
+ /**
1853
+ * Visual variant of the alert
1854
+ * @default 'info'
1855
+ */
1856
+ variant: _angular_core.InputSignal<AlertVariant>;
1857
+ /**
1858
+ * Alert title (optional)
1859
+ */
1860
+ title: _angular_core.InputSignal<string | undefined>;
1861
+ /**
1862
+ * Alert message (alternative to content projection)
1863
+ */
1864
+ message: _angular_core.InputSignal<string | undefined>;
1865
+ /**
1866
+ * Icon to display (defaults based on variant)
1867
+ */
1868
+ icon: _angular_core.InputSignal<string | undefined>;
1869
+ /**
1870
+ * Whether to show icon
1871
+ * @default true
1872
+ */
1873
+ showIcon: _angular_core.InputSignal<boolean>;
1874
+ /**
1875
+ * Whether the alert can be dismissed
1876
+ * @default false
1877
+ */
1878
+ dismissible: _angular_core.InputSignal<boolean>;
1879
+ /**
1880
+ * ARIA label for accessibility
1881
+ */
1882
+ ariaLabel: _angular_core.InputSignal<string | undefined>;
1883
+ /**
1884
+ * Emitted when alert is dismissed
1885
+ */
1886
+ readonly dismissed: _angular_core.OutputEmitterRef<void>;
1887
+ /**
1888
+ * Internal visibility state
1889
+ */
1890
+ protected visible: _angular_core.WritableSignal<boolean>;
1891
+ /**
1892
+ * Computed host classes
1893
+ */
1894
+ protected hostClasses: _angular_core.Signal<string>;
1895
+ /**
1896
+ * Computed container classes
1897
+ */
1898
+ protected containerClasses: _angular_core.Signal<string>;
1899
+ /**
1900
+ * Computed ARIA live region priority
1901
+ */
1902
+ protected ariaLive: _angular_core.Signal<"assertive" | "polite">;
1903
+ /**
1904
+ * Computed default icon based on variant
1905
+ */
1906
+ protected defaultIcon: _angular_core.Signal<string>;
1907
+ /**
1908
+ * Dismiss the alert
1909
+ */
1910
+ dismiss(): void;
1911
+ /**
1912
+ * Handle close button click
1913
+ */
1914
+ protected onCloseClick(event: Event): void;
1915
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AlertComponent, never>;
1916
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AlertComponent, "lc-alert", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "showIcon": { "alias": "showIcon"; "required": false; "isSignal": true; }; "dismissible": { "alias": "dismissible"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "dismissed": "dismissed"; }, never, ["*"], true, never>;
1917
+ }
1918
+
1919
+ /**
1920
+ * Error severity levels
1921
+ */
1922
+ type ErrorSeverity = 'error' | 'warning' | 'info';
1923
+ /**
1924
+ * Error display component for authentication error messages.
1925
+ *
1926
+ * Automatically maps Cognito error codes to user-friendly messages
1927
+ * and displays them with appropriate severity styling.
1928
+ *
1929
+ * @example
1930
+ * ```html
1931
+ * <!-- Display Cognito error -->
1932
+ * <lc-error-display
1933
+ * [error]="cognitoError"
1934
+ * [dismissible]="true"
1935
+ * ></lc-error-display>
1936
+ *
1937
+ * <!-- Display custom error -->
1938
+ * <lc-error-display
1939
+ * message="Invalid credentials"
1940
+ * severity="error"
1941
+ * ></lc-error-display>
1942
+ * ```
1943
+ */
1944
+ declare class ErrorDisplayComponent {
1945
+ /**
1946
+ * Error object (Cognito or generic Error)
1947
+ */
1948
+ readonly error: _angular_core.InputSignal<Error | {
1949
+ code?: string;
1950
+ message?: string;
1951
+ } | null | undefined>;
1952
+ /**
1953
+ * Custom error message (overrides error.message)
1954
+ */
1955
+ readonly message: _angular_core.InputSignal<string | undefined>;
1956
+ /**
1957
+ * Error severity level
1958
+ * @default 'error'
1959
+ */
1960
+ readonly severity: _angular_core.InputSignal<ErrorSeverity>;
1961
+ /**
1962
+ * Title for the error display
1963
+ */
1964
+ readonly title: _angular_core.InputSignal<string | undefined>;
1965
+ /**
1966
+ * Whether the error can be dismissed
1967
+ * @default true
1968
+ */
1969
+ readonly dismissible: _angular_core.InputSignal<boolean>;
1970
+ /**
1971
+ * Whether to show icon
1972
+ * @default true
1973
+ */
1974
+ readonly showIcon: _angular_core.InputSignal<boolean>;
1975
+ /**
1976
+ * Whether to automatically hide after a delay
1977
+ * @default false
1978
+ */
1979
+ readonly autoDismiss: _angular_core.InputSignal<boolean>;
1980
+ /**
1981
+ * Auto-dismiss delay in milliseconds
1982
+ * @default 5000
1983
+ */
1984
+ readonly autoDismissDelay: _angular_core.InputSignal<number>;
1985
+ /**
1986
+ * Internal visibility state
1987
+ */
1988
+ protected readonly visible: _angular_core.WritableSignal<boolean>;
1989
+ /**
1990
+ * Computed error message
1991
+ */
1992
+ protected readonly errorMessage: _angular_core.Signal<string | undefined>;
1993
+ /**
1994
+ * Computed alert variant based on severity
1995
+ */
1996
+ protected readonly alertVariant: _angular_core.Signal<AlertVariant>;
1997
+ /**
1998
+ * Computed title for the error
1999
+ */
2000
+ protected readonly errorTitle: _angular_core.Signal<string | undefined>;
2001
+ /**
2002
+ * Auto-dismiss timer
2003
+ */
2004
+ private autoDismissTimer?;
2005
+ constructor();
2006
+ /**
2007
+ * Handle alert dismissed
2008
+ */
2009
+ protected onDismissed(): void;
2010
+ /**
2011
+ * Clear auto-dismiss timer
2012
+ */
2013
+ private clearAutoDismissTimer;
2014
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ErrorDisplayComponent, never>;
2015
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ErrorDisplayComponent, "lc-error-display", never, { "error": { "alias": "error"; "required": false; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; "severity": { "alias": "severity"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "dismissible": { "alias": "dismissible"; "required": false; "isSignal": true; }; "showIcon": { "alias": "showIcon"; "required": false; "isSignal": true; }; "autoDismiss": { "alias": "autoDismiss"; "required": false; "isSignal": true; }; "autoDismissDelay": { "alias": "autoDismissDelay"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2016
+ }
2017
+
2018
+ type ToastVariant = 'success' | 'error' | 'warning' | 'info';
2019
+ type ToastPosition = 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';
2020
+ interface ToastAction {
2021
+ label: string;
2022
+ onClick: () => void;
2023
+ }
2024
+ interface ToastConfig {
2025
+ message: string;
2026
+ variant?: ToastVariant;
2027
+ position?: ToastPosition;
2028
+ duration?: number;
2029
+ showCloseButton?: boolean;
2030
+ action?: ToastAction;
2031
+ }
2032
+ interface Toast extends Required<Omit<ToastConfig, 'action'>> {
2033
+ id: string;
2034
+ action?: ToastAction;
2035
+ }
2036
+ /**
2037
+ * Toast service for showing ephemeral notifications.
2038
+ *
2039
+ * @example
2040
+ * ```typescript
2041
+ * constructor(private toastService: ToastService) {}
2042
+ *
2043
+ * showSuccess() {
2044
+ * this.toastService.show({
2045
+ * message: 'Changes saved successfully!',
2046
+ * variant: 'success',
2047
+ * duration: 3000
2048
+ * });
2049
+ * }
2050
+ * ```
2051
+ */
2052
+ declare class ToastService {
2053
+ /**
2054
+ * Public readonly signal for toasts
2055
+ */
2056
+ readonly toasts: Signal<readonly Toast[]>;
2057
+ /**
2058
+ * Internal signal for toast list
2059
+ */
2060
+ private readonly toastList;
2061
+ private readonly MAX_TOASTS;
2062
+ private toastIdCounter;
2063
+ private activeTimeouts;
2064
+ constructor();
2065
+ /**
2066
+ * Show a toast notification
2067
+ */
2068
+ show(config: ToastConfig): string;
2069
+ /**
2070
+ * Close a specific toast
2071
+ */
2072
+ close(id: string): void;
2073
+ /**
2074
+ * Close all toasts
2075
+ */
2076
+ closeAll(): void;
2077
+ /**
2078
+ * Generate unique toast ID
2079
+ */
2080
+ private generateId;
2081
+ /**
2082
+ * Remove a toast from the list
2083
+ */
2084
+ private removeToast;
2085
+ /**
2086
+ * Clear timeout for a toast
2087
+ */
2088
+ private clearTimeout;
2089
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ToastService, never>;
2090
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<ToastService>;
2091
+ }
2092
+
2093
+ /**
2094
+ * Toast component for displaying ephemeral notifications.
2095
+ * Typically used via ToastService, not directly.
2096
+ *
2097
+ * @example
2098
+ * ```typescript
2099
+ * // Use via service
2100
+ * constructor(private toastService: ToastService) {}
2101
+ *
2102
+ * showToast() {
2103
+ * this.toastService.show({
2104
+ * message: 'Success!',
2105
+ * variant: 'success'
2106
+ * });
2107
+ * }
2108
+ * ```
2109
+ */
2110
+ declare class ToastComponent {
2111
+ /**
2112
+ * Toast data
2113
+ */
2114
+ toast: _angular_core.InputSignal<Toast>;
2115
+ /**
2116
+ * Emitted when toast is closed
2117
+ */
2118
+ readonly closed: _angular_core.OutputEmitterRef<string>;
2119
+ /**
2120
+ * Computed host classes
2121
+ */
2122
+ protected hostClasses: _angular_core.Signal<string>;
2123
+ /**
2124
+ * Computed container classes
2125
+ */
2126
+ protected containerClasses: _angular_core.Signal<string>;
2127
+ /**
2128
+ * Computed ARIA role
2129
+ */
2130
+ protected ariaRole: _angular_core.Signal<"alert" | "status">;
2131
+ /**
2132
+ * Computed ARIA live region priority
2133
+ */
2134
+ protected ariaLive: _angular_core.Signal<"assertive" | "polite">;
2135
+ /**
2136
+ * Computed default icon based on variant
2137
+ */
2138
+ protected defaultIcon: _angular_core.Signal<string>;
2139
+ /**
2140
+ * Handle close button click
2141
+ */
2142
+ protected onCloseClick(event: Event): void;
2143
+ /**
2144
+ * Handle action button click
2145
+ */
2146
+ protected onActionClick(event: Event): void;
2147
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ToastComponent, never>;
2148
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ToastComponent, "lc-toast", never, { "toast": { "alias": "toast"; "required": true; "isSignal": true; }; }, { "closed": "closed"; }, never, never, true, never>;
2149
+ }
2150
+
2151
+ type ModalSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';
2152
+ /**
2153
+ * Modal dialog component for focused user interactions.
2154
+ * Uses FocusTrap for accessibility.
2155
+ *
2156
+ * @example
2157
+ * ```html
2158
+ * <lc-modal [(open)]="isOpen" size="md" [closeOnBackdropClick]="true">
2159
+ * <div slot="header">
2160
+ * <h2>Modal Title</h2>
2161
+ * </div>
2162
+ * <div slot="body">
2163
+ * <p>Modal content goes here</p>
2164
+ * </div>
2165
+ * <div slot="footer">
2166
+ * <lc-button (click)="closeModal()">Close</lc-button>
2167
+ * </div>
2168
+ * </lc-modal>
2169
+ * ```
2170
+ */
2171
+ declare class ModalComponent implements OnDestroy {
2172
+ modalContent?: ElementRef<HTMLElement>;
2173
+ /**
2174
+ * Whether the modal is open (input from parent)
2175
+ * @default false
2176
+ */
2177
+ open: _angular_core.InputSignal<boolean>;
2178
+ /**
2179
+ * Modal size
2180
+ * @default 'md'
2181
+ */
2182
+ size: _angular_core.InputSignal<ModalSize>;
2183
+ /**
2184
+ * Whether clicking backdrop closes modal
2185
+ * @default true
2186
+ */
2187
+ closeOnBackdropClick: _angular_core.InputSignal<boolean>;
2188
+ /**
2189
+ * Whether pressing Escape closes modal
2190
+ * @default true
2191
+ */
2192
+ closeOnEscape: _angular_core.InputSignal<boolean>;
2193
+ /**
2194
+ * Whether to show close button in header
2195
+ * @default true
2196
+ */
2197
+ showCloseButton: _angular_core.InputSignal<boolean>;
2198
+ /**
2199
+ * ARIA label for accessibility
2200
+ */
2201
+ ariaLabel: _angular_core.InputSignal<string | undefined>;
2202
+ /**
2203
+ * ARIA labelledby ID
2204
+ */
2205
+ ariaLabelledBy: _angular_core.InputSignal<string | undefined>;
2206
+ /**
2207
+ * ARIA describedby ID
2208
+ */
2209
+ ariaDescribedBy: _angular_core.InputSignal<string | undefined>;
2210
+ /**
2211
+ * Emitted when modal opens
2212
+ */
2213
+ readonly modalOpened: _angular_core.OutputEmitterRef<void>;
2214
+ /**
2215
+ * Emitted when modal closes
2216
+ */
2217
+ readonly modalClosed: _angular_core.OutputEmitterRef<void>;
2218
+ /**
2219
+ * Two-way binding for open state
2220
+ */
2221
+ readonly openChange: _angular_core.OutputEmitterRef<boolean>;
2222
+ /**
2223
+ * Emitted when backdrop is clicked
2224
+ */
2225
+ readonly backdropClicked: _angular_core.OutputEmitterRef<MouseEvent>;
2226
+ /**
2227
+ * Internal open state signal (protected for AOT)
2228
+ */
2229
+ protected _open: _angular_core.WritableSignal<boolean>;
2230
+ /**
2231
+ * Computed modal classes
2232
+ */
2233
+ protected modalClasses: _angular_core.Signal<string>;
2234
+ private readonly focusTrapFactory;
2235
+ private focusTrap?;
2236
+ private originalOverflow?;
2237
+ private escapeListener?;
2238
+ constructor();
2239
+ ngOnDestroy(): void;
2240
+ /**
2241
+ * Open the modal programmatically
2242
+ */
2243
+ openModal(): void;
2244
+ /**
2245
+ * Close the modal programmatically
2246
+ */
2247
+ closeModal(): void;
2248
+ /**
2249
+ * Handle backdrop click
2250
+ */
2251
+ protected onBackdropClick(event: MouseEvent): void;
2252
+ /**
2253
+ * Handle close button click
2254
+ */
2255
+ protected onCloseClick(event: Event): void;
2256
+ /**
2257
+ * Handle Escape key press
2258
+ */
2259
+ private handleEscapeKey;
2260
+ /**
2261
+ * Show the modal
2262
+ */
2263
+ private showModal;
2264
+ /**
2265
+ * Hide the modal
2266
+ */
2267
+ private hideModal;
2268
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ModalComponent, never>;
2269
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ModalComponent, "lc-modal", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "closeOnBackdropClick": { "alias": "closeOnBackdropClick"; "required": false; "isSignal": true; }; "closeOnEscape": { "alias": "closeOnEscape"; "required": false; "isSignal": true; }; "showCloseButton": { "alias": "showCloseButton"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "ariaLabelledBy": { "alias": "ariaLabelledBy"; "required": false; "isSignal": true; }; "ariaDescribedBy": { "alias": "ariaDescribedBy"; "required": false; "isSignal": true; }; }, { "modalOpened": "modalOpened"; "modalClosed": "modalClosed"; "openChange": "openChange"; "backdropClicked": "backdropClicked"; }, never, ["[slot='header']", "[slot='body']", "*", "[slot='footer']"], true, never>;
2270
+ }
2271
+
2272
+ type TooltipPosition = 'top' | 'bottom' | 'left' | 'right';
2273
+ /**
2274
+ * Internal tooltip content component
2275
+ */
2276
+ declare class TooltipContentComponent {
2277
+ content: string;
2278
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TooltipContentComponent, never>;
2279
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TooltipContentComponent, "lc-tooltip-content", never, {}, {}, never, never, true, never>;
2280
+ }
2281
+ /**
2282
+ * Tooltip directive for displaying contextual information.
2283
+ * Uses Angular CDK Overlay for positioning.
2284
+ *
2285
+ * @example
2286
+ * ```html
2287
+ * <button lcTooltip="Click me!" tooltipPosition="top">
2288
+ * Hover or focus
2289
+ * </button>
2290
+ * ```
2291
+ */
2292
+ declare class TooltipDirective implements OnDestroy {
2293
+ /**
2294
+ * Tooltip content text
2295
+ */
2296
+ lcTooltip: _angular_core.InputSignal<string>;
2297
+ /**
2298
+ * Tooltip position
2299
+ * @default 'top'
2300
+ */
2301
+ tooltipPosition: _angular_core.InputSignal<TooltipPosition>;
2302
+ /**
2303
+ * Show delay in milliseconds
2304
+ * @default 0
2305
+ */
2306
+ tooltipShowDelay: _angular_core.InputSignal<number>;
2307
+ /**
2308
+ * Hide delay in milliseconds
2309
+ * @default 0
2310
+ */
2311
+ tooltipHideDelay: _angular_core.InputSignal<number>;
2312
+ /**
2313
+ * Whether tooltip is disabled
2314
+ * @default false
2315
+ */
2316
+ tooltipDisabled: _angular_core.InputSignal<boolean>;
2317
+ private overlayRef?;
2318
+ private tooltipRef?;
2319
+ private showTimeout?;
2320
+ private hideTimeout?;
2321
+ private tooltipId?;
2322
+ private readonly elementRef;
2323
+ private readonly overlay;
2324
+ private readonly viewContainerRef;
2325
+ private readonly renderer;
2326
+ ngOnDestroy(): void;
2327
+ onMouseEnter(): void;
2328
+ onMouseLeave(): void;
2329
+ onFocus(): void;
2330
+ onBlur(): void;
2331
+ /**
2332
+ * Show tooltip programmatically
2333
+ */
2334
+ show(): void;
2335
+ /**
2336
+ * Hide tooltip programmatically
2337
+ */
2338
+ hide(): void;
2339
+ /**
2340
+ * Toggle tooltip visibility
2341
+ */
2342
+ toggle(): void;
2343
+ private showWithDelay;
2344
+ private hideWithDelay;
2345
+ private createOverlay;
2346
+ private getPositions;
2347
+ private clearTimeouts;
2348
+ private cleanup;
2349
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TooltipDirective, never>;
2350
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TooltipDirective, "[lcTooltip]", never, { "lcTooltip": { "alias": "lcTooltip"; "required": true; "isSignal": true; }; "tooltipPosition": { "alias": "tooltipPosition"; "required": false; "isSignal": true; }; "tooltipShowDelay": { "alias": "tooltipShowDelay"; "required": false; "isSignal": true; }; "tooltipHideDelay": { "alias": "tooltipHideDelay"; "required": false; "isSignal": true; }; "tooltipDisabled": { "alias": "tooltipDisabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2351
+ }
2352
+
2353
+ interface BreadcrumbItem {
2354
+ label: string;
2355
+ url?: string;
2356
+ }
2357
+ type BreadcrumbSize = 'sm' | 'md' | 'lg';
2358
+ declare class BreadcrumbsComponent {
2359
+ items: _angular_core.WritableSignal<BreadcrumbItem[]>;
2360
+ separator: _angular_core.WritableSignal<string>;
2361
+ maxItems: _angular_core.WritableSignal<number>;
2362
+ size: _angular_core.WritableSignal<BreadcrumbSize>;
2363
+ ariaLabel: _angular_core.WritableSignal<string>;
2364
+ breadcrumbClasses: _angular_core.Signal<string>;
2365
+ visibleItems: _angular_core.Signal<BreadcrumbItem[]>;
2366
+ set itemsInput(value: BreadcrumbItem[]);
2367
+ set separatorInput(value: string);
2368
+ set maxItemsInput(value: number);
2369
+ set sizeInput(value: BreadcrumbSize);
2370
+ set ariaLabelInput(value: string);
2371
+ isLastItem(index: number): boolean;
2372
+ isEllipsis(item: BreadcrumbItem): boolean;
2373
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BreadcrumbsComponent, never>;
2374
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BreadcrumbsComponent, "lc-breadcrumbs", never, { "itemsInput": { "alias": "itemsInput"; "required": false; }; "separatorInput": { "alias": "separatorInput"; "required": false; }; "maxItemsInput": { "alias": "maxItemsInput"; "required": false; }; "sizeInput": { "alias": "sizeInput"; "required": false; }; "ariaLabelInput": { "alias": "ariaLabelInput"; "required": false; }; }, {}, never, ["*"], true, never>;
2375
+ }
2376
+
2377
+ /**
2378
+ * AppHeaderComponent - Global application header for Life-Cockpit shell
2379
+ *
2380
+ * Features:
2381
+ * - Clickable logo for home navigation
2382
+ * - Optional title and subtitle display
2383
+ * - User profile dropdown with avatar, name, email, optional Profile link, and Logout
2384
+ * - Optional theme toggle button in header
2385
+ * - Hamburger menu toggle for mobile sidebar
2386
+ * - OnPush change detection for performance
2387
+ *
2388
+ * @example
2389
+ * ```html
2390
+ * <lc-header
2391
+ * [logo]="'/assets/logo.svg'"
2392
+ * [title]="'Life-Cockpit'"
2393
+ * [subtitle]="'User Profile'"
2394
+ * [userName]="'John Doe'"
2395
+ * [userEmail]="'user@example.com'"
2396
+ * [showHamburger]="true"
2397
+ * [showThemeButton]="true"
2398
+ * [showProfileMenuItem]="true"
2399
+ * (hamburgerClick)="toggleSidebar()"
2400
+ * (themeToggleClick)="toggleTheme()"
2401
+ * (profileClick)="navigateToProfile()"
2402
+ * (logoutClick)="handleLogout()"
2403
+ * />
2404
+ * ```
2405
+ */
2406
+ declare class HeaderComponent {
2407
+ /**
2408
+ * Logo image source URL
2409
+ */
2410
+ logo: string;
2411
+ /**
2412
+ * Optional title to display next to logo
2413
+ */
2414
+ title: string;
2415
+ /**
2416
+ * Optional subtitle to display under title
2417
+ */
2418
+ subtitle: string;
2419
+ /**
2420
+ * User email to display in profile dropdown
2421
+ */
2422
+ userEmail: string;
2423
+ /**
2424
+ * User full name for avatar initials
2425
+ * @example 'John Doe'
2426
+ */
2427
+ userName: string;
2428
+ /**
2429
+ * Whether to show hamburger menu icon (for mobile sidebar toggle)
2430
+ */
2431
+ showHamburger: boolean;
2432
+ /**
2433
+ * Whether to show theme toggle button in header
2434
+ */
2435
+ showThemeButton: boolean;
2436
+ /**
2437
+ * Whether to show the Profile menu item in the user dropdown
2438
+ * @default true
2439
+ */
2440
+ showProfileMenuItem: boolean;
2441
+ /**
2442
+ * Emitted when hamburger menu icon is clicked
2443
+ */
2444
+ readonly hamburgerClick: EventEmitter<void>;
2445
+ /**
2446
+ * Emitted when theme toggle is clicked
2447
+ */
2448
+ readonly themeToggleClick: EventEmitter<void>;
2449
+ /**
2450
+ * Emitted when Logout is clicked in profile dropdown
2451
+ */
2452
+ readonly logoutClick: EventEmitter<void>;
2453
+ /**
2454
+ * Emitted when Profile menu item is clicked
2455
+ */
2456
+ readonly profileClick: EventEmitter<void>;
2457
+ protected readonly themeService: ThemeService;
2458
+ /**
2459
+ * Get menu items for profile dropdown
2460
+ */
2461
+ protected readonly menuItems: _angular_core.Signal<MenuItem[]>;
2462
+ /**
2463
+ * Dropdown open state (using Angular signals)
2464
+ */
2465
+ private readonly dropdownOpen;
2466
+ /**
2467
+ * Get dropdown open state
2468
+ */
2469
+ isDropdownOpen(): boolean;
2470
+ /**
2471
+ * Toggle profile dropdown visibility
2472
+ */
2473
+ toggleDropdown(): void;
2474
+ /**
2475
+ * Close profile dropdown
2476
+ */
2477
+ closeDropdown(): void;
2478
+ /**
2479
+ * Handle hamburger click
2480
+ */
2481
+ onHamburgerClick(): void;
2482
+ /**
2483
+ * Handle theme button click (separate button, not in menu)
2484
+ */
2485
+ onThemeButtonClick(): void;
2486
+ /**
2487
+ * Handle logout click
2488
+ */
2489
+ onLogoutClick(): void;
2490
+ /**
2491
+ * Handle profile click
2492
+ */
2493
+ onProfileClick(): void;
2494
+ /**
2495
+ * Handle menu item click
2496
+ */
2497
+ onMenuItemClick(item: MenuItem): void;
2498
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<HeaderComponent, never>;
2499
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<HeaderComponent, "lc-header", never, { "logo": { "alias": "logo"; "required": false; }; "title": { "alias": "title"; "required": false; }; "subtitle": { "alias": "subtitle"; "required": false; }; "userEmail": { "alias": "userEmail"; "required": false; }; "userName": { "alias": "userName"; "required": false; }; "showHamburger": { "alias": "showHamburger"; "required": false; }; "showThemeButton": { "alias": "showThemeButton"; "required": false; }; "showProfileMenuItem": { "alias": "showProfileMenuItem"; "required": false; }; }, { "hamburgerClick": "hamburgerClick"; "themeToggleClick": "themeToggleClick"; "logoutClick": "logoutClick"; "profileClick": "profileClick"; }, never, never, true, never>;
2500
+ }
2501
+
2502
+ type PaginationSize = 'sm' | 'md' | 'lg';
2503
+ /**
2504
+ * Pagination component for navigating through pages of content.
2505
+ *
2506
+ * Features:
2507
+ * - Configurable page size
2508
+ * - Previous/Next navigation
2509
+ * - Direct page number access
2510
+ * - Ellipsis for large page ranges
2511
+ * - Size variants (sm, md, lg)
2512
+ * - Accessible with ARIA attributes
2513
+ * - Optional item count display
2514
+ *
2515
+ * @example
2516
+ * ```html
2517
+ * <lc-pagination
2518
+ * [currentPageInput]="currentPage"
2519
+ * [totalItemsInput]="totalItems"
2520
+ * [pageSizeInput]="10"
2521
+ * (pageChange)="onPageChange($event)"
2522
+ * ></lc-pagination>
2523
+ * ```
2524
+ */
2525
+ declare class PaginationComponent {
2526
+ currentPage: _angular_core.WritableSignal<number>;
2527
+ totalItems: _angular_core.WritableSignal<number>;
2528
+ pageSize: _angular_core.WritableSignal<number>;
2529
+ size: _angular_core.WritableSignal<PaginationSize>;
2530
+ maxVisiblePages: _angular_core.WritableSignal<number>;
2531
+ ariaLabel: _angular_core.WritableSignal<string>;
2532
+ showInfo: _angular_core.WritableSignal<boolean>;
2533
+ readonly pageChange: EventEmitter<number>;
2534
+ totalPages: _angular_core.Signal<number>;
2535
+ firstItemIndex: _angular_core.Signal<number>;
2536
+ lastItemIndex: _angular_core.Signal<number>;
2537
+ isFirstPage: _angular_core.Signal<boolean>;
2538
+ isLastPage: _angular_core.Signal<boolean>;
2539
+ paginationClasses: _angular_core.Signal<string>;
2540
+ /**
2541
+ * Calculate visible page numbers with ellipsis support
2542
+ * Returns an array where -1 represents an ellipsis
2543
+ */
2544
+ visiblePages: _angular_core.Signal<number[]>;
2545
+ set currentPageInput(value: number);
2546
+ set totalItemsInput(value: number);
2547
+ set pageSizeInput(value: number);
2548
+ set sizeInput(value: PaginationSize);
2549
+ set maxVisiblePagesInput(value: number);
2550
+ set ariaLabelInput(value: string);
2551
+ set showInfoInput(value: boolean);
2552
+ goToPreviousPage(): void;
2553
+ goToNextPage(): void;
2554
+ goToPage(page: number): void;
2555
+ isCurrentPage(page: number): boolean;
2556
+ isEllipsis(page: number): boolean;
2557
+ shouldRender(): boolean;
2558
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PaginationComponent, never>;
2559
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PaginationComponent, "lc-pagination", never, { "currentPageInput": { "alias": "currentPageInput"; "required": false; }; "totalItemsInput": { "alias": "totalItemsInput"; "required": false; }; "pageSizeInput": { "alias": "pageSizeInput"; "required": false; }; "sizeInput": { "alias": "sizeInput"; "required": false; }; "maxVisiblePagesInput": { "alias": "maxVisiblePagesInput"; "required": false; }; "ariaLabelInput": { "alias": "ariaLabelInput"; "required": false; }; "showInfoInput": { "alias": "showInfoInput"; "required": false; }; }, { "pageChange": "pageChange"; }, never, never, true, never>;
2560
+ }
2561
+
2562
+ type SidenavPosition = 'left' | 'right';
2563
+ type SidenavMode = 'drawer' | 'docked';
2564
+ /**
2565
+ * Sidenav Component
2566
+ *
2567
+ * A navigation component that can work as either a drawer (overlay) or
2568
+ * a docked (persistent) sidebar. Supports section headlines, collapsible
2569
+ * groups, keyboard navigation, and accessibility features.
2570
+ *
2571
+ * @example Drawer mode (default — overlay that slides in)
2572
+ * ```html
2573
+ * <lc-sidenav
2574
+ * [isOpen]="isOpen"
2575
+ * mode="drawer"
2576
+ * (closed)="handleClose()">
2577
+ * </lc-sidenav>
2578
+ * ```
2579
+ *
2580
+ * @example Docked mode (persistent sidebar that stays open)
2581
+ * ```html
2582
+ * <lc-sidenav
2583
+ * [isOpen]="sidebarOpen"
2584
+ * mode="docked"
2585
+ * [items]="navItems"
2586
+ * (closed)="sidebarOpen = false">
2587
+ * </lc-sidenav>
2588
+ * ```
2589
+ */
2590
+ declare class SidenavComponent {
2591
+ /** Whether the sidenav is open */
2592
+ isOpen: _angular_core.WritableSignal<boolean>;
2593
+ /** Display mode: 'drawer' (overlay) or 'docked' (persistent sidebar) */
2594
+ mode: _angular_core.WritableSignal<SidenavMode>;
2595
+ /** Position of the sidenav (left or right) */
2596
+ position: _angular_core.WritableSignal<SidenavPosition>;
2597
+ /** Width of the sidenav drawer */
2598
+ width: _angular_core.WritableSignal<string>;
2599
+ /** ARIA label for the sidenav */
2600
+ ariaLabel: _angular_core.WritableSignal<string>;
2601
+ /** Whether to show the overlay backdrop */
2602
+ hasOverlay: _angular_core.WritableSignal<boolean>;
2603
+ /** Navigation items to display */
2604
+ items: _angular_core.WritableSignal<NavigationItem[]>;
2605
+ /** Current active route for highlighting */
2606
+ activeRoute: _angular_core.WritableSignal<string>;
2607
+ /** Track which parent items are expanded */
2608
+ expandedItems: _angular_core.WritableSignal<Set<string>>;
2609
+ /**
2610
+ * Computed sorted navigation items by displayOrder
2611
+ */
2612
+ sortedItems: _angular_core.Signal<NavigationItem[]>;
2613
+ /**
2614
+ * Input setter for isOpen
2615
+ */
2616
+ set isOpenInput(value: boolean);
2617
+ /**
2618
+ * Input setter for mode
2619
+ */
2620
+ set modeInput(value: SidenavMode);
2621
+ /**
2622
+ * Input setter for position
2623
+ */
2624
+ set positionInput(value: SidenavPosition);
2625
+ /**
2626
+ * Input setter for width
2627
+ */
2628
+ set widthInput(value: string);
2629
+ /**
2630
+ * Input setter for ariaLabel
2631
+ */
2632
+ set ariaLabelInput(value: string);
2633
+ /**
2634
+ * Input setter for hasOverlay
2635
+ */
2636
+ set hasOverlayInput(value: boolean);
2637
+ /**
2638
+ * Input setter for navigation items
2639
+ */
2640
+ set itemsInput(value: NavigationItem[]);
2641
+ /**
2642
+ * Input setter for active route
2643
+ */
2644
+ set activeRouteInput(value: string);
2645
+ /**
2646
+ * Event emitted when the sidenav should close
2647
+ */
2648
+ readonly closed: EventEmitter<void>;
2649
+ /**
2650
+ * Event emitted when a navigation item is clicked
2651
+ */
2652
+ readonly itemClicked: EventEmitter<NavigationItem>;
2653
+ /**
2654
+ * Computed CSS classes for the sidenav
2655
+ */
2656
+ sidenavClasses: _angular_core.Signal<string>;
2657
+ /**
2658
+ * Computed inline styles for the sidenav
2659
+ */
2660
+ sidenavStyles: _angular_core.Signal<{
2661
+ width: string;
2662
+ }>;
2663
+ /**
2664
+ * Handle close action
2665
+ */
2666
+ handleClose(): void;
2667
+ /**
2668
+ * Handle navigation item click
2669
+ */
2670
+ handleItemClick(item: NavigationItem): void;
2671
+ /**
2672
+ * Check if an item is active
2673
+ */
2674
+ isItemActive(item: NavigationItem): boolean;
2675
+ /**
2676
+ * Check if a parent item has an active child
2677
+ */
2678
+ hasActiveChild(item: NavigationItem): boolean;
2679
+ /**
2680
+ * Toggle expansion of a parent item
2681
+ */
2682
+ toggleExpanded(item: NavigationItem): void;
2683
+ /**
2684
+ * Check if an item is expanded
2685
+ */
2686
+ isExpanded(item: NavigationItem): boolean;
2687
+ /**
2688
+ * Handle keyboard navigation
2689
+ */
2690
+ handleKeydown(event: KeyboardEvent): void;
2691
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SidenavComponent, never>;
2692
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SidenavComponent, "lc-sidenav", never, { "isOpenInput": { "alias": "isOpenInput"; "required": false; }; "modeInput": { "alias": "modeInput"; "required": false; }; "positionInput": { "alias": "positionInput"; "required": false; }; "widthInput": { "alias": "widthInput"; "required": false; }; "ariaLabelInput": { "alias": "ariaLabelInput"; "required": false; }; "hasOverlayInput": { "alias": "hasOverlayInput"; "required": false; }; "itemsInput": { "alias": "itemsInput"; "required": false; }; "activeRouteInput": { "alias": "activeRouteInput"; "required": false; }; }, { "closed": "closed"; "itemClicked": "itemClicked"; }, never, ["*"], true, never>;
2693
+ }
2694
+
2695
+ type TabOrientation = 'horizontal' | 'vertical';
2696
+ /**
2697
+ * Individual tab component
2698
+ */
2699
+ declare class TabComponent {
2700
+ /**
2701
+ * Tab label displayed in tab button
2702
+ */
2703
+ label: string;
2704
+ /**
2705
+ * Whether the tab is disabled
2706
+ * @default false
2707
+ */
2708
+ disabled: boolean;
2709
+ /**
2710
+ * Optional icon name (Heroicons)
2711
+ */
2712
+ icon?: string;
2713
+ /**
2714
+ * Unique ID for accessibility
2715
+ */
2716
+ readonly id: string;
2717
+ /**
2718
+ * Unique ID for the panel
2719
+ */
2720
+ readonly panelId: string;
2721
+ /**
2722
+ * Template reference for tab content
2723
+ */
2724
+ template: TemplateRef<unknown>;
2725
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TabComponent, never>;
2726
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TabComponent, "lc-tab", never, { "label": { "alias": "label"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; }, {}, never, ["*"], true, never>;
2727
+ }
2728
+ /**
2729
+ * Tabs component for organizing content into switchable views.
2730
+ *
2731
+ * @example
2732
+ * ```html
2733
+ * <lc-tabs>
2734
+ * <lc-tab label="Account">Account settings</lc-tab>
2735
+ * <lc-tab label="Privacy">Privacy settings</lc-tab>
2736
+ * <lc-tab label="Security">Security settings</lc-tab>
2737
+ * </lc-tabs>
2738
+ * ```
2739
+ */
2740
+ declare class TabsComponent implements AfterContentInit {
2741
+ /**
2742
+ * Orientation input property
2743
+ * @default 'horizontal'
2744
+ */
2745
+ set orientation(value: TabOrientation);
2746
+ get orientation(): TabOrientation;
2747
+ /**
2748
+ * Currently selected tab index
2749
+ * @default 0
2750
+ */
2751
+ readonly selectedIndex: _angular_core.WritableSignal<number>;
2752
+ /**
2753
+ * Emitted when selected tab changes
2754
+ */
2755
+ readonly selectedIndexChange: EventEmitter<number>;
2756
+ /**
2757
+ * Tab components
2758
+ */
2759
+ tabs: QueryList<TabComponent>;
2760
+ /**
2761
+ * Tab list for template access
2762
+ */
2763
+ readonly tabList: _angular_core.Signal<TabComponent[]>;
2764
+ /**
2765
+ * CSS classes for tab list
2766
+ */
2767
+ readonly tabListClasses: _angular_core.Signal<{
2768
+ 'lc-tabs__list': boolean;
2769
+ 'lc-tabs--horizontal': boolean;
2770
+ 'lc-tabs--vertical': boolean;
2771
+ }>;
2772
+ /**
2773
+ * Orientation of tabs (internal signal)
2774
+ * @default 'horizontal'
2775
+ */
2776
+ private readonly _orientation;
2777
+ /**
2778
+ * Track tab registration
2779
+ */
2780
+ private registeredTabs;
2781
+ /**
2782
+ * Set selected index input
2783
+ */
2784
+ set selectedIndexInput(value: number);
2785
+ constructor();
2786
+ ngAfterContentInit(): void;
2787
+ /**
2788
+ * Register a tab
2789
+ */
2790
+ registerTab(tab: {
2791
+ label: string;
2792
+ disabled: boolean;
2793
+ }): void;
2794
+ /**
2795
+ * Select a tab by index
2796
+ */
2797
+ selectTab(index: number): void;
2798
+ /**
2799
+ * Check if tab is selected
2800
+ */
2801
+ isSelected(index: number): boolean;
2802
+ /**
2803
+ * Handle keyboard navigation
2804
+ */
2805
+ handleKeyDown(event: KeyboardEvent): void;
2806
+ /**
2807
+ * Get tabindex for tab button
2808
+ */
2809
+ getTabIndex(index: number): number;
2810
+ /**
2811
+ * Get next enabled tab index (with wrapping)
2812
+ */
2813
+ private getNextEnabledTab;
2814
+ /**
2815
+ * Get previous enabled tab index (with wrapping)
2816
+ */
2817
+ private getPreviousEnabledTab;
2818
+ /**
2819
+ * Get first enabled tab index
2820
+ */
2821
+ private getFirstEnabledTab;
2822
+ /**
2823
+ * Get last enabled tab index
2824
+ */
2825
+ private getLastEnabledTab;
2826
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TabsComponent, never>;
2827
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TabsComponent, "lc-tabs", never, { "orientation": { "alias": "orientation"; "required": false; }; "selectedIndexInput": { "alias": "selectedIndexInput"; "required": false; }; }, { "selectedIndexChange": "selectedIndexChange"; }, ["tabs"], never, true, never>;
2828
+ }
2829
+
2830
+ type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
2831
+ type AvatarStatus = 'online' | 'offline' | 'away' | 'busy';
2832
+ /**
2833
+ * Avatar Component
2834
+ *
2835
+ * A circular user representation component displaying images or initials.
2836
+ * Supports status indicators and multiple sizes.
2837
+ *
2838
+ * @example
2839
+ * ```html
2840
+ * <!-- With image -->
2841
+ * <lc-avatar src="https://example.com/avatar.jpg" alt="John Doe" />
2842
+ *
2843
+ * <!-- With initials -->
2844
+ * <lc-avatar name="John Doe" />
2845
+ *
2846
+ * <!-- With status indicator -->
2847
+ * <lc-avatar name="Jane Smith" status="online" size="lg" />
2848
+ * ```
2849
+ */
2850
+ declare class AvatarComponent {
2851
+ /** Image source URL */
2852
+ src: _angular_core.InputSignal<string | undefined>;
2853
+ /** Alt text for the image */
2854
+ alt: _angular_core.InputSignal<string | undefined>;
2855
+ /** Full name for generating initials */
2856
+ name: _angular_core.InputSignal<string | undefined>;
2857
+ /** Size of the avatar */
2858
+ size: _angular_core.InputSignal<AvatarSize>;
2859
+ /** Status indicator */
2860
+ status: _angular_core.InputSignal<AvatarStatus | undefined>;
2861
+ /**
2862
+ * Computed initials from name
2863
+ */
2864
+ initials: _angular_core.Signal<string>;
2865
+ /**
2866
+ * Computed CSS classes for the avatar
2867
+ */
2868
+ avatarClasses: _angular_core.Signal<string>;
2869
+ /**
2870
+ * Get aria-label for accessibility
2871
+ */
2872
+ ariaLabel: _angular_core.Signal<string>;
2873
+ /**
2874
+ * Check if image should be displayed
2875
+ */
2876
+ showImage: _angular_core.Signal<boolean | "" | undefined>;
2877
+ /** Track if image failed to load */
2878
+ protected imageError: _angular_core.WritableSignal<boolean>;
2879
+ /**
2880
+ * Handle image load error
2881
+ */
2882
+ onImageError(): void;
2883
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AvatarComponent, never>;
2884
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AvatarComponent, "lc-avatar", never, { "src": { "alias": "src"; "required": false; "isSignal": true; }; "alt": { "alias": "alt"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2885
+ }
2886
+
2887
+ type BadgeVariant = 'default' | 'primary' | 'success' | 'warning' | 'error' | 'info';
2888
+ type BadgeSize = 'xs' | 'sm' | 'md' | 'lg';
2889
+ /**
2890
+ * Badge Component
2891
+ *
2892
+ * A small count and labeling component used to display status, notifications, or counts.
2893
+ *
2894
+ * @example
2895
+ * ```html
2896
+ * <lc-badge variant="primary" size="md">New</lc-badge>
2897
+ * <lc-badge variant="error" size="sm" [rounded]="true">5</lc-badge>
2898
+ * ```
2899
+ */
2900
+ declare class BadgeComponent {
2901
+ /** Visual variant of the badge */
2902
+ variant: _angular_core.InputSignal<BadgeVariant>;
2903
+ /** Size of the badge */
2904
+ size: _angular_core.InputSignal<BadgeSize>;
2905
+ /** Whether the badge has fully rounded corners (pill shape) */
2906
+ rounded: _angular_core.InputSignal<boolean>;
2907
+ /**
2908
+ * Computed CSS classes for the badge
2909
+ */
2910
+ badgeClasses: _angular_core.Signal<string>;
2911
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BadgeComponent, never>;
2912
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BadgeComponent, "lc-badge", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "rounded": { "alias": "rounded"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
2913
+ }
2914
+
2915
+ type TrendDirection = 'up' | 'down' | 'flat';
2916
+ /**
2917
+ * MetricCard Component
2918
+ *
2919
+ * Displays a single KPI value with label, trend arrow, and optional icon.
2920
+ * Built on top of `lc-card` (outlined variant) for consistent card styling.
2921
+ *
2922
+ * @example
2923
+ * ```html
2924
+ * <lc-metric-card
2925
+ * label="Portfolio Equity"
2926
+ * value="$125,430"
2927
+ * trend="up"
2928
+ * trendValue="+2.4%"
2929
+ * icon="arrow-trending-up"
2930
+ * ></lc-metric-card>
2931
+ * ```
2932
+ */
2933
+ declare class MetricCardComponent {
2934
+ /** Label displayed above the value */
2935
+ label: _angular_core.InputSignal<string>;
2936
+ /** Formatted value to display */
2937
+ value: _angular_core.InputSignal<string>;
2938
+ /** Trend direction for arrow indicator */
2939
+ trend: _angular_core.InputSignal<TrendDirection>;
2940
+ /** Formatted trend value (e.g., "+2.4%") */
2941
+ trendValue: _angular_core.InputSignal<string>;
2942
+ /** Optional Heroicon name */
2943
+ icon: _angular_core.InputSignal<string>;
2944
+ /** Trend arrow character */
2945
+ trendArrow: _angular_core.Signal<"↑" | "↓" | "→">;
2946
+ /** Tailwind classes for trend color */
2947
+ trendClasses: _angular_core.Signal<"text-green-600 dark:text-green-400" | "text-red-600 dark:text-red-400" | "text-gray-500 dark:text-gray-400">;
2948
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MetricCardComponent, never>;
2949
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MetricCardComponent, "lc-metric-card", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": true; "isSignal": true; }; "trend": { "alias": "trend"; "required": false; "isSignal": true; }; "trendValue": { "alias": "trendValue"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2950
+ }
2951
+
2952
+ interface ToggleOption {
2953
+ readonly value: string;
2954
+ readonly label: string;
2955
+ readonly disabled?: boolean;
2956
+ }
2957
+ /**
2958
+ * ToggleGroup Component
2959
+ *
2960
+ * Binary or multi-option toggle with active state styling.
2961
+ * Uses Tailwind classes with dark mode support.
2962
+ *
2963
+ * @example
2964
+ * ```html
2965
+ * <lc-toggle-group
2966
+ * [options]="[{value:'1D',label:'1D'},{value:'1h',label:'1H'}]"
2967
+ * [(selected)]="interval"
2968
+ * ></lc-toggle-group>
2969
+ * ```
2970
+ */
2971
+ declare class ToggleGroupComponent {
2972
+ /** Available toggle options */
2973
+ options: _angular_core.InputSignal<readonly ToggleOption[]>;
2974
+ /** Currently selected value (two-way binding) */
2975
+ selected: _angular_core.ModelSignal<string>;
2976
+ /** Size variant */
2977
+ size: _angular_core.InputSignal<"sm" | "md" | "lg">;
2978
+ /** Emitted when selection changes */
2979
+ selectionChange: _angular_core.OutputEmitterRef<string>;
2980
+ /** Computed size class */
2981
+ sizeClass: _angular_core.Signal<string>;
2982
+ /** Select an option */
2983
+ select(option: ToggleOption): void;
2984
+ /** Check if an option is active */
2985
+ isActive(option: ToggleOption): boolean;
2986
+ /** Get button classes */
2987
+ getButtonClasses(option: ToggleOption): string;
2988
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ToggleGroupComponent, never>;
2989
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ToggleGroupComponent, "lc-toggle-group", never, { "options": { "alias": "options"; "required": true; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, { "selected": "selectedChange"; "selectionChange": "selectionChange"; }, never, never, true, never>;
2990
+ }
2991
+
2992
+ /**
2993
+ * Directive for providing a custom template to render each list item.
2994
+ *
2995
+ * @example
2996
+ * ```html
2997
+ * <lc-list [items]="runs()" (itemClick)="onRunClick($event)">
2998
+ * <ng-template lcListItem let-item>
2999
+ * <lc-badge [variant]="getStatusVariant(item.status)">{{ item.status }}</lc-badge>
3000
+ * <span>{{ item.symbol }}</span>
3001
+ * <span class="text-sm text-neutral-500">{{ item.date }}</span>
3002
+ * </ng-template>
3003
+ * </lc-list>
3004
+ * ```
3005
+ */
3006
+ declare class ListItemTemplateDirective {
3007
+ readonly template: TemplateRef<any>;
3008
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ListItemTemplateDirective, never>;
3009
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ListItemTemplateDirective, "[lcListItem]", never, {}, {}, never, never, true, never>;
3010
+ }
3011
+
3012
+ /**
3013
+ * List orientation type
3014
+ */
3015
+ type ListOrientation = 'vertical' | 'horizontal';
3016
+ /**
3017
+ * List visual variant
3018
+ * - default: flat rows (original)
3019
+ * - card: each item rendered as a mini-card with border, radius and shadow on hover
3020
+ */
3021
+ type ListVariant = 'default' | 'card';
3022
+ /**
3023
+ * List item interface
3024
+ */
3025
+ interface ListItem {
3026
+ /** Item label text */
3027
+ label: string;
3028
+ /** Optional icon identifier */
3029
+ icon?: string;
3030
+ /** Optional action label */
3031
+ action?: string;
3032
+ /** Item identifier */
3033
+ id?: string;
3034
+ /** Whether the item is disabled */
3035
+ disabled?: boolean;
3036
+ /** Any additional data */
3037
+ [key: string]: any;
3038
+ }
3039
+ /**
3040
+ * List Component
3041
+ *
3042
+ * A flexible list component that supports vertical/horizontal layouts,
3043
+ * icons, actions, and dividers.
3044
+ *
3045
+ * @example
3046
+ * ```html
3047
+ * <lc-list
3048
+ * [items]="listItems"
3049
+ * orientation="vertical"
3050
+ * [showDividers]="true"
3051
+ * (itemClick)="handleItemClick($event)"
3052
+ * (actionClick)="handleActionClick($event)"
3053
+ * />
3054
+ * ```
3055
+ */
3056
+ declare class ListComponent {
3057
+ /** Custom item template provided via lcListItem directive */
3058
+ itemTemplate?: ListItemTemplateDirective;
3059
+ /** Array of list items to display */
3060
+ items: _angular_core.InputSignal<ListItem[]>;
3061
+ /** Orientation of the list */
3062
+ orientation: _angular_core.InputSignal<ListOrientation>;
3063
+ /** Visual variant */
3064
+ variant: _angular_core.InputSignal<ListVariant>;
3065
+ /** Whether to show dividers between items */
3066
+ showDividers: _angular_core.InputSignal<boolean>;
3067
+ /** Event emitted when an item is clicked */
3068
+ readonly itemClick: _angular_core.OutputEmitterRef<ListItem>;
3069
+ /** Event emitted when an action button is clicked */
3070
+ readonly actionClick: _angular_core.OutputEmitterRef<ListItem>;
3071
+ /**
3072
+ * Computed CSS classes for the list
3073
+ */
3074
+ listClasses: _angular_core.Signal<string>;
3075
+ /**
3076
+ * Get CSS classes for a list item
3077
+ */
3078
+ getItemClasses(item: ListItem): string;
3079
+ /**
3080
+ * Handle item click
3081
+ */
3082
+ onItemClick(item: ListItem): void;
3083
+ /**
3084
+ * Handle action button click
3085
+ */
3086
+ onActionClick(item: ListItem): void;
3087
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ListComponent, never>;
3088
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ListComponent, "lc-list", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "showDividers": { "alias": "showDividers"; "required": false; "isSignal": true; }; }, { "itemClick": "itemClick"; "actionClick": "actionClick"; }, ["itemTemplate"], never, true, never>;
3089
+ }
3090
+
3091
+ type ChipVariant = 'default' | 'primary' | 'success' | 'warning' | 'error' | 'info';
3092
+ type ChipSize = 'sm' | 'md' | 'lg';
3093
+ /**
3094
+ * Chip Component
3095
+ *
3096
+ * A pill-shaped removable tag component for displaying selections, filters, or tags.
3097
+ * Supports icons, color variants, and optional delete functionality.
3098
+ *
3099
+ * @example
3100
+ * ```html
3101
+ * <lc-chip variant="primary" size="md" [removable]="true" (remove)="handleRemove()">
3102
+ * <span lcChipIcon>🏷️</span>
3103
+ * Tag Name
3104
+ * </lc-chip>
3105
+ * ```
3106
+ */
3107
+ declare class ChipComponent {
3108
+ /** Visual variant of the chip */
3109
+ variant: _angular_core.InputSignal<ChipVariant>;
3110
+ /** Size of the chip */
3111
+ size: _angular_core.InputSignal<ChipSize>;
3112
+ /** Icon name from Heroicons */
3113
+ icon: _angular_core.InputSignal<string | undefined>;
3114
+ /** Whether the chip can be removed */
3115
+ removable: _angular_core.InputSignal<boolean>;
3116
+ /** Whether the chip is disabled */
3117
+ disabled: _angular_core.InputSignal<boolean>;
3118
+ /** Emitted when the chip is removed */
3119
+ readonly remove: _angular_core.OutputEmitterRef<void>;
3120
+ /**
3121
+ * Computed CSS classes for the chip
3122
+ */
3123
+ chipClasses: _angular_core.Signal<string>;
3124
+ /**
3125
+ * Handle remove button click
3126
+ */
3127
+ onRemove(event: Event): void;
3128
+ /**
3129
+ * Handle keyboard navigation
3130
+ */
3131
+ onKeydown(event: KeyboardEvent): void;
3132
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ChipComponent, never>;
3133
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ChipComponent, "lc-chip", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "removable": { "alias": "removable"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "remove": "remove"; }, never, ["*"], true, never>;
3134
+ }
3135
+
3136
+ /**
3137
+ * Directive for defining custom cell templates in the Table component.
3138
+ *
3139
+ * @example
3140
+ * ```html
3141
+ * <lc-table [columns]="columns" [data]="data">
3142
+ * <ng-template lcTableCell="status" let-row>
3143
+ * <lc-badge [variant]="row.status">{{ row.status }}</lc-badge>
3144
+ * </ng-template>
3145
+ * </lc-table>
3146
+ * ```
3147
+ */
3148
+ declare class TableCellDirective {
3149
+ /** The column key this template applies to */
3150
+ columnKey: string;
3151
+ template: TemplateRef<any>;
3152
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TableCellDirective, never>;
3153
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TableCellDirective, "[lcTableCell]", never, { "columnKey": { "alias": "lcTableCell"; "required": false; }; }, {}, never, never, true, never>;
3154
+ }
3155
+
3156
+ interface TableColumn {
3157
+ key: string;
3158
+ label: string;
3159
+ sortable?: boolean;
3160
+ width?: string;
3161
+ /** Optional CSS class(es) applied to both th and td cells */
3162
+ cssClass?: string;
3163
+ /** Optional tooltip shown on hover over the column header */
3164
+ tooltip?: string;
3165
+ }
3166
+ interface SortEvent {
3167
+ column: string;
3168
+ direction: 'asc' | 'desc';
3169
+ }
3170
+ type TableVariant = 'default' | 'striped' | 'bordered';
3171
+ type TableSize = 'sm' | 'md' | 'lg';
3172
+ /**
3173
+ * Table Component
3174
+ *
3175
+ * A flexible, accessible data table component with sorting, variants, and responsive behavior.
3176
+ *
3177
+ * @example
3178
+ * ```html
3179
+ * <lc-table
3180
+ * [columns]="columns"
3181
+ * [data]="data"
3182
+ * variant="striped"
3183
+ * [hoverable]="true"
3184
+ * (sort)="onSort($event)">
3185
+ * </lc-table>
3186
+ *
3187
+ * <!-- With custom cell templates -->
3188
+ * <lc-table [columns]="columns" [data]="data">
3189
+ * <ng-template lcTableCell="status" let-row>
3190
+ * <lc-badge [variant]="row.status">{{ row.status }}</lc-badge>
3191
+ * </ng-template>
3192
+ * </lc-table>
3193
+ * ```
3194
+ */
3195
+ declare class TableComponent {
3196
+ /** Custom cell templates */
3197
+ cellTemplates: QueryList<TableCellDirective>;
3198
+ /** Array of column definitions */
3199
+ columns: _angular_core.InputSignal<TableColumn[]>;
3200
+ /** Array of data objects to display */
3201
+ data: _angular_core.InputSignal<Record<string, unknown>[]>;
3202
+ /** Visual variant of the table */
3203
+ variant: _angular_core.InputSignal<TableVariant>;
3204
+ /** Size of the table */
3205
+ size: _angular_core.InputSignal<TableSize>;
3206
+ /** Whether rows should highlight on hover */
3207
+ hoverable: _angular_core.InputSignal<boolean>;
3208
+ /** Whether table should be responsive (horizontal scroll on mobile) */
3209
+ responsive: _angular_core.InputSignal<boolean>;
3210
+ /** Text shown when data is empty */
3211
+ emptyText: _angular_core.InputSignal<string>;
3212
+ /** Emitted when a sortable column header is clicked */
3213
+ readonly sort: _angular_core.OutputEmitterRef<SortEvent>;
3214
+ /** Emitted when a row is clicked */
3215
+ readonly rowClick: _angular_core.OutputEmitterRef<Record<string, unknown>>;
3216
+ /**
3217
+ * Computed CSS classes for the table element
3218
+ */
3219
+ tableClasses: _angular_core.Signal<string>;
3220
+ /**
3221
+ * Computed CSS classes for the wrapper element
3222
+ */
3223
+ wrapperClasses: _angular_core.Signal<string>;
3224
+ /** Current sort state */
3225
+ protected currentSort: _angular_core.WritableSignal<{
3226
+ column: string;
3227
+ direction: "asc" | "desc";
3228
+ } | null>;
3229
+ /**
3230
+ * Handle click on a sortable column header
3231
+ */
3232
+ handleSort(columnKey: string): void;
3233
+ /**
3234
+ * Get sort state for a column
3235
+ */
3236
+ getSortState(columnKey: string): 'asc' | 'desc' | null;
3237
+ /**
3238
+ * Get aria-sort attribute value for a column
3239
+ */
3240
+ getAriaSort(columnKey: string): string | null;
3241
+ /**
3242
+ * Get CSS classes for a header cell
3243
+ */
3244
+ getHeaderClasses(column: TableColumn): string;
3245
+ /**
3246
+ * Get value from data object by column key
3247
+ */
3248
+ getCellValue(row: Record<string, unknown>, columnKey: string): unknown;
3249
+ /**
3250
+ * Get custom template for a column if it exists
3251
+ */
3252
+ getCellTemplate(columnKey: string): TableCellDirective | undefined;
3253
+ /**
3254
+ * Check if a column has a custom template
3255
+ */
3256
+ hasCustomTemplate(columnKey: string): boolean;
3257
+ /**
3258
+ * Handle row click
3259
+ */
3260
+ onRowClick(row: Record<string, unknown>): void;
3261
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TableComponent, never>;
3262
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TableComponent, "lc-table", never, { "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "hoverable": { "alias": "hoverable"; "required": false; "isSignal": true; }; "responsive": { "alias": "responsive"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; }, { "sort": "sort"; "rowClick": "rowClick"; }, ["cellTemplates"], never, true, never>;
3263
+ }
3264
+
3265
+ /**
3266
+ * Field Group component for displaying label-value pairs in a consistent format.
3267
+ * Useful for read-only data displays like profile pages, detail views, etc.
3268
+ *
3269
+ * @example Basic usage
3270
+ * ```html
3271
+ * <lc-field-group label="Email" value="user@example.com"></lc-field-group>
3272
+ * ```
3273
+ *
3274
+ * @example With icon
3275
+ * ```html
3276
+ * <lc-field-group
3277
+ * label="Language"
3278
+ * value="English (US)"
3279
+ * icon="globe-alt">
3280
+ * </lc-field-group>
3281
+ * ```
3282
+ *
3283
+ * @example With custom content via projection
3284
+ * ```html
3285
+ * <lc-field-group label="Status" icon="check-circle">
3286
+ * <span class="status-badge">Active</span>
3287
+ * </lc-field-group>
3288
+ * ```
3289
+ */
3290
+ declare class FieldGroupComponent {
3291
+ /**
3292
+ * Label text displayed above the value
3293
+ */
3294
+ label: _angular_core.InputSignal<string>;
3295
+ /**
3296
+ * Value text to display (optional if using content projection)
3297
+ */
3298
+ value: _angular_core.InputSignal<string | undefined>;
3299
+ /**
3300
+ * Optional icon name from Heroicons
3301
+ */
3302
+ icon: _angular_core.InputSignal<string | undefined>;
3303
+ /**
3304
+ * Icon size
3305
+ * @default 'sm'
3306
+ */
3307
+ iconSize: _angular_core.InputSignal<"xs" | "sm" | "md">;
3308
+ /**
3309
+ * Use compact styling with less padding
3310
+ * @default false
3311
+ */
3312
+ compact: _angular_core.InputSignal<boolean>;
3313
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<FieldGroupComponent, never>;
3314
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<FieldGroupComponent, "lc-field-group", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "iconSize": { "alias": "iconSize"; "required": false; "isSignal": true; }; "compact": { "alias": "compact"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
3315
+ }
3316
+
3317
+ interface StepperStep {
3318
+ readonly label: string;
3319
+ readonly description?: string;
3320
+ readonly optional?: boolean;
3321
+ }
3322
+ type StepState = 'pending' | 'active' | 'completed';
3323
+ /**
3324
+ * Stepper Component
3325
+ *
3326
+ * Step-by-step wizard with numbered steps, active/completed/pending states.
3327
+ * Emits events when user navigates between steps.
3328
+ *
3329
+ * @example
3330
+ * ```html
3331
+ * <lc-stepper
3332
+ * [steps]="steps"
3333
+ * [(activeStep)]="currentStep"
3334
+ * (stepChange)="onStep($event)"
3335
+ * >
3336
+ * @if (currentStep === 0) {
3337
+ * <div class="step-content">Step 1 content</div>
3338
+ * }
3339
+ * @if (currentStep === 1) {
3340
+ * <div class="step-content">Step 2 content</div>
3341
+ * }
3342
+ * </lc-stepper>
3343
+ * ```
3344
+ */
3345
+ declare class StepperComponent {
3346
+ /** Step definitions */
3347
+ steps: _angular_core.InputSignal<readonly StepperStep[]>;
3348
+ /** Active step index (0-based, two-way binding) */
3349
+ activeStep: _angular_core.ModelSignal<number>;
3350
+ /** Whether completed steps can be clicked to navigate back */
3351
+ linear: _angular_core.InputSignal<boolean>;
3352
+ /** Orientation */
3353
+ orientation: _angular_core.InputSignal<"vertical" | "horizontal">;
3354
+ /** Emitted when active step changes */
3355
+ stepChange: _angular_core.OutputEmitterRef<number>;
3356
+ /** Computed total step count */
3357
+ totalSteps: _angular_core.Signal<number>;
3358
+ /** Whether we're on the first step */
3359
+ isFirstStep: _angular_core.Signal<boolean>;
3360
+ /** Whether we're on the last step */
3361
+ isLastStep: _angular_core.Signal<boolean>;
3362
+ /** Get the state of a step */
3363
+ getStepState(index: number): StepState;
3364
+ /** Navigate to a specific step (only if completed or next) */
3365
+ goToStep(index: number): void;
3366
+ /** Go to next step */
3367
+ next(): void;
3368
+ /** Go to previous step */
3369
+ previous(): void;
3370
+ /** Get CSS classes for step indicator */
3371
+ getStepClasses(index: number): string;
3372
+ /** Get CSS classes for connector line */
3373
+ getConnectorClasses(index: number): string;
3374
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<StepperComponent, never>;
3375
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<StepperComponent, "lc-stepper", never, { "steps": { "alias": "steps"; "required": true; "isSignal": true; }; "activeStep": { "alias": "activeStep"; "required": false; "isSignal": true; }; "linear": { "alias": "linear"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; }, { "activeStep": "activeStepChange"; "stepChange": "stepChange"; }, never, ["*"], true, never>;
3376
+ }
3377
+
3378
+ /**
3379
+ * Configuration for a single filter in the FilterBar.
3380
+ */
3381
+ interface FilterConfig {
3382
+ /** Unique key for this filter */
3383
+ readonly key: string;
3384
+ /** Display label */
3385
+ readonly label: string;
3386
+ /** Filter type */
3387
+ readonly type: 'select' | 'toggle' | 'search';
3388
+ /** Available options for select/toggle types */
3389
+ readonly options?: readonly FilterOption[];
3390
+ /** Placeholder text (for search type) */
3391
+ readonly placeholder?: string;
3392
+ }
3393
+ interface FilterOption {
3394
+ readonly value: string;
3395
+ readonly label: string;
3396
+ readonly disabled?: boolean;
3397
+ }
3398
+ interface FilterValues {
3399
+ [key: string]: string;
3400
+ }
3401
+ /**
3402
+ * FilterBar Component
3403
+ *
3404
+ * Composable filter bar that combines selects, toggle groups, and search
3405
+ * in a responsive horizontal layout. Ideal for list pages.
3406
+ *
3407
+ * @example
3408
+ * ```html
3409
+ * <lc-filter-bar
3410
+ * [filters]="filterConfig"
3411
+ * [values]="currentFilters"
3412
+ * (valuesChange)="onFilterChange($event)"
3413
+ * ></lc-filter-bar>
3414
+ * ```
3415
+ */
3416
+ declare class FilterBarComponent {
3417
+ /** Filter configurations */
3418
+ filters: _angular_core.InputSignal<readonly FilterConfig[]>;
3419
+ /** Current filter values (two-way bindable) */
3420
+ values: _angular_core.InputSignal<FilterValues>;
3421
+ /** Size variant */
3422
+ size: _angular_core.InputSignal<"sm" | "md">;
3423
+ /** Emitted when any filter value changes */
3424
+ valuesChange: _angular_core.OutputEmitterRef<FilterValues>;
3425
+ /** Computed size class */
3426
+ sizeClass: _angular_core.Signal<string>;
3427
+ /** Get the current value for a filter key */
3428
+ getValue(key: string): string;
3429
+ /** Handle select / toggle change */
3430
+ onFilterChange(key: string, value: string): void;
3431
+ /** Handle search input */
3432
+ onSearchInput(key: string, event: Event): void;
3433
+ /** Check if a toggle option is active */
3434
+ isToggleActive(key: string, optionValue: string): boolean;
3435
+ /** Get toggle button classes */
3436
+ getToggleClasses(key: string, option: FilterOption): string;
3437
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<FilterBarComponent, never>;
3438
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<FilterBarComponent, "lc-filter-bar", never, { "filters": { "alias": "filters"; "required": true; "isSignal": true; }; "values": { "alias": "values"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, { "valuesChange": "valuesChange"; }, never, never, true, never>;
3439
+ }
3440
+
3441
+ type SpinnerSize = 'sm' | 'md' | 'lg';
3442
+ /**
3443
+ * Spinner component for loading states.
3444
+ *
3445
+ * Displays a spinning indicator with an optional message.
3446
+ * Supports three sizes and respects the design-system color tokens.
3447
+ *
3448
+ * @example
3449
+ * ```html
3450
+ * <!-- Simple spinner -->
3451
+ * <lc-spinner />
3452
+ *
3453
+ * <!-- With message -->
3454
+ * <lc-spinner message="Loading data..." />
3455
+ *
3456
+ * <!-- Large spinner -->
3457
+ * <lc-spinner size="lg" message="Loading dashboard..." />
3458
+ * ```
3459
+ */
3460
+ declare class SpinnerComponent {
3461
+ /**
3462
+ * Size of the spinner
3463
+ * @default 'md'
3464
+ */
3465
+ readonly size: _angular_core.InputSignal<SpinnerSize>;
3466
+ /**
3467
+ * Optional loading message displayed below the spinner
3468
+ */
3469
+ readonly message: _angular_core.InputSignal<string | undefined>;
3470
+ protected readonly hostClasses: _angular_core.Signal<string>;
3471
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SpinnerComponent, never>;
3472
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SpinnerComponent, "lc-spinner", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3473
+ }
3474
+
3475
+ type SkeletonVariant = 'line' | 'circle' | 'rect';
3476
+ /**
3477
+ * Skeleton loader component for placeholder loading states.
3478
+ *
3479
+ * Renders a shimmer-animated placeholder block. Use multiple instances
3480
+ * to compose loading skeletons that match your page layout.
3481
+ *
3482
+ * @example
3483
+ * ```html
3484
+ * <!-- Text line (default) -->
3485
+ * <lc-skeleton />
3486
+ *
3487
+ * <!-- Custom width/height -->
3488
+ * <lc-skeleton width="200px" height="1.75rem" />
3489
+ *
3490
+ * <!-- Circle avatar placeholder -->
3491
+ * <lc-skeleton variant="circle" width="40px" height="40px" />
3492
+ *
3493
+ * <!-- Full-width rectangle (e.g. chart area) -->
3494
+ * <lc-skeleton variant="rect" width="100%" height="400px" borderRadius="0.5rem" />
3495
+ * ```
3496
+ */
3497
+ declare class SkeletonComponent {
3498
+ /** Shape variant. */
3499
+ readonly variant: _angular_core.InputSignal<SkeletonVariant>;
3500
+ /** Width (CSS value). Defaults to '100%' for line/rect, '40px' for circle. */
3501
+ readonly width: _angular_core.InputSignal<string | undefined>;
3502
+ /** Height (CSS value). Defaults to '0.875rem' for line, '40px' for circle, '100px' for rect. */
3503
+ readonly height: _angular_core.InputSignal<string | undefined>;
3504
+ /** Border radius override (CSS value). */
3505
+ readonly borderRadius: _angular_core.InputSignal<string | undefined>;
3506
+ protected readonly variantClass: _angular_core.Signal<string>;
3507
+ protected readonly styles: _angular_core.Signal<{
3508
+ width: string;
3509
+ height: string;
3510
+ 'border-radius': string;
3511
+ }>;
3512
+ get hostWidth(): string;
3513
+ get hostFlexShrink(): string;
3514
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SkeletonComponent, never>;
3515
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SkeletonComponent, "lc-skeleton", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "borderRadius": { "alias": "borderRadius"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3516
+ }
3517
+
3518
+ type EmptyStateSize = 'sm' | 'md' | 'lg';
3519
+ /**
3520
+ * Empty-state component for "no data" placeholders.
3521
+ *
3522
+ * Supports a compact inline mode (inside cards) and a larger page-level mode.
3523
+ * An optional icon, heading, description, and projected action slot are supported.
3524
+ *
3525
+ * @example
3526
+ * ```html
3527
+ * <!-- Inline / card-level (sm) -->
3528
+ * <lc-empty-state
3529
+ * size="sm"
3530
+ * message="No signals generated for this asset yet." />
3531
+ *
3532
+ * <!-- Page-level with icon + action -->
3533
+ * <lc-empty-state
3534
+ * icon="chart-bar"
3535
+ * heading="No Paper Trading Portfolios"
3536
+ * message="Portfolios are created automatically when strategies are promoted."
3537
+ * >
3538
+ * <lc-button variant="primary">Get Started</lc-button>
3539
+ * </lc-empty-state>
3540
+ * ```
3541
+ */
3542
+ declare class EmptyStateComponent {
3543
+ /**
3544
+ * Size variant
3545
+ * - `sm`: compact inline (inside cards), no padding
3546
+ * - `md`: standard centered block (default)
3547
+ * - `lg`: large page-level with extra padding
3548
+ * @default 'md'
3549
+ */
3550
+ readonly size: _angular_core.InputSignal<EmptyStateSize>;
3551
+ /**
3552
+ * Heroicon name to display above the heading
3553
+ */
3554
+ readonly icon: _angular_core.InputSignal<string | undefined>;
3555
+ /**
3556
+ * Bold heading text
3557
+ */
3558
+ readonly heading: _angular_core.InputSignal<string | undefined>;
3559
+ /**
3560
+ * Description text
3561
+ */
3562
+ readonly message: _angular_core.InputSignal<string | undefined>;
3563
+ protected readonly hostClasses: _angular_core.Signal<string>;
3564
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<EmptyStateComponent, never>;
3565
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<EmptyStateComponent, "lc-empty-state", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "heading": { "alias": "heading"; "required": false; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
3566
+ }
3567
+
3568
+ type DrawerPosition = 'left' | 'right';
3569
+ type DrawerSize = 'sm' | 'md' | 'lg' | 'xl';
3570
+ /**
3571
+ * Drawer Component — a slide-out overlay panel for supplementary content.
3572
+ *
3573
+ * Unlike the Sidenav (which renders navigation items), the Drawer
3574
+ * accepts arbitrary projected content via `<ng-content>`, making it
3575
+ * ideal for settings panels, filters, detail views, etc.
3576
+ *
3577
+ * @example
3578
+ * ```html
3579
+ * <lc-drawer [open]="showPanel" position="right" size="md"
3580
+ * heading="Settings" (closed)="showPanel = false">
3581
+ * <p>Any content goes here</p>
3582
+ * </lc-drawer>
3583
+ * ```
3584
+ */
3585
+ declare class DrawerComponent {
3586
+ /** Whether the drawer is open. */
3587
+ readonly open: _angular_core.InputSignal<boolean>;
3588
+ /** Slide-in direction. */
3589
+ readonly position: _angular_core.InputSignal<DrawerPosition>;
3590
+ /** Predefined width (sm=320, md=400, lg=520, xl=640). */
3591
+ readonly size: _angular_core.InputSignal<DrawerSize>;
3592
+ /** Optional heading shown in the drawer header. */
3593
+ readonly heading: _angular_core.InputSignal<string>;
3594
+ /** Whether the overlay backdrop is shown. */
3595
+ readonly hasOverlay: _angular_core.InputSignal<boolean>;
3596
+ /** Whether clicking the overlay closes the drawer. */
3597
+ readonly closeOnOverlayClick: _angular_core.InputSignal<boolean>;
3598
+ /** Whether pressing Escape closes the drawer. */
3599
+ readonly closeOnEscape: _angular_core.InputSignal<boolean>;
3600
+ /** ARIA label for assistive technology. */
3601
+ readonly ariaLabel: _angular_core.InputSignal<string>;
3602
+ /** Emitted when the drawer should close. */
3603
+ readonly closed: _angular_core.OutputEmitterRef<void>;
3604
+ /** Internal visibility — drives the animation lifecycle. */
3605
+ protected _visible: _angular_core.WritableSignal<boolean>;
3606
+ protected _animating: _angular_core.WritableSignal<boolean>;
3607
+ constructor();
3608
+ /** Width token → CSS. */
3609
+ protected get widthValue(): string;
3610
+ protected get panelClasses(): string;
3611
+ /** Handle backdrop click. */
3612
+ protected onOverlayClick(): void;
3613
+ /** Handle close action. */
3614
+ protected close(): void;
3615
+ protected onKeydown(event: KeyboardEvent): void;
3616
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DrawerComponent, never>;
3617
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DrawerComponent, "lc-drawer", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "heading": { "alias": "heading"; "required": false; "isSignal": true; }; "hasOverlay": { "alias": "hasOverlay"; "required": false; "isSignal": true; }; "closeOnOverlayClick": { "alias": "closeOnOverlayClick"; "required": false; "isSignal": true; }; "closeOnEscape": { "alias": "closeOnEscape"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "closed": "closed"; }, never, ["*"], true, never>;
3618
+ }
3619
+
3620
+ export { AccordionComponent, AlertComponent, AnimationDurationFast, AnimationEasingEaseIn, AnimationEasingEaseInOut, AnimationEasingEaseOut, AvatarComponent, BadgeComponent, BorderRadius2xl, BorderRadiusFull, BorderRadiusLg, BorderRadiusMd, BorderRadiusNone, BorderRadiusSm, BorderRadiusXl, BreadcrumbsComponent, ButtonComponent, CardComponent, CheckboxComponent, ChipComponent, ColorAccentOrange, ColorAccentPurple, ColorAccentRed, ColorAccentRust, ColorAccentViolet, ColorErrorDark, ColorErrorDefault, ColorErrorLight, ColorInfoDark, ColorInfoDefault, ColorInfoLight, ColorNeutral100, ColorNeutral200, ColorNeutral300, ColorNeutral400, ColorNeutral50, ColorNeutral500, ColorNeutral600, ColorNeutral700, ColorNeutral800, ColorNeutral900, ColorPrimary100, ColorPrimary200, ColorPrimary300, ColorPrimary400, ColorPrimary50, ColorPrimary500, ColorPrimary600, ColorPrimary700, ColorPrimary800, ColorPrimary900, ColorSecondary100, ColorSecondary200, ColorSecondary300, ColorSecondary400, ColorSecondary50, ColorSecondary500, ColorSecondary600, ColorSecondary700, ColorSecondary800, ColorSecondary900, ColorSuccessDark, ColorSuccessDefault, ColorSuccessLight, ColorWarningDark, ColorWarningDefault, ColorWarningLight, ContainerComponent, DatepickerComponent, DrawerComponent, Elevation1, Elevation2, Elevation3, Elevation4, EmailInputComponent, EmptyStateComponent, ErrorDisplayComponent, FieldGroupComponent, FilterBarComponent, HeaderComponent, IconComponent, InputComponent, ListComponent, ListItemTemplateDirective, LogoComponent, MenuComponent, MetricCardComponent, ModalComponent, PaginationComponent, PasswordInputComponent, RadioComponent, SectionComponent, SelectComponent, SidenavComponent, SizeInteractiveLgFontSize, SizeInteractiveLgHeight, SizeInteractiveLgPadding, SizeInteractiveMdFontSize, SizeInteractiveMdHeight, SizeInteractiveMdPadding, SizeInteractiveSmFontSize, SizeInteractiveSmHeight, SizeInteractiveSmPadding, SizeInteractiveXsFontSize, SizeInteractiveXsHeight, SizeInteractiveXsPadding, SizeMinTouchHeight, SizeMinTouchWidth, SkeletonComponent, SpacerComponent, Spacing0, Spacing05, Spacing1, Spacing10, Spacing11, Spacing12, Spacing14, Spacing15, Spacing16, Spacing2, Spacing25, Spacing3, Spacing35, Spacing4, Spacing5, Spacing6, Spacing7, Spacing8, Spacing9, SpinnerComponent, StackComponent, StepperComponent, SwitchComponent, TabComponent, TableCellDirective, TableComponent, TabsComponent, TextareaComponent, ThemeService, ToastComponent, ToastService, ToggleGroupComponent, TooltipContentComponent, TooltipDirective, TypographyComponent, TypographyFontFamilyBase, TypographyFontFamilyMono, TypographyFontSize2xl, TypographyFontSize3xl, TypographyFontSize4xl, TypographyFontSize5xl, TypographyFontSize6xl, TypographyFontSizeBase, TypographyFontSizeLg, TypographyFontSizeSm, TypographyFontSizeXl, TypographyFontSizeXs, TypographyFontWeightBold, TypographyFontWeightMedium, TypographyFontWeightNormal, TypographyFontWeightSemibold, TypographyLineHeightNormal, TypographyLineHeightRelaxed, TypographyLineHeightTight, VerificationCodeInputComponent };
3621
+ export type { AlertVariant, AvatarSize, AvatarStatus, BadgeSize, BadgeVariant, BreadcrumbItem, BreadcrumbSize, ButtonSize, ButtonType, ButtonVariant, CheckboxSize, ChipSize, ChipVariant, ContainerSize, DateValue, DrawerPosition, DrawerSize, EmptyStateSize, ErrorSeverity, FilterConfig, FilterOption, FilterValues, IconSize, IconVariant, ListItem, ListOrientation, ListVariant, MenuItem, ModalSize, NavigationItem, PaginationSize, PasswordRequirement, PasswordStrength, RadioSize, SectionBackground, SectionSpacing, SelectOption, SelectOptionGroup, SelectValue, SidenavMode, SidenavPosition, SkeletonVariant, SortEvent, SpacerSize, SpinnerSize, StackAlign, StackDirection, StackGap, StackJustify, StepState, StepperStep, TabOrientation, TableColumn, TableSize, TableVariant, ThemeConfig, ThemeMode, ThemeState, Toast, ToastAction, ToastConfig, ToastPosition, ToastVariant, ToggleOption, TooltipPosition, TrendDirection };