@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 @@
1
+ {"version":3,"file":"life-cockpit-angular-ui-kit.mjs","sources":["../../../../libs/angular-ui-kit/src/lib/tokens/index.ts","../../../../libs/angular-ui-kit/src/lib/theme/theme.types.ts","../../../../libs/angular-ui-kit/src/lib/theme/theme.service.ts","../../../../libs/angular-ui-kit/src/lib/icon/icon.component.ts","../../../../libs/angular-ui-kit/src/lib/icon/icon.component.html","../../../../libs/angular-ui-kit/src/lib/accordion/accordion.component.ts","../../../../libs/angular-ui-kit/src/lib/accordion/accordion.component.html","../../../../libs/angular-ui-kit/src/lib/button/button.component.ts","../../../../libs/angular-ui-kit/src/lib/button/button.component.html","../../../../libs/angular-ui-kit/src/lib/card/card.component.ts","../../../../libs/angular-ui-kit/src/lib/card/card.component.html","../../../../libs/angular-ui-kit/src/lib/checkbox/checkbox.component.ts","../../../../libs/angular-ui-kit/src/lib/checkbox/checkbox.component.html","../../../../libs/angular-ui-kit/src/lib/logo/logo.component.ts","../../../../libs/angular-ui-kit/src/lib/logo/logo.component.html","../../../../libs/angular-ui-kit/src/lib/menu/menu.component.ts","../../../../libs/angular-ui-kit/src/lib/menu/menu.component.html","../../../../libs/angular-ui-kit/src/lib/input/input.component.ts","../../../../libs/angular-ui-kit/src/lib/input/input.component.html","../../../../libs/angular-ui-kit/src/lib/radio/radio.component.ts","../../../../libs/angular-ui-kit/src/lib/radio/radio.component.html","../../../../libs/angular-ui-kit/src/lib/typography/typography.component.ts","../../../../libs/angular-ui-kit/src/lib/typography/typography.component.html","../../../../libs/angular-ui-kit/src/lib/datepicker/datepicker.component.ts","../../../../libs/angular-ui-kit/src/lib/datepicker/datepicker.component.html","../../../../libs/angular-ui-kit/src/lib/select/select.component.ts","../../../../libs/angular-ui-kit/src/lib/select/select.component.html","../../../../libs/angular-ui-kit/src/lib/switch/switch.component.ts","../../../../libs/angular-ui-kit/src/lib/switch/switch.component.html","../../../../libs/angular-ui-kit/src/lib/textarea/textarea.component.ts","../../../../libs/angular-ui-kit/src/lib/textarea/textarea.component.html","../../../../libs/angular-ui-kit/src/lib/alert/alert.component.ts","../../../../libs/angular-ui-kit/src/lib/alert/alert.component.html","../../../../libs/angular-ui-kit/src/lib/password-input/password-input.component.ts","../../../../libs/angular-ui-kit/src/lib/password-input/password-input.component.html","../../../../libs/angular-ui-kit/src/lib/verification-code-input/verification-code-input.component.ts","../../../../libs/angular-ui-kit/src/lib/verification-code-input/verification-code-input.component.html","../../../../libs/angular-ui-kit/src/lib/email-input/email-input.component.ts","../../../../libs/angular-ui-kit/src/lib/email-input/email-input.component.html","../../../../libs/angular-ui-kit/src/lib/container/container.component.ts","../../../../libs/angular-ui-kit/src/lib/container/container.component.html","../../../../libs/angular-ui-kit/src/lib/section/section.component.ts","../../../../libs/angular-ui-kit/src/lib/section/section.component.html","../../../../libs/angular-ui-kit/src/lib/spacer/spacer.component.ts","../../../../libs/angular-ui-kit/src/lib/spacer/spacer.component.html","../../../../libs/angular-ui-kit/src/lib/stack/stack.component.ts","../../../../libs/angular-ui-kit/src/lib/stack/stack.component.html","../../../../libs/angular-ui-kit/src/lib/error-display/error-display.component.ts","../../../../libs/angular-ui-kit/src/lib/error-display/error-display.component.html","../../../../libs/angular-ui-kit/src/lib/toast/toast.service.ts","../../../../libs/angular-ui-kit/src/lib/toast/toast.component.ts","../../../../libs/angular-ui-kit/src/lib/toast/toast.component.html","../../../../libs/angular-ui-kit/src/lib/modal/modal.component.ts","../../../../libs/angular-ui-kit/src/lib/modal/modal.component.html","../../../../libs/angular-ui-kit/src/lib/tooltip/tooltip.directive.ts","../../../../libs/angular-ui-kit/src/lib/breadcrumbs/breadcrumbs.component.ts","../../../../libs/angular-ui-kit/src/lib/breadcrumbs/breadcrumbs.component.html","../../../../libs/angular-ui-kit/src/lib/avatar/avatar.component.ts","../../../../libs/angular-ui-kit/src/lib/avatar/avatar.component.html","../../../../libs/angular-ui-kit/src/lib/header/header.component.ts","../../../../libs/angular-ui-kit/src/lib/header/header.component.html","../../../../libs/angular-ui-kit/src/lib/pagination/pagination.component.ts","../../../../libs/angular-ui-kit/src/lib/pagination/pagination.component.html","../../../../libs/angular-ui-kit/src/lib/sidenav/sidenav.component.ts","../../../../libs/angular-ui-kit/src/lib/sidenav/sidenav.component.html","../../../../libs/angular-ui-kit/src/lib/tabs/tabs.component.ts","../../../../libs/angular-ui-kit/src/lib/tabs/tabs.component.html","../../../../libs/angular-ui-kit/src/lib/badge/badge.component.ts","../../../../libs/angular-ui-kit/src/lib/badge/badge.component.html","../../../../libs/angular-ui-kit/src/lib/metric-card/metric-card.component.ts","../../../../libs/angular-ui-kit/src/lib/metric-card/metric-card.component.html","../../../../libs/angular-ui-kit/src/lib/toggle-group/toggle-group.component.ts","../../../../libs/angular-ui-kit/src/lib/toggle-group/toggle-group.component.html","../../../../libs/angular-ui-kit/src/lib/list/list-item-template.directive.ts","../../../../libs/angular-ui-kit/src/lib/list/list.component.ts","../../../../libs/angular-ui-kit/src/lib/list/list.component.html","../../../../libs/angular-ui-kit/src/lib/chip/chip.component.ts","../../../../libs/angular-ui-kit/src/lib/chip/chip.component.html","../../../../libs/angular-ui-kit/src/lib/table/table-cell.directive.ts","../../../../libs/angular-ui-kit/src/lib/table/table.component.ts","../../../../libs/angular-ui-kit/src/lib/table/table.component.html","../../../../libs/angular-ui-kit/src/lib/field-group/field-group.component.ts","../../../../libs/angular-ui-kit/src/lib/field-group/field-group.component.html","../../../../libs/angular-ui-kit/src/lib/stepper/stepper.component.ts","../../../../libs/angular-ui-kit/src/lib/stepper/stepper.component.html","../../../../libs/angular-ui-kit/src/lib/filter-bar/filter-bar.component.ts","../../../../libs/angular-ui-kit/src/lib/filter-bar/filter-bar.component.html","../../../../libs/angular-ui-kit/src/lib/spinner/spinner.component.ts","../../../../libs/angular-ui-kit/src/lib/spinner/spinner.component.html","../../../../libs/angular-ui-kit/src/lib/skeleton/skeleton.component.ts","../../../../libs/angular-ui-kit/src/lib/skeleton/skeleton.component.html","../../../../libs/angular-ui-kit/src/lib/empty-state/empty-state.component.ts","../../../../libs/angular-ui-kit/src/lib/empty-state/empty-state.component.html","../../../../libs/angular-ui-kit/src/lib/drawer/drawer.component.ts","../../../../libs/angular-ui-kit/src/lib/drawer/drawer.component.html","../../../../libs/angular-ui-kit/src/index.ts","../../../../libs/angular-ui-kit/src/life-cockpit-angular-ui-kit.ts"],"sourcesContent":["/**\n * Do not edit directly, this file was auto-generated.\n */\n\nexport const ColorPrimary50 = '#f0f8fa';\nexport const ColorPrimary100 = '#e0f1f4';\nexport const ColorPrimary200 = '#c1e3e9';\nexport const ColorPrimary300 = '#a3d5df';\nexport const ColorPrimary400 = '#84c7d4';\nexport const ColorPrimary500 = '#208497'; // Primary brand color from lc-design\nexport const ColorPrimary600 = '#1a6a79';\nexport const ColorPrimary700 = '#144f5b';\nexport const ColorPrimary800 = '#0d353d';\nexport const ColorPrimary900 = '#071a1f';\nexport const ColorSecondary50 = '#f5f8f9';\nexport const ColorSecondary100 = '#ebf1f3';\nexport const ColorSecondary200 = '#d7e3e7';\nexport const ColorSecondary300 = '#c3d5db';\nexport const ColorSecondary400 = '#afc7cf';\nexport const ColorSecondary500 = '#7097af'; // Secondary brand color from lc-design\nexport const ColorSecondary600 = '#5a798c';\nexport const ColorSecondary700 = '#435b69';\nexport const ColorSecondary800 = '#2d3c46';\nexport const ColorSecondary900 = '#161e23';\nexport const ColorNeutral50 = '#f9fafb';\nexport const ColorNeutral100 = '#f3f4f6';\nexport const ColorNeutral200 = '#e5e7eb';\nexport const ColorNeutral300 = '#d1d5db';\nexport const ColorNeutral400 = '#9ca3af';\nexport const ColorNeutral500 = '#6b7280';\nexport const ColorNeutral600 = '#4b5563';\nexport const ColorNeutral700 = '#374151';\nexport const ColorNeutral800 = '#1f2937';\nexport const ColorNeutral900 = '#111827';\nexport const ColorSuccessDefault = '#8ea475';\nexport const ColorSuccessLight = '#cdd6c2';\nexport const ColorSuccessDark = '#5f7150';\nexport const ColorErrorDefault = '#9d0e0e';\nexport const ColorErrorLight = '#f7a1a1';\nexport const ColorErrorDark = '#6b0909';\nexport const ColorWarningDefault = '#e1a040';\nexport const ColorWarningLight = '#f1d3a7';\nexport const ColorWarningDark = '#9b6b2b';\nexport const ColorInfoDefault = '#3b6588';\nexport const ColorInfoLight = '#b8cee0';\nexport const ColorInfoDark = '#27445c';\nexport const ColorAccentOrange = '#df792e';\nexport const ColorAccentPurple = '#866aa0';\nexport const ColorAccentRed = '#9e3846';\nexport const ColorAccentRust = '#c6592e';\nexport const ColorAccentViolet = '#4e3f84';\nexport const Spacing0 = '0';\nexport const Spacing1 = '0.25rem'; // 4px - Base grid unit\nexport const Spacing2 = '0.5rem'; // 8px\nexport const Spacing3 = '0.75rem'; // 12px\nexport const Spacing4 = '1rem'; // 16px\nexport const Spacing5 = '1.25rem'; // 20px\nexport const Spacing6 = '1.5rem'; // 24px\nexport const Spacing7 = '1.75rem'; // 28px\nexport const Spacing8 = '2rem'; // 32px\nexport const Spacing9 = '2.25rem'; // 36px\nexport const Spacing10 = '2.5rem'; // 40px\nexport const Spacing11 = '2.75rem'; // 44px - Minimum touch target\nexport const Spacing12 = '3rem'; // 48px\nexport const Spacing14 = '3.5rem'; // 56px\nexport const Spacing16 = '4rem'; // 64px\nexport const Spacing05 = '0.125rem'; // 2px\nexport const Spacing15 = '0.375rem'; // 6px\nexport const Spacing25 = '0.625rem'; // 10px\nexport const Spacing35 = '0.875rem'; // 14px\nexport const TypographyFontFamilyBase =\n \"-apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif\";\nexport const TypographyFontFamilyMono =\n \"'SF Mono', 'Monaco', 'Inconsolata', 'Fira Mono', 'Droid Sans Mono', 'Source Code Pro', monospace\";\nexport const TypographyFontSizeXs = '0.75rem'; // 12px\nexport const TypographyFontSizeSm = '0.875rem'; // 14px\nexport const TypographyFontSizeBase = '1rem'; // 16px\nexport const TypographyFontSizeLg = '1.125rem'; // 18px\nexport const TypographyFontSizeXl = '1.25rem'; // 20px\nexport const TypographyFontSize2xl = '1.5rem'; // 24px\nexport const TypographyFontSize3xl = '1.875rem'; // 30px\nexport const TypographyFontSize4xl = '2.25rem'; // 36px\nexport const TypographyFontSize5xl = '3rem'; // 48px\nexport const TypographyFontSize6xl = '3.75rem'; // 60px\nexport const TypographyFontWeightNormal = '400';\nexport const TypographyFontWeightMedium = '500';\nexport const TypographyFontWeightSemibold = '600';\nexport const TypographyFontWeightBold = '700';\nexport const TypographyLineHeightTight = '1.25';\nexport const TypographyLineHeightNormal = '1.5';\nexport const TypographyLineHeightRelaxed = '1.75';\nexport const Elevation1 = '0 1px 2px 0 rgba(0, 0, 0, 0.05)'; // Subtle elevation for cards\nexport const Elevation2 = '0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)'; // Medium elevation for dropdowns\nexport const Elevation3 = '0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)'; // High elevation for modals\nexport const Elevation4 =\n '0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)'; // Highest elevation for tooltips\nexport const BorderRadiusNone = '0';\nexport const BorderRadiusSm = '0.25rem'; // 4px\nexport const BorderRadiusMd = '0.5rem'; // 8px - Default\nexport const BorderRadiusLg = '0.75rem'; // 12px\nexport const BorderRadiusXl = '1rem'; // 16px\nexport const BorderRadius2xl = '1.5rem'; // 24px\nexport const BorderRadiusFull = '9999px'; // Fully rounded\nexport const AnimationDurationFast = '150ms'; // Standard animation duration\nexport const AnimationEasingEaseIn = 'ease-in';\nexport const AnimationEasingEaseOut = 'ease-out';\nexport const AnimationEasingEaseInOut = 'ease-in-out';\nexport const SizeInteractiveXsHeight = '1.5rem'; // 24px\nexport const SizeInteractiveXsPadding = '0.25rem 0.5rem';\nexport const SizeInteractiveXsFontSize = '0.75rem';\nexport const SizeInteractiveSmHeight = '2rem'; // 32px\nexport const SizeInteractiveSmPadding = '0.375rem 0.75rem';\nexport const SizeInteractiveSmFontSize = '0.875rem';\nexport const SizeInteractiveMdHeight = '2.5rem'; // 40px - Default\nexport const SizeInteractiveMdPadding = '0.5rem 1rem';\nexport const SizeInteractiveMdFontSize = '1rem';\nexport const SizeInteractiveLgHeight = '2.75rem'; // 44px - Minimum touch target\nexport const SizeInteractiveLgPadding = '0.625rem 1.25rem';\nexport const SizeInteractiveLgFontSize = '1.125rem';\nexport const SizeMinTouchWidth = '2.75rem'; // 44px minimum\nexport const SizeMinTouchHeight = '2.75rem'; // 44px minimum\n","/**\n * Theme Types\n * Defines theme modes and configuration interfaces\n */\n\nexport type ThemeMode = 'light' | 'dark';\n\nexport interface ThemeConfig {\n mode: ThemeMode;\n autoDetect?: boolean;\n}\n\nexport interface ThemeState {\n currentMode: ThemeMode;\n prefersDark: boolean;\n}\n","import { Injectable, signal, PLATFORM_ID, inject } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport type { ThemeMode, ThemeState } from './theme.types';\n\n/**\n * Theme Service\n * Currently only supports light theme (dark mode disabled)\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class ThemeService {\n private readonly platformId = inject(PLATFORM_ID);\n private readonly isBrowser = isPlatformBrowser(this.platformId);\n\n // Reactive theme state using Angular signals - always light mode\n private readonly themeState = signal<ThemeState>({\n currentMode: 'light',\n prefersDark: false,\n });\n\n // Public readonly signals (declared after themeState due to initialization dependency)\n // eslint-disable-next-line @typescript-eslint/member-ordering\n public readonly currentTheme = this.themeState.asReadonly();\n // eslint-disable-next-line @typescript-eslint/member-ordering\n public readonly isDark = signal(false);\n\n constructor() {\n // Apply light theme on initialization\n this.applyTheme('light');\n }\n\n /**\n * Set the theme mode (currently only light is supported)\n */\n public setTheme(mode: ThemeMode): void {\n // Always use light mode\n this.themeState.update((state) => ({\n ...state,\n currentMode: 'light',\n }));\n this.applyTheme('light');\n }\n\n /**\n * Toggle theme (disabled - always light)\n */\n public toggleTheme(): void {\n // No-op: dark mode disabled\n }\n\n /**\n * Reset to system preference (disabled - always light)\n */\n public useSystemPreference(): void {\n // No-op: always use light mode\n }\n\n /**\n * Apply light theme to document\n */\n private applyTheme(mode: ThemeMode): void {\n if (!this.isBrowser) {\n return;\n }\n\n const root = document.documentElement;\n // Always apply light mode\n root.classList.add('light');\n root.classList.remove('dark');\n\n // Update meta theme-color for mobile browsers\n const metaThemeColor = document.querySelector('meta[name=\"theme-color\"]');\n if (metaThemeColor) {\n metaThemeColor.setAttribute('content', '#ffffff');\n }\n }\n}\n","import {\n Component,\n input,\n computed,\n signal,\n effect,\n ChangeDetectionStrategy,\n inject,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { HttpClient } from '@angular/common/http';\n\nexport type IconVariant = 'outline' | 'solid';\nexport type IconSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n/* eslint-disable @typescript-eslint/member-ordering, @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access */\n\n/**\n * Icon component - Heroicons wrapper for displaying SVG icons\n *\n * Features:\n * - Signal-based reactive API\n * - Support for outline and solid variants\n * - Multiple size options (xs, sm, md, lg, xl)\n * - Custom color support (CSS colors, variables, Tailwind classes)\n * - Accessibility attributes (ARIA labels, decorative icons)\n * - Dynamic SVG loading from Heroicons\n *\n * @example\n * ```html\n * <!-- Basic usage -->\n * <lc-icon name=\"user\" />\n *\n * <!-- With variant and size -->\n * <lc-icon name=\"check\" variant=\"solid\" size=\"lg\" />\n *\n * <!-- With custom color -->\n * <lc-icon name=\"arrow-right\" color=\"#FF5733\" />\n *\n * <!-- With Tailwind color -->\n * <lc-icon name=\"star\" color=\"text-primary-500\" />\n *\n * <!-- With accessibility label -->\n * <lc-icon name=\"user\" ariaLabel=\"User profile\" />\n *\n * <!-- Decorative icon (hidden from screen readers) -->\n * <lc-icon name=\"sparkles\" [decorative]=\"true\" />\n * ```\n */\n@Component({\n selector: 'lc-icon',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './icon.component.html',\n styleUrls: ['./icon.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IconComponent {\n private readonly sanitizer = inject(DomSanitizer);\n private readonly http = inject(HttpClient);\n\n /**\n * Icon name from Heroicons library\n * @example \"user\", \"check\", \"arrow-right\"\n */\n readonly name = input<string>('');\n\n /**\n * Icon variant (outline or solid)\n * @default \"outline\"\n */\n readonly variant = input<IconVariant>('outline');\n\n /**\n * Icon size\n * - xs: 16px\n * - sm: 20px\n * - md: 24px (default)\n * - lg: 32px\n * - xl: 40px\n * @default \"md\"\n */\n readonly size = input<IconSize>('md');\n\n /**\n * Icon color\n * Can be:\n * - CSS color: \"#FF5733\", \"rgb(255, 87, 51)\"\n * - CSS variable: \"var(--color-primary-500)\"\n * - Tailwind class: \"text-primary-500\"\n * - \"currentColor\" (default - inherits from parent)\n * @default \"currentColor\"\n */\n readonly color = input<string>('currentColor');\n\n /**\n * Accessible label for screen readers\n * Required if icon has semantic meaning\n */\n readonly ariaLabel = input<string>();\n\n /**\n * Whether icon is purely decorative (hidden from screen readers)\n * @default false\n */\n readonly decorative = input<boolean>(false);\n\n /**\n * SVG content loaded from Heroicons\n * @internal\n */\n readonly svgContent = signal<SafeHtml>('');\n\n /**\n * Alias map for non-Heroicon names (e.g. Material Design names)\n * Maps alternative names to their Heroicon equivalents\n * @internal\n */\n private readonly iconAliasMap: Record<string, string> = {\n account_balance: 'building-library',\n analytics: 'presentation-chart-line',\n notifications_active: 'bell-alert',\n trending_up: 'arrow-trending-up',\n 'trending-up': 'arrow-trending-up',\n trending_down: 'arrow-trending-down',\n 'trending-down': 'arrow-trending-down',\n today: 'calendar',\n percent: 'percent-badge',\n create: 'pencil',\n done: 'check',\n error: 'exclamation-circle',\n run: 'play',\n copy: 'clipboard-document',\n };\n\n /**\n * Inline SVG map for common icons (fallback when HTTP loading not available)\n * @internal\n */\n private readonly inlineSvgMap: Record<string, Record<IconVariant, string>> = {\n home: {\n outline:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m2.25 12 8.954-8.955c.44-.439 1.152-.439 1.591 0L21.75 12M4.5 9.75v10.125c0 .621.504 1.125 1.125 1.125H9.75v-4.875c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125V21h4.125c.621 0 1.125-.504 1.125-1.125V9.75M8.25 21h8.25\" /></svg>',\n solid:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M11.47 3.841a.75.75 0 0 1 1.06 0l8.69 8.69a.75.75 0 1 0 1.06-1.061l-8.689-8.69a2.25 2.25 0 0 0-3.182 0l-8.69 8.69a.75.75 0 1 0 1.061 1.06l8.69-8.689Z\" /><path d=\"m12 5.432 8.159 8.159c.03.03.06.058.091.086v6.198c0 1.035-.84 1.875-1.875 1.875H15a.75.75 0 0 1-.75-.75v-4.5a.75.75 0 0 0-.75-.75h-3a.75.75 0 0 0-.75.75V21a.75.75 0 0 1-.75.75H5.625a1.875 1.875 0 0 1-1.875-1.875v-6.198a2.29 2.29 0 0 0 .091-.086L12 5.432Z\" /></svg>',\n },\n 'chart-bar-square': {\n outline:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M7.5 14.25v2.25m3-4.5v4.5m3-6.75v6.75m3-9v9M6 20.25h12A2.25 2.25 0 0 0 20.25 18V6A2.25 2.25 0 0 0 18 3.75H6A2.25 2.25 0 0 0 3.75 6v12A2.25 2.25 0 0 0 6 20.25Z\" /></svg>',\n solid:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M3 6a3 3 0 0 1 3-3h12a3 3 0 0 1 3 3v12a3 3 0 0 1-3 3H6a3 3 0 0 1-3-3V6Zm4.5 7.5a.75.75 0 0 1 .75.75v2.25a.75.75 0 0 1-1.5 0v-2.25a.75.75 0 0 1 .75-.75Zm3.75-1.5a.75.75 0 0 0-1.5 0v4.5a.75.75 0 0 0 1.5 0V12Zm2.25-3a.75.75 0 0 1 .75.75v6.75a.75.75 0 0 1-1.5 0V9.75A.75.75 0 0 1 13.5 9Zm3.75-1.5a.75.75 0 0 0-1.5 0v9a.75.75 0 0 0 1.5 0v-9Z\" clip-rule=\"evenodd\" /></svg>',\n },\n 'light-bulb': {\n outline:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 18v-5.25m0 0a6.01 6.01 0 0 0 1.5-.189m-1.5.189a6.01 6.01 0 0 1-1.5-.189m3.75 7.478a12.06 12.06 0 0 1-4.5 0m3.75 2.383a14.406 14.406 0 0 1-3 0M14.25 18v-.192c0-.983.658-1.823 1.508-2.316a7.5 7.5 0 1 0-7.517 0c.85.493 1.509 1.333 1.509 2.316V18\" /></svg>',\n solid:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M12 .75a8.25 8.25 0 0 0-4.135 15.39c.686.398 1.115 1.008 1.134 1.623a.75.75 0 0 0 .577.706c.352.083.71.148 1.074.195.323.041.6-.218.6-.544v-4.661a6.714 6.714 0 0 1-.937-.171.75.75 0 1 1 .374-1.453 5.261 5.261 0 0 0 2.626 0 .75.75 0 1 1 .374 1.452 6.712 6.712 0 0 1-.937.172v4.66c0 .327.277.586.6.545.364-.047.722-.112 1.074-.195a.75.75 0 0 0 .577-.706c.02-.615.448-1.225 1.134-1.623A8.25 8.25 0 0 0 12 .75Z\" /><path fill-rule=\"evenodd\" d=\"M9.013 19.9a.75.75 0 0 1 .877-.597 11.319 11.319 0 0 0 4.22 0 .75.75 0 1 1 .28 1.473 12.819 12.819 0 0 1-4.78 0 .75.75 0 0 1-.597-.876ZM9.754 22.344a.75.75 0 0 1 .824-.668 13.682 13.682 0 0 0 2.844 0 .75.75 0 1 1 .156 1.492 15.156 15.156 0 0 1-3.156 0 .75.75 0 0 1-.668-.824Z\" clip-rule=\"evenodd\" /></svg>',\n },\n banknotes: {\n outline:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M2.25 18.75a60.07 60.07 0 0 1 15.797 2.101c.727.198 1.453-.342 1.453-1.096V18.75M3.75 4.5v.75A.75.75 0 0 1 3 6h-.75m0 0v-.375c0-.621.504-1.125 1.125-1.125H20.25M2.25 6v9m18-10.5v.75c0 .414.336.75.75.75h.75m-1.5-1.5h.375c.621 0 1.125.504 1.125 1.125v9.75c0 .621-.504 1.125-1.125 1.125h-.375m1.5-1.5H21a.75.75 0 0 0-.75.75v.75m0 0H3.75m0 0h-.375a1.125 1.125 0 0 1-1.125-1.125V15m1.5 1.5v-.75A.75.75 0 0 0 3 15h-.75M15 10.5a3 3 0 1 1-6 0 3 3 0 0 1 6 0Zm3 0h.008v.008H18V10.5Zm-12 0h.008v.008H6V10.5Z\" /></svg>',\n solid:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M12 7.5a2.25 2.25 0 1 0 0 4.5 2.25 2.25 0 0 0 0-4.5Z\" /><path fill-rule=\"evenodd\" d=\"M1.5 4.875C1.5 3.839 2.34 3 3.375 3h17.25c1.035 0 1.875.84 1.875 1.875v9.75c0 1.036-.84 1.875-1.875 1.875H3.375A1.875 1.875 0 0 1 1.5 14.625v-9.75ZM8.25 9.75a3.75 3.75 0 1 1 7.5 0 3.75 3.75 0 0 1-7.5 0ZM18.75 9a.75.75 0 0 0-.75.75v.008c0 .414.336.75.75.75h.008a.75.75 0 0 0 .75-.75V9.75a.75.75 0 0 0-.75-.75h-.008ZM4.5 9.75A.75.75 0 0 1 5.25 9h.008a.75.75 0 0 1 .75.75v.008a.75.75 0 0 1-.75.75H5.25a.75.75 0 0 1-.75-.75V9.75Z\" clip-rule=\"evenodd\" /><path d=\"M2.25 18a.75.75 0 0 0 0 1.5c5.4 0 10.63.722 15.6 2.075 1.19.324 2.4-.558 2.4-1.82V18.75a.75.75 0 0 0-.75-.75H2.25Z\" /></svg>',\n },\n 'play-circle': {\n outline:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z\" /><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15.91 11.672a.375.375 0 0 1 0 .656l-5.603 3.113a.375.375 0 0 1-.557-.328V8.887c0-.286.307-.466.557-.327l5.603 3.112Z\" /></svg>',\n solid:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12Zm14.024-.983a1.125 1.125 0 0 1 0 1.966l-5.603 3.113A1.125 1.125 0 0 1 9 15.113V8.887c0-.857.921-1.4 1.671-.983l5.603 3.113Z\" clip-rule=\"evenodd\" /></svg>',\n },\n 'x-mark': {\n outline:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M6 18L18 6M6 6l12 12\" /></svg>',\n solid:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M5.47 5.47a.75.75 0 011.06 0L12 10.94l5.47-5.47a.75.75 0 111.06 1.06L13.06 12l5.47 5.47a.75.75 0 11-1.06 1.06L12 13.06l-5.47 5.47a.75.75 0 01-1.06-1.06L10.94 12 5.47 6.53a.75.75 0 010-1.06z\" clip-rule=\"evenodd\" /></svg>',\n },\n 'bars-3': {\n outline:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5\" /></svg>',\n solid:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M3 6.75A.75.75 0 013.75 6h16.5a.75.75 0 010 1.5H3.75A.75.75 0 013 6.75zM3 12a.75.75 0 01.75-.75h16.5a.75.75 0 010 1.5H3.75A.75.75 0 013 12zm0 5.25a.75.75 0 01.75-.75h16.5a.75.75 0 010 1.5H3.75a.75.75 0 01-.75-.75z\" clip-rule=\"evenodd\" /></svg>',\n },\n 'globe-alt': {\n outline:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 21a9.004 9.004 0 008.716-6.747M12 21a9.004 9.004 0 01-8.716-6.747M12 21c2.485 0 4.5-4.03 4.5-9S14.485 3 12 3m0 18c-2.485 0-4.5-4.03-4.5-9S9.515 3 12 3m0 0a8.997 8.997 0 017.843 4.582M12 3a8.997 8.997 0 00-7.843 4.582m15.686 0A11.953 11.953 0 0112 10.5c-2.998 0-5.74-1.1-7.843-2.918m15.686 0A8.959 8.959 0 0121 12c0 .778-.099 1.533-.284 2.253m0 0A17.919 17.919 0 0112 16.5c-3.162 0-6.133-.815-8.716-2.247m0 0A9.015 9.015 0 013 12c0-1.605.42-3.113 1.157-4.418\" /></svg>',\n solid:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M21.721 12.752a9.711 9.711 0 00-.945-5.003 12.754 12.754 0 01-4.339 2.708 18.991 18.991 0 01-.214 4.772 17.165 17.165 0 005.498-2.477zM14.634 15.55a17.324 17.324 0 00.332-4.647c-.952.227-1.945.347-2.966.347-1.021 0-2.014-.12-2.966-.347a17.515 17.515 0 00.332 4.647 17.385 17.385 0 005.268 0zM9.772 17.119a18.963 18.963 0 004.456 0A17.182 17.182 0 0112 21.724a17.18 17.18 0 01-2.228-4.605zM7.777 15.23a18.87 18.87 0 01-.214-4.774 12.753 12.753 0 01-4.34-2.708 9.711 9.711 0 00-.944 5.004 17.165 17.165 0 005.498 2.477zM21.356 14.752a9.765 9.765 0 01-7.478 6.817 18.64 18.64 0 001.988-4.718 18.627 18.627 0 005.49-2.098zM2.644 14.752c1.682.971 3.53 1.688 5.49 2.099a18.64 18.64 0 001.988 4.718 9.765 9.765 0 01-7.478-6.816zM13.878 2.43a9.755 9.755 0 016.116 3.986 11.267 11.267 0 01-3.746 2.504 18.63 18.63 0 00-2.37-6.49zM12 2.276a17.152 17.152 0 012.805 7.121c-.897.23-1.837.353-2.805.353-.968 0-1.908-.122-2.805-.353A17.151 17.151 0 0112 2.276zM10.122 2.43a18.629 18.629 0 00-2.37 6.49 11.266 11.266 0 01-3.746-2.504 9.754 9.754 0 016.116-3.985z\" /></svg>',\n },\n calendar: {\n outline:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5\" /></svg>',\n solid:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M12.75 12.75a.75.75 0 11-1.5 0 .75.75 0 011.5 0zM7.5 15.75a.75.75 0 100-1.5.75.75 0 000 1.5zM8.25 17.25a.75.75 0 11-1.5 0 .75.75 0 011.5 0zM9.75 15.75a.75.75 0 100-1.5.75.75 0 000 1.5zM10.5 17.25a.75.75 0 11-1.5 0 .75.75 0 011.5 0zM12 15.75a.75.75 0 100-1.5.75.75 0 000 1.5zM12.75 17.25a.75.75 0 11-1.5 0 .75.75 0 011.5 0zM14.25 15.75a.75.75 0 100-1.5.75.75 0 000 1.5zM15 17.25a.75.75 0 11-1.5 0 .75.75 0 011.5 0zM16.5 15.75a.75.75 0 100-1.5.75.75 0 000 1.5zM15 12.75a.75.75 0 11-1.5 0 .75.75 0 011.5 0zM16.5 13.5a.75.75 0 100-1.5.75.75 0 000 1.5z\" /><path fill-rule=\"evenodd\" d=\"M6.75 2.25A.75.75 0 017.5 3v1.5h9V3A.75.75 0 0118 3v1.5h.75a3 3 0 013 3v11.25a3 3 0 01-3 3H5.25a3 3 0 01-3-3V7.5a3 3 0 013-3H6V3a.75.75 0 01.75-.75zm13.5 9a1.5 1.5 0 00-1.5-1.5H5.25a1.5 1.5 0 00-1.5 1.5v7.5a1.5 1.5 0 001.5 1.5h13.5a1.5 1.5 0 001.5-1.5v-7.5z\" clip-rule=\"evenodd\" /></svg>',\n },\n hashtag: {\n outline:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M5.25 8.25h15m-16.5 7.5h15m-1.8-13.5l-3.9 19.5m-2.1-19.5l-3.9 19.5\" /></svg>',\n solid:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M11.097 1.515a.75.75 0 01.589.882L10.666 7.5h4.47l1.079-5.397a.75.75 0 111.47.294L16.665 7.5h3.585a.75.75 0 010 1.5h-3.885l-1.2 6h3.585a.75.75 0 010 1.5h-3.885l-1.08 5.397a.75.75 0 11-1.47-.294l1.02-5.103h-4.47l-1.08 5.397a.75.75 0 01-1.47-.294l1.02-5.103H3.75a.75.75 0 010-1.5h3.885l1.2-6H5.25a.75.75 0 010-1.5h3.885l1.08-5.397a.75.75 0 01.882-.588zM10.365 9l-1.2 6h4.47l1.2-6h-4.47z\" clip-rule=\"evenodd\" /></svg>',\n },\n sun: {\n outline:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 3v2.25m6.364.386l-1.591 1.591M21 12h-2.25m-.386 6.364l-1.591-1.591M12 18.75V21m-4.773-4.227l-1.591 1.591M5.25 12H3m4.227-4.773L5.636 5.636M15.75 12a3.75 3.75 0 11-7.5 0 3.75 3.75 0 017.5 0z\" /></svg>',\n solid:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M12 2.25a.75.75 0 01.75.75v2.25a.75.75 0 01-1.5 0V3a.75.75 0 01.75-.75zM7.5 12a4.5 4.5 0 119 0 4.5 4.5 0 01-9 0zM18.894 6.166a.75.75 0 00-1.06-1.06l-1.591 1.59a.75.75 0 101.06 1.061l1.591-1.59zM21.75 12a.75.75 0 01-.75.75h-2.25a.75.75 0 010-1.5H21a.75.75 0 01.75.75zM17.834 18.894a.75.75 0 001.06-1.06l-1.59-1.591a.75.75 0 10-1.061 1.06l1.59 1.591zM12 18a.75.75 0 01.75.75V21a.75.75 0 01-1.5 0v-2.25A.75.75 0 0112 18zM7.758 17.303a.75.75 0 00-1.061-1.06l-1.591 1.59a.75.75 0 001.06 1.061l1.591-1.59zM6 12a.75.75 0 01-.75.75H3a.75.75 0 010-1.5h2.25A.75.75 0 016 12zM6.697 7.757a.75.75 0 001.06-1.06l-1.59-1.591a.75.75 0 00-1.061 1.06l1.59 1.591z\" /></svg>',\n },\n moon: {\n outline:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M21.752 15.002A9.718 9.718 0 0118 15.75c-5.385 0-9.75-4.365-9.75-9.75 0-1.33.266-2.597.748-3.752A9.753 9.753 0 003 11.25C3 16.635 7.365 21 12.75 21a9.753 9.753 0 009.002-5.998z\" /></svg>',\n solid:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M9.528 1.718a.75.75 0 01.162.819A8.97 8.97 0 009 6a9 9 0 009 9 8.97 8.97 0 003.463-.69.75.75 0 01.981.98 10.503 10.503 0 01-9.694 6.46c-5.799 0-10.5-4.701-10.5-10.5 0-4.368 2.667-8.112 6.46-9.694a.75.75 0 01.818.162z\" clip-rule=\"evenodd\" /></svg>',\n },\n user: {\n outline:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15.75 6a3.75 3.75 0 11-7.5 0 3.75 3.75 0 017.5 0zM4.501 20.118a7.5 7.5 0 0114.998 0A17.933 17.933 0 0112 21.75c-2.676 0-5.216-.584-7.499-1.632z\" /></svg>',\n solid:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M7.5 6a4.5 4.5 0 119 0 4.5 4.5 0 01-9 0zM3.751 20.105a8.25 8.25 0 0116.498 0 .75.75 0 01-.437.695A18.683 18.683 0 0112 22.5c-2.786 0-5.433-.608-7.812-1.7a.75.75 0 01-.437-.695z\" clip-rule=\"evenodd\" /></svg>',\n },\n 'chevron-down': {\n outline:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M19.5 8.25l-7.5 7.5-7.5-7.5\" /></svg>',\n solid:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M12.53 16.28a.75.75 0 01-1.06 0l-7.5-7.5a.75.75 0 011.06-1.06L12 14.69l6.97-6.97a.75.75 0 111.06 1.06l-7.5 7.5z\" clip-rule=\"evenodd\" /></svg>',\n },\n 'chevron-up': {\n outline:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 15.75l7.5-7.5 7.5 7.5\" /></svg>',\n solid:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M11.47 7.72a.75.75 0 011.06 0l7.5 7.5a.75.75 0 11-1.06 1.06L12 9.31l-6.97 6.97a.75.75 0 01-1.06-1.06l7.5-7.5z\" clip-rule=\"evenodd\" /></svg>',\n },\n eye: {\n outline:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M2.036 12.322a1.012 1.012 0 010-.639C3.423 7.51 7.36 4.5 12 4.5c4.638 0 8.573 3.007 9.963 7.178.07.207.07.431 0 .639C20.577 16.49 16.64 19.5 12 19.5c-4.638 0-8.573-3.007-9.963-7.178z\" /><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15 12a3 3 0 11-6 0 3 3 0 016 0z\" /></svg>',\n solid:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M12 15a3 3 0 100-6 3 3 0 000 6z\" /><path fill-rule=\"evenodd\" d=\"M1.323 11.447C2.811 6.976 7.028 3.75 12.001 3.75c4.97 0 9.185 3.223 10.675 7.69.12.362.12.752 0 1.113-1.487 4.471-5.705 7.697-10.677 7.697-4.97 0-9.186-3.223-10.675-7.69a1.762 1.762 0 010-1.113zM17.25 12a5.25 5.25 0 11-10.5 0 5.25 5.25 0 0110.5 0z\" clip-rule=\"evenodd\" /></svg>',\n },\n 'eye-slash': {\n outline:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M3.98 8.223A10.477 10.477 0 001.934 12C3.226 16.338 7.244 19.5 12 19.5c.993 0 1.953-.138 2.863-.395M6.228 6.228A10.45 10.45 0 0112 4.5c4.756 0 8.773 3.162 10.065 7.498a10.523 10.523 0 01-4.293 5.774M6.228 6.228L3 3m3.228 3.228l3.65 3.65m7.894 7.894L21 21m-3.228-3.228l-3.65-3.65m0 0a3 3 0 10-4.243-4.243m4.242 4.242L9.88 9.88\" /></svg>',\n solid:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M3.53 2.47a.75.75 0 00-1.06 1.06l18 18a.75.75 0 101.06-1.06l-18-18zM22.676 12.553a11.249 11.249 0 01-2.631 4.31l-3.099-3.099a5.25 5.25 0 00-6.71-6.71L7.759 4.577a11.217 11.217 0 014.242-.827c4.97 0 9.185 3.223 10.675 7.69.12.362.12.752 0 1.113z\" /><path d=\"M15.75 12c0 .18-.013.357-.037.53l-4.244-4.243A3.75 3.75 0 0115.75 12zM12.53 15.713l-4.243-4.244a3.75 3.75 0 004.243 4.243z\" /><path d=\"M6.75 12c0-.619.107-1.213.304-1.764l-3.1-3.1a11.25 11.25 0 00-2.63 4.31c-.12.362-.12.752 0 1.114 1.489 4.467 5.704 7.69 10.675 7.69 1.5 0 2.933-.294 4.242-.827l-2.477-2.477A5.25 5.25 0 016.75 12z\" /></svg>',\n },\n 'check-circle': {\n outline:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 12.75L11.25 15 15 9.75M21 12a9 9 0 11-18 0 9 9 0 0118 0z\" /></svg>',\n solid:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12zm13.36-1.814a.75.75 0 10-1.22-.872l-3.236 4.53L9.53 12.22a.75.75 0 00-1.06 1.06l2.25 2.25a.75.75 0 001.14-.094l3.75-5.25z\" clip-rule=\"evenodd\" /></svg>',\n },\n 'exclamation-triangle': {\n outline:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z\" /></svg>',\n solid:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z\" clip-rule=\"evenodd\" /></svg>',\n },\n 'information-circle': {\n outline:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M11.25 11.25l.041-.02a.75.75 0 011.063.852l-.708 2.836a.75.75 0 001.063.853l.041-.021M21 12a9 9 0 11-18 0 9 9 0 0118 0zm-9-3.75h.008v.008H12V8.25z\" /></svg>',\n solid:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12zm8.706-1.442c1.146-.573 2.437.463 2.126 1.706l-.709 2.836.042-.02a.75.75 0 01.67 1.34l-.04.022c-1.147.573-2.438-.463-2.127-1.706l.71-2.836-.042.02a.75.75 0 11-.671-1.34l.041-.022zM12 9a.75.75 0 100-1.5.75.75 0 000 1.5z\" clip-rule=\"evenodd\" /></svg>',\n },\n 'exclamation-circle': {\n outline:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 9v3.75m9-.75a9 9 0 11-18 0 9 9 0 0118 0zm-9 3.75h.008v.008H12v-.008z\" /></svg>',\n solid:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z\" clip-rule=\"evenodd\" /></svg>',\n },\n clock: {\n outline:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 6v6h4.5m4.5 0a9 9 0 11-18 0 9 9 0 0118 0z\" /></svg>',\n solid:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M12 2.25c-5.385 0-9.75 4.365-9.75 9.75s4.365 9.75 9.75 9.75 9.75-4.365 9.75-9.75S17.385 2.25 12 2.25zM12.75 6a.75.75 0 00-1.5 0v6c0 .414.336.75.75.75h4.5a.75.75 0 000-1.5h-3.75V6z\" clip-rule=\"evenodd\" /></svg>',\n },\n 'arrow-path': {\n outline:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0l3.181 3.183a8.25 8.25 0 0013.803-3.7M4.031 9.865a8.25 8.25 0 0113.803-3.7l3.181 3.182m0-4.991v4.99\" /></svg>',\n solid:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M4.755 10.059a7.5 7.5 0 0112.548-3.364l1.903 1.903h-3.183a.75.75 0 100 1.5h4.992a.75.75 0 00.75-.75V4.356a.75.75 0 00-1.5 0v3.18l-1.9-1.9A9 9 0 003.306 9.67a.75.75 0 101.45.388zm15.408 3.352a.75.75 0 00-.919.53 7.5 7.5 0 01-12.548 3.364l-1.902-1.903h3.183a.75.75 0 000-1.5H2.984a.75.75 0 00-.75.75v4.992a.75.75 0 001.5 0v-3.18l1.9 1.9a9 9 0 0015.059-4.035.75.75 0 00-.53-.918z\" clip-rule=\"evenodd\" /></svg>',\n },\n 'building-library': {\n outline:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 21v-8.25M15.75 21v-8.25M8.25 21v-8.25M3 9l9-6 9 6m-1.5 12V10.332A48.36 48.36 0 0 0 12 9.75c-2.551 0-5.056.2-7.5.582V21M3 21h18M12 6.75h.008v.008H12V6.75Z\" /></svg>',\n solid:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M11.584 2.376a.75.75 0 0 1 .832 0l9 6a.75.75 0 1 1-.832 1.248L12 3.901 3.416 9.624a.75.75 0 0 1-.832-1.248l9-6Z\" /><path fill-rule=\"evenodd\" d=\"M20.25 10.332v9.918H21a.75.75 0 0 1 0 1.5H3a.75.75 0 0 1 0-1.5h.75v-9.918a.75.75 0 0 1 .634-.74A49.109 49.109 0 0 1 12 9c2.59 0 5.134.202 7.616.592a.75.75 0 0 1 .634.74Zm-7.5 2.418a.75.75 0 0 0-1.5 0v6.75a.75.75 0 0 0 1.5 0v-6.75Zm3-.75a.75.75 0 0 1 .75.75v6.75a.75.75 0 0 1-1.5 0v-6.75a.75.75 0 0 1 .75-.75ZM9 12.75a.75.75 0 0 0-1.5 0v6.75a.75.75 0 0 0 1.5 0v-6.75Z\" clip-rule=\"evenodd\" /><path d=\"M12 7.875a1.125 1.125 0 1 0 0-2.25 1.125 1.125 0 0 0 0 2.25Z\" /></svg>',\n },\n 'arrow-trending-up': {\n outline:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M2.25 18 9 11.25l4.306 4.306a11.95 11.95 0 0 1 5.814-5.518l2.74-1.22m0 0-5.94-2.281m5.94 2.28-2.28 5.941\" /></svg>',\n solid:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M15.22 6.268a.75.75 0 0 1 .968-.431l5.942 2.28a.75.75 0 0 1 .431.97l-2.28 5.94a.75.75 0 1 1-1.4-.537l1.63-4.251-1.086.484a11.2 11.2 0 0 0-5.45 5.173.75.75 0 0 1-1.199.19L9 12.312l-6.22 6.22a.75.75 0 0 1-1.06-1.061l6.75-6.75a.75.75 0 0 1 1.06 0l3.606 3.606a12.695 12.695 0 0 1 5.68-4.974l1.086-.483-4.251-1.632a.75.75 0 0 1-.432-.97Z\" clip-rule=\"evenodd\" /></svg>',\n },\n 'arrow-trending-down': {\n outline:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M2.25 6 9 12.75l4.286-4.286a11.948 11.948 0 0 1 4.306 6.43l.776 2.898m0 0 3.182-5.511m-3.182 5.51-5.511-3.181\" /></svg>',\n solid:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M1.72 5.47a.75.75 0 0 1 1.06 0L9 11.69l3.756-3.756a.75.75 0 0 1 .985-.066 12.698 12.698 0 0 1 4.575 6.832l.308 1.149 2.277-3.943a.75.75 0 1 1 1.299.75l-3.182 5.51a.75.75 0 0 1-1.025.275l-5.511-3.181a.75.75 0 0 1 .75-1.3l3.943 2.277-.308-1.149a11.194 11.194 0 0 0-3.528-5.617l-3.809 3.81a.75.75 0 0 1-1.06 0L1.72 6.53a.75.75 0 0 1 0-1.061Z\" clip-rule=\"evenodd\" /></svg>',\n },\n 'percent-badge': {\n outline:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m8.99 14.993 6-6m6 3.001c0 1.268-.63 2.39-1.593 3.069a3.746 3.746 0 0 1-1.043 3.296 3.745 3.745 0 0 1-3.296 1.043 3.745 3.745 0 0 1-3.068 1.593c-1.268 0-2.39-.63-3.068-1.593a3.745 3.745 0 0 1-3.296-1.043 3.746 3.746 0 0 1-1.043-3.297 3.746 3.746 0 0 1-1.593-3.068c0-1.268.63-2.39 1.593-3.068a3.746 3.746 0 0 1 1.043-3.297 3.745 3.745 0 0 1 3.296-1.042 3.745 3.745 0 0 1 3.068-1.594c1.268 0 2.39.63 3.068 1.593a3.745 3.745 0 0 1 3.296 1.043 3.746 3.746 0 0 1 1.043 3.297 3.746 3.746 0 0 1 1.593 3.068ZM9.74 9.743h.008v.007H9.74v-.007Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm4.125 4.5h.008v.008h-.008v-.008Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Z\" /></svg>',\n solid:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M11.99 2.243a4.49 4.49 0 0 0-3.398 1.55 4.49 4.49 0 0 0-3.497 1.306 4.491 4.491 0 0 0-1.307 3.498 4.491 4.491 0 0 0-1.548 3.397c0 1.357.6 2.573 1.548 3.397a4.491 4.491 0 0 0 1.307 3.498 4.49 4.49 0 0 0 3.498 1.307 4.49 4.49 0 0 0 3.397 1.549 4.49 4.49 0 0 0 3.397-1.549 4.49 4.49 0 0 0 3.497-1.307 4.491 4.491 0 0 0 1.306-3.497 4.491 4.491 0 0 0 1.55-3.398c0-1.357-.601-2.573-1.549-3.397a4.491 4.491 0 0 0-1.307-3.498 4.49 4.49 0 0 0-3.498-1.307 4.49 4.49 0 0 0-3.396-1.549Zm3.53 7.28a.75.75 0 0 0-1.06-1.06l-6 6a.75.75 0 1 0 1.06 1.06l6-6Zm-5.78-.905a1.125 1.125 0 1 0 0 2.25 1.125 1.125 0 0 0 0-2.25Zm4.5 4.5a1.125 1.125 0 1 0 0 2.25 1.125 1.125 0 0 0 0-2.25Z\" clip-rule=\"evenodd\" /></svg>',\n },\n 'presentation-chart-line': {\n outline:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M3.75 3v11.25A2.25 2.25 0 0 0 6 16.5h2.25M3.75 3h-1.5m1.5 0h16.5m0 0h1.5m-1.5 0v11.25A2.25 2.25 0 0 1 18 16.5h-2.25m-7.5 0h7.5m-7.5 0-1 3m8.5-3 1 3m0 0 .5 1.5m-.5-1.5h-9.5m0 0-.5 1.5m.75-9 3-3 2.148 2.148A12.061 12.061 0 0 1 16.5 7.605\" /></svg>',\n solid:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M2.25 2.25a.75.75 0 0 0 0 1.5H3v10.5a3 3 0 0 0 3 3h1.21l-1.172 3.513a.75.75 0 0 0 1.424.474l.329-.987h8.418l.33.987a.75.75 0 0 0 1.422-.474l-1.17-3.513H18a3 3 0 0 0 3-3V3.75h.75a.75.75 0 0 0 0-1.5H2.25Zm6.54 15h6.42l.5 1.5H8.29l.5-1.5Zm8.085-8.995a.75.75 0 1 0-.75-1.299 12.81 12.81 0 0 0-3.558 3.05L11.03 8.47a.75.75 0 0 0-1.06 0l-3 3a.75.75 0 1 0 1.06 1.06l2.47-2.47 1.617 1.618a.75.75 0 0 0 1.146-.102 11.312 11.312 0 0 1 3.612-3.321Z\" clip-rule=\"evenodd\" /></svg>',\n },\n 'bell-alert': {\n outline:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M14.857 17.082a23.848 23.848 0 0 0 5.454-1.31A8.967 8.967 0 0 1 18 9.75V9A6 6 0 0 0 6 9v.75a8.967 8.967 0 0 1-2.312 6.022c1.733.64 3.56 1.085 5.455 1.31m5.714 0a24.255 24.255 0 0 1-5.714 0m5.714 0a3 3 0 1 1-5.714 0M3.124 7.5A8.969 8.969 0 0 1 5.292 3m13.416 0a8.969 8.969 0 0 1 2.168 4.5\" /></svg>',\n solid:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M5.85 3.5a.75.75 0 0 0-1.117-1 9.719 9.719 0 0 0-2.348 4.876.75.75 0 0 0 1.479.248A8.219 8.219 0 0 1 5.85 3.5ZM19.267 2.5a.75.75 0 1 0-1.118 1 8.22 8.22 0 0 1 1.987 4.124.75.75 0 0 0 1.48-.248A9.72 9.72 0 0 0 19.266 2.5Z\" /><path fill-rule=\"evenodd\" d=\"M12 2.25A6.75 6.75 0 0 0 5.25 9v.75a8.217 8.217 0 0 1-2.119 5.52.75.75 0 0 0 .298 1.206c1.544.57 3.16.99 4.831 1.243a3.75 3.75 0 1 0 7.48 0 24.583 24.583 0 0 0 4.83-1.244.75.75 0 0 0 .298-1.205 8.217 8.217 0 0 1-2.118-5.52V9A6.75 6.75 0 0 0 12 2.25ZM9.75 18c0-.034 0-.067.002-.1a25.05 25.05 0 0 0 4.496 0l.002.1a2.25 2.25 0 1 1-4.5 0Z\" clip-rule=\"evenodd\" /></svg>',\n },\n pencil: {\n outline:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m16.862 4.487 1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L6.832 19.82a4.5 4.5 0 0 1-1.897 1.13l-2.685.8.8-2.685a4.5 4.5 0 0 1 1.13-1.897L16.863 4.487Zm0 0L19.5 7.125\" /></svg>',\n solid:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M21.731 2.269a2.625 2.625 0 0 0-3.712 0l-1.157 1.157 3.712 3.712 1.157-1.157a2.625 2.625 0 0 0 0-3.712ZM19.513 8.199l-3.712-3.712-12.15 12.15a5.25 5.25 0 0 0-1.32 2.214l-.8 2.685a.75.75 0 0 0 .933.933l2.685-.8a5.25 5.25 0 0 0 2.214-1.32L19.513 8.2Z\" /></svg>',\n },\n play: {\n outline:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M5.25 5.653c0-.856.917-1.398 1.667-.986l11.54 6.347a1.125 1.125 0 0 1 0 1.972l-11.54 6.347a1.125 1.125 0 0 1-1.667-.986V5.653Z\" /></svg>',\n solid:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M4.5 5.653c0-1.427 1.529-2.33 2.779-1.643l11.54 6.347c1.295.712 1.295 2.573 0 3.286L7.28 19.99c-1.25.687-2.779-.217-2.779-1.643V5.653Z\" clip-rule=\"evenodd\" /></svg>',\n },\n check: {\n outline:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m4.5 12.75 6 6 9-13.5\" /></svg>',\n solid:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M19.916 4.626a.75.75 0 0 1 .208 1.04l-9 13.5a.75.75 0 0 1-1.154.114l-6-6a.75.75 0 0 1 1.06-1.06l5.353 5.353 8.493-12.74a.75.75 0 0 1 1.04-.207Z\" clip-rule=\"evenodd\" /></svg>',\n },\n 'document-duplicate': {\n outline:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15.75 17.25v3.375c0 .621-.504 1.125-1.125 1.125h-9.75a1.125 1.125 0 0 1-1.125-1.125V7.875c0-.621.504-1.125 1.125-1.125H6.75a9.06 9.06 0 0 1 1.5.124m7.5 10.376h3.375c.621 0 1.125-.504 1.125-1.125V11.25c0-4.46-3.243-8.161-7.5-8.876a9.06 9.06 0 0 0-1.5-.124H9.375c-.621 0-1.125.504-1.125 1.125v3.5m7.5 10.375H9.375a1.125 1.125 0 0 1-1.125-1.125v-9.25m12 6.625v-1.875a3.375 3.375 0 0 0-3.375-3.375h-1.5a1.125 1.125 0 0 1-1.125-1.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H9.75\" /></svg>',\n solid:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M7.5 3.375c0-1.036.84-1.875 1.875-1.875h.375a3.75 3.75 0 0 1 3.75 3.75v1.875C13.5 8.161 14.34 9 15.375 9h1.875A3.75 3.75 0 0 1 21 12.75v3.375C21 17.16 20.16 18 19.125 18h-9.75A1.875 1.875 0 0 1 7.5 16.125V3.375Z\" /><path d=\"M15 5.25a5.23 5.23 0 0 0-1.279-3.434 9.768 9.768 0 0 1 6.963 6.963A5.23 5.23 0 0 0 17.25 7.5h-1.875A.375.375 0 0 1 15 7.125V5.25ZM4.875 6H6v10.125A3.375 3.375 0 0 0 9.375 19.5H16.5v1.125c0 1.035-.84 1.875-1.875 1.875h-9.75A1.875 1.875 0 0 1 3 20.625V7.875C3 6.839 3.84 6 4.875 6Z\" /></svg>',\n },\n 'chart-bar': {\n outline:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v6.75C7.5 20.496 6.996 21 6.375 21h-2.25A1.125 1.125 0 0 1 3 19.875v-6.75ZM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v11.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V8.625ZM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v15.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V4.125Z\" /></svg>',\n solid:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M18.375 2.25c-1.035 0-1.875.84-1.875 1.875v15.75c0 1.035.84 1.875 1.875 1.875h.75c1.035 0 1.875-.84 1.875-1.875V4.125c0-1.036-.84-1.875-1.875-1.875h-.75ZM9.75 8.625c0-1.036.84-1.875 1.875-1.875h.75c1.036 0 1.875.84 1.875 1.875v11.25c0 1.035-.84 1.875-1.875 1.875h-.75a1.875 1.875 0 0 1-1.875-1.875V8.625ZM3 13.125c0-1.036.84-1.875 1.875-1.875h.75c1.036 0 1.875.84 1.875 1.875v6.75c0 1.035-.84 1.875-1.875 1.875h-.75A1.875 1.875 0 0 1 3 19.875v-6.75Z\" /></svg>',\n },\n bolt: {\n outline:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m3.75 13.5 10.5-11.25L12 10.5h8.25L9.75 21.75 12 13.5H3.75Z\" /></svg>',\n solid:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M14.615 1.595a.75.75 0 0 1 .359.852L12.982 9.75h7.268a.75.75 0 0 1 .548 1.262l-10.5 11.25a.75.75 0 0 1-1.272-.71l1.992-7.302H3.75a.75.75 0 0 1-.548-1.262l10.5-11.25a.75.75 0 0 1 .913-.143Z\" clip-rule=\"evenodd\" /></svg>',\n },\n star: {\n outline:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M11.48 3.499a.562.562 0 0 1 1.04 0l2.125 5.111a.563.563 0 0 0 .475.345l5.518.442c.499.04.701.663.321.988l-4.204 3.602a.563.563 0 0 0-.182.557l1.285 5.385a.562.562 0 0 1-.84.61l-4.725-2.885a.562.562 0 0 0-.586 0L6.982 20.54a.562.562 0 0 1-.84-.61l1.285-5.386a.562.562 0 0 0-.182-.557l-4.204-3.602a.562.562 0 0 1 .321-.988l5.518-.442a.563.563 0 0 0 .475-.345L11.48 3.5Z\" /></svg>',\n solid:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M10.788 3.21c.448-1.077 1.976-1.077 2.424 0l2.082 5.006 5.404.434c1.164.093 1.636 1.545.749 2.305l-4.117 3.527 1.257 5.273c.271 1.136-.964 2.033-1.96 1.425L12 18.354 7.373 21.18c-.996.608-2.231-.29-1.96-1.425l1.257-5.273-4.117-3.527c-.887-.76-.415-2.212.749-2.305l5.404-.434 2.082-5.005Z\" clip-rule=\"evenodd\" /></svg>',\n },\n plus: {\n outline:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 4.5v15m7.5-7.5h-15\" /></svg>',\n solid:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M12 3.75a.75.75 0 0 1 .75.75v6.75h6.75a.75.75 0 0 1 0 1.5h-6.75v6.75a.75.75 0 0 1-1.5 0v-6.75H4.5a.75.75 0 0 1 0-1.5h6.75V4.5a.75.75 0 0 1 .75-.75Z\" clip-rule=\"evenodd\" /></svg>',\n },\n 'bell-slash': {\n outline:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9.143 17.082a24.248 24.248 0 0 0 3.844.148m-3.844-.148a23.856 23.856 0 0 1-5.455-1.31 8.964 8.964 0 0 0 2.3-5.542m3.155 6.852a3 3 0 0 0 5.667 1.97m1.965-2.277L21 21m-4.225-4.225a23.81 23.81 0 0 0 3.536-1.003A8.967 8.967 0 0 1 18 9.75V9A6 6 0 0 0 6.53 6.53m10.245 10.245L6.53 6.53M3 3l3.53 3.53\" /></svg>',\n solid:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M3.53 2.47a.75.75 0 0 0-1.06 1.06l18 18a.75.75 0 1 0 1.06-1.06l-18-18ZM20.57 16.476c-.223.082-.448.161-.674.238L7.319 4.137A6.75 6.75 0 0 1 18.75 9v.75c0 2.123.8 4.057 2.118 5.52a.75.75 0 0 1-.297 1.206Z\" /><path fill-rule=\"evenodd\" d=\"M5.25 9c0-.184.007-.366.022-.546l10.384 10.384a3.751 3.751 0 0 1-7.396-1.119 24.585 24.585 0 0 1-4.831-1.244.75.75 0 0 1-.298-1.205A8.217 8.217 0 0 0 5.25 9.75V9Zm4.502 8.9a2.25 2.25 0 1 0 4.496 0 25.057 25.057 0 0 1-4.496 0Z\" clip-rule=\"evenodd\" /></svg>',\n },\n };\n\n /**\n * Computed path to SVG file\n * @internal\n */\n readonly iconPath = computed(() => {\n const rawName = this.name();\n const iconVariant = this.variant();\n if (!rawName) return '';\n const iconName = this.iconAliasMap[rawName] ?? rawName;\n return `/heroicons/24/${iconVariant}/${iconName}.svg`;\n });\n\n /**\n * Computed size in pixels\n * @internal\n */\n readonly sizeInPixels = computed(() => {\n const sizeMap: Record<IconSize, string> = {\n xs: '16px',\n sm: '20px',\n md: '24px',\n lg: '32px',\n xl: '40px',\n };\n return sizeMap[this.size()];\n });\n\n /**\n * Computed CSS classes\n * @internal\n */\n readonly computedClasses = computed(() => {\n const classes = ['icon-container', `icon-${this.size()}`, `icon-${this.variant()}`];\n\n const colorValue = this.color();\n // Add color as class if it's a Tailwind class (starts with text-)\n if (colorValue.startsWith('text-')) {\n classes.push(colorValue);\n }\n\n return classes.join(' ');\n });\n\n /**\n * Computed inline color style\n * @internal\n */\n readonly colorStyle = computed(() => {\n const colorValue = this.color();\n // Only apply inline style if it's not a Tailwind class\n if (!colorValue.startsWith('text-')) {\n return colorValue;\n }\n return 'currentColor';\n });\n\n constructor() {\n // Load SVG content when name or variant changes\n effect(() => {\n const rawName = this.name();\n const iconVariant = this.variant();\n\n if (!rawName) {\n this.svgContent.set('');\n return;\n }\n\n // Resolve aliases (Material Design → Heroicons)\n const iconName = this.iconAliasMap[rawName] ?? rawName;\n\n // Try to use inline SVG first (avoids HTTP request)\n const inlineSvg = this.inlineSvgMap[iconName]?.[iconVariant];\n if (inlineSvg) {\n const processed = this.processSvgString(inlineSvg);\n this.svgContent.set(this.sanitizer.bypassSecurityTrustHtml(processed));\n return;\n }\n\n // Fallback to HTTP loading (may not work in all environments)\n const path = this.iconPath();\n if (!path) {\n this.svgContent.set('');\n return;\n }\n\n // Fetch SVG content\n this.http.get(path, { responseType: 'text' }).subscribe({\n next: (svgText) => {\n // Process SVG to add our attributes\n const processed = this.processSvgString(svgText);\n this.svgContent.set(this.sanitizer.bypassSecurityTrustHtml(processed));\n },\n error: (error) => {\n console.warn(`Failed to load icon \"${iconName}\":`, error);\n // Use a fallback X icon for missing icons\n const fallback =\n '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M6 18L18 6M6 6l12 12\" /></svg>';\n const processed = this.processSvgString(fallback);\n this.svgContent.set(this.sanitizer.bypassSecurityTrustHtml(processed));\n },\n });\n });\n }\n\n /**\n * Process SVG string to add size, color, and accessibility attributes\n * @private\n */\n private processSvgString(svgText: string): string {\n // Parse as DOM to manipulate\n const parser = new DOMParser();\n const doc = parser.parseFromString(svgText, 'image/svg+xml');\n const svg = doc.querySelector('svg');\n\n if (!svg) return svgText;\n\n // Set size\n const size = this.sizeInPixels();\n svg.setAttribute('width', size);\n svg.setAttribute('height', size);\n\n // Set color\n const color = this.colorStyle();\n svg.style.color = color;\n\n // Set accessibility attributes\n if (this.decorative()) {\n svg.setAttribute('aria-hidden', 'true');\n svg.removeAttribute('role');\n svg.removeAttribute('aria-label');\n } else {\n svg.setAttribute('role', 'img');\n svg.removeAttribute('aria-hidden');\n\n const label = this.ariaLabel();\n if (label) {\n svg.setAttribute('aria-label', label);\n } else {\n svg.removeAttribute('aria-label');\n }\n }\n\n return new XMLSerializer().serializeToString(svg);\n }\n}\n","<div \n [class]=\"computedClasses()\"\n [innerHTML]=\"svgContent()\"\n [style.width]=\"sizeInPixels()\"\n [style.height]=\"sizeInPixels()\"\n></div>\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n model,\n computed,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IconComponent } from '../icon/icon.component';\n\n/**\n * Accordion component for collapsible content sections.\n *\n * @example\n * ```html\n * <lc-accordion title=\"Section Title\" [(expanded)]=\"isOpen\">\n * <p>Collapsible content here</p>\n * </lc-accordion>\n * ```\n */\n@Component({\n selector: 'lc-accordion',\n standalone: true,\n imports: [CommonModule, IconComponent],\n templateUrl: './accordion.component.html',\n styleUrl: './accordion.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AccordionComponent {\n /** Title displayed in the accordion header */\n readonly title = input.required<string>();\n\n /** Whether the accordion is expanded (two-way binding) */\n readonly expanded = model<boolean>(false);\n\n /** Visual variant */\n readonly variant = input<'outlined' | 'flat'>('outlined');\n\n /** Size of the header */\n readonly size = input<'sm' | 'md' | 'lg'>('md');\n\n /** Whether the accordion is disabled */\n readonly disabled = input<boolean>(false);\n\n /** Computed CSS classes */\n protected accordionClasses = computed(() => {\n const classes = ['lc-accordion', `lc-accordion--${this.variant()}`, `lc-accordion--${this.size()}`];\n if (this.expanded()) classes.push('lc-accordion--expanded');\n if (this.disabled()) classes.push('lc-accordion--disabled');\n return classes.join(' ');\n });\n\n /** Toggle expanded state */\n protected toggle(): void {\n if (!this.disabled()) {\n this.expanded.update((v) => !v);\n }\n }\n\n /** Handle keyboard events for accessibility */\n protected onKeydown(event: KeyboardEvent): void {\n if (this.disabled()) return;\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.toggle();\n }\n }\n}\n","<div [class]=\"accordionClasses()\" role=\"region\">\n <button\n class=\"lc-accordion__header\"\n [attr.aria-expanded]=\"expanded()\"\n [attr.aria-disabled]=\"disabled()\"\n [disabled]=\"disabled()\"\n (click)=\"toggle()\"\n (keydown)=\"onKeydown($event)\"\n >\n <span class=\"lc-accordion__title\">{{ title() }}</span>\n <lc-icon\n class=\"lc-accordion__icon\"\n [name]=\"expanded() ? 'chevron-up' : 'chevron-down'\"\n size=\"sm\"\n ></lc-icon>\n </button>\n\n @if (expanded()) {\n <div class=\"lc-accordion__body\">\n <ng-content></ng-content>\n </div>\n }\n</div>\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ViewChild,\n ElementRef,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport type ButtonVariant =\n | 'primary'\n | 'secondary'\n | 'outline'\n | 'ghost'\n | 'link'\n | 'danger'\n | 'warning'\n | 'info';\nexport type ButtonSize = 'xs' | 'sm' | 'md' | 'lg';\nexport type ButtonType = 'button' | 'submit' | 'reset';\n\n@Component({\n selector: 'lc-button',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './button.component.html',\n styleUrl: './button.component.scss',\n // eslint-disable-next-line @angular-eslint/use-component-view-encapsulation\n encapsulation: ViewEncapsulation.None, // Required for dynamic variant class styling\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ButtonComponent {\n @Input() variant: ButtonVariant = 'primary';\n @Input() size: ButtonSize = 'md';\n @Input() disabled = false;\n @Input() loading = false;\n @Input() isLoading = false; // Alias for loading\n @Input() iconOnly = false; // Icon-only button (no text, square shape)\n @Input() fullWidth = false;\n @Input() ariaLabel = '';\n @Input() type: ButtonType = 'button';\n\n @Output() readonly clicked = new EventEmitter<void>();\n @Output() readonly focused = new EventEmitter<void>();\n @Output() readonly blurred = new EventEmitter<void>();\n\n @ViewChild('buttonElement') buttonElement!: ElementRef<HTMLButtonElement>;\n\n get isDisabled(): boolean {\n return this.disabled || this.loading || this.isLoading;\n }\n\n handleClick(): void {\n if (!this.isDisabled) {\n this.clicked.emit();\n }\n }\n\n handleFocus(): void {\n this.focused.emit();\n }\n\n handleBlur(): void {\n this.blurred.emit();\n }\n\n focus(): void {\n this.buttonElement?.nativeElement.focus();\n }\n\n blur(): void {\n this.buttonElement?.nativeElement.blur();\n }\n}\n","<button\n #buttonElement\n [type]=\"type\"\n [disabled]=\"isDisabled\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-disabled]=\"isDisabled ? 'true' : 'false'\"\n [attr.aria-busy]=\"loading ? 'true' : 'false'\"\n [ngClass]=\"{\n 'btn': true,\n 'btn-primary': variant === 'primary',\n 'btn-secondary': variant === 'secondary',\n 'btn-outline': variant === 'outline',\n 'btn-ghost': variant === 'ghost',\n 'btn-link': variant === 'link',\n 'btn-danger': variant === 'danger',\n 'btn-warning': variant === 'warning',\n 'btn-info': variant === 'info',\n 'btn-xs': size === 'xs',\n 'btn-sm': size === 'sm',\n 'btn-md': size === 'md',\n 'btn-lg': size === 'lg',\n 'btn-icon-only': iconOnly,\n 'btn-full-width': fullWidth\n }\"\n (click)=\"handleClick()\"\n (focus)=\"handleFocus()\"\n (blur)=\"handleBlur()\"\n>\n @if (loading) {\n <span class=\"loading-spinner\"></span>\n }\n @if (!loading) {\n <ng-content select=\"[slot='icon-before']\" />\n }\n <ng-content></ng-content>\n @if (!loading) {\n <ng-content select=\"[slot='icon-after']\" />\n }\n</button>\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n output,\n HostListener,\n computed,\n} from '@angular/core';\n\n/**\n * Card component for content grouping and hierarchy.\n *\n * @example\n * ```html\n * <lc-card title=\"Card Title\" variant=\"elevated\" padding=\"md\">\n * <p>Card body content</p>\n * </lc-card>\n * ```\n */\n@Component({\n selector: 'lc-card',\n standalone: true,\n templateUrl: './card.component.html',\n styleUrls: ['./card.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CardComponent {\n /**\n * Optional title rendered as a styled header.\n * For complex headers (e.g. title + action button), use content projection instead.\n */\n title = input<string | undefined>(undefined);\n\n /**\n * Optional subtitle rendered below the title.\n */\n subtitle = input<string | undefined>(undefined);\n\n /**\n * Visual variant of the card\n * - elevated: Box shadow (default)\n * - outlined: Border only\n * - flat: No shadow or border\n * @default 'elevated'\n */\n variant = input<'elevated' | 'outlined' | 'flat'>('elevated');\n\n /**\n * Padding inside the card\n * @default 'md'\n */\n padding = input<'none' | 'xs' | 'sm' | 'md' | 'lg'>('md');\n\n /**\n * Whether the card is clickable (hover effects, cursor pointer)\n * @default false\n */\n clickable = input<boolean>(false);\n\n /**\n * Whether the card is selected (if clickable)\n * @default false\n */\n selected = input<boolean>(false);\n\n /**\n * Border radius size\n * @default 'md'\n */\n borderRadius = input<'none' | 'sm' | 'md' | 'lg' | 'full'>('md');\n\n /**\n * ARIA label for accessibility\n */\n ariaLabel = input<string | undefined>(undefined);\n\n /**\n * Emitted when card is clicked (if clickable)\n */\n readonly cardClick = output<MouseEvent>();\n\n /**\n * Compute card CSS classes based on inputs\n */\n protected cardClasses = computed(() => {\n const classes = [\n 'card',\n `card-${this.variant()}`,\n `card-padding-${this.padding()}`,\n `card-radius-${this.borderRadius()}`,\n ];\n\n if (this.clickable()) {\n classes.push('card-clickable');\n }\n\n if (this.selected()) {\n classes.push('card-selected');\n }\n\n return classes.join(' ');\n });\n\n /**\n * Compute ARIA role based on clickable state\n */\n protected role = computed(() => (this.clickable() ? 'button' : 'article'));\n\n /**\n * Handle card click events\n */\n protected handleClick(event: MouseEvent): void {\n if (this.clickable()) {\n this.cardClick.emit(event);\n }\n }\n\n /**\n * Handle keyboard events for accessibility\n */\n @HostListener('keydown', ['$event'])\n protected handleKeydown(event: KeyboardEvent): void {\n if (this.clickable() && (event.key === 'Enter' || event.key === ' ')) {\n event.preventDefault();\n const mouseEvent = new MouseEvent('click', {\n bubbles: true,\n cancelable: true,\n });\n this.cardClick.emit(mouseEvent);\n }\n }\n}\n","<div\n [class]=\"cardClasses()\"\n [attr.role]=\"role()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.tabindex]=\"clickable() ? 0 : null\"\n (click)=\"handleClick($event)\"\n>\n @if (title()) {\n <div class=\"card__header\">\n <h3 class=\"card__title\">{{ title() }}</h3>\n @if (subtitle()) {\n <p class=\"card__subtitle\">{{ subtitle() }}</p>\n }\n </div>\n }\n <ng-content select=\"[card-header]\"></ng-content>\n <div class=\"card__body\">\n <ng-content></ng-content>\n </div>\n <ng-content select=\"[card-footer]\"></ng-content>\n</div>\n","import {\n Component,\n input,\n output,\n signal,\n computed,\n ChangeDetectionStrategy,\n forwardRef,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport type CheckboxSize = 'xs' | 'sm' | 'md' | 'lg';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'lc-checkbox',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './checkbox.component.html',\n styleUrl: './checkbox.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxComponent),\n multi: true,\n },\n ],\n})\nexport class CheckboxComponent implements ControlValueAccessor {\n // Inputs\n readonly id = input<string>(`lc-checkbox-${nextUniqueId++}`);\n readonly label = input<string>('');\n readonly error = input<boolean>(false);\n readonly errorMessage = input<string>('');\n readonly helpText = input<string>('');\n readonly size = input<CheckboxSize>('md');\n readonly required = input<boolean>(false);\n readonly ariaLabel = input<string>('');\n readonly ariaLabelledBy = input<string>('');\n readonly ariaDescribedBy = input<string>('');\n\n // Outputs\n readonly checkedChange = output<boolean>();\n\n // Internal state (exposed as signals for testing/external access)\n readonly checked = signal(false);\n readonly disabled = signal(false);\n readonly indeterminate = signal(false);\n\n // Computed values\n readonly computedChecked = computed(() => this.checked());\n readonly computedDisabled = computed(() => this.disabled());\n readonly computedIndeterminate = computed(() => this.indeterminate());\n\n readonly labelClasses = computed(() => {\n const classes = ['checkbox-label', `checkbox-${this.size()}`];\n\n if (this.computedChecked()) {\n classes.push('checkbox-checked');\n }\n\n if (this.computedDisabled()) {\n classes.push('checkbox-disabled');\n }\n\n if (this.computedIndeterminate()) {\n classes.push('checkbox-indeterminate');\n }\n\n if (this.error()) {\n classes.push('checkbox-error');\n }\n\n if (this.required()) {\n classes.push('checkbox-required');\n }\n\n return classes.join(' ');\n });\n\n // ControlValueAccessor implementation\n writeValue(value: boolean | null): void {\n this.checked.set(value ?? false);\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n // Event handlers\n handleChange(event: Event): void {\n if (this.computedDisabled()) {\n event.preventDefault();\n return;\n }\n\n const target = event.target as HTMLInputElement;\n const newValue = target.checked;\n\n // Clear indeterminate state when user interacts\n if (this.computedIndeterminate()) {\n this.indeterminate.set(false);\n }\n\n this.checked.set(newValue);\n this.onChange(newValue);\n this.checkedChange.emit(newValue);\n }\n\n handleBlur(): void {\n this.onTouched();\n }\n\n // Control Value Accessor callbacks (private)\n private onChange: (value: boolean) => void = () => {};\n private onTouched: () => void = () => {};\n}\n","<label [attr.for]=\"id()\" [class]=\"labelClasses()\">\n <input\n type=\"checkbox\"\n [id]=\"id()\"\n [checked]=\"computedChecked()\"\n [disabled]=\"computedDisabled()\"\n [indeterminate]=\"computedIndeterminate()\"\n [required]=\"required()\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-labelledby]=\"ariaLabelledBy() || null\"\n [attr.aria-describedby]=\"ariaDescribedBy() || null\"\n [attr.aria-required]=\"required() ? 'true' : null\"\n [attr.aria-invalid]=\"error() ? 'true' : null\"\n [attr.aria-disabled]=\"computedDisabled() ? 'true' : null\"\n [attr.tabindex]=\"computedDisabled() ? -1 : 0\"\n role=\"checkbox\"\n class=\"checkbox-input\"\n (change)=\"handleChange($event)\"\n (blur)=\"handleBlur()\"\n />\n <span class=\"checkbox-box\">\n <svg\n class=\"checkbox-icon\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <!-- Checkmark icon -->\n @if (computedChecked() && !computedIndeterminate()) {\n <path\n d=\"M13.5 4L6 11.5L2.5 8\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n }\n <!-- Indeterminate icon -->\n @if (computedIndeterminate()) {\n <path\n d=\"M4 8H12\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n />\n }\n </svg>\n </span>\n @if (label()) {\n <span class=\"checkbox-label-text\">{{ label() }}</span>\n }\n</label>\n\n@if (helpText() && !error()) {\n <div class=\"checkbox-help-text\">{{ helpText() }}</div>\n}\n\n@if (error() && errorMessage()) {\n <div class=\"checkbox-error-message\">{{ errorMessage() }}</div>\n}\n","import { Component, Input, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/**\n * Logo Component\n *\n * Displays the Life-Cockpit logo or emblem.\n *\n * Usage:\n * ```html\n * <lc-logo variant=\"full\" size=\"md\"></lc-logo>\n * <lc-logo variant=\"emblem\" size=\"sm\"></lc-logo>\n * ```\n */\n@Component({\n selector: 'lc-logo',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './logo.component.html',\n styleUrls: ['./logo.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LogoComponent {\n /**\n * Logo variant to display\n * - 'full': Full logo with text\n * - 'emblem': Just the emblem/icon\n */\n @Input() variant: 'full' | 'emblem' = 'full';\n\n /**\n * Size of the logo\n * - 'xs': 24px height\n * - 'sm': 32px height\n * - 'md': 48px height (default)\n * - 'lg': 64px height\n * - 'xl': 96px height\n */\n @Input() size: 'xs' | 'sm' | 'md' | 'lg' | 'xl' = 'md';\n\n /**\n * Alt text for accessibility\n */\n @Input() alt = 'Life-Cockpit';\n\n /**\n * Makes the logo appear clickable\n */\n @Input() clickable = false;\n\n get logoSrc(): string {\n return this.variant === 'emblem'\n ? '/assets/life-cockpit-emblem.svg'\n : '/assets/life-cockpit-logo.svg';\n }\n\n get logoClasses(): string {\n const classes = [`size-${this.size}`];\n if (this.clickable) {\n classes.push('clickable');\n }\n return classes.join(' ');\n }\n}\n","<img \n [src]=\"logoSrc\" \n [alt]=\"alt\"\n [class]=\"logoClasses\"\n class=\"lc-logo\"\n/>\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n HostListener,\n ElementRef,\n inject,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IconComponent } from '../icon/icon.component';\n\nexport interface MenuItem {\n id: string;\n label: string;\n icon?: string;\n iconSize?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n href?: string;\n target?: '_blank' | '_self' | '_parent' | '_top';\n variant?: 'default' | 'danger';\n dividerAfter?: boolean;\n disabled?: boolean;\n metadata?: {\n subtitle?: string;\n badge?: string;\n };\n}\n\n/**\n * Menu Component - Dropdown menu for navigation and actions\n *\n * Features:\n * - Customizable menu items with icons\n * - Support for links and buttons\n * - Dividers between menu sections\n * - Optional subtitle/metadata for items\n * - Danger variant for destructive actions\n * - Click outside to close\n * - Keyboard navigation (Escape to close)\n * - OnPush change detection for performance\n *\n * @example\n * ```html\n * <lc-menu\n * [items]=\"menuItems\"\n * [isOpen]=\"isMenuOpen\"\n * (itemClick)=\"handleMenuClick($event)\"\n * (closed)=\"isMenuOpen = false\"\n * >\n * <button trigger>Open Menu</button>\n * <div header>User Profile</div>\n * </lc-menu>\n * ```\n */\n@Component({\n selector: 'lc-menu',\n standalone: true,\n imports: [CommonModule, IconComponent],\n templateUrl: './menu.component.html',\n styleUrl: './menu.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MenuComponent {\n /**\n * Menu items to display\n */\n @Input() items: MenuItem[] = [];\n\n /**\n * Whether the menu is open\n */\n @Input() isOpen = false;\n\n /**\n * Menu position relative to trigger\n * @default 'bottom-right'\n */\n @Input() position: 'bottom-left' | 'bottom-right' | 'top-left' | 'top-right' = 'bottom-right';\n\n /**\n * Minimum width of menu dropdown\n * @default '220px'\n */\n @Input() minWidth = '220px';\n\n /**\n * Emitted when a menu item is clicked\n */\n @Output() readonly itemClick = new EventEmitter<MenuItem>();\n\n /**\n * Emitted when the menu should be closed (e.g., click outside, Escape key)\n */\n @Output() readonly closed = new EventEmitter<void>();\n\n private elementRef = inject(ElementRef<HTMLElement>);\n\n /**\n * Handle menu item click\n */\n onItemClick(item: MenuItem, event: Event): void {\n if (item.disabled) {\n event.preventDefault();\n return;\n }\n\n // If it's a link with href, let the browser handle navigation\n if (item.href) {\n // Event will propagate naturally\n } else {\n // For button items, prevent default and emit event\n event.preventDefault();\n }\n\n this.itemClick.emit(item);\n }\n\n /**\n * Close the menu\n */\n close(): void {\n this.closed.emit();\n }\n\n /**\n * Handle click outside to close menu\n */\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n if (!this.isOpen) {\n return;\n }\n\n const target = event.target;\n if (target instanceof Node) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n const clickedInside = this.elementRef.nativeElement.contains(target);\n if (!clickedInside) {\n this.close();\n }\n }\n }\n\n /**\n * Handle Escape key to close menu\n */\n @HostListener('document:keydown.escape')\n onEscapeKey(): void {\n if (this.isOpen) {\n this.close();\n }\n }\n}\n","<div class=\"lc-menu\">\n <!-- Trigger slot -->\n <div class=\"lc-menu__trigger\">\n <ng-content select=\"[trigger]\" />\n </div>\n\n <!-- Dropdown menu -->\n @if (isOpen) {\n <div \n class=\"lc-menu__dropdown\"\n [class.lc-menu__dropdown--bottom-left]=\"position === 'bottom-left'\"\n [class.lc-menu__dropdown--bottom-right]=\"position === 'bottom-right'\"\n [class.lc-menu__dropdown--top-left]=\"position === 'top-left'\"\n [class.lc-menu__dropdown--top-right]=\"position === 'top-right'\"\n [style.min-width]=\"minWidth\"\n >\n <!-- Optional header slot -->\n <ng-content select=\"[header]\" />\n\n <!-- Menu items -->\n @for (item of items; track item.id) {\n @if (item.href) {\n <!-- Link item -->\n <a\n [href]=\"item.href\"\n [target]=\"item.target || '_self'\"\n [attr.rel]=\"item.target === '_blank' ? 'noopener noreferrer' : null\"\n class=\"lc-menu__item\"\n [class.lc-menu__item--danger]=\"item.variant === 'danger'\"\n [class.lc-menu__item--disabled]=\"item.disabled\"\n (click)=\"onItemClick(item, $event)\"\n >\n @if (item.icon) {\n <lc-icon [name]=\"item.icon\" [size]=\"item.iconSize || 'sm'\" />\n }\n <span class=\"lc-menu__item-content\">\n <span class=\"lc-menu__item-label\">{{ item.label }}</span>\n @if (item.metadata?.subtitle) {\n <span class=\"lc-menu__item-subtitle\">{{ item.metadata?.subtitle }}</span>\n }\n </span>\n @if (item.metadata?.badge) {\n <span class=\"lc-menu__item-badge\">{{ item.metadata?.badge }}</span>\n }\n </a>\n } @else {\n <!-- Button item -->\n <button\n type=\"button\"\n class=\"lc-menu__item\"\n [class.lc-menu__item--danger]=\"item.variant === 'danger'\"\n [class.lc-menu__item--disabled]=\"item.disabled\"\n [disabled]=\"item.disabled\"\n (click)=\"onItemClick(item, $event)\"\n >\n @if (item.icon) {\n <lc-icon [name]=\"item.icon\" [size]=\"item.iconSize || 'sm'\" />\n }\n <span class=\"lc-menu__item-content\">\n <span class=\"lc-menu__item-label\">{{ item.label }}</span>\n @if (item.metadata?.subtitle) {\n <span class=\"lc-menu__item-subtitle\">{{ item.metadata?.subtitle }}</span>\n }\n </span>\n @if (item.metadata?.badge) {\n <span class=\"lc-menu__item-badge\">{{ item.metadata?.badge }}</span>\n }\n </button>\n }\n\n @if (item.dividerAfter) {\n <hr class=\"lc-menu__divider\" />\n }\n }\n\n <!-- Optional footer slot -->\n <ng-content select=\"[footer]\" />\n </div>\n }\n</div>\n","/* eslint-disable @typescript-eslint/member-ordering */\nimport {\n Component,\n input,\n output,\n signal,\n viewChild,\n ElementRef,\n ChangeDetectionStrategy,\n forwardRef,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { IconComponent } from '../icon/icon.component';\n\n/**\n * Text input component for form data entry.\n *\n * Implements ControlValueAccessor for seamless integration with Angular forms.\n * Supports validation, icons, character count, and accessibility features.\n *\n * @example\n * ```html\n * <lc-input\n * label=\"Email\"\n * type=\"email\"\n * placeholder=\"Enter your email\"\n * [(ngModel)]=\"email\"\n * [error]=\"emailError\"\n * ></lc-input>\n * ```\n */\n@Component({\n selector: 'lc-input',\n imports: [CommonModule, IconComponent],\n templateUrl: './input.component.html',\n styleUrl: './input.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InputComponent),\n multi: true,\n },\n ],\n})\nexport class InputComponent implements ControlValueAccessor {\n // Input Properties\n /**\n * Input label (displayed above input)\n */\n readonly label = input<string>();\n\n /**\n * Placeholder text\n * @default ''\n */\n readonly placeholder = input<string>('');\n\n /**\n * Input type\n * @default 'text'\n */\n readonly type = input<'text' | 'email' | 'password' | 'number' | 'tel' | 'url'>('text');\n\n /**\n * Size of the input\n * @default 'md'\n */\n readonly size = input<'xs' | 'sm' | 'md' | 'lg'>('md');\n\n /**\n * Whether the input is disabled\n * @default false\n */\n readonly disabled = input<boolean>(false);\n\n /**\n * Whether the input is read-only\n * @default false\n */\n readonly readonly = input<boolean>(false);\n\n /**\n * Whether the input is required\n * @default false\n */\n readonly required = input<boolean>(false);\n\n /**\n * Error message to display (if validation fails)\n */\n readonly error = input<string>();\n\n /**\n * Helper text to display below input\n */\n readonly helperText = input<string>();\n\n /**\n * Icon to display before input text (Heroicons name)\n * @example 'envelope'\n */\n readonly iconBefore = input<string>();\n\n /**\n * Icon to display after input text (Heroicons name)\n * @example 'eye'\n */\n readonly iconAfter = input<string>();\n\n /**\n * Maximum number of characters\n */\n readonly maxLength = input<number>();\n\n /**\n * Whether to show character count\n * @default false\n */\n readonly showCharCount = input<boolean>(false);\n\n /**\n * ARIA label for accessibility\n */\n readonly ariaLabel = input<string>();\n\n // Output Events\n /**\n * Emitted when input value changes\n */\n readonly valueChange = output<string>();\n\n /**\n * Emitted when input receives focus\n */\n readonly focused = output<void>();\n\n /**\n * Emitted when input loses focus\n */\n readonly blurred = output<void>();\n\n /**\n * Emitted when Enter key is pressed\n */\n readonly enterPressed = output<void>();\n\n // Internal state\n readonly value = signal<string>('');\n readonly inputId = `lc-input-${Math.random().toString(36).substr(2, 9)}`;\n\n // ViewChild reference\n private readonly inputElement = viewChild<ElementRef<HTMLInputElement>>('inputRef');\n\n // Internal disabled state (for ControlValueAccessor)\n private readonly _formDisabled = signal<boolean>(false);\n\n // ControlValueAccessor callbacks\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n /**\n * Computed disabled state from both input and form control\n */\n protected get isDisabled(): boolean {\n return this.disabled() || this._formDisabled();\n }\n\n /**\n * Gets current character count\n */\n protected get charCount(): number {\n return this.value().length;\n }\n\n /**\n * Determines if error state should be shown\n */\n protected get hasError(): boolean {\n return !!this.error();\n }\n\n /**\n * Programmatically focus the input\n */\n public focus(): void {\n this.inputElement()?.nativeElement.focus();\n }\n\n /**\n * Programmatically select input text\n */\n public select(): void {\n this.inputElement()?.nativeElement.select();\n }\n\n /**\n * Clear the input value\n */\n public clear(): void {\n this.value.set('');\n this.onChange('');\n this.valueChange.emit('');\n }\n\n // ControlValueAccessor implementation\n writeValue(value: string): void {\n this.value.set(value || '');\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this._formDisabled.set(isDisabled);\n }\n\n /**\n * Handles input value changes\n */\n protected onInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n const newValue = target.value;\n this.value.set(newValue);\n this.onChange(newValue);\n this.valueChange.emit(newValue);\n }\n\n /**\n * Handles input focus\n */\n protected onFocus(): void {\n this.focused.emit();\n }\n\n /**\n * Handles input blur\n */\n protected onBlur(): void {\n this.onTouched();\n this.blurred.emit();\n }\n\n /**\n * Handles keydown events\n */\n protected onKeydown(event: KeyboardEvent): void {\n if (event.key === 'Enter') {\n this.enterPressed.emit();\n }\n }\n}\n","<div class=\"input-wrapper\">\n <!-- Label -->\n @if (label()) {\n <label [for]=\"inputId\" class=\"input-label\">\n {{ label() }}\n @if (required()) {\n <span class=\"required-indicator\" aria-label=\"required\">*</span>\n }\n </label>\n }\n\n <!-- Input Container -->\n <div\n class=\"input-container\"\n [class.input-xs]=\"size() === 'xs'\"\n [class.input-sm]=\"size() === 'sm'\"\n [class.input-md]=\"size() === 'md'\"\n [class.input-lg]=\"size() === 'lg'\"\n [class.input-error]=\"hasError\"\n [class.input-disabled]=\"isDisabled\"\n [class.input-readonly]=\"readonly()\"\n >\n <!-- Icon Before -->\n @if (iconBefore()) {\n <span class=\"input-icon input-icon-before\" aria-hidden=\"true\">\n <lc-icon [name]=\"iconBefore()!\" size=\"sm\" [decorative]=\"true\" />\n </span>\n }\n\n <!-- Input Element -->\n <input\n #inputRef\n [id]=\"inputId\"\n [type]=\"type()\"\n [value]=\"value()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"isDisabled\"\n [readonly]=\"readonly()\"\n [required]=\"required()\"\n [attr.maxlength]=\"maxLength() || null\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-required]=\"required() || undefined\"\n [attr.aria-invalid]=\"hasError || undefined\"\n [attr.aria-describedby]=\"\n (error() ? inputId + '-error' : '') + (helperText() ? ' ' + inputId + '-helper' : '')\n \"\n class=\"input-field\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n (keydown)=\"onKeydown($event)\"\n />\n\n <!-- Icon After -->\n @if (iconAfter()) {\n <span class=\"input-icon input-icon-after\" aria-hidden=\"true\">\n <lc-icon [name]=\"iconAfter()!\" size=\"sm\" [decorative]=\"true\" />\n </span>\n }\n </div>\n\n <!-- Helper Text / Error Message / Character Count -->\n @if (error() || helperText() || (showCharCount() && maxLength())) {\n <div class=\"input-footer\">\n <!-- Error Message -->\n @if (error()) {\n <p [id]=\"inputId + '-error'\" class=\"input-error\" role=\"alert\">\n {{ error() }}\n </p>\n }\n\n <!-- Helper Text -->\n @if (helperText() && !error()) {\n <p [id]=\"inputId + '-helper'\" class=\"input-helper\">\n {{ helperText() }}\n </p>\n }\n\n <!-- Character Count -->\n @if (showCharCount() && maxLength()) {\n <p class=\"char-count\" aria-live=\"polite\">\n {{ charCount }} / {{ maxLength() }}\n </p>\n }\n </div>\n }\n</div>\n","import {\n Component,\n input,\n output,\n signal,\n computed,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n inject,\n OnInit,\n OnDestroy,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\nexport type RadioSize = 'xs' | 'sm' | 'md' | 'lg';\n\nlet nextUniqueId = 0;\n\n/* eslint-disable @typescript-eslint/member-ordering */\n\n@Component({\n selector: 'lc-radio',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './radio.component.html',\n styleUrl: './radio.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RadioComponent implements ControlValueAccessor, OnInit, OnDestroy {\n // Inputs\n readonly id = input<string>(`lc-radio-${nextUniqueId++}`);\n readonly label = input<string>('');\n readonly value = input<string>('');\n readonly name = input<string>('');\n readonly error = input<boolean>(false);\n readonly errorMessage = input<string>('');\n readonly helpText = input<string>('');\n readonly size = input<RadioSize>('md');\n readonly required = input<boolean>(false);\n readonly ariaLabel = input<string>('');\n readonly ariaLabelledBy = input<string>('');\n readonly ariaDescribedBy = input<string>('');\n\n // Outputs\n readonly checkedChange = output<boolean>();\n readonly valueChange = output<string>();\n\n // Computed state\n readonly checked = computed(() => {\n const fv = this.formValue();\n const v = this.value();\n // Only match if both have actual values (not just empty strings)\n return fv !== '' && v !== '' && fv === v;\n });\n readonly disabled = signal(false);\n readonly computedChecked = computed(() => this.checked());\n readonly computedDisabled = computed(() => this.disabled());\n\n readonly labelClasses = computed(() => {\n const classes = ['radio-label', `radio-${this.size()}`];\n\n if (this.computedChecked()) {\n classes.push('radio-checked');\n }\n\n if (this.computedDisabled()) {\n classes.push('radio-disabled');\n }\n\n if (this.error()) {\n classes.push('radio-error');\n }\n\n if (this.required()) {\n classes.push('radio-required');\n }\n\n return classes.join(' ');\n });\n\n // Private fields\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly ngControl = inject(NgControl, { optional: true, self: true });\n private formValue = signal<string>('');\n private valueChangeSub?: Subscription;\n\n // Control Value Accessor callbacks\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor() {\n // Prevent circular dependency by not providing NG_VALUE_ACCESSOR here\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n ngOnInit(): void {\n // Subscribe to form control value changes\n if (this.ngControl?.control) {\n this.valueChangeSub = this.ngControl.control.valueChanges.subscribe((value: string) => {\n this.formValue.set(value || '');\n this.cdr.markForCheck();\n });\n // Set initial value\n const initialValue = this.ngControl.control.value as string;\n if (initialValue) {\n this.formValue.set(initialValue);\n }\n }\n }\n\n ngOnDestroy(): void {\n this.valueChangeSub?.unsubscribe();\n }\n\n // ControlValueAccessor implementation\n writeValue(value: string | null): void {\n // Update the form value signal - the computed 'checked' will automatically update\n this.formValue.set(value || '');\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n // Event handlers\n public handleChange(event: Event): void {\n if (this.computedDisabled()) {\n event.preventDefault();\n return;\n }\n\n // Update local state immediately for instant feedback\n this.formValue.set(this.value());\n\n // Notify the form control - it will call writeValue on all radios\n this.onChange(this.value());\n\n this.valueChange.emit(this.value());\n this.checkedChange.emit(true);\n }\n\n public handleBlur(): void {\n this.onTouched();\n }\n}\n","<label [attr.for]=\"id()\" [class]=\"labelClasses()\">\n <input\n type=\"radio\"\n [id]=\"id()\"\n [name]=\"name()\"\n [value]=\"value()\"\n [checked]=\"computedChecked()\"\n [disabled]=\"computedDisabled()\"\n [required]=\"required()\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-labelledby]=\"ariaLabelledBy() || null\"\n [attr.aria-describedby]=\"ariaDescribedBy() || null\"\n [attr.aria-required]=\"required() ? 'true' : null\"\n [attr.aria-invalid]=\"error() ? 'true' : null\"\n [attr.aria-disabled]=\"computedDisabled() ? 'true' : null\"\n [attr.tabindex]=\"computedDisabled() ? -1 : 0\"\n role=\"radio\"\n class=\"radio-input\"\n (change)=\"handleChange($event)\"\n (blur)=\"handleBlur()\"\n />\n <span class=\"radio-circle\">\n <span class=\"radio-dot\"></span>\n </span>\n @if (label()) {\n <span class=\"radio-label-text\">{{ label() }}</span>\n }\n</label>\n\n@if (helpText() && !error()) {\n <div class=\"radio-help-text\">{{ helpText() }}</div>\n}\n\n@if (error() && errorMessage()) {\n <div class=\"radio-error-message\">{{ errorMessage() }}</div>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n ViewEncapsulation,\n} from '@angular/core';\n\n/**\n * Typography Component\n *\n * A flexible text component that provides consistent typography styling across the application.\n * Supports semantic HTML elements (h1-h6, p, span), text alignment, color variants,\n * font weights, text transforms, and line clamping.\n *\n * @example\n * ```html\n * <lc-typography variant=\"h1\" align=\"center\" color=\"primary\">\n * Main Heading\n * </lc-typography>\n *\n * <lc-typography variant=\"body1\" gutterBottom>\n * Body text with bottom margin\n * </lc-typography>\n *\n * <lc-typography variant=\"caption\" color=\"secondary\" lineClamp=\"2\">\n * This is a caption that will be truncated after 2 lines...\n * </lc-typography>\n * ```\n */\n@Component({\n selector: 'lc-typography',\n templateUrl: './typography.component.html',\n styleUrl: './typography.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/use-component-view-encapsulation\n encapsulation: ViewEncapsulation.None, // Required for global typography utilities\n})\nexport class TypographyComponent {\n /**\n * Typography variant determining the HTML element and default styles\n * - h1-h6: Heading elements with corresponding sizes\n * - body1: Default paragraph text (16px)\n * - body2: Smaller body text (14px)\n * - subtitle1: Larger subtitle (18px)\n * - subtitle2: Smaller subtitle (14px)\n * - caption: Small helper text (12px)\n * - overline: Uppercase accent text (10px)\n * @default 'body1'\n */\n variant = input<\n | 'h1'\n | 'h2'\n | 'h3'\n | 'h4'\n | 'h5'\n | 'h6'\n | 'body1'\n | 'body2'\n | 'subtitle1'\n | 'subtitle2'\n | 'caption'\n | 'overline'\n >('body1');\n\n /**\n * Text alignment\n * @default 'left'\n */\n align = input<'left' | 'center' | 'right' | 'justify'>('left');\n\n /**\n * Text color using semantic color tokens\n * @default 'primary'\n */\n color = input<'primary' | 'secondary' | 'disabled' | 'error' | 'success' | 'warning' | 'info'>(\n 'primary',\n );\n\n /**\n * Font weight\n * @default 'regular'\n */\n weight = input<'regular' | 'medium' | 'semibold' | 'bold'>('regular');\n\n /**\n * Text transform\n * @default 'none'\n */\n transform = input<'none' | 'uppercase' | 'lowercase' | 'capitalize'>('none');\n\n /**\n * Prevent text wrapping (applies ellipsis on overflow)\n * @default false\n */\n noWrap = input<boolean>(false);\n\n /**\n * Limit text to a specific number of lines (1-6)\n * Uses CSS line-clamp for multi-line truncation\n * @default undefined\n */\n lineClamp = input<number | undefined>(undefined);\n\n /**\n * Add bottom margin (1rem) for spacing between elements\n * @default false\n */\n gutterBottom = input<boolean>(false);\n\n /**\n * Compute the HTML element tag based on variant\n */\n readonly elementTag = computed<string>(() => {\n const variantValue = this.variant();\n if (variantValue.startsWith('h')) {\n return variantValue; // h1, h2, h3, h4, h5, h6\n }\n if (variantValue === 'caption' || variantValue === 'overline') {\n return 'span';\n }\n return 'p'; // body1, body2, subtitle1, subtitle2\n });\n\n /**\n * Compute all CSS classes based on inputs\n */\n readonly typographyClasses = computed<string>(() => {\n const classes: string[] = ['typography'];\n\n // Variant class\n classes.push(`typography-${this.variant()}`);\n\n // Alignment\n const alignValue = this.align();\n if (alignValue === 'left') classes.push('text-left');\n if (alignValue === 'center') classes.push('text-center');\n if (alignValue === 'right') classes.push('text-right');\n if (alignValue === 'justify') classes.push('text-justify');\n\n // Color\n const colorValue = this.color();\n if (colorValue === 'primary') classes.push('text-primary');\n if (colorValue === 'secondary') classes.push('text-secondary');\n if (colorValue === 'disabled') classes.push('text-disabled');\n if (colorValue === 'error') classes.push('text-error');\n if (colorValue === 'success') classes.push('text-success');\n if (colorValue === 'warning') classes.push('text-warning');\n if (colorValue === 'info') classes.push('text-info');\n\n // Weight\n const weightValue = this.weight();\n if (weightValue === 'regular') classes.push('font-regular');\n if (weightValue === 'medium') classes.push('font-medium');\n if (weightValue === 'semibold') classes.push('font-semibold');\n if (weightValue === 'bold') classes.push('font-bold');\n\n // Transform\n const transformValue = this.transform();\n if (transformValue === 'uppercase') classes.push('uppercase');\n if (transformValue === 'lowercase') classes.push('lowercase');\n if (transformValue === 'capitalize') classes.push('capitalize');\n\n // No wrap\n if (this.noWrap()) {\n classes.push('whitespace-nowrap', 'overflow-hidden', 'text-ellipsis');\n }\n\n // Line clamp\n const lineClampValue = this.lineClamp();\n if (lineClampValue !== undefined && lineClampValue >= 1 && lineClampValue <= 6) {\n classes.push(`line-clamp-${lineClampValue}`);\n }\n\n // Gutter bottom\n if (this.gutterBottom()) {\n classes.push('mb-4');\n }\n\n return classes.join(' ');\n });\n}\n","@switch (elementTag()) {\n @case ('h1') {\n <h1 [class]=\"typographyClasses()\">\n <ng-content></ng-content>\n </h1>\n }\n @case ('h2') {\n <h2 [class]=\"typographyClasses()\">\n <ng-content></ng-content>\n </h2>\n }\n @case ('h3') {\n <h3 [class]=\"typographyClasses()\">\n <ng-content></ng-content>\n </h3>\n }\n @case ('h4') {\n <h4 [class]=\"typographyClasses()\">\n <ng-content></ng-content>\n </h4>\n }\n @case ('h5') {\n <h5 [class]=\"typographyClasses()\">\n <ng-content></ng-content>\n </h5>\n }\n @case ('h6') {\n <h6 [class]=\"typographyClasses()\">\n <ng-content></ng-content>\n </h6>\n }\n @case ('span') {\n <span [class]=\"typographyClasses()\">\n <ng-content></ng-content>\n </span>\n }\n @default {\n <p [class]=\"typographyClasses()\">\n <ng-content></ng-content>\n </p>\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n signal,\n computed,\n ChangeDetectionStrategy,\n forwardRef,\n ElementRef,\n ViewChild,\n inject,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { OverlayModule } from '@angular/cdk/overlay';\n\nexport type DateValue = Date | string | null;\n\n/**\n * DatePicker component for date selection with calendar.\n *\n * @example\n * ```html\n * <lc-datepicker\n * variant=\"outline\"\n * size=\"md\"\n * placeholder=\"Select a date\"\n * [(ngModel)]=\"selectedDate\"\n * ></lc-datepicker>\n * ```\n */\n/* eslint-disable @typescript-eslint/member-ordering */\n@Component({\n selector: 'lc-datepicker',\n standalone: true,\n imports: [CommonModule, FormsModule, OverlayModule],\n templateUrl: './datepicker.component.html',\n styleUrl: './datepicker.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DatepickerComponent),\n multi: true,\n },\n ],\n})\nexport class DatepickerComponent implements ControlValueAccessor {\n @ViewChild('datepickerInput', { static: false, read: ElementRef })\n datepickerInput!: ElementRef;\n\n /**\n * Visual variant of the datepicker\n */\n @Input() variant: 'outline' | 'filled' = 'outline';\n\n /**\n * Size of the datepicker\n */\n @Input() size: 'xs' | 'sm' | 'md' | 'lg' = 'md';\n\n /**\n * Whether the datepicker is disabled\n */\n @Input() disabled = false;\n\n /**\n * Whether the datepicker is in error state\n */\n @Input() error = false;\n\n /**\n * Whether the datepicker is required\n */\n @Input() required = false;\n\n /**\n * Whether the datepicker is readonly\n */\n @Input() readonly = false;\n\n /**\n * Placeholder text\n */\n @Input() placeholder = 'Select a date';\n\n /**\n * Helper text displayed below the datepicker\n */\n @Input() helperText = '';\n\n /**\n * Error message displayed when error is true\n */\n @Input() errorMessage = '';\n\n /**\n * ARIA label for accessibility\n */\n @Input() ariaLabel: string | undefined = undefined;\n\n /**\n * Date format string (e.g., 'YYYY-MM-DD', 'MM/DD/YYYY')\n */\n @Input() format = 'YYYY-MM-DD';\n\n /**\n * Minimum selectable date\n */\n @Input() minDate: Date | undefined = undefined;\n\n /**\n * Maximum selectable date\n */\n @Input() maxDate: Date | undefined = undefined;\n\n /**\n * Array of disabled dates\n */\n @Input() disabledDates: Date[] = [];\n\n /**\n * Whether to disable weekends\n */\n @Input() disableWeekends = false;\n\n /**\n * Emitted when date selection changes\n */\n @Output() readonly dateChange = new EventEmitter<Date | null>();\n\n /**\n * Emitted when calendar opens\n */\n @Output() readonly opened = new EventEmitter<void>();\n\n /**\n * Emitted when calendar closes\n */\n @Output() readonly closed = new EventEmitter<void>();\n\n // Internal state\n selectedDate = signal<Date | null>(null);\n isOpen = signal<boolean>(false);\n currentMonth = signal<number>(new Date().getMonth());\n currentYear = signal<number>(new Date().getFullYear());\n inputValue = signal<string>('');\n\n // Computed values\n formattedDate = computed(() => {\n const date = this.selectedDate();\n if (!date) return '';\n return this.formatDate(date, this.format);\n });\n\n weekDays = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];\n\n monthNames = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ];\n\n currentMonthName = computed(() => {\n return this.monthNames[this.currentMonth()];\n });\n\n // Private properties\n private elementRef = inject(ElementRef);\n // eslint-disable-next-line @typescript-eslint/member-ordering\n private onChange: (value: Date | null) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/member-ordering\n private onTouched: () => void = () => {};\n\n // Public methods\n /**\n * Toggle calendar open/closed\n */\n toggle(): void {\n if (this.disabled || this.readonly) {\n return;\n }\n if (this.isOpen()) {\n this.close();\n } else {\n this.open();\n }\n }\n\n /**\n * Open calendar\n */\n open(): void {\n if (this.disabled || this.readonly) {\n return;\n }\n this.isOpen.set(true);\n\n // Set calendar to selected date's month/year or current\n if (this.selectedDate()) {\n const date = this.selectedDate()!;\n this.currentMonth.set(date.getMonth());\n this.currentYear.set(date.getFullYear());\n }\n\n this.opened.emit();\n }\n\n /**\n * Close calendar\n */\n close(): void {\n this.isOpen.set(false);\n this.closed.emit();\n }\n\n /**\n * Select a date\n */\n selectDate(date: Date): void {\n if (this.disabled || this.readonly || this.isDateDisabled(date)) {\n return;\n }\n\n this.selectedDate.set(date);\n this.inputValue.set(this.formatDate(date, this.format));\n this.onChange(date);\n this.dateChange.emit(date);\n this.close();\n }\n\n /**\n * Clear selected date\n */\n clear(): void {\n this.selectedDate.set(null);\n this.inputValue.set('');\n this.onChange(null);\n this.dateChange.emit(null);\n }\n\n /**\n * Check if a date is disabled\n */\n isDateDisabled(date: Date): boolean {\n // Check min date\n if (this.minDate && date < this.minDate) {\n return true;\n }\n\n // Check max date\n if (this.maxDate && date > this.maxDate) {\n return true;\n }\n\n // Check disabled dates\n if (this.disabledDates.some((d) => this.isSameDate(d, date))) {\n return true;\n }\n\n // Check weekends\n if (this.disableWeekends) {\n const day = date.getDay();\n if (day === 0 || day === 6) {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Check if date is today\n */\n isToday(date: Date): boolean {\n const today = new Date();\n return this.isSameDate(date, today);\n }\n\n /**\n * Check if date is selected\n */\n isSelectedDate(date: Date): boolean {\n const selected = this.selectedDate();\n return selected ? this.isSameDate(date, selected) : false;\n }\n\n /**\n * Generate calendar days for current month\n */\n generateCalendarDays(): Date[] {\n const year = this.currentYear();\n const month = this.currentMonth();\n\n const firstDay = new Date(year, month, 1);\n const lastDay = new Date(year, month + 1, 0);\n\n const days: Date[] = [];\n\n // Add previous month's days\n const firstDayOfWeek = firstDay.getDay();\n for (let i = firstDayOfWeek - 1; i >= 0; i--) {\n const date = new Date(year, month, -i);\n days.push(date);\n }\n\n // Add current month's days\n for (let i = 1; i <= lastDay.getDate(); i++) {\n days.push(new Date(year, month, i));\n }\n\n // Add next month's days to complete the grid\n const remainingDays = 42 - days.length; // 6 weeks * 7 days\n for (let i = 1; i <= remainingDays; i++) {\n days.push(new Date(year, month + 1, i));\n }\n\n return days.slice(0, 42); // Ensure exactly 42 days (6 weeks)\n }\n\n /**\n * Navigate to next month\n */\n nextMonth(): void {\n if (this.currentMonth() === 11) {\n this.currentMonth.set(0);\n this.currentYear.set(this.currentYear() + 1);\n } else {\n this.currentMonth.set(this.currentMonth() + 1);\n }\n }\n\n /**\n * Navigate to previous month\n */\n previousMonth(): void {\n if (this.currentMonth() === 0) {\n this.currentMonth.set(11);\n this.currentYear.set(this.currentYear() - 1);\n } else {\n this.currentMonth.set(this.currentMonth() - 1);\n }\n }\n\n /**\n * Navigate to today\n */\n goToToday(): void {\n const today = new Date();\n this.currentMonth.set(today.getMonth());\n this.currentYear.set(today.getFullYear());\n }\n\n /**\n * Handle input change (manual date entry)\n */\n onInputChange(value: string): void {\n this.inputValue.set(value);\n\n try {\n const date = this.parseDate(value, this.format);\n if (date && !isNaN(date.getTime()) && !this.isDateDisabled(date)) {\n this.selectedDate.set(date);\n this.onChange(date);\n this.dateChange.emit(date);\n }\n } catch {\n // Invalid date format, ignore\n }\n }\n\n /**\n * Handle keyboard navigation\n */\n onKeyDown(event: KeyboardEvent): void {\n if (this.disabled || this.readonly) {\n return;\n }\n\n if (\n !this.isOpen() &&\n (event.key === 'ArrowDown' || event.key === 'Enter' || event.key === ' ')\n ) {\n this.open();\n event.preventDefault();\n return;\n }\n\n if (!this.isOpen()) return;\n\n const currentDate = this.selectedDate() || new Date();\n let newDate: Date | null = null;\n\n switch (event.key) {\n case 'Escape':\n this.close();\n event.preventDefault();\n break;\n\n case 'ArrowRight':\n newDate = new Date(currentDate);\n newDate.setDate(currentDate.getDate() + 1);\n event.preventDefault();\n break;\n\n case 'ArrowLeft':\n newDate = new Date(currentDate);\n newDate.setDate(currentDate.getDate() - 1);\n event.preventDefault();\n break;\n\n case 'ArrowDown':\n newDate = new Date(currentDate);\n newDate.setDate(currentDate.getDate() + 7);\n event.preventDefault();\n break;\n\n case 'ArrowUp':\n newDate = new Date(currentDate);\n newDate.setDate(currentDate.getDate() - 7);\n event.preventDefault();\n break;\n\n case 'Enter':\n if (this.selectedDate()) {\n this.selectDate(this.selectedDate()!);\n }\n event.preventDefault();\n break;\n }\n\n if (newDate && !this.isDateDisabled(newDate)) {\n this.selectedDate.set(newDate);\n this.currentMonth.set(newDate.getMonth());\n this.currentYear.set(newDate.getFullYear());\n }\n }\n\n /**\n * Handle blur event\n */\n onBlur(): void {\n this.onTouched();\n }\n\n /**\n * Handle click outside\n */\n onClickOutside(): void {\n if (this.isOpen()) {\n this.close();\n }\n }\n\n // ControlValueAccessor implementation\n writeValue(value: DateValue): void {\n if (value === null || value === undefined) {\n this.selectedDate.set(null);\n this.inputValue.set('');\n } else if (value instanceof Date) {\n this.selectedDate.set(value);\n this.inputValue.set(this.formatDate(value, this.format));\n } else if (typeof value === 'string') {\n try {\n const date = this.parseDate(value, this.format);\n if (date && !isNaN(date.getTime())) {\n this.selectedDate.set(date);\n this.inputValue.set(this.formatDate(date, this.format));\n }\n } catch {\n this.selectedDate.set(null);\n this.inputValue.set('');\n }\n }\n }\n\n registerOnChange(fn: (value: Date | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n /**\n * Get computed classes for the datepicker element\n */\n get datepickerClasses(): string {\n const classes = ['lc-datepicker'];\n\n classes.push(`lc-datepicker--${this.variant}`);\n classes.push(`lc-datepicker--${this.size}`);\n\n if (this.disabled) {\n classes.push('lc-datepicker--disabled');\n }\n\n if (this.error) {\n classes.push('lc-datepicker--error');\n }\n\n if (this.readonly) {\n classes.push('lc-datepicker--readonly');\n }\n\n if (this.isOpen()) {\n classes.push('lc-datepicker--open');\n }\n\n return classes.join(' ');\n }\n\n /**\n * Check if date is in current month\n */\n isCurrentMonth(date: Date): boolean {\n return date.getMonth() === this.currentMonth() && date.getFullYear() === this.currentYear();\n }\n\n // Private helper methods\n /**\n * Check if two dates are the same day\n */\n private isSameDate(date1: Date, date2: Date): boolean {\n return (\n date1.getFullYear() === date2.getFullYear() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getDate() === date2.getDate()\n );\n }\n\n private formatDate(date: Date, format: string): string {\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const day = String(date.getDate()).padStart(2, '0');\n\n return format.replace('YYYY', String(year)).replace('MM', month).replace('DD', day);\n }\n\n private parseDate(value: string, format: string): Date {\n const yearIndex = format.indexOf('YYYY');\n const monthIndex = format.indexOf('MM');\n const dayIndex = format.indexOf('DD');\n\n const year = parseInt(value.substring(yearIndex, yearIndex + 4));\n const month = parseInt(value.substring(monthIndex, monthIndex + 2)) - 1;\n const day = parseInt(value.substring(dayIndex, dayIndex + 2));\n\n return new Date(year, month, day);\n }\n}\n","<div class=\"lc-datepicker-wrapper\">\n <div class=\"lc-datepicker-input-wrapper\">\n <input\n #datepickerInput\n type=\"text\"\n [class]=\"datepickerClasses\"\n [attr.role]=\"'combobox'\"\n [attr.aria-expanded]=\"isOpen() ? 'true' : 'false'\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-required]=\"required ? 'true' : null\"\n [attr.aria-disabled]=\"disabled ? 'true' : null\"\n [attr.aria-invalid]=\"error ? 'true' : null\"\n [attr.readonly]=\"readonly\"\n [attr.disabled]=\"disabled ? true : null\"\n [attr.placeholder]=\"placeholder\"\n [value]=\"formattedDate()\"\n (input)=\"onInputChange($any($event.target).value)\"\n (click)=\"toggle()\"\n (keydown)=\"onKeyDown($event)\"\n (blur)=\"onBlur()\"\n />\n <div class=\"lc-datepicker-icons\">\n @if (selectedDate() && !disabled && !readonly) {\n <button\n type=\"button\"\n class=\"lc-datepicker-clear\"\n (click)=\"clear(); $event.stopPropagation()\"\n aria-label=\"Clear date\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n d=\"M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z\"\n />\n </svg>\n </button>\n }\n <svg\n class=\"lc-datepicker-calendar-icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n d=\"M5.25 12a.75.75 0 01.75-.75h.01a.75.75 0 01.75.75v.01a.75.75 0 01-.75.75H6a.75.75 0 01-.75-.75V12zM6 13.25a.75.75 0 00-.75.75v.01c0 .414.336.75.75.75h.01a.75.75 0 00.75-.75V14a.75.75 0 00-.75-.75H6zM7.25 12a.75.75 0 01.75-.75h.01a.75.75 0 01.75.75v.01a.75.75 0 01-.75.75H8a.75.75 0 01-.75-.75V12zM8 13.25a.75.75 0 00-.75.75v.01c0 .414.336.75.75.75h.01a.75.75 0 00.75-.75V14a.75.75 0 00-.75-.75H8zM9.25 10a.75.75 0 01.75-.75h.01a.75.75 0 01.75.75v.01a.75.75 0 01-.75.75H10a.75.75 0 01-.75-.75V10zM10 11.25a.75.75 0 00-.75.75v.01c0 .414.336.75.75.75h.01a.75.75 0 00.75-.75V12a.75.75 0 00-.75-.75H10zM9.25 14a.75.75 0 01.75-.75h.01a.75.75 0 01.75.75v.01a.75.75 0 01-.75.75H10a.75.75 0 01-.75-.75V14zM12 9.25a.75.75 0 00-.75.75v.01c0 .414.336.75.75.75h.01a.75.75 0 00.75-.75V10a.75.75 0 00-.75-.75H12zM11.25 12a.75.75 0 01.75-.75h.01a.75.75 0 01.75.75v.01a.75.75 0 01-.75.75H12a.75.75 0 01-.75-.75V12zM12 13.25a.75.75 0 00-.75.75v.01c0 .414.336.75.75.75h.01a.75.75 0 00.75-.75V14a.75.75 0 00-.75-.75H12zM13.25 10a.75.75 0 01.75-.75h.01a.75.75 0 01.75.75v.01a.75.75 0 01-.75.75H14a.75.75 0 01-.75-.75V10zM14 11.25a.75.75 0 00-.75.75v.01c0 .414.336.75.75.75h.01a.75.75 0 00.75-.75V12a.75.75 0 00-.75-.75H14z\"\n />\n <path\n fill-rule=\"evenodd\"\n d=\"M5.75 2a.75.75 0 01.75.75V4h7V2.75a.75.75 0 011.5 0V4h.25A2.75 2.75 0 0118 6.75v8.5A2.75 2.75 0 0115.25 18H4.75A2.75 2.75 0 012 15.25v-8.5A2.75 2.75 0 014.75 4H5V2.75A.75.75 0 015.75 2zm-1 5.5c-.69 0-1.25.56-1.25 1.25v6.5c0 .69.56 1.25 1.25 1.25h10.5c.69 0 1.25-.56 1.25-1.25v-6.5c0-.69-.56-1.25-1.25-1.25H4.75z\"\n clip-rule=\"evenodd\"\n />\n </svg>\n </div>\n </div>\n\n <!-- Calendar Panel -->\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"datepickerInput\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n [cdkConnectedOverlayBackdropClass]=\"'cdk-overlay-transparent-backdrop'\"\n (backdropClick)=\"onClickOutside()\"\n (detach)=\"close()\"\n >\n <div class=\"lc-datepicker-calendar\" [class.lc-datepicker-calendar--open]=\"isOpen()\">\n <!-- Calendar Header -->\n <div class=\"lc-datepicker-header\">\n <button\n type=\"button\"\n class=\"lc-datepicker-nav-button\"\n (click)=\"previousMonth()\"\n aria-label=\"Previous month\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n d=\"M12.79 5.23a.75.75 0 01-.02 1.06L8.832 10l3.938 3.71a.75.75 0 11-1.04 1.08l-4.5-4.25a.75.75 0 010-1.08l4.5-4.25a.75.75 0 011.06.02z\"\n clip-rule=\"evenodd\"\n />\n </svg>\n </button>\n \n <div class=\"lc-datepicker-month-year\">\n {{ currentMonthName() }} {{ currentYear() }}\n </div>\n \n <button\n type=\"button\"\n class=\"lc-datepicker-nav-button\"\n (click)=\"nextMonth()\"\n aria-label=\"Next month\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n d=\"M7.21 14.77a.75.75 0 01.02-1.06L11.168 10 7.23 6.29a.75.75 0 111.04-1.08l4.5 4.25a.75.75 0 010 1.08l-4.5 4.25a.75.75 0 01-1.06-.02z\"\n clip-rule=\"evenodd\"\n />\n </svg>\n </button>\n </div>\n\n <!-- Quick Actions -->\n <div class=\"lc-datepicker-quick-actions\">\n <button\n type=\"button\"\n class=\"lc-datepicker-today-button\"\n (click)=\"goToToday()\"\n >\n Today\n </button>\n </div>\n\n <!-- Weekday Headers -->\n <div class=\"lc-datepicker-weekdays\">\n @for (day of weekDays; track day) {\n <div class=\"lc-datepicker-weekday\">{{ day }}</div>\n }\n </div>\n\n <!-- Calendar Days -->\n <div class=\"lc-datepicker-days\">\n @for (date of generateCalendarDays(); track date.getTime()) {\n <button\n type=\"button\"\n class=\"lc-datepicker-day\"\n [class.lc-datepicker-day--other-month]=\"!isCurrentMonth(date)\"\n [class.lc-datepicker-day--today]=\"isToday(date)\"\n [class.lc-datepicker-day--selected]=\"isSelectedDate(date)\"\n [class.lc-datepicker-day--disabled]=\"isDateDisabled(date)\"\n [disabled]=\"isDateDisabled(date)\"\n (click)=\"selectDate(date)\"\n >\n {{ date.getDate() }}\n </button>\n }\n </div>\n </div>\n </ng-template>\n\n <!-- Helper/Error Text -->\n @if (error && errorMessage) {\n <div class=\"lc-datepicker__error\" role=\"alert\">\n {{ errorMessage }}\n </div>\n } @else if (helperText) {\n <div class=\"lc-datepicker__helper\">\n {{ helperText }}\n </div>\n }\n</div>\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n signal,\n computed,\n ChangeDetectionStrategy,\n forwardRef,\n ElementRef,\n ViewChild,\n inject,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { OverlayModule } from '@angular/cdk/overlay';\n\nexport interface SelectOption {\n value: string | number;\n label: string;\n disabled?: boolean;\n}\n\nexport interface SelectOptionGroup {\n label: string;\n options: SelectOption[];\n}\n\nexport type SelectValue = string | number | string[] | number[] | null;\n\n/**\n * Select component for dropdown selection with single or multiple options.\n *\n * @example\n * ```html\n * <lc-select\n * [options]=\"options\"\n * variant=\"outline\"\n * size=\"md\"\n * placeholder=\"Select an option\"\n * [(ngModel)]=\"selectedValue\"\n * ></lc-select>\n * ```\n */\n/* eslint-disable @typescript-eslint/member-ordering */\n@Component({\n selector: 'lc-select',\n standalone: true,\n imports: [CommonModule, FormsModule, OverlayModule],\n templateUrl: './select.component.html',\n styleUrl: './select.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectComponent),\n multi: true,\n },\n ],\n})\nexport class SelectComponent implements ControlValueAccessor {\n @ViewChild('selectTrigger', { static: false, read: ElementRef })\n selectTrigger!: ElementRef;\n\n /**\n * Visual variant of the select\n */\n @Input() variant: 'outline' | 'filled' = 'outline';\n\n /**\n * Size of the select\n */\n @Input() size: 'xs' | 'sm' | 'md' | 'lg' = 'md';\n\n /**\n * Whether the select is disabled\n */\n @Input() disabled = false;\n\n /**\n * Whether the select is in error state\n */\n @Input() error = false;\n\n /**\n * Whether the select is required\n */\n @Input() required = false;\n\n /**\n * Whether the select is in loading state\n */\n @Input() loading = false;\n\n /**\n * Whether the select allows searching\n */\n @Input() searchable = false;\n\n /**\n * Whether multiple options can be selected\n */\n @Input() multiple = false;\n\n /**\n * Placeholder text when no option is selected\n */\n @Input() placeholder = 'Select an option';\n\n /**\n * Helper text displayed below the select\n */\n @Input() helperText = '';\n\n /**\n * Error message displayed when error is true\n */\n @Input() errorMessage = '';\n\n /**\n * ARIA label for accessibility\n */\n @Input() ariaLabel: string | undefined = undefined;\n\n /**\n * Select options (flat list)\n */\n @Input()\n get options(): SelectOption[] | SelectOptionGroup[] {\n return this._options();\n }\n set options(v: SelectOption[] | SelectOptionGroup[]) {\n this._options.set(v);\n }\n private _options = signal<SelectOption[] | SelectOptionGroup[]>([]);\n\n /**\n * Emitted when selection changes\n */\n @Output() readonly selectionChange = new EventEmitter<SelectValue>();\n\n /**\n * Emitted when dropdown opens\n */\n @Output() readonly opened = new EventEmitter<void>();\n\n /**\n * Emitted when dropdown closes\n */\n @Output() readonly closed = new EventEmitter<void>();\n\n // Internal state\n value = signal<SelectValue>(null);\n isOpen = signal<boolean>(false);\n searchQuery = signal<string>('');\n highlightedIndex = signal<number>(-1);\n\n // Computed values\n selectedLabel = computed(() => {\n const currentValue = this.value();\n const opts = this._options();\n\n if (currentValue === null) {\n return '';\n }\n\n if (this.multiple) {\n const values = Array.isArray(currentValue) ? currentValue : [currentValue];\n return values\n .map((val) => this.findOptionByValue(val, opts)?.label)\n .filter(Boolean)\n .join(', ');\n }\n\n const val = Array.isArray(currentValue) ? currentValue[0] : currentValue;\n return this.findOptionByValue(val ?? '', opts)?.label || '';\n });\n\n displayValue = computed(() => {\n const label = this.selectedLabel();\n if (label) {\n if (this.multiple && Array.isArray(this.value())) {\n const count = (this.value() as (string | number)[]).length;\n return count > 1 ? `${count} selected` : label;\n }\n return label;\n }\n return this.placeholder;\n });\n\n filteredOptions = computed(() => {\n const query = this.searchQuery().toLowerCase();\n const opts = this._options();\n\n if (!query || !this.searchable) {\n return this.flattenOptions(opts);\n }\n\n return this.flattenOptions(opts).filter((opt) => opt.label.toLowerCase().includes(query));\n });\n\n // Private properties\n private elementRef = inject(ElementRef);\n // eslint-disable-next-line @typescript-eslint/member-ordering\n private onChange: (value: SelectValue) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/member-ordering\n private onTouched: () => void = () => {};\n\n // Public methods\n /**\n * Toggle dropdown open/closed\n */\n toggle(): void {\n if (this.disabled || this.loading) {\n return;\n }\n if (this.isOpen()) {\n this.close();\n } else {\n this.open();\n }\n }\n\n /**\n * Open dropdown\n */\n open(): void {\n if (this.disabled || this.loading) {\n return;\n }\n this.isOpen.set(true);\n this.opened.emit();\n }\n\n /**\n * Close dropdown\n */\n close(): void {\n this.isOpen.set(false);\n this.searchQuery.set('');\n this.highlightedIndex.set(-1);\n this.closed.emit();\n }\n\n /**\n * Select an option\n */\n selectOption(option: SelectOption): void {\n if (option.disabled) {\n return;\n }\n\n if (this.multiple) {\n const currentValue = this.value() || [];\n const currentArray = (Array.isArray(currentValue) ? currentValue : []) as (string | number)[];\n const index = currentArray.indexOf(option.value);\n\n if (index > -1) {\n // Deselect\n const newValue = currentArray.filter((v) => v !== option.value);\n this.value.set(newValue as SelectValue);\n this.onChange(newValue as SelectValue);\n } else {\n // Select\n const newValue = [...currentArray, option.value];\n this.value.set(newValue as SelectValue);\n this.onChange(newValue as SelectValue);\n }\n this.selectionChange.emit(this.value());\n } else {\n this.value.set(option.value);\n this.onChange(option.value);\n this.selectionChange.emit(option.value);\n this.close();\n }\n }\n\n /**\n * Check if an option is selected\n */\n isSelected(option: SelectOption): boolean {\n const currentValue = this.value();\n if (this.multiple) {\n const values = Array.isArray(currentValue) ? currentValue : [];\n return values.some((v) => v === option.value);\n }\n return currentValue === option.value;\n }\n\n /**\n * Clear selection\n */\n clear(): void {\n if (this.multiple) {\n this.value.set([]);\n this.onChange([]);\n } else {\n this.value.set(null);\n this.onChange(null);\n }\n this.selectionChange.emit(this.value());\n }\n\n /**\n * Handle keyboard navigation\n */\n onKeyDown(event: KeyboardEvent): void {\n if (this.disabled || this.loading) {\n return;\n }\n\n switch (event.key) {\n case 'Enter':\n case ' ':\n if (!this.isOpen()) {\n this.open();\n event.preventDefault();\n } else if (this.highlightedIndex() >= 0) {\n const options = this.filteredOptions();\n const option = options[this.highlightedIndex()];\n if (option) {\n this.selectOption(option);\n }\n event.preventDefault();\n }\n break;\n\n case 'Escape':\n if (this.isOpen()) {\n this.close();\n event.preventDefault();\n }\n break;\n\n case 'ArrowDown':\n if (!this.isOpen()) {\n this.open();\n } else {\n const options = this.filteredOptions();\n const nextIndex = (this.highlightedIndex() + 1) % options.length;\n this.highlightedIndex.set(nextIndex);\n }\n event.preventDefault();\n break;\n\n case 'ArrowUp':\n if (!this.isOpen()) {\n this.open();\n } else {\n const options = this.filteredOptions();\n const prevIndex =\n this.highlightedIndex() <= 0 ? options.length - 1 : this.highlightedIndex() - 1;\n this.highlightedIndex.set(prevIndex);\n }\n event.preventDefault();\n break;\n }\n }\n\n /**\n * Handle blur event\n */\n onBlur(): void {\n this.onTouched();\n }\n\n /**\n * Handle click outside\n */\n onClickOutside(): void {\n if (this.isOpen()) {\n this.close();\n }\n }\n\n // ControlValueAccessor implementation\n writeValue(value: SelectValue): void {\n this.value.set(value);\n }\n\n registerOnChange(fn: (value: SelectValue) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n /**\n * Get computed classes for the select element\n */\n get selectClasses(): string {\n const classes = ['lc-select'];\n\n classes.push(`lc-select--${this.variant}`);\n classes.push(`lc-select--${this.size}`);\n\n if (this.disabled) {\n classes.push('lc-select--disabled');\n }\n\n if (this.error) {\n classes.push('lc-select--error');\n }\n\n if (this.loading) {\n classes.push('lc-select--loading');\n }\n\n if (this.isOpen()) {\n classes.push('lc-select--open');\n }\n\n return classes.join(' ');\n }\n\n // Private helper methods\n private findOptionByValue(\n value: string | number,\n options: SelectOption[] | SelectOptionGroup[],\n ): SelectOption | undefined {\n const flatOptions = this.flattenOptions(options);\n return flatOptions.find((opt) => opt.value === value);\n }\n\n private flattenOptions(options: SelectOption[] | SelectOptionGroup[]): SelectOption[] {\n if (!options || options.length === 0) {\n return [];\n }\n\n // Check if first item is a group\n const firstItem = options[0];\n if (firstItem && 'options' in firstItem) {\n return (options as SelectOptionGroup[]).flatMap((group) => group.options);\n }\n\n return options as SelectOption[];\n }\n}\n","<div class=\"lc-select-wrapper\">\n <div\n #selectTrigger\n [class]=\"selectClasses\"\n [attr.role]=\"'combobox'\"\n [attr.aria-expanded]=\"isOpen() ? 'true' : 'false'\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-required]=\"required ? 'true' : null\"\n [attr.aria-disabled]=\"disabled ? 'true' : null\"\n [attr.aria-invalid]=\"error ? 'true' : null\"\n [attr.tabindex]=\"disabled ? -1 : 0\"\n (click)=\"toggle()\"\n (keydown)=\"onKeyDown($event)\"\n (blur)=\"onBlur()\"\n >\n <div class=\"lc-select__value\">\n <span [class.lc-select__placeholder]=\"!selectedLabel()\">\n {{ displayValue() }}\n </span>\n </div>\n\n <div class=\"lc-select__icons\">\n @if (loading) {\n <svg\n class=\"lc-select__spinner\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n class=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n stroke-width=\"4\"\n ></circle>\n <path\n class=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n ></path>\n </svg>\n } @else if (value() && !disabled && !multiple) {\n <button\n type=\"button\"\n class=\"lc-select__clear\"\n (click)=\"clear(); $event.stopPropagation()\"\n aria-label=\"Clear selection\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n d=\"M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z\"\n />\n </svg>\n </button>\n }\n\n <svg\n class=\"lc-select__chevron\"\n [class.lc-select__chevron--open]=\"isOpen()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z\"\n clip-rule=\"evenodd\"\n />\n </svg>\n </div>\n </div>\n\n <!-- Dropdown Panel -->\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"selectTrigger\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n [cdkConnectedOverlayBackdropClass]=\"'cdk-overlay-transparent-backdrop'\"\n (backdropClick)=\"onClickOutside()\"\n (detach)=\"close()\"\n >\n <div class=\"lc-select__dropdown\" [class.lc-select__dropdown--open]=\"isOpen()\">\n @if (searchable) {\n <div class=\"lc-select__search\">\n <input\n type=\"text\"\n class=\"lc-select__search-input\"\n placeholder=\"Search...\"\n [(ngModel)]=\"searchQuery\"\n (click)=\"$event.stopPropagation()\"\n />\n </div>\n }\n\n <div class=\"lc-select__options\">\n @if (filteredOptions().length === 0) {\n <div class=\"lc-select__option lc-select__option--no-results\">\n No options found\n </div>\n } @else {\n @for (option of filteredOptions(); track option.value; let i = $index) {\n <div\n class=\"lc-select__option\"\n [class.lc-select__option--selected]=\"isSelected(option)\"\n [class.lc-select__option--highlighted]=\"highlightedIndex() === i\"\n [class.lc-select__option--disabled]=\"option.disabled\"\n (click)=\"selectOption(option)\"\n (mouseenter)=\"highlightedIndex.set(i)\"\n >\n @if (multiple) {\n <input\n type=\"checkbox\"\n [checked]=\"isSelected(option)\"\n [disabled]=\"option.disabled\"\n class=\"lc-select__checkbox\"\n (click)=\"$event.stopPropagation()\"\n />\n }\n <span class=\"lc-select__option-label\">{{ option.label }}</span>\n @if (isSelected(option) && !multiple) {\n <svg\n class=\"lc-select__check\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M16.704 4.153a.75.75 0 01.143 1.052l-8 10.5a.75.75 0 01-1.127.075l-4.5-4.5a.75.75 0 011.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 011.05-.143z\"\n clip-rule=\"evenodd\"\n />\n </svg>\n }\n </div>\n }\n }\n </div>\n </div>\n </ng-template>\n\n <!-- Helper/Error Text -->\n @if (error && errorMessage) {\n <div class=\"lc-select__error\" role=\"alert\">\n {{ errorMessage }}\n </div>\n } @else if (helperText) {\n <div class=\"lc-select__helper\">\n {{ helperText }}\n </div>\n }\n</div>\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n forwardRef,\n inject,\n ElementRef,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\n\n/**\n * Switch component for toggle functionality.\n *\n * @example\n * ```html\n * <lc-switch\n * variant=\"primary\"\n * size=\"md\"\n * label=\"Enable notifications\"\n * [(ngModel)]=\"isEnabled\"\n * ></lc-switch>\n * ```\n */\n/* eslint-disable @typescript-eslint/member-ordering */\n@Component({\n selector: 'lc-switch',\n standalone: true,\n imports: [CommonModule, FormsModule],\n templateUrl: './switch.component.html',\n styleUrl: './switch.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SwitchComponent),\n multi: true,\n },\n ],\n})\nexport class SwitchComponent implements ControlValueAccessor {\n /**\n * Visual variant of the switch\n */\n @Input() variant: 'primary' | 'secondary' | 'success' | 'warning' | 'danger' = 'primary';\n\n /**\n * Size of the switch\n */\n @Input() size: 'sm' | 'md' | 'lg' = 'md';\n\n /**\n * Whether the switch is checked\n */\n @Input() checked = false;\n\n /**\n * Whether the switch is disabled\n */\n @Input() disabled = false;\n\n /**\n * Whether the switch is required\n */\n @Input() required = false;\n\n /**\n * Whether the switch is in loading state\n */\n @Input() loading = false;\n\n /**\n * Label text\n */\n @Input() label = '';\n\n /**\n * Label position relative to switch\n */\n @Input() labelPosition: 'left' | 'right' = 'right';\n\n /**\n * ARIA label for accessibility\n */\n @Input() ariaLabel: string | undefined = undefined;\n\n /**\n * Emitted when checked state changes\n */\n @Output() readonly checkedChange = new EventEmitter<boolean>();\n\n // Private properties\n private elementRef = inject(ElementRef);\n // eslint-disable-next-line @typescript-eslint/member-ordering\n private onChange: (value: boolean) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/member-ordering\n private onTouched: () => void = () => {};\n\n // Public methods\n /**\n * Toggle the switch state\n */\n toggle(): void {\n if (this.disabled || this.loading) {\n return;\n }\n\n this.checked = !this.checked;\n this.onChange(this.checked);\n this.onTouched();\n this.checkedChange.emit(this.checked);\n }\n\n /**\n * Handle click event\n */\n onClick(): void {\n this.toggle();\n }\n\n /**\n * Handle keyboard navigation\n */\n onKeyDown(event: KeyboardEvent): void {\n if (this.disabled || this.loading) {\n return;\n }\n\n if (event.key === ' ' || event.key === 'Enter') {\n event.preventDefault();\n this.toggle();\n }\n }\n\n // ControlValueAccessor implementation\n writeValue(value: boolean | null | undefined): void {\n this.checked = !!value;\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n /**\n * Get computed classes for the switch element\n */\n get switchClasses(): string {\n const classes = ['lc-switch'];\n\n classes.push(`lc-switch--${this.variant}`);\n classes.push(`lc-switch--${this.size}`);\n\n if (this.checked) {\n classes.push('lc-switch--checked');\n }\n\n if (this.disabled) {\n classes.push('lc-switch--disabled');\n }\n\n if (this.loading) {\n classes.push('lc-switch--loading');\n }\n\n return classes.join(' ');\n }\n}\n","<div \n class=\"lc-switch-wrapper\" \n [class.lc-switch-wrapper--label-left]=\"labelPosition === 'left'\"\n [class.lc-switch-wrapper--label-right]=\"labelPosition === 'right'\"\n>\n @if (label && labelPosition === 'left') {\n <label class=\"lc-switch-label\">{{ label }}</label>\n }\n\n <div\n [class]=\"switchClasses\"\n role=\"switch\"\n [attr.aria-checked]=\"checked\"\n [attr.aria-label]=\"ariaLabel || label\"\n [attr.aria-required]=\"required\"\n [attr.tabindex]=\"disabled || loading ? -1 : 0\"\n (click)=\"onClick()\"\n (keydown)=\"onKeyDown($event)\"\n >\n <div class=\"lc-switch-track\">\n <div class=\"lc-switch-thumb\">\n @if (loading) {\n <div class=\"lc-switch-loading-spinner\"></div>\n }\n </div>\n </div>\n </div>\n\n @if (label && labelPosition === 'right') {\n <label class=\"lc-switch-label\">{{ label }}</label>\n }\n</div>\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n signal,\n computed,\n ChangeDetectionStrategy,\n forwardRef,\n ElementRef,\n ViewChild,\n inject,\n AfterViewInit,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\n\n/**\n * Textarea component for multi-line text input.\n *\n * @example\n * ```html\n * <lc-textarea\n * variant=\"outline\"\n * size=\"md\"\n * placeholder=\"Enter your message\"\n * [(ngModel)]=\"message\"\n * ></lc-textarea>\n * ```\n */\n/* eslint-disable @typescript-eslint/member-ordering */\n@Component({\n selector: 'lc-textarea',\n standalone: true,\n imports: [CommonModule, FormsModule],\n templateUrl: './textarea.component.html',\n styleUrl: './textarea.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextareaComponent),\n multi: true,\n },\n ],\n})\nexport class TextareaComponent implements ControlValueAccessor, AfterViewInit {\n @ViewChild('textarea', { static: false, read: ElementRef })\n private textareaElement!: ElementRef<HTMLTextAreaElement>;\n\n /**\n * Visual variant of the textarea\n */\n @Input() variant: 'outline' | 'filled' = 'outline';\n\n /**\n * Size of the textarea\n */\n @Input() size: 'xs' | 'sm' | 'md' | 'lg' = 'md';\n\n /**\n * Whether the textarea is disabled\n */\n @Input() disabled = false;\n\n /**\n * Whether the textarea is in error state\n */\n @Input() error = false;\n\n /**\n * Whether the textarea is required\n */\n @Input() required = false;\n\n /**\n * Whether the textarea is readonly\n */\n @Input() readonly = false;\n\n /**\n * Placeholder text\n */\n @Input() placeholder = '';\n\n /**\n * Label text displayed above the textarea\n */\n @Input() label = '';\n\n /**\n * Helper text displayed below the textarea\n */\n @Input() helperText = '';\n\n /**\n * Error message displayed when error is true\n */\n @Input() errorMessage = '';\n\n /**\n * ARIA label for accessibility\n */\n @Input() ariaLabel: string | undefined = undefined;\n\n /**\n * Number of visible text rows\n */\n @Input() rows = 3;\n\n /**\n * Maximum number of characters allowed\n */\n @Input() maxLength: number | undefined = undefined;\n\n /**\n * Whether to show character count\n */\n @Input() showCharacterCount = false;\n\n /**\n * Whether to automatically resize based on content\n */\n @Input() autoResize = false;\n\n /**\n * Minimum number of rows for auto-resize\n */\n @Input() minRows = 3;\n\n /**\n * Maximum number of rows for auto-resize\n */\n @Input() maxRows: number | undefined = undefined;\n\n /**\n * Emitted when value changes\n */\n @Output() readonly valueChange = new EventEmitter<string>();\n\n // Internal state\n value = signal<string>('');\n\n // Computed values\n currentCharacterCount = computed(() => {\n return this.value().length;\n });\n\n characterCountText = computed(() => {\n const current = this.currentCharacterCount();\n const max = this.maxLength;\n return max !== undefined ? `${current} / ${max}` : `${current}`;\n });\n\n isOverLimit = computed(() => {\n const max = this.maxLength;\n return max !== undefined && this.currentCharacterCount() > max;\n });\n\n // Private properties\n private elementRef = inject(ElementRef);\n // eslint-disable-next-line @typescript-eslint/member-ordering\n private onChange: (value: string) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/member-ordering\n private onTouched: () => void = () => {};\n\n // Public methods\n ngAfterViewInit(): void {\n if (this.autoResize) {\n this.adjustHeight();\n }\n }\n\n /**\n * Handle input changes\n */\n onInput(value: string): void {\n if (this.disabled || this.readonly) {\n return;\n }\n\n this.value.set(value);\n this.onChange(value);\n this.valueChange.emit(value);\n\n if (this.autoResize) {\n this.adjustHeight();\n }\n }\n\n /**\n * Handle blur event\n */\n onBlur(): void {\n this.onTouched();\n }\n\n // ControlValueAccessor implementation\n writeValue(value: string | null | undefined): void {\n this.value.set(value || '');\n if (this.autoResize && this.textareaElement) {\n setTimeout(() => this.adjustHeight(), 0);\n }\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n /**\n * Get computed classes for the textarea element\n */\n get textareaClasses(): string {\n const classes = ['lc-textarea'];\n\n classes.push(`lc-textarea--${this.variant}`);\n classes.push(`lc-textarea--${this.size}`);\n\n if (this.disabled) {\n classes.push('lc-textarea--disabled');\n }\n\n if (this.error) {\n classes.push('lc-textarea--error');\n }\n\n if (this.readonly) {\n classes.push('lc-textarea--readonly');\n }\n\n if (this.autoResize) {\n classes.push('lc-textarea--auto-resize');\n }\n\n return classes.join(' ');\n }\n\n // Private helper methods\n private adjustHeight(): void {\n if (!this.textareaElement) {\n return;\n }\n\n const textarea = this.textareaElement.nativeElement;\n\n // Reset height to get accurate scrollHeight\n textarea.style.height = 'auto';\n\n const minHeight = this.calculateMinHeight();\n const maxHeight = this.calculateMaxHeight();\n let newHeight = textarea.scrollHeight;\n\n // Apply constraints\n if (minHeight !== undefined) {\n newHeight = Math.max(newHeight, minHeight);\n }\n if (maxHeight !== undefined) {\n newHeight = Math.min(newHeight, maxHeight);\n }\n\n textarea.style.height = `${newHeight}px`;\n }\n\n private calculateMinHeight(): number | undefined {\n if (!this.textareaElement || this.minRows === undefined) {\n return undefined;\n }\n\n const textarea = this.textareaElement.nativeElement;\n const lineHeight = parseFloat(getComputedStyle(textarea).lineHeight);\n const paddingTop = parseFloat(getComputedStyle(textarea).paddingTop);\n const paddingBottom = parseFloat(getComputedStyle(textarea).paddingBottom);\n\n return lineHeight * this.minRows + paddingTop + paddingBottom;\n }\n\n private calculateMaxHeight(): number | undefined {\n if (!this.textareaElement || this.maxRows === undefined) {\n return undefined;\n }\n\n const textarea = this.textareaElement.nativeElement;\n const lineHeight = parseFloat(getComputedStyle(textarea).lineHeight);\n const paddingTop = parseFloat(getComputedStyle(textarea).paddingTop);\n const paddingBottom = parseFloat(getComputedStyle(textarea).paddingBottom);\n\n return lineHeight * this.maxRows + paddingTop + paddingBottom;\n }\n}\n","<div class=\"lc-textarea-wrapper\">\n @if (label) {\n <label class=\"lc-textarea-label\" [class.lc-textarea-label--required]=\"required\">\n {{ label }}\n @if (required) {\n <span class=\"lc-textarea-required-indicator\">*</span>\n }\n </label>\n }\n\n <div class=\"lc-textarea-input-wrapper\">\n <textarea\n #textarea\n [class]=\"textareaClasses\"\n [value]=\"value()\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [rows]=\"autoResize ? undefined : rows\"\n [attr.maxlength]=\"maxLength\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-required]=\"required\"\n [attr.aria-invalid]=\"error\"\n (input)=\"onInput($any($event.target).value)\"\n (blur)=\"onBlur()\"\n ></textarea>\n </div>\n\n <div class=\"lc-textarea-footer\">\n <div class=\"lc-textarea-messages\">\n @if (error && errorMessage) {\n <span class=\"lc-textarea-error-message\">{{ errorMessage }}</span>\n } @else if (helperText) {\n <span class=\"lc-textarea-helper-text\">{{ helperText }}</span>\n }\n </div>\n\n @if (showCharacterCount) {\n <span \n class=\"lc-textarea-character-count\" \n [class.lc-textarea-character-count--over-limit]=\"isOverLimit()\"\n >\n {{ characterCountText() }}\n </span>\n }\n </div>\n</div>\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n signal,\n computed,\n ViewEncapsulation,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IconComponent } from '../icon/icon.component';\n\nexport type AlertVariant = 'success' | 'error' | 'warning' | 'info';\n\n/**\n * Alert component for inline notifications.\n *\n * @example\n * ```html\n * <lc-alert variant=\"success\" title=\"Success!\" [dismissible]=\"true\">\n * Your changes have been saved.\n * </lc-alert>\n * ```\n */\n@Component({\n selector: 'lc-alert',\n standalone: true,\n imports: [CommonModule, IconComponent],\n templateUrl: './alert.component.html',\n styleUrls: ['./alert.component.scss'],\n // eslint-disable-next-line @angular-eslint/use-component-view-encapsulation\n encapsulation: ViewEncapsulation.None, // Required for dynamic variant class styling\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[attr.role]': '\"alert\"',\n '[attr.aria-live]': 'ariaLive()',\n '[attr.aria-label]': 'ariaLabel()',\n },\n})\nexport class AlertComponent {\n /**\n * Visual variant of the alert\n * @default 'info'\n */\n variant = input<AlertVariant>('info');\n\n /**\n * Alert title (optional)\n */\n title = input<string>();\n\n /**\n * Alert message (alternative to content projection)\n */\n message = input<string>();\n\n /**\n * Icon to display (defaults based on variant)\n */\n icon = input<string>();\n\n /**\n * Whether to show icon\n * @default true\n */\n showIcon = input<boolean>(true);\n\n /**\n * Whether the alert can be dismissed\n * @default false\n */\n dismissible = input<boolean>(false);\n\n /**\n * ARIA label for accessibility\n */\n ariaLabel = input<string>();\n\n /**\n * Emitted when alert is dismissed\n */\n readonly dismissed = output<void>();\n\n /**\n * Internal visibility state\n */\n protected visible = signal(true);\n\n /**\n * Computed host classes\n */\n protected hostClasses = computed(() => {\n const classes = ['lc-alert', `lc-alert--${this.variant()}`];\n if (!this.visible()) {\n classes.push('lc-alert--hidden');\n }\n return classes.join(' ');\n });\n\n /**\n * Computed container classes\n */\n protected containerClasses = computed(() => {\n return 'lc-alert__container';\n });\n\n /**\n * Computed ARIA live region priority\n */\n protected ariaLive = computed(() => {\n const variant = this.variant();\n return variant === 'error' || variant === 'warning' ? 'assertive' : 'polite';\n });\n\n /**\n * Computed default icon based on variant\n */\n protected defaultIcon = computed(() => {\n const icons: Record<AlertVariant, string> = {\n success: 'check-circle',\n error: 'x-circle',\n warning: 'exclamation-triangle',\n info: 'information-circle',\n };\n return this.icon() || icons[this.variant()];\n });\n\n /**\n * Dismiss the alert\n */\n dismiss(): void {\n this.visible.set(false);\n this.dismissed.emit();\n }\n\n /**\n * Handle close button click\n */\n protected onCloseClick(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n this.dismiss();\n }\n}\n","@if (visible()) {\n <div [class]=\"containerClasses()\">\n @if (showIcon()) {\n <div class=\"lc-alert__icon\">\n <lc-icon [name]=\"defaultIcon()\" size=\"md\" />\n </div>\n }\n \n <div class=\"lc-alert__body\">\n @if (title()) {\n <div class=\"lc-alert__title\">{{ title() }}</div>\n }\n \n <div class=\"lc-alert__content\">\n @if (message()) {\n {{ message() }}\n } @else {\n <ng-content />\n }\n </div>\n </div>\n \n @if (dismissible()) {\n <button\n type=\"button\"\n class=\"lc-alert__close\"\n aria-label=\"Close alert\"\n (click)=\"onCloseClick($event)\"\n >\n <lc-icon name=\"x-mark\" size=\"sm\" />\n </button>\n }\n </div>\n}\n","/* eslint-disable @typescript-eslint/member-ordering */\n/* ControlValueAccessor implementation requires specific method placement */\n\nimport {\n Component,\n Input,\n Output,\n EventEmitter,\n forwardRef,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n inject,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport { IconComponent } from '../icon/icon.component';\nimport { AlertComponent } from '../alert/alert.component';\n\n/**\n * Password Input Component with Show/Hide Toggle and Strength Meter\n *\n * Per research.md Decision 7: Password Strength Indicator\n *\n * Features:\n * - Show/Hide password toggle (eye icon)\n * - Real-time password strength indicator (Weak/Fair/Good/Strong)\n * - Visual strength meter bar with color coding\n * - Validation feedback (length, uppercase, lowercase, digit, symbol)\n * - Accessible ARIA attributes\n * - Reactive Forms ControlValueAccessor implementation\n *\n * Strength Criteria:\n * - Weak (0-25%): < 8 chars OR missing 3+ requirements\n * - Fair (26-50%): 8+ chars, missing 2 requirements\n * - Good (51-75%): 8+ chars, missing 1 requirement\n * - Strong (76-100%): 8+ chars, all requirements met\n *\n * Requirements (Cognito password policy):\n * - Minimum 8 characters\n * - At least one uppercase letter (A-Z)\n * - At least one lowercase letter (a-z)\n * - At least one digit (0-9)\n * - At least one symbol (!@#$%^&*()_+-=[]{}|;:,.<>?)\n *\n * Usage:\n * ```html\n * <lc-password-input\n * [formControl]=\"passwordControl\"\n * label=\"Password\"\n * placeholder=\"Enter your password\"\n * [showStrengthMeter]=\"true\"\n * ></lc-password-input>\n * ```\n *\n * User Story: US0 (User Registration)\n */\n@Component({\n selector: 'lc-password-input',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, IconComponent, AlertComponent],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PasswordInputComponent),\n multi: true,\n },\n ],\n templateUrl: './password-input.component.html',\n styleUrls: ['./password-input.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PasswordInputComponent implements ControlValueAccessor {\n @Input() label = 'Password';\n @Input() placeholder = 'Enter password';\n @Input() showStrengthMeter = false;\n @Input() showRequirements = false;\n @Input() disabled = false;\n @Input() required = false;\n @Input() error?: string;\n\n @Output() readonly strengthChange = new EventEmitter<PasswordStrength>();\n\n value = '';\n isPasswordVisible = false;\n strength: PasswordStrength = { score: 0, level: 'Weak', percentage: 0 };\n requirements: PasswordRequirement[] = [];\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n private cdr = inject(ChangeDetectorRef);\n\n constructor() {}\n\n /**\n * ControlValueAccessor: Write value from form control\n */\n writeValue(value: string): void {\n this.value = value || '';\n this.updateStrength();\n }\n\n /**\n * ControlValueAccessor: Register onChange callback\n */\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n /**\n * ControlValueAccessor: Register onTouched callback\n */\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n /**\n * ControlValueAccessor: Set disabled state\n */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n /**\n * Toggle password visibility\n */\n togglePasswordVisibility(): void {\n this.isPasswordVisible = !this.isPasswordVisible;\n }\n\n /**\n * Handle input changes\n */\n onInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n this.value = input.value;\n this.updateStrength();\n this.onChange(this.value);\n }\n\n /**\n * Handle blur event\n */\n onBlur(): void {\n this.onTouched();\n }\n\n /**\n * Calculate password strength and update requirements\n */\n private updateStrength(): void {\n const password = this.value;\n\n // Define requirements\n this.requirements = [\n {\n label: 'At least 8 characters',\n met: password.length >= 8,\n icon: password.length >= 8 ? '✓' : '✗',\n },\n {\n label: 'One uppercase letter (A-Z)',\n met: /[A-Z]/.test(password),\n icon: /[A-Z]/.test(password) ? '✓' : '✗',\n },\n {\n label: 'One lowercase letter (a-z)',\n met: /[a-z]/.test(password),\n icon: /[a-z]/.test(password) ? '✓' : '✗',\n },\n {\n label: 'One digit (0-9)',\n met: /[0-9]/.test(password),\n icon: /[0-9]/.test(password) ? '✓' : '✗',\n },\n {\n label: 'One symbol (!@#$%^&*)',\n met: /[!@#$%^&*()_+\\-=[\\]{}|;:,.<>?]/.test(password),\n icon: /[!@#$%^&*()_+\\-=[\\]{}|;:,.<>?]/.test(password) ? '✓' : '✗',\n },\n ];\n\n // Calculate strength score\n const metRequirements = this.requirements.filter((r) => r.met).length;\n const totalRequirements = this.requirements.length;\n const percentage = (metRequirements / totalRequirements) * 100;\n\n // Determine strength level\n let level: 'Weak' | 'Fair' | 'Good' | 'Strong' = 'Weak';\n if (percentage >= 80) {\n level = 'Strong';\n } else if (percentage >= 60) {\n level = 'Good';\n } else if (percentage >= 40) {\n level = 'Fair';\n }\n\n this.strength = {\n score: metRequirements,\n level,\n percentage,\n };\n\n this.strengthChange.emit(this.strength);\n }\n}\n\n/**\n * Password strength information\n */\nexport interface PasswordStrength {\n score: number; // 0-5 (number of requirements met)\n level: 'Weak' | 'Fair' | 'Good' | 'Strong';\n percentage: number; // 0-100\n}\n\n/**\n * Individual password requirement\n */\nexport interface PasswordRequirement {\n label: string;\n met: boolean;\n icon: string;\n}\n","<div class=\"lc-password-input\">\n <label [for]=\"'password-' + label\" class=\"lc-label\">\n {{ label }}\n @if (required) {\n <span class=\"lc-required\">*</span>\n }\n </label>\n\n <div class=\"lc-input-wrapper\">\n <input\n [id]=\"'password-' + label\"\n [type]=\"isPasswordVisible ? 'text' : 'password'\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n [attr.aria-invalid]=\"error ? 'true' : 'false'\"\n [attr.aria-describedby]=\"error ? 'password-error' : null\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n class=\"lc-input\"\n [class.lc-input-error]=\"error\"\n />\n\n <button\n type=\"button\"\n (click)=\"togglePasswordVisibility()\"\n [attr.aria-label]=\"isPasswordVisible ? 'Hide password' : 'Show password'\"\n class=\"lc-toggle-btn\"\n [disabled]=\"disabled\"\n >\n @if (!isPasswordVisible) {\n <lc-icon name=\"eye\" size=\"md\"></lc-icon>\n }\n @if (isPasswordVisible) {\n <lc-icon name=\"eye-slash\" size=\"md\"></lc-icon>\n }\n </button>\n </div>\n\n @if (error) {\n <div id=\"password-error\" class=\"lc-error\" role=\"alert\">\n {{ error }}\n </div>\n }\n\n @if (showStrengthMeter) {\n <div class=\"lc-strength-meter\">\n <div class=\"lc-strength-bar\">\n <div\n class=\"lc-strength-fill\"\n [style.width.%]=\"strength.percentage\"\n [class.lc-strength-weak]=\"strength.level === 'Weak'\"\n [class.lc-strength-fair]=\"strength.level === 'Fair'\"\n [class.lc-strength-good]=\"strength.level === 'Good'\"\n [class.lc-strength-strong]=\"strength.level === 'Strong'\"\n ></div>\n </div>\n <div class=\"lc-strength-label\" [class]=\"'lc-strength-' + strength.level.toLowerCase()\">\n {{ strength.level }}\n </div>\n </div>\n }\n\n @if (showRequirements) {\n <lc-alert variant=\"info\" [dismissible]=\"false\">\n @for (req of requirements; track req.label) {\n <div\n class=\"lc-requirement\"\n [class.lc-requirement-met]=\"req.met\"\n [class.lc-requirement-unmet]=\"!req.met\"\n >\n <span class=\"lc-requirement-icon\">{{ req.icon }}</span>\n <span class=\"lc-requirement-label\">{{ req.label }}</span>\n </div>\n }\n </lc-alert>\n }\n</div>\n","/* eslint-disable @typescript-eslint/member-ordering */\n/* ControlValueAccessor implementation requires specific method placement */\n\nimport { Component, Input, Output, EventEmitter, forwardRef, ViewChildren, QueryList, ElementRef, AfterViewInit, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\n\n/**\n * Verification Code Input Component with 6 Separate Digit Inputs\n * \n * Per research.md Decision 8: Email Verification Code Format\n * \n * Features:\n * - 6 separate input fields (one digit each)\n * - Automatic focus advancement after entering digit\n * - Backspace moves to previous input\n * - Paste support (splits 6-digit code across inputs)\n * - Accessible ARIA attributes\n * - Reactive Forms ControlValueAccessor implementation\n * - Auto-submit on complete (optional)\n * \n * Usage:\n * ```html\n * <lc-verification-code-input\n * [formControl]=\"codeControl\"\n * label=\"Verification Code\"\n * [autoSubmit]=\"true\"\n * (complete)=\"onCodeComplete($event)\"\n * ></lc-verification-code-input>\n * ```\n * \n * Cognito Email Format:\n * - 6-digit numeric code (e.g., 123456)\n * - Sent via email with click-to-verify link (?code=XXX)\n * - Valid for 24 hours\n * \n * User Stories: US0 (Registration Email Verification), US2 (Password Reset)\n */\n@Component({\n selector: 'lc-verification-code-input',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => VerificationCodeInputComponent),\n multi: true,\n },\n ],\n templateUrl: './verification-code-input.component.html',\n styleUrls: ['./verification-code-input.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class VerificationCodeInputComponent implements ControlValueAccessor, AfterViewInit {\n @Input() label = 'Verification Code';\n @Input() length = 6;\n @Input() disabled = false;\n @Input() required = false;\n @Input() error?: string;\n @Input() autoSubmit = false;\n\n @Output() readonly complete = new EventEmitter<string>();\n\n @ViewChildren('digitInput') digitInputs!: QueryList<ElementRef<HTMLInputElement>>;\n\n digits: string[] = Array<string>(6).fill('');\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n ngAfterViewInit(): void {\n // Auto-focus first input on mount\n if (this.digitInputs.first) {\n setTimeout(() => this.digitInputs.first.nativeElement.focus(), 100);\n }\n }\n\n /**\n * ControlValueAccessor: Write value from form control\n */\n writeValue(value: string): void {\n if (value && value.length === this.length) {\n this.digits = value.split('');\n this.digitInputs?.toArray().forEach((input, index) => {\n input.nativeElement.value = this.digits[index] || '';\n });\n } else {\n this.digits = Array<string>(this.length).fill('');\n this.digitInputs?.toArray().forEach((input) => {\n input.nativeElement.value = '';\n });\n }\n }\n\n /**\n * ControlValueAccessor: Register onChange callback\n */\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n /**\n * ControlValueAccessor: Register onTouched callback\n */\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n /**\n * ControlValueAccessor: Set disabled state\n */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n /**\n * Handle digit input\n */\n onDigitInput(event: Event, index: number): void {\n const input = event.target as HTMLInputElement;\n const value = input.value;\n\n // Only allow single digit (0-9)\n if (!/^\\d$/.test(value)) {\n input.value = '';\n return;\n }\n\n this.digits[index] = value;\n this.updateValue();\n\n // Move to next input if value entered\n if (value && index < this.length - 1) {\n this.focusInput(index + 1);\n }\n\n // Check if all digits entered\n if (this.isComplete()) {\n this.onTouched();\n const code = this.getCode();\n this.complete.emit(code);\n\n if (this.autoSubmit) {\n // Auto-submit after 100ms delay\n setTimeout(() => {\n this.complete.emit(code);\n }, 100);\n }\n }\n }\n\n /**\n * Handle keydown events (backspace, arrow keys, paste)\n */\n onKeyDown(event: KeyboardEvent, index: number): void {\n const input = event.target as HTMLInputElement;\n\n if (event.key === 'Backspace') {\n // Clear current digit\n if (input.value) {\n input.value = '';\n this.digits[index] = '';\n this.updateValue();\n } else if (index > 0) {\n // Move to previous input and clear it\n this.focusInput(index - 1);\n const prevInputElement = this.digitInputs.toArray()[index - 1];\n if (prevInputElement) {\n const prevInput = prevInputElement.nativeElement;\n prevInput.value = '';\n this.digits[index - 1] = '';\n this.updateValue();\n }\n }\n event.preventDefault();\n } else if (event.key === 'ArrowLeft' && index > 0) {\n this.focusInput(index - 1);\n event.preventDefault();\n } else if (event.key === 'ArrowRight' && index < this.length - 1) {\n this.focusInput(index + 1);\n event.preventDefault();\n }\n }\n\n /**\n * Handle paste event (split 6-digit code across inputs)\n */\n onPaste(event: ClipboardEvent): void {\n event.preventDefault();\n const pastedData = event.clipboardData?.getData('text') || '';\n const digits = pastedData.replace(/\\D/g, '').split('').slice(0, this.length);\n\n if (digits.length === this.length) {\n digits.forEach((digit, index) => {\n this.digits[index] = digit;\n const input = this.digitInputs.toArray()[index]?.nativeElement;\n if (input) {\n input.value = digit;\n }\n });\n\n this.updateValue();\n\n // Focus last input\n this.focusInput(this.length - 1);\n\n // Check if complete\n if (this.isComplete()) {\n this.onTouched();\n const code = this.getCode();\n this.complete.emit(code);\n\n if (this.autoSubmit) {\n setTimeout(() => {\n this.complete.emit(code);\n }, 100);\n }\n }\n }\n }\n\n /**\n * Focus specific input by index\n */\n private focusInput(index: number): void {\n const input = this.digitInputs.toArray()[index]?.nativeElement;\n if (input) {\n input.focus();\n input.select();\n }\n }\n\n /**\n * Check if all digits entered\n */\n private isComplete(): boolean {\n return this.digits.every((digit) => digit !== '');\n }\n\n /**\n * Get complete verification code\n */\n private getCode(): string {\n return this.digits.join('');\n }\n\n /**\n * Update form control value\n */\n private updateValue(): void {\n const code = this.getCode();\n this.onChange(code);\n }\n}\n","<div class=\"lc-verification-code-input\">\n <label class=\"lc-label\">\n {{ label }}\n @if (required) {\n <span class=\"lc-required\">*</span>\n }\n </label>\n\n <div class=\"lc-digit-inputs\" (paste)=\"onPaste($event)\">\n @for (digit of digits; track $index; let i = $index) {\n <input\n #digitInput\n type=\"text\"\n inputmode=\"numeric\"\n maxlength=\"1\"\n [value]=\"digit\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n [attr.aria-label]=\"'Digit ' + (i + 1)\"\n [attr.aria-invalid]=\"error ? 'true' : 'false'\"\n (input)=\"onDigitInput($event, i)\"\n (keydown)=\"onKeyDown($event, i)\"\n class=\"lc-digit-input\"\n [class.lc-digit-input-error]=\"error\"\n [class.lc-digit-input-filled]=\"digit\"\n />\n }\n </div>\n\n @if (error) {\n <div class=\"lc-error\" role=\"alert\">\n {{ error }}\n </div>\n }\n\n <div class=\"lc-hint\">\n Enter the 6-digit code sent to your email\n </div>\n</div>\n","/* eslint-disable @typescript-eslint/member-ordering */\n/* ControlValueAccessor implementation requires specific method placement */\n\nimport {\n Component,\n input,\n output,\n signal,\n computed,\n ChangeDetectionStrategy,\n forwardRef,\n effect,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { InputComponent } from '../input/input.component';\n\n/**\n * Email input component with RFC 5322 validation.\n *\n * Extends the base input component with email-specific validation\n * and provides visual feedback for valid/invalid email addresses.\n *\n * @example\n * ```html\n * <lc-email-input\n * label=\"Email Address\"\n * placeholder=\"you@example.com\"\n * [(ngModel)]=\"email\"\n * [required]=\"true\"\n * (validationChange)=\"handleValidation($event)\"\n * ></lc-email-input>\n * ```\n */\n@Component({\n selector: 'lc-email-input',\n imports: [CommonModule, InputComponent],\n templateUrl: './email-input.component.html',\n styleUrl: './email-input.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => EmailInputComponent),\n multi: true,\n },\n ],\n})\nexport class EmailInputComponent implements ControlValueAccessor {\n // Input Properties\n /**\n * Input label (displayed above input)\n * @default 'Email'\n */\n readonly label = input<string>('Email');\n\n /**\n * Placeholder text\n * @default 'you@example.com'\n */\n readonly placeholder = input<string>('you@example.com');\n\n /**\n * Size of the input\n * @default 'md'\n */\n readonly size = input<'xs' | 'sm' | 'md' | 'lg'>('md');\n\n /**\n * Whether the input is disabled\n * @default false\n */\n readonly disabled = input<boolean>(false);\n\n /**\n * Whether the input is read-only\n * @default false\n */\n readonly readonly = input<boolean>(false);\n\n /**\n * Whether the input is required\n * @default false\n */\n readonly required = input<boolean>(false);\n\n /**\n * Custom error message (overrides validation error)\n */\n readonly error = input<string>();\n\n /**\n * Helper text to display below input\n */\n readonly helperText = input<string>();\n\n /**\n * Whether to show validation feedback immediately\n * @default false (validates on blur)\n */\n readonly validateOnInput = input<boolean>(false);\n\n /**\n * ARIA label for accessibility\n */\n readonly ariaLabel = input<string>();\n\n // Output Events\n /**\n * Emitted when email value changes\n */\n readonly valueChange = output<string>();\n\n /**\n * Emitted when validation state changes\n */\n readonly validationChange = output<{ valid: boolean; error?: string }>();\n\n /**\n * Emitted when input receives focus\n */\n readonly focused = output<void>();\n\n /**\n * Emitted when input loses focus\n */\n readonly blurred = output<void>();\n\n /**\n * Emitted when Enter key is pressed\n */\n readonly enterPressed = output<void>();\n\n // Internal state\n readonly value = signal<string>('');\n private readonly touched = signal<boolean>(false);\n private readonly _formDisabled = signal<boolean>(false);\n\n /**\n * RFC 5322 compliant email regex (simplified but robust)\n * Validates: local-part@domain\n * - Local part: alphanumeric, dots, hyphens, underscores, plus signs\n * - Domain: alphanumeric, dots, hyphens with valid TLD\n */\n private readonly EMAIL_REGEX =\n /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n\n // ControlValueAccessor callbacks\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n /**\n * Computed validation state\n */\n protected readonly isValid = computed(() => {\n const val = this.value();\n if (!val) return this.required() ? false : true;\n return this.EMAIL_REGEX.test(val);\n });\n\n /**\n * Computed error message\n */\n protected readonly validationError = computed(() => {\n // Custom error takes precedence\n if (this.error()) return this.error();\n\n // Show validation errors only after touched or validateOnInput\n if (!this.touched() && !this.validateOnInput()) return undefined;\n\n const val = this.value();\n if (this.required() && !val) {\n return 'Email address is required';\n }\n if (val && !this.isValid()) {\n return 'Please enter a valid email address';\n }\n return undefined;\n });\n\n /**\n * Computed disabled state\n */\n protected get isDisabled(): boolean {\n return this.disabled() || this._formDisabled();\n }\n\n constructor() {\n // Emit validation state changes\n effect(() => {\n const valid = this.isValid();\n const error = this.validationError();\n this.validationChange.emit({ valid, error });\n });\n }\n\n // ===== ControlValueAccessor implementation =====\n\n writeValue(value: string): void {\n this.value.set(value || '');\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this._formDisabled.set(isDisabled);\n }\n\n // ===== Public API methods =====\n\n /**\n * Public method to trigger validation\n */\n public validate(): boolean {\n this.touched.set(true);\n return this.isValid();\n }\n\n /**\n * Public method to reset validation state\n */\n public resetValidation(): void {\n this.touched.set(false);\n }\n\n // ===== Event handlers (protected) =====\n\n /**\n * Handles value changes from base input\n */\n protected onValueChange(newValue: string): void {\n this.value.set(newValue);\n this.onChange(newValue);\n this.valueChange.emit(newValue);\n }\n\n /**\n * Handles focus events\n */\n protected onFocus(): void {\n this.focused.emit();\n }\n\n /**\n * Handles blur events\n */\n protected onBlur(): void {\n this.touched.set(true);\n this.onTouched();\n this.blurred.emit();\n }\n\n /**\n * Handles Enter key press\n */\n protected onEnterPressed(): void {\n this.enterPressed.emit();\n }\n}\n","<lc-input\n [label]=\"label()\"\n [placeholder]=\"placeholder()\"\n type=\"email\"\n [size]=\"size()\"\n [disabled]=\"isDisabled\"\n [readonly]=\"readonly()\"\n [required]=\"required()\"\n [error]=\"validationError()\"\n [helperText]=\"helperText()\"\n iconBefore=\"envelope\"\n [ariaLabel]=\"ariaLabel() || label()\"\n (valueChange)=\"onValueChange($event)\"\n (focused)=\"onFocus()\"\n (blurred)=\"onBlur()\"\n (enterPressed)=\"onEnterPressed()\"\n/>\n","import { Component, input, computed, HostBinding, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport type ContainerSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';\n\n@Component({\n selector: 'lc-container',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './container.component.html',\n styleUrls: ['./container.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ContainerComponent {\n size = input<ContainerSize>('lg');\n noPadding = input<boolean>(false);\n paddingY = input<boolean>(false);\n\n @HostBinding('class')\n get hostClasses(): string {\n return this.classes();\n }\n\n classes = computed(() => {\n const classes: string[] = ['mx-auto'];\n\n // Semantic size class\n classes.push(`container-${this.size()}`);\n\n // Size/Max-width\n if (this.size() !== 'full') {\n const sizeMap: Record<Exclude<ContainerSize, 'full'>, string> = {\n sm: 'max-w-screen-sm',\n md: 'max-w-screen-md',\n lg: 'max-w-screen-lg',\n xl: 'max-w-screen-xl',\n };\n classes.push(sizeMap[this.size() as Exclude<ContainerSize, 'full'>]);\n }\n\n // Padding\n if (!this.noPadding()) {\n classes.push('px-4', 'sm:px-6', 'lg:px-8');\n\n if (this.paddingY()) {\n classes.push('py-6');\n }\n }\n\n return classes.join(' ');\n });\n}\n","<ng-content></ng-content>\n","import { Component, input, computed, HostBinding, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport type SectionSpacing = 'none' | 'sm' | 'md' | 'lg' | 'xl';\nexport type SectionBackground = 'none' | 'gray' | 'primary' | 'secondary';\n\n@Component({\n selector: 'lc-section',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './section.component.html',\n styleUrls: ['./section.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SectionComponent {\n spacing = input<SectionSpacing>('md');\n background = input<SectionBackground>('none');\n noPaddingX = input<boolean>(false);\n noPaddingY = input<boolean>(false);\n\n @HostBinding('class')\n get hostClasses(): string {\n return this.classes();\n }\n\n classes = computed(() => {\n const classes: string[] = [];\n\n // Spacing\n const spacingClass = `section-spacing-${this.spacing()}`;\n classes.push(spacingClass);\n\n if (!this.noPaddingY()) {\n const spacingMap: Record<SectionSpacing, string> = {\n none: '',\n sm: 'py-8',\n md: 'py-12',\n lg: 'py-16',\n xl: 'py-24',\n };\n const paddingY = spacingMap[this.spacing()];\n if (paddingY) {\n classes.push(paddingY);\n }\n }\n\n // Background\n const backgroundClass = `section-bg-${this.background()}`;\n classes.push(backgroundClass);\n\n if (this.background() !== 'none') {\n const backgroundMap: Record<Exclude<SectionBackground, 'none'>, string> = {\n gray: 'bg-neutral-50',\n primary: 'bg-primary-50',\n secondary: 'bg-secondary-50',\n };\n classes.push(backgroundMap[this.background() as Exclude<SectionBackground, 'none'>]);\n }\n\n // Horizontal padding\n if (!this.noPaddingX()) {\n classes.push('px-4', 'sm:px-6', 'lg:px-8');\n }\n\n return classes.join(' ');\n });\n}\n","<ng-content></ng-content>\n","import { Component, input, computed, HostBinding, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport type SpacerSize = 'auto' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n@Component({\n selector: 'lc-spacer',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './spacer.component.html',\n styleUrls: ['./spacer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SpacerComponent {\n size = input<SpacerSize>('auto');\n\n @HostBinding('class')\n get hostClasses(): string {\n return this.classes();\n }\n\n @HostBinding('attr.aria-hidden')\n get ariaHidden(): string {\n return 'true';\n }\n\n @HostBinding('attr.tabindex')\n get tabIndex(): number {\n return -1;\n }\n\n classes = computed(() => {\n const classes: string[] = [];\n\n // Add semantic size class\n classes.push(`spacer-${this.size()}`);\n\n if (this.size() === 'auto') {\n classes.push('flex-1');\n }\n // Note: spacer-xs, spacer-sm, etc. are defined in SCSS\n\n return classes.join(' ');\n });\n}\n","\n","import { Component, input, computed, HostBinding, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport type StackDirection = 'vertical' | 'horizontal';\nexport type StackGap = 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';\nexport type StackAlign = 'start' | 'center' | 'end' | 'stretch' | 'baseline';\nexport type StackJustify = 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly';\n\n@Component({\n selector: 'lc-stack',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './stack.component.html',\n styleUrls: ['./stack.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StackComponent {\n direction = input<StackDirection>('vertical');\n gap = input<StackGap>('md');\n align = input<StackAlign>('stretch');\n justify = input<StackJustify>('start');\n wrap = input<boolean>(false);\n fullWidth = input<boolean>(false);\n\n @HostBinding('class')\n get hostClasses(): string {\n return this.classes();\n }\n\n classes = computed(() => {\n const classes: string[] = ['flex'];\n\n // Semantic direction class\n classes.push(`stack-${this.direction()}`);\n\n // Direction\n if (this.direction() === 'horizontal') {\n classes.push('flex-row');\n } else {\n classes.push('flex-col');\n }\n\n // Semantic gap class\n classes.push(`stack-gap-${this.gap()}`);\n\n // Gap\n const gapMap: Record<StackGap, string> = {\n none: 'gap-0',\n xs: 'gap-1',\n sm: 'gap-2',\n md: 'gap-4',\n lg: 'gap-6',\n xl: 'gap-8',\n };\n classes.push(gapMap[this.gap()]);\n\n // Alignment\n const alignMap: Record<StackAlign, string> = {\n start: 'items-start',\n center: 'items-center',\n end: 'items-end',\n stretch: 'items-stretch',\n baseline: 'items-baseline',\n };\n classes.push(alignMap[this.align()]);\n\n // Justification\n const justifyMap: Record<StackJustify, string> = {\n start: 'justify-start',\n center: 'justify-center',\n end: 'justify-end',\n between: 'justify-between',\n around: 'justify-around',\n evenly: 'justify-evenly',\n };\n classes.push(justifyMap[this.justify()]);\n\n // Wrap\n if (this.wrap()) {\n classes.push('flex-wrap');\n }\n\n // Full width\n if (this.fullWidth()) {\n classes.push('w-full');\n }\n\n return classes.join(' ');\n });\n}\n","<ng-content></ng-content>\n","import { Component, ChangeDetectionStrategy, input, computed, signal, effect } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AlertComponent, AlertVariant } from '../alert/alert.component';\n\n/**\n * Maps common Cognito error codes to user-friendly messages\n */\nconst COGNITO_ERROR_MESSAGES: Record<string, string> = {\n // Sign Up Errors\n UsernameExistsException: 'An account with this email already exists.',\n InvalidPasswordException:\n 'Password must be at least 8 characters with uppercase, lowercase, number, and special character.',\n InvalidParameterException: 'Invalid input. Please check your information and try again.',\n\n // Sign In Errors\n UserNotFoundException: 'No account found with this email address.',\n NotAuthorizedException: 'Incorrect email or password.',\n UserNotConfirmedException: 'Please verify your email address before signing in.',\n PasswordResetRequiredException: 'You must reset your password before continuing.',\n\n // Confirmation Errors\n CodeMismatchException: 'Invalid verification code. Please try again.',\n ExpiredCodeException: 'Verification code has expired. Please request a new one.',\n\n // Password Reset Errors\n LimitExceededException: 'Too many attempts. Please try again later.',\n TooManyRequestsException: 'Too many requests. Please wait a moment and try again.',\n TooManyFailedAttemptsException:\n 'Too many failed attempts. Your account has been temporarily locked.',\n\n // Token Errors\n NotAuthorizedException_TokenExpired: 'Your session has expired. Please sign in again.',\n\n // General Errors\n NetworkError: 'Network error. Please check your connection and try again.',\n UnknownError: 'An unexpected error occurred. Please try again.',\n};\n\n/**\n * Error severity levels\n */\nexport type ErrorSeverity = 'error' | 'warning' | 'info';\n\n/**\n * Error display component for authentication error messages.\n *\n * Automatically maps Cognito error codes to user-friendly messages\n * and displays them with appropriate severity styling.\n *\n * @example\n * ```html\n * <!-- Display Cognito error -->\n * <lc-error-display\n * [error]=\"cognitoError\"\n * [dismissible]=\"true\"\n * ></lc-error-display>\n *\n * <!-- Display custom error -->\n * <lc-error-display\n * message=\"Invalid credentials\"\n * severity=\"error\"\n * ></lc-error-display>\n * ```\n */\n@Component({\n selector: 'lc-error-display',\n imports: [CommonModule, AlertComponent],\n templateUrl: './error-display.component.html',\n styleUrl: './error-display.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ErrorDisplayComponent {\n /**\n * Error object (Cognito or generic Error)\n */\n readonly error = input<Error | { code?: string; message?: string } | null>();\n\n /**\n * Custom error message (overrides error.message)\n */\n readonly message = input<string>();\n\n /**\n * Error severity level\n * @default 'error'\n */\n readonly severity = input<ErrorSeverity>('error');\n\n /**\n * Title for the error display\n */\n readonly title = input<string>();\n\n /**\n * Whether the error can be dismissed\n * @default true\n */\n readonly dismissible = input<boolean>(true);\n\n /**\n * Whether to show icon\n * @default true\n */\n readonly showIcon = input<boolean>(true);\n\n /**\n * Whether to automatically hide after a delay\n * @default false\n */\n readonly autoDismiss = input<boolean>(false);\n\n /**\n * Auto-dismiss delay in milliseconds\n * @default 5000\n */\n readonly autoDismissDelay = input<number>(5000);\n\n /**\n * Internal visibility state\n */\n protected readonly visible = signal<boolean>(false);\n\n /**\n * Computed error message\n */\n protected readonly errorMessage = computed(() => {\n // Custom message takes precedence\n if (this.message()) return this.message();\n\n const err = this.error();\n if (!err) return '';\n\n // Try to extract Cognito error code\n const errorCode = 'code' in err ? err.code : undefined;\n if (errorCode && COGNITO_ERROR_MESSAGES[errorCode]) {\n return COGNITO_ERROR_MESSAGES[errorCode];\n }\n\n // Fallback to error message\n if ('message' in err && err.message) {\n return err.message;\n }\n\n return COGNITO_ERROR_MESSAGES['UnknownError'];\n });\n\n /**\n * Computed alert variant based on severity\n */\n protected readonly alertVariant = computed((): AlertVariant => {\n const severity = this.severity();\n if (severity === 'warning') return 'warning';\n if (severity === 'info') return 'info';\n return 'error';\n });\n\n /**\n * Computed title for the error\n */\n protected readonly errorTitle = computed(() => {\n if (this.title()) return this.title();\n\n const severity = this.severity();\n if (severity === 'warning') return 'Warning';\n if (severity === 'info') return 'Information';\n return 'Error';\n });\n\n /**\n * Auto-dismiss timer\n */\n private autoDismissTimer?: ReturnType<typeof setTimeout>;\n\n constructor() {\n // Show/hide based on error presence\n effect(() => {\n const hasError = !!(this.error() || this.message());\n this.visible.set(hasError);\n\n // Setup auto-dismiss if enabled\n if (hasError && this.autoDismiss()) {\n this.clearAutoDismissTimer();\n this.autoDismissTimer = setTimeout(() => {\n this.visible.set(false);\n }, this.autoDismissDelay());\n }\n });\n }\n\n /**\n * Handle alert dismissed\n */\n protected onDismissed(): void {\n this.visible.set(false);\n this.clearAutoDismissTimer();\n }\n\n /**\n * Clear auto-dismiss timer\n */\n private clearAutoDismissTimer(): void {\n if (this.autoDismissTimer) {\n clearTimeout(this.autoDismissTimer);\n this.autoDismissTimer = undefined;\n }\n }\n}\n","@if (visible() && errorMessage()) {\n <lc-alert\n [variant]=\"alertVariant()\"\n [title]=\"errorTitle()\"\n [message]=\"errorMessage()\"\n [dismissible]=\"dismissible()\"\n [showIcon]=\"showIcon()\"\n (dismissed)=\"onDismissed()\"\n />\n}\n","import { Injectable, signal, Signal } from '@angular/core';\n\nexport type ToastVariant = 'success' | 'error' | 'warning' | 'info';\nexport type ToastPosition =\n | 'top-left'\n | 'top-center'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-center'\n | 'bottom-right';\n\nexport interface ToastAction {\n label: string;\n onClick: () => void;\n}\n\nexport interface ToastConfig {\n message: string;\n variant?: ToastVariant;\n position?: ToastPosition;\n duration?: number;\n showCloseButton?: boolean;\n action?: ToastAction;\n}\n\nexport interface Toast extends Required<Omit<ToastConfig, 'action'>> {\n id: string;\n action?: ToastAction;\n}\n\n/**\n * Toast service for showing ephemeral notifications.\n *\n * @example\n * ```typescript\n * constructor(private toastService: ToastService) {}\n *\n * showSuccess() {\n * this.toastService.show({\n * message: 'Changes saved successfully!',\n * variant: 'success',\n * duration: 3000\n * });\n * }\n * ```\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class ToastService {\n /**\n * Public readonly signal for toasts\n */\n public readonly toasts: Signal<readonly Toast[]>;\n\n /**\n * Internal signal for toast list\n */\n private readonly toastList = signal<Toast[]>([]);\n\n private readonly MAX_TOASTS = 5;\n private toastIdCounter = 0;\n private activeTimeouts = new Map<string, number>();\n\n constructor() {\n this.toasts = this.toastList.asReadonly();\n }\n\n /**\n * Show a toast notification\n */\n show(config: ToastConfig): string {\n const toast: Toast = {\n id: this.generateId(),\n message: config.message,\n variant: config.variant || 'info',\n position: config.position || 'top-right',\n duration: config.duration !== undefined ? config.duration : 3000,\n showCloseButton: config.showCloseButton !== undefined ? config.showCloseButton : true,\n action: config.action,\n };\n\n // Add toast to list\n let currentToasts = this.toastList();\n\n // Remove oldest toast if at max capacity\n if (currentToasts.length >= this.MAX_TOASTS) {\n const oldestToast = currentToasts[0];\n if (oldestToast) {\n this.clearTimeout(oldestToast.id);\n currentToasts = currentToasts.slice(1);\n }\n }\n\n this.toastList.set([...currentToasts, toast]);\n\n // Auto-dismiss if duration > 0\n if (toast.duration > 0) {\n const timeoutId = window.setTimeout(() => {\n this.close(toast.id);\n }, toast.duration);\n\n this.activeTimeouts.set(toast.id, timeoutId);\n }\n\n return toast.id;\n }\n\n /**\n * Close a specific toast\n */\n close(id: string): void {\n this.removeToast(id);\n }\n\n /**\n * Close all toasts\n */\n closeAll(): void {\n const currentToasts = this.toastList();\n currentToasts.forEach((toast) => {\n this.clearTimeout(toast.id);\n });\n this.toastList.set([]);\n }\n\n /**\n * Generate unique toast ID\n */\n private generateId(): string {\n return `toast-${++this.toastIdCounter}-${Date.now()}`;\n }\n\n /**\n * Remove a toast from the list\n */\n private removeToast(id: string): void {\n this.clearTimeout(id);\n const currentToasts = this.toastList();\n this.toastList.set(currentToasts.filter((t) => t.id !== id));\n }\n\n /**\n * Clear timeout for a toast\n */\n private clearTimeout(id: string): void {\n const timeoutId = this.activeTimeouts.get(id);\n if (timeoutId !== undefined) {\n window.clearTimeout(timeoutId);\n this.activeTimeouts.delete(id);\n }\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n ViewEncapsulation,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IconComponent } from '../icon/icon.component';\nimport type { Toast, ToastVariant } from './toast.service';\n\n/**\n * Toast component for displaying ephemeral notifications.\n * Typically used via ToastService, not directly.\n *\n * @example\n * ```typescript\n * // Use via service\n * constructor(private toastService: ToastService) {}\n *\n * showToast() {\n * this.toastService.show({\n * message: 'Success!',\n * variant: 'success'\n * });\n * }\n * ```\n */\n@Component({\n selector: 'lc-toast',\n standalone: true,\n imports: [CommonModule, IconComponent],\n templateUrl: './toast.component.html',\n styleUrls: ['./toast.component.scss'],\n // eslint-disable-next-line @angular-eslint/use-component-view-encapsulation\n encapsulation: ViewEncapsulation.None, // Required for dynamic variant class styling\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[attr.role]': 'ariaRole()',\n '[attr.aria-live]': 'ariaLive()',\n '[attr.aria-atomic]': '\"true\"',\n },\n})\nexport class ToastComponent {\n /**\n * Toast data\n */\n toast = input.required<Toast>();\n\n /**\n * Emitted when toast is closed\n */\n readonly closed = output<string>();\n\n /**\n * Computed host classes\n */\n protected hostClasses = computed(() => {\n const toast = this.toast();\n return `lc-toast lc-toast--${toast.variant}`;\n });\n\n /**\n * Computed container classes\n */\n protected containerClasses = computed(() => {\n return 'lc-toast__container';\n });\n\n /**\n * Computed ARIA role\n */\n protected ariaRole = computed(() => {\n const variant = this.toast().variant;\n return variant === 'error' || variant === 'warning' ? 'alert' : 'status';\n });\n\n /**\n * Computed ARIA live region priority\n */\n protected ariaLive = computed(() => {\n const variant = this.toast().variant;\n return variant === 'error' || variant === 'warning' ? 'assertive' : 'polite';\n });\n\n /**\n * Computed default icon based on variant\n */\n protected defaultIcon = computed(() => {\n const icons: Record<ToastVariant, string> = {\n success: 'check-circle',\n error: 'x-circle',\n warning: 'exclamation-triangle',\n info: 'information-circle',\n };\n return icons[this.toast().variant];\n });\n\n /**\n * Handle close button click\n */\n protected onCloseClick(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n this.closed.emit(this.toast().id);\n }\n\n /**\n * Handle action button click\n */\n protected onActionClick(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n const action = this.toast().action;\n if (action) {\n action.onClick();\n this.closed.emit(this.toast().id);\n }\n }\n}\n","<div [class]=\"containerClasses()\">\n <div class=\"lc-toast__icon\">\n <lc-icon [name]=\"defaultIcon()\" size=\"md\" />\n </div>\n \n <div class=\"lc-toast__message\">\n {{ toast().message }}\n </div>\n \n @if (toast().action) {\n <button\n type=\"button\"\n class=\"lc-toast__action\"\n (click)=\"onActionClick($event)\"\n >\n {{ toast().action?.label }}\n </button>\n }\n \n @if (toast().showCloseButton) {\n <button\n type=\"button\"\n class=\"lc-toast__close\"\n aria-label=\"Close notification\"\n (click)=\"onCloseClick($event)\"\n >\n <lc-icon name=\"x-mark\" size=\"sm\" />\n </button>\n }\n</div>\n","import {\n Component,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n input,\n output,\n signal,\n computed,\n effect,\n OnDestroy,\n ElementRef,\n ViewChild,\n inject,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { A11yModule, FocusTrap, ConfigurableFocusTrapFactory } from '@angular/cdk/a11y';\nimport { IconComponent } from '../icon/icon.component';\n\nexport type ModalSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';\n\n/**\n * Modal dialog component for focused user interactions.\n * Uses FocusTrap for accessibility.\n *\n * @example\n * ```html\n * <lc-modal [(open)]=\"isOpen\" size=\"md\" [closeOnBackdropClick]=\"true\">\n * <div slot=\"header\">\n * <h2>Modal Title</h2>\n * </div>\n * <div slot=\"body\">\n * <p>Modal content goes here</p>\n * </div>\n * <div slot=\"footer\">\n * <lc-button (click)=\"closeModal()\">Close</lc-button>\n * </div>\n * </lc-modal>\n * ```\n */\n@Component({\n selector: 'lc-modal',\n standalone: true,\n imports: [CommonModule, A11yModule, IconComponent],\n templateUrl: './modal.component.html',\n styleUrls: ['./modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/use-component-view-encapsulation\n encapsulation: ViewEncapsulation.None, // Required for dynamic size class styling\n})\nexport class ModalComponent implements OnDestroy {\n @ViewChild('modalContent') modalContent?: ElementRef<HTMLElement>;\n\n /**\n * Whether the modal is open (input from parent)\n * @default false\n */\n open = input<boolean>(false);\n\n /**\n * Modal size\n * @default 'md'\n */\n size = input<ModalSize>('md');\n\n /**\n * Whether clicking backdrop closes modal\n * @default true\n */\n closeOnBackdropClick = input<boolean>(true);\n\n /**\n * Whether pressing Escape closes modal\n * @default true\n */\n closeOnEscape = input<boolean>(true);\n\n /**\n * Whether to show close button in header\n * @default true\n */\n showCloseButton = input<boolean>(true);\n\n /**\n * ARIA label for accessibility\n */\n ariaLabel = input<string>();\n\n /**\n * ARIA labelledby ID\n */\n ariaLabelledBy = input<string>();\n\n /**\n * ARIA describedby ID\n */\n ariaDescribedBy = input<string>();\n\n /**\n * Emitted when modal opens\n */\n readonly modalOpened = output<void>();\n\n /**\n * Emitted when modal closes\n */\n readonly modalClosed = output<void>();\n\n /**\n * Two-way binding for open state\n */\n readonly openChange = output<boolean>();\n\n /**\n * Emitted when backdrop is clicked\n */\n readonly backdropClicked = output<MouseEvent>();\n\n /**\n * Internal open state signal (protected for AOT)\n */\n protected _open = signal<boolean>(false);\n\n /**\n * Computed modal classes\n */\n protected modalClasses = computed(() => {\n return `lc-modal lc-modal--${this.size()}`;\n });\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n private readonly focusTrapFactory = inject(ConfigurableFocusTrapFactory);\n private focusTrap?: FocusTrap;\n private originalOverflow?: string;\n private escapeListener?: (event: KeyboardEvent) => void;\n\n constructor() {\n // Sync input with internal state\n effect(() => {\n this._open.set(this.open());\n });\n\n // Watch for open state changes\n effect(() => {\n const isOpen = this._open();\n if (isOpen) {\n void this.showModal();\n } else {\n this.hideModal();\n }\n });\n\n // Listen for Escape key\n if (typeof window !== 'undefined') {\n this.escapeListener = this.handleEscapeKey.bind(this);\n document.addEventListener('keydown', this.escapeListener);\n }\n }\n\n ngOnDestroy(): void {\n this.hideModal();\n if (this.escapeListener) {\n document.removeEventListener('keydown', this.escapeListener);\n }\n }\n\n /**\n * Open the modal programmatically\n */\n openModal(): void {\n this._open.set(true);\n this.openChange.emit(true);\n this.modalOpened.emit();\n }\n\n /**\n * Close the modal programmatically\n */\n closeModal(): void {\n this._open.set(false);\n this.openChange.emit(false);\n this.modalClosed.emit();\n }\n\n /**\n * Handle backdrop click\n */\n protected onBackdropClick(event: MouseEvent): void {\n this.backdropClicked.emit(event);\n if (this.closeOnBackdropClick()) {\n this.closeModal();\n }\n }\n\n /**\n * Handle close button click\n */\n protected onCloseClick(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n this.closeModal();\n }\n\n /**\n * Handle Escape key press\n */\n private handleEscapeKey(event: KeyboardEvent): void {\n if (event.key === 'Escape' && this._open() && this.closeOnEscape()) {\n this.closeModal();\n }\n }\n\n /**\n * Show the modal\n */\n private async showModal(): Promise<void> {\n // Lock body scroll\n if (typeof document !== 'undefined') {\n this.originalOverflow = document.body.style.overflow;\n document.body.style.overflow = 'hidden';\n }\n\n // Setup focus trap after view is ready\n await Promise.resolve();\n if (this.modalContent && this._open()) {\n const element = this.modalContent.nativeElement;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n this.focusTrap = this.focusTrapFactory.create(element);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n this.focusTrap.focusInitialElement();\n }\n }\n\n /**\n * Hide the modal\n */\n private hideModal(): void {\n // Restore body scroll\n if (typeof document !== 'undefined' && this.originalOverflow !== undefined) {\n document.body.style.overflow = this.originalOverflow;\n this.originalOverflow = undefined;\n }\n\n // Destroy focus trap\n if (this.focusTrap) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n this.focusTrap.destroy();\n this.focusTrap = undefined;\n }\n }\n}\n","@if (open()) {\n <!-- Backdrop -->\n <div\n class=\"cdk-overlay-backdrop lc-modal-backdrop\"\n (click)=\"onBackdropClick($event)\"\n ></div>\n\n <!-- Modal Content -->\n <div\n #modalContent\n [class]=\"modalClasses()\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-labelledby]=\"ariaLabelledBy()\"\n [attr.aria-describedby]=\"ariaDescribedBy()\"\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"true\"\n >\n <div class=\"lc-modal__header\">\n <ng-content select=\"[slot='header']\" />\n \n @if (showCloseButton()) {\n <button\n type=\"button\"\n class=\"lc-modal__close\"\n aria-label=\"Close modal\"\n (click)=\"onCloseClick($event)\"\n >\n <lc-icon name=\"x-mark\" size=\"md\" />\n </button>\n }\n </div>\n \n <div class=\"lc-modal__body\">\n <ng-content select=\"[slot='body']\" />\n <ng-content />\n </div>\n \n <div class=\"lc-modal__footer\">\n <ng-content select=\"[slot='footer']\" />\n </div>\n </div>\n}\n","import {\n Directive,\n input,\n ElementRef,\n OnDestroy,\n Renderer2,\n ViewContainerRef,\n ComponentRef,\n HostListener,\n Component,\n ChangeDetectionStrategy,\n inject,\n} from '@angular/core';\nimport { Overlay, OverlayRef, ConnectedPosition } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\n\nexport type TooltipPosition = 'top' | 'bottom' | 'left' | 'right';\n\n/**\n * Internal tooltip content component\n */\n@Component({\n selector: 'lc-tooltip-content',\n standalone: true,\n imports: [CommonModule],\n template: `<div class=\"lc-tooltip-inner\">{{ content }}</div>`,\n styles: [\n `\n :host {\n display: block;\n background-color: rgba(0, 0, 0, 0.9);\n color: white;\n padding: 0.5rem 0.75rem;\n border-radius: 0.375rem;\n font-size: 0.875rem;\n line-height: 1.25rem;\n max-width: 300px;\n word-wrap: break-word;\n box-shadow:\n 0 4px 6px -1px rgba(0, 0, 0, 0.1),\n 0 2px 4px -1px rgba(0, 0, 0, 0.06);\n }\n\n .lc-tooltip-inner {\n position: relative;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'lc-tooltip',\n role: 'tooltip',\n },\n})\nexport class TooltipContentComponent {\n content = '';\n}\n\n/**\n * Tooltip directive for displaying contextual information.\n * Uses Angular CDK Overlay for positioning.\n *\n * @example\n * ```html\n * <button lcTooltip=\"Click me!\" tooltipPosition=\"top\">\n * Hover or focus\n * </button>\n * ```\n */\n@Directive({\n selector: '[lcTooltip]',\n standalone: true,\n})\nexport class TooltipDirective implements OnDestroy {\n /**\n * Tooltip content text\n */\n lcTooltip = input.required<string>();\n\n /**\n * Tooltip position\n * @default 'top'\n */\n tooltipPosition = input<TooltipPosition>('top');\n\n /**\n * Show delay in milliseconds\n * @default 0\n */\n tooltipShowDelay = input<number>(0);\n\n /**\n * Hide delay in milliseconds\n * @default 0\n */\n tooltipHideDelay = input<number>(0);\n\n /**\n * Whether tooltip is disabled\n * @default false\n */\n tooltipDisabled = input<boolean>(false);\n\n private overlayRef?: OverlayRef;\n private tooltipRef?: ComponentRef<TooltipContentComponent>;\n private showTimeout?: number;\n private hideTimeout?: number;\n private tooltipId?: string;\n\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n private readonly overlay = inject(Overlay);\n private readonly viewContainerRef = inject(ViewContainerRef);\n private readonly renderer = inject(Renderer2);\n\n ngOnDestroy(): void {\n this.hide();\n this.cleanup();\n }\n\n @HostListener('mouseenter')\n onMouseEnter(): void {\n this.showWithDelay();\n }\n\n @HostListener('mouseleave')\n onMouseLeave(): void {\n this.hideWithDelay();\n }\n\n @HostListener('focus')\n onFocus(): void {\n this.showWithDelay();\n }\n\n @HostListener('blur')\n onBlur(): void {\n this.hideWithDelay();\n }\n\n /**\n * Show tooltip programmatically\n */\n show(): void {\n if (this.tooltipDisabled() || !this.lcTooltip()) {\n return;\n }\n\n this.clearTimeouts();\n\n if (!this.overlayRef) {\n this.createOverlay();\n }\n\n if (!this.tooltipRef && this.overlayRef) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n const portal = new ComponentPortal(TooltipContentComponent, this.viewContainerRef);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n this.tooltipRef = this.overlayRef.attach(portal) as ComponentRef<TooltipContentComponent>;\n this.tooltipRef.instance.content = this.lcTooltip();\n\n // Add position class to tooltip component\n const tooltipEl = this.tooltipRef.location.nativeElement as HTMLElement;\n this.renderer.addClass(tooltipEl, `lc-tooltip--${this.tooltipPosition()}`);\n\n // Generate unique ID for ARIA\n this.tooltipId = `tooltip-${Math.random().toString(36).substr(2, 9)}`;\n this.renderer.setAttribute(this.elementRef.nativeElement, 'aria-describedby', this.tooltipId);\n }\n }\n\n /**\n * Hide tooltip programmatically\n */\n hide(): void {\n this.clearTimeouts();\n\n if (this.tooltipRef) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n this.tooltipRef.destroy();\n this.tooltipRef = undefined;\n }\n\n if (this.overlayRef) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n this.overlayRef.detach();\n }\n\n if (this.tooltipId) {\n this.renderer.removeAttribute(this.elementRef.nativeElement, 'aria-describedby');\n this.tooltipId = undefined;\n }\n }\n\n /**\n * Toggle tooltip visibility\n */\n toggle(): void {\n if (this.tooltipRef) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n private showWithDelay(): void {\n this.clearTimeouts();\n const delay = this.tooltipShowDelay();\n\n if (delay > 0) {\n this.showTimeout = window.setTimeout(() => this.show(), delay);\n } else {\n this.show();\n }\n }\n\n private hideWithDelay(): void {\n this.clearTimeouts();\n const delay = this.tooltipHideDelay();\n\n if (delay > 0) {\n this.hideTimeout = window.setTimeout(() => this.hide(), delay);\n } else {\n this.hide();\n }\n }\n\n private createOverlay(): void {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n const positionStrategy = this.overlay\n .position()\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n .flexibleConnectedTo(this.elementRef)\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n .withPositions(this.getPositions());\n\n /* eslint-disable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access */\n this.overlayRef = this.overlay.create({\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n panelClass: `lc-tooltip--${this.tooltipPosition()}`,\n }) as OverlayRef;\n /* eslint-enable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access */\n }\n\n private getPositions(): ConnectedPosition[] {\n const position = this.tooltipPosition();\n const positions: Record<TooltipPosition, ConnectedPosition> = {\n top: {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom',\n offsetY: -8,\n },\n bottom: {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n offsetY: 8,\n },\n left: {\n originX: 'start',\n originY: 'center',\n overlayX: 'end',\n overlayY: 'center',\n offsetX: -8,\n },\n right: {\n originX: 'end',\n originY: 'center',\n overlayX: 'start',\n overlayY: 'center',\n offsetX: 8,\n },\n };\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return [positions[position]];\n }\n\n private clearTimeouts(): void {\n if (this.showTimeout) {\n window.clearTimeout(this.showTimeout);\n this.showTimeout = undefined;\n }\n if (this.hideTimeout) {\n window.clearTimeout(this.hideTimeout);\n this.hideTimeout = undefined;\n }\n }\n\n private cleanup(): void {\n this.clearTimeouts();\n if (this.overlayRef) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n this.overlayRef.dispose();\n this.overlayRef = undefined;\n }\n }\n}\n","import { Component, Input, signal, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\n\nexport interface BreadcrumbItem {\n label: string;\n url?: string;\n}\n\nexport type BreadcrumbSize = 'sm' | 'md' | 'lg';\n\n@Component({\n selector: 'lc-breadcrumbs',\n imports: [CommonModule, RouterModule],\n templateUrl: './breadcrumbs.component.html',\n styleUrls: ['./breadcrumbs.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BreadcrumbsComponent {\n // Signals for reactive state\n items = signal<BreadcrumbItem[]>([]);\n separator = signal<string>('/');\n maxItems = signal<number>(0); // 0 = show all\n size = signal<BreadcrumbSize>('md');\n ariaLabel = signal<string>('Breadcrumbs');\n\n // Computed CSS classes\n breadcrumbClasses = computed(() => {\n const classes = ['lc-breadcrumbs'];\n classes.push(`lc-breadcrumbs--${this.size()}`);\n return classes.join(' ');\n });\n\n // Computed visible items with ellipsis support\n visibleItems = computed(() => {\n const allItems = this.items();\n const max = this.maxItems();\n\n // If maxItems is 0 or items fit, show all\n if (max === 0 || allItems.length <= max) {\n return allItems;\n }\n\n // Show first item + ellipsis + last item(s)\n const result: BreadcrumbItem[] = [];\n const lastIndex = allItems.length - 1;\n\n // Always show first item\n result.push(allItems[0]!);\n\n // Add ellipsis\n result.push({ label: '...' });\n\n // Always show last item\n result.push(allItems[lastIndex]!);\n\n return result;\n });\n\n // Input setters for @Input binding\n @Input()\n set itemsInput(value: BreadcrumbItem[]) {\n this.items.set(value);\n }\n\n @Input()\n set separatorInput(value: string) {\n this.separator.set(value);\n }\n\n @Input()\n set maxItemsInput(value: number) {\n this.maxItems.set(value);\n }\n\n @Input()\n set sizeInput(value: BreadcrumbSize) {\n this.size.set(value);\n }\n\n @Input()\n set ariaLabelInput(value: string) {\n this.ariaLabel.set(value);\n }\n\n // Helper to check if item is last\n isLastItem(index: number): boolean {\n return index === this.visibleItems().length - 1;\n }\n\n // Helper to check if item is ellipsis\n isEllipsis(item: BreadcrumbItem): boolean {\n return item.label === '...';\n }\n}\n","@if (items().length > 0) {\n <nav [attr.aria-label]=\"ariaLabel()\">\n <ol [ngClass]=\"breadcrumbClasses()\">\n @for (item of visibleItems(); track item; let i = $index) {\n <li class=\"lc-breadcrumbs__item\">\n @if (isLastItem(i)) {\n <span class=\"lc-breadcrumbs__current\" aria-current=\"page\">\n {{ item.label }}\n </span>\n } @else if (isEllipsis(item)) {\n <span class=\"lc-breadcrumbs__ellipsis\" aria-hidden=\"true\">\n {{ item.label }}\n </span>\n } @else {\n <a\n [routerLink]=\"item.url\"\n class=\"lc-breadcrumbs__link\"\n >\n {{ item.label }}\n </a>\n }\n \n @if (!isLastItem(i)) {\n <span class=\"lc-breadcrumbs__separator\" aria-hidden=\"true\">\n {{ separator() }}\n </span>\n }\n </li>\n }\n </ol>\n \n <!-- Support for additional content projection -->\n <ng-content></ng-content>\n </nav>\n}\n","import { Component, ChangeDetectionStrategy, input, computed, signal } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\nexport type AvatarStatus = 'online' | 'offline' | 'away' | 'busy';\n\n/**\n * Avatar Component\n *\n * A circular user representation component displaying images or initials.\n * Supports status indicators and multiple sizes.\n *\n * @example\n * ```html\n * <!-- With image -->\n * <lc-avatar src=\"https://example.com/avatar.jpg\" alt=\"John Doe\" />\n *\n * <!-- With initials -->\n * <lc-avatar name=\"John Doe\" />\n *\n * <!-- With status indicator -->\n * <lc-avatar name=\"Jane Smith\" status=\"online\" size=\"lg\" />\n * ```\n */\n@Component({\n selector: 'lc-avatar',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './avatar.component.html',\n styleUrl: './avatar.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AvatarComponent {\n /** Image source URL */\n src = input<string>();\n\n /** Alt text for the image */\n alt = input<string>();\n\n /** Full name for generating initials */\n name = input<string>();\n\n /** Size of the avatar */\n size = input<AvatarSize>('md');\n\n /** Status indicator */\n status = input<AvatarStatus>();\n\n /**\n * Computed initials from name\n */\n initials = computed(() => {\n const fullName = this.name();\n if (!fullName || fullName.trim() === '') {\n return '?';\n }\n\n const parts = fullName\n .trim()\n .split(/\\s+/)\n .filter((p) => p.length > 0);\n\n if (parts.length === 0) {\n return '?';\n }\n\n if (parts.length === 1) {\n return parts[0]?.[0]?.toUpperCase() ?? '?';\n }\n\n // First and last name initials\n const firstInitial = parts[0]?.[0];\n const lastInitial = parts[parts.length - 1]?.[0];\n\n if (firstInitial && lastInitial) {\n return (firstInitial + lastInitial).toUpperCase();\n }\n return '?';\n });\n\n /**\n * Computed CSS classes for the avatar\n */\n avatarClasses = computed(() => {\n const classes = ['lc-avatar'];\n\n classes.push(`lc-avatar--${this.size()}`);\n\n if (this.status()) {\n classes.push('lc-avatar--with-status');\n }\n\n return classes.join(' ');\n });\n\n /**\n * Get aria-label for accessibility\n */\n ariaLabel = computed(() => {\n return this.alt() || this.name() || 'Avatar';\n });\n\n /**\n * Check if image should be displayed\n */\n showImage = computed(() => {\n return this.src() && !this.imageError();\n });\n\n /** Track if image failed to load */\n protected imageError = signal(false);\n\n /**\n * Handle image load error\n */\n onImageError(): void {\n this.imageError.set(true);\n }\n}\n","<div \n [class]=\"avatarClasses()\"\n role=\"img\"\n [attr.aria-label]=\"ariaLabel()\"\n>\n @if (showImage()) {\n <img \n [src]=\"src()!\" \n [alt]=\"alt() || name() || 'Avatar'\" \n class=\"lc-avatar__image\"\n (error)=\"onImageError()\"\n />\n } @else {\n <span class=\"lc-avatar__initials\">{{ initials() }}</span>\n }\n\n @if (status()) {\n <span \n class=\"lc-avatar__status lc-avatar__status--{{ status() }}\"\n [attr.aria-label]=\"status() + ' status'\"\n ></span>\n }\n</div>\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n signal,\n computed,\n inject,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { ButtonComponent } from '../button/button.component';\nimport { LogoComponent } from '../logo/logo.component';\nimport { IconComponent } from '../icon/icon.component';\nimport { AvatarComponent } from '../avatar/avatar.component';\nimport { MenuComponent, MenuItem } from '../menu/menu.component';\nimport { ThemeService } from '../theme/theme.service';\n\n/**\n * AppHeaderComponent - Global application header for Life-Cockpit shell\n *\n * Features:\n * - Clickable logo for home navigation\n * - Optional title and subtitle display\n * - User profile dropdown with avatar, name, email, optional Profile link, and Logout\n * - Optional theme toggle button in header\n * - Hamburger menu toggle for mobile sidebar\n * - OnPush change detection for performance\n *\n * @example\n * ```html\n * <lc-header\n * [logo]=\"'/assets/logo.svg'\"\n * [title]=\"'Life-Cockpit'\"\n * [subtitle]=\"'User Profile'\"\n * [userName]=\"'John Doe'\"\n * [userEmail]=\"'user@example.com'\"\n * [showHamburger]=\"true\"\n * [showThemeButton]=\"true\"\n * [showProfileMenuItem]=\"true\"\n * (hamburgerClick)=\"toggleSidebar()\"\n * (themeToggleClick)=\"toggleTheme()\"\n * (profileClick)=\"navigateToProfile()\"\n * (logoutClick)=\"handleLogout()\"\n * />\n * ```\n */\n@Component({\n selector: 'lc-header',\n standalone: true,\n imports: [\n CommonModule,\n RouterModule,\n ButtonComponent,\n LogoComponent,\n IconComponent,\n AvatarComponent,\n MenuComponent,\n ],\n templateUrl: './header.component.html',\n styleUrl: './header.component.scss',\n // eslint-disable-next-line @angular-eslint/use-component-view-encapsulation\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'lc-header-host',\n },\n})\nexport class HeaderComponent {\n /**\n * Logo image source URL\n */\n @Input() logo: string = '';\n\n /**\n * Optional title to display next to logo\n */\n @Input() title: string = '';\n\n /**\n * Optional subtitle to display under title\n */\n @Input() subtitle: string = '';\n\n /**\n * User email to display in profile dropdown\n */\n @Input() userEmail: string = '';\n\n /**\n * User full name for avatar initials\n * @example 'John Doe'\n */\n @Input() userName: string = '';\n\n /**\n * Whether to show hamburger menu icon (for mobile sidebar toggle)\n */\n @Input() showHamburger: boolean = false;\n\n /**\n * Whether to show theme toggle button in header\n */\n @Input() showThemeButton: boolean = false;\n\n /**\n * Whether to show the Profile menu item in the user dropdown\n * @default true\n */\n @Input() showProfileMenuItem: boolean = true;\n\n /**\n * Emitted when hamburger menu icon is clicked\n */\n @Output() readonly hamburgerClick = new EventEmitter<void>();\n\n /**\n * Emitted when theme toggle is clicked\n */\n @Output() readonly themeToggleClick = new EventEmitter<void>();\n\n /**\n * Emitted when Logout is clicked in profile dropdown\n */\n @Output() readonly logoutClick = new EventEmitter<void>();\n\n /**\n * Emitted when Profile menu item is clicked\n */\n @Output() readonly profileClick = new EventEmitter<void>();\n\n protected readonly themeService = inject(ThemeService);\n\n /**\n * Get menu items for profile dropdown\n */\n protected readonly menuItems = computed<MenuItem[]>(() => {\n const items: MenuItem[] = [];\n\n // Add profile link if enabled\n if (this.showProfileMenuItem) {\n items.push({\n id: 'profile',\n label: 'Profile',\n icon: 'user',\n dividerAfter: true,\n });\n }\n\n // Add logout\n items.push({\n id: 'logout',\n label: 'Logout',\n icon: 'arrow-right-start-on-rectangle',\n variant: 'danger',\n });\n\n return items;\n });\n\n /**\n * Dropdown open state (using Angular signals)\n */\n private readonly dropdownOpen = signal<boolean>(false);\n\n /**\n * Get dropdown open state\n */\n isDropdownOpen(): boolean {\n return this.dropdownOpen();\n }\n\n /**\n * Toggle profile dropdown visibility\n */\n toggleDropdown(): void {\n this.dropdownOpen.set(!this.dropdownOpen());\n }\n\n /**\n * Close profile dropdown\n */\n closeDropdown(): void {\n this.dropdownOpen.set(false);\n }\n\n /**\n * Handle hamburger click\n */\n onHamburgerClick(): void {\n this.hamburgerClick.emit();\n }\n\n /**\n * Handle theme button click (separate button, not in menu)\n */\n onThemeButtonClick(): void {\n this.themeService.toggleTheme();\n this.themeToggleClick.emit();\n }\n\n /**\n * Handle logout click\n */\n onLogoutClick(): void {\n this.logoutClick.emit();\n this.closeDropdown();\n }\n\n /**\n * Handle profile click\n */\n onProfileClick(): void {\n this.profileClick.emit();\n this.closeDropdown();\n }\n\n /**\n * Handle menu item click\n */\n onMenuItemClick(item: MenuItem): void {\n if (item.id === 'logout') {\n this.onLogoutClick();\n } else if (item.id === 'profile') {\n this.onProfileClick();\n }\n }\n}\n","<header class=\"lc-header\">\n <!-- Hamburger menu icon (mobile only) -->\n @if (showHamburger) {\n <lc-button\n variant=\"ghost\"\n size=\"sm\"\n [iconOnly]=\"true\"\n [ariaLabel]=\"'Toggle sidebar menu'\"\n (clicked)=\"onHamburgerClick()\"\n class=\"lc-header__hamburger\"\n >\n <lc-icon name=\"bars-3\" size=\"sm\" />\n </lc-button>\n }\n\n <!-- Logo (clickable, navigates to home) -->\n <div class=\"lc-header__brand\">\n @if (logo || title) {\n <a routerLink=\"/\" class=\"lc-header__logo\" aria-label=\"Go to home\">\n <lc-logo [variant]=\"logo ? 'full' : 'emblem'\" size=\"md\" [clickable]=\"false\" />\n </a>\n }\n \n @if (title) {\n <div class=\"lc-header__title-group\">\n <h1 class=\"lc-header__title\">{{ title }}</h1>\n @if (subtitle) {\n <span class=\"lc-header__subtitle\">{{ subtitle }}</span>\n }\n </div>\n }\n </div>\n\n <div class=\"lc-header__spacer\"></div>\n\n <!-- Theme toggle button -->\n @if (showThemeButton) {\n <lc-button\n variant=\"ghost\"\n size=\"sm\"\n [iconOnly]=\"true\"\n [ariaLabel]=\"themeService.isDark() ? 'Switch to light mode' : 'Switch to dark mode'\"\n (clicked)=\"onThemeButtonClick()\"\n class=\"lc-header__theme-toggle\"\n >\n <lc-icon [name]=\"themeService.isDark() ? 'sun' : 'moon'\" size=\"sm\" />\n </lc-button>\n }\n\n <!-- User profile menu -->\n <lc-menu\n [items]=\"menuItems()\"\n [isOpen]=\"isDropdownOpen()\"\n position=\"bottom-right\"\n minWidth=\"220px\"\n (itemClick)=\"onMenuItemClick($event)\"\n (closed)=\"closeDropdown()\"\n >\n <!-- Menu header with avatar, name and email -->\n @if (userName || userEmail) {\n <div header class=\"lc-header__menu-header\">\n <lc-avatar [name]=\"userName\" size=\"md\" />\n <div class=\"lc-header__menu-user-info\">\n @if (userName) {\n <div class=\"lc-header__menu-user-name\">{{ userName }}</div>\n }\n @if (userEmail) {\n <div class=\"lc-header__menu-user-email\">{{ userEmail }}</div>\n }\n </div>\n </div>\n }\n\n <button\n trigger\n class=\"lc-header__profile-trigger\"\n type=\"button\"\n aria-label=\"Open user menu\"\n [attr.aria-expanded]=\"isDropdownOpen()\"\n (click)=\"toggleDropdown()\"\n >\n <lc-icon name=\"user\" size=\"sm\" />\n <lc-icon name=\"chevron-down\" size=\"xs\" />\n </button>\n </lc-menu>\n</header>\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n signal,\n computed,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport type PaginationSize = 'sm' | 'md' | 'lg';\n\n/**\n * Pagination component for navigating through pages of content.\n *\n * Features:\n * - Configurable page size\n * - Previous/Next navigation\n * - Direct page number access\n * - Ellipsis for large page ranges\n * - Size variants (sm, md, lg)\n * - Accessible with ARIA attributes\n * - Optional item count display\n *\n * @example\n * ```html\n * <lc-pagination\n * [currentPageInput]=\"currentPage\"\n * [totalItemsInput]=\"totalItems\"\n * [pageSizeInput]=\"10\"\n * (pageChange)=\"onPageChange($event)\"\n * ></lc-pagination>\n * ```\n */\n@Component({\n selector: 'lc-pagination',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './pagination.component.html',\n styleUrls: ['./pagination.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PaginationComponent {\n // Signals for reactive state\n currentPage = signal<number>(1);\n totalItems = signal<number>(0);\n pageSize = signal<number>(10);\n size = signal<PaginationSize>('md');\n maxVisiblePages = signal<number>(7);\n ariaLabel = signal<string>('Pagination');\n showInfo = signal<boolean>(false);\n\n // Event emitters\n @Output() readonly pageChange = new EventEmitter<number>();\n\n // Computed properties\n totalPages = computed(() => {\n const total = this.totalItems();\n const size = this.pageSize();\n return total > 0 ? Math.ceil(total / size) : 0;\n });\n\n firstItemIndex = computed(() => {\n const page = this.currentPage();\n const size = this.pageSize();\n return (page - 1) * size + 1;\n });\n\n lastItemIndex = computed(() => {\n const page = this.currentPage();\n const size = this.pageSize();\n const total = this.totalItems();\n const lastIndex = page * size;\n return Math.min(lastIndex, total);\n });\n\n isFirstPage = computed(() => this.currentPage() === 1);\n\n isLastPage = computed(() => this.currentPage() === this.totalPages());\n\n paginationClasses = computed(() => {\n const classes = ['lc-pagination'];\n classes.push(`lc-pagination--${this.size()}`);\n return classes.join(' ');\n });\n\n /**\n * Calculate visible page numbers with ellipsis support\n * Returns an array where -1 represents an ellipsis\n */\n visiblePages = computed(() => {\n const current = this.currentPage();\n const total = this.totalPages();\n const maxVisible = this.maxVisiblePages();\n\n if (total <= maxVisible) {\n // Show all pages if total is less than max visible\n return Array.from({ length: total }, (_, i) => i + 1);\n }\n\n const pages: number[] = [];\n const sidePages = Math.floor((maxVisible - 3) / 2); // Reserve spots for first, last, and ellipsis\n\n // Always show first page\n pages.push(1);\n\n if (current <= sidePages + 2) {\n // Near the start: show 1, 2, 3, 4, 5, ..., last\n for (let i = 2; i <= maxVisible - 2; i++) {\n pages.push(i);\n }\n pages.push(-1); // Ellipsis\n pages.push(total);\n } else if (current >= total - sidePages - 1) {\n // Near the end: show 1, ..., n-4, n-3, n-2, n-1, n\n pages.push(-1); // Ellipsis\n for (let i = total - (maxVisible - 3); i <= total; i++) {\n pages.push(i);\n }\n } else {\n // In the middle: show 1, ..., current-1, current, current+1, ..., last\n pages.push(-1); // Left ellipsis\n for (let i = current - sidePages; i <= current + sidePages; i++) {\n if (i > 1 && i < total) {\n pages.push(i);\n }\n }\n pages.push(-1); // Right ellipsis\n pages.push(total);\n }\n\n return pages;\n });\n\n // Input setters for @Input binding\n @Input()\n set currentPageInput(value: number) {\n this.currentPage.set(value);\n }\n\n @Input()\n set totalItemsInput(value: number) {\n this.totalItems.set(value);\n }\n\n @Input()\n set pageSizeInput(value: number) {\n this.pageSize.set(value);\n }\n\n @Input()\n set sizeInput(value: PaginationSize) {\n this.size.set(value);\n }\n\n @Input()\n set maxVisiblePagesInput(value: number) {\n this.maxVisiblePages.set(value);\n }\n\n @Input()\n set ariaLabelInput(value: string) {\n this.ariaLabel.set(value);\n }\n\n @Input()\n set showInfoInput(value: boolean) {\n this.showInfo.set(value);\n }\n\n // Navigation methods\n goToPreviousPage(): void {\n if (!this.isFirstPage()) {\n const newPage = this.currentPage() - 1;\n this.pageChange.emit(newPage);\n }\n }\n\n goToNextPage(): void {\n if (!this.isLastPage()) {\n const newPage = this.currentPage() + 1;\n this.pageChange.emit(newPage);\n }\n }\n\n goToPage(page: number): void {\n if (page >= 1 && page <= this.totalPages() && page !== this.currentPage()) {\n this.pageChange.emit(page);\n }\n }\n\n // Helper methods\n isCurrentPage(page: number): boolean {\n return page === this.currentPage();\n }\n\n isEllipsis(page: number): boolean {\n return page === -1;\n }\n\n shouldRender(): boolean {\n const total = this.totalPages();\n return total > 1;\n }\n}\n","@if (shouldRender()) {\n <nav [attr.aria-label]=\"ariaLabel()\">\n <div [ngClass]=\"paginationClasses()\">\n <!-- Previous Button -->\n <button\n type=\"button\"\n class=\"lc-pagination__button lc-pagination__button--prev\"\n [disabled]=\"isFirstPage()\"\n [attr.aria-label]=\"'Previous page'\"\n (click)=\"goToPreviousPage()\"\n >\n <svg class=\"lc-pagination__icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15.75 19.5L8.25 12l7.5-7.5\" />\n </svg>\n <span class=\"lc-pagination__button-text\">Previous</span>\n </button>\n\n <!-- Page Numbers -->\n <div class=\"lc-pagination__pages\">\n @for (page of visiblePages(); track $index) {\n @if (isEllipsis(page)) {\n <span class=\"lc-pagination__ellipsis\" aria-hidden=\"true\">\n &hellip;\n </span>\n } @else {\n <button\n type=\"button\"\n class=\"lc-pagination__button lc-pagination__button--page\"\n [class.lc-pagination__button--active]=\"isCurrentPage(page)\"\n [attr.aria-label]=\"'Page ' + page\"\n [attr.aria-current]=\"isCurrentPage(page) ? 'page' : null\"\n (click)=\"goToPage(page)\"\n >\n {{ page }}\n </button>\n }\n }\n </div>\n\n <!-- Next Button -->\n <button\n type=\"button\"\n class=\"lc-pagination__button lc-pagination__button--next\"\n [disabled]=\"isLastPage()\"\n [attr.aria-label]=\"'Next page'\"\n (click)=\"goToNextPage()\"\n >\n <span class=\"lc-pagination__button-text\">Next</span>\n <svg class=\"lc-pagination__icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M8.25 4.5l7.5 7.5-7.5 7.5\" />\n </svg>\n </button>\n </div>\n\n <!-- Optional Info Text -->\n @if (showInfo()) {\n <div class=\"lc-pagination__info\">\n Showing {{ firstItemIndex() }} to {{ lastItemIndex() }} of {{ totalItems() }} items\n </div>\n }\n </nav>\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n signal,\n computed,\n Input,\n Output,\n EventEmitter,\n HostListener,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { NavigationItem } from '../models/navigation-item.interface';\nimport { IconComponent } from '../icon/icon.component';\n\nexport type SidenavPosition = 'left' | 'right';\nexport type SidenavMode = 'drawer' | 'docked';\n\n/**\n * Sidenav Component\n *\n * A navigation component that can work as either a drawer (overlay) or\n * a docked (persistent) sidebar. Supports section headlines, collapsible\n * groups, keyboard navigation, and accessibility features.\n *\n * @example Drawer mode (default — overlay that slides in)\n * ```html\n * <lc-sidenav\n * [isOpen]=\"isOpen\"\n * mode=\"drawer\"\n * (closed)=\"handleClose()\">\n * </lc-sidenav>\n * ```\n *\n * @example Docked mode (persistent sidebar that stays open)\n * ```html\n * <lc-sidenav\n * [isOpen]=\"sidebarOpen\"\n * mode=\"docked\"\n * [items]=\"navItems\"\n * (closed)=\"sidebarOpen = false\">\n * </lc-sidenav>\n * ```\n */\n@Component({\n selector: 'lc-sidenav',\n standalone: true,\n imports: [CommonModule, RouterModule, IconComponent],\n templateUrl: './sidenav.component.html',\n styleUrl: './sidenav.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.lc-sidenav-container]': 'true',\n '[class.lc-sidenav-container--docked]': \"mode() === 'docked'\",\n '[class.lc-sidenav-container--open]': 'isOpen()',\n },\n})\nexport class SidenavComponent {\n /** Whether the sidenav is open */\n isOpen = signal<boolean>(false);\n\n /** Display mode: 'drawer' (overlay) or 'docked' (persistent sidebar) */\n mode = signal<SidenavMode>('drawer');\n\n /** Position of the sidenav (left or right) */\n position = signal<SidenavPosition>('left');\n\n /** Width of the sidenav drawer */\n width = signal<string>('320px');\n\n /** ARIA label for the sidenav */\n ariaLabel = signal<string>('Side navigation');\n\n /** Whether to show the overlay backdrop */\n hasOverlay = signal<boolean>(true);\n\n /** Navigation items to display */\n items = signal<NavigationItem[]>([]);\n\n /** Current active route for highlighting */\n activeRoute = signal<string>('');\n\n /** Track which parent items are expanded */\n expandedItems = signal<Set<string>>(new Set());\n\n /**\n * Computed sorted navigation items by displayOrder\n */\n sortedItems = computed(() => {\n return [...this.items()].sort((a, b) => a.displayOrder - b.displayOrder);\n });\n\n /**\n * Input setter for isOpen\n */\n @Input()\n set isOpenInput(value: boolean) {\n this.isOpen.set(value);\n }\n\n /**\n * Input setter for mode\n */\n @Input()\n set modeInput(value: SidenavMode) {\n this.mode.set(value);\n }\n\n /**\n * Input setter for position\n */\n @Input()\n set positionInput(value: SidenavPosition) {\n this.position.set(value);\n }\n\n /**\n * Input setter for width\n */\n @Input()\n set widthInput(value: string) {\n this.width.set(value);\n }\n\n /**\n * Input setter for ariaLabel\n */\n @Input()\n set ariaLabelInput(value: string) {\n this.ariaLabel.set(value);\n }\n\n /**\n * Input setter for hasOverlay\n */\n @Input()\n set hasOverlayInput(value: boolean) {\n this.hasOverlay.set(value);\n }\n\n /**\n * Input setter for navigation items\n */\n @Input()\n set itemsInput(value: NavigationItem[]) {\n this.items.set(value);\n }\n\n /**\n * Input setter for active route\n */\n @Input()\n set activeRouteInput(value: string) {\n this.activeRoute.set(value);\n }\n\n /**\n * Event emitted when the sidenav should close\n */\n @Output() readonly closed = new EventEmitter<void>();\n\n /**\n * Event emitted when a navigation item is clicked\n */\n @Output() readonly itemClicked = new EventEmitter<NavigationItem>();\n\n /**\n * Computed CSS classes for the sidenav\n */\n sidenavClasses = computed(() => {\n const classes = ['lc-sidenav'];\n classes.push(`lc-sidenav--${this.position()}`);\n classes.push(`lc-sidenav--${this.mode()}`);\n if (this.isOpen()) {\n classes.push('lc-sidenav--open');\n }\n return classes.join(' ');\n });\n\n /**\n * Computed inline styles for the sidenav\n */\n sidenavStyles = computed(() => ({\n width: this.width(),\n }));\n\n /**\n * Handle close action\n */\n handleClose(): void {\n this.closed.emit();\n }\n\n /**\n * Handle navigation item click\n */\n handleItemClick(item: NavigationItem): void {\n this.itemClicked.emit(item);\n }\n\n /**\n * Check if an item is active\n */\n isItemActive(item: NavigationItem): boolean {\n return this.activeRoute() === item.route;\n }\n\n /**\n * Check if a parent item has an active child\n */\n hasActiveChild(item: NavigationItem): boolean {\n if (!item.children?.length) return false;\n return item.children.some((child) => this.isItemActive(child));\n }\n\n /**\n * Toggle expansion of a parent item\n */\n toggleExpanded(item: NavigationItem): void {\n const expanded = new Set(this.expandedItems());\n if (expanded.has(item.id)) {\n expanded.delete(item.id);\n } else {\n expanded.add(item.id);\n }\n this.expandedItems.set(expanded);\n }\n\n /**\n * Check if an item is expanded\n */\n isExpanded(item: NavigationItem): boolean {\n return this.expandedItems().has(item.id) || this.hasActiveChild(item);\n }\n\n /**\n * Handle keyboard navigation\n */\n @HostListener('document:keydown', ['$event'])\n handleKeydown(event: KeyboardEvent): void {\n if (event.key === 'Escape' && this.isOpen() && this.mode() === 'drawer') {\n this.handleClose();\n }\n }\n}\n","<!-- Drawer mode: render with overlay and conditional visibility -->\n@if (mode() === 'drawer') {\n @if (isOpen()) {\n <!-- Overlay backdrop -->\n @if (hasOverlay()) {\n <div\n class=\"lc-sidenav__overlay\"\n (click)=\"handleClose()\"\n aria-hidden=\"true\">\n </div>\n }\n\n <ng-container *ngTemplateOutlet=\"sidenavPanel\" />\n }\n}\n\n<!-- Docked mode: always render, visibility controlled by CSS -->\n@if (mode() === 'docked') {\n <ng-container *ngTemplateOutlet=\"sidenavPanel\" />\n}\n\n<!-- Shared sidenav panel template -->\n<ng-template #sidenavPanel>\n <aside\n [class]=\"sidenavClasses()\"\n [ngStyle]=\"sidenavStyles()\"\n role=\"navigation\"\n [attr.aria-label]=\"ariaLabel()\">\n\n <!-- Close button (drawer mode only) -->\n @if (mode() === 'drawer') {\n <button\n type=\"button\"\n class=\"lc-sidenav__close\"\n (click)=\"handleClose()\"\n aria-label=\"Close navigation\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\n </svg>\n </button>\n }\n\n <!-- Navigation items (if provided) -->\n @if (items().length > 0) {\n <nav class=\"lc-sidenav__nav\" [class.lc-sidenav__nav--docked]=\"mode() === 'docked'\">\n @for (item of sortedItems(); track item.id) {\n <!-- Section headline -->\n @if (item.isSection) {\n <div class=\"lc-sidenav__section\">\n <h2 class=\"lc-sidenav__section-title\">{{ item.label }}</h2>\n @if (item.children?.length) {\n <ul class=\"lc-sidenav__section-items\">\n @for (child of item.children; track child.id) {\n <li>\n <a\n [routerLink]=\"child.route\"\n routerLinkActive=\"lc-sidenav__nav-item--active\"\n [routerLinkActiveOptions]=\"{ exact: child.route === '/' }\"\n class=\"lc-sidenav__nav-item lc-sidenav__nav-item--child\"\n (click)=\"handleItemClick(child)\"\n [attr.aria-current]=\"isItemActive(child) ? 'page' : null\">\n @if (child.icon) {\n <lc-icon [name]=\"child.icon\" size=\"sm\" [decorative]=\"true\" class=\"lc-sidenav__nav-icon\" />\n }\n <span class=\"lc-sidenav__nav-label\">{{ child.label }}</span>\n </a>\n </li>\n }\n </ul>\n }\n </div>\n } @else if (item.children?.length) {\n <!-- Parent item with children (collapsible group) -->\n <button\n type=\"button\"\n class=\"lc-sidenav__nav-item lc-sidenav__nav-item--parent\"\n [class.lc-sidenav__nav-item--expanded]=\"isExpanded(item)\"\n [class.lc-sidenav__nav-item--active]=\"hasActiveChild(item)\"\n (click)=\"toggleExpanded(item)\"\n [attr.aria-expanded]=\"isExpanded(item)\">\n <lc-icon [name]=\"item.icon\" size=\"sm\" [decorative]=\"true\" class=\"lc-sidenav__nav-icon\" />\n <span class=\"lc-sidenav__nav-label\">{{ item.label }}</span>\n <lc-icon name=\"chevron-down\" size=\"xs\" [decorative]=\"true\" class=\"lc-sidenav__nav-chevron\" />\n </button>\n @if (isExpanded(item)) {\n <div class=\"lc-sidenav__nav-children\">\n @for (child of item.children; track child.id) {\n <a\n [routerLink]=\"child.route\"\n routerLinkActive=\"lc-sidenav__nav-item--active\"\n class=\"lc-sidenav__nav-item lc-sidenav__nav-item--child\"\n (click)=\"handleItemClick(child)\"\n [attr.aria-current]=\"isItemActive(child) ? 'page' : null\">\n <lc-icon [name]=\"child.icon\" size=\"sm\" [decorative]=\"true\" class=\"lc-sidenav__nav-icon\" />\n <span class=\"lc-sidenav__nav-label\">{{ child.label }}</span>\n </a>\n }\n </div>\n }\n } @else {\n <!-- Simple item without children -->\n <a\n [routerLink]=\"item.route\"\n routerLinkActive=\"lc-sidenav__nav-item--active\"\n [routerLinkActiveOptions]=\"{ exact: item.route === '/' }\"\n class=\"lc-sidenav__nav-item\"\n (click)=\"handleItemClick(item)\"\n [attr.aria-current]=\"isItemActive(item) ? 'page' : null\">\n <lc-icon [name]=\"item.icon\" size=\"sm\" [decorative]=\"true\" class=\"lc-sidenav__nav-icon\" />\n <span class=\"lc-sidenav__nav-label\">{{ item.label }}</span>\n </a>\n }\n }\n </nav>\n }\n\n <!-- Content projection (for custom content) -->\n <div class=\"lc-sidenav__content\" [class.lc-sidenav__content--docked]=\"mode() === 'docked'\">\n <ng-content></ng-content>\n </div>\n </aside>\n</ng-template>\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ContentChildren,\n QueryList,\n AfterContentInit,\n signal,\n computed,\n effect,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n ViewChild,\n TemplateRef,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nlet nextUniqueId = 0;\n\nexport type TabOrientation = 'horizontal' | 'vertical';\n\n/**\n * Individual tab component\n */\n@Component({\n selector: 'lc-tab',\n standalone: true,\n imports: [CommonModule],\n template: `\n <ng-template>\n <ng-content></ng-content>\n </ng-template>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TabComponent {\n /**\n * Tab label displayed in tab button\n */\n @Input() label = '';\n\n /**\n * Whether the tab is disabled\n * @default false\n */\n @Input() disabled = false;\n\n /**\n * Optional icon name (Heroicons)\n */\n @Input() icon?: string;\n\n /**\n * Unique ID for accessibility\n */\n readonly id = `lc-tab-${nextUniqueId++}`;\n\n /**\n * Unique ID for the panel\n */\n readonly panelId = `lc-tabpanel-${this.id}`;\n\n /**\n * Template reference for tab content\n */\n @ViewChild(TemplateRef, { static: true }) template!: TemplateRef<unknown>;\n}\n\n/**\n * Tabs component for organizing content into switchable views.\n *\n * @example\n * ```html\n * <lc-tabs>\n * <lc-tab label=\"Account\">Account settings</lc-tab>\n * <lc-tab label=\"Privacy\">Privacy settings</lc-tab>\n * <lc-tab label=\"Security\">Security settings</lc-tab>\n * </lc-tabs>\n * ```\n */\n@Component({\n selector: 'lc-tabs',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './tabs.component.html',\n styleUrl: './tabs.component.scss',\n // eslint-disable-next-line @angular-eslint/use-component-view-encapsulation\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'lc-tabs',\n },\n})\nexport class TabsComponent implements AfterContentInit {\n /**\n * Orientation input property\n * @default 'horizontal'\n */\n @Input()\n set orientation(value: TabOrientation) {\n this._orientation.set(value);\n }\n get orientation(): TabOrientation {\n return this._orientation();\n }\n\n /**\n * Currently selected tab index\n * @default 0\n */\n readonly selectedIndex = signal(0);\n\n /**\n * Emitted when selected tab changes\n */\n @Output() readonly selectedIndexChange = new EventEmitter<number>();\n\n /**\n * Tab components\n */\n @ContentChildren(TabComponent) tabs!: QueryList<TabComponent>;\n\n /**\n * Tab list for template access\n */\n readonly tabList = computed(() => this.tabs?.toArray() || []);\n\n /**\n * CSS classes for tab list\n */\n readonly tabListClasses = computed(() => ({\n 'lc-tabs__list': true,\n 'lc-tabs--horizontal': this._orientation() === 'horizontal',\n 'lc-tabs--vertical': this._orientation() === 'vertical',\n }));\n\n /**\n * Orientation of tabs (internal signal)\n * @default 'horizontal'\n */\n private readonly _orientation = signal<TabOrientation>('horizontal');\n\n /**\n * Track tab registration\n */\n private registeredTabs: Array<{ label: string; disabled: boolean }> = [];\n\n /**\n * Set selected index input\n */\n @Input()\n set selectedIndexInput(value: number) {\n this.selectedIndex.set(value);\n }\n\n constructor() {\n // Emit when selection changes\n effect(() => {\n const index = this.selectedIndex();\n this.selectedIndexChange.emit(index);\n });\n }\n\n ngAfterContentInit(): void {\n // Register all tabs\n this.tabs.forEach((tab) => {\n this.registerTab({ label: tab.label, disabled: tab.disabled });\n });\n\n // Listen for tab changes\n this.tabs.changes.subscribe(() => {\n this.registeredTabs = [];\n this.tabs.forEach((tab) => {\n this.registerTab({ label: tab.label, disabled: tab.disabled });\n });\n });\n }\n\n /**\n * Register a tab\n */\n registerTab(tab: { label: string; disabled: boolean }): void {\n this.registeredTabs.push(tab);\n }\n\n /**\n * Select a tab by index\n */\n selectTab(index: number): void {\n const tabs = this.tabList();\n const tab = tabs[index];\n if (index >= 0 && index < tabs.length && tab && !tab.disabled) {\n this.selectedIndex.set(index);\n }\n }\n\n /**\n * Check if tab is selected\n */\n isSelected(index: number): boolean {\n return this.selectedIndex() === index;\n }\n\n /**\n * Handle keyboard navigation\n */\n handleKeyDown(event: KeyboardEvent): void {\n const currentIndex = this.selectedIndex();\n let nextIndex = currentIndex;\n\n const isHorizontal = this._orientation() === 'horizontal';\n const nextKey = isHorizontal ? 'ArrowRight' : 'ArrowDown';\n const prevKey = isHorizontal ? 'ArrowLeft' : 'ArrowUp';\n\n switch (event.key) {\n case nextKey:\n event.preventDefault();\n nextIndex = this.getNextEnabledTab(currentIndex);\n break;\n\n case prevKey:\n event.preventDefault();\n nextIndex = this.getPreviousEnabledTab(currentIndex);\n break;\n\n case 'Home':\n event.preventDefault();\n nextIndex = this.getFirstEnabledTab();\n break;\n\n case 'End':\n event.preventDefault();\n nextIndex = this.getLastEnabledTab();\n break;\n\n default:\n return;\n }\n\n if (nextIndex !== currentIndex) {\n this.selectTab(nextIndex);\n }\n }\n\n /**\n * Get tabindex for tab button\n */\n getTabIndex(index: number): number {\n return this.isSelected(index) ? 0 : -1;\n }\n\n /**\n * Get next enabled tab index (with wrapping)\n */\n private getNextEnabledTab(currentIndex: number): number {\n const tabs = this.tabList();\n let nextIndex = (currentIndex + 1) % tabs.length;\n const startIndex = nextIndex;\n\n while (tabs[nextIndex]?.disabled) {\n nextIndex = (nextIndex + 1) % tabs.length;\n if (nextIndex === startIndex) {\n return currentIndex; // No enabled tabs found\n }\n }\n\n return nextIndex;\n }\n\n /**\n * Get previous enabled tab index (with wrapping)\n */\n private getPreviousEnabledTab(currentIndex: number): number {\n const tabs = this.tabList();\n let prevIndex = currentIndex - 1;\n if (prevIndex < 0) {\n prevIndex = tabs.length - 1;\n }\n const startIndex = prevIndex;\n\n while (tabs[prevIndex]?.disabled) {\n prevIndex = prevIndex - 1;\n if (prevIndex < 0) {\n prevIndex = tabs.length - 1;\n }\n if (prevIndex === startIndex) {\n return currentIndex; // No enabled tabs found\n }\n }\n\n return prevIndex;\n }\n\n /**\n * Get first enabled tab index\n */\n private getFirstEnabledTab(): number {\n const tabs = this.tabList();\n for (let i = 0; i < tabs.length; i++) {\n const tab = tabs[i];\n if (tab && !tab.disabled) {\n return i;\n }\n }\n return 0;\n }\n\n /**\n * Get last enabled tab index\n */\n private getLastEnabledTab(): number {\n const tabs = this.tabList();\n for (let i = tabs.length - 1; i >= 0; i--) {\n const tab = tabs[i];\n if (tab && !tab.disabled) {\n return i;\n }\n }\n return tabs.length - 1;\n }\n}\n","<div\n class=\"lc-tabs__container\"\n [class.lc-tabs__container--horizontal]=\"orientation === 'horizontal'\"\n [class.lc-tabs__container--vertical]=\"orientation === 'vertical'\"\n>\n <div\n [ngClass]=\"tabListClasses()\"\n role=\"tablist\"\n [attr.aria-orientation]=\"orientation\"\n (keydown)=\"handleKeyDown($event)\"\n >\n @for (tab of tabList(); track tab.id; let i = $index) {\n <button\n class=\"lc-tabs__tab\"\n [class.lc-tabs__tab--selected]=\"isSelected(i)\"\n [class.lc-tabs__tab--disabled]=\"tab.disabled\"\n role=\"tab\"\n [attr.id]=\"tab.id\"\n [attr.aria-selected]=\"isSelected(i)\"\n [attr.aria-controls]=\"tab.panelId\"\n [attr.aria-disabled]=\"tab.disabled || null\"\n [tabindex]=\"getTabIndex(i)\"\n [disabled]=\"tab.disabled\"\n (click)=\"selectTab(i)\"\n >\n {{ tab.label }}\n </button>\n }\n </div>\n\n <div class=\"lc-tabs__panels\">\n @for (tab of tabList(); track tab.id; let i = $index) {\n <div\n class=\"lc-tabs__panel\"\n [class.lc-tabs__panel--active]=\"isSelected(i)\"\n role=\"tabpanel\"\n [attr.id]=\"tab.panelId\"\n [attr.aria-labelledby]=\"tab.id\"\n [attr.hidden]=\"!isSelected(i) || null\"\n [tabindex]=\"0\"\n >\n <ng-container *ngTemplateOutlet=\"tab.template\"></ng-container>\n </div>\n }\n </div>\n</div>\n","import { Component, ChangeDetectionStrategy, ViewEncapsulation, input, computed } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport type BadgeVariant = 'default' | 'primary' | 'success' | 'warning' | 'error' | 'info';\nexport type BadgeSize = 'xs' | 'sm' | 'md' | 'lg';\n\n/**\n * Badge Component\n *\n * A small count and labeling component used to display status, notifications, or counts.\n *\n * @example\n * ```html\n * <lc-badge variant=\"primary\" size=\"md\">New</lc-badge>\n * <lc-badge variant=\"error\" size=\"sm\" [rounded]=\"true\">5</lc-badge>\n * ```\n */\n@Component({\n selector: 'lc-badge',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './badge.component.html',\n styleUrl: './badge.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None, // Required for dynamic variant class styling\n})\nexport class BadgeComponent {\n /** Visual variant of the badge */\n variant = input<BadgeVariant>('default');\n\n /** Size of the badge */\n size = input<BadgeSize>('md');\n\n /** Whether the badge has fully rounded corners (pill shape) */\n rounded = input<boolean>(false);\n\n /**\n * Computed CSS classes for the badge\n */\n badgeClasses = computed(() => {\n const classes = ['lc-badge'];\n\n classes.push(`lc-badge--${this.variant()}`);\n classes.push(`lc-badge--${this.size()}`);\n\n if (this.rounded()) {\n classes.push('lc-badge--rounded');\n }\n\n return classes.join(' ');\n });\n}\n","<span [class]=\"badgeClasses()\">\n <ng-content></ng-content>\n</span>\n","import { Component, ChangeDetectionStrategy, input, computed } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IconComponent } from '../icon/icon.component';\nimport { CardComponent } from '../card/card.component';\n\nexport type TrendDirection = 'up' | 'down' | 'flat';\n\n/**\n * MetricCard Component\n *\n * Displays a single KPI value with label, trend arrow, and optional icon.\n * Built on top of `lc-card` (outlined variant) for consistent card styling.\n *\n * @example\n * ```html\n * <lc-metric-card\n * label=\"Portfolio Equity\"\n * value=\"$125,430\"\n * trend=\"up\"\n * trendValue=\"+2.4%\"\n * icon=\"arrow-trending-up\"\n * ></lc-metric-card>\n * ```\n */\n@Component({\n selector: 'lc-metric-card',\n standalone: true,\n imports: [CommonModule, IconComponent, CardComponent],\n templateUrl: './metric-card.component.html',\n styleUrl: './metric-card.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MetricCardComponent {\n /** Label displayed above the value */\n label = input.required<string>();\n\n /** Formatted value to display */\n value = input.required<string>();\n\n /** Trend direction for arrow indicator */\n trend = input<TrendDirection>('flat');\n\n /** Formatted trend value (e.g., \"+2.4%\") */\n trendValue = input<string>('');\n\n /** Optional Heroicon name */\n icon = input<string>('');\n\n /** Trend arrow character */\n trendArrow = computed(() => {\n switch (this.trend()) {\n case 'up':\n return '↑';\n case 'down':\n return '↓';\n default:\n return '→';\n }\n });\n\n /** Tailwind classes for trend color */\n trendClasses = computed(() => {\n switch (this.trend()) {\n case 'up':\n return 'text-green-600 dark:text-green-400';\n case 'down':\n return 'text-red-600 dark:text-red-400';\n default:\n return 'text-gray-500 dark:text-gray-400';\n }\n });\n}\n","<lc-card variant=\"outlined\" padding=\"md\" borderRadius=\"md\">\n <div class=\"lc-metric-card__header\">\n <span class=\"lc-metric-card__label\">{{ label() }}</span>\n @if (icon()) {\n <lc-icon [name]=\"icon()\" size=\"sm\" class=\"lc-metric-card__icon\" />\n }\n </div>\n <div class=\"lc-metric-card__value\">{{ value() }}</div>\n @if (trendValue()) {\n <div class=\"lc-metric-card__trend\" [ngClass]=\"trendClasses()\">\n <span class=\"lc-metric-card__arrow\">{{ trendArrow() }}</span>\n <span class=\"lc-metric-card__trend-value\">{{ trendValue() }}</span>\n </div>\n }\n</lc-card>\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n model,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport interface ToggleOption {\n readonly value: string;\n readonly label: string;\n readonly disabled?: boolean;\n}\n\n/**\n * ToggleGroup Component\n *\n * Binary or multi-option toggle with active state styling.\n * Uses Tailwind classes with dark mode support.\n *\n * @example\n * ```html\n * <lc-toggle-group\n * [options]=\"[{value:'1D',label:'1D'},{value:'1h',label:'1H'}]\"\n * [(selected)]=\"interval\"\n * ></lc-toggle-group>\n * ```\n */\n@Component({\n selector: 'lc-toggle-group',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './toggle-group.component.html',\n styleUrl: './toggle-group.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ToggleGroupComponent {\n /** Available toggle options */\n options = input.required<readonly ToggleOption[]>();\n\n /** Currently selected value (two-way binding) */\n selected = model<string>('');\n\n /** Size variant */\n size = input<'sm' | 'md' | 'lg'>('md');\n\n /** Emitted when selection changes */\n selectionChange = output<string>();\n\n /** Computed size class */\n sizeClass = computed(() => `lc-toggle-group--${this.size()}`);\n\n /** Select an option */\n select(option: ToggleOption): void {\n if (option.disabled) return;\n this.selected.set(option.value);\n this.selectionChange.emit(option.value);\n }\n\n /** Check if an option is active */\n isActive(option: ToggleOption): boolean {\n return this.selected() === option.value;\n }\n\n /** Get button classes */\n getButtonClasses(option: ToggleOption): string {\n const classes = ['lc-toggle-group__btn'];\n\n if (this.isActive(option)) {\n classes.push('lc-toggle-group__btn--active');\n }\n if (option.disabled) {\n classes.push('lc-toggle-group__btn--disabled');\n }\n\n return classes.join(' ');\n }\n}\n","<div class=\"lc-toggle-group\" [ngClass]=\"sizeClass()\">\n @for (option of options(); track option.value) {\n <button\n type=\"button\"\n [class]=\"getButtonClasses(option)\"\n [disabled]=\"option.disabled ?? false\"\n [attr.aria-pressed]=\"isActive(option)\"\n (click)=\"select(option)\"\n >\n {{ option.label }}\n </button>\n }\n</div>\n","import { Directive, TemplateRef, inject } from '@angular/core';\nimport { ListItem } from './list.component';\n\n/**\n * Directive for providing a custom template to render each list item.\n *\n * @example\n * ```html\n * <lc-list [items]=\"runs()\" (itemClick)=\"onRunClick($event)\">\n * <ng-template lcListItem let-item>\n * <lc-badge [variant]=\"getStatusVariant(item.status)\">{{ item.status }}</lc-badge>\n * <span>{{ item.symbol }}</span>\n * <span class=\"text-sm text-neutral-500\">{{ item.date }}</span>\n * </ng-template>\n * </lc-list>\n * ```\n */\n@Directive({\n selector: '[lcListItem]',\n standalone: true,\n})\nexport class ListItemTemplateDirective {\n public readonly template = inject(TemplateRef<{ $implicit: ListItem }>);\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n computed,\n output,\n ContentChild,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IconComponent } from '../icon/icon.component';\nimport { ButtonComponent } from '../button/button.component';\nimport { ListItemTemplateDirective } from './list-item-template.directive';\n\n/**\n * List orientation type\n */\nexport type ListOrientation = 'vertical' | 'horizontal';\n\n/**\n * List visual variant\n * - default: flat rows (original)\n * - card: each item rendered as a mini-card with border, radius and shadow on hover\n */\nexport type ListVariant = 'default' | 'card';\n\n/**\n * List item interface\n */\nexport interface ListItem {\n /** Item label text */\n label: string;\n /** Optional icon identifier */\n icon?: string;\n /** Optional action label */\n action?: string;\n /** Item identifier */\n id?: string;\n /** Whether the item is disabled */\n disabled?: boolean;\n /** Any additional data */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n}\n\n/**\n * List Component\n *\n * A flexible list component that supports vertical/horizontal layouts,\n * icons, actions, and dividers.\n *\n * @example\n * ```html\n * <lc-list\n * [items]=\"listItems\"\n * orientation=\"vertical\"\n * [showDividers]=\"true\"\n * (itemClick)=\"handleItemClick($event)\"\n * (actionClick)=\"handleActionClick($event)\"\n * />\n * ```\n */\n@Component({\n selector: 'lc-list',\n standalone: true,\n imports: [CommonModule, IconComponent, ButtonComponent],\n templateUrl: './list.component.html',\n styleUrl: './list.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ListComponent {\n /** Custom item template provided via lcListItem directive */\n @ContentChild(ListItemTemplateDirective) itemTemplate?: ListItemTemplateDirective;\n\n /** Array of list items to display */\n items = input<ListItem[]>([]);\n\n /** Orientation of the list */\n orientation = input<ListOrientation>('vertical');\n\n /** Visual variant */\n variant = input<ListVariant>('default');\n\n /** Whether to show dividers between items */\n showDividers = input<boolean>(false);\n\n /** Event emitted when an item is clicked */\n readonly itemClick = output<ListItem>();\n\n /** Event emitted when an action button is clicked */\n readonly actionClick = output<ListItem>();\n\n /**\n * Computed CSS classes for the list\n */\n listClasses = computed(() => {\n const classes = ['lc-list'];\n\n classes.push(`lc-list--${this.orientation()}`);\n classes.push(`lc-list--${this.variant()}`);\n\n if (this.showDividers()) {\n classes.push('lc-list--with-dividers');\n }\n\n return classes.join(' ');\n });\n\n /**\n * Get CSS classes for a list item\n */\n getItemClasses(item: ListItem): string {\n const classes = ['lc-list__item'];\n\n if (item.disabled) {\n classes.push('lc-list__item--disabled');\n }\n\n return classes.join(' ');\n }\n\n /**\n * Handle item click\n */\n onItemClick(item: ListItem): void {\n if (!item.disabled) {\n this.itemClick.emit(item);\n }\n }\n\n /**\n * Handle action button click\n */\n onActionClick(item: ListItem): void {\n this.actionClick.emit(item);\n }\n}\n","<div [class]=\"listClasses()\" role=\"list\">\n @for (item of items(); track item.id || $index) {\n <div\n [class]=\"getItemClasses(item)\"\n role=\"listitem\"\n [attr.aria-disabled]=\"item.disabled ? 'true' : null\"\n (click)=\"onItemClick(item)\"\n >\n @if (itemTemplate) {\n <ng-container *ngTemplateOutlet=\"itemTemplate.template; context: { $implicit: item }\"></ng-container>\n } @else {\n @if (item.icon) {\n <lc-icon [name]=\"item.icon\" class=\"lc-list__icon\" size=\"sm\" />\n }\n <span class=\"lc-list__label\">{{ item.label }}</span>\n @if (item.action) {\n <lc-button\n variant=\"ghost\"\n size=\"xs\"\n class=\"lc-list__action\"\n (clicked)=\"onActionClick(item)\"\n >\n {{ item.action }}\n </lc-button>\n }\n }\n </div>\n }\n</div>\n","import { Component, ChangeDetectionStrategy, input, output, computed } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IconComponent } from '../icon/icon.component';\n\nexport type ChipVariant = 'default' | 'primary' | 'success' | 'warning' | 'error' | 'info';\nexport type ChipSize = 'sm' | 'md' | 'lg';\n\n/**\n * Chip Component\n *\n * A pill-shaped removable tag component for displaying selections, filters, or tags.\n * Supports icons, color variants, and optional delete functionality.\n *\n * @example\n * ```html\n * <lc-chip variant=\"primary\" size=\"md\" [removable]=\"true\" (remove)=\"handleRemove()\">\n * <span lcChipIcon>🏷️</span>\n * Tag Name\n * </lc-chip>\n * ```\n */\n@Component({\n selector: 'lc-chip',\n standalone: true,\n imports: [CommonModule, IconComponent],\n templateUrl: './chip.component.html',\n styleUrl: './chip.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChipComponent {\n /** Visual variant of the chip */\n variant = input<ChipVariant>('default');\n\n /** Size of the chip */\n size = input<ChipSize>('md');\n\n /** Icon name from Heroicons */\n icon = input<string>();\n\n /** Whether the chip can be removed */\n removable = input<boolean>(false);\n\n /** Whether the chip is disabled */\n disabled = input<boolean>(false);\n\n /** Emitted when the chip is removed */\n readonly remove = output<void>();\n\n /**\n * Computed CSS classes for the chip\n */\n chipClasses = computed(() => {\n const classes = ['lc-chip'];\n\n classes.push(`lc-chip--${this.variant()}`);\n classes.push(`lc-chip--${this.size()}`);\n\n if (this.removable()) {\n classes.push('lc-chip--removable');\n }\n\n if (this.disabled()) {\n classes.push('lc-chip--disabled');\n }\n\n return classes.join(' ');\n });\n\n /**\n * Handle remove button click\n */\n onRemove(event: Event): void {\n event.stopPropagation();\n\n if (!this.disabled()) {\n this.remove.emit();\n }\n }\n\n /**\n * Handle keyboard navigation\n */\n onKeydown(event: KeyboardEvent): void {\n if (!this.removable() || this.disabled()) {\n return;\n }\n\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.remove.emit();\n }\n }\n}\n","<span \n [class]=\"chipClasses()\"\n [attr.role]=\"removable() ? 'button' : null\"\n [attr.tabindex]=\"removable() ? (disabled() ? '-1' : '0') : null\"\n [attr.aria-disabled]=\"disabled() ? 'true' : null\"\n (keydown)=\"onKeydown($event)\"\n>\n <span class=\"lc-chip__content\">\n @if (icon()) {\n <lc-icon [name]=\"icon()!\" class=\"lc-chip__icon\" size=\"sm\" />\n }\n <span class=\"lc-chip__label\">\n <ng-content></ng-content>\n </span>\n @if (removable() && !disabled()) {\n <button\n type=\"button\"\n class=\"lc-chip__delete\"\n aria-label=\"Remove chip\"\n (click)=\"onRemove($event)\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\n </svg>\n </button>\n }\n </span>\n</span>\n","import { Directive, Input, TemplateRef, inject } from '@angular/core';\n\n/**\n * Directive for defining custom cell templates in the Table component.\n *\n * @example\n * ```html\n * <lc-table [columns]=\"columns\" [data]=\"data\">\n * <ng-template lcTableCell=\"status\" let-row>\n * <lc-badge [variant]=\"row.status\">{{ row.status }}</lc-badge>\n * </ng-template>\n * </lc-table>\n * ```\n */\n@Directive({\n selector: '[lcTableCell]',\n standalone: true,\n})\nexport class TableCellDirective {\n /** The column key this template applies to */\n @Input('lcTableCell') columnKey = '';\n\n public template = inject(TemplateRef<{ $implicit: Record<string, unknown> }>);\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n signal,\n ContentChildren,\n QueryList,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TableCellDirective } from './table-cell.directive';\n\nexport interface TableColumn {\n key: string;\n label: string;\n sortable?: boolean;\n width?: string;\n /** Optional CSS class(es) applied to both th and td cells */\n cssClass?: string;\n /** Optional tooltip shown on hover over the column header */\n tooltip?: string;\n}\n\nexport interface SortEvent {\n column: string;\n direction: 'asc' | 'desc';\n}\n\nexport type TableVariant = 'default' | 'striped' | 'bordered';\nexport type TableSize = 'sm' | 'md' | 'lg';\n\n/**\n * Table Component\n *\n * A flexible, accessible data table component with sorting, variants, and responsive behavior.\n *\n * @example\n * ```html\n * <lc-table\n * [columns]=\"columns\"\n * [data]=\"data\"\n * variant=\"striped\"\n * [hoverable]=\"true\"\n * (sort)=\"onSort($event)\">\n * </lc-table>\n *\n * <!-- With custom cell templates -->\n * <lc-table [columns]=\"columns\" [data]=\"data\">\n * <ng-template lcTableCell=\"status\" let-row>\n * <lc-badge [variant]=\"row.status\">{{ row.status }}</lc-badge>\n * </ng-template>\n * </lc-table>\n * ```\n */\n@Component({\n selector: 'lc-table',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './table.component.html',\n styleUrl: './table.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TableComponent {\n /** Custom cell templates */\n @ContentChildren(TableCellDirective) cellTemplates!: QueryList<TableCellDirective>;\n\n /** Array of column definitions */\n columns = input<TableColumn[]>([]);\n\n /** Array of data objects to display */\n data = input<Record<string, unknown>[]>([]);\n\n /** Visual variant of the table */\n variant = input<TableVariant>('default');\n\n /** Size of the table */\n size = input<TableSize>('md');\n\n /** Whether rows should highlight on hover */\n hoverable = input<boolean>(false);\n\n /** Whether table should be responsive (horizontal scroll on mobile) */\n responsive = input<boolean>(true);\n\n /** Text shown when data is empty */\n emptyText = input<string>('No data available');\n\n /** Emitted when a sortable column header is clicked */\n readonly sort = output<SortEvent>();\n\n /** Emitted when a row is clicked */\n readonly rowClick = output<Record<string, unknown>>();\n\n /**\n * Computed CSS classes for the table element\n */\n tableClasses = computed(() => {\n const classes = ['lc-table'];\n\n classes.push(`lc-table--${this.variant()}`);\n classes.push(`lc-table--${this.size()}`);\n\n if (this.hoverable()) {\n classes.push('lc-table--hoverable');\n }\n\n return classes.join(' ');\n });\n\n /**\n * Computed CSS classes for the wrapper element\n */\n wrapperClasses = computed(() => {\n const classes = ['lc-table-wrapper'];\n\n if (this.responsive()) {\n classes.push('lc-table-wrapper--responsive');\n }\n\n return classes.join(' ');\n });\n\n /** Current sort state */\n protected currentSort = signal<{ column: string; direction: 'asc' | 'desc' } | null>(null);\n\n /**\n * Handle click on a sortable column header\n */\n handleSort(columnKey: string): void {\n const column = this.columns().find((col) => col.key === columnKey);\n\n if (!column || !column.sortable) {\n return;\n }\n\n const current = this.currentSort();\n let direction: 'asc' | 'desc' = 'asc';\n\n if (current && current.column === columnKey) {\n direction = current.direction === 'asc' ? 'desc' : 'asc';\n }\n\n this.currentSort.set({ column: columnKey, direction });\n this.sort.emit({ column: columnKey, direction });\n }\n\n /**\n * Get sort state for a column\n */\n getSortState(columnKey: string): 'asc' | 'desc' | null {\n const current = this.currentSort();\n if (current && current.column === columnKey) {\n return current.direction;\n }\n return null;\n }\n\n /**\n * Get aria-sort attribute value for a column\n */\n getAriaSort(columnKey: string): string | null {\n const sortState = this.getSortState(columnKey);\n if (sortState === 'asc') return 'ascending';\n if (sortState === 'desc') return 'descending';\n return null;\n }\n\n /**\n * Get CSS classes for a header cell\n */\n getHeaderClasses(column: TableColumn): string {\n const classes: string[] = [];\n\n if (column.sortable) {\n classes.push('sortable');\n }\n\n const sortState = this.getSortState(column.key);\n if (sortState) {\n classes.push(`sorted-${sortState}`);\n }\n\n return classes.join(' ');\n }\n\n /**\n * Get value from data object by column key\n */\n getCellValue(row: Record<string, unknown>, columnKey: string): unknown {\n return row[columnKey];\n }\n\n /**\n * Get custom template for a column if it exists\n */\n getCellTemplate(columnKey: string): TableCellDirective | undefined {\n return this.cellTemplates?.find((template) => template.columnKey === columnKey);\n }\n\n /**\n * Check if a column has a custom template\n */\n hasCustomTemplate(columnKey: string): boolean {\n return !!this.getCellTemplate(columnKey);\n }\n\n /**\n * Handle row click\n */\n onRowClick(row: Record<string, unknown>): void {\n this.rowClick.emit(row);\n }\n}\n","<div [class]=\"wrapperClasses()\">\n <table [class]=\"tableClasses()\" role=\"table\">\n <thead>\n <tr>\n @for (column of columns(); track column.key) {\n <th\n scope=\"col\"\n [class]=\"getHeaderClasses(column) + (column.cssClass ? ' ' + column.cssClass : '')\"\n [attr.aria-sort]=\"getAriaSort(column.key)\"\n [style.width]=\"column.width\"\n [title]=\"column.tooltip || ''\"\n (click)=\"handleSort(column.key)\">\n {{ column.label }}\n @if (column.sortable && getSortState(column.key)) {\n <span class=\"sort-indicator\" [attr.aria-label]=\"getSortState(column.key) === 'asc' ? 'sorted ascending' : 'sorted descending'\">\n @if (getSortState(column.key) === 'asc') {\n ↑\n } @else {\n ↓\n }\n </span>\n }\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @if (data().length === 0) {\n <tr>\n <td [attr.colspan]=\"columns().length\" class=\"lc-table__empty\">\n {{ emptyText() }}\n </td>\n </tr>\n } @else {\n @for (row of data(); track $index) {\n <tr (click)=\"onRowClick(row)\">\n @for (column of columns(); track column.key) {\n <td [class]=\"column.cssClass || ''\">\n @if (hasCustomTemplate(column.key)) {\n <ng-container *ngTemplateOutlet=\"getCellTemplate(column.key)!.template; context: { $implicit: row }\"></ng-container>\n } @else {\n {{ getCellValue(row, column.key) }}\n }\n </td>\n }\n </tr>\n }\n }\n </tbody>\n </table>\n</div>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IconComponent } from '../icon/icon.component';\n\n/**\n * Field Group component for displaying label-value pairs in a consistent format.\n * Useful for read-only data displays like profile pages, detail views, etc.\n *\n * @example Basic usage\n * ```html\n * <lc-field-group label=\"Email\" value=\"user@example.com\"></lc-field-group>\n * ```\n *\n * @example With icon\n * ```html\n * <lc-field-group\n * label=\"Language\"\n * value=\"English (US)\"\n * icon=\"globe-alt\">\n * </lc-field-group>\n * ```\n *\n * @example With custom content via projection\n * ```html\n * <lc-field-group label=\"Status\" icon=\"check-circle\">\n * <span class=\"status-badge\">Active</span>\n * </lc-field-group>\n * ```\n */\n@Component({\n selector: 'lc-field-group',\n standalone: true,\n imports: [CommonModule, IconComponent],\n templateUrl: './field-group.component.html',\n styleUrls: ['./field-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'lc-field-group',\n '[class.lc-field-group--with-icon]': 'icon()',\n '[class.lc-field-group--compact]': 'compact()',\n },\n})\nexport class FieldGroupComponent {\n /**\n * Label text displayed above the value\n */\n label = input.required<string>();\n\n /**\n * Value text to display (optional if using content projection)\n */\n value = input<string>();\n\n /**\n * Optional icon name from Heroicons\n */\n icon = input<string>();\n\n /**\n * Icon size\n * @default 'sm'\n */\n iconSize = input<'xs' | 'sm' | 'md'>('sm');\n\n /**\n * Use compact styling with less padding\n * @default false\n */\n compact = input<boolean>(false);\n}\n","@if (icon()) {\n <lc-icon [name]=\"icon()!\" [size]=\"iconSize()\" class=\"lc-field-group__icon\"></lc-icon>\n}\n\n<div class=\"lc-field-group__content\">\n <span class=\"lc-field-group__label\">{{ label() }}</span>\n @if (value()) {\n <p class=\"lc-field-group__value\">{{ value() }}</p>\n } @else {\n <div class=\"lc-field-group__value\">\n <ng-content></ng-content>\n </div>\n }\n</div>\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n model,\n computed,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport interface StepperStep {\n readonly label: string;\n readonly description?: string;\n readonly optional?: boolean;\n}\n\nexport type StepState = 'pending' | 'active' | 'completed';\n\n/**\n * Stepper Component\n *\n * Step-by-step wizard with numbered steps, active/completed/pending states.\n * Emits events when user navigates between steps.\n *\n * @example\n * ```html\n * <lc-stepper\n * [steps]=\"steps\"\n * [(activeStep)]=\"currentStep\"\n * (stepChange)=\"onStep($event)\"\n * >\n * @if (currentStep === 0) {\n * <div class=\"step-content\">Step 1 content</div>\n * }\n * @if (currentStep === 1) {\n * <div class=\"step-content\">Step 2 content</div>\n * }\n * </lc-stepper>\n * ```\n */\n@Component({\n selector: 'lc-stepper',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './stepper.component.html',\n styleUrl: './stepper.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StepperComponent {\n /** Step definitions */\n steps = input.required<readonly StepperStep[]>();\n\n /** Active step index (0-based, two-way binding) */\n activeStep = model<number>(0);\n\n /** Whether completed steps can be clicked to navigate back */\n linear = input<boolean>(true);\n\n /** Orientation */\n orientation = input<'horizontal' | 'vertical'>('horizontal');\n\n /** Emitted when active step changes */\n stepChange = output<number>();\n\n /** Computed total step count */\n totalSteps = computed(() => this.steps().length);\n\n /** Whether we're on the first step */\n isFirstStep = computed(() => this.activeStep() === 0);\n\n /** Whether we're on the last step */\n isLastStep = computed(() => this.activeStep() === this.totalSteps() - 1);\n\n /** Get the state of a step */\n getStepState(index: number): StepState {\n const current = this.activeStep();\n if (index < current) return 'completed';\n if (index === current) return 'active';\n return 'pending';\n }\n\n /** Navigate to a specific step (only if completed or next) */\n goToStep(index: number): void {\n const current = this.activeStep();\n if (this.linear()) {\n // In linear mode, only allow going to completed steps or next\n if (index <= current) {\n this.activeStep.set(index);\n this.stepChange.emit(index);\n }\n } else {\n this.activeStep.set(index);\n this.stepChange.emit(index);\n }\n }\n\n /** Go to next step */\n next(): void {\n const current = this.activeStep();\n if (current < this.totalSteps() - 1) {\n this.activeStep.set(current + 1);\n this.stepChange.emit(current + 1);\n }\n }\n\n /** Go to previous step */\n previous(): void {\n const current = this.activeStep();\n if (current > 0) {\n this.activeStep.set(current - 1);\n this.stepChange.emit(current - 1);\n }\n }\n\n /** Get CSS classes for step indicator */\n getStepClasses(index: number): string {\n const state = this.getStepState(index);\n const classes = ['lc-stepper__step'];\n classes.push(`lc-stepper__step--${state}`);\n if (!this.linear() || state === 'completed') {\n classes.push('lc-stepper__step--clickable');\n }\n return classes.join(' ');\n }\n\n /** Get CSS classes for connector line */\n getConnectorClasses(index: number): string {\n const classes = ['lc-stepper__connector'];\n if (index < this.activeStep()) {\n classes.push('lc-stepper__connector--completed');\n }\n return classes.join(' ');\n }\n}\n","<div\n class=\"lc-stepper\"\n [class.lc-stepper--horizontal]=\"orientation() === 'horizontal'\"\n [class.lc-stepper--vertical]=\"orientation() === 'vertical'\"\n>\n <!-- Step indicators -->\n <div class=\"lc-stepper__header\">\n @for (step of steps(); track $index; let last = $last) {\n <div [class]=\"getStepClasses($index)\" (click)=\"goToStep($index)\">\n <div class=\"lc-stepper__indicator\">\n @if (getStepState($index) === 'completed') {\n <!-- Checkmark for completed -->\n <svg class=\"lc-stepper__check\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\"\n clip-rule=\"evenodd\"\n />\n </svg>\n } @else {\n <span class=\"lc-stepper__number\">{{ $index + 1 }}</span>\n }\n </div>\n <div class=\"lc-stepper__label\">\n <span class=\"lc-stepper__title\">{{ step.label }}</span>\n @if (step.description) {\n <span class=\"lc-stepper__description\">{{ step.description }}</span>\n }\n @if (step.optional) {\n <span class=\"lc-stepper__optional\">Optional</span>\n }\n </div>\n </div>\n\n @if (!last) {\n <div [class]=\"getConnectorClasses($index)\"></div>\n }\n }\n </div>\n\n <!-- Step content area (projected) -->\n <div class=\"lc-stepper__content\">\n <ng-content></ng-content>\n </div>\n</div>\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n ContentChildren,\n QueryList,\n AfterContentInit,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/**\n * Configuration for a single filter in the FilterBar.\n */\nexport interface FilterConfig {\n /** Unique key for this filter */\n readonly key: string;\n /** Display label */\n readonly label: string;\n /** Filter type */\n readonly type: 'select' | 'toggle' | 'search';\n /** Available options for select/toggle types */\n readonly options?: readonly FilterOption[];\n /** Placeholder text (for search type) */\n readonly placeholder?: string;\n}\n\nexport interface FilterOption {\n readonly value: string;\n readonly label: string;\n readonly disabled?: boolean;\n}\n\nexport interface FilterValues {\n [key: string]: string;\n}\n\n/**\n * FilterBar Component\n *\n * Composable filter bar that combines selects, toggle groups, and search\n * in a responsive horizontal layout. Ideal for list pages.\n *\n * @example\n * ```html\n * <lc-filter-bar\n * [filters]=\"filterConfig\"\n * [values]=\"currentFilters\"\n * (valuesChange)=\"onFilterChange($event)\"\n * ></lc-filter-bar>\n * ```\n */\n@Component({\n selector: 'lc-filter-bar',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './filter-bar.component.html',\n styleUrl: './filter-bar.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FilterBarComponent {\n /** Filter configurations */\n filters = input.required<readonly FilterConfig[]>();\n\n /** Current filter values (two-way bindable) */\n values = input<FilterValues>({});\n\n /** Size variant */\n size = input<'sm' | 'md'>('md');\n\n /** Emitted when any filter value changes */\n valuesChange = output<FilterValues>();\n\n /** Computed size class */\n sizeClass = computed(() => `lc-filter-bar--${this.size()}`);\n\n /** Get the current value for a filter key */\n getValue(key: string): string {\n return this.values()[key] ?? '';\n }\n\n /** Handle select / toggle change */\n onFilterChange(key: string, value: string): void {\n const updated = { ...this.values(), [key]: value };\n this.valuesChange.emit(updated);\n }\n\n /** Handle search input */\n onSearchInput(key: string, event: Event): void {\n const target = event.target as HTMLInputElement;\n this.onFilterChange(key, target.value);\n }\n\n /** Check if a toggle option is active */\n isToggleActive(key: string, optionValue: string): boolean {\n return this.getValue(key) === optionValue;\n }\n\n /** Get toggle button classes */\n getToggleClasses(key: string, option: FilterOption): string {\n const classes = ['lc-filter-bar__toggle-btn'];\n if (this.isToggleActive(key, option.value)) {\n classes.push('lc-filter-bar__toggle-btn--active');\n }\n if (option.disabled) {\n classes.push('lc-filter-bar__toggle-btn--disabled');\n }\n return classes.join(' ');\n }\n}\n","<div class=\"lc-filter-bar\" [class]=\"sizeClass()\">\n @for (filter of filters(); track filter.key) {\n <div class=\"lc-filter-bar__item\">\n @if (filter.label) {\n <label class=\"lc-filter-bar__label\">{{ filter.label }}</label>\n }\n\n @switch (filter.type) {\n @case ('select') {\n <div class=\"lc-filter-bar__select-wrapper\">\n <select\n class=\"lc-filter-bar__select\"\n [value]=\"getValue(filter.key)\"\n (change)=\"onFilterChange(filter.key, $any($event.target).value)\"\n >\n @if (filter.placeholder) {\n <option value=\"\">{{ filter.placeholder }}</option>\n }\n @for (opt of filter.options; track opt.value) {\n <option\n [value]=\"opt.value\"\n [disabled]=\"opt.disabled ?? false\"\n >\n {{ opt.label }}\n </option>\n }\n </select>\n <!-- Chevron icon -->\n <svg class=\"lc-filter-bar__select-icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m19.5 8.25-7.5 7.5-7.5-7.5\" />\n </svg>\n </div>\n }\n\n @case ('toggle') {\n <div class=\"lc-filter-bar__toggle-group\">\n @for (opt of filter.options; track opt.value) {\n <button\n type=\"button\"\n [class]=\"getToggleClasses(filter.key, opt)\"\n [disabled]=\"opt.disabled ?? false\"\n (click)=\"onFilterChange(filter.key, opt.value)\"\n >\n {{ opt.label }}\n </button>\n }\n </div>\n }\n\n @case ('search') {\n <div class=\"lc-filter-bar__search-wrapper\">\n <!-- Search icon -->\n <svg class=\"lc-filter-bar__search-icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m21 21-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 5.196a7.5 7.5 0 0 0 10.607 10.607Z\" />\n </svg>\n <input\n type=\"text\"\n class=\"lc-filter-bar__search-input\"\n [placeholder]=\"filter.placeholder ?? 'Search...'\"\n [value]=\"getValue(filter.key)\"\n (input)=\"onSearchInput(filter.key, $event)\"\n />\n </div>\n }\n }\n </div>\n }\n</div>\n","import { Component, ChangeDetectionStrategy, input, computed } from '@angular/core';\n\nexport type SpinnerSize = 'sm' | 'md' | 'lg';\n\n/**\n * Spinner component for loading states.\n *\n * Displays a spinning indicator with an optional message.\n * Supports three sizes and respects the design-system color tokens.\n *\n * @example\n * ```html\n * <!-- Simple spinner -->\n * <lc-spinner />\n *\n * <!-- With message -->\n * <lc-spinner message=\"Loading data...\" />\n *\n * <!-- Large spinner -->\n * <lc-spinner size=\"lg\" message=\"Loading dashboard...\" />\n * ```\n */\n@Component({\n selector: 'lc-spinner',\n standalone: true,\n templateUrl: './spinner.component.html',\n styleUrl: './spinner.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SpinnerComponent {\n /**\n * Size of the spinner\n * @default 'md'\n */\n readonly size = input<SpinnerSize>('md');\n\n /**\n * Optional loading message displayed below the spinner\n */\n readonly message = input<string>();\n\n protected readonly hostClasses = computed(() => `spinner spinner--${this.size()}`);\n}\n","<div class=\"spinner\" [class]=\"hostClasses()\" role=\"status\" aria-live=\"polite\">\n <div class=\"spinner__circle\"></div>\n @if (message()) {\n <p class=\"spinner__message\">{{ message() }}</p>\n }\n <span class=\"sr-only\">Loading</span>\n</div>\n","import { Component, ChangeDetectionStrategy, input, computed, HostBinding } from '@angular/core';\n\nexport type SkeletonVariant = 'line' | 'circle' | 'rect';\n\n/**\n * Skeleton loader component for placeholder loading states.\n *\n * Renders a shimmer-animated placeholder block. Use multiple instances\n * to compose loading skeletons that match your page layout.\n *\n * @example\n * ```html\n * <!-- Text line (default) -->\n * <lc-skeleton />\n *\n * <!-- Custom width/height -->\n * <lc-skeleton width=\"200px\" height=\"1.75rem\" />\n *\n * <!-- Circle avatar placeholder -->\n * <lc-skeleton variant=\"circle\" width=\"40px\" height=\"40px\" />\n *\n * <!-- Full-width rectangle (e.g. chart area) -->\n * <lc-skeleton variant=\"rect\" width=\"100%\" height=\"400px\" borderRadius=\"0.5rem\" />\n * ```\n */\n@Component({\n selector: 'lc-skeleton',\n standalone: true,\n templateUrl: './skeleton.component.html',\n styleUrl: './skeleton.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkeletonComponent {\n /** Shape variant. */\n readonly variant = input<SkeletonVariant>('line');\n\n /** Width (CSS value). Defaults to '100%' for line/rect, '40px' for circle. */\n readonly width = input<string>();\n\n /** Height (CSS value). Defaults to '0.875rem' for line, '40px' for circle, '100px' for rect. */\n readonly height = input<string>();\n\n /** Border radius override (CSS value). */\n readonly borderRadius = input<string>();\n\n protected readonly variantClass = computed(() => `lc-skeleton--${this.variant()}`);\n\n protected readonly styles = computed(() => {\n const v = this.variant();\n const defaults: Record<SkeletonVariant, { w: string; h: string; r: string }> = {\n line: { w: '100%', h: '0.875rem', r: '0.25rem' },\n circle: { w: '40px', h: '40px', r: '50%' },\n rect: { w: '100%', h: '100px', r: '0.5rem' },\n };\n const d = defaults[v];\n return {\n width: this.width() ?? d.w,\n height: this.height() ?? d.h,\n 'border-radius': this.borderRadius() ?? d.r,\n };\n });\n\n @HostBinding('style.width')\n get hostWidth(): string {\n const v = this.variant();\n const defaults: Record<SkeletonVariant, string> = { line: '100%', circle: '40px', rect: '100%' };\n return this.width() ?? defaults[v];\n }\n\n @HostBinding('style.flex-shrink')\n get hostFlexShrink(): string {\n return '0';\n }\n}\n","<div class=\"lc-skeleton\" [class]=\"variantClass()\" [style]=\"styles()\"></div>\n","import { Component, ChangeDetectionStrategy, input, computed } from '@angular/core';\nimport { IconComponent } from '../icon/icon.component';\n\nexport type EmptyStateSize = 'sm' | 'md' | 'lg';\n\n/**\n * Empty-state component for \"no data\" placeholders.\n *\n * Supports a compact inline mode (inside cards) and a larger page-level mode.\n * An optional icon, heading, description, and projected action slot are supported.\n *\n * @example\n * ```html\n * <!-- Inline / card-level (sm) -->\n * <lc-empty-state\n * size=\"sm\"\n * message=\"No signals generated for this asset yet.\" />\n *\n * <!-- Page-level with icon + action -->\n * <lc-empty-state\n * icon=\"chart-bar\"\n * heading=\"No Paper Trading Portfolios\"\n * message=\"Portfolios are created automatically when strategies are promoted.\"\n * >\n * <lc-button variant=\"primary\">Get Started</lc-button>\n * </lc-empty-state>\n * ```\n */\n@Component({\n selector: 'lc-empty-state',\n standalone: true,\n imports: [IconComponent],\n templateUrl: './empty-state.component.html',\n styleUrl: './empty-state.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EmptyStateComponent {\n /**\n * Size variant\n * - `sm`: compact inline (inside cards), no padding\n * - `md`: standard centered block (default)\n * - `lg`: large page-level with extra padding\n * @default 'md'\n */\n readonly size = input<EmptyStateSize>('md');\n\n /**\n * Heroicon name to display above the heading\n */\n readonly icon = input<string>();\n\n /**\n * Bold heading text\n */\n readonly heading = input<string>();\n\n /**\n * Description text\n */\n readonly message = input<string>();\n\n protected readonly hostClasses = computed(() => `empty-state empty-state--${this.size()}`);\n}\n","<div [class]=\"hostClasses()\" role=\"status\">\n @if (icon()) {\n <lc-icon [name]=\"icon()!\" size=\"xl\" color=\"var(--color-neutral-400)\" />\n }\n @if (heading()) {\n <h3 class=\"empty-state__heading\">{{ heading() }}</h3>\n }\n @if (message()) {\n <p class=\"empty-state__message\">{{ message() }}</p>\n }\n <ng-content />\n</div>\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n signal,\n effect,\n HostListener,\n} from '@angular/core';\nimport { IconComponent } from '../icon/icon.component';\n\nexport type DrawerPosition = 'left' | 'right';\nexport type DrawerSize = 'sm' | 'md' | 'lg' | 'xl';\n\n/**\n * Drawer Component — a slide-out overlay panel for supplementary content.\n *\n * Unlike the Sidenav (which renders navigation items), the Drawer\n * accepts arbitrary projected content via `<ng-content>`, making it\n * ideal for settings panels, filters, detail views, etc.\n *\n * @example\n * ```html\n * <lc-drawer [open]=\"showPanel\" position=\"right\" size=\"md\"\n * heading=\"Settings\" (closed)=\"showPanel = false\">\n * <p>Any content goes here</p>\n * </lc-drawer>\n * ```\n */\n@Component({\n selector: 'lc-drawer',\n standalone: true,\n imports: [IconComponent],\n templateUrl: './drawer.component.html',\n styleUrl: './drawer.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DrawerComponent {\n /** Whether the drawer is open. */\n readonly open = input<boolean>(false);\n\n /** Slide-in direction. */\n readonly position = input<DrawerPosition>('right');\n\n /** Predefined width (sm=320, md=400, lg=520, xl=640). */\n readonly size = input<DrawerSize>('md');\n\n /** Optional heading shown in the drawer header. */\n readonly heading = input<string>('');\n\n /** Whether the overlay backdrop is shown. */\n readonly hasOverlay = input<boolean>(true);\n\n /** Whether clicking the overlay closes the drawer. */\n readonly closeOnOverlayClick = input<boolean>(true);\n\n /** Whether pressing Escape closes the drawer. */\n readonly closeOnEscape = input<boolean>(true);\n\n /** ARIA label for assistive technology. */\n readonly ariaLabel = input<string>('');\n\n /** Emitted when the drawer should close. */\n readonly closed = output<void>();\n\n /** Internal visibility — drives the animation lifecycle. */\n protected _visible = signal(false);\n protected _animating = signal(false);\n\n constructor() {\n effect(() => {\n const isOpen = this.open();\n if (isOpen) {\n this._visible.set(true);\n this._animating.set(true);\n // Lock body scroll\n document.body.style.overflow = 'hidden';\n } else if (this._visible()) {\n this._animating.set(false);\n // Restore scroll after animation\n setTimeout(() => {\n this._visible.set(false);\n document.body.style.overflow = '';\n }, 250);\n }\n });\n }\n\n /** Width token → CSS. */\n protected get widthValue(): string {\n const map: Record<DrawerSize, string> = {\n sm: '320px',\n md: '400px',\n lg: '520px',\n xl: '640px',\n };\n return map[this.size()];\n }\n\n protected get panelClasses(): string {\n const cls = ['lc-drawer__panel', `lc-drawer__panel--${this.position()}`];\n if (this.open()) cls.push('lc-drawer__panel--open');\n return cls.join(' ');\n }\n\n /** Handle backdrop click. */\n protected onOverlayClick(): void {\n if (this.closeOnOverlayClick()) {\n this.close();\n }\n }\n\n /** Handle close action. */\n protected close(): void {\n document.body.style.overflow = '';\n this.closed.emit();\n }\n\n @HostListener('document:keydown', ['$event'])\n protected onKeydown(event: KeyboardEvent): void {\n if (event.key === 'Escape' && this.open() && this.closeOnEscape()) {\n this.close();\n }\n }\n}\n","@if (_visible()) {\n <div class=\"lc-drawer\">\n <!-- Overlay -->\n @if (hasOverlay()) {\n <div\n class=\"lc-drawer__overlay\"\n [class.lc-drawer__overlay--visible]=\"open()\"\n (click)=\"onOverlayClick()\"\n aria-hidden=\"true\"\n ></div>\n }\n\n <!-- Panel -->\n <aside\n [class]=\"panelClasses\"\n [style.width]=\"widthValue\"\n role=\"dialog\"\n [attr.aria-label]=\"ariaLabel() || heading() || 'Drawer'\"\n [attr.aria-modal]=\"true\"\n >\n <!-- Header -->\n @if (heading()) {\n <header class=\"lc-drawer__header\">\n <h2 class=\"lc-drawer__heading\">{{ heading() }}</h2>\n <button\n type=\"button\"\n class=\"lc-drawer__close\"\n (click)=\"close()\"\n aria-label=\"Close drawer\"\n >\n <lc-icon name=\"x-mark\" size=\"sm\" />\n </button>\n </header>\n } @else {\n <button\n type=\"button\"\n class=\"lc-drawer__close lc-drawer__close--floating\"\n (click)=\"close()\"\n aria-label=\"Close drawer\"\n >\n <lc-icon name=\"x-mark\" size=\"sm\" />\n </button>\n }\n\n <!-- Projected content -->\n <div class=\"lc-drawer__body\">\n <ng-content />\n </div>\n </aside>\n </div>\n}\n","/**\n * Life-Cockpit Design System (UI Kit)\n *\n * Public API for the design system library.\n *\n * To use global styles, import in your Angular application's styles.scss:\n * @import '@life-cockpit/angular-ui-kit/styles/index.scss';\n */\n\n// ============================================================================\n// Design Tokens\n// ============================================================================\n// Import all generated token constants (colors, spacing, typography, etc.)\nexport * from './lib/tokens';\n\n// ============================================================================\n// Theme System\n// ============================================================================\n// Theme types for TypeScript type safety\nexport * from './lib/theme/theme.types';\n\n// Theme service for light/dark mode switching\nexport * from './lib/theme/theme.service';\n\n// ============================================================================\n// Models & Interfaces\n// ============================================================================\n// Navigation Item interface\nexport * from './lib/models/navigation-item.interface';\n\n// ============================================================================\n// Components\n// ============================================================================\n// Accordion Component\nexport * from './lib/accordion/accordion.component';\n\n// Button Component\nexport * from './lib/button/button.component';\n\n// Card Component\nexport * from './lib/card/card.component';\n\n// Checkbox Component\nexport * from './lib/checkbox/checkbox.component';\n\n// Icon Component\nexport * from './lib/icon/icon.component';\n\n// Logo Component\nexport * from './lib/logo/logo.component';\n\n// Menu Component\nexport * from './lib/menu/menu.component';\n\n// Input Component\nexport * from './lib/input/input.component';\n\n// Radio Component\nexport * from './lib/radio/radio.component';\n\n// Typography Component\nexport * from './lib/typography/typography.component';\n\n// ============================================================================\n// Form Components\n// ============================================================================\n// DatePicker Component\nexport * from './lib/datepicker/datepicker.component';\n\n// Select Component\nexport * from './lib/select/select.component';\n\n// Switch Component\nexport * from './lib/switch/switch.component';\n\n// Textarea Component\nexport * from './lib/textarea/textarea.component';\n\n// Password Input Component\nexport * from './lib/password-input/password-input.component';\n\n// Verification Code Input Component\nexport * from './lib/verification-code-input/verification-code-input.component';\n\n// Email Input Component\nexport * from './lib/email-input/email-input.component';\n\n// ============================================================================\n// Layout Components\n// ============================================================================\n// Container Component\nexport * from './lib/container/container.component';\n\n// Section Component\nexport * from './lib/section/section.component';\n\n// Spacer Component\nexport * from './lib/spacer/spacer.component';\n\n// Stack Component\nexport * from './lib/stack/stack.component';\n\n// ============================================================================\n// Feedback Components\n// ============================================================================\n// Alert Component\nexport * from './lib/alert/alert.component';\n\n// Error Display Component\nexport * from './lib/error-display/error-display.component';\n\n// Toast Service and Component\nexport * from './lib/toast/toast.service';\nexport * from './lib/toast/toast.component';\n\n// Modal Component\nexport * from './lib/modal/modal.component';\n\n// Tooltip Directive\nexport * from './lib/tooltip/tooltip.directive';\n\n// ============================================================================\n// Navigation Components\n// ============================================================================\n// Breadcrumbs Component\nexport * from './lib/breadcrumbs/breadcrumbs.component';\n\n// Header Component\nexport * from './lib/header/header.component';\n\n// Pagination Component\nexport * from './lib/pagination/pagination.component';\n\n// Sidenav Component\nexport * from './lib/sidenav/sidenav.component';\n\n// Tabs Component\nexport * from './lib/tabs/tabs.component';\n\n// ============================================================================\n// Data Display Components\n// ============================================================================\n// Avatar Component\nexport * from './lib/avatar/avatar.component';\n\n// Badge Component\nexport * from './lib/badge/badge.component';\n\n// MetricCard Component\nexport * from './lib/metric-card/metric-card.component';\n\n// ToggleGroup Component\nexport * from './lib/toggle-group/toggle-group.component';\n\n// List Component\nexport * from './lib/list/list.component';\nexport * from './lib/list/list-item-template.directive';\n\n// Chip Component\nexport * from './lib/chip/chip.component';\n\n// Table Component\nexport * from './lib/table/table.component';\nexport * from './lib/table/table-cell.directive';\n\n// Field Group Component\nexport * from './lib/field-group/field-group.component';\n\n// Stepper Component\nexport * from './lib/stepper/stepper.component';\n\n// FilterBar Component\nexport * from './lib/filter-bar/filter-bar.component';\n\n// Spinner Component\nexport * from './lib/spinner/spinner.component';\n\n// Skeleton Component\nexport * from './lib/skeleton/skeleton.component';\n\n// Empty State Component\nexport * from './lib/empty-state/empty-state.component';\n\n// Drawer Component\nexport * from './lib/drawer/drawer.component';\n\n// ============================================================================\n// Styles\n// ============================================================================\n// Styles are available at: libs/shared/src/styles/index.scss\n// Import path: '@life-cockpit/angular-ui-kit/styles/index.scss'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["nextUniqueId","i1","i2"],"mappings":"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"}