@life-cockpit/angular-ui-kit 1.0.3 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +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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"}
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/hero/hero.component.ts","../../../../libs/angular-ui-kit/src/lib/hero/hero.component.html","../../../../libs/angular-ui-kit/src/lib/progress-bar/progress-bar.component.ts","../../../../libs/angular-ui-kit/src/lib/progress-bar/progress-bar.component.html","../../../../libs/angular-ui-kit/src/lib/divider/divider.component.ts","../../../../libs/angular-ui-kit/src/lib/divider/divider.component.html","../../../../libs/angular-ui-kit/src/lib/search-input/search-input.component.ts","../../../../libs/angular-ui-kit/src/lib/search-input/search-input.component.html","../../../../libs/angular-ui-kit/src/lib/file-upload/file-upload.component.ts","../../../../libs/angular-ui-kit/src/lib/file-upload/file-upload.component.html","../../../../libs/angular-ui-kit/src/lib/popover/popover.component.ts","../../../../libs/angular-ui-kit/src/lib/popover/popover.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/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/lib/timeline/timeline.component.ts","../../../../libs/angular-ui-kit/src/lib/timeline/timeline.component.html","../../../../libs/angular-ui-kit/src/lib/avatar-group/avatar-group.component.ts","../../../../libs/angular-ui-kit/src/lib/avatar-group/avatar-group.component.html","../../../../libs/angular-ui-kit/src/lib/slider/slider.component.ts","../../../../libs/angular-ui-kit/src/lib/slider/slider.component.html","../../../../libs/angular-ui-kit/src/lib/number-input/number-input.component.ts","../../../../libs/angular-ui-kit/src/lib/number-input/number-input.component.html","../../../../libs/angular-ui-kit/src/lib/callout/callout.component.ts","../../../../libs/angular-ui-kit/src/lib/callout/callout.component.html","../../../../libs/angular-ui-kit/src/lib/rating/rating.component.ts","../../../../libs/angular-ui-kit/src/lib/rating/rating.component.html","../../../../libs/angular-ui-kit/src/lib/color-picker/color-picker.component.ts","../../../../libs/angular-ui-kit/src/lib/color-picker/color-picker.component.html","../../../../libs/angular-ui-kit/src/lib/code-block/code-block.component.ts","../../../../libs/angular-ui-kit/src/lib/code-block/code-block.component.html","../../../../libs/angular-ui-kit/src/lib/footer/footer.component.ts","../../../../libs/angular-ui-kit/src/lib/footer/footer.component.html","../../../../libs/angular-ui-kit/src/lib/sparkline/sparkline.component.ts","../../../../libs/angular-ui-kit/src/lib/sparkline/sparkline.component.html","../../../../libs/angular-ui-kit/src/lib/stat-trend/stat-trend.component.ts","../../../../libs/angular-ui-kit/src/lib/stat-trend/stat-trend.component.html","../../../../libs/angular-ui-kit/src/lib/donut-chart/donut-chart.component.ts","../../../../libs/angular-ui-kit/src/lib/donut-chart/donut-chart.component.html","../../../../libs/angular-ui-kit/src/lib/bar-chart/bar-chart.component.ts","../../../../libs/angular-ui-kit/src/lib/bar-chart/bar-chart.component.html","../../../../libs/angular-ui-kit/src/lib/line-chart/line-chart.component.ts","../../../../libs/angular-ui-kit/src/lib/line-chart/line-chart.component.html","../../../../libs/angular-ui-kit/src/lib/gauge/gauge.component.ts","../../../../libs/angular-ui-kit/src/lib/gauge/gauge.component.html","../../../../libs/angular-ui-kit/src/lib/stacked-bar-chart/stacked-bar-chart.component.ts","../../../../libs/angular-ui-kit/src/lib/stacked-bar-chart/stacked-bar-chart.component.html","../../../../libs/angular-ui-kit/src/lib/area-chart/area-chart.component.ts","../../../../libs/angular-ui-kit/src/lib/area-chart/area-chart.component.html","../../../../libs/angular-ui-kit/src/lib/heatmap/heatmap.component.ts","../../../../libs/angular-ui-kit/src/lib/heatmap/heatmap.component.html","../../../../libs/angular-ui-kit/src/lib/pie-chart/pie-chart.component.ts","../../../../libs/angular-ui-kit/src/lib/pie-chart/pie-chart.component.html","../../../../libs/angular-ui-kit/src/lib/radar-chart/radar-chart.component.ts","../../../../libs/angular-ui-kit/src/lib/radar-chart/radar-chart.component.html","../../../../libs/angular-ui-kit/src/lib/progress-ring/progress-ring.component.ts","../../../../libs/angular-ui-kit/src/lib/progress-ring/progress-ring.component.html","../../../../libs/angular-ui-kit/src/lib/waterfall-chart/waterfall-chart.component.ts","../../../../libs/angular-ui-kit/src/lib/waterfall-chart/waterfall-chart.component.html","../../../../libs/angular-ui-kit/src/lib/calendar/calendar.component.ts","../../../../libs/angular-ui-kit/src/lib/calendar/calendar.component.html","../../../../libs/angular-ui-kit/src/lib/gantt-chart/gantt-chart.component.ts","../../../../libs/angular-ui-kit/src/lib/gantt-chart/gantt-chart.component.html","../../../../libs/angular-ui-kit/src/lib/chat/chat.component.ts","../../../../libs/angular-ui-kit/src/lib/chat/chat.component.html","../../../../libs/angular-ui-kit/src/lib/document-viewer/document-viewer.component.ts","../../../../libs/angular-ui-kit/src/lib/document-viewer/document-viewer.component.html","../../../../libs/angular-ui-kit/src/lib/gallery/gallery.component.ts","../../../../libs/angular-ui-kit/src/lib/gallery/gallery.component.html","../../../../libs/angular-ui-kit/src/lib/dependency-viewer/dependency-viewer.component.ts","../../../../libs/angular-ui-kit/src/lib/dependency-viewer/dependency-viewer.component.html","../../../../libs/angular-ui-kit/src/lib/scatter-plot/scatter-plot.component.ts","../../../../libs/angular-ui-kit/src/lib/scatter-plot/scatter-plot.component.html","../../../../libs/angular-ui-kit/src/lib/funnel-chart/funnel-chart.component.ts","../../../../libs/angular-ui-kit/src/lib/funnel-chart/funnel-chart.component.html","../../../../libs/angular-ui-kit/src/lib/tag-input/tag-input.component.ts","../../../../libs/angular-ui-kit/src/lib/tag-input/tag-input.component.html","../../../../libs/angular-ui-kit/src/lib/date-range-picker/date-range-picker.component.ts","../../../../libs/angular-ui-kit/src/lib/date-range-picker/date-range-picker.component.html","../../../../libs/angular-ui-kit/src/lib/diff-viewer/diff-viewer.component.ts","../../../../libs/angular-ui-kit/src/lib/diff-viewer/diff-viewer.component.html","../../../../libs/angular-ui-kit/src/lib/kanban-board/kanban-board.component.ts","../../../../libs/angular-ui-kit/src/lib/kanban-board/kanban-board.component.html","../../../../libs/angular-ui-kit/src/lib/notification-center/notification-center.component.ts","../../../../libs/angular-ui-kit/src/lib/notification-center/notification-center.component.html","../../../../libs/angular-ui-kit/src/lib/rich-text-editor/rich-text-editor.component.ts","../../../../libs/angular-ui-kit/src/lib/rich-text-editor/rich-text-editor.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)\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 CSS variable color -->\n * <lc-icon name=\"star\" color=\"var(--color-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 * - \"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 return classes.join(' ');\n });\n\n /**\n * Computed inline color style\n * @internal\n */\n readonly colorStyle = computed(() => {\n return this.color();\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 * Features:\n * - Expandable/collapsible content panels\n * - Two-way binding for expanded state\n * - Animated expand/collapse transitions\n * - Content projection for custom body content\n * - Accessible with keyboard support\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})\n/**\n * Button component for user actions and form submissions.\n *\n * Features:\n * - Multiple variants (primary, secondary, outline, ghost, danger, link)\n * - Size options (xs, sm, md, lg)\n * - Loading state with spinner\n * - Icon-only mode\n * - Full-width layout option\n * - Keyboard and focus handling\n * - Accessible with ARIA attributes\n *\n * @example\n * ```html\n * <lc-button variant=\"primary\" size=\"md\">Save</lc-button>\n * ```\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 visual hierarchy.\n *\n * Features:\n * - Variant styles (elevated, outlined, filled)\n * - Configurable padding (none, sm, md, lg)\n * - Border radius options (none, sm, md, lg, xl)\n * - Optional title display\n * - Content projection for flexible body content\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})\n/**\n * Checkbox component for boolean or indeterminate selections.\n *\n * Features:\n * - Checked, unchecked, and indeterminate states\n * - Multiple size variants (sm, md, lg)\n * - Validation error display with error message\n * - Help text support\n * - Full accessibility with ARIA attributes\n * - ControlValueAccessor integration for reactive forms\n *\n * @example\n * ```html\n * <lc-checkbox label=\"Accept terms\" />\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 for displaying the Life-Cockpit brand identity.\n *\n * Features:\n * - Full logo and emblem-only variants\n * - Multiple size options (sm, md, lg)\n * - SVG-based for crisp rendering at any resolution\n * - Dark mode compatible\n *\n * @example\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 * Input component for single-line text form data entry.\n *\n * Features:\n * - Type variants (text, email, password, number, tel, url)\n * - Size presets (xs, sm, md, lg)\n * - Leading and trailing icon support\n * - Character count display with maxLength\n * - Validation error message display\n * - Helper text support\n * - Disabled and readonly states\n * - ControlValueAccessor integration for reactive forms\n *\n * @example\n * ```html\n * <lc-input label=\"Email\" type=\"email\" placeholder=\"Enter email\" [(ngModel)]=\"email\" />\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})\n/**\n * Radio button component for single-option selection within a group.\n *\n * Features:\n * - Single selection within a named radio group\n * - Multiple size variants (sm, md, lg)\n * - Validation error display with error message\n * - Help text support\n * - Full accessibility with ARIA attributes\n * - ControlValueAccessor integration for reactive forms\n *\n * @example\n * ```html\n * <lc-radio label=\"Option A\" value=\"a\" name=\"group1\" />\n * <lc-radio label=\"Option B\" value=\"b\" name=\"group1\" />\n * ```\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 for consistent text styling.\n *\n * Features:\n * - Semantic variants (h1–h6, body1, body2, caption, overline)\n * - Automatic HTML element mapping per variant\n * - Text alignment options (left, center, right, justify)\n * - Color variants (primary, secondary, success, warning, error, info)\n * - Font weight overrides (regular, medium, semibold, bold)\n * - Text transform (uppercase, lowercase, capitalize)\n * - Line clamping for text truncation\n * - Gutter bottom margin option\n *\n * @example\n * ```html\n * <lc-typography variant=\"h1\" color=\"primary\">Heading</lc-typography>\n * <lc-typography variant=\"body1\" [lineClamp]=\"2\">Truncated text...</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 overlay.\n *\n * Features:\n * - Calendar popup with month and year navigation\n * - Min/max date constraints\n * - Disabled specific dates and weekends\n * - Configurable date format string\n * - Variant styles (outline, filled)\n * - Size presets (xs, sm, md, lg)\n * - Disabled and readonly states\n * - ControlValueAccessor integration for reactive forms\n *\n * @example\n * ```html\n * <lc-datepicker placeholder=\"Select date\" [(ngModel)]=\"selectedDate\" />\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 option selection.\n *\n * Features:\n * - Single and multiple selection modes\n * - Searchable/filterable option list\n * - Option groups with headers\n * - Loading state indicator\n * - Variant styles (outline, filled)\n * - Size presets (xs, sm, md, lg)\n * - Keyboard navigation support\n * - CDK overlay positioning\n * - ControlValueAccessor integration for reactive forms\n *\n * @example\n * ```html\n * <lc-select [options]=\"options\" placeholder=\"Choose\" [(ngModel)]=\"selected\" />\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 boolean toggle functionality.\n *\n * Features:\n * - Color variants (primary, secondary, success, warning, danger)\n * - Size options (sm, md, lg)\n * - Loading state with spinner\n * - Configurable label positioning (left/right)\n * - Keyboard toggle support\n * - Disabled and required states\n * - ControlValueAccessor integration for reactive forms\n *\n * @example\n * ```html\n * <lc-switch label=\"Enable notifications\" [(ngModel)]=\"isEnabled\" />\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 * Features:\n * - Variant styles (outline, filled)\n * - Size presets (xs, sm, md, lg)\n * - Auto-resize with configurable min/max rows\n * - Character count display with maxLength\n * - Validation error message and helper text\n * - Disabled and readonly states\n * - ControlValueAccessor integration for reactive forms\n *\n * @example\n * ```html\n * <lc-textarea placeholder=\"Enter message\" [autoResize]=\"true\" [(ngModel)]=\"message\" />\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 * Features:\n * - Semantic variants (success, warning, error, info)\n * - Optional title and icon display\n * - Auto-mapped variant icons\n * - Dismissible with close button\n * - Content projection for custom body\n * - Accessible with ARIA alert role\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 built-in RFC 5322 validation.\n *\n * Features:\n * - RFC 5322 regex email format validation\n * - Real-time validation feedback on input\n * - Valid/invalid visual indicators\n * - Size presets (xs, sm, md, lg)\n * - Helper text and error message display\n * - Disabled and readonly states\n * - ControlValueAccessor integration for reactive forms\n *\n * @example\n * ```html\n * <lc-email-input label=\"Email\" placeholder=\"you@example.com\" [(ngModel)]=\"email\" />\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 {\n ChangeDetectionStrategy,\n Component,\n input,\n computed,\n} from '@angular/core';\n\nexport type HeroColor =\n | 'primary'\n | 'secondary'\n | 'neutral'\n | 'success'\n | 'info'\n | 'warning'\n | 'accent-orange'\n | 'accent-purple'\n | 'accent-violet';\n\nexport type HeroSize = 'sm' | 'md' | 'lg';\n\n/**\n * Hero component for prominent page headers with gradient backgrounds.\n *\n * Features:\n * - Color gradient variants (primary, secondary, success, warning, error, neutral)\n * - Size options (sm, md, lg)\n * - Optional label text above the title\n * - Configurable border radius\n * - Content projection for body and footer sections\n * - Footer slot for metadata, stats, or CTAs\n *\n * @example\n * ```html\n * <lc-hero label=\"MY APP\" title=\"Welcome\" color=\"primary\">\n * <p>Description text</p>\n * <div hero-footer>Status: Active</div>\n * </lc-hero>\n * ```\n */\n@Component({\n selector: 'lc-hero',\n standalone: true,\n templateUrl: './hero.component.html',\n styleUrls: ['./hero.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HeroComponent {\n /**\n * Small uppercase label displayed above the title.\n */\n label = input<string | undefined>(undefined);\n\n /**\n * Main headline text.\n */\n title = input.required<string>();\n\n /**\n * Color theme for the gradient background.\n * @default 'primary'\n */\n color = input<HeroColor>('primary');\n\n /**\n * Size variant controlling padding and font sizes.\n * @default 'md'\n */\n size = input<HeroSize>('md');\n\n /**\n * Border radius of the hero container.\n * @default 'lg'\n */\n borderRadius = input<'none' | 'sm' | 'md' | 'lg'>('lg');\n\n protected heroClasses = computed(() => {\n return [\n 'hero',\n `hero--${this.color()}`,\n `hero--${this.size()}`,\n `hero--radius-${this.borderRadius()}`,\n ].join(' ');\n });\n}\n","<div [class]=\"heroClasses()\">\n <div class=\"hero__content\">\n @if (label()) {\n <span class=\"hero__label\">{{ label() }}</span>\n }\n <h1 class=\"hero__title\">{{ title() }}</h1>\n <div class=\"hero__body\">\n <ng-content></ng-content>\n </div>\n </div>\n <ng-content select=\"[hero-footer]\"></ng-content>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n computed,\n} from '@angular/core';\n\nexport type ProgressBarColor = 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'info';\nexport type ProgressBarSize = 'xs' | 'sm' | 'md' | 'lg';\nexport type ProgressBarVariant = 'linear' | 'circular';\n\n/**\n * Progress bar component for displaying completion status.\n *\n * Features:\n * - Linear and circular progress variants\n * - Color theme options (primary, secondary, success, warning, error)\n * - Multiple size presets (xs, sm, md, lg)\n * - Animated value transitions\n * - Accessible with ARIA progressbar role\n *\n * @example\n * ```html\n * <lc-progress-bar [value]=\"75\" color=\"primary\" size=\"md\"></lc-progress-bar>\n * <lc-progress-bar [value]=\"50\" variant=\"circular\" color=\"success\"></lc-progress-bar>\n * ```\n */\n@Component({\n selector: 'lc-progress-bar',\n standalone: true,\n templateUrl: './progress-bar.component.html',\n styleUrls: ['./progress-bar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ProgressBarComponent {\n /**\n * Progress value between 0 and 100.\n * @default 0\n */\n value = input<number>(0);\n\n /**\n * Color theme.\n * @default 'primary'\n */\n color = input<ProgressBarColor>('primary');\n\n /**\n * Height/thickness of the bar.\n * @default 'md'\n */\n size = input<ProgressBarSize>('md');\n\n /**\n * Visual variant.\n * @default 'linear'\n */\n variant = input<ProgressBarVariant>('linear');\n\n /**\n * Whether to show the percentage label.\n * @default false\n */\n showLabel = input<boolean>(false);\n\n /**\n * Whether the progress is indeterminate (animated, no fixed value).\n * @default false\n */\n indeterminate = input<boolean>(false);\n\n /**\n * Accessible label for screen readers.\n */\n ariaLabel = input<string>('Progress');\n\n protected clampedValue = computed(() => Math.max(0, Math.min(100, this.value())));\n\n protected barClasses = computed(() => {\n return [\n 'progress-bar',\n `progress-bar--${this.color()}`,\n `progress-bar--${this.size()}`,\n this.indeterminate() ? 'progress-bar--indeterminate' : '',\n ]\n .filter(Boolean)\n .join(' ');\n });\n\n // Circular variant helpers\n protected readonly circleRadius = 40;\n protected readonly circleCircumference = 2 * Math.PI * 40;\n\n protected strokeDashoffset = computed(() => {\n return this.circleCircumference * (1 - this.clampedValue() / 100);\n });\n}\n","@if (variant() === 'linear') {\n <div\n [class]=\"barClasses()\"\n role=\"progressbar\"\n [attr.aria-valuenow]=\"indeterminate() ? null : clampedValue()\"\n [attr.aria-valuemin]=\"0\"\n [attr.aria-valuemax]=\"100\"\n [attr.aria-label]=\"ariaLabel()\"\n >\n <div class=\"progress-bar__track\">\n <div\n class=\"progress-bar__fill\"\n [style.width.%]=\"indeterminate() ? 0 : clampedValue()\"\n ></div>\n </div>\n @if (showLabel() && !indeterminate()) {\n <span class=\"progress-bar__label\">{{ clampedValue() }}%</span>\n }\n </div>\n} @else {\n <div\n class=\"progress-bar-circular\"\n [class]=\"'progress-bar-circular progress-bar-circular--' + color() + ' progress-bar-circular--' + size()\"\n role=\"progressbar\"\n [attr.aria-valuenow]=\"indeterminate() ? null : clampedValue()\"\n [attr.aria-valuemin]=\"0\"\n [attr.aria-valuemax]=\"100\"\n [attr.aria-label]=\"ariaLabel()\"\n >\n <svg viewBox=\"0 0 100 100\" class=\"progress-bar-circular__svg\">\n <circle\n class=\"progress-bar-circular__track\"\n cx=\"50\" cy=\"50\" [attr.r]=\"circleRadius\"\n fill=\"none\"\n />\n <circle\n class=\"progress-bar-circular__fill\"\n cx=\"50\" cy=\"50\" [attr.r]=\"circleRadius\"\n fill=\"none\"\n [attr.stroke-dasharray]=\"circleCircumference\"\n [attr.stroke-dashoffset]=\"indeterminate() ? circleCircumference * 0.75 : strokeDashoffset()\"\n [class.progress-bar-circular__fill--indeterminate]=\"indeterminate()\"\n />\n </svg>\n @if (showLabel() && !indeterminate()) {\n <span class=\"progress-bar-circular__label\">{{ clampedValue() }}%</span>\n }\n </div>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n computed,\n} from '@angular/core';\n\nexport type DividerOrientation = 'horizontal' | 'vertical';\nexport type DividerVariant = 'solid' | 'dashed' | 'dotted';\nexport type DividerSpacing = 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n/**\n * Divider component for visual separation of content.\n *\n * Features:\n * - Horizontal and vertical orientations\n * - Line style variants (solid, dashed, dotted)\n * - Configurable spacing (none, sm, md, lg)\n * - Optional centered text label\n * - Dark mode support\n *\n * @example\n * ```html\n * <lc-divider></lc-divider>\n * <lc-divider orientation=\"vertical\" variant=\"dashed\"></lc-divider>\n * <lc-divider spacing=\"lg\">OR</lc-divider>\n * ```\n */\n@Component({\n selector: 'lc-divider',\n standalone: true,\n templateUrl: './divider.component.html',\n styleUrls: ['./divider.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DividerComponent {\n /**\n * Orientation of the divider line.\n * @default 'horizontal'\n */\n orientation = input<DividerOrientation>('horizontal');\n\n /**\n * Line style.\n * @default 'solid'\n */\n variant = input<DividerVariant>('solid');\n\n /**\n * Spacing (margin) around the divider.\n * @default 'md'\n */\n spacing = input<DividerSpacing>('md');\n\n /**\n * Optional inline text label (e.g. \"OR\", \"Section\").\n */\n label = input<string | undefined>(undefined);\n\n protected dividerClasses = computed(() => {\n return [\n 'divider',\n `divider--${this.orientation()}`,\n `divider--${this.variant()}`,\n `divider--spacing-${this.spacing()}`,\n this.label() ? 'divider--with-label' : '',\n ]\n .filter(Boolean)\n .join(' ');\n });\n}\n","<div [class]=\"dividerClasses()\" role=\"separator\" [attr.aria-orientation]=\"orientation()\">\n @if (label() && orientation() === 'horizontal') {\n <span class=\"divider__label\">{{ label() }}</span>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n output,\n signal,\n computed,\n ElementRef,\n viewChild,\n OnInit,\n OnDestroy,\n} from '@angular/core';\nimport { IconComponent } from '../icon/icon.component';\nimport { Subject, debounceTime, distinctUntilChanged, takeUntil } from 'rxjs';\n\nexport type SearchInputSize = 'sm' | 'md' | 'lg';\n\n/**\n * Search input component with integrated search functionality.\n *\n * Features:\n * - Built-in search icon\n * - Clear button for resetting input\n * - RxJS-based configurable debounce\n * - Multiple size variants (sm, md, lg)\n * - Disabled state support\n * - Submit event on Enter key\n *\n * @example\n * ```html\n * <lc-search-input\n * placeholder=\"Search...\"\n * [debounceMs]=\"300\"\n * (searchChange)=\"onSearch($event)\"\n * ></lc-search-input>\n * ```\n */\n@Component({\n selector: 'lc-search-input',\n standalone: true,\n imports: [IconComponent],\n templateUrl: './search-input.component.html',\n styleUrls: ['./search-input.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SearchInputComponent implements OnInit, OnDestroy {\n /**\n * Placeholder text.\n * @default 'Search…'\n */\n placeholder = input<string>('Search…');\n\n /**\n * Size variant.\n * @default 'md'\n */\n size = input<SearchInputSize>('md');\n\n /**\n * Debounce delay in milliseconds. 0 means no debounce.\n * @default 300\n */\n debounceMs = input<number>(300);\n\n /**\n * Whether the search input is disabled.\n * @default false\n */\n disabled = input<boolean>(false);\n\n /**\n * Emitted when the search value changes (debounced).\n */\n readonly searchChange = output<string>();\n\n /**\n * Emitted when the user presses Enter.\n */\n readonly searchSubmit = output<string>();\n\n protected value = signal('');\n protected readonly inputRef = viewChild<ElementRef<HTMLInputElement>>('searchInputEl');\n\n protected wrapperClasses = computed(() => {\n return [\n 'search-input',\n `search-input--${this.size()}`,\n this.disabled() ? 'search-input--disabled' : '',\n ]\n .filter(Boolean)\n .join(' ');\n });\n\n private readonly input$ = new Subject<string>();\n private readonly destroy$ = new Subject<void>();\n\n ngOnInit(): void {\n this.input$\n .pipe(\n debounceTime(this.debounceMs()),\n distinctUntilChanged(),\n takeUntil(this.destroy$),\n )\n .subscribe((value) => this.searchChange.emit(value));\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n protected onInput(event: Event): void {\n const val = (event.target as HTMLInputElement).value;\n this.value.set(val);\n this.input$.next(val);\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n if (event.key === 'Enter') {\n this.searchSubmit.emit(this.value());\n }\n }\n\n protected clear(): void {\n this.value.set('');\n this.input$.next('');\n this.searchChange.emit('');\n this.inputRef()?.nativeElement.focus();\n }\n}\n","<div [class]=\"wrapperClasses()\">\n <lc-icon name=\"magnifying-glass\" class=\"search-input__icon\"></lc-icon>\n <input\n #searchInputEl\n type=\"search\"\n class=\"search-input__field\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [value]=\"value()\"\n (input)=\"onInput($event)\"\n (keydown)=\"onKeydown($event)\"\n autocomplete=\"off\"\n aria-label=\"Search\"\n />\n @if (value()) {\n <button\n type=\"button\"\n class=\"search-input__clear\"\n (click)=\"clear()\"\n aria-label=\"Clear search\"\n [disabled]=\"disabled()\"\n >\n <lc-icon name=\"x-mark\" class=\"search-input__clear-icon\"></lc-icon>\n </button>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n output,\n signal,\n computed,\n ElementRef,\n viewChild,\n} from '@angular/core';\nimport { IconComponent } from '../icon/icon.component';\n\nexport interface FileUploadFile {\n file: File;\n name: string;\n size: number;\n type: string;\n}\n\n/**\n * File upload / dropzone component with drag & drop support.\n *\n * @example\n * ```html\n * <lc-file-upload\n * accept=\".pdf,.png,.jpg\"\n * [multiple]=\"true\"\n * [maxSizeBytes]=\"5242880\"\n * (filesSelected)=\"onFiles($event)\"\n * ></lc-file-upload>\n * ```\n */\n@Component({\n selector: 'lc-file-upload',\n standalone: true,\n imports: [IconComponent],\n templateUrl: './file-upload.component.html',\n styleUrls: ['./file-upload.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n/**\n * File upload component with drag-and-drop support.\n *\n * Features:\n * - Drag-and-drop file dropzone with visual feedback\n * - Click-to-browse file selection\n * - File type and size validation\n * - Multi-file upload support\n * - File list display with removal\n * - Disabled state support\n *\n * @example\n * ```html\n * <lc-file-upload accept=\".pdf,.jpg\" [multiple]=\"true\" [maxSizeBytes]=\"5242880\" />\n * ```\n */\nexport class FileUploadComponent {\n /**\n * Accepted file types (e.g. \".pdf,.jpg,image/*\").\n */\n accept = input<string>('');\n\n /**\n * Allow multiple files.\n * @default false\n */\n multiple = input<boolean>(false);\n\n /**\n * Maximum file size in bytes. 0 for unlimited.\n * @default 0\n */\n maxSizeBytes = input<number>(0);\n\n /**\n * Whether the dropzone is disabled.\n * @default false\n */\n disabled = input<boolean>(false);\n\n /**\n * Hint text shown in the dropzone.\n * @default 'Drag & drop files here, or click to browse'\n */\n hint = input<string>('Drag & drop files here, or click to browse');\n\n /**\n * Emitted with selected files after validation.\n */\n readonly filesSelected = output<FileUploadFile[]>();\n\n /**\n * Emitted when a file is rejected (too large or wrong type).\n */\n readonly fileRejected = output<{ file: File; reason: string }>();\n\n protected isDragOver = signal(false);\n protected selectedFiles = signal<FileUploadFile[]>([]);\n protected readonly fileInputRef = viewChild<ElementRef<HTMLInputElement>>('fileInput');\n\n protected dropzoneClasses = computed(() => {\n return [\n 'file-upload',\n this.isDragOver() ? 'file-upload--drag-over' : '',\n this.disabled() ? 'file-upload--disabled' : '',\n ]\n .filter(Boolean)\n .join(' ');\n });\n\n protected onDragOver(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n if (!this.disabled()) {\n this.isDragOver.set(true);\n }\n }\n\n protected onDragLeave(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.isDragOver.set(false);\n }\n\n protected onDrop(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.isDragOver.set(false);\n if (this.disabled() || !event.dataTransfer?.files.length) return;\n this.processFiles(event.dataTransfer.files);\n }\n\n protected onFileChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n if (input.files?.length) {\n this.processFiles(input.files);\n }\n // Reset so the same file can be re-selected\n input.value = '';\n }\n\n protected openFilePicker(): void {\n if (!this.disabled()) {\n this.fileInputRef()?.nativeElement.click();\n }\n }\n\n protected removeFile(index: number): void {\n this.selectedFiles.update((files) => files.filter((_, i) => i !== index));\n this.filesSelected.emit(this.selectedFiles());\n }\n\n protected formatSize(bytes: number): string {\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n }\n\n private processFiles(fileList: FileList): void {\n const files = Array.from(fileList);\n const accepted: FileUploadFile[] = [];\n\n for (const file of files) {\n if (this.maxSizeBytes() > 0 && file.size > this.maxSizeBytes()) {\n this.fileRejected.emit({ file, reason: 'File too large' });\n continue;\n }\n accepted.push({\n file,\n name: file.name,\n size: file.size,\n type: file.type,\n });\n }\n\n if (this.multiple()) {\n this.selectedFiles.update((prev) => [...prev, ...accepted]);\n } else {\n this.selectedFiles.set(accepted.slice(0, 1));\n }\n\n this.filesSelected.emit(this.selectedFiles());\n }\n}\n","<div\n [class]=\"dropzoneClasses()\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n (drop)=\"onDrop($event)\"\n (click)=\"openFilePicker()\"\n role=\"button\"\n tabindex=\"0\"\n (keydown.enter)=\"openFilePicker()\"\n (keydown.space)=\"openFilePicker()\"\n [attr.aria-label]=\"hint()\"\n [attr.aria-disabled]=\"disabled()\"\n>\n <input\n #fileInput\n type=\"file\"\n class=\"file-upload__input\"\n [accept]=\"accept()\"\n [multiple]=\"multiple()\"\n [disabled]=\"disabled()\"\n (change)=\"onFileChange($event)\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n />\n <div class=\"file-upload__content\">\n <lc-icon name=\"cloud-arrow-up\" class=\"file-upload__icon\"></lc-icon>\n <p class=\"file-upload__hint\">{{ hint() }}</p>\n @if (accept()) {\n <p class=\"file-upload__accept\">Accepted: {{ accept() }}</p>\n }\n @if (maxSizeBytes() > 0) {\n <p class=\"file-upload__accept\">Max: {{ formatSize(maxSizeBytes()) }}</p>\n }\n </div>\n</div>\n\n@if (selectedFiles().length > 0) {\n <ul class=\"file-upload__list\">\n @for (f of selectedFiles(); track f.name; let i = $index) {\n <li class=\"file-upload__file\">\n <lc-icon name=\"document\" class=\"file-upload__file-icon\"></lc-icon>\n <span class=\"file-upload__file-name\">{{ f.name }}</span>\n <span class=\"file-upload__file-size\">{{ formatSize(f.size) }}</span>\n <button\n type=\"button\"\n class=\"file-upload__file-remove\"\n (click)=\"removeFile(i); $event.stopPropagation()\"\n aria-label=\"Remove file\"\n >\n <lc-icon name=\"x-mark\"></lc-icon>\n </button>\n </li>\n }\n </ul>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n output,\n signal,\n computed,\n ElementRef,\n HostListener,\n inject,\n OnDestroy,\n} from '@angular/core';\n\nexport type PopoverPosition = 'top' | 'bottom' | 'left' | 'right';\nexport type PopoverTrigger = 'click' | 'hover';\n\n/**\n * Popover component for displaying rich floating content.\n *\n * Features:\n * - Position options (top, bottom, left, right)\n * - Click or hover trigger modes\n * - Optional arrow indicator\n * - Click-outside to close\n * - Open state change event\n * - Content projection for trigger and body\n *\n * @example\n * ```html\n * <lc-popover position=\"bottom\" trigger=\"click\">\n * <button popover-trigger>Open</button>\n * <div popover-content>Rich content here</div>\n * </lc-popover>\n * ```\n */\n@Component({\n selector: 'lc-popover',\n standalone: true,\n templateUrl: './popover.component.html',\n styleUrls: ['./popover.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PopoverComponent implements OnDestroy {\n /**\n * Position relative to the trigger element.\n * @default 'bottom'\n */\n position = input<PopoverPosition>('bottom');\n\n /**\n * How the popover is triggered.\n * @default 'click'\n */\n trigger = input<PopoverTrigger>('click');\n\n /**\n * Whether to show an arrow pointing at the trigger.\n * @default true\n */\n showArrow = input<boolean>(true);\n\n /**\n * Emitted when the popover opens or closes.\n */\n readonly openChange = output<boolean>();\n\n protected isOpen = signal(false);\n\n protected panelClasses = computed(() => {\n return [\n 'popover__panel',\n `popover__panel--${this.position()}`,\n this.showArrow() ? 'popover__panel--arrow' : '',\n ]\n .filter(Boolean)\n .join(' ');\n });\n\n private readonly elementRef = inject(ElementRef);\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n if (this.isOpen() && this.trigger() === 'click') {\n const el = this.elementRef.nativeElement as HTMLElement;\n if (!el.contains(event.target as Node)) {\n this.close();\n }\n }\n }\n\n @HostListener('document:keydown.escape')\n onEscape(): void {\n if (this.isOpen()) {\n this.close();\n }\n }\n\n ngOnDestroy(): void {\n // Cleanup handled by Angular\n }\n\n protected toggle(): void {\n this.isOpen() ? this.close() : this.open();\n }\n\n protected open(): void {\n this.isOpen.set(true);\n this.openChange.emit(true);\n }\n\n protected close(): void {\n this.isOpen.set(false);\n this.openChange.emit(false);\n }\n\n protected onMouseEnter(): void {\n if (this.trigger() === 'hover') {\n this.open();\n }\n }\n\n protected onMouseLeave(): void {\n if (this.trigger() === 'hover') {\n this.close();\n }\n }\n}\n","<div\n class=\"popover\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n>\n <div class=\"popover__trigger\" (click)=\"trigger() === 'click' ? toggle() : null\">\n <ng-content select=\"[popover-trigger]\"></ng-content>\n </div>\n @if (isOpen()) {\n <div [class]=\"panelClasses()\" role=\"dialog\" aria-modal=\"false\">\n <ng-content select=\"[popover-content]\"></ng-content>\n </div>\n }\n</div>\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})\n/**\n * Container component for responsive max-width content layout.\n *\n * Features:\n * - Max-width presets (sm, md, lg, xl, full)\n * - Optional horizontal padding removal\n * - Optional vertical padding\n * - Centered content alignment\n *\n * @example\n * ```html\n * <lc-container size=\"lg\">Content here</lc-container>\n * ```\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})\n/**\n * Section component for page content grouping with spacing and background.\n *\n * Features:\n * - Configurable vertical spacing (none, sm, md, lg, xl)\n * - Background color options (none, subtle, muted)\n * - Independent horizontal and vertical padding control\n * - Content projection via ng-content\n *\n * @example\n * ```html\n * <lc-section spacing=\"lg\" background=\"subtle\">Content</lc-section>\n * ```\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})\n/**\n * Spacer component for adding vertical or flexible spacing.\n *\n * Features:\n * - Fixed spacing sizes (xs, sm, md, lg, xl, 2xl)\n * - Auto (flex-grow) mode for filling available space\n * - Host class binding for layout integration\n *\n * @example\n * ```html\n * <lc-spacer size=\"lg\" />\n * ```\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})\n/**\n * Stack component for flexbox-based layout composition.\n *\n * Features:\n * - Vertical and horizontal direction\n * - Configurable gap spacing (none, xs, sm, md, lg, xl)\n * - Alignment and justification options\n * - Optional wrapping and full-width modes\n * - Content projection via ng-content\n *\n * @example\n * ```html\n * <lc-stack direction=\"horizontal\" gap=\"md\" align=\"center\">content</lc-stack>\n * ```\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 and application error messages.\n *\n * Features:\n * - Automatic Cognito error code mapping to user-friendly messages\n * - Severity levels (error, warning, info)\n * - Custom error message override\n * - Dismissible with close button\n * - Accepts Error objects or custom error shapes\n *\n * @example\n * ```html\n * <lc-error-display [error]=\"cognitoError\" [dismissible]=\"true\" />\n * <lc-error-display message=\"Invalid credentials\" severity=\"error\" />\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 notification messages.\n *\n * Features:\n * - Semantic variants (success, warning, error, info)\n * - Auto-dismiss with configurable duration\n * - Manual dismiss with close button\n * - Icon display per variant\n * - Stacked toast positioning via ToastService\n * - Animated enter/exit transitions\n *\n * @example\n * ```typescript\n * this.toastService.show({ message: 'Saved!', variant: 'success' });\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 *\n * Features:\n * - Size presets (sm, md, lg, xl, full)\n * - Focus trap for keyboard accessibility\n * - Backdrop click and Escape key to close\n * - Two-way open binding\n * - Header, body, and footer content slots\n * - Optional close button\n * - Accessible with ARIA dialog role\n *\n * @example\n * ```html\n * <lc-modal [(open)]=\"isOpen\" size=\"md\" [closeOnBackdropClick]=\"true\">\n * <div slot=\"header\"><h2>Title</h2></div>\n * <div slot=\"body\">Content</div>\n * <div slot=\"footer\"><lc-button (click)=\"close()\">Close</lc-button></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})\n/**\n * Breadcrumbs component for hierarchical navigation.\n *\n * Features:\n * - Configurable separator character\n * - Ellipsis collapse for long paths with maxItems\n * - Multiple size variants (sm, md, lg)\n * - Router link support for navigation items\n * - Accessible with ARIA breadcrumb landmark\n *\n * @example\n * ```html\n * <lc-breadcrumbs [items]=\"[{label: 'Home', url: '/'}, {label: 'Settings'}]\" />\n * ```\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 for circular user representation.\n *\n * Features:\n * - Image display with fallback to initials\n * - Auto-generated initials from user name\n * - Status indicator (online, offline, busy, away)\n * - Multiple size variants (xs, sm, md, lg, xl)\n * - Accessible with alt text support\n *\n * @example\n * ```html\n * <lc-avatar src=\"https://example.com/avatar.jpg\" alt=\"John Doe\" />\n * <lc-avatar name=\"John Doe\" 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 for application navigation sidebar.\n *\n * Features:\n * - Drawer (overlay) and docked (persistent) modes\n * - Hierarchical navigation with collapsible groups\n * - Section headlines for item grouping\n * - Active route highlighting\n * - Keyboard navigation support\n * - Configurable width and position (left/right)\n * - Optional backdrop overlay\n * - Accessible with ARIA navigation role\n *\n * @example\n * ```html\n * <lc-sidenav [isOpen]=\"isOpen\" mode=\"docked\" [items]=\"navItems\"\n * (closed)=\"isOpen = false\" (itemClicked)=\"navigate($event)\" />\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 * Features:\n * - Dynamic tab registration via content projection\n * - Active tab tracking with two-way binding\n * - Accessible with ARIA tablist/tab/tabpanel roles\n * - Keyboard navigation between tabs\n * - Lazy content rendering per tab\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 for displaying status, notifications, or counts.\n *\n * Features:\n * - Semantic color variants (primary, secondary, success, warning, error, info, neutral)\n * - Multiple size options (xs, sm, md, lg)\n * - Pill-shaped rounded mode\n * - Content projection for labels or count values\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 {\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 * Toggle group component for single-option selection from a set.\n *\n * Features:\n * - Multiple segmented toggle buttons\n * - Active state highlighting\n * - Size variants (sm, md, lg)\n * - Two-way selected value binding\n * - Per-option disabled state\n * - Dark mode support via CSS custom properties\n *\n * @example\n * ```html\n * <lc-toggle-group\n * [options]=\"[{value:'1D',label:'1D'},{value:'1W',label:'1W'}]\"\n * [(selected)]=\"interval\"\n * />\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 for displaying structured item collections.\n *\n * Features:\n * - Vertical and horizontal layout orientations\n * - Variant styles (default, bordered, card)\n * - Optional dividers between items\n * - Icon and avatar support per item\n * - Action buttons with click events\n * - Accessible with ARIA list role\n *\n * @example\n * ```html\n * <lc-list\n * [items]=\"listItems\"\n * orientation=\"vertical\"\n * [showDividers]=\"true\"\n * (itemClick)=\"handleItemClick($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 for displaying tags, filters, or selections.\n *\n * Features:\n * - Color variants (primary, secondary, success, warning, error, info, neutral)\n * - Multiple size options (sm, md, lg)\n * - Optional leading icon\n * - Removable with close button and remove event\n * - Disabled state support\n *\n * @example\n * ```html\n * <lc-chip variant=\"primary\" [removable]=\"true\" (remove)=\"onRemove()\">\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 filterable?: boolean;\n editable?: 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 /** Input type for inline editing (default: text) */\n editType?: 'text' | 'number' | 'select';\n /** Options for select edit type */\n editOptions?: string[];\n}\n\nexport interface SortEvent {\n column: string;\n direction: 'asc' | 'desc';\n}\n\nexport interface CellEditEvent {\n row: Record<string, unknown>;\n column: string;\n oldValue: unknown;\n newValue: unknown;\n rowIndex: number;\n}\n\nexport interface SelectionChangeEvent {\n selected: Record<string, unknown>[];\n allSelected: boolean;\n}\n\nexport type TableVariant = 'default' | 'striped' | 'bordered';\nexport type TableSize = 'sm' | 'md' | 'lg';\n\n/**\n * Table component for displaying structured data in rows and columns.\n *\n * Features:\n * - Column-based sorting with sort direction indicators\n * - Variant styles (default, striped, bordered)\n * - Size presets (sm, md, lg)\n * - Hoverable row highlighting\n * - Custom cell templates via content projection\n * - Responsive horizontal scrolling\n * - Empty state text for no data\n * - Accessible with proper table semantics\n *\n * @example\n * ```html\n * <lc-table [columns]=\"columns\" [data]=\"data\" variant=\"striped\" [hoverable]=\"true\"\n * (sort)=\"onSort($event)\" (rowClick)=\"onRowClick($event)\" />\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 // -- Pagination --\n /** Enable pagination */\n paginate = input<boolean>(false);\n\n /** Rows per page */\n pageSize = input<number>(10);\n\n /** Available page size options */\n pageSizeOptions = input<number[]>([5, 10, 25, 50]);\n\n // -- Selection --\n /** Enable row selection checkboxes */\n selectable = input<boolean>(false);\n\n // -- Column Filters --\n /** Enable per-column text filters */\n filterable = input<boolean>(false);\n\n // -- Inline Editing --\n /** Enable inline cell editing on double-click */\n editable = input<boolean>(false);\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 /** Emitted when a cell is edited */\n readonly cellEdit = output<CellEditEvent>();\n\n /** Emitted when row selection changes */\n readonly selectionChange = output<SelectionChangeEvent>();\n\n // -- Internal state --\n protected currentSort = signal<{ column: string; direction: 'asc' | 'desc' } | null>(null);\n protected currentPage = signal(0);\n protected internalPageSize = signal(10);\n protected selectedRows = signal<Set<number>>(new Set());\n protected columnFilters = signal<Record<string, string>>({});\n protected editingCell = signal<{ rowIndex: number; column: string } | null>(null);\n protected editValue = signal<string>('');\n\n /**\n * Filtered data (applies column filters)\n */\n protected readonly filteredData = computed(() => {\n let items = this.data();\n const filters = this.columnFilters();\n\n if (this.filterable()) {\n for (const [key, value] of Object.entries(filters)) {\n if (value.trim()) {\n items = items.filter(row =>\n String(row[key] ?? '').toLowerCase().includes(value.toLowerCase())\n );\n }\n }\n }\n\n return items;\n });\n\n /**\n * Sorted data\n */\n protected readonly sortedData = computed(() => {\n const items = [...this.filteredData()];\n const sortState = this.currentSort();\n if (!sortState) return items;\n\n return items.sort((a, b) => {\n const aVal = a[sortState.column];\n const bVal = b[sortState.column];\n let cmp = 0;\n if (aVal == null && bVal == null) cmp = 0;\n else if (aVal == null) cmp = -1;\n else if (bVal == null) cmp = 1;\n else if (typeof aVal === 'number' && typeof bVal === 'number') cmp = aVal - bVal;\n else cmp = String(aVal).localeCompare(String(bVal));\n return sortState.direction === 'asc' ? cmp : -cmp;\n });\n });\n\n /**\n * Paginated data (or all if pagination disabled)\n */\n protected readonly displayData = computed(() => {\n const items = this.sortedData();\n if (!this.paginate()) return items;\n const ps = this.internalPageSize();\n const start = this.currentPage() * ps;\n return items.slice(start, start + ps);\n });\n\n /** Total pages */\n protected readonly totalPages = computed(() => {\n if (!this.paginate()) return 1;\n return Math.max(1, Math.ceil(this.filteredData().length / this.internalPageSize()));\n });\n\n /** Total filtered row count */\n protected readonly totalRows = computed(() => this.filteredData().length);\n\n /** Whether all visible rows are selected */\n protected readonly allSelected = computed(() => {\n const data = this.displayData();\n if (data.length === 0) return false;\n const selected = this.selectedRows();\n return data.every((_, i) => selected.has(this.getAbsoluteIndex(i)));\n });\n\n /**\n * Computed CSS classes for the table element\n */\n tableClasses = computed(() => {\n const classes = ['lc-table'];\n classes.push(`lc-table--${this.variant()}`);\n classes.push(`lc-table--${this.size()}`);\n if (this.hoverable()) classes.push('lc-table--hoverable');\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 if (this.responsive()) classes.push('lc-table-wrapper--responsive');\n return classes.join(' ');\n });\n\n // -- Sort --\n handleSort(columnKey: string): void {\n const column = this.columns().find((col) => col.key === columnKey);\n if (!column || !column.sortable) return;\n\n const current = this.currentSort();\n let direction: 'asc' | 'desc' = 'asc';\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 getSortState(columnKey: string): 'asc' | 'desc' | null {\n const current = this.currentSort();\n if (current && current.column === columnKey) return current.direction;\n return null;\n }\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 getHeaderClasses(column: TableColumn): string {\n const classes: string[] = [];\n if (column.sortable) classes.push('sortable');\n const sortState = this.getSortState(column.key);\n if (sortState) classes.push(`sorted-${sortState}`);\n return classes.join(' ');\n }\n\n getCellValue(row: Record<string, unknown>, columnKey: string): unknown {\n return row[columnKey];\n }\n\n getCellTemplate(columnKey: string): TableCellDirective | undefined {\n return this.cellTemplates?.find((template) => template.columnKey === columnKey);\n }\n\n hasCustomTemplate(columnKey: string): boolean {\n return !!this.getCellTemplate(columnKey);\n }\n\n onRowClick(row: Record<string, unknown>): void {\n this.rowClick.emit(row);\n }\n\n // -- Pagination --\n protected goToPage(page: number): void {\n if (page >= 0 && page < this.totalPages()) {\n this.currentPage.set(page);\n }\n }\n\n protected onPageSizeChange(event: Event): void {\n const newSize = Number((event.target as HTMLSelectElement).value);\n this.internalPageSize.set(newSize);\n this.currentPage.set(0);\n }\n\n protected get paginationStart(): number {\n return this.currentPage() * this.internalPageSize() + 1;\n }\n\n protected get paginationEnd(): number {\n return Math.min((this.currentPage() + 1) * this.internalPageSize(), this.totalRows());\n }\n\n // -- Selection --\n protected toggleSelectAll(): void {\n const selected = new Set(this.selectedRows());\n const data = this.displayData();\n const allSelected = this.allSelected();\n\n data.forEach((_, i) => {\n const absIdx = this.getAbsoluteIndex(i);\n if (allSelected) selected.delete(absIdx);\n else selected.add(absIdx);\n });\n\n this.selectedRows.set(selected);\n this.emitSelectionChange();\n }\n\n protected toggleRowSelect(relativeIndex: number): void {\n const absIdx = this.getAbsoluteIndex(relativeIndex);\n const selected = new Set(this.selectedRows());\n if (selected.has(absIdx)) selected.delete(absIdx);\n else selected.add(absIdx);\n this.selectedRows.set(selected);\n this.emitSelectionChange();\n }\n\n protected isRowSelected(relativeIndex: number): boolean {\n return this.selectedRows().has(this.getAbsoluteIndex(relativeIndex));\n }\n\n private getAbsoluteIndex(relativeIndex: number): number {\n if (!this.paginate()) return relativeIndex;\n return this.currentPage() * this.internalPageSize() + relativeIndex;\n }\n\n private emitSelectionChange(): void {\n const data = this.data();\n const selected = Array.from(this.selectedRows()).map(i => data[i]).filter(Boolean);\n this.selectionChange.emit({ selected, allSelected: this.allSelected() });\n }\n\n // -- Column Filters --\n protected onFilterChange(columnKey: string, event: Event): void {\n const value = (event.target as HTMLInputElement).value;\n const filters = { ...this.columnFilters(), [columnKey]: value };\n this.columnFilters.set(filters);\n this.currentPage.set(0);\n }\n\n protected getFilterValue(columnKey: string): string {\n return this.columnFilters()[columnKey] || '';\n }\n\n // -- Inline Editing --\n protected startEdit(rowIndex: number, column: string, currentValue: unknown): void {\n if (!this.editable()) return;\n const col = this.columns().find(c => c.key === column);\n if (col && col.editable === false) return;\n this.editingCell.set({ rowIndex, column });\n this.editValue.set(String(currentValue ?? ''));\n }\n\n protected isEditing(rowIndex: number, column: string): boolean {\n const cell = this.editingCell();\n return cell !== null && cell.rowIndex === rowIndex && cell.column === column;\n }\n\n protected commitEdit(rowIndex: number, column: string): void {\n const absIdx = this.getAbsoluteIndex(rowIndex);\n const row = this.data()[absIdx];\n if (!row) return;\n const oldValue = row[column];\n const newValue = this.editValue();\n this.editingCell.set(null);\n if (String(oldValue ?? '') !== newValue) {\n this.cellEdit.emit({ row, column, oldValue, newValue, rowIndex: absIdx });\n }\n }\n\n protected cancelEdit(): void {\n this.editingCell.set(null);\n }\n\n protected onEditKeydown(event: KeyboardEvent, rowIndex: number, column: string): void {\n if (event.key === 'Enter') {\n this.commitEdit(rowIndex, column);\n } else if (event.key === 'Escape') {\n this.cancelEdit();\n }\n }\n}\n","<div [class]=\"wrapperClasses()\">\n <table [class]=\"tableClasses()\" role=\"table\">\n <thead>\n <!-- Filter row -->\n @if (filterable()) {\n <tr class=\"lc-table__filter-row\">\n @if (selectable()) {\n <th class=\"lc-table__select-cell\"></th>\n }\n @for (column of columns(); track column.key) {\n <th>\n @if (column.filterable !== false) {\n <input\n type=\"text\"\n class=\"lc-table__filter-input\"\n [placeholder]=\"'Filter ' + column.label\"\n [value]=\"getFilterValue(column.key)\"\n (input)=\"onFilterChange(column.key, $event)\"\n [attr.aria-label]=\"'Filter by ' + column.label\"\n />\n }\n </th>\n }\n </tr>\n }\n <!-- Header row -->\n <tr>\n @if (selectable()) {\n <th class=\"lc-table__select-cell\" scope=\"col\">\n <input\n type=\"checkbox\"\n class=\"lc-table__checkbox\"\n [checked]=\"allSelected()\"\n (change)=\"toggleSelectAll()\"\n aria-label=\"Select all rows\"\n />\n </th>\n }\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 (displayData().length === 0) {\n <tr>\n <td [attr.colspan]=\"columns().length + (selectable() ? 1 : 0)\" class=\"lc-table__empty\">\n {{ emptyText() }}\n </td>\n </tr>\n } @else {\n @for (row of displayData(); track $index) {\n <tr\n [class.lc-table__row--selected]=\"selectable() && isRowSelected($index)\"\n (click)=\"onRowClick(row)\"\n >\n @if (selectable()) {\n <td class=\"lc-table__select-cell\">\n <input\n type=\"checkbox\"\n class=\"lc-table__checkbox\"\n [checked]=\"isRowSelected($index)\"\n (change)=\"toggleRowSelect($index)\"\n (click)=\"$event.stopPropagation()\"\n [attr.aria-label]=\"'Select row ' + ($index + 1)\"\n />\n </td>\n }\n @for (column of columns(); track column.key) {\n <td\n [class]=\"column.cssClass || ''\"\n (dblclick)=\"editable() ? startEdit($index, column.key, getCellValue(row, column.key)) : null\"\n >\n @if (isEditing($index, column.key)) {\n <input\n type=\"text\"\n class=\"lc-table__edit-input\"\n [value]=\"editValue()\"\n (input)=\"editValue.set($any($event.target).value)\"\n (blur)=\"commitEdit($index, column.key)\"\n (keydown)=\"onEditKeydown($event, $index, column.key)\"\n autofocus\n />\n } @else 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\n<!-- Pagination -->\n@if (paginate()) {\n <div class=\"lc-table-pagination\">\n <div class=\"lc-table-pagination__info\">\n {{ paginationStart }}–{{ paginationEnd }} of {{ totalRows() }}\n </div>\n <div class=\"lc-table-pagination__controls\">\n <select\n class=\"lc-table-pagination__size\"\n [value]=\"internalPageSize()\"\n (change)=\"onPageSizeChange($event)\"\n aria-label=\"Rows per page\"\n >\n @for (opt of pageSizeOptions(); track opt) {\n <option [value]=\"opt\">{{ opt }} / page</option>\n }\n </select>\n <button\n type=\"button\"\n class=\"lc-table-pagination__btn\"\n [disabled]=\"currentPage() === 0\"\n (click)=\"goToPage(currentPage() - 1)\"\n aria-label=\"Previous page\"\n >‹</button>\n <span class=\"lc-table-pagination__page\">\n {{ currentPage() + 1 }} / {{ totalPages() }}\n </span>\n <button\n type=\"button\"\n class=\"lc-table-pagination__btn\"\n [disabled]=\"currentPage() >= totalPages() - 1\"\n (click)=\"goToPage(currentPage() + 1)\"\n aria-label=\"Next page\"\n >›</button>\n </div>\n </div>\n}\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.\n *\n * Features:\n * - Consistent label-value layout for read-only data\n * - Optional leading icon from Heroicons\n * - Compact mode for dense layouts\n * - Content projection for custom value rendering\n * - Configurable icon size (xs, sm, md)\n *\n * @example\n * ```html\n * <lc-field-group label=\"Email\" value=\"user@example.com\" />\n * <lc-field-group label=\"Language\" value=\"English\" icon=\"globe-alt\" />\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 for multi-step wizard workflows.\n *\n * Features:\n * - Horizontal and vertical orientations\n * - Active, completed, and pending step states\n * - Numbered step indicators with checkmark on completion\n * - Optional step descriptions and \"optional\" labels\n * - Linear mode restricting navigation to sequential steps\n * - Two-way active step binding\n * - Content projection for step body\n *\n * @example\n * ```html\n * <lc-stepper [steps]=\"steps\" [(activeStep)]=\"currentStep\">\n * <div>Step content here</div>\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 * Filter bar component for composable data filtering.\n *\n * Features:\n * - Select dropdowns, toggle groups, and search inputs\n * - Declarative filter configuration via FilterConfig array\n * - Two-way filter values binding\n * - Responsive horizontal flex layout\n * - Size variants (sm, md)\n * - Dark mode support\n *\n * @example\n * ```html\n * <lc-filter-bar\n * [filters]=\"filterConfig\"\n * [values]=\"currentFilters\"\n * (valuesChange)=\"onFilterChange($event)\"\n * />\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 state indication.\n *\n * Features:\n * - Animated spinning indicator\n * - Size variants (sm, md, lg)\n * - Optional message text below spinner\n * - Design system color token integration\n * - Accessible with ARIA status role\n *\n * @example\n * ```html\n * <lc-spinner />\n * <lc-spinner size=\"lg\" message=\"Loading data...\" />\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 * Features:\n * - Variant shapes (text, rect, circle)\n * - Shimmer animation effect\n * - Custom width, height, and border radius\n * - Composable for building complex loading layouts\n * - Dark mode compatible\n *\n * @example\n * ```html\n * <lc-skeleton />\n * <lc-skeleton variant=\"circle\" width=\"40px\" height=\"40px\" />\n * <lc-skeleton variant=\"rect\" width=\"100%\" height=\"400px\" />\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\" placeholder displays.\n *\n * Features:\n * - Compact (sm) and page-level (md, lg) size modes\n * - Optional icon from Heroicons library\n * - Heading and description text\n * - Action slot for projected CTA buttons\n * - Centered layout with visual hierarchy\n *\n * @example\n * ```html\n * <lc-empty-state\n * icon=\"chart-bar\"\n * heading=\"No Data\"\n * message=\"No items found.\">\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 for slide-out overlay panels.\n *\n * Features:\n * - Slide-in from left, right, top, or bottom\n * - Size presets (sm, md, lg, xl, full)\n * - Optional backdrop overlay with click-to-close\n * - Close on Escape key support\n * - Heading text display\n * - Content projection for arbitrary body content\n * - Accessible with ARIA dialog role\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","import {\n ChangeDetectionStrategy,\n Component,\n input,\n computed,\n} from '@angular/core';\nimport { IconComponent } from '../icon/icon.component';\n\nexport interface TimelineItem {\n /** Title of the event */\n title: string;\n /** Optional description */\n description?: string;\n /** Optional timestamp string */\n timestamp?: string;\n /** Optional icon name (heroicon) */\n icon?: string;\n /** Optional color for the dot/icon */\n color?: 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'info' | 'neutral';\n}\n\nexport type TimelineOrientation = 'vertical' | 'horizontal';\n\n/**\n * Timeline component for chronological event display.\n *\n * Features:\n * - Vertical timeline with connecting line\n * - Semantic status colors per event (info, success, warning, error)\n * - Date and description display per item\n * - Icon support for timeline markers\n * - Dark mode support\n *\n * @example\n * ```html\n * <lc-timeline [items]=\"events\"></lc-timeline>\n * ```\n */\n@Component({\n selector: 'lc-timeline',\n standalone: true,\n imports: [IconComponent],\n templateUrl: './timeline.component.html',\n styleUrls: ['./timeline.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TimelineComponent {\n /**\n * List of timeline events.\n */\n items = input.required<TimelineItem[]>();\n\n /**\n * Layout orientation.\n * @default 'vertical'\n */\n orientation = input<TimelineOrientation>('vertical');\n\n /**\n * Compact mode reduces spacing.\n * @default false\n */\n compact = input<boolean>(false);\n\n protected timelineClasses = computed(() => {\n return [\n 'timeline',\n `timeline--${this.orientation()}`,\n this.compact() ? 'timeline--compact' : '',\n ]\n .filter(Boolean)\n .join(' ');\n });\n}\n","<div [class]=\"timelineClasses()\">\n @for (item of items(); track item.title; let last = $last) {\n <div class=\"timeline__item\" [class.timeline__item--last]=\"last\">\n <div class=\"timeline__marker\" [class]=\"'timeline__marker--' + (item.color || 'primary')\">\n @if (item.icon) {\n <lc-icon [name]=\"item.icon\" class=\"timeline__icon\"></lc-icon>\n } @else {\n <span class=\"timeline__dot\"></span>\n }\n </div>\n @if (!last) {\n <div class=\"timeline__connector\"></div>\n }\n <div class=\"timeline__content\">\n <p class=\"timeline__title\">{{ item.title }}</p>\n @if (item.description) {\n <p class=\"timeline__description\">{{ item.description }}</p>\n }\n @if (item.timestamp) {\n <time class=\"timeline__timestamp\">{{ item.timestamp }}</time>\n }\n </div>\n </div>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n computed,\n} from '@angular/core';\nimport { AvatarComponent, AvatarSize } from '../avatar/avatar.component';\n\nexport interface AvatarGroupItem {\n /** Image source URL */\n src?: string;\n /** Alt text */\n alt?: string;\n /** Full name for initials fallback */\n name?: string;\n}\n\n@Component({\n selector: 'lc-avatar-group',\n standalone: true,\n imports: [AvatarComponent],\n templateUrl: './avatar-group.component.html',\n styleUrls: ['./avatar-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n/**\n * Avatar group component for displaying multiple user avatars.\n *\n * Features:\n * - Overlapping avatar display with configurable max visible count\n * - Overflow indicator showing remaining count\n * - Shared size variant across all avatars (xs, sm, md, lg)\n * - Automatic truncation based on max property\n *\n * @example\n * ```html\n * <lc-avatar-group [avatars]=\"users\" [max]=\"5\" size=\"md\" />\n * ```\n */\nexport class AvatarGroupComponent {\n /** List of avatars to show */\n avatars = input.required<AvatarGroupItem[]>();\n\n /** Avatar size */\n size = input<AvatarSize>('md');\n\n /** Maximum visible avatars before showing overflow count */\n max = input<number>(5);\n\n protected visibleAvatars = computed(() => {\n const all = this.avatars();\n const limit = this.max();\n return all.slice(0, limit);\n });\n\n protected overflowCount = computed(() => {\n const all = this.avatars();\n const limit = this.max();\n return Math.max(0, all.length - limit);\n });\n\n protected groupClasses = computed(() => {\n return ['avatar-group', `avatar-group--${this.size()}`].join(' ');\n });\n}\n","<div [class]=\"groupClasses()\">\n @for (avatar of visibleAvatars(); track avatar.name ?? $index) {\n <lc-avatar\n class=\"avatar-group__item\"\n [src]=\"avatar.src\"\n [alt]=\"avatar.alt\"\n [name]=\"avatar.name\"\n [size]=\"size()\"\n />\n }\n @if (overflowCount() > 0) {\n <span class=\"avatar-group__overflow avatar-group__overflow--{{ size() }}\">\n +{{ overflowCount() }}\n </span>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n output,\n computed,\n signal,\n forwardRef,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'lc-slider',\n standalone: true,\n templateUrl: './slider.component.html',\n styleUrls: ['./slider.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SliderComponent),\n multi: true,\n },\n ],\n})\n/**\n * Slider component for selecting a numeric value within a range.\n *\n * Features:\n * - Configurable min, max, and step values\n * - Visual fill track indicating current position\n * - Optional value label display\n * - Disabled state support\n * - ControlValueAccessor integration for reactive forms\n *\n * @example\n * ```html\n * <lc-slider label=\"Volume\" [min]=\"0\" [max]=\"100\" [showValue]=\"true\" />\n * ```\n */\nexport class SliderComponent implements ControlValueAccessor {\n /** Minimum value */\n min = input<number>(0);\n\n /** Maximum value */\n max = input<number>(100);\n\n /** Step increment */\n step = input<number>(1);\n\n /** Label text */\n label = input<string>();\n\n /** Whether to show the current value */\n showValue = input<boolean>(true);\n\n /** Disabled state */\n disabled = input<boolean>(false);\n\n /** Emits the current value on change */\n valueChange = output<number>();\n\n /** Internal value */\n protected value = signal(0);\n\n /** Internal disabled state — merged from input + CVA */\n protected isDisabled = signal(false);\n\n /** Percentage for fill track */\n protected fillPercentage = computed(() => {\n const minV = this.min();\n const maxV = this.max();\n if (maxV === minV) return 0;\n return ((this.value() - minV) / (maxV - minV)) * 100;\n });\n\n protected sliderClasses = computed(() => {\n const classes = ['slider'];\n if (this.disabled() || this.isDisabled()) classes.push('slider--disabled');\n return classes.join(' ');\n });\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChange: (val: number) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouched: () => void = () => {};\n\n onInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n const val = Number(target.value);\n this.value.set(val);\n this.valueChange.emit(val);\n this.onChange(val);\n }\n\n onBlur(): void {\n this.onTouched();\n }\n\n // ControlValueAccessor\n writeValue(val: number): void {\n this.value.set(val ?? 0);\n }\n\n registerOnChange(fn: (val: number) => 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.isDisabled.set(isDisabled);\n }\n}\n","<div [class]=\"sliderClasses()\">\n @if (label()) {\n <label class=\"slider__label\" [for]=\"'lc-slider'\">\n {{ label() }}\n @if (showValue()) {\n <span class=\"slider__value\">{{ value() }}</span>\n }\n </label>\n }\n <div class=\"slider__track-wrapper\">\n <input\n id=\"lc-slider\"\n type=\"range\"\n class=\"slider__input\"\n [min]=\"min()\"\n [max]=\"max()\"\n [step]=\"step()\"\n [value]=\"value()\"\n [disabled]=\"disabled() || isDisabled()\"\n [style.--fill-percent]=\"fillPercentage() + '%'\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n />\n </div>\n @if (!label() && showValue()) {\n <span class=\"slider__value slider__value--standalone\">{{ value() }}</span>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n output,\n computed,\n signal,\n forwardRef,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { IconComponent } from '../icon/icon.component';\n\n@Component({\n selector: 'lc-number-input',\n standalone: true,\n imports: [IconComponent],\n templateUrl: './number-input.component.html',\n styleUrls: ['./number-input.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NumberInputComponent),\n multi: true,\n },\n ],\n})\n/**\n * Number input component with increment/decrement controls.\n *\n * Features:\n * - Increment and decrement buttons\n * - Configurable min, max, and step values\n * - Value clamping within bounds\n * - Disabled state support\n * - ControlValueAccessor integration for reactive forms\n *\n * @example\n * ```html\n * <lc-number-input label=\"Quantity\" [min]=\"0\" [max]=\"100\" [step]=\"1\" />\n * ```\n */\nexport class NumberInputComponent implements ControlValueAccessor {\n /** Minimum value */\n min = input<number | undefined>(undefined);\n\n /** Maximum value */\n max = input<number | undefined>(undefined);\n\n /** Step increment */\n step = input<number>(1);\n\n /** Label text */\n label = input<string>();\n\n /** Placeholder */\n placeholder = input<string>('0');\n\n /** Disabled state */\n disabled = input<boolean>(false);\n\n /** Emits value on change */\n valueChange = output<number>();\n\n protected value = signal<number | null>(null);\n protected isDisabled = signal(false);\n\n protected containerClasses = computed(() => {\n const classes = ['number-input'];\n if (this.disabled() || this.isDisabled()) classes.push('number-input--disabled');\n return classes.join(' ');\n });\n\n protected canDecrement = computed(() => {\n const val = this.value();\n const minV = this.min();\n if (val === null) return true;\n if (minV === undefined) return true;\n return val - this.step() >= minV;\n });\n\n protected canIncrement = computed(() => {\n const val = this.value();\n const maxV = this.max();\n if (val === null) return true;\n if (maxV === undefined) return true;\n return val + this.step() <= maxV;\n });\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChange: (val: number | null) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouched: () => void = () => {};\n\n decrement(): void {\n const cur = this.value() ?? 0;\n const next = cur - this.step();\n const minV = this.min();\n const clamped = minV !== undefined ? Math.max(minV, next) : next;\n this.setValue(clamped);\n }\n\n increment(): void {\n const cur = this.value() ?? 0;\n const next = cur + this.step();\n const maxV = this.max();\n const clamped = maxV !== undefined ? Math.min(maxV, next) : next;\n this.setValue(clamped);\n }\n\n onInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n const raw = target.value;\n if (raw === '' || raw === '-') {\n this.value.set(null);\n this.onChange(null);\n return;\n }\n const parsed = Number(raw);\n if (!isNaN(parsed)) {\n this.setValue(parsed);\n }\n }\n\n onBlur(): void {\n this.onTouched();\n // Clamp on blur\n const val = this.value();\n if (val === null) return;\n const minV = this.min();\n const maxV = this.max();\n let clamped = val;\n if (minV !== undefined) clamped = Math.max(minV, clamped);\n if (maxV !== undefined) clamped = Math.min(maxV, clamped);\n if (clamped !== val) {\n this.setValue(clamped);\n }\n }\n\n private setValue(val: number): void {\n this.value.set(val);\n this.valueChange.emit(val);\n this.onChange(val);\n }\n\n // ControlValueAccessor\n writeValue(val: number | null): void {\n this.value.set(val);\n }\n\n registerOnChange(fn: (val: number | 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.isDisabled.set(isDisabled);\n }\n}\n","<div [class]=\"containerClasses()\">\n @if (label()) {\n <label class=\"number-input__label\">{{ label() }}</label>\n }\n <div class=\"number-input__control\">\n <button\n type=\"button\"\n class=\"number-input__button number-input__button--decrement\"\n [disabled]=\"disabled() || isDisabled() || !canDecrement()\"\n (click)=\"decrement()\"\n aria-label=\"Decrease value\"\n >\n <lc-icon name=\"minus\" size=\"sm\" />\n </button>\n <input\n type=\"text\"\n inputmode=\"numeric\"\n class=\"number-input__input\"\n [value]=\"value() !== null ? value() : ''\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled() || isDisabled()\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n />\n <button\n type=\"button\"\n class=\"number-input__button number-input__button--increment\"\n [disabled]=\"disabled() || isDisabled() || !canIncrement()\"\n (click)=\"increment()\"\n aria-label=\"Increase value\"\n >\n <lc-icon name=\"plus\" size=\"sm\" />\n </button>\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n output,\n computed,\n signal,\n} from '@angular/core';\nimport { IconComponent } from '../icon/icon.component';\n\nexport type CalloutVariant = 'info' | 'success' | 'warning' | 'error' | 'neutral';\n\n@Component({\n selector: 'lc-callout',\n standalone: true,\n imports: [IconComponent],\n templateUrl: './callout.component.html',\n styleUrls: ['./callout.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n/**\n * Callout component for contextual information banners.\n *\n * Features:\n * - Semantic variants (info, success, warning, error, neutral)\n * - Auto-mapped variant icons\n * - Optional title text\n * - Dismissible with close button\n * - Content projection for custom body content\n *\n * @example\n * ```html\n * <lc-callout variant=\"warning\" title=\"Attention\">Please review your input.</lc-callout>\n * ```\n */\nexport class CalloutComponent {\n /** Visual variant */\n variant = input<CalloutVariant>('info');\n\n /** Title text (optional) */\n title = input<string>();\n\n /** Whether the callout can be dismissed */\n dismissible = input<boolean>(false);\n\n /** Emits when dismiss button is clicked */\n dismissed = output<void>();\n\n protected visible = signal(true);\n\n protected calloutClasses = computed(() => {\n return ['callout', `callout--${this.variant()}`].join(' ');\n });\n\n protected iconName = computed(() => {\n const map: Record<CalloutVariant, string> = {\n info: 'information-circle',\n success: 'check-circle',\n warning: 'exclamation-triangle',\n error: 'x-circle',\n neutral: 'information-circle',\n };\n return map[this.variant()];\n });\n\n dismiss(): void {\n this.visible.set(false);\n this.dismissed.emit();\n }\n}\n","@if (visible()) {\n <div [class]=\"calloutClasses()\" role=\"alert\">\n <lc-icon class=\"callout__icon\" [name]=\"iconName()\" size=\"md\" />\n <div class=\"callout__content\">\n @if (title()) {\n <strong class=\"callout__title\">{{ title() }}</strong>\n }\n <div class=\"callout__body\">\n <ng-content />\n </div>\n </div>\n @if (dismissible()) {\n <button\n type=\"button\"\n class=\"callout__dismiss\"\n aria-label=\"Dismiss\"\n (click)=\"dismiss()\"\n >\n <lc-icon name=\"x-mark\" size=\"sm\" />\n </button>\n }\n </div>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n output,\n computed,\n signal,\n forwardRef,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { IconComponent } from '../icon/icon.component';\n\nexport type RatingSize = 'sm' | 'md' | 'lg';\n\n@Component({\n selector: 'lc-rating',\n standalone: true,\n imports: [IconComponent],\n templateUrl: './rating.component.html',\n styleUrls: ['./rating.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RatingComponent),\n multi: true,\n },\n ],\n})\n/**\n * Rating component for star-based value selection.\n *\n * Features:\n * - Configurable maximum star count\n * - Half-star rating support\n * - Multiple size variants (sm, md, lg)\n * - Read-only and disabled states\n * - Hover preview with visual feedback\n * - ControlValueAccessor integration for reactive forms\n *\n * @example\n * ```html\n * <lc-rating [max]=\"5\" [allowHalf]=\"true\" label=\"Rate this\" />\n * ```\n */\nexport class RatingComponent implements ControlValueAccessor {\n /** Maximum number of stars */\n max = input<number>(5);\n\n /** Size variant */\n size = input<RatingSize>('md');\n\n /** Whether the rating is read-only */\n readonly = input<boolean>(false);\n\n /** Whether the rating is disabled */\n disabled = input<boolean>(false);\n\n /** Whether to allow half-star ratings */\n allowHalf = input<boolean>(false);\n\n /** Label text */\n label = input<string>();\n\n /** Whether to show the numeric value */\n showValue = input<boolean>(false);\n\n /** Emits the selected rating */\n ratingChange = output<number>();\n\n protected value = signal(0);\n protected hoveredValue = signal(0);\n protected isDisabled = signal(false);\n\n protected stars = computed(() => {\n return Array.from({ length: this.max() }, (_, i) => i + 1);\n });\n\n protected ratingClasses = computed(() => {\n const classes = ['rating', `rating--${this.size()}`];\n if (this.readonly()) classes.push('rating--readonly');\n if (this.disabled() || this.isDisabled()) classes.push('rating--disabled');\n return classes.join(' ');\n });\n\n protected getStarState(star: number): 'full' | 'half' | 'empty' {\n const active = this.hoveredValue() || this.value();\n if (star <= Math.floor(active)) return 'full';\n if (this.allowHalf() && star - 0.5 <= active) return 'half';\n return 'empty';\n }\n\n protected getStarIcon(star: number): string {\n const state = this.getStarState(star);\n if (state === 'full') return 'star-solid';\n return 'star';\n }\n\n protected isStarFilled(star: number): boolean {\n return this.getStarState(star) === 'full';\n }\n\n protected isStarHalf(star: number): boolean {\n return this.getStarState(star) === 'half';\n }\n\n protected onStarClick(star: number): void {\n if (this.readonly() || this.disabled() || this.isDisabled()) return;\n this.value.set(star);\n this.ratingChange.emit(star);\n this.onChange(star);\n }\n\n protected onStarHover(star: number): void {\n if (this.readonly() || this.disabled() || this.isDisabled()) return;\n this.hoveredValue.set(star);\n }\n\n protected onMouseLeave(): void {\n this.hoveredValue.set(0);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChange: (val: number) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouched: () => void = () => {};\n\n writeValue(val: number): void {\n this.value.set(val ?? 0);\n }\n\n registerOnChange(fn: (val: number) => 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.isDisabled.set(isDisabled);\n }\n}\n","<div [class]=\"ratingClasses()\" (mouseleave)=\"onMouseLeave()\">\n @if (label()) {\n <span class=\"rating__label\">{{ label() }}</span>\n }\n <div class=\"rating__stars\" role=\"radiogroup\" [attr.aria-label]=\"label() || 'Rating'\">\n @for (star of stars(); track star) {\n <button\n type=\"button\"\n class=\"rating__star\"\n [class.rating__star--filled]=\"isStarFilled(star)\"\n [class.rating__star--half]=\"isStarHalf(star)\"\n [disabled]=\"readonly() || disabled() || isDisabled()\"\n [attr.aria-label]=\"star + ' of ' + max() + ' stars'\"\n (click)=\"onStarClick(star)\"\n (mouseenter)=\"onStarHover(star)\"\n >\n @if (isStarFilled(star)) {\n <lc-icon name=\"star\" [size]=\"size()\" class=\"rating__icon rating__icon--filled\" />\n } @else if (isStarHalf(star)) {\n <lc-icon name=\"star\" [size]=\"size()\" class=\"rating__icon rating__icon--half\" />\n } @else {\n <lc-icon name=\"star\" [size]=\"size()\" class=\"rating__icon rating__icon--empty\" />\n }\n </button>\n }\n </div>\n @if (showValue()) {\n <span class=\"rating__value\">{{ value() }}/{{ max() }}</span>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n output,\n computed,\n signal,\n forwardRef,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nconst DEFAULT_SWATCHES = [\n '#ef4444', '#f97316', '#eab308', '#22c55e', '#14b8a6',\n '#3b82f6', '#6366f1', '#8b5cf6', '#ec4899', '#f43f5e',\n '#0ea5e9', '#10b981', '#a855f7', '#64748b', '#000000',\n '#ffffff',\n];\n\n@Component({\n selector: 'lc-color-picker',\n standalone: true,\n templateUrl: './color-picker.component.html',\n styleUrls: ['./color-picker.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ColorPickerComponent),\n multi: true,\n },\n ],\n})\n/**\n * Color picker component for selecting colors from swatches or custom input.\n *\n * Features:\n * - Predefined color swatch palette\n * - Native browser color picker integration\n * - Hex color text input with validation\n * - Disabled state support\n * - ControlValueAccessor integration for reactive forms\n *\n * @example\n * ```html\n * <lc-color-picker label=\"Brand Color\" [showInput]=\"true\" />\n * ```\n */\nexport class ColorPickerComponent implements ControlValueAccessor {\n /** Label text */\n label = input<string>();\n\n /** Predefined color swatches */\n swatches = input<string[]>(DEFAULT_SWATCHES);\n\n /** Whether to show the hex input field */\n showInput = input<boolean>(true);\n\n /** Whether the picker is disabled */\n disabled = input<boolean>(false);\n\n /** Emits the selected color hex value */\n colorChange = output<string>();\n\n protected value = signal('#3b82f6');\n protected isDisabled = signal(false);\n\n protected pickerClasses = computed(() => {\n const classes = ['color-picker'];\n if (this.disabled() || this.isDisabled()) classes.push('color-picker--disabled');\n return classes.join(' ');\n });\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChange: (val: string) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouched: () => void = () => {};\n\n protected selectSwatch(color: string): void {\n if (this.disabled() || this.isDisabled()) return;\n this.setValue(color);\n }\n\n protected onNativeInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.setValue(target.value);\n }\n\n protected onHexInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n let val = target.value.trim();\n if (!val.startsWith('#')) val = '#' + val;\n if (/^#[0-9a-fA-F]{6}$/.test(val)) {\n this.setValue(val);\n }\n }\n\n protected onBlur(): void {\n this.onTouched();\n }\n\n private setValue(color: string): void {\n this.value.set(color);\n this.colorChange.emit(color);\n this.onChange(color);\n }\n\n // ControlValueAccessor\n writeValue(val: string): void {\n this.value.set(val ?? '#3b82f6');\n }\n\n registerOnChange(fn: (val: 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.isDisabled.set(isDisabled);\n }\n}\n","<div [class]=\"pickerClasses()\">\n @if (label()) {\n <label class=\"color-picker__label\">{{ label() }}</label>\n }\n <div class=\"color-picker__preview-row\">\n <input\n type=\"color\"\n class=\"color-picker__native\"\n [value]=\"value()\"\n [disabled]=\"disabled() || isDisabled()\"\n (input)=\"onNativeInput($event)\"\n (blur)=\"onBlur()\"\n aria-label=\"Color picker\"\n />\n <span\n class=\"color-picker__swatch-preview\"\n [style.background-color]=\"value()\"\n ></span>\n @if (showInput()) {\n <input\n type=\"text\"\n class=\"color-picker__hex-input\"\n [value]=\"value()\"\n [disabled]=\"disabled() || isDisabled()\"\n maxlength=\"7\"\n (input)=\"onHexInput($event)\"\n (blur)=\"onBlur()\"\n aria-label=\"Hex color value\"\n />\n }\n </div>\n @if (swatches().length > 0) {\n <div class=\"color-picker__swatches\" role=\"listbox\" aria-label=\"Color swatches\">\n @for (swatch of swatches(); track swatch) {\n <button\n type=\"button\"\n class=\"color-picker__swatch\"\n [class.color-picker__swatch--selected]=\"swatch === value()\"\n [class.color-picker__swatch--light]=\"swatch === '#ffffff'\"\n [style.background-color]=\"swatch\"\n [disabled]=\"disabled() || isDisabled()\"\n [attr.aria-label]=\"swatch\"\n [attr.aria-selected]=\"swatch === value()\"\n role=\"option\"\n (click)=\"selectSwatch(swatch)\"\n ></button>\n }\n </div>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n computed,\n signal,\n} from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { IconComponent } from '../icon/icon.component';\n\nexport type CodeBlockLanguage =\n | 'typescript'\n | 'javascript'\n | 'html'\n | 'css'\n | 'scss'\n | 'json'\n | 'bash'\n | 'python'\n | 'java'\n | 'text';\n\ninterface TokenRule {\n pattern: RegExp;\n className: string;\n}\n\nconst SHARED_RULES: TokenRule[] = [\n // Strings (double/single/backtick)\n { pattern: /`(?:[^`\\\\]|\\\\.)*`/g, className: 'token-string' },\n { pattern: /\"(?:[^\"\\\\]|\\\\.)*\"/g, className: 'token-string' },\n { pattern: /'(?:[^'\\\\]|\\\\.)*'/g, className: 'token-string' },\n // Numbers\n { pattern: /\\b\\d+(?:\\.\\d+)?\\b/g, className: 'token-number' },\n];\n\nconst LANGUAGE_RULES: Record<string, TokenRule[]> = {\n typescript: [\n { pattern: /\\/\\/.*$/gm, className: 'token-comment' },\n { pattern: /\\/\\*[\\s\\S]*?\\*\\//g, className: 'token-comment' },\n ...SHARED_RULES,\n { pattern: /@\\w+/g, className: 'token-decorator' },\n { pattern: /\\b(?:import|export|from|const|let|var|function|return|if|else|for|while|class|interface|type|enum|extends|implements|new|this|super|async|await|yield|of|in|as|is|readonly|public|private|protected|static|abstract|override|get|set|constructor|declare|namespace|module|require)\\b/g, className: 'token-keyword' },\n { pattern: /\\b(?:string|number|boolean|void|null|undefined|never|any|unknown|object|symbol|bigint)\\b/g, className: 'token-type' },\n { pattern: /\\b(?:true|false|null|undefined|NaN|Infinity)\\b/g, className: 'token-constant' },\n { pattern: /(?<=\\b(?:class|interface|type|enum|extends|implements)\\s+)\\w+/g, className: 'token-type' },\n ],\n javascript: [\n { pattern: /\\/\\/.*$/gm, className: 'token-comment' },\n { pattern: /\\/\\*[\\s\\S]*?\\*\\//g, className: 'token-comment' },\n ...SHARED_RULES,\n { pattern: /\\b(?:import|export|from|const|let|var|function|return|if|else|for|while|class|extends|new|this|super|async|await|yield|of|in|typeof|instanceof|delete|throw|try|catch|finally|switch|case|default|break|continue|do)\\b/g, className: 'token-keyword' },\n { pattern: /\\b(?:true|false|null|undefined|NaN|Infinity)\\b/g, className: 'token-constant' },\n ],\n html: [\n { pattern: /<!--[\\s\\S]*?-->/g, className: 'token-comment' },\n ...SHARED_RULES,\n { pattern: /&lt;\\/?[\\w-]+/g, className: 'token-tag' },\n { pattern: /\\/?&gt;/g, className: 'token-tag' },\n { pattern: /\\b[\\w-]+(?==)/g, className: 'token-attr' },\n ],\n css: [\n { pattern: /\\/\\*[\\s\\S]*?\\*\\//g, className: 'token-comment' },\n ...SHARED_RULES,\n { pattern: /[.#][\\w-]+/g, className: 'token-selector' },\n { pattern: /\\b(?:px|rem|em|%|vh|vw|s|ms|deg|fr)\\b/g, className: 'token-unit' },\n { pattern: /[\\w-]+(?=\\s*:)/g, className: 'token-property' },\n ],\n scss: [\n { pattern: /\\/\\/.*$/gm, className: 'token-comment' },\n { pattern: /\\/\\*[\\s\\S]*?\\*\\//g, className: 'token-comment' },\n ...SHARED_RULES,\n { pattern: /\\$[\\w-]+/g, className: 'token-variable' },\n { pattern: /@(?:use|forward|import|mixin|include|extend|if|else|each|for|while|function|return)\\b/g, className: 'token-keyword' },\n { pattern: /&/g, className: 'token-selector' },\n { pattern: /[.#][\\w-]+/g, className: 'token-selector' },\n ],\n json: [\n ...SHARED_RULES,\n { pattern: /\\b(?:true|false|null)\\b/g, className: 'token-constant' },\n { pattern: /\"(?:[^\"\\\\]|\\\\.)*\"(?=\\s*:)/g, className: 'token-property' },\n ],\n bash: [\n { pattern: /#.*$/gm, className: 'token-comment' },\n ...SHARED_RULES,\n { pattern: /\\$[\\w{][\\w}]*/g, className: 'token-variable' },\n { pattern: /\\b(?:if|then|else|elif|fi|for|do|done|while|until|case|esac|function|in|select|time|coproc)\\b/g, className: 'token-keyword' },\n { pattern: /(?:^|\\s)(?:npm|npx|yarn|pnpm|git|cd|ls|mkdir|rm|cp|mv|echo|cat|grep|find|sed|awk|curl|wget|docker|node|python|pip|brew|apt|sudo)\\b/g, className: 'token-builtin' },\n { pattern: /--?[\\w-]+/g, className: 'token-flag' },\n ],\n python: [\n { pattern: /#.*$/gm, className: 'token-comment' },\n { pattern: /\"\"\"[\\s\\S]*?\"\"\"/g, className: 'token-string' },\n { pattern: /'''[\\s\\S]*?'''/g, className: 'token-string' },\n ...SHARED_RULES,\n { pattern: /@\\w+/g, className: 'token-decorator' },\n { pattern: /\\b(?:def|class|import|from|as|return|if|elif|else|for|while|break|continue|pass|raise|try|except|finally|with|yield|lambda|assert|del|global|nonlocal|async|await|in|not|and|or|is)\\b/g, className: 'token-keyword' },\n { pattern: /\\b(?:True|False|None)\\b/g, className: 'token-constant' },\n { pattern: /\\b(?:str|int|float|bool|list|dict|tuple|set|bytes|type|object|Exception|ValueError|TypeError|KeyError|IndexError|AttributeError|RuntimeError|StopIteration)\\b/g, className: 'token-type' },\n { pattern: /\\b(?:print|len|range|enumerate|zip|map|filter|sorted|reversed|isinstance|issubclass|hasattr|getattr|setattr|super|property|staticmethod|classmethod|open|input)\\b/g, className: 'token-builtin' },\n { pattern: /\\bself\\b/g, className: 'token-variable' },\n ],\n java: [\n { pattern: /\\/\\/.*$/gm, className: 'token-comment' },\n { pattern: /\\/\\*[\\s\\S]*?\\*\\//g, className: 'token-comment' },\n ...SHARED_RULES,\n { pattern: /@\\w+/g, className: 'token-decorator' },\n { pattern: /\\b(?:abstract|assert|break|case|catch|class|continue|default|do|else|enum|extends|final|finally|for|if|implements|import|instanceof|interface|native|new|package|private|protected|public|return|static|strictfp|super|switch|synchronized|this|throw|throws|transient|try|volatile|while|var|record|sealed|permits|yield)\\b/g, className: 'token-keyword' },\n { pattern: /\\b(?:true|false|null)\\b/g, className: 'token-constant' },\n { pattern: /\\b(?:void|int|long|short|byte|float|double|char|boolean|String|Integer|Long|Double|Float|Boolean|Character|Object|Class|List|Map|Set|ArrayList|HashMap|HashSet|Optional|Stream|Collectors)\\b/g, className: 'token-type' },\n { pattern: /\\b(?:System|Math|Arrays|Collections|Objects|Thread|Runnable)\\b/g, className: 'token-builtin' },\n ],\n};\n\nfunction escapeHtml(text: string): string {\n return text\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;');\n}\n\nfunction highlightCode(code: string, language: string): string {\n const escaped = escapeHtml(code);\n const rules = LANGUAGE_RULES[language];\n if (!rules) return escaped;\n\n // Collect all matches with positions\n const tokens: { start: number; end: number; className: string; text: string }[] = [];\n\n for (const rule of rules) {\n const regex = new RegExp(rule.pattern.source, rule.pattern.flags);\n let match: RegExpExecArray | null;\n while ((match = regex.exec(escaped)) !== null) {\n tokens.push({\n start: match.index,\n end: match.index + match[0].length,\n className: rule.className,\n text: match[0],\n });\n }\n }\n\n // Sort by start position, longer matches first for same position\n tokens.sort((a, b) => a.start - b.start || b.end - a.end);\n\n // Remove overlapping tokens (keep first/longest)\n const filtered: typeof tokens = [];\n let lastEnd = 0;\n for (const token of tokens) {\n if (token.start >= lastEnd) {\n filtered.push(token);\n lastEnd = token.end;\n }\n }\n\n // Build highlighted string\n let result = '';\n let cursor = 0;\n for (const token of filtered) {\n if (token.start > cursor) {\n result += escaped.slice(cursor, token.start);\n }\n result += `<span class=\"${token.className}\">${token.text}</span>`;\n cursor = token.end;\n }\n result += escaped.slice(cursor);\n\n return result;\n}\n\n@Component({\n selector: 'lc-code-block',\n standalone: true,\n imports: [IconComponent],\n templateUrl: './code-block.component.html',\n styleUrls: ['./code-block.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n/**\n * Code block component for displaying syntax-highlighted source code.\n *\n * Features:\n * - Syntax highlighting for 10+ languages (TypeScript, Python, Java, etc.)\n * - Optional line numbers\n * - Copy-to-clipboard button\n * - Optional header with filename and language label\n * - Dark-mode compatible color scheme\n *\n * @example\n * ```html\n * <lc-code-block [code]=\"source\" language=\"typescript\" [showLineNumbers]=\"true\" />\n * ```\n */\nexport class CodeBlockComponent {\n /** Code content to display */\n code = input.required<string>();\n\n /** Language label */\n language = input<CodeBlockLanguage>('text');\n\n /** Optional filename to display */\n filename = input<string>();\n\n /** Whether to show line numbers */\n showLineNumbers = input<boolean>(true);\n\n /** Whether to show copy button */\n showCopy = input<boolean>(true);\n\n /** Whether the code block has a header bar */\n showHeader = input<boolean>(true);\n\n protected copied = signal(false);\n\n constructor(private sanitizer: DomSanitizer) {}\n\n protected highlightedLines = computed<SafeHtml[]>(() => {\n const highlighted = highlightCode(this.code(), this.language());\n return highlighted.split('\\n').map(line =>\n this.sanitizer.bypassSecurityTrustHtml(line || '&nbsp;')\n );\n });\n\n protected lineNumbers = computed(() => {\n return this.code().split('\\n').map((_, i) => i + 1);\n });\n\n protected headerLabel = computed(() => {\n return this.filename() || this.language();\n });\n\n protected codeClasses = computed(() => {\n return ['code-block', `code-block--${this.language()}`].join(' ');\n });\n\n protected async copyToClipboard(): Promise<void> {\n try {\n await navigator.clipboard.writeText(this.code());\n this.copied.set(true);\n setTimeout(() => this.copied.set(false), 2000);\n } catch {\n // Fallback: just ignore if clipboard API not available\n }\n }\n}\n","<div [class]=\"codeClasses()\">\n @if (showHeader()) {\n <div class=\"code-block__header\">\n <span class=\"code-block__language\">{{ headerLabel() }}</span>\n @if (showCopy()) {\n <button\n type=\"button\"\n class=\"code-block__copy\"\n [attr.aria-label]=\"copied() ? 'Copied' : 'Copy code'\"\n (click)=\"copyToClipboard()\"\n >\n @if (copied()) {\n <lc-icon name=\"check\" size=\"sm\" />\n <span>Copied</span>\n } @else {\n <lc-icon name=\"clipboard-document\" size=\"sm\" />\n <span>Copy</span>\n }\n </button>\n }\n </div>\n }\n <div class=\"code-block__body\">\n <pre class=\"code-block__pre\"><code class=\"code-block__code\">@for (line of highlightedLines(); track $index; let i = $index) {<span class=\"code-block__line\">@if (showLineNumbers()) {<span class=\"code-block__line-number\">{{ lineNumbers()[i] }}</span>}<span class=\"code-block__line-content\" [innerHTML]=\"line\"></span></span>\n}</code></pre>\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n computed,\n} from '@angular/core';\nimport { IconComponent } from '../icon/icon.component';\n\nexport interface FooterLink {\n /** Display label */\n label: string;\n /** URL or route */\n href: string;\n /** Whether it opens in a new tab */\n external?: boolean;\n}\n\nexport interface FooterSection {\n /** Section heading */\n title: string;\n /** Links in this section */\n links: FooterLink[];\n}\n\nexport type FooterVariant = 'default' | 'primary' | 'dark' | 'neutral';\n\n@Component({\n selector: 'lc-footer',\n standalone: true,\n imports: [IconComponent],\n templateUrl: './footer.component.html',\n styleUrls: ['./footer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n/**\n * Footer component for application-wide bottom navigation.\n *\n * Features:\n * - Multi-section navigation with link groups\n * - Copyright text display\n * - Compact single-row layout option\n * - Color variants (light, dark)\n * - Optional top border\n * - Social media icon links\n *\n * @example\n * ```html\n * <lc-footer [sections]=\"navSections\" copyright=\"© 2026 Company\" />\n * ```\n */\nexport class FooterComponent {\n /** Footer navigation sections */\n sections = input<FooterSection[]>([]);\n\n /** Copyright text */\n copyright = input<string>();\n\n /** Whether to show a top border */\n showBorder = input<boolean>(true);\n\n /** Compact layout (single row) */\n compact = input<boolean>(false);\n\n /** Color variant */\n variant = input<FooterVariant>('default');\n\n protected footerClasses = computed(() => {\n const classes = ['footer', `footer--${this.variant()}`];\n if (this.showBorder()) classes.push('footer--bordered');\n if (this.compact()) classes.push('footer--compact');\n return classes.join(' ');\n });\n\n protected currentYear = new Date().getFullYear();\n}\n","<footer [class]=\"footerClasses()\" role=\"contentinfo\">\n @if (sections().length > 0 && !compact()) {\n <div class=\"footer__sections\">\n @for (section of sections(); track section.title) {\n <div class=\"footer__section\">\n <h4 class=\"footer__section-title\">{{ section.title }}</h4>\n <ul class=\"footer__links\">\n @for (link of section.links; track link.href) {\n <li>\n <a\n class=\"footer__link\"\n [href]=\"link.href\"\n [target]=\"link.external ? '_blank' : '_self'\"\n [rel]=\"link.external ? 'noopener noreferrer' : null\"\n >\n {{ link.label }}\n @if (link.external) {\n <lc-icon name=\"arrow-top-right-on-square\" size=\"xs\" class=\"footer__external-icon\" />\n }\n </a>\n </li>\n }\n </ul>\n </div>\n }\n </div>\n }\n <div class=\"footer__bottom\">\n <ng-content />\n @if (copyright()) {\n <span class=\"footer__copyright\">{{ copyright() }}</span>\n }\n </div>\n</footer>\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n computed,\n} from '@angular/core';\n\nexport type SparklineColor = 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'info';\nexport type SparklineCurve = 'linear' | 'smooth';\n\n@Component({\n selector: 'lc-sparkline',\n standalone: true,\n templateUrl: './sparkline.component.html',\n styleUrls: ['./sparkline.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n/**\n * Sparkline component for compact inline trend visualization.\n *\n * Features:\n * - Linear or smooth curve interpolation\n * - Optional area fill below the line\n * - Color theme variants (primary, secondary, success, warning, error)\n * - Optional end-dot indicator\n * - Configurable dimensions and stroke width\n * - Lightweight SVG rendering\n *\n * @example\n * ```html\n * <lc-sparkline [data]=\"[10, 25, 15, 30, 20]\" color=\"primary\" [filled]=\"true\" />\n * ```\n */\nexport class SparklineComponent {\n /** Data points to plot. */\n data = input.required<number[]>();\n\n /** Stroke color theme. */\n color = input<SparklineColor>('primary');\n\n /** Width of the SVG in pixels. */\n width = input<number>(120);\n\n /** Height of the SVG in pixels. */\n height = input<number>(32);\n\n /** Stroke width in pixels. */\n strokeWidth = input<number>(2);\n\n /** Show a filled area under the line. */\n filled = input<boolean>(false);\n\n /** Curve interpolation mode. */\n curve = input<SparklineCurve>('smooth');\n\n /** Show a dot on the last data point. */\n showEndDot = input<boolean>(false);\n\n protected readonly colorVar = computed(() => {\n const map: Record<SparklineColor, string> = {\n primary: 'var(--color-primary-500)',\n secondary: 'var(--color-secondary-500)',\n success: 'var(--color-success-default)',\n warning: 'var(--color-warning-default)',\n error: 'var(--color-error-default)',\n info: 'var(--color-info-default)',\n };\n return map[this.color()];\n });\n\n protected readonly fillColorVar = computed(() => {\n const map: Record<SparklineColor, string> = {\n primary: 'var(--color-primary-100)',\n secondary: 'var(--color-secondary-100)',\n success: 'var(--color-success-light)',\n warning: 'var(--color-warning-light)',\n error: 'var(--color-error-light)',\n info: 'var(--color-info-light)',\n };\n return map[this.color()];\n });\n\n protected readonly pathD = computed(() => {\n const d = this.data();\n if (!d || d.length < 2) return '';\n\n const w = this.width();\n const h = this.height();\n const sw = this.strokeWidth();\n const padding = sw;\n const plotW = w - padding * 2;\n const plotH = h - padding * 2;\n\n const min = Math.min(...d);\n const max = Math.max(...d);\n const range = max - min || 1;\n\n const points = d.map((v, i) => ({\n x: padding + (i / (d.length - 1)) * plotW,\n y: padding + plotH - ((v - min) / range) * plotH,\n }));\n\n if (this.curve() === 'linear') {\n return points.map((p, i) => `${i === 0 ? 'M' : 'L'}${p.x},${p.y}`).join(' ');\n }\n\n // Smooth (monotone cubic) via catmull-rom approximation\n let path = `M${points[0].x},${points[0].y}`;\n for (let i = 0; i < points.length - 1; i++) {\n const p0 = points[Math.max(i - 1, 0)];\n const p1 = points[i];\n const p2 = points[i + 1];\n const p3 = points[Math.min(i + 2, points.length - 1)];\n\n const cp1x = p1.x + (p2.x - p0.x) / 6;\n const cp1y = p1.y + (p2.y - p0.y) / 6;\n const cp2x = p2.x - (p3.x - p1.x) / 6;\n const cp2y = p2.y - (p3.y - p1.y) / 6;\n\n path += ` C${cp1x},${cp1y} ${cp2x},${cp2y} ${p2.x},${p2.y}`;\n }\n return path;\n });\n\n protected readonly areaD = computed(() => {\n if (!this.filled()) return '';\n const line = this.pathD();\n if (!line) return '';\n const d = this.data();\n const w = this.width();\n const h = this.height();\n const sw = this.strokeWidth();\n const padding = sw;\n const plotW = w - padding * 2;\n const lastX = padding + plotW;\n const bottomY = h - padding;\n const firstX = padding;\n return `${line} L${lastX},${bottomY} L${firstX},${bottomY} Z`;\n });\n\n protected readonly endDot = computed(() => {\n if (!this.showEndDot()) return null;\n const d = this.data();\n if (!d || d.length < 2) return null;\n\n const w = this.width();\n const h = this.height();\n const sw = this.strokeWidth();\n const padding = sw;\n const plotW = w - padding * 2;\n const plotH = h - padding * 2;\n\n const min = Math.min(...d);\n const max = Math.max(...d);\n const range = max - min || 1;\n\n const lastIdx = d.length - 1;\n return {\n cx: padding + (lastIdx / (d.length - 1)) * plotW,\n cy: padding + plotH - ((d[lastIdx] - min) / range) * plotH,\n r: sw + 1,\n };\n });\n\n protected readonly viewBox = computed(\n () => `0 0 ${this.width()} ${this.height()}`\n );\n}\n","<svg\n [attr.width]=\"width()\"\n [attr.height]=\"height()\"\n [attr.viewBox]=\"viewBox()\"\n class=\"lc-sparkline\"\n role=\"img\"\n aria-label=\"Sparkline chart\"\n>\n @if (areaD()) {\n <path\n [attr.d]=\"areaD()\"\n [attr.fill]=\"fillColorVar()\"\n class=\"lc-sparkline__area\"\n />\n }\n\n @if (pathD()) {\n <path\n [attr.d]=\"pathD()\"\n [attr.stroke]=\"colorVar()\"\n [attr.stroke-width]=\"strokeWidth()\"\n fill=\"none\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n class=\"lc-sparkline__line\"\n />\n }\n\n @if (endDot(); as dot) {\n <circle\n [attr.cx]=\"dot.cx\"\n [attr.cy]=\"dot.cy\"\n [attr.r]=\"dot.r\"\n [attr.fill]=\"colorVar()\"\n class=\"lc-sparkline__dot\"\n />\n }\n</svg>\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n computed,\n} from '@angular/core';\nimport { SparklineComponent, SparklineColor } from '../sparkline/sparkline.component';\nimport { IconComponent } from '../icon/icon.component';\n\nexport type StatTrendDirection = 'up' | 'down' | 'neutral';\n\n@Component({\n selector: 'lc-stat-trend',\n standalone: true,\n imports: [SparklineComponent, IconComponent],\n templateUrl: './stat-trend.component.html',\n styleUrls: ['./stat-trend.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n/**\n * Stat trend component for displaying KPI values with change indicators.\n *\n * Features:\n * - Value display with label and optional icon\n * - Change percentage with auto-detected trend direction (up/down/neutral)\n * - Color-coded trend indicator (green for up, red for down)\n * - Optional embedded sparkline chart\n * - Configurable sparkline color theme\n *\n * @example\n * ```html\n * <lc-stat-trend label=\"Revenue\" value=\"$42,350\" change=\"+12.5%\" [sparklineData]=\"data\" />\n * ```\n */\nexport class StatTrendComponent {\n /** Main KPI label. */\n label = input<string>('');\n\n /** Main KPI value to display. */\n value = input.required<string>();\n\n /** Change value text, e.g. \"+12%\" or \"-3.5%\". */\n change = input<string>('');\n\n /** Trend direction for color coding. Auto-detected from change if not set. */\n direction = input<StatTrendDirection | undefined>(undefined);\n\n /** Sparkline data points. If empty, no sparkline is shown. */\n sparklineData = input<number[]>([]);\n\n /** Color of the sparkline. Auto-matched to trend direction if not set. */\n sparklineColor = input<SparklineColor | undefined>(undefined);\n\n /** Optional icon name (Heroicon). */\n icon = input<string>('');\n\n protected readonly resolvedDirection = computed<StatTrendDirection>(() => {\n const dir = this.direction();\n if (dir) return dir;\n const c = this.change();\n if (c.startsWith('+') || c.startsWith('↑')) return 'up';\n if (c.startsWith('-') || c.startsWith('↓')) return 'down';\n return 'neutral';\n });\n\n protected readonly trendColorClass = computed(() => {\n const map: Record<StatTrendDirection, string> = {\n up: 'lc-stat-trend__change--up',\n down: 'lc-stat-trend__change--down',\n neutral: 'lc-stat-trend__change--neutral',\n };\n return map[this.resolvedDirection()];\n });\n\n protected readonly resolvedSparklineColor = computed<SparklineColor>(() => {\n const c = this.sparklineColor();\n if (c) return c;\n const map: Record<StatTrendDirection, SparklineColor> = {\n up: 'success',\n down: 'error',\n neutral: 'info',\n };\n return map[this.resolvedDirection()];\n });\n\n protected readonly trendIcon = computed(() => {\n const map: Record<StatTrendDirection, string> = {\n up: '↑',\n down: '↓',\n neutral: '→',\n };\n return map[this.resolvedDirection()];\n });\n\n protected readonly hasSparkline = computed(() => this.sparklineData().length >= 2);\n}\n","<div class=\"lc-stat-trend\">\n <div class=\"lc-stat-trend__header\">\n @if (label()) {\n <span class=\"lc-stat-trend__label\">{{ label() }}</span>\n }\n @if (icon()) {\n <lc-icon [name]=\"icon()\" size=\"sm\" class=\"lc-stat-trend__header-icon\" />\n }\n </div>\n\n <div class=\"lc-stat-trend__row\">\n <span class=\"lc-stat-trend__value\">{{ value() }}</span>\n\n @if (change()) {\n <span class=\"lc-stat-trend__change\" [class]=\"trendColorClass()\">\n <span class=\"lc-stat-trend__icon\">{{ trendIcon() }}</span>\n {{ change() }}\n </span>\n }\n </div>\n\n @if (hasSparkline()) {\n <lc-sparkline\n [data]=\"sparklineData()\"\n [color]=\"resolvedSparklineColor()\"\n [width]=\"120\"\n [height]=\"28\"\n [filled]=\"true\"\n [strokeWidth]=\"1.5\"\n ></lc-sparkline>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n computed,\n} from '@angular/core';\n\nexport interface DonutSegment {\n value: number;\n label?: string;\n color?: string;\n}\n\nexport type DonutChartSize = 'sm' | 'md' | 'lg';\n\nconst DEFAULT_COLORS = [\n 'var(--color-primary-500)',\n 'var(--color-secondary-500)',\n 'var(--color-success-default)',\n 'var(--color-warning-default)',\n 'var(--color-error-default)',\n 'var(--color-info-default)',\n 'var(--color-primary-300)',\n 'var(--color-secondary-300)',\n 'var(--color-success-light)',\n 'var(--color-warning-light)',\n];\n\n@Component({\n selector: 'lc-donut-chart',\n standalone: true,\n templateUrl: './donut-chart.component.html',\n styleUrls: ['./donut-chart.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n/**\n * Donut chart component for proportional data with center content.\n *\n * Features:\n * - Color-coded ring segments\n * - Configurable ring thickness\n * - Center label and value display\n * - Size presets (sm, md, lg)\n * - Optional legend display\n * - Responsive SVG rendering\n *\n * @example\n * ```html\n * <lc-donut-chart [segments]=\"data\" centerLabel=\"Total\" centerValue=\"100\" />\n * ```\n */\nexport class DonutChartComponent {\n /** Segments to render. */\n segments = input.required<DonutSegment[]>();\n\n /** Size preset. */\n size = input<DonutChartSize>('md');\n\n /** Thickness of the donut ring (0-1 ratio of radius). */\n thickness = input<number>(0.35);\n\n /** Show the center label area. */\n showCenter = input<boolean>(true);\n\n /** Center label text. */\n centerLabel = input<string>('');\n\n /** Center value text (large number). */\n centerValue = input<string>('');\n\n /** Show legend below the chart. */\n showLegend = input<boolean>(false);\n\n protected readonly sizeMap: Record<DonutChartSize, number> = {\n sm: 96,\n md: 140,\n lg: 200,\n };\n\n protected readonly svgSize = computed(() => this.sizeMap[this.size()]);\n protected readonly viewBox = computed(() => {\n const s = this.svgSize();\n return `0 0 ${s} ${s}`;\n });\n\n protected readonly center = computed(() => this.svgSize() / 2);\n protected readonly outerRadius = computed(() => this.svgSize() / 2 - 2);\n protected readonly innerRadius = computed(\n () => this.outerRadius() * (1 - this.thickness())\n );\n\n protected readonly arcs = computed(() => {\n const segs = this.segments();\n if (!segs || segs.length === 0) return [];\n\n const total = segs.reduce((sum, s) => sum + s.value, 0);\n if (total === 0) return [];\n\n const cx = this.center();\n const cy = this.center();\n const r = this.outerRadius();\n const ir = this.innerRadius();\n\n let startAngle = -Math.PI / 2; // start at top\n const gap = segs.length > 1 ? 0.02 : 0; // small gap between segments\n\n return segs.map((seg, i) => {\n const fraction = seg.value / total;\n const sweepAngle = fraction * Math.PI * 2 - gap;\n const endAngle = startAngle + sweepAngle;\n\n const largeArc = sweepAngle > Math.PI ? 1 : 0;\n\n const x1 = cx + r * Math.cos(startAngle);\n const y1 = cy + r * Math.sin(startAngle);\n const x2 = cx + r * Math.cos(endAngle);\n const y2 = cy + r * Math.sin(endAngle);\n\n const ix1 = cx + ir * Math.cos(endAngle);\n const iy1 = cy + ir * Math.sin(endAngle);\n const ix2 = cx + ir * Math.cos(startAngle);\n const iy2 = cy + ir * Math.sin(startAngle);\n\n const d = [\n `M${x1},${y1}`,\n `A${r},${r} 0 ${largeArc} 1 ${x2},${y2}`,\n `L${ix1},${iy1}`,\n `A${ir},${ir} 0 ${largeArc} 0 ${ix2},${iy2}`,\n 'Z',\n ].join(' ');\n\n startAngle = endAngle + gap;\n\n return {\n d,\n color: seg.color || DEFAULT_COLORS[i % DEFAULT_COLORS.length],\n label: seg.label || '',\n value: seg.value,\n percentage: Math.round(fraction * 100),\n };\n });\n });\n\n protected readonly legendItems = computed(() =>\n this.arcs().map((arc) => ({\n color: arc.color,\n label: arc.label,\n value: arc.value,\n percentage: arc.percentage,\n }))\n );\n}\n","<div class=\"lc-donut-chart\">\n <svg\n [attr.width]=\"svgSize()\"\n [attr.height]=\"svgSize()\"\n [attr.viewBox]=\"viewBox()\"\n role=\"img\"\n aria-label=\"Donut chart\"\n class=\"lc-donut-chart__svg\"\n >\n @for (arc of arcs(); track arc.label) {\n <path\n [attr.d]=\"arc.d\"\n [attr.fill]=\"arc.color\"\n class=\"lc-donut-chart__segment\"\n />\n }\n\n @if (showCenter() && (centerValue() || centerLabel())) {\n <text\n [attr.x]=\"center()\"\n [attr.y]=\"centerLabel() ? center() - 4 : center()\"\n text-anchor=\"middle\"\n dominant-baseline=\"central\"\n class=\"lc-donut-chart__center-value\"\n >\n {{ centerValue() }}\n </text>\n @if (centerLabel()) {\n <text\n [attr.x]=\"center()\"\n [attr.y]=\"center() + 14\"\n text-anchor=\"middle\"\n dominant-baseline=\"central\"\n class=\"lc-donut-chart__center-label\"\n >\n {{ centerLabel() }}\n </text>\n }\n }\n </svg>\n\n @if (showLegend()) {\n <div class=\"lc-donut-chart__legend\">\n @for (item of legendItems(); track item.label) {\n <div class=\"lc-donut-chart__legend-item\">\n <span class=\"lc-donut-chart__legend-dot\" [style.background-color]=\"item.color\"></span>\n <span class=\"lc-donut-chart__legend-label\">{{ item.label }}</span>\n <span class=\"lc-donut-chart__legend-pct\">{{ item.percentage }}%</span>\n </div>\n }\n </div>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n computed,\n} from '@angular/core';\n\nexport interface BarChartItem {\n value: number;\n label?: string;\n color?: string;\n}\n\nexport type BarChartOrientation = 'vertical' | 'horizontal';\n\nconst DEFAULT_COLORS = [\n 'var(--color-primary-500)',\n 'var(--color-secondary-500)',\n 'var(--color-success-default)',\n 'var(--color-warning-default)',\n 'var(--color-error-default)',\n 'var(--color-info-default)',\n];\n\n@Component({\n selector: 'lc-bar-chart',\n standalone: true,\n templateUrl: './bar-chart.component.html',\n styleUrls: ['./bar-chart.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n/**\n * Bar chart component for comparing categorical data.\n *\n * Features:\n * - Vertical and horizontal orientation\n * - Per-bar or uniform color support\n * - Optional value labels on bars\n * - Configurable grid and axis labels\n * - Adjustable bar gap spacing\n * - Responsive SVG rendering\n *\n * @example\n * ```html\n * <lc-bar-chart [data]=\"items\" orientation=\"vertical\" [showValues]=\"true\" />\n * ```\n */\nexport class BarChartComponent {\n /** Data items. */\n data = input.required<BarChartItem[]>();\n\n /** Chart width in pixels. */\n width = input<number>(400);\n\n /** Chart height in pixels. */\n height = input<number>(200);\n\n /** Bar orientation. */\n orientation = input<BarChartOrientation>('vertical');\n\n /** Show value labels on bars. */\n showValues = input<boolean>(true);\n\n /** Show axis labels. */\n showLabels = input<boolean>(true);\n\n /** Show grid lines. */\n showGrid = input<boolean>(true);\n\n /** Gap between bars as ratio (0-1). */\n barGap = input<number>(0.3);\n\n /** Use a single color for all bars. */\n color = input<string>('');\n\n // Layout constants\n private readonly PADDING_LEFT = 40;\n private readonly PADDING_RIGHT = 10;\n private readonly PADDING_TOP = 10;\n private readonly PADDING_BOTTOM = 30;\n\n protected readonly viewBox = computed(\n () => `0 0 ${this.width()} ${this.height()}`\n );\n\n protected readonly maxValue = computed(() => {\n const d = this.data();\n if (!d || d.length === 0) return 0;\n return Math.max(...d.map((i) => i.value));\n });\n\n protected readonly gridLines = computed(() => {\n if (!this.showGrid()) return [];\n const max = this.maxValue();\n if (max === 0) return [];\n\n const steps = 4;\n const stepValue = Math.ceil(max / steps);\n const lines: { y: number; label: string }[] = [];\n\n const plotH = this.height() - this.PADDING_TOP - this.PADDING_BOTTOM;\n\n for (let i = 0; i <= steps; i++) {\n const val = i * stepValue;\n const y = this.PADDING_TOP + plotH - (val / (stepValue * steps)) * plotH;\n lines.push({ y, label: String(val) });\n }\n return lines;\n });\n\n protected readonly bars = computed(() => {\n const d = this.data();\n if (!d || d.length === 0) return [];\n\n const isVertical = this.orientation() === 'vertical';\n const w = this.width();\n const h = this.height();\n const pl = this.PADDING_LEFT;\n const pr = this.PADDING_RIGHT;\n const pt = this.PADDING_TOP;\n const pb = this.PADDING_BOTTOM;\n\n const plotW = w - pl - pr;\n const plotH = h - pt - pb;\n const max = this.maxValue() || 1;\n const gap = this.barGap();\n const singleColor = this.color();\n\n if (isVertical) {\n const totalBarWidth = plotW / d.length;\n const barWidth = totalBarWidth * (1 - gap);\n const barOffset = (totalBarWidth - barWidth) / 2;\n\n return d.map((item, i) => {\n const barH = (item.value / max) * plotH;\n return {\n x: pl + i * totalBarWidth + barOffset,\n y: pt + plotH - barH,\n width: barWidth,\n height: barH,\n color: singleColor || item.color || DEFAULT_COLORS[i % DEFAULT_COLORS.length],\n label: item.label || '',\n value: item.value,\n labelX: pl + i * totalBarWidth + totalBarWidth / 2,\n labelY: h - pb + 16,\n valueX: pl + i * totalBarWidth + totalBarWidth / 2,\n valueY: pt + plotH - barH - 6,\n };\n });\n } else {\n const totalBarHeight = plotH / d.length;\n const barHeight = totalBarHeight * (1 - gap);\n const barOffset = (totalBarHeight - barHeight) / 2;\n\n return d.map((item, i) => {\n const barW = (item.value / max) * plotW;\n return {\n x: pl,\n y: pt + i * totalBarHeight + barOffset,\n width: barW,\n height: barHeight,\n color: singleColor || item.color || DEFAULT_COLORS[i % DEFAULT_COLORS.length],\n label: item.label || '',\n value: item.value,\n labelX: pl - 6,\n labelY: pt + i * totalBarHeight + totalBarHeight / 2,\n valueX: pl + barW + 6,\n valueY: pt + i * totalBarHeight + totalBarHeight / 2,\n };\n });\n }\n });\n\n protected readonly isVertical = computed(() => this.orientation() === 'vertical');\n\n protected readonly axisLine = computed(() => {\n const w = this.width();\n const h = this.height();\n const pl = this.PADDING_LEFT;\n const pt = this.PADDING_TOP;\n const pb = this.PADDING_BOTTOM;\n const pr = this.PADDING_RIGHT;\n return {\n x1: pl,\n y1: pt,\n x2: pl,\n y2: h - pb,\n bx1: pl,\n by1: h - pb,\n bx2: w - pr,\n by2: h - pb,\n };\n });\n}\n","<svg\n [attr.width]=\"width()\"\n [attr.height]=\"height()\"\n [attr.viewBox]=\"viewBox()\"\n role=\"img\"\n aria-label=\"Bar chart\"\n class=\"lc-bar-chart\"\n>\n <!-- Grid lines -->\n @if (showGrid() && isVertical()) {\n @for (line of gridLines(); track line.y) {\n <line\n [attr.x1]=\"axisLine().bx1\"\n [attr.y1]=\"line.y\"\n [attr.x2]=\"axisLine().bx2\"\n [attr.y2]=\"line.y\"\n class=\"lc-bar-chart__grid-line\"\n />\n <text\n [attr.x]=\"axisLine().x1 - 6\"\n [attr.y]=\"line.y\"\n text-anchor=\"end\"\n dominant-baseline=\"central\"\n class=\"lc-bar-chart__grid-label\"\n >\n {{ line.label }}\n </text>\n }\n }\n\n <!-- Axes -->\n <line\n [attr.x1]=\"axisLine().x1\"\n [attr.y1]=\"axisLine().y1\"\n [attr.x2]=\"axisLine().x2\"\n [attr.y2]=\"axisLine().y2\"\n class=\"lc-bar-chart__axis\"\n />\n <line\n [attr.x1]=\"axisLine().bx1\"\n [attr.y1]=\"axisLine().by1\"\n [attr.x2]=\"axisLine().bx2\"\n [attr.y2]=\"axisLine().by2\"\n class=\"lc-bar-chart__axis\"\n />\n\n <!-- Bars -->\n @for (bar of bars(); track bar.label) {\n <rect\n [attr.x]=\"bar.x\"\n [attr.y]=\"bar.y\"\n [attr.width]=\"bar.width\"\n [attr.height]=\"bar.height\"\n [attr.fill]=\"bar.color\"\n rx=\"2\"\n class=\"lc-bar-chart__bar\"\n />\n\n @if (showValues()) {\n <text\n [attr.x]=\"bar.valueX\"\n [attr.y]=\"bar.valueY\"\n [attr.text-anchor]=\"isVertical() ? 'middle' : 'start'\"\n [attr.dominant-baseline]=\"isVertical() ? 'auto' : 'central'\"\n class=\"lc-bar-chart__value\"\n >\n {{ bar.value }}\n </text>\n }\n\n @if (showLabels()) {\n <text\n [attr.x]=\"bar.labelX\"\n [attr.y]=\"bar.labelY\"\n [attr.text-anchor]=\"isVertical() ? 'middle' : 'end'\"\n [attr.dominant-baseline]=\"isVertical() ? 'auto' : 'central'\"\n class=\"lc-bar-chart__label\"\n >\n {{ bar.label }}\n </text>\n }\n }\n</svg>\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n computed,\n} from '@angular/core';\n\nexport interface LineChartSeries {\n label: string;\n data: number[];\n color?: string;\n}\n\nconst DEFAULT_COLORS = [\n 'var(--color-primary-500)',\n 'var(--color-secondary-500)',\n 'var(--color-success-default)',\n 'var(--color-warning-default)',\n 'var(--color-error-default)',\n 'var(--color-info-default)',\n];\n\n@Component({\n selector: 'lc-line-chart',\n standalone: true,\n templateUrl: './line-chart.component.html',\n styleUrls: ['./line-chart.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n/**\n * Line chart component for visualizing data trends.\n *\n * Features:\n * - Multiple data series support\n * - Smooth or linear curve interpolation\n * - Optional area fill below lines\n * - Configurable grid, axis labels, dots, and legend\n * - Responsive SVG rendering with configurable dimensions\n *\n * @example\n * ```html\n * <lc-line-chart [series]=\"data\" [labels]=\"months\" [smooth]=\"true\" />\n * ```\n */\nexport class LineChartComponent {\n /** One or more data series. */\n series = input.required<LineChartSeries[]>();\n\n /** X-axis labels. */\n labels = input<string[]>([]);\n\n /** Chart width in pixels. */\n width = input<number>(400);\n\n /** Chart height in pixels. */\n height = input<number>(200);\n\n /** Stroke width for lines. */\n strokeWidth = input<number>(2);\n\n /** Show dots at data points. */\n showDots = input<boolean>(true);\n\n /** Show grid lines. */\n showGrid = input<boolean>(true);\n\n /** Show X-axis labels. */\n showXLabels = input<boolean>(true);\n\n /** Show Y-axis labels. */\n showYLabels = input<boolean>(true);\n\n /** Show area fill under lines. */\n filled = input<boolean>(false);\n\n /** Show legend. */\n showLegend = input<boolean>(false);\n\n /** Use smooth curves. */\n smooth = input<boolean>(true);\n\n private readonly PL = 40;\n private readonly PR = 10;\n private readonly PT = 10;\n private readonly PB = 30;\n\n protected readonly viewBox = computed(\n () => `0 0 ${this.width()} ${this.height()}`\n );\n\n protected readonly allValues = computed(() => {\n const s = this.series();\n return s.flatMap((ser) => ser.data);\n });\n\n protected readonly minValue = computed(() =>\n this.allValues().length ? Math.min(...this.allValues()) : 0\n );\n\n protected readonly maxValue = computed(() =>\n this.allValues().length ? Math.max(...this.allValues()) : 0\n );\n\n protected readonly maxDataLength = computed(() =>\n Math.max(...this.series().map((s) => s.data.length), 0)\n );\n\n protected readonly plotArea = computed(() => ({\n x: this.PL,\n y: this.PT,\n w: this.width() - this.PL - this.PR,\n h: this.height() - this.PT - this.PB,\n }));\n\n protected readonly gridLines = computed(() => {\n if (!this.showGrid()) return [];\n const max = this.maxValue();\n const min = this.minValue();\n const range = max - min || 1;\n const steps = 4;\n const pa = this.plotArea();\n const lines: { y: number; label: string }[] = [];\n\n for (let i = 0; i <= steps; i++) {\n const val = min + (i / steps) * range;\n const y = pa.y + pa.h - (i / steps) * pa.h;\n lines.push({ y, label: String(Math.round(val * 10) / 10) });\n }\n return lines;\n });\n\n protected readonly xLabels = computed(() => {\n const lbls = this.labels();\n if (!this.showXLabels() || lbls.length === 0) return [];\n const pa = this.plotArea();\n const count = lbls.length;\n\n return lbls.map((label, i) => ({\n x: pa.x + (count > 1 ? (i / (count - 1)) * pa.w : pa.w / 2),\n y: this.height() - this.PB + 16,\n label,\n }));\n });\n\n protected readonly renderedSeries = computed(() => {\n const allSeries = this.series();\n const pa = this.plotArea();\n const min = this.minValue();\n const max = this.maxValue();\n const range = max - min || 1;\n\n return allSeries.map((ser, si) => {\n const color = ser.color || DEFAULT_COLORS[si % DEFAULT_COLORS.length];\n const points = ser.data.map((v, i) => ({\n x: pa.x + (ser.data.length > 1 ? (i / (ser.data.length - 1)) * pa.w : pa.w / 2),\n y: pa.y + pa.h - ((v - min) / range) * pa.h,\n }));\n\n let pathD = '';\n if (points.length >= 2) {\n if (this.smooth()) {\n pathD = `M${points[0].x},${points[0].y}`;\n for (let i = 0; i < points.length - 1; i++) {\n const p0 = points[Math.max(i - 1, 0)];\n const p1 = points[i];\n const p2 = points[i + 1];\n const p3 = points[Math.min(i + 2, points.length - 1)];\n const cp1x = p1.x + (p2.x - p0.x) / 6;\n const cp1y = p1.y + (p2.y - p0.y) / 6;\n const cp2x = p2.x - (p3.x - p1.x) / 6;\n const cp2y = p2.y - (p3.y - p1.y) / 6;\n pathD += ` C${cp1x},${cp1y} ${cp2x},${cp2y} ${p2.x},${p2.y}`;\n }\n } else {\n pathD = points.map((p, i) => `${i === 0 ? 'M' : 'L'}${p.x},${p.y}`).join(' ');\n }\n }\n\n let areaD = '';\n if (this.filled() && pathD && points.length >= 2) {\n const lastX = points[points.length - 1].x;\n const firstX = points[0].x;\n const bottomY = pa.y + pa.h;\n areaD = `${pathD} L${lastX},${bottomY} L${firstX},${bottomY} Z`;\n }\n\n return {\n label: ser.label,\n color,\n pathD,\n areaD,\n points: this.showDots() ? points : [],\n };\n });\n });\n\n protected readonly axisLine = computed(() => {\n const pa = this.plotArea();\n return {\n vx1: pa.x, vy1: pa.y,\n vx2: pa.x, vy2: pa.y + pa.h,\n hx1: pa.x, hy1: pa.y + pa.h,\n hx2: pa.x + pa.w, hy2: pa.y + pa.h,\n };\n });\n\n protected readonly legendItems = computed(() => {\n if (!this.showLegend()) return [];\n return this.renderedSeries().map((s) => ({\n label: s.label,\n color: s.color,\n }));\n });\n}\n","<div class=\"lc-line-chart\">\n <svg\n [attr.width]=\"width()\"\n [attr.height]=\"height()\"\n [attr.viewBox]=\"viewBox()\"\n role=\"img\"\n aria-label=\"Line chart\"\n class=\"lc-line-chart__svg\"\n >\n <!-- Grid lines -->\n @for (line of gridLines(); track line.y) {\n <line\n [attr.x1]=\"axisLine().hx1\"\n [attr.y1]=\"line.y\"\n [attr.x2]=\"axisLine().hx2\"\n [attr.y2]=\"line.y\"\n class=\"lc-line-chart__grid-line\"\n />\n @if (showYLabels()) {\n <text\n [attr.x]=\"axisLine().vx1 - 6\"\n [attr.y]=\"line.y\"\n text-anchor=\"end\"\n dominant-baseline=\"central\"\n class=\"lc-line-chart__y-label\"\n >\n {{ line.label }}\n </text>\n }\n }\n\n <!-- Axes -->\n <line\n [attr.x1]=\"axisLine().vx1\"\n [attr.y1]=\"axisLine().vy1\"\n [attr.x2]=\"axisLine().vx2\"\n [attr.y2]=\"axisLine().vy2\"\n class=\"lc-line-chart__axis\"\n />\n <line\n [attr.x1]=\"axisLine().hx1\"\n [attr.y1]=\"axisLine().hy1\"\n [attr.x2]=\"axisLine().hx2\"\n [attr.y2]=\"axisLine().hy2\"\n class=\"lc-line-chart__axis\"\n />\n\n <!-- X labels -->\n @for (lbl of xLabels(); track lbl.x) {\n <text\n [attr.x]=\"lbl.x\"\n [attr.y]=\"lbl.y\"\n text-anchor=\"middle\"\n class=\"lc-line-chart__x-label\"\n >\n {{ lbl.label }}\n </text>\n }\n\n <!-- Series -->\n @for (ser of renderedSeries(); track ser.label) {\n @if (ser.areaD) {\n <path\n [attr.d]=\"ser.areaD\"\n [attr.fill]=\"ser.color\"\n class=\"lc-line-chart__area\"\n />\n }\n @if (ser.pathD) {\n <path\n [attr.d]=\"ser.pathD\"\n [attr.stroke]=\"ser.color\"\n [attr.stroke-width]=\"strokeWidth()\"\n fill=\"none\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n class=\"lc-line-chart__line\"\n />\n }\n @for (pt of ser.points; track $index) {\n <circle\n [attr.cx]=\"pt.x\"\n [attr.cy]=\"pt.y\"\n r=\"3\"\n [attr.fill]=\"ser.color\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n class=\"lc-line-chart__dot\"\n />\n }\n }\n </svg>\n\n @if (legendItems().length > 0) {\n <div class=\"lc-line-chart__legend\">\n @for (item of legendItems(); track item.label) {\n <div class=\"lc-line-chart__legend-item\">\n <span class=\"lc-line-chart__legend-line\" [style.background-color]=\"item.color\"></span>\n <span class=\"lc-line-chart__legend-label\">{{ item.label }}</span>\n </div>\n }\n </div>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n computed,\n} from '@angular/core';\n\nexport type GaugeColor = 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'info';\nexport type GaugeSize = 'sm' | 'md' | 'lg';\n\n@Component({\n selector: 'lc-gauge',\n standalone: true,\n templateUrl: './gauge.component.html',\n styleUrls: ['./gauge.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n/**\n * Gauge component for displaying a value on a semicircular scale.\n *\n * Features:\n * - Semicircle arc with value and track segments\n * - Color theme variants (primary, secondary, success, warning, error)\n * - Size presets (sm, md, lg)\n * - Configurable max value and suffix\n * - Optional numeric value display\n * - Responsive SVG rendering\n *\n * @example\n * ```html\n * <lc-gauge [value]=\"75\" [max]=\"100\" color=\"primary\" label=\"CPU\" suffix=\"%\" />\n * ```\n */\nexport class GaugeComponent {\n /** Value between 0 and max. */\n value = input<number>(0);\n\n /** Maximum value. */\n max = input<number>(100);\n\n /** Color theme. */\n color = input<GaugeColor>('primary');\n\n /** Size preset. */\n size = input<GaugeSize>('md');\n\n /** Label text below the value. */\n label = input<string>('');\n\n /** Value suffix (e.g. '%', '°C'). */\n suffix = input<string>('%');\n\n /** Show the value in the center. */\n showValue = input<boolean>(true);\n\n private readonly SIZE_MAP: Record<GaugeSize, number> = { sm: 100, md: 160, lg: 220 };\n\n protected readonly svgSize = computed(() => this.SIZE_MAP[this.size()]);\n protected readonly svgHeight = computed(() => {\n const s = this.svgSize();\n const sw = this.strokeW();\n const r = (s - sw * 2) / 2;\n // height = stroke padding + radius (arc) + text area\n return sw + r + 36;\n });\n protected readonly viewBox = computed(() => {\n const s = this.svgSize();\n return `0 0 ${s} ${this.svgHeight()}`;\n });\n\n protected readonly cx = computed(() => this.svgSize() / 2);\n protected readonly cy = computed(() => {\n const sw = this.strokeW();\n const r = (this.svgSize() - sw * 2) / 2;\n return sw + r;\n });\n protected readonly radius = computed(() => (this.svgSize() - this.strokeW() * 2) / 2);\n protected readonly strokeW = computed(() => {\n const map: Record<GaugeSize, number> = { sm: 8, md: 12, lg: 16 };\n return map[this.size()];\n });\n\n protected readonly fraction = computed(() => {\n const m = this.max() || 1;\n return Math.min(Math.max(this.value() / m, 0), 1);\n });\n\n protected readonly trackD = computed(() => {\n const r = this.radius();\n const cxv = this.cx();\n const cyv = this.cy();\n return `M${cxv - r},${cyv} A${r},${r} 0 0 1 ${cxv + r},${cyv}`;\n });\n\n protected readonly valueD = computed(() => {\n const r = this.radius();\n const cxv = this.cx();\n const cyv = this.cy();\n const f = this.fraction();\n if (f <= 0) return '';\n const angle = Math.PI * f;\n const x = cxv - r * Math.cos(angle);\n const y = cyv - r * Math.sin(angle);\n return `M${cxv - r},${cyv} A${r},${r} 0 0 1 ${x},${y}`;\n });\n\n protected readonly displayValue = computed(() =>\n `${Math.round(this.value())}${this.suffix()}`\n );\n\n protected readonly valueFontSize = computed(() => {\n const map: Record<GaugeSize, string> = { sm: '1rem', md: '1.5rem', lg: '2rem' };\n return map[this.size()];\n });\n\n protected readonly labelFontSize = computed(() => {\n const map: Record<GaugeSize, string> = { sm: '0.625rem', md: '0.75rem', lg: '0.875rem' };\n return map[this.size()];\n });\n}\n","<svg\n [attr.width]=\"svgSize()\"\n [attr.height]=\"svgHeight()\"\n [attr.viewBox]=\"viewBox()\"\n class=\"lc-gauge\"\n role=\"img\"\n aria-label=\"Gauge chart\"\n>\n <path\n [attr.d]=\"trackD()\"\n [attr.stroke-width]=\"strokeW()\"\n fill=\"none\"\n stroke-linecap=\"round\"\n class=\"lc-gauge__track\"\n />\n\n @if (valueD()) {\n <path\n [attr.d]=\"valueD()\"\n [attr.stroke-width]=\"strokeW()\"\n fill=\"none\"\n stroke-linecap=\"round\"\n [class]=\"'lc-gauge__value-arc lc-gauge__value-arc--' + color()\"\n />\n }\n\n @if (showValue()) {\n <text\n [attr.x]=\"cx()\"\n [attr.y]=\"cy() + 8\"\n text-anchor=\"middle\"\n dominant-baseline=\"auto\"\n class=\"lc-gauge__value-text\"\n [style.font-size]=\"valueFontSize()\"\n >\n {{ displayValue() }}\n </text>\n }\n\n @if (label()) {\n <text\n [attr.x]=\"cx()\"\n [attr.y]=\"cy() + 24\"\n text-anchor=\"middle\"\n dominant-baseline=\"auto\"\n class=\"lc-gauge__label\"\n [style.font-size]=\"labelFontSize()\"\n >\n {{ label() }}\n </text>\n }\n</svg>\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n computed,\n} from '@angular/core';\n\nexport interface StackedBarCategory {\n label: string;\n values: number[];\n}\n\nexport interface StackedBarLegend {\n label: string;\n color?: string;\n}\n\nexport type StackedBarOrientation = 'vertical' | 'horizontal';\n\nconst DEFAULT_COLORS = [\n 'var(--color-primary-500)',\n 'var(--color-secondary-500)',\n 'var(--color-success-default)',\n 'var(--color-warning-default)',\n 'var(--color-error-default)',\n 'var(--color-info-default)',\n 'var(--color-primary-300)',\n 'var(--color-secondary-300)',\n];\n\n@Component({\n selector: 'lc-stacked-bar-chart',\n standalone: true,\n templateUrl: './stacked-bar-chart.component.html',\n styleUrls: ['./stacked-bar-chart.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n/**\n * Stacked bar chart component for comparing category compositions.\n *\n * Features:\n * - Multiple stacked value segments per category\n * - Vertical and horizontal orientation\n * - Optional legend, grid, value labels, and axis labels\n * - Configurable bar gap spacing\n * - Color-coded segments with legend mapping\n * - Responsive SVG rendering\n *\n * @example\n * ```html\n * <lc-stacked-bar-chart [categories]=\"data\" [legends]=\"legends\" [showLegend]=\"true\" />\n * ```\n */\nexport class StackedBarChartComponent {\n /** Categories with stacked values. */\n categories = input.required<StackedBarCategory[]>();\n\n /** Legend items mapping to each value index. */\n legends = input<StackedBarLegend[]>([]);\n\n width = input<number>(400);\n height = input<number>(200);\n orientation = input<StackedBarOrientation>('vertical');\n showLabels = input<boolean>(true);\n showValues = input<boolean>(false);\n showLegend = input<boolean>(true);\n showGrid = input<boolean>(true);\n barGap = input<number>(0.3);\n\n private readonly PL = 40;\n private readonly PR = 10;\n private readonly PT = 10;\n private readonly PB = 30;\n\n protected readonly viewBox = computed(() => `0 0 ${this.width()} ${this.height()}`);\n\n protected readonly maxTotal = computed(() => {\n const cats = this.categories();\n if (!cats.length) return 0;\n return Math.max(...cats.map(c => c.values.reduce((a, b) => a + b, 0)));\n });\n\n protected readonly gridLines = computed(() => {\n if (!this.showGrid() || this.orientation() !== 'vertical') return [];\n const max = this.maxTotal();\n if (!max) return [];\n const steps = 4;\n const stepVal = Math.ceil(max / steps);\n const plotH = this.height() - this.PT - this.PB;\n const lines: { y: number; label: string }[] = [];\n for (let i = 0; i <= steps; i++) {\n const val = i * stepVal;\n const y = this.PT + plotH - (val / (stepVal * steps)) * plotH;\n lines.push({ y, label: String(val) });\n }\n return lines;\n });\n\n protected readonly stacks = computed(() => {\n const cats = this.categories();\n const legs = this.legends();\n if (!cats.length) return [];\n\n const w = this.width();\n const h = this.height();\n const isV = this.orientation() === 'vertical';\n const plotW = w - this.PL - this.PR;\n const plotH = h - this.PT - this.PB;\n const max = this.maxTotal() || 1;\n const gap = this.barGap();\n\n return cats.map((cat, ci) => {\n const total = cat.values.reduce((a, b) => a + b, 0);\n let cumulative = 0;\n\n const segments = cat.values.map((val, vi) => {\n const color = legs[vi]?.color || DEFAULT_COLORS[vi % DEFAULT_COLORS.length];\n const frac = val / max;\n let rect: { x: number; y: number; w: number; h: number };\n\n if (isV) {\n const totalBarW = plotW / cats.length;\n const barW = totalBarW * (1 - gap);\n const barOff = (totalBarW - barW) / 2;\n const segH = frac * plotH;\n rect = {\n x: this.PL + ci * totalBarW + barOff,\n y: this.PT + plotH - (cumulative / max) * plotH - segH,\n w: barW,\n h: segH,\n };\n } else {\n const totalBarH = plotH / cats.length;\n const barH = totalBarH * (1 - gap);\n const barOff = (totalBarH - barH) / 2;\n const segW = frac * plotW;\n rect = {\n x: this.PL + (cumulative / max) * plotW,\n y: this.PT + ci * totalBarH + barOff,\n w: segW,\n h: barH,\n };\n }\n\n cumulative += val;\n return { ...rect, color, value: val };\n });\n\n const labelPos = isV\n ? { x: this.PL + (ci + 0.5) * (plotW / cats.length), y: h - this.PB + 16 }\n : { x: this.PL - 6, y: this.PT + (ci + 0.5) * (plotH / cats.length) };\n\n return { label: cat.label, segments, labelPos, total };\n });\n });\n\n protected readonly legendItems = computed(() => {\n const legs = this.legends();\n return legs.map((l, i) => ({\n label: l.label,\n color: l.color || DEFAULT_COLORS[i % DEFAULT_COLORS.length],\n }));\n });\n\n protected readonly isVertical = computed(() => this.orientation() === 'vertical');\n\n protected readonly axisLine = computed(() => ({\n vx1: this.PL, vy1: this.PT,\n vx2: this.PL, vy2: this.height() - this.PB,\n hx1: this.PL, hy1: this.height() - this.PB,\n hx2: this.width() - this.PR, hy2: this.height() - this.PB,\n }));\n}\n","<div class=\"lc-stacked-bar-chart\">\n <svg\n [attr.width]=\"width()\"\n [attr.height]=\"height()\"\n [attr.viewBox]=\"viewBox()\"\n role=\"img\"\n aria-label=\"Stacked bar chart\"\n class=\"lc-stacked-bar-chart__svg\"\n >\n @if (showGrid() && isVertical()) {\n @for (line of gridLines(); track line.y) {\n <line [attr.x1]=\"axisLine().hx1\" [attr.y1]=\"line.y\" [attr.x2]=\"axisLine().hx2\" [attr.y2]=\"line.y\" class=\"lc-stacked-bar-chart__grid\" />\n <text [attr.x]=\"axisLine().vx1 - 6\" [attr.y]=\"line.y\" text-anchor=\"end\" dominant-baseline=\"central\" class=\"lc-stacked-bar-chart__grid-label\">{{ line.label }}</text>\n }\n }\n\n <line [attr.x1]=\"axisLine().vx1\" [attr.y1]=\"axisLine().vy1\" [attr.x2]=\"axisLine().vx2\" [attr.y2]=\"axisLine().vy2\" class=\"lc-stacked-bar-chart__axis\" />\n <line [attr.x1]=\"axisLine().hx1\" [attr.y1]=\"axisLine().hy1\" [attr.x2]=\"axisLine().hx2\" [attr.y2]=\"axisLine().hy2\" class=\"lc-stacked-bar-chart__axis\" />\n\n @for (stack of stacks(); track stack.label) {\n @for (seg of stack.segments; track $index) {\n <rect [attr.x]=\"seg.x\" [attr.y]=\"seg.y\" [attr.width]=\"seg.w\" [attr.height]=\"seg.h\" [attr.fill]=\"seg.color\" class=\"lc-stacked-bar-chart__segment\" />\n }\n @if (showLabels()) {\n <text [attr.x]=\"stack.labelPos.x\" [attr.y]=\"stack.labelPos.y\" [attr.text-anchor]=\"isVertical() ? 'middle' : 'end'\" [attr.dominant-baseline]=\"isVertical() ? 'auto' : 'central'\" class=\"lc-stacked-bar-chart__label\">{{ stack.label }}</text>\n }\n }\n </svg>\n\n @if (showLegend() && legendItems().length) {\n <div class=\"lc-stacked-bar-chart__legend\">\n @for (item of legendItems(); track item.label) {\n <div class=\"lc-stacked-bar-chart__legend-item\">\n <span class=\"lc-stacked-bar-chart__legend-dot\" [style.background-color]=\"item.color\"></span>\n <span class=\"lc-stacked-bar-chart__legend-text\">{{ item.label }}</span>\n </div>\n }\n </div>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n computed,\n} from '@angular/core';\n\nexport interface AreaChartSeries {\n label: string;\n data: number[];\n color?: string;\n}\n\nconst DEFAULT_COLORS = [\n 'var(--color-primary-500)',\n 'var(--color-secondary-500)',\n 'var(--color-success-default)',\n 'var(--color-warning-default)',\n 'var(--color-error-default)',\n 'var(--color-info-default)',\n];\n\n@Component({\n selector: 'lc-area-chart',\n standalone: true,\n templateUrl: './area-chart.component.html',\n styleUrls: ['./area-chart.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n/**\n * Area chart component for visualizing trends over time.\n *\n * Features:\n * - Multiple data series with stacking support\n * - Smooth or linear curve interpolation\n * - Configurable fill opacity for area shading\n * - Optional grid, axis labels, dots, and legend\n * - Responsive SVG rendering with configurable dimensions\n *\n * @example\n * ```html\n * <lc-area-chart [series]=\"data\" [labels]=\"months\" [showLegend]=\"true\" />\n * ```\n */\nexport class AreaChartComponent {\n series = input.required<AreaChartSeries[]>();\n labels = input<string[]>([]);\n width = input<number>(400);\n height = input<number>(200);\n strokeWidth = input<number>(2);\n showDots = input<boolean>(false);\n showGrid = input<boolean>(true);\n showXLabels = input<boolean>(true);\n showYLabels = input<boolean>(true);\n showLegend = input<boolean>(false);\n smooth = input<boolean>(true);\n /** Opacity for the filled area (0–1). */\n fillOpacity = input<number>(0.2);\n /** Stack areas on top of each other. */\n stacked = input<boolean>(false);\n\n private readonly PL = 40;\n private readonly PR = 10;\n private readonly PT = 10;\n private readonly PB = 30;\n\n protected readonly viewBox = computed(() => `0 0 ${this.width()} ${this.height()}`);\n\n protected readonly plotArea = computed(() => ({\n x: this.PL, y: this.PT,\n w: this.width() - this.PL - this.PR,\n h: this.height() - this.PT - this.PB,\n }));\n\n protected readonly computedSeries = computed(() => {\n const allSeries = this.series();\n if (!allSeries.length) return [];\n\n if (this.stacked()) {\n const maxLen = Math.max(...allSeries.map(s => s.data.length));\n const stackedData: number[][] = [];\n const cumulative = new Array(maxLen).fill(0);\n\n for (const ser of allSeries) {\n const row = ser.data.map((v, i) => {\n cumulative[i] = (cumulative[i] || 0) + v;\n return cumulative[i];\n });\n stackedData.push(row);\n }\n return allSeries.map((ser, i) => ({\n ...ser,\n computedData: stackedData[i],\n prevData: i > 0 ? stackedData[i - 1] : null,\n }));\n }\n\n return allSeries.map(ser => ({\n ...ser,\n computedData: ser.data,\n prevData: null as number[] | null,\n }));\n });\n\n protected readonly minValue = computed(() => {\n if (this.stacked()) return 0;\n const all = this.series().flatMap(s => s.data);\n return all.length ? Math.min(...all, 0) : 0;\n });\n\n protected readonly maxValue = computed(() => {\n const cs = this.computedSeries();\n if (!cs.length) return 0;\n return Math.max(...cs.flatMap(s => s.computedData));\n });\n\n protected readonly gridLines = computed(() => {\n if (!this.showGrid()) return [];\n const min = this.minValue();\n const max = this.maxValue();\n const range = max - min || 1;\n const pa = this.plotArea();\n const steps = 4;\n const lines: { y: number; label: string }[] = [];\n for (let i = 0; i <= steps; i++) {\n const val = min + (i / steps) * range;\n const y = pa.y + pa.h - (i / steps) * pa.h;\n lines.push({ y, label: String(Math.round(val * 10) / 10) });\n }\n return lines;\n });\n\n protected readonly xLabelItems = computed(() => {\n const lbls = this.labels();\n if (!this.showXLabels() || !lbls.length) return [];\n const pa = this.plotArea();\n return lbls.map((l, i) => ({\n x: pa.x + (lbls.length > 1 ? (i / (lbls.length - 1)) * pa.w : pa.w / 2),\n y: this.height() - this.PB + 16,\n label: l,\n }));\n });\n\n private toPoints(data: number[]) {\n const pa = this.plotArea();\n const min = this.minValue();\n const max = this.maxValue();\n const range = max - min || 1;\n return data.map((v, i) => ({\n x: pa.x + (data.length > 1 ? (i / (data.length - 1)) * pa.w : pa.w / 2),\n y: pa.y + pa.h - ((v - min) / range) * pa.h,\n }));\n }\n\n private buildPath(points: { x: number; y: number }[]) {\n if (points.length < 2) return '';\n if (this.smooth()) {\n let d = `M${points[0].x},${points[0].y}`;\n for (let i = 0; i < points.length - 1; i++) {\n const p0 = points[Math.max(i - 1, 0)];\n const p1 = points[i];\n const p2 = points[i + 1];\n const p3 = points[Math.min(i + 2, points.length - 1)];\n const cp1x = p1.x + (p2.x - p0.x) / 6;\n const cp1y = p1.y + (p2.y - p0.y) / 6;\n const cp2x = p2.x - (p3.x - p1.x) / 6;\n const cp2y = p2.y - (p3.y - p1.y) / 6;\n d += ` C${cp1x},${cp1y} ${cp2x},${cp2y} ${p2.x},${p2.y}`;\n }\n return d;\n }\n return points.map((p, i) => `${i === 0 ? 'M' : 'L'}${p.x},${p.y}`).join(' ');\n }\n\n protected readonly renderedSeries = computed(() => {\n const cs = this.computedSeries();\n const pa = this.plotArea();\n const bottomY = pa.y + pa.h;\n\n return cs.map((ser, si) => {\n const color = ser.color || DEFAULT_COLORS[si % DEFAULT_COLORS.length];\n const points = this.toPoints(ser.computedData);\n const lineD = this.buildPath(points);\n\n let areaD = '';\n if (lineD && points.length >= 2) {\n if (ser.prevData) {\n const prevPoints = this.toPoints(ser.prevData).reverse();\n const prevPath = prevPoints.map((p, i) => `${i === 0 ? 'L' : 'L'}${p.x},${p.y}`).join(' ');\n areaD = `${lineD} ${prevPath} Z`;\n } else {\n const lastX = points[points.length - 1].x;\n const firstX = points[0].x;\n areaD = `${lineD} L${lastX},${bottomY} L${firstX},${bottomY} Z`;\n }\n }\n\n return {\n label: ser.label,\n color,\n lineD,\n areaD,\n points: this.showDots() ? points : [],\n };\n });\n });\n\n protected readonly axisLine = computed(() => {\n const pa = this.plotArea();\n return {\n vx1: pa.x, vy1: pa.y, vx2: pa.x, vy2: pa.y + pa.h,\n hx1: pa.x, hy1: pa.y + pa.h, hx2: pa.x + pa.w, hy2: pa.y + pa.h,\n };\n });\n\n protected readonly legendItems = computed(() => {\n if (!this.showLegend()) return [];\n return this.renderedSeries().map(s => ({ label: s.label, color: s.color }));\n });\n}\n","<div class=\"lc-area-chart\">\n <svg [attr.width]=\"width()\" [attr.height]=\"height()\" [attr.viewBox]=\"viewBox()\" role=\"img\" aria-label=\"Area chart\" class=\"lc-area-chart__svg\">\n @for (line of gridLines(); track line.y) {\n <line [attr.x1]=\"axisLine().hx1\" [attr.y1]=\"line.y\" [attr.x2]=\"axisLine().hx2\" [attr.y2]=\"line.y\" class=\"lc-area-chart__grid\" />\n @if (showYLabels()) {\n <text [attr.x]=\"axisLine().vx1 - 6\" [attr.y]=\"line.y\" text-anchor=\"end\" dominant-baseline=\"central\" class=\"lc-area-chart__axis-label\">{{ line.label }}</text>\n }\n }\n\n <line [attr.x1]=\"axisLine().vx1\" [attr.y1]=\"axisLine().vy1\" [attr.x2]=\"axisLine().vx2\" [attr.y2]=\"axisLine().vy2\" class=\"lc-area-chart__axis\" />\n <line [attr.x1]=\"axisLine().hx1\" [attr.y1]=\"axisLine().hy1\" [attr.x2]=\"axisLine().hx2\" [attr.y2]=\"axisLine().hy2\" class=\"lc-area-chart__axis\" />\n\n @for (lbl of xLabelItems(); track lbl.x) {\n <text [attr.x]=\"lbl.x\" [attr.y]=\"lbl.y\" text-anchor=\"middle\" class=\"lc-area-chart__axis-label\">{{ lbl.label }}</text>\n }\n\n @for (ser of renderedSeries(); track ser.label) {\n @if (ser.areaD) {\n <path [attr.d]=\"ser.areaD\" [attr.fill]=\"ser.color\" [attr.opacity]=\"fillOpacity()\" class=\"lc-area-chart__area\" />\n }\n @if (ser.lineD) {\n <path [attr.d]=\"ser.lineD\" [attr.stroke]=\"ser.color\" [attr.stroke-width]=\"strokeWidth()\" fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lc-area-chart__line\" />\n }\n @for (pt of ser.points; track $index) {\n <circle [attr.cx]=\"pt.x\" [attr.cy]=\"pt.y\" r=\"3\" [attr.fill]=\"ser.color\" stroke=\"white\" stroke-width=\"1.5\" class=\"lc-area-chart__dot\" />\n }\n }\n </svg>\n\n @if (legendItems().length) {\n <div class=\"lc-area-chart__legend\">\n @for (item of legendItems(); track item.label) {\n <div class=\"lc-area-chart__legend-item\">\n <span class=\"lc-area-chart__legend-swatch\" [style.background-color]=\"item.color\"></span>\n <span class=\"lc-area-chart__legend-text\">{{ item.label }}</span>\n </div>\n }\n </div>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n computed,\n} from '@angular/core';\n\nexport interface HeatmapCell {\n row: number;\n col: number;\n value: number;\n}\n\n@Component({\n selector: 'lc-heatmap',\n standalone: true,\n templateUrl: './heatmap.component.html',\n styleUrls: ['./heatmap.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n/**\n * Heatmap component for visualizing 2D data density.\n *\n * Features:\n * - Color-interpolated cells from min to max value\n * - Configurable cell size, gap, and corner radius\n * - Custom min/max color range\n * - Optional row and column labels\n * - Optional value display within cells\n * - Responsive SVG rendering\n *\n * @example\n * ```html\n * <lc-heatmap [data]=\"matrix\" [rowLabels]=\"days\" [colLabels]=\"hours\" />\n * ```\n */\nexport class HeatmapComponent {\n /** 2D data: array of rows, each row an array of values. */\n data = input.required<number[][]>();\n\n /** Row labels (Y axis). */\n rowLabels = input<string[]>([]);\n\n /** Column labels (X axis). */\n colLabels = input<string[]>([]);\n\n /** Cell size in pixels. */\n cellSize = input<number>(28);\n\n /** Gap between cells in pixels. */\n cellGap = input<number>(2);\n\n /** Low-value color. */\n colorMin = input<string>('var(--color-primary-50)');\n\n /** High-value color. */\n colorMax = input<string>('var(--color-primary-500)');\n\n /** Show values inside cells. */\n showValues = input<boolean>(false);\n\n /** Corner radius of cells. */\n cellRadius = input<number>(3);\n\n private readonly LABEL_W = 60;\n private readonly LABEL_H = 20;\n\n protected readonly minVal = computed(() => {\n const flat = this.data().flat();\n return flat.length ? Math.min(...flat) : 0;\n });\n\n protected readonly maxVal = computed(() => {\n const flat = this.data().flat();\n return flat.length ? Math.max(...flat) : 0;\n });\n\n protected readonly rows = computed(() => this.data().length);\n protected readonly cols = computed(() => {\n const d = this.data();\n return d.length ? Math.max(...d.map(r => r.length)) : 0;\n });\n\n protected readonly svgWidth = computed(() =>\n (this.rowLabels().length ? this.LABEL_W : 0) + this.cols() * (this.cellSize() + this.cellGap())\n );\n\n protected readonly svgHeight = computed(() =>\n (this.colLabels().length ? this.LABEL_H : 0) + this.rows() * (this.cellSize() + this.cellGap())\n );\n\n protected readonly viewBox = computed(() => `0 0 ${this.svgWidth()} ${this.svgHeight()}`);\n\n protected readonly offsetX = computed(() => this.rowLabels().length ? this.LABEL_W : 0);\n protected readonly offsetY = computed(() => this.colLabels().length ? this.LABEL_H : 0);\n\n protected readonly cells = computed(() => {\n const d = this.data();\n const cs = this.cellSize();\n const cg = this.cellGap();\n const ox = this.offsetX();\n const oy = this.offsetY();\n const min = this.minVal();\n const max = this.maxVal();\n const range = max - min || 1;\n\n const result: {\n x: number; y: number; w: number; h: number;\n value: number; opacity: number;\n }[] = [];\n\n for (let r = 0; r < d.length; r++) {\n for (let c = 0; c < d[r].length; c++) {\n const val = d[r][c];\n const t = (val - min) / range;\n result.push({\n x: ox + c * (cs + cg),\n y: oy + r * (cs + cg),\n w: cs,\n h: cs,\n value: val,\n opacity: 0.1 + t * 0.9,\n });\n }\n }\n return result;\n });\n\n protected readonly rowLabelItems = computed(() => {\n const labels = this.rowLabels();\n if (!labels.length) return [];\n const cs = this.cellSize();\n const cg = this.cellGap();\n const oy = this.offsetY();\n return labels.map((l, i) => ({\n x: this.LABEL_W - 6,\n y: oy + i * (cs + cg) + cs / 2,\n label: l,\n }));\n });\n\n protected readonly colLabelItems = computed(() => {\n const labels = this.colLabels();\n if (!labels.length) return [];\n const cs = this.cellSize();\n const cg = this.cellGap();\n const ox = this.offsetX();\n return labels.map((l, i) => ({\n x: ox + i * (cs + cg) + cs / 2,\n y: this.LABEL_H - 4,\n label: l,\n }));\n });\n}\n","<svg [attr.width]=\"svgWidth()\" [attr.height]=\"svgHeight()\" [attr.viewBox]=\"viewBox()\" role=\"img\" aria-label=\"Heatmap\" class=\"lc-heatmap\">\n @for (lbl of rowLabelItems(); track lbl.y) {\n <text [attr.x]=\"lbl.x\" [attr.y]=\"lbl.y\" text-anchor=\"end\" dominant-baseline=\"central\" class=\"lc-heatmap__label\">{{ lbl.label }}</text>\n }\n\n @for (lbl of colLabelItems(); track lbl.x) {\n <text [attr.x]=\"lbl.x\" [attr.y]=\"lbl.y\" text-anchor=\"middle\" class=\"lc-heatmap__label\">{{ lbl.label }}</text>\n }\n\n @for (cell of cells(); track $index) {\n <rect\n [attr.x]=\"cell.x\" [attr.y]=\"cell.y\" [attr.width]=\"cell.w\" [attr.height]=\"cell.h\"\n [attr.rx]=\"cellRadius()\" [attr.fill]=\"colorMax()\" [attr.opacity]=\"cell.opacity\"\n class=\"lc-heatmap__cell\"\n />\n @if (showValues()) {\n <text [attr.x]=\"cell.x + cell.w / 2\" [attr.y]=\"cell.y + cell.h / 2\" text-anchor=\"middle\" dominant-baseline=\"central\" class=\"lc-heatmap__cell-value\">{{ cell.value }}</text>\n }\n }\n</svg>\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n computed,\n} from '@angular/core';\n\nexport interface PieSegment {\n value: number;\n label?: string;\n color?: string;\n}\n\nexport type PieChartSize = 'sm' | 'md' | 'lg';\n\nconst DEFAULT_COLORS = [\n 'var(--color-primary-500)',\n 'var(--color-secondary-500)',\n 'var(--color-success-default)',\n 'var(--color-warning-default)',\n 'var(--color-error-default)',\n 'var(--color-info-default)',\n 'var(--color-primary-300)',\n 'var(--color-secondary-300)',\n];\n\n@Component({\n selector: 'lc-pie-chart',\n standalone: true,\n templateUrl: './pie-chart.component.html',\n styleUrls: ['./pie-chart.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n/**\n * Pie chart component for displaying proportional data.\n *\n * Features:\n * - Color-coded segments with automatic arc calculation\n * - Size presets (sm, md, lg)\n * - Optional legend display\n * - Hover state support\n * - Responsive SVG rendering\n *\n * @example\n * ```html\n * <lc-pie-chart [segments]=\"data\" size=\"md\" [showLegend]=\"true\" />\n * ```\n */\nexport class PieChartComponent {\n segments = input.required<PieSegment[]>();\n size = input<PieChartSize>('md');\n showLegend = input<boolean>(false);\n\n private readonly SIZE_MAP: Record<PieChartSize, number> = { sm: 96, md: 140, lg: 200 };\n\n protected readonly svgSize = computed(() => this.SIZE_MAP[this.size()]);\n protected readonly viewBox = computed(() => `0 0 ${this.svgSize()} ${this.svgSize()}`);\n protected readonly center = computed(() => this.svgSize() / 2);\n protected readonly radius = computed(() => this.svgSize() / 2 - 2);\n\n protected readonly arcs = computed(() => {\n const segs = this.segments();\n if (!segs?.length) return [];\n const total = segs.reduce((s, seg) => s + seg.value, 0);\n if (!total) return [];\n\n const cx = this.center();\n const cy = this.center();\n const r = this.radius();\n let startAngle = -Math.PI / 2;\n const gap = segs.length > 1 ? 0.02 : 0;\n\n return segs.map((seg, i) => {\n const frac = seg.value / total;\n const sweep = frac * Math.PI * 2 - gap;\n const endAngle = startAngle + sweep;\n const large = sweep > Math.PI ? 1 : 0;\n\n const x1 = cx + r * Math.cos(startAngle);\n const y1 = cy + r * Math.sin(startAngle);\n const x2 = cx + r * Math.cos(endAngle);\n const y2 = cy + r * Math.sin(endAngle);\n\n const d = segs.length === 1\n ? `M${cx - r},${cy} A${r},${r} 0 1 1 ${cx - r - 0.01},${cy} Z`\n : `M${cx},${cy} L${x1},${y1} A${r},${r} 0 ${large} 1 ${x2},${y2} Z`;\n\n startAngle = endAngle + gap;\n\n return {\n d,\n color: seg.color || DEFAULT_COLORS[i % DEFAULT_COLORS.length],\n label: seg.label || '',\n percentage: Math.round(frac * 100),\n };\n });\n });\n\n protected readonly legendItems = computed(() =>\n this.arcs().map(a => ({ color: a.color, label: a.label, percentage: a.percentage }))\n );\n}\n","<div class=\"lc-pie-chart\">\n <svg [attr.width]=\"svgSize()\" [attr.height]=\"svgSize()\" [attr.viewBox]=\"viewBox()\" role=\"img\" aria-label=\"Pie chart\" class=\"lc-pie-chart__svg\">\n @for (arc of arcs(); track arc.label) {\n <path [attr.d]=\"arc.d\" [attr.fill]=\"arc.color\" class=\"lc-pie-chart__segment\" />\n }\n </svg>\n\n @if (showLegend()) {\n <div class=\"lc-pie-chart__legend\">\n @for (item of legendItems(); track item.label) {\n <div class=\"lc-pie-chart__legend-item\">\n <span class=\"lc-pie-chart__legend-dot\" [style.background-color]=\"item.color\"></span>\n <span class=\"lc-pie-chart__legend-label\">{{ item.label }}</span>\n <span class=\"lc-pie-chart__legend-pct\">{{ item.percentage }}%</span>\n </div>\n }\n </div>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n computed,\n} from '@angular/core';\n\nexport interface RadarChartSeries {\n label: string;\n data: number[];\n color?: string;\n}\n\n@Component({\n selector: 'lc-radar-chart',\n standalone: true,\n templateUrl: './radar-chart.component.html',\n styleUrls: ['./radar-chart.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n/**\n * Radar chart component for multi-axis data comparison.\n *\n * Features:\n * - Multiple data series overlay\n * - Configurable concentric grid rings\n * - Axis labels with configurable max values\n * - Adjustable fill opacity per series\n * - Optional legend display\n * - Responsive SVG rendering\n *\n * @example\n * ```html\n * <lc-radar-chart [series]=\"data\" [axes]=\"categories\" [showLegend]=\"true\" />\n * ```\n */\nexport class RadarChartComponent {\n series = input.required<RadarChartSeries[]>();\n /** Axis labels. */\n axes = input<string[]>([]);\n /** Max value for each axis. */\n max = input<number>(100);\n /** SVG size in pixels. */\n size = input<number>(250);\n /** Number of concentric grid rings. */\n rings = input<number>(4);\n /** Show axis labels. */\n showLabels = input<boolean>(true);\n /** Fill opacity for series polygons. */\n fillOpacity = input<number>(0.15);\n /** Show legend. */\n showLegend = input<boolean>(false);\n\n protected readonly viewBox = computed(() => `0 0 ${this.size()} ${this.size()}`);\n protected readonly center = computed(() => this.size() / 2);\n protected readonly radius = computed(() => this.size() / 2 - 30);\n\n protected readonly axisCount = computed(() => {\n const s = this.series();\n return s.length ? Math.max(...s.map(ser => ser.data.length)) : 0;\n });\n\n protected readonly gridRings = computed(() => {\n const n = this.rings();\n const r = this.radius();\n const cx = this.center();\n const cy = this.center();\n const ac = this.axisCount();\n if (!ac) return [];\n\n return Array.from({ length: n }, (_, ri) => {\n const ringR = ((ri + 1) / n) * r;\n const points = Array.from({ length: ac }, (_, ai) => {\n const angle = (ai / ac) * Math.PI * 2 - Math.PI / 2;\n return `${cx + ringR * Math.cos(angle)},${cy + ringR * Math.sin(angle)}`;\n });\n return points.join(' ');\n });\n });\n\n protected readonly axisLines = computed(() => {\n const ac = this.axisCount();\n const cx = this.center();\n const cy = this.center();\n const r = this.radius();\n if (!ac) return [];\n\n return Array.from({ length: ac }, (_, i) => {\n const angle = (i / ac) * Math.PI * 2 - Math.PI / 2;\n return {\n x2: cx + r * Math.cos(angle),\n y2: cy + r * Math.sin(angle),\n };\n });\n });\n\n protected readonly labelItems = computed(() => {\n if (!this.showLabels()) return [];\n const ax = this.axes();\n const ac = this.axisCount();\n const cx = this.center();\n const cy = this.center();\n const r = this.radius() + 14;\n if (!ac) return [];\n\n return Array.from({ length: ac }, (_, i) => {\n const angle = (i / ac) * Math.PI * 2 - Math.PI / 2;\n const x = cx + r * Math.cos(angle);\n const y = cy + r * Math.sin(angle);\n const anchor = Math.abs(Math.cos(angle)) < 0.01 ? 'middle' :\n Math.cos(angle) > 0 ? 'start' : 'end';\n return { x, y, label: ax[i] || `Axis ${i + 1}`, anchor };\n });\n });\n\n protected readonly seriesPolygons = computed(() => {\n const allSeries = this.series();\n const cx = this.center();\n const cy = this.center();\n const r = this.radius();\n const m = this.max() || 1;\n const ac = this.axisCount();\n if (!ac) return [];\n\n return allSeries.map((ser, si) => {\n const points = ser.data.map((v, i) => {\n const angle = (i / ac) * Math.PI * 2 - Math.PI / 2;\n const vr = (Math.min(v, m) / m) * r;\n return `${cx + vr * Math.cos(angle)},${cy + vr * Math.sin(angle)}`;\n });\n return { points: points.join(' '), colorIndex: si % 8, customColor: ser.color || null, label: ser.label };\n });\n });\n\n protected readonly legendItems = computed(() => {\n if (!this.showLegend()) return [];\n return this.seriesPolygons().map(s => ({ label: s.label, colorIndex: s.colorIndex, customColor: s.customColor }));\n });\n}\n","<div class=\"lc-radar-chart\">\n <svg [attr.width]=\"size()\" [attr.height]=\"size()\" [attr.viewBox]=\"viewBox()\" role=\"img\" aria-label=\"Radar chart\" class=\"lc-radar-chart__svg\">\n @for (ring of gridRings(); track $index) {\n <polygon [attr.points]=\"ring\" class=\"lc-radar-chart__grid\" />\n }\n\n @for (axis of axisLines(); track $index) {\n <line [attr.x1]=\"center()\" [attr.y1]=\"center()\" [attr.x2]=\"axis.x2\" [attr.y2]=\"axis.y2\" class=\"lc-radar-chart__axis\" />\n }\n\n @for (ser of seriesPolygons(); track ser.label) {\n <polygon [attr.points]=\"ser.points\" [class]=\"'lc-radar-chart__polygon lc-radar-chart__polygon--' + ser.colorIndex\" [attr.fill]=\"ser.customColor\" [attr.stroke]=\"ser.customColor\" [attr.fill-opacity]=\"fillOpacity()\" stroke-width=\"2\" />\n }\n\n @for (lbl of labelItems(); track lbl.label) {\n <text [attr.x]=\"lbl.x\" [attr.y]=\"lbl.y\" [attr.text-anchor]=\"lbl.anchor\" dominant-baseline=\"central\" class=\"lc-radar-chart__label\">{{ lbl.label }}</text>\n }\n </svg>\n\n @if (legendItems().length) {\n <div class=\"lc-radar-chart__legend\">\n @for (item of legendItems(); track item.label) {\n <div class=\"lc-radar-chart__legend-item\">\n <span [class]=\"'lc-radar-chart__legend-dot lc-radar-chart__legend-dot--' + item.colorIndex\" [style.background-color]=\"item.customColor\"></span>\n <span class=\"lc-radar-chart__legend-text\">{{ item.label }}</span>\n </div>\n }\n </div>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n computed,\n} from '@angular/core';\n\nexport type ProgressRingColor = 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'info';\nexport type ProgressRingSize = 'xs' | 'sm' | 'md' | 'lg';\n\n@Component({\n selector: 'lc-progress-ring',\n standalone: true,\n templateUrl: './progress-ring.component.html',\n styleUrls: ['./progress-ring.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n/**\n * Progress ring component for circular progress indication.\n *\n * Features:\n * - Circular SVG progress arc (0–100%)\n * - Color theme variants (primary, secondary, success, warning, error)\n * - Size presets (xs, sm, md, lg)\n * - Optional percentage value display\n * - Animated stroke transitions\n *\n * @example\n * ```html\n * <lc-progress-ring [value]=\"65\" color=\"success\" [showValue]=\"true\" />\n * ```\n */\nexport class ProgressRingComponent {\n /** Value between 0 and 100. */\n value = input<number>(0);\n\n /** Color theme. */\n color = input<ProgressRingColor>('primary');\n\n /** Size preset. */\n size = input<ProgressRingSize>('md');\n\n /** Show percentage text in center. */\n showValue = input<boolean>(true);\n\n private readonly SIZE_MAP: Record<ProgressRingSize, number> = { xs: 32, sm: 48, md: 64, lg: 96 };\n private readonly STROKE_MAP: Record<ProgressRingSize, number> = { xs: 3, sm: 4, md: 5, lg: 7 };\n\n protected readonly svgSize = computed(() => this.SIZE_MAP[this.size()]);\n protected readonly strokeW = computed(() => this.STROKE_MAP[this.size()]);\n protected readonly viewBox = computed(() => `0 0 ${this.svgSize()} ${this.svgSize()}`);\n protected readonly center = computed(() => this.svgSize() / 2);\n protected readonly radius = computed(() => (this.svgSize() - this.strokeW() * 2) / 2);\n protected readonly circumference = computed(() => 2 * Math.PI * this.radius());\n\n protected readonly dashOffset = computed(() => {\n const c = this.circumference();\n const v = Math.min(Math.max(this.value(), 0), 100);\n return c - (v / 100) * c;\n });\n\n protected readonly fontSize = computed(() => {\n const map: Record<ProgressRingSize, string> = { xs: '0.5rem', sm: '0.625rem', md: '0.875rem', lg: '1.25rem' };\n return map[this.size()];\n });\n\n protected readonly displayValue = computed(() => `${Math.round(this.value())}%`);\n}\n","<svg [attr.width]=\"svgSize()\" [attr.height]=\"svgSize()\" [attr.viewBox]=\"viewBox()\" class=\"lc-progress-ring\" role=\"img\" aria-label=\"Progress ring\">\n <circle\n [attr.cx]=\"center()\" [attr.cy]=\"center()\" [attr.r]=\"radius()\"\n [attr.stroke-width]=\"strokeW()\"\n fill=\"none\" class=\"lc-progress-ring__track\"\n />\n <circle\n [attr.cx]=\"center()\" [attr.cy]=\"center()\" [attr.r]=\"radius()\"\n [attr.stroke-width]=\"strokeW()\"\n [attr.stroke-dasharray]=\"circumference()\" [attr.stroke-dashoffset]=\"dashOffset()\"\n fill=\"none\" stroke-linecap=\"round\"\n [class]=\"'lc-progress-ring__value lc-progress-ring__value--' + color()\"\n [attr.transform]=\"'rotate(-90 ' + center() + ' ' + center() + ')'\"\n />\n @if (showValue()) {\n <text [attr.x]=\"center()\" [attr.y]=\"center()\" text-anchor=\"middle\" dominant-baseline=\"central\" class=\"lc-progress-ring__text\" [style.font-size]=\"fontSize()\">\n {{ displayValue() }}\n </text>\n }\n</svg>\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n computed,\n} from '@angular/core';\n\nexport interface WaterfallItem {\n label: string;\n value: number;\n /** 'total' renders from 0 to value instead of incremental. */\n type?: 'increase' | 'decrease' | 'total';\n}\n\n@Component({\n selector: 'lc-waterfall-chart',\n standalone: true,\n templateUrl: './waterfall-chart.component.html',\n styleUrls: ['./waterfall-chart.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n/**\n * Waterfall chart component for visualizing cumulative value changes.\n *\n * Features:\n * - Increase, decrease, and total bar types\n * - Connector lines between bars\n * - Configurable colors for increase, decrease, and total\n * - Optional value labels and grid\n * - Adjustable bar gap spacing\n * - Responsive SVG rendering\n *\n * @example\n * ```html\n * <lc-waterfall-chart [data]=\"items\" [showConnectors]=\"true\" />\n * ```\n */\nexport class WaterfallChartComponent {\n data = input.required<WaterfallItem[]>();\n width = input<number>(500);\n height = input<number>(250);\n showValues = input<boolean>(true);\n showGrid = input<boolean>(true);\n showConnectors = input<boolean>(true);\n increaseColor = input<string>('var(--color-success-default)');\n decreaseColor = input<string>('var(--color-error-default)');\n totalColor = input<string>('var(--color-primary-500)');\n barGap = input<number>(0.3);\n\n private readonly PL = 50;\n private readonly PR = 10;\n private readonly PT = 15;\n private readonly PB = 30;\n\n protected readonly viewBox = computed(() => `0 0 ${this.width()} ${this.height()}`);\n\n protected readonly computedBars = computed(() => {\n const items = this.data();\n if (!items.length) return { bars: [], connectors: [], gridLines: [] };\n\n // Compute running totals\n const entries: { label: string; start: number; end: number; type: string }[] = [];\n let running = 0;\n\n for (const item of items) {\n if (item.type === 'total') {\n entries.push({ label: item.label, start: 0, end: item.value, type: 'total' });\n running = item.value;\n } else {\n const start = running;\n running += item.value;\n entries.push({\n label: item.label,\n start,\n end: running,\n type: item.value >= 0 ? 'increase' : 'decrease',\n });\n }\n }\n\n // Find min/max for scaling\n const allVals = entries.flatMap(e => [e.start, e.end]);\n const minVal = Math.min(0, ...allVals);\n const maxVal = Math.max(0, ...allVals);\n const range = maxVal - minVal || 1;\n\n const w = this.width();\n const h = this.height();\n const plotW = w - this.PL - this.PR;\n const plotH = h - this.PT - this.PB;\n const gap = this.barGap();\n\n const totalBarW = plotW / items.length;\n const barW = totalBarW * (1 - gap);\n const barOff = (totalBarW - barW) / 2;\n\n const toY = (v: number) => this.PT + plotH - ((v - minVal) / range) * plotH;\n\n const bars = entries.map((e, i) => {\n const top = toY(Math.max(e.start, e.end));\n const bottom = toY(Math.min(e.start, e.end));\n return {\n x: this.PL + i * totalBarW + barOff,\n y: top,\n width: barW,\n height: Math.max(bottom - top, 1),\n color: e.type === 'total' ? this.totalColor()\n : e.type === 'increase' ? this.increaseColor()\n : this.decreaseColor(),\n label: e.label,\n value: e.end - e.start,\n labelX: this.PL + i * totalBarW + totalBarW / 2,\n labelY: h - this.PB + 16,\n valueY: top - 6,\n endVal: e.end,\n };\n });\n\n const connectors: { x1: number; x2: number; y: number }[] = [];\n if (this.showConnectors()) {\n for (let i = 0; i < entries.length - 1; i++) {\n const currEnd = entries[i].end;\n const y = toY(currEnd);\n connectors.push({\n x1: this.PL + i * totalBarW + barOff + barW,\n x2: this.PL + (i + 1) * totalBarW + barOff,\n y,\n });\n }\n }\n\n // Grid lines\n const gridLines: { y: number; label: string }[] = [];\n if (this.showGrid()) {\n const steps = 4;\n for (let i = 0; i <= steps; i++) {\n const val = minVal + (i / steps) * range;\n gridLines.push({ y: toY(val), label: String(Math.round(val)) });\n }\n }\n\n return { bars, connectors, gridLines };\n });\n\n protected readonly axisLine = computed(() => ({\n vx1: this.PL, vy1: this.PT,\n vx2: this.PL, vy2: this.height() - this.PB,\n hx1: this.PL, hy1: this.height() - this.PB,\n hx2: this.width() - this.PR, hy2: this.height() - this.PB,\n }));\n}\n","<svg [attr.width]=\"width()\" [attr.height]=\"height()\" [attr.viewBox]=\"viewBox()\" role=\"img\" aria-label=\"Waterfall chart\" class=\"lc-waterfall-chart\">\n @for (line of computedBars().gridLines; track line.y) {\n <line [attr.x1]=\"axisLine().hx1\" [attr.y1]=\"line.y\" [attr.x2]=\"axisLine().hx2\" [attr.y2]=\"line.y\" class=\"lc-waterfall-chart__grid\" />\n <text [attr.x]=\"axisLine().vx1 - 6\" [attr.y]=\"line.y\" text-anchor=\"end\" dominant-baseline=\"central\" class=\"lc-waterfall-chart__grid-label\">{{ line.label }}</text>\n }\n\n <line [attr.x1]=\"axisLine().vx1\" [attr.y1]=\"axisLine().vy1\" [attr.x2]=\"axisLine().vx2\" [attr.y2]=\"axisLine().vy2\" class=\"lc-waterfall-chart__axis\" />\n <line [attr.x1]=\"axisLine().hx1\" [attr.y1]=\"axisLine().hy1\" [attr.x2]=\"axisLine().hx2\" [attr.y2]=\"axisLine().hy2\" class=\"lc-waterfall-chart__axis\" />\n\n @for (conn of computedBars().connectors; track $index) {\n <line [attr.x1]=\"conn.x1\" [attr.y1]=\"conn.y\" [attr.x2]=\"conn.x2\" [attr.y2]=\"conn.y\" class=\"lc-waterfall-chart__connector\" />\n }\n\n @for (bar of computedBars().bars; track bar.label) {\n <rect [attr.x]=\"bar.x\" [attr.y]=\"bar.y\" [attr.width]=\"bar.width\" [attr.height]=\"bar.height\" [attr.fill]=\"bar.color\" rx=\"2\" class=\"lc-waterfall-chart__bar\" />\n @if (showValues()) {\n <text [attr.x]=\"bar.labelX\" [attr.y]=\"bar.valueY\" text-anchor=\"middle\" class=\"lc-waterfall-chart__value\">{{ bar.value >= 0 ? '+' : '' }}{{ bar.value }}</text>\n }\n <text [attr.x]=\"bar.labelX\" [attr.y]=\"bar.labelY\" text-anchor=\"middle\" class=\"lc-waterfall-chart__label\">{{ bar.label }}</text>\n }\n</svg>\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n output,\n computed,\n signal,\n} from '@angular/core';\nimport { SlicePipe } from '@angular/common';\n\nexport type CalendarView = 'day' | 'week' | 'month';\n\nexport interface CalendarEvent {\n id: string;\n title: string;\n start: Date | string;\n end: Date | string;\n color?: 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'info';\n allDay?: boolean;\n}\n\ninterface DayCell {\n date: Date;\n isToday: boolean;\n isCurrentMonth: boolean;\n events: CalendarEvent[];\n}\n\ninterface HourSlot {\n hour: number;\n label: string;\n}\n\n@Component({\n selector: 'lc-calendar',\n standalone: true,\n imports: [SlicePipe],\n templateUrl: './calendar.component.html',\n styleUrls: ['./calendar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n/**\n * Calendar component for date-based event display and navigation.\n *\n * Features:\n * - Day, week, and month view modes\n * - Event display with six color variants\n * - Navigation controls for previous/next/today\n * - Configurable first day of week and locale\n * - Time grid for day and week views with hourly slots\n * - Click handlers for events and date cells\n *\n * @example\n * ```html\n * <lc-calendar [events]=\"events\" view=\"month\" [firstDayOfWeek]=\"1\" />\n * ```\n */\nexport class CalendarComponent {\n /** Current view mode. */\n view = input<CalendarView>('month');\n\n /** Events to display. */\n events = input<CalendarEvent[]>([]);\n\n /** First day of week (0=Sunday, 1=Monday). */\n firstDayOfWeek = input<number>(1);\n\n /** Locale for date formatting. */\n locale = input<string>('de-DE');\n\n /** Start hour for day/week view. */\n startHour = input<number>(6);\n\n /** End hour for day/week view. */\n endHour = input<number>(22);\n\n /** Emits when an event is clicked. */\n eventClick = output<CalendarEvent>();\n\n /** Emits when a date cell is clicked. */\n dateClick = output<Date>();\n\n /** Emits when the view changes. */\n viewChange = output<CalendarView>();\n\n protected readonly currentDate = signal(new Date());\n\n protected readonly headerTitle = computed(() => {\n const d = this.currentDate();\n const loc = this.locale();\n const v = this.view();\n if (v === 'month') {\n return d.toLocaleDateString(loc, { month: 'long', year: 'numeric' });\n }\n if (v === 'week') {\n const start = this.weekStart(d);\n const end = new Date(start);\n end.setDate(end.getDate() + 6);\n return `${start.toLocaleDateString(loc, { day: 'numeric', month: 'short' })} – ${end.toLocaleDateString(loc, { day: 'numeric', month: 'short', year: 'numeric' })}`;\n }\n return d.toLocaleDateString(loc, { weekday: 'long', day: 'numeric', month: 'long', year: 'numeric' });\n });\n\n protected readonly weekDayNames = computed(() => {\n const loc = this.locale();\n const fdow = this.firstDayOfWeek();\n return Array.from({ length: 7 }, (_, i) => {\n const d = new Date(2024, 0, fdow + i); // Jan 2024 starts on Monday\n return d.toLocaleDateString(loc, { weekday: 'short' });\n });\n });\n\n protected readonly monthGrid = computed(() => {\n const d = this.currentDate();\n const evts = this.normalizedEvents();\n const fdow = this.firstDayOfWeek();\n const year = d.getFullYear();\n const month = d.getMonth();\n const today = new Date();\n\n const firstOfMonth = new Date(year, month, 1);\n let startOffset = firstOfMonth.getDay() - fdow;\n if (startOffset < 0) startOffset += 7;\n\n const startDate = new Date(year, month, 1 - startOffset);\n const weeks: DayCell[][] = [];\n\n for (let w = 0; w < 6; w++) {\n const week: DayCell[] = [];\n for (let wd = 0; wd < 7; wd++) {\n const cellDate = new Date(startDate);\n cellDate.setDate(startDate.getDate() + w * 7 + wd);\n week.push({\n date: cellDate,\n isToday: this.isSameDay(cellDate, today),\n isCurrentMonth: cellDate.getMonth() === month,\n events: evts.filter(e => this.isEventOnDate(e, cellDate)),\n });\n }\n weeks.push(week);\n }\n return weeks;\n });\n\n protected readonly hourSlots = computed((): HourSlot[] => {\n const start = this.startHour();\n const end = this.endHour();\n return Array.from({ length: end - start }, (_, i) => ({\n hour: start + i,\n label: `${String(start + i).padStart(2, '0')}:00`,\n }));\n });\n\n protected readonly weekDays = computed(() => {\n const d = this.currentDate();\n const start = this.weekStart(d);\n const loc = this.locale();\n const today = new Date();\n const evts = this.normalizedEvents();\n\n return Array.from({ length: 7 }, (_, i) => {\n const day = new Date(start);\n day.setDate(start.getDate() + i);\n return {\n date: day,\n label: day.toLocaleDateString(loc, { weekday: 'short', day: 'numeric' }),\n isToday: this.isSameDay(day, today),\n events: evts.filter(e => this.isEventOnDate(e, day)),\n };\n });\n });\n\n protected readonly dayEvents = computed(() => {\n const d = this.currentDate();\n const evts = this.normalizedEvents();\n return evts.filter(e => this.isEventOnDate(e, d));\n });\n\n private readonly normalizedEvents = computed(() =>\n this.events().map(e => ({\n ...e,\n start: e.start instanceof Date ? e.start : new Date(e.start),\n end: e.end instanceof Date ? e.end : new Date(e.end),\n }))\n );\n\n protected navigatePrev(): void {\n this.navigate(-1);\n }\n\n protected navigateNext(): void {\n this.navigate(1);\n }\n\n protected navigateToday(): void {\n this.currentDate.set(new Date());\n }\n\n protected setView(v: CalendarView): void {\n this.viewChange.emit(v);\n }\n\n protected onEventClick(event: CalendarEvent, e: MouseEvent): void {\n e.stopPropagation();\n this.eventClick.emit(event);\n }\n\n protected onDateClick(date: Date): void {\n this.dateClick.emit(date);\n }\n\n protected eventTop(event: CalendarEvent): number {\n const start = event.start instanceof Date ? event.start : new Date(event.start);\n const h = start.getHours() - this.startHour();\n const m = start.getMinutes();\n return (h * 60 + m);\n }\n\n protected eventHeight(event: CalendarEvent): number {\n const start = event.start instanceof Date ? event.start : new Date(event.start);\n const end = event.end instanceof Date ? event.end : new Date(event.end);\n const diff = (end.getTime() - start.getTime()) / 60000;\n return Math.max(diff, 15);\n }\n\n private navigate(direction: number): void {\n const d = new Date(this.currentDate());\n const v = this.view();\n if (v === 'month') {\n d.setMonth(d.getMonth() + direction);\n } else if (v === 'week') {\n d.setDate(d.getDate() + direction * 7);\n } else {\n d.setDate(d.getDate() + direction);\n }\n this.currentDate.set(d);\n }\n\n private weekStart(d: Date): Date {\n const start = new Date(d);\n const fdow = this.firstDayOfWeek();\n let diff = start.getDay() - fdow;\n if (diff < 0) diff += 7;\n start.setDate(start.getDate() - diff);\n return start;\n }\n\n private isSameDay(a: Date, b: Date): boolean {\n return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();\n }\n\n private isEventOnDate(event: { start: Date; end: Date }, date: Date): boolean {\n const startOfDay = new Date(date.getFullYear(), date.getMonth(), date.getDate());\n const endOfDay = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 23, 59, 59);\n return event.start <= endOfDay && event.end >= startOfDay;\n }\n}\n","<div class=\"lc-calendar\">\n <!-- Header -->\n <div class=\"lc-calendar__header\">\n <div class=\"lc-calendar__nav\">\n <button class=\"lc-calendar__nav-btn\" (click)=\"navigatePrev()\" aria-label=\"Previous\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"><path d=\"M10 12L6 8l4-4\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n </button>\n <button class=\"lc-calendar__today-btn\" (click)=\"navigateToday()\">Heute</button>\n <button class=\"lc-calendar__nav-btn\" (click)=\"navigateNext()\" aria-label=\"Next\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"><path d=\"M6 4l4 4-4 4\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n </button>\n <span class=\"lc-calendar__title\">{{ headerTitle() }}</span>\n </div>\n <div class=\"lc-calendar__view-toggle\">\n <button [class.active]=\"view() === 'day'\" (click)=\"setView('day')\">Tag</button>\n <button [class.active]=\"view() === 'week'\" (click)=\"setView('week')\">Woche</button>\n <button [class.active]=\"view() === 'month'\" (click)=\"setView('month')\">Monat</button>\n </div>\n </div>\n\n <!-- Month View -->\n @if (view() === 'month') {\n <div class=\"lc-calendar__month\">\n <div class=\"lc-calendar__weekdays\">\n @for (name of weekDayNames(); track name) {\n <div class=\"lc-calendar__weekday\">{{ name }}</div>\n }\n </div>\n @for (week of monthGrid(); track $index) {\n <div class=\"lc-calendar__week-row\">\n @for (cell of week; track cell.date.getTime()) {\n <div\n class=\"lc-calendar__day-cell\"\n [class.lc-calendar__day-cell--today]=\"cell.isToday\"\n [class.lc-calendar__day-cell--other]=\"!cell.isCurrentMonth\"\n (click)=\"onDateClick(cell.date)\"\n >\n <span class=\"lc-calendar__day-number\">{{ cell.date.getDate() }}</span>\n @for (evt of cell.events | slice:0:3; track evt.id) {\n <div\n class=\"lc-calendar__event-dot\"\n [class]=\"'lc-calendar__event-dot--' + (evt.color || 'primary')\"\n (click)=\"onEventClick(evt, $event)\"\n [title]=\"evt.title\"\n >\n {{ evt.title }}\n </div>\n }\n @if (cell.events.length > 3) {\n <div class=\"lc-calendar__more\">+{{ cell.events.length - 3 }}</div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n\n <!-- Week View -->\n @if (view() === 'week') {\n <div class=\"lc-calendar__time-grid\">\n <div class=\"lc-calendar__time-header\">\n <div class=\"lc-calendar__time-gutter\"></div>\n @for (day of weekDays(); track day.date.getTime()) {\n <div class=\"lc-calendar__time-col-header\" [class.lc-calendar__time-col-header--today]=\"day.isToday\">\n {{ day.label }}\n </div>\n }\n </div>\n <div class=\"lc-calendar__time-body\">\n <div class=\"lc-calendar__time-gutter\">\n @for (slot of hourSlots(); track slot.hour) {\n <div class=\"lc-calendar__time-label\">{{ slot.label }}</div>\n }\n </div>\n @for (day of weekDays(); track day.date.getTime()) {\n <div class=\"lc-calendar__time-col\" (click)=\"onDateClick(day.date)\">\n @for (slot of hourSlots(); track slot.hour) {\n <div class=\"lc-calendar__time-slot\"></div>\n }\n @for (evt of day.events; track evt.id) {\n <div\n class=\"lc-calendar__time-event\"\n [class]=\"'lc-calendar__time-event lc-calendar__time-event--' + (evt.color || 'primary')\"\n [style.top.px]=\"eventTop(evt)\"\n [style.height.px]=\"eventHeight(evt)\"\n (click)=\"onEventClick(evt, $event)\"\n >\n {{ evt.title }}\n </div>\n }\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Day View -->\n @if (view() === 'day') {\n <div class=\"lc-calendar__time-grid lc-calendar__time-grid--day\">\n <div class=\"lc-calendar__time-body\">\n <div class=\"lc-calendar__time-gutter\">\n @for (slot of hourSlots(); track slot.hour) {\n <div class=\"lc-calendar__time-label\">{{ slot.label }}</div>\n }\n </div>\n <div class=\"lc-calendar__time-col lc-calendar__time-col--single\" (click)=\"onDateClick(currentDate())\">\n @for (slot of hourSlots(); track slot.hour) {\n <div class=\"lc-calendar__time-slot\"></div>\n }\n @for (evt of dayEvents(); track evt.id) {\n <div\n class=\"lc-calendar__time-event\"\n [class]=\"'lc-calendar__time-event lc-calendar__time-event--' + (evt.color || 'primary')\"\n [style.top.px]=\"eventTop(evt)\"\n [style.height.px]=\"eventHeight(evt)\"\n (click)=\"onEventClick(evt, $event)\"\n >\n {{ evt.title }}\n </div>\n }\n </div>\n </div>\n </div>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n output,\n computed,\n} from '@angular/core';\n\nexport interface GanttDependency {\n from: string;\n to: string;\n}\n\nexport interface GanttTask {\n id: string;\n title: string;\n start: Date | string;\n end: Date | string;\n progress?: number;\n color?: 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'info';\n group?: string;\n}\n\ninterface NormalizedTask {\n id: string;\n title: string;\n start: Date;\n end: Date;\n progress: number;\n color: string;\n group: string;\n}\n\ninterface BarLayout {\n task: NormalizedTask;\n left: number;\n width: number;\n top: number;\n progress: number;\n colorClass: string;\n}\n\ninterface DepLine {\n x1: number;\n y1: number;\n x2: number;\n y2: number;\n}\n\n@Component({\n selector: 'lc-gantt-chart',\n standalone: true,\n templateUrl: './gantt-chart.component.html',\n styleUrls: ['./gantt-chart.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n/**\n * Gantt chart component for project timeline visualization.\n *\n * Features:\n * - Task bars with progress indicators\n * - Dependency lines with Bézier curves and arrowheads\n * - Monthly and daily header timeline\n * - Today marker line\n * - Weekend highlighting\n * - Configurable row height, label width, and day width\n * - Task click event handling\n *\n * @example\n * ```html\n * <lc-gantt-chart [tasks]=\"tasks\" [dependencies]=\"deps\" [showToday]=\"true\" />\n * ```\n */\nexport class GanttChartComponent {\n /** Tasks to display. */\n tasks = input.required<GanttTask[]>();\n\n /** Dependency links between tasks. */\n dependencies = input<GanttDependency[]>([]);\n\n /** Row height in px. */\n rowHeight = input<number>(40);\n\n /** Width of the label column in px. */\n labelWidth = input<number>(200);\n\n /** Column width per day in px. */\n dayWidth = input<number>(36);\n\n /** Show today marker. */\n showToday = input<boolean>(true);\n\n /** Emits when a task bar is clicked. */\n taskClick = output<GanttTask>();\n\n private readonly normalizedTasks = computed((): NormalizedTask[] =>\n this.tasks().map(t => ({\n id: t.id,\n title: t.title,\n start: t.start instanceof Date ? t.start : new Date(t.start),\n end: t.end instanceof Date ? t.end : new Date(t.end),\n progress: t.progress ?? 0,\n color: t.color ?? 'primary',\n group: t.group ?? '',\n }))\n );\n\n protected readonly timelineStart = computed(() => {\n const tasks = this.normalizedTasks();\n if (!tasks.length) return new Date();\n const min = Math.min(...tasks.map(t => t.start.getTime()));\n const d = new Date(min);\n d.setDate(d.getDate() - 2);\n return this.startOfDay(d);\n });\n\n protected readonly timelineEnd = computed(() => {\n const tasks = this.normalizedTasks();\n if (!tasks.length) return new Date();\n const max = Math.max(...tasks.map(t => t.end.getTime()));\n const d = new Date(max);\n d.setDate(d.getDate() + 3);\n return this.startOfDay(d);\n });\n\n protected readonly totalDays = computed(() => {\n const start = this.timelineStart();\n const end = this.timelineEnd();\n return Math.ceil((end.getTime() - start.getTime()) / 86400000) + 1;\n });\n\n protected readonly timelineWidth = computed(() => this.totalDays() * this.dayWidth());\n\n protected readonly dayColumns = computed(() => {\n const start = this.timelineStart();\n const days = this.totalDays();\n const dw = this.dayWidth();\n return Array.from({ length: days }, (_, i) => {\n const d = new Date(start);\n d.setDate(d.getDate() + i);\n return {\n date: d,\n left: i * dw,\n label: d.getDate(),\n isWeekend: d.getDay() === 0 || d.getDay() === 6,\n monthLabel: d.getDate() === 1 ? d.toLocaleDateString('de-DE', { month: 'short' }) : null,\n };\n });\n });\n\n protected readonly monthHeaders = computed(() => {\n const cols = this.dayColumns();\n const dw = this.dayWidth();\n const months: { label: string; left: number; width: number }[] = [];\n let current: { label: string; left: number; count: number } | null = null;\n\n for (const col of cols) {\n const label = col.date.toLocaleDateString('de-DE', { month: 'short', year: 'numeric' });\n if (!current || current.label !== label) {\n if (current) months.push({ label: current.label, left: current.left, width: current.count * dw });\n current = { label, left: col.left, count: 1 };\n } else {\n current.count++;\n }\n }\n if (current) months.push({ label: current.label, left: current.left, width: current.count * dw });\n return months;\n });\n\n protected readonly bars = computed((): BarLayout[] => {\n const tasks = this.normalizedTasks();\n const start = this.timelineStart().getTime();\n const dw = this.dayWidth();\n const rh = this.rowHeight();\n\n return tasks.map((t, i) => {\n const dayOffset = (t.start.getTime() - start) / 86400000;\n const duration = Math.max((t.end.getTime() - t.start.getTime()) / 86400000, 1);\n return {\n task: t,\n left: dayOffset * dw,\n width: duration * dw,\n top: i * rh,\n progress: Math.min(Math.max(t.progress, 0), 100),\n colorClass: t.color,\n };\n });\n });\n\n protected readonly depLines = computed((): DepLine[] => {\n const deps = this.dependencies();\n const barsMap = new Map<string, BarLayout>();\n for (const bar of this.bars()) barsMap.set(bar.task.id, bar);\n const rh = this.rowHeight();\n\n return deps\n .filter(d => barsMap.has(d.from) && barsMap.has(d.to))\n .map(d => {\n const from = barsMap.get(d.from)!;\n const to = barsMap.get(d.to)!;\n return {\n x1: from.left + from.width,\n y1: from.top + rh / 2,\n x2: to.left,\n y2: to.top + rh / 2,\n };\n });\n });\n\n protected readonly todayLeft = computed(() => {\n if (!this.showToday()) return -1;\n const start = this.timelineStart().getTime();\n const now = this.startOfDay(new Date()).getTime();\n const dayOffset = (now - start) / 86400000;\n if (dayOffset < 0 || dayOffset > this.totalDays()) return -1;\n return dayOffset * this.dayWidth();\n });\n\n protected readonly gridHeight = computed(() => this.normalizedTasks().length * this.rowHeight());\n\n protected onTaskClick(task: NormalizedTask): void {\n this.taskClick.emit(this.tasks().find(t => t.id === task.id)!);\n }\n\n private startOfDay(d: Date): Date {\n return new Date(d.getFullYear(), d.getMonth(), d.getDate());\n }\n}\n","<div class=\"lc-gantt\">\n <div class=\"lc-gantt__container\">\n <!-- Left: Task labels -->\n <div class=\"lc-gantt__labels\" [style.width.px]=\"labelWidth()\">\n <div class=\"lc-gantt__labels-header\">Aufgaben</div>\n @for (bar of bars(); track bar.task.id) {\n <div class=\"lc-gantt__label-row\" [style.height.px]=\"rowHeight()\">\n <span class=\"lc-gantt__label-text\" [title]=\"bar.task.title\">{{ bar.task.title }}</span>\n </div>\n }\n </div>\n\n <!-- Right: Timeline -->\n <div class=\"lc-gantt__timeline-wrapper\">\n <!-- Month headers -->\n <div class=\"lc-gantt__month-row\" [style.width.px]=\"timelineWidth()\">\n @for (mh of monthHeaders(); track mh.label + mh.left) {\n <div class=\"lc-gantt__month-cell\" [style.left.px]=\"mh.left\" [style.width.px]=\"mh.width\">\n {{ mh.label }}\n </div>\n }\n </div>\n\n <!-- Day headers -->\n <div class=\"lc-gantt__day-row\" [style.width.px]=\"timelineWidth()\">\n @for (col of dayColumns(); track col.left) {\n <div\n class=\"lc-gantt__day-cell\"\n [class.lc-gantt__day-cell--weekend]=\"col.isWeekend\"\n [style.left.px]=\"col.left\"\n [style.width.px]=\"dayWidth()\"\n >\n {{ col.label }}\n </div>\n }\n </div>\n\n <!-- Grid + Bars -->\n <div class=\"lc-gantt__grid\" [style.width.px]=\"timelineWidth()\" [style.height.px]=\"gridHeight()\">\n <!-- Weekend columns -->\n @for (col of dayColumns(); track col.left) {\n @if (col.isWeekend) {\n <div class=\"lc-gantt__weekend-bg\" [style.left.px]=\"col.left\" [style.width.px]=\"dayWidth()\" [style.height.px]=\"gridHeight()\"></div>\n }\n }\n\n <!-- Row borders -->\n @for (bar of bars(); track bar.task.id) {\n <div class=\"lc-gantt__row-line\" [style.top.px]=\"bar.top + rowHeight()\"></div>\n }\n\n <!-- Today marker -->\n @if (todayLeft() >= 0) {\n <div class=\"lc-gantt__today\" [style.left.px]=\"todayLeft()\" [style.height.px]=\"gridHeight()\"></div>\n }\n\n <!-- Dependency lines SVG -->\n @if (depLines().length) {\n <svg class=\"lc-gantt__dep-svg\" [attr.width]=\"timelineWidth()\" [attr.height]=\"gridHeight()\">\n <defs>\n <marker id=\"arrowhead\" markerWidth=\"8\" markerHeight=\"6\" refX=\"8\" refY=\"3\" orient=\"auto\">\n <path d=\"M0,0 L8,3 L0,6 Z\" class=\"lc-gantt__arrow\" />\n </marker>\n </defs>\n @for (dep of depLines(); track $index) {\n <path\n [attr.d]=\"'M' + dep.x1 + ',' + dep.y1 + ' C' + (dep.x1 + 20) + ',' + dep.y1 + ' ' + (dep.x2 - 20) + ',' + dep.y2 + ' ' + dep.x2 + ',' + dep.y2\"\n class=\"lc-gantt__dep-line\"\n marker-end=\"url(#arrowhead)\"\n />\n }\n </svg>\n }\n\n <!-- Task bars -->\n @for (bar of bars(); track bar.task.id) {\n <div\n [class]=\"'lc-gantt__bar lc-gantt__bar--' + bar.colorClass\"\n [style.left.px]=\"bar.left\"\n [style.top.px]=\"bar.top + 8\"\n [style.width.px]=\"bar.width\"\n [style.height.px]=\"rowHeight() - 16\"\n [title]=\"bar.task.title + ' (' + bar.progress + '%)'\"\n (click)=\"onTaskClick(bar.task)\"\n >\n @if (bar.progress > 0) {\n <div class=\"lc-gantt__bar-progress\" [style.width.%]=\"bar.progress\"></div>\n }\n <span class=\"lc-gantt__bar-label\">{{ bar.task.title }}</span>\n </div>\n }\n </div>\n </div>\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n output,\n signal,\n computed,\n ElementRef,\n ViewChild,\n AfterViewChecked,\n} from '@angular/core';\n\nexport type ChatMessageRole = 'user' | 'agent' | 'system';\n\nexport interface ChatMessage {\n id: string;\n role: ChatMessageRole;\n content: string;\n timestamp?: Date | string;\n avatar?: string;\n name?: string;\n streaming?: boolean;\n}\n\nexport interface ChatSendEvent {\n content: string;\n}\n\n@Component({\n selector: 'lc-chat',\n standalone: true,\n templateUrl: './chat.component.html',\n styleUrls: ['./chat.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n/**\n * Chat component for conversational user interfaces.\n *\n * Features:\n * - User, agent, and system message roles\n * - Streaming cursor indicator for AI responses\n * - Typing indicator with animated dots\n * - Auto-scroll to latest message\n * - Optional avatars and timestamps\n * - Configurable header with title\n * - Send on Enter with Shift+Enter for newline\n *\n * @example\n * ```html\n * <lc-chat [messages]=\"messages\" title=\"Support\" (messageSend)=\"onSend($event)\" />\n * ```\n */\nexport class ChatComponent implements AfterViewChecked {\n /** Messages to display. */\n messages = input<ChatMessage[]>([]);\n\n /** Placeholder text for the input. */\n placeholder = input<string>('Nachricht eingeben…');\n\n /** Title displayed in the header. */\n title = input<string>('Chat');\n\n /** Whether the agent is currently streaming / typing. */\n isStreaming = input<boolean>(false);\n\n /** Show the header bar. */\n showHeader = input<boolean>(true);\n\n /** Disable the input. */\n disabled = input<boolean>(false);\n\n /** Show avatars next to messages. */\n showAvatars = input<boolean>(true);\n\n /** Show timestamps. */\n showTimestamps = input<boolean>(true);\n\n /** Emits when user sends a message. */\n messageSend = output<ChatSendEvent>();\n\n protected readonly inputValue = signal('');\n private shouldScroll = false;\n\n @ViewChild('scrollContainer') private scrollContainer!: ElementRef<HTMLDivElement>;\n\n protected readonly formattedMessages = computed(() =>\n this.messages().map(m => ({\n ...m,\n timestamp: m.timestamp instanceof Date ? m.timestamp : m.timestamp ? new Date(m.timestamp) : undefined,\n }))\n );\n\n ngAfterViewChecked(): void {\n if (this.shouldScroll) {\n this.scrollToBottom();\n this.shouldScroll = false;\n }\n }\n\n protected onInput(event: Event): void {\n this.inputValue.set((event.target as HTMLTextAreaElement).value);\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n if (event.key === 'Enter' && !event.shiftKey) {\n event.preventDefault();\n this.send();\n }\n }\n\n protected send(): void {\n const content = this.inputValue().trim();\n if (!content || this.disabled()) return;\n this.messageSend.emit({ content });\n this.inputValue.set('');\n this.shouldScroll = true;\n }\n\n protected formatTime(date: Date | undefined): string {\n if (!date) return '';\n return date.toLocaleTimeString('de-DE', { hour: '2-digit', minute: '2-digit' });\n }\n\n protected trackById(_: number, msg: ChatMessage): string {\n return msg.id;\n }\n\n private scrollToBottom(): void {\n if (this.scrollContainer) {\n const el = this.scrollContainer.nativeElement;\n el.scrollTop = el.scrollHeight;\n }\n }\n}\n","<div class=\"lc-chat\">\n @if (showHeader()) {\n <div class=\"lc-chat__header\">\n <span class=\"lc-chat__title\">{{ title() }}</span>\n @if (isStreaming()) {\n <span class=\"lc-chat__streaming-badge\">Streaming…</span>\n }\n </div>\n }\n\n <div class=\"lc-chat__messages\" #scrollContainer>\n @for (msg of formattedMessages(); track trackById($index, msg)) {\n <div\n class=\"lc-chat__message\"\n [class.lc-chat__message--user]=\"msg.role === 'user'\"\n [class.lc-chat__message--agent]=\"msg.role === 'agent'\"\n [class.lc-chat__message--system]=\"msg.role === 'system'\"\n >\n @if (showAvatars() && msg.role !== 'system') {\n <div class=\"lc-chat__avatar\">\n @if (msg.avatar) {\n <img [src]=\"msg.avatar\" [alt]=\"msg.name || msg.role\" class=\"lc-chat__avatar-img\" />\n } @else {\n <span class=\"lc-chat__avatar-fallback\" [class.lc-chat__avatar-fallback--agent]=\"msg.role === 'agent'\">\n {{ (msg.name || msg.role).charAt(0).toUpperCase() }}\n </span>\n }\n </div>\n }\n\n <div class=\"lc-chat__bubble\" [class.lc-chat__bubble--streaming]=\"msg.streaming\">\n @if (msg.name && msg.role !== 'user') {\n <div class=\"lc-chat__name\">{{ msg.name }}</div>\n }\n <div class=\"lc-chat__content\">{{ msg.content }}<span class=\"lc-chat__cursor\" [class.lc-chat__cursor--visible]=\"msg.streaming\"></span></div>\n @if (showTimestamps() && msg.timestamp) {\n <div class=\"lc-chat__time\">{{ formatTime(msg.timestamp) }}</div>\n }\n </div>\n </div>\n }\n\n @if (isStreaming() && !(formattedMessages().length && formattedMessages()[formattedMessages().length - 1].streaming)) {\n <div class=\"lc-chat__message lc-chat__message--agent\">\n @if (showAvatars()) {\n <div class=\"lc-chat__avatar\">\n <span class=\"lc-chat__avatar-fallback lc-chat__avatar-fallback--agent\">A</span>\n </div>\n }\n <div class=\"lc-chat__bubble\">\n <div class=\"lc-chat__typing\">\n <span></span><span></span><span></span>\n </div>\n </div>\n </div>\n }\n </div>\n\n <div class=\"lc-chat__input-area\">\n <textarea\n class=\"lc-chat__input\"\n [placeholder]=\"placeholder()\"\n [value]=\"inputValue()\"\n [disabled]=\"disabled()\"\n (input)=\"onInput($event)\"\n (keydown)=\"onKeydown($event)\"\n rows=\"1\"\n ></textarea>\n <button\n class=\"lc-chat__send-btn\"\n [disabled]=\"!inputValue().trim() || disabled()\"\n (click)=\"send()\"\n aria-label=\"Send\"\n >\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path d=\"M3 10l7-7m0 0l7 7m-7-7v14\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" transform=\"rotate(90 10 10)\"/>\n </svg>\n </button>\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n computed,\n signal,\n OnInit,\n OnDestroy,\n inject,\n ElementRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { DomSanitizer, SafeHtml, SafeResourceUrl } from '@angular/platform-browser';\nimport { IconComponent } from '../icon/icon.component';\nimport { SpinnerComponent } from '../spinner/spinner.component';\nimport { CodeBlockComponent, CodeBlockLanguage } from '../code-block/code-block.component';\n\nexport type DocumentType = 'pdf' | 'markdown' | 'image' | 'text' | 'code' | 'auto';\n\nconst EXTENSION_TYPE_MAP: Record<string, DocumentType> = {\n pdf: 'pdf',\n md: 'markdown',\n markdown: 'markdown',\n png: 'image',\n jpg: 'image',\n jpeg: 'image',\n gif: 'image',\n webp: 'image',\n svg: 'image',\n bmp: 'image',\n ts: 'code',\n js: 'code',\n tsx: 'code',\n jsx: 'code',\n py: 'code',\n java: 'code',\n html: 'code',\n css: 'code',\n scss: 'code',\n json: 'code',\n sh: 'code',\n bash: 'code',\n txt: 'text',\n log: 'text',\n csv: 'text',\n};\n\nconst EXTENSION_LANGUAGE_MAP: Record<string, CodeBlockLanguage> = {\n ts: 'typescript',\n tsx: 'typescript',\n js: 'javascript',\n jsx: 'javascript',\n py: 'python',\n java: 'java',\n html: 'html',\n css: 'css',\n scss: 'scss',\n json: 'json',\n sh: 'bash',\n bash: 'bash',\n};\n\nconst TYPE_ICONS: Record<string, string> = {\n pdf: 'document-text',\n markdown: 'document-text',\n image: 'photo',\n text: 'document',\n code: 'code-bracket',\n unknown: 'document',\n};\n\n// ── Markdown Parser ──────────────────────────────────────────────────────────\n\nfunction escapeHtml(text: string): string {\n return text\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;');\n}\n\nfunction parseMarkdownInline(text: string): string {\n return text\n // Images\n .replace(/!\\[([^\\]]*)\\]\\(([^)]+)\\)/g, '<img src=\"$2\" alt=\"$1\" class=\"doc-viewer__md-img\" />')\n // Links\n .replace(/\\[([^\\]]+)\\]\\(([^)]+)\\)/g, '<a href=\"$2\" target=\"_blank\" rel=\"noopener noreferrer\">$1</a>')\n // Bold + italic\n .replace(/\\*\\*\\*(.+?)\\*\\*\\*/g, '<strong><em>$1</em></strong>')\n // Bold\n .replace(/\\*\\*(.+?)\\*\\*/g, '<strong>$1</strong>')\n // Italic\n .replace(/\\*(.+?)\\*/g, '<em>$1</em>')\n // Strikethrough\n .replace(/~~(.+?)~~/g, '<del>$1</del>')\n // Inline code\n .replace(/`([^`]+)`/g, '<code class=\"doc-viewer__md-inline-code\">$1</code>');\n}\n\nfunction parseMarkdown(md: string): string {\n const lines = md.split('\\n');\n const html: string[] = [];\n let inCodeBlock = false;\n let codeBlockLang = '';\n let codeLines: string[] = [];\n let inList: 'ul' | 'ol' | null = null;\n let inBlockquote = false;\n let paragraph: string[] = [];\n\n const flushParagraph = () => {\n if (paragraph.length > 0) {\n html.push(`<p>${parseMarkdownInline(paragraph.join(' '))}</p>`);\n paragraph = [];\n }\n };\n\n const flushList = () => {\n if (inList) {\n html.push(`</${inList}>`);\n inList = null;\n }\n };\n\n const flushBlockquote = () => {\n if (inBlockquote) {\n html.push('</blockquote>');\n inBlockquote = false;\n }\n };\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n\n // Code blocks\n if (line.trimStart().startsWith('```')) {\n if (!inCodeBlock) {\n flushParagraph();\n flushList();\n flushBlockquote();\n inCodeBlock = true;\n codeBlockLang = line.trim().slice(3).trim();\n codeLines = [];\n } else {\n html.push(\n `<pre class=\"doc-viewer__md-code-block\"><code class=\"language-${escapeHtml(codeBlockLang)}\">${escapeHtml(codeLines.join('\\n'))}</code></pre>`\n );\n inCodeBlock = false;\n codeBlockLang = '';\n }\n continue;\n }\n if (inCodeBlock) {\n codeLines.push(line);\n continue;\n }\n\n // Horizontal rule\n if (/^(\\*{3,}|-{3,}|_{3,})\\s*$/.test(line.trim())) {\n flushParagraph();\n flushList();\n flushBlockquote();\n html.push('<hr />');\n continue;\n }\n\n // Headings\n const headingMatch = line.match(/^(#{1,6})\\s+(.+)$/);\n if (headingMatch) {\n flushParagraph();\n flushList();\n flushBlockquote();\n const level = headingMatch[1].length;\n html.push(`<h${level}>${parseMarkdownInline(headingMatch[2])}</h${level}>`);\n continue;\n }\n\n // Blockquotes\n if (line.startsWith('> ')) {\n flushParagraph();\n flushList();\n if (!inBlockquote) {\n html.push('<blockquote class=\"doc-viewer__md-blockquote\">');\n inBlockquote = true;\n }\n html.push(`<p>${parseMarkdownInline(line.slice(2))}</p>`);\n continue;\n } else if (inBlockquote) {\n flushBlockquote();\n }\n\n // Unordered lists\n const ulMatch = line.match(/^(\\s*)[-*+]\\s+(.+)$/);\n if (ulMatch) {\n flushParagraph();\n if (inList !== 'ul') {\n flushList();\n html.push('<ul>');\n inList = 'ul';\n }\n html.push(`<li>${parseMarkdownInline(ulMatch[2])}</li>`);\n continue;\n }\n\n // Ordered lists\n const olMatch = line.match(/^(\\s*)\\d+\\.\\s+(.+)$/);\n if (olMatch) {\n flushParagraph();\n if (inList !== 'ol') {\n flushList();\n html.push('<ol>');\n inList = 'ol';\n }\n html.push(`<li>${parseMarkdownInline(olMatch[2])}</li>`);\n continue;\n }\n\n // Close list if not a list item\n if (inList) flushList();\n\n // Tables\n if (line.includes('|') && line.trim().startsWith('|')) {\n flushParagraph();\n const tableLines: string[] = [line];\n let j = i + 1;\n while (j < lines.length && lines[j].includes('|') && lines[j].trim().startsWith('|')) {\n tableLines.push(lines[j]);\n j++;\n }\n i = j - 1;\n\n if (tableLines.length >= 2) {\n html.push('<table class=\"doc-viewer__md-table\">');\n // Header\n const headerCells = tableLines[0].split('|').filter(c => c.trim());\n html.push('<thead><tr>');\n headerCells.forEach(c => html.push(`<th>${parseMarkdownInline(c.trim())}</th>`));\n html.push('</tr></thead>');\n // Body (skip separator row)\n html.push('<tbody>');\n for (let k = 2; k < tableLines.length; k++) {\n const cells = tableLines[k].split('|').filter(c => c.trim());\n html.push('<tr>');\n cells.forEach(c => html.push(`<td>${parseMarkdownInline(c.trim())}</td>`));\n html.push('</tr>');\n }\n html.push('</tbody></table>');\n }\n continue;\n }\n\n // Empty line\n if (line.trim() === '') {\n flushParagraph();\n continue;\n }\n\n // Paragraph text\n paragraph.push(line);\n }\n\n // Flush remaining\n if (inCodeBlock) {\n html.push(`<pre class=\"doc-viewer__md-code-block\"><code>${escapeHtml(codeLines.join('\\n'))}</code></pre>`);\n }\n flushParagraph();\n flushList();\n flushBlockquote();\n\n return html.join('\\n');\n}\n\n/**\n * Document viewer component for previewing various file types.\n *\n * Features:\n * - Auto-detects file type from URL extension or explicit type input\n * - PDF rendering via browser-native iframe viewer\n * - Markdown parsing and rendering with full formatting support\n * - Image display with zoom controls (25% – 500%)\n * - Code display using the built-in code block component\n * - Plain text display\n * - Toolbar with filename, type badge, zoom, download, and fullscreen\n * - Loading and error states\n * - Dark/light theme support\n *\n * @example\n * ```html\n * <lc-document-viewer src=\"https://example.com/report.pdf\" />\n * <lc-document-viewer [content]=\"markdownString\" type=\"markdown\" filename=\"README.md\" />\n * <lc-document-viewer src=\"/assets/diagram.png\" />\n * ```\n */\n@Component({\n selector: 'lc-document-viewer',\n standalone: true,\n imports: [IconComponent, SpinnerComponent, CodeBlockComponent],\n templateUrl: './document-viewer.component.html',\n styleUrls: ['./document-viewer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': '\"doc-viewer\"',\n '[style.height]': 'height()',\n },\n})\nexport class DocumentViewerComponent implements OnInit, OnDestroy {\n /** URL of the document to display (for PDF, images, or remote files) */\n readonly src = input<string>('');\n\n /** Direct content string (for markdown, text, or code — takes precedence over src for content-based types) */\n readonly content = input<string>('');\n\n /** File type — set to 'auto' to detect from URL extension */\n readonly type = input<DocumentType>('auto');\n\n /** Display name shown in the toolbar */\n readonly filename = input<string>('');\n\n /** Code language for syntax highlighting (when type is 'code') */\n readonly language = input<CodeBlockLanguage>('text');\n\n /** Whether to display the toolbar */\n readonly showToolbar = input(true);\n\n /** Whether to show the download button in the toolbar */\n readonly showDownload = input(true);\n\n /** Height of the viewer container */\n readonly height = input('500px');\n\n // ── Internal state ───────────────────────────────────────────────────────\n\n protected loading = signal(true);\n protected error = signal<string | null>(null);\n protected fetchedContent = signal<string>('');\n protected zoom = signal(100);\n protected isFullscreen = signal(false);\n\n private readonly sanitizer = inject(DomSanitizer);\n private readonly elementRef = inject(ElementRef);\n private fullscreenHandler: (() => void) | null = null;\n\n // ── Computed values ──────────────────────────────────────────────────────\n\n /** Resolved document type from input or URL extension */\n protected resolvedType = computed<DocumentType | 'unknown'>(() => {\n const t = this.type();\n if (t !== 'auto') return t;\n const ext = this.extractExtension(this.src());\n return ext && EXTENSION_TYPE_MAP[ext] ? EXTENSION_TYPE_MAP[ext] : 'unknown';\n });\n\n /** Display name for the toolbar */\n protected displayName = computed(() => {\n if (this.filename()) return this.filename();\n const src = this.src();\n if (!src) return 'Document';\n try {\n const url = new URL(src, 'http://localhost');\n const segments = url.pathname.split('/');\n return segments[segments.length - 1] || 'Document';\n } catch {\n return src.split('/').pop() || 'Document';\n }\n });\n\n /** Icon name for the document type */\n protected typeIcon = computed(() => TYPE_ICONS[this.resolvedType()] || TYPE_ICONS['unknown']);\n\n /** Type label for the toolbar badge */\n protected typeLabel = computed(() => {\n const t = this.resolvedType();\n switch (t) {\n case 'pdf': return 'PDF';\n case 'markdown': return 'Markdown';\n case 'image': return 'Image';\n case 'text': return 'Text';\n case 'code': return this.resolvedLanguage().toUpperCase();\n default: return 'File';\n }\n });\n\n /** Resolved code language */\n protected resolvedLanguage = computed<CodeBlockLanguage>(() => {\n const lang = this.language();\n if (lang !== 'text') return lang;\n const ext = this.extractExtension(this.src());\n return ext && EXTENSION_LANGUAGE_MAP[ext] ? EXTENSION_LANGUAGE_MAP[ext] : 'text';\n });\n\n /** Sanitized src URL for iframe/img embedding */\n protected safeSrc = computed<SafeResourceUrl>(() => {\n return this.sanitizer.bypassSecurityTrustResourceUrl(this.src());\n });\n\n /** Effective content: direct content input or fetched content */\n protected effectiveContent = computed(() => {\n return this.content() || this.fetchedContent();\n });\n\n /** Rendered markdown HTML */\n protected renderedMarkdown = computed<SafeHtml>(() => {\n const md = this.effectiveContent();\n if (!md) return '';\n return this.sanitizer.bypassSecurityTrustHtml(parseMarkdown(md));\n });\n\n /** Image transform style for zoom */\n protected imageTransform = computed(() => {\n const z = this.zoom() / 100;\n return `scale(${z})`;\n });\n\n /** Whether zoom controls should be shown */\n protected showZoom = computed(() => {\n const t = this.resolvedType();\n return t === 'image';\n });\n\n // ── Lifecycle ────────────────────────────────────────────────────────────\n\n ngOnInit(): void {\n const type = this.resolvedType();\n const src = this.src();\n const content = this.content();\n\n if (content) {\n this.loading.set(false);\n return;\n }\n\n if (!src) {\n this.loading.set(false);\n this.error.set('No source or content provided');\n return;\n }\n\n // PDF and images are embedded directly — no fetch needed\n if (type === 'pdf' || type === 'image') {\n this.loading.set(false);\n return;\n }\n\n // Fetch text-based content\n if (type === 'markdown' || type === 'text' || type === 'code') {\n this.fetchContent(src);\n } else {\n this.loading.set(false);\n }\n }\n\n ngOnDestroy(): void {\n if (this.fullscreenHandler) {\n document.removeEventListener('fullscreenchange', this.fullscreenHandler);\n }\n }\n\n // ── Actions ──────────────────────────────────────────────────────────────\n\n protected zoomIn(): void {\n this.zoom.update(z => Math.min(z + 25, 500));\n }\n\n protected zoomOut(): void {\n this.zoom.update(z => Math.max(z - 25, 25));\n }\n\n protected resetZoom(): void {\n this.zoom.set(100);\n }\n\n protected download(): void {\n const src = this.src();\n if (!src) return;\n const a = document.createElement('a');\n a.href = src;\n a.download = this.displayName();\n a.target = '_blank';\n a.rel = 'noopener noreferrer';\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n }\n\n protected toggleFullscreen(): void {\n const el = this.elementRef.nativeElement as HTMLElement;\n if (!document.fullscreenElement) {\n el.requestFullscreen?.();\n this.isFullscreen.set(true);\n } else {\n document.exitFullscreen?.();\n this.isFullscreen.set(false);\n }\n\n if (!this.fullscreenHandler) {\n this.fullscreenHandler = () => {\n this.isFullscreen.set(!!document.fullscreenElement);\n };\n document.addEventListener('fullscreenchange', this.fullscreenHandler);\n }\n }\n\n protected onIframeLoad(): void {\n this.loading.set(false);\n }\n\n protected onImageLoad(): void {\n this.loading.set(false);\n }\n\n protected onImageError(): void {\n this.loading.set(false);\n this.error.set('Failed to load image');\n }\n\n // ── Private helpers ──────────────────────────────────────────────────────\n\n private extractExtension(url: string): string | null {\n if (!url) return null;\n try {\n const pathname = new URL(url, 'http://localhost').pathname;\n const parts = pathname.split('.');\n return parts.length > 1 ? parts.pop()!.toLowerCase() : null;\n } catch {\n const parts = url.split('.');\n return parts.length > 1 ? parts.pop()!.toLowerCase().split('?')[0] : null;\n }\n }\n\n private async fetchContent(url: string): Promise<void> {\n try {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}: ${response.statusText}`);\n }\n const text = await response.text();\n this.fetchedContent.set(text);\n this.loading.set(false);\n } catch (err) {\n this.loading.set(false);\n this.error.set(`Failed to load document: ${err instanceof Error ? err.message : 'Unknown error'}`);\n }\n }\n}\n","<!-- Toolbar -->\n@if (showToolbar()) {\n <div class=\"doc-viewer__toolbar\">\n <div class=\"doc-viewer__toolbar-left\">\n <lc-icon [name]=\"typeIcon()\" size=\"sm\" />\n <span class=\"doc-viewer__filename\">{{ displayName() }}</span>\n <span class=\"doc-viewer__badge\">{{ typeLabel() }}</span>\n </div>\n <div class=\"doc-viewer__toolbar-right\">\n @if (showZoom()) {\n <div class=\"doc-viewer__zoom\">\n <button\n type=\"button\"\n class=\"doc-viewer__btn\"\n aria-label=\"Zoom out\"\n (click)=\"zoomOut()\"\n >\n <lc-icon name=\"minus\" size=\"xs\" />\n </button>\n <span class=\"doc-viewer__zoom-value\">{{ zoom() }}%</span>\n <button\n type=\"button\"\n class=\"doc-viewer__btn\"\n aria-label=\"Zoom in\"\n (click)=\"zoomIn()\"\n >\n <lc-icon name=\"plus\" size=\"xs\" />\n </button>\n <button\n type=\"button\"\n class=\"doc-viewer__btn\"\n aria-label=\"Reset zoom\"\n (click)=\"resetZoom()\"\n >\n <lc-icon name=\"arrows-pointing-out\" size=\"xs\" />\n </button>\n </div>\n }\n @if (showDownload() && src()) {\n <button\n type=\"button\"\n class=\"doc-viewer__btn\"\n aria-label=\"Download\"\n (click)=\"download()\"\n >\n <lc-icon name=\"arrow-down-tray\" size=\"sm\" />\n </button>\n }\n <button\n type=\"button\"\n class=\"doc-viewer__btn\"\n [attr.aria-label]=\"isFullscreen() ? 'Exit fullscreen' : 'Fullscreen'\"\n (click)=\"toggleFullscreen()\"\n >\n <lc-icon [name]=\"isFullscreen() ? 'arrows-pointing-in' : 'arrows-pointing-out'\" size=\"sm\" />\n </button>\n </div>\n </div>\n}\n\n<!-- Content area -->\n<div class=\"doc-viewer__content\">\n @if (loading()) {\n <div class=\"doc-viewer__loading\">\n <lc-spinner size=\"lg\" />\n <span>Loading document…</span>\n </div>\n }\n\n @if (error(); as errorMsg) {\n <div class=\"doc-viewer__error\">\n <lc-icon name=\"exclamation-triangle\" size=\"lg\" color=\"var(--color-error-default)\" />\n <span>{{ errorMsg }}</span>\n </div>\n }\n\n @if (!loading() && !error()) {\n @switch (resolvedType()) {\n @case ('pdf') {\n <iframe\n class=\"doc-viewer__iframe\"\n [src]=\"safeSrc()\"\n type=\"application/pdf\"\n (load)=\"onIframeLoad()\"\n ></iframe>\n }\n\n @case ('image') {\n <div class=\"doc-viewer__image-container\">\n <img\n class=\"doc-viewer__image\"\n [src]=\"src()\"\n [alt]=\"displayName()\"\n [style.transform]=\"imageTransform()\"\n (load)=\"onImageLoad()\"\n (error)=\"onImageError()\"\n />\n </div>\n }\n\n @case ('markdown') {\n <div class=\"doc-viewer__markdown\" [innerHTML]=\"renderedMarkdown()\"></div>\n }\n\n @case ('code') {\n <lc-code-block\n [code]=\"effectiveContent()\"\n [language]=\"resolvedLanguage()\"\n [filename]=\"displayName()\"\n [showLineNumbers]=\"true\"\n [showHeader]=\"false\"\n />\n }\n\n @case ('text') {\n <pre class=\"doc-viewer__text\">{{ effectiveContent() }}</pre>\n }\n\n @default {\n <div class=\"doc-viewer__unsupported\">\n <lc-icon name=\"document\" size=\"lg\" />\n <span class=\"doc-viewer__unsupported-title\">Preview not available</span>\n <span class=\"doc-viewer__unsupported-msg\">This file type cannot be previewed.</span>\n @if (src()) {\n <button type=\"button\" class=\"doc-viewer__download-btn\" (click)=\"download()\">\n <lc-icon name=\"arrow-down-tray\" size=\"sm\" />\n Download file\n </button>\n }\n </div>\n }\n }\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n output,\n computed,\n signal,\n OnDestroy,\n HostListener,\n} from '@angular/core';\nimport { IconComponent } from '../icon/icon.component';\nimport { SpinnerComponent } from '../spinner/spinner.component';\nimport { NgStyle } from '@angular/common';\n\nexport type GalleryLayout = 'grid' | 'masonry';\nexport type GallerySize = 'sm' | 'md' | 'lg';\n\nexport interface GalleryItem {\n /** Image source URL */\n src: string;\n /** Thumbnail URL (falls back to src if not provided) */\n thumbnail?: string;\n /** Alt text for accessibility */\n alt?: string;\n /** Optional caption displayed below the image */\n caption?: string;\n /** Optional category for filtering */\n category?: string;\n}\n\nconst SIZE_COLUMNS: Record<GallerySize, number> = {\n sm: 4,\n md: 3,\n lg: 2,\n};\n\n/**\n * Gallery component for displaying image collections with lightbox.\n *\n * Features:\n * - Grid and masonry layout modes\n * - Responsive column count via size presets (sm, md, lg thumbnails)\n * - Configurable custom column count\n * - Lightbox overlay with navigation (prev/next)\n * - Keyboard navigation (Arrow keys, Escape)\n * - Optional captions and category filtering\n * - Lazy loading with placeholder shimmer\n * - Zoom control in lightbox\n * - Download button in lightbox\n * - Dark/light theme support\n *\n * @example\n * ```html\n * <lc-gallery\n * [items]=\"images\"\n * layout=\"grid\"\n * size=\"md\"\n * [showCaptions]=\"true\" />\n * ```\n */\n@Component({\n selector: 'lc-gallery',\n standalone: true,\n imports: [IconComponent, SpinnerComponent, NgStyle],\n templateUrl: './gallery.component.html',\n styleUrls: ['./gallery.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': '\"gallery\"',\n },\n})\nexport class GalleryComponent implements OnDestroy {\n /** Array of gallery items to display */\n readonly items = input.required<GalleryItem[]>();\n\n /** Layout mode */\n readonly layout = input<GalleryLayout>('grid');\n\n /** Thumbnail size preset — controls column count (sm=4col, md=3col, lg=2col) */\n readonly size = input<GallerySize>('md');\n\n /** Custom column count (overrides size preset) */\n readonly columns = input<number | null>(null);\n\n /** Whether to show captions below thumbnails */\n readonly showCaptions = input(false);\n\n /** Whether clicking a thumbnail opens the lightbox */\n readonly enableLightbox = input(true);\n\n /** Gap between items in pixels */\n readonly gap = input(8);\n\n /** Aspect ratio for grid items (ignored in masonry mode) */\n readonly aspectRatio = input('1 / 1');\n\n /** Emitted when lightbox opens with item index */\n readonly lightboxOpen = output<number>();\n\n /** Emitted when lightbox closes */\n readonly lightboxClose = output<void>();\n\n // ── Internal state ───────────────────────────────────────────────────\n\n protected lightboxIndex = signal<number | null>(null);\n protected lightboxZoom = signal(100);\n protected loadedImages = signal<Set<number>>(new Set());\n protected activeFilter = signal<string | null>(null);\n\n // ── Computed ─────────────────────────────────────────────────────────\n\n protected gridColumns = computed(() => {\n return this.columns() ?? SIZE_COLUMNS[this.size()];\n });\n\n protected gridStyle = computed(() => {\n const cols = this.gridColumns();\n const g = this.gap();\n if (this.layout() === 'masonry') {\n return {\n 'column-count': `${cols}`,\n 'column-gap': `${g}px`,\n };\n }\n return {\n 'display': 'grid',\n 'grid-template-columns': `repeat(${cols}, 1fr)`,\n 'gap': `${g}px`,\n };\n });\n\n protected itemStyle = computed(() => {\n if (this.layout() === 'masonry') return {};\n return { 'aspect-ratio': this.aspectRatio() };\n });\n\n protected categories = computed<string[]>(() => {\n const cats = new Set<string>();\n for (const item of this.items()) {\n if (item.category) cats.add(item.category);\n }\n return Array.from(cats).sort();\n });\n\n protected filteredItems = computed(() => {\n const filter = this.activeFilter();\n if (!filter) return this.items();\n return this.items().filter(item => item.category === filter);\n });\n\n protected showFilters = computed(() => this.categories().length > 1);\n\n protected lightboxItem = computed<GalleryItem | null>(() => {\n const idx = this.lightboxIndex();\n if (idx === null) return null;\n const items = this.filteredItems();\n return items[idx] ?? null;\n });\n\n protected lightboxCounter = computed(() => {\n const idx = this.lightboxIndex();\n if (idx === null) return '';\n return `${idx + 1} / ${this.filteredItems().length}`;\n });\n\n protected lightboxTransform = computed(() => {\n const z = this.lightboxZoom() / 100;\n return `scale(${z})`;\n });\n\n protected canGoPrev = computed(() => {\n const idx = this.lightboxIndex();\n return idx !== null && idx > 0;\n });\n\n protected canGoNext = computed(() => {\n const idx = this.lightboxIndex();\n return idx !== null && idx < this.filteredItems().length - 1;\n });\n\n // ── Lifecycle ────────────────────────────────────────────────────────\n\n ngOnDestroy(): void {\n this.closeLightbox();\n }\n\n // ── Actions ──────────────────────────────────────────────────────────\n\n protected openLightbox(index: number): void {\n if (!this.enableLightbox()) return;\n this.lightboxIndex.set(index);\n this.lightboxZoom.set(100);\n this.lightboxOpen.emit(index);\n document.body.style.overflow = 'hidden';\n }\n\n protected closeLightbox(): void {\n if (this.lightboxIndex() === null) return;\n this.lightboxIndex.set(null);\n this.lightboxZoom.set(100);\n this.lightboxClose.emit();\n document.body.style.overflow = '';\n }\n\n protected goToPrev(): void {\n const idx = this.lightboxIndex();\n if (idx !== null && idx > 0) {\n this.lightboxIndex.set(idx - 1);\n this.lightboxZoom.set(100);\n }\n }\n\n protected goToNext(): void {\n const idx = this.lightboxIndex();\n if (idx !== null && idx < this.filteredItems().length - 1) {\n this.lightboxIndex.set(idx + 1);\n this.lightboxZoom.set(100);\n }\n }\n\n protected zoomIn(): void {\n this.lightboxZoom.update(z => Math.min(z + 25, 500));\n }\n\n protected zoomOut(): void {\n this.lightboxZoom.update(z => Math.max(z - 25, 25));\n }\n\n protected resetZoom(): void {\n this.lightboxZoom.set(100);\n }\n\n protected downloadCurrent(): void {\n const item = this.lightboxItem();\n if (!item) return;\n const a = document.createElement('a');\n a.href = item.src;\n a.download = item.alt || 'image';\n a.target = '_blank';\n a.rel = 'noopener noreferrer';\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n }\n\n protected setFilter(category: string | null): void {\n this.activeFilter.set(category);\n }\n\n protected onImageLoad(index: number): void {\n this.loadedImages.update(set => {\n const next = new Set(set);\n next.add(index);\n return next;\n });\n }\n\n protected isLoaded(index: number): boolean {\n return this.loadedImages().has(index);\n }\n\n protected getThumbnail(item: GalleryItem): string {\n return item.thumbnail || item.src;\n }\n\n protected trackByIndex(index: number): number {\n return index;\n }\n\n @HostListener('document:keydown', ['$event'])\n protected onKeydown(event: KeyboardEvent): void {\n if (this.lightboxIndex() === null) return;\n switch (event.key) {\n case 'Escape':\n this.closeLightbox();\n break;\n case 'ArrowLeft':\n this.goToPrev();\n break;\n case 'ArrowRight':\n this.goToNext();\n break;\n }\n }\n}\n","<!-- Filters -->\n@if (showFilters()) {\n <div class=\"gallery__filters\">\n <button\n type=\"button\"\n class=\"gallery__filter-btn\"\n [class.gallery__filter-btn--active]=\"activeFilter() === null\"\n (click)=\"setFilter(null)\"\n >\n All\n </button>\n @for (cat of categories(); track cat) {\n <button\n type=\"button\"\n class=\"gallery__filter-btn\"\n [class.gallery__filter-btn--active]=\"activeFilter() === cat\"\n (click)=\"setFilter(cat)\"\n >\n {{ cat }}\n </button>\n }\n </div>\n}\n\n<!-- Grid / Masonry -->\n<div class=\"gallery__grid\" [class.gallery__grid--masonry]=\"layout() === 'masonry'\" [ngStyle]=\"gridStyle()\">\n @for (item of filteredItems(); track $index) {\n <div\n class=\"gallery__item\"\n [class.gallery__item--loaded]=\"isLoaded($index)\"\n [class.gallery__item--clickable]=\"enableLightbox()\"\n [ngStyle]=\"itemStyle()\"\n (click)=\"openLightbox($index)\"\n (keydown.enter)=\"openLightbox($index)\"\n [attr.tabindex]=\"enableLightbox() ? 0 : null\"\n [attr.role]=\"enableLightbox() ? 'button' : null\"\n [attr.aria-label]=\"item.alt || 'Image ' + ($index + 1)\"\n >\n @if (!isLoaded($index)) {\n <div class=\"gallery__placeholder\"></div>\n }\n <img\n class=\"gallery__thumb\"\n [src]=\"getThumbnail(item)\"\n [alt]=\"item.alt || ''\"\n loading=\"lazy\"\n (load)=\"onImageLoad($index)\"\n />\n @if (showCaptions() && item.caption) {\n <div class=\"gallery__caption\">{{ item.caption }}</div>\n }\n </div>\n }\n</div>\n\n<!-- Lightbox overlay -->\n@if (lightboxItem(); as item) {\n <div class=\"gallery__lightbox\" role=\"dialog\" aria-modal=\"true\" aria-label=\"Image lightbox\">\n <!-- Backdrop -->\n <div class=\"gallery__lightbox-backdrop\" (click)=\"closeLightbox()\"></div>\n\n <!-- Toolbar -->\n <div class=\"gallery__lightbox-toolbar\">\n <div class=\"gallery__lightbox-counter\">{{ lightboxCounter() }}</div>\n <div class=\"gallery__lightbox-actions\">\n <button type=\"button\" class=\"gallery__lightbox-btn\" aria-label=\"Zoom out\" (click)=\"zoomOut()\">\n <lc-icon name=\"minus\" size=\"sm\" />\n </button>\n <span class=\"gallery__lightbox-zoom\">{{ lightboxZoom() }}%</span>\n <button type=\"button\" class=\"gallery__lightbox-btn\" aria-label=\"Zoom in\" (click)=\"zoomIn()\">\n <lc-icon name=\"plus\" size=\"sm\" />\n </button>\n <button type=\"button\" class=\"gallery__lightbox-btn\" aria-label=\"Reset zoom\" (click)=\"resetZoom()\">\n <lc-icon name=\"arrows-pointing-out\" size=\"xs\" />\n </button>\n <button type=\"button\" class=\"gallery__lightbox-btn\" aria-label=\"Download\" (click)=\"downloadCurrent()\">\n <lc-icon name=\"arrow-down-tray\" size=\"sm\" />\n </button>\n <button type=\"button\" class=\"gallery__lightbox-btn\" aria-label=\"Close\" (click)=\"closeLightbox()\">\n <lc-icon name=\"x-mark\" size=\"sm\" />\n </button>\n </div>\n </div>\n\n <!-- Navigation -->\n @if (canGoPrev()) {\n <button\n type=\"button\"\n class=\"gallery__lightbox-nav gallery__lightbox-nav--prev\"\n aria-label=\"Previous image\"\n (click)=\"goToPrev()\"\n >\n <lc-icon name=\"chevron-left\" size=\"lg\" />\n </button>\n }\n @if (canGoNext()) {\n <button\n type=\"button\"\n class=\"gallery__lightbox-nav gallery__lightbox-nav--next\"\n aria-label=\"Next image\"\n (click)=\"goToNext()\"\n >\n <lc-icon name=\"chevron-right\" size=\"lg\" />\n </button>\n }\n\n <!-- Image -->\n <div class=\"gallery__lightbox-content\">\n <img\n class=\"gallery__lightbox-image\"\n [src]=\"item.src\"\n [alt]=\"item.alt || ''\"\n [style.transform]=\"lightboxTransform()\"\n />\n </div>\n\n <!-- Caption -->\n @if (item.caption) {\n <div class=\"gallery__lightbox-caption\">{{ item.caption }}</div>\n }\n </div>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n computed,\n signal,\n HostListener,\n} from '@angular/core';\n\n// ── Public types ─────────────────────────────────────────────────────────────\n\nexport type DependencyNodeStatus = 'default' | 'active' | 'success' | 'warning' | 'error' | 'muted';\nexport type DependencyDirection = 'horizontal' | 'vertical';\nexport type DependencyRelation = 'depends' | 'blocks' | 'references' | 'requires' | 'extends' | 'implements' | 'uses';\n\nexport interface DependencyEdgeDef {\n /** Target node id */\n id: string;\n /** Relationship type */\n relation?: DependencyRelation;\n}\n\nexport interface DependencyNode {\n /** Unique identifier */\n id: string;\n /** Display label */\n label: string;\n /** Optional description */\n description?: string;\n /** Optional icon name */\n icon?: string;\n /** Visual status / color */\n status?: DependencyNodeStatus;\n /** Child nodes: items this node is required for (right / bottom side) */\n children?: DependencyNode[];\n /** Dependencies: items this node depends on (shown as cross-reference edges) */\n dependsOn?: DependencyEdgeDef[];\n}\n\n// ── Layout types ─────────────────────────────────────────────────────────────\n\ninterface LayoutNode {\n id: string;\n label: string;\n description?: string;\n icon?: string;\n status: DependencyNodeStatus;\n x: number;\n y: number;\n width: number;\n height: number;\n depth: number;\n parentId: string | null;\n incomingCount: number;\n outgoingCount: number;\n}\n\ninterface LayoutEdge {\n id: string;\n path: string;\n sourceId: string;\n targetId: string;\n relation?: DependencyRelation;\n labelX: number;\n labelY: number;\n color: string;\n dashed: boolean;\n isCrossRef: boolean;\n}\n\n// ── Constants ────────────────────────────────────────────────────────────────\n\nconst NODE_WIDTH = 160;\nconst NODE_HEIGHT = 40;\nconst H_GAP = 80;\nconst V_GAP = 24;\n\nconst RELATION_STYLES: Record<DependencyRelation, { color: string; dashed: boolean; label: string }> = {\n depends: { color: 'var(--color-neutral-400)', dashed: false, label: 'depends on' },\n blocks: { color: 'var(--color-error-default)', dashed: false, label: 'blocks' },\n references: { color: 'var(--color-info-default, #3b82f6)', dashed: true, label: 'references' },\n requires: { color: 'var(--color-warning-default)', dashed: false, label: 'requires' },\n extends: { color: 'var(--color-primary-400)', dashed: true, label: 'extends' },\n implements: { color: 'var(--color-success-default)', dashed: true, label: 'implements' },\n uses: { color: 'var(--color-neutral-300)', dashed: true, label: 'uses' },\n};\n\n// ── Layout algorithm ─────────────────────────────────────────────────────────\n\ninterface TreeMeasure {\n node: DependencyNode;\n primary: number;\n secondary: number;\n children: TreeMeasure[];\n depth: number;\n}\n\nfunction measureTree(node: DependencyNode, depth: number, dir: DependencyDirection): TreeMeasure {\n const children = (node.children || []).map(c => measureTree(c, depth + 1, dir));\n\n const nodePrimary = dir === 'horizontal' ? NODE_WIDTH : NODE_HEIGHT;\n const nodeSecondary = dir === 'horizontal' ? NODE_HEIGHT : NODE_WIDTH;\n\n if (children.length === 0) {\n return { node, primary: nodePrimary, secondary: nodeSecondary, children, depth };\n }\n\n const totalChildSecondary = children.reduce((sum, c) => sum + c.secondary, 0)\n + (children.length - 1) * V_GAP;\n const maxChildPrimary = Math.max(...children.map(c => c.primary));\n\n return {\n node,\n primary: nodePrimary + H_GAP + maxChildPrimary,\n secondary: Math.max(nodeSecondary, totalChildSecondary),\n children,\n depth,\n };\n}\n\nfunction layoutTreeH(\n measure: TreeMeasure, x: number, y: number, parentId: string | null,\n nodes: LayoutNode[], edges: LayoutEdge[], allNodes: Map<string, DependencyNode>,\n): void {\n const nodeY = y + measure.secondary / 2 - NODE_HEIGHT / 2;\n const orig = allNodes.get(measure.node.id);\n\n nodes.push({\n id: measure.node.id, label: measure.node.label, description: measure.node.description,\n icon: measure.node.icon, status: measure.node.status || 'default',\n x, y: nodeY, width: NODE_WIDTH, height: NODE_HEIGHT, depth: measure.depth, parentId,\n incomingCount: orig?.dependsOn?.length ?? 0, outgoingCount: orig?.children?.length ?? 0,\n });\n\n if (parentId) {\n const parent = nodes.find(n => n.id === parentId)!;\n const sx = parent.x + parent.width;\n const sy = parent.y + parent.height / 2;\n const tx = x;\n const ty = nodeY + NODE_HEIGHT / 2;\n const mx = sx + H_GAP / 2;\n edges.push({\n id: `${parentId}→${measure.node.id}`, sourceId: parentId, targetId: measure.node.id,\n path: `M ${sx} ${sy} C ${mx} ${sy}, ${mx} ${ty}, ${tx} ${ty}`,\n labelX: mx, labelY: (sy + ty) / 2,\n color: 'var(--color-neutral-300)', dashed: false, isCrossRef: false,\n });\n }\n\n let childY = y;\n for (const child of measure.children) {\n layoutTreeH(child, x + NODE_WIDTH + H_GAP, childY, measure.node.id, nodes, edges, allNodes);\n childY += child.secondary + V_GAP;\n }\n}\n\nfunction layoutTreeV(\n measure: TreeMeasure, x: number, y: number, parentId: string | null,\n nodes: LayoutNode[], edges: LayoutEdge[], allNodes: Map<string, DependencyNode>,\n): void {\n const nodeX = x + measure.secondary / 2 - NODE_WIDTH / 2;\n const orig = allNodes.get(measure.node.id);\n\n nodes.push({\n id: measure.node.id, label: measure.node.label, description: measure.node.description,\n icon: measure.node.icon, status: measure.node.status || 'default',\n x: nodeX, y, width: NODE_WIDTH, height: NODE_HEIGHT, depth: measure.depth, parentId,\n incomingCount: orig?.dependsOn?.length ?? 0, outgoingCount: orig?.children?.length ?? 0,\n });\n\n if (parentId) {\n const parent = nodes.find(n => n.id === parentId)!;\n const sx = parent.x + parent.width / 2;\n const sy = parent.y + parent.height;\n const tx = nodeX + NODE_WIDTH / 2;\n const ty = y;\n const my = sy + H_GAP / 2;\n edges.push({\n id: `${parentId}→${measure.node.id}`, sourceId: parentId, targetId: measure.node.id,\n path: `M ${sx} ${sy} C ${sx} ${my}, ${tx} ${my}, ${tx} ${ty}`,\n labelX: (sx + tx) / 2, labelY: my,\n color: 'var(--color-neutral-300)', dashed: false, isCrossRef: false,\n });\n }\n\n let childX = x;\n for (const child of measure.children) {\n layoutTreeV(child, childX, y + NODE_HEIGHT + H_GAP, measure.node.id, nodes, edges, allNodes);\n childX += child.secondary + V_GAP;\n }\n}\n\nfunction collectAllNodes(node: DependencyNode, map: Map<string, DependencyNode>): void {\n map.set(node.id, node);\n for (const child of node.children || []) collectAllNodes(child, map);\n}\n\nfunction createCrossRefEdges(\n nodes: LayoutNode[], allOriginal: Map<string, DependencyNode>, dir: DependencyDirection,\n): LayoutEdge[] {\n const edges: LayoutEdge[] = [];\n const nodeMap = new Map<string, LayoutNode>();\n for (const n of nodes) nodeMap.set(n.id, n);\n\n for (const [, orig] of allOriginal) {\n if (!orig.dependsOn?.length) continue;\n const target = nodeMap.get(orig.id);\n if (!target) continue;\n\n for (const dep of orig.dependsOn) {\n const source = nodeMap.get(dep.id);\n if (!source) continue;\n\n const relation = dep.relation || 'depends';\n const style = RELATION_STYLES[relation];\n let path: string, labelX: number, labelY: number;\n\n if (dir === 'horizontal') {\n const sx = source.x + source.width;\n const sy = source.y + source.height / 2;\n const tx = target.x;\n const ty = target.y + target.height / 2;\n const mx = (sx + tx) / 2;\n path = `M ${sx} ${sy} C ${mx} ${sy}, ${mx} ${ty}, ${tx} ${ty}`;\n labelX = mx; labelY = (sy + ty) / 2 - 8;\n } else {\n const sx = source.x + source.width / 2;\n const sy = source.y + source.height;\n const tx = target.x + target.width / 2;\n const ty = target.y;\n const my = (sy + ty) / 2;\n path = `M ${sx} ${sy} C ${sx} ${my}, ${tx} ${my}, ${tx} ${ty}`;\n labelX = (sx + tx) / 2; labelY = my - 8;\n }\n\n edges.push({\n id: `${dep.id}⇢${orig.id}`, sourceId: dep.id, targetId: orig.id,\n path, relation, labelX, labelY,\n color: style.color, dashed: style.dashed, isCrossRef: true,\n });\n }\n }\n return edges;\n}\n\n// ── Status colors ────────────────────────────────────────────────────────────\n\nconst STATUS_COLORS: Record<DependencyNodeStatus, { bg: string; border: string; text: string }> = {\n default: { bg: 'var(--color-neutral-50)', border: 'var(--color-neutral-300)', text: 'var(--color-neutral-900)' },\n active: { bg: 'var(--color-primary-50)', border: 'var(--color-primary-400)', text: 'var(--color-primary-700)' },\n success: { bg: 'var(--color-success-50, #f0fdf4)', border: 'var(--color-success-default)', text: 'var(--color-success-700, #15803d)' },\n warning: { bg: 'var(--color-warning-50, #fffbeb)', border: 'var(--color-warning-default)', text: 'var(--color-warning-700, #a16207)' },\n error: { bg: 'var(--color-error-50, #fef2f2)', border: 'var(--color-error-default)', text: 'var(--color-error-700, #b91c1c)' },\n muted: { bg: 'var(--color-neutral-100)', border: 'var(--color-neutral-200)', text: 'var(--color-neutral-400)' },\n};\n\n/**\n * Dependency viewer component for visualizing hierarchical and cross-cutting relationships.\n *\n * Features:\n * - Horizontal (left-to-right) and vertical (top-to-bottom) layout directions\n * - Bidirectional dependencies: children (right/down) and dependsOn (cross-references)\n * - Relationship types: depends, blocks, references, requires, extends, implements, uses\n * - Edge labels showing relationship type\n * - Dashed vs solid edges per relationship category\n * - Color-coded edges per relationship type\n * - Node status colors (default, active, success, warning, error, muted)\n * - Pan and zoom controls with mouse wheel support\n * - Collapsible sub-trees\n * - Interactive node selection with detail panel\n * - Legend showing active relationship types\n * - SVG arrowhead markers on cross-reference edges\n * - Dark/light theme support\n *\n * @example\n * ```html\n * <lc-dependency-viewer [root]=\"specTree\" direction=\"horizontal\" />\n * ```\n */\n@Component({\n selector: 'lc-dependency-viewer',\n standalone: true,\n templateUrl: './dependency-viewer.component.html',\n styleUrls: ['./dependency-viewer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { '[class]': '\"dep-viewer\"', '[style.height]': 'height()' },\n})\nexport class DependencyViewerComponent {\n readonly root = input.required<DependencyNode>();\n readonly direction = input<DependencyDirection>('horizontal');\n readonly height = input('500px');\n readonly showToolbar = input(true);\n readonly showEdgeLabels = input(true);\n readonly edgeWidth = input(1.5);\n\n protected zoom = signal(100);\n protected panX = signal(40);\n protected panY = signal(40);\n protected selectedNodeId = signal<string | null>(null);\n protected collapsedIds = signal<Set<string>>(new Set());\n\n private isPanning = false;\n private lastMouseX = 0;\n private lastMouseY = 0;\n\n protected effectiveRoot = computed<DependencyNode>(() =>\n this.pruneCollapsed(this.root(), this.collapsedIds())\n );\n\n private allOriginalNodes = computed(() => {\n const map = new Map<string, DependencyNode>();\n collectAllNodes(this.root(), map);\n return map;\n });\n\n protected layout = computed(() => {\n const root = this.effectiveRoot();\n const dir = this.direction();\n const measured = measureTree(root, 0, dir);\n const nodes: LayoutNode[] = [];\n const treeEdges: LayoutEdge[] = [];\n const allNodes = this.allOriginalNodes();\n\n if (dir === 'horizontal') {\n layoutTreeH(measured, 0, 0, null, nodes, treeEdges, allNodes);\n } else {\n layoutTreeV(measured, 0, 0, null, nodes, treeEdges, allNodes);\n }\n\n const crossEdges = createCrossRefEdges(nodes, allNodes, dir);\n return {\n nodes,\n edges: [...treeEdges, ...crossEdges],\n width: dir === 'horizontal' ? measured.primary : measured.secondary,\n height: dir === 'horizontal' ? measured.secondary : measured.primary,\n };\n });\n\n protected svgWidth = computed(() => this.layout().width + 80);\n protected svgHeight = computed(() => this.layout().height + 80);\n protected viewBox = computed(() => `0 0 ${this.svgWidth()} ${this.svgHeight()}`);\n protected transform = computed(() => {\n const z = this.zoom() / 100;\n return `translate(${this.panX()}px, ${this.panY()}px) scale(${z})`;\n });\n\n protected selectedNode = computed<LayoutNode | null>(() => {\n const id = this.selectedNodeId();\n if (!id) return null;\n return this.layout().nodes.find(n => n.id === id) ?? null;\n });\n\n protected selectedDependsOn = computed<DependencyEdgeDef[]>(() => {\n const id = this.selectedNodeId();\n if (!id) return [];\n return this.allOriginalNodes().get(id)?.dependsOn ?? [];\n });\n\n protected legendItems = computed(() => {\n const used = new Set<DependencyRelation>();\n for (const edge of this.layout().edges) {\n if (edge.relation) used.add(edge.relation);\n }\n return Array.from(used).map(r => ({\n relation: r, label: RELATION_STYLES[r].label,\n color: RELATION_STYLES[r].color, dashed: RELATION_STYLES[r].dashed,\n }));\n });\n\n protected hasChildren(nodeId: string): boolean {\n return !!(this.findOriginalNode(this.root(), nodeId)?.children?.length);\n }\n\n protected isCollapsed(nodeId: string): boolean {\n return this.collapsedIds().has(nodeId);\n }\n\n protected getRelationLabel(relation: DependencyRelation): string {\n return RELATION_STYLES[relation]?.label ?? relation;\n }\n\n private pruneCollapsed(node: DependencyNode, collapsed: Set<string>): DependencyNode {\n if (collapsed.has(node.id) || !node.children?.length) return { ...node, children: [] };\n return { ...node, children: node.children.map(c => this.pruneCollapsed(c, collapsed)) };\n }\n\n private findOriginalNode(node: DependencyNode, id: string): DependencyNode | null {\n if (node.id === id) return node;\n for (const child of node.children || []) {\n const found = this.findOriginalNode(child, id);\n if (found) return found;\n }\n return null;\n }\n\n protected selectNode(id: string, event: Event): void {\n event.stopPropagation();\n this.selectedNodeId.set(this.selectedNodeId() === id ? null : id);\n }\n\n protected toggleCollapse(id: string, event: Event): void {\n event.stopPropagation();\n this.collapsedIds.update(set => {\n const next = new Set(set);\n next.has(id) ? next.delete(id) : next.add(id);\n return next;\n });\n }\n\n protected deselectNode(): void { this.selectedNodeId.set(null); }\n protected zoomIn(): void { this.zoom.update(z => Math.min(z + 25, 300)); }\n protected zoomOut(): void { this.zoom.update(z => Math.max(z - 25, 25)); }\n protected resetZoom(): void { this.zoom.set(100); this.panX.set(40); this.panY.set(40); }\n\n protected onMouseDown(event: MouseEvent): void {\n if (event.button !== 0) return;\n this.isPanning = true;\n this.lastMouseX = event.clientX;\n this.lastMouseY = event.clientY;\n }\n\n @HostListener('document:mousemove', ['$event'])\n protected onMouseMove(event: MouseEvent): void {\n if (!this.isPanning) return;\n this.panX.update(x => x + event.clientX - this.lastMouseX);\n this.panY.update(y => y + event.clientY - this.lastMouseY);\n this.lastMouseX = event.clientX;\n this.lastMouseY = event.clientY;\n }\n\n @HostListener('document:mouseup')\n protected onMouseUp(): void { this.isPanning = false; }\n\n protected onWheel(event: WheelEvent): void {\n event.preventDefault();\n this.zoom.update(z => event.deltaY < 0 ? Math.min(z + 10, 300) : Math.max(z - 10, 25));\n }\n\n protected getNodeBg(status: DependencyNodeStatus): string { return STATUS_COLORS[status].bg; }\n protected getNodeBorder(status: DependencyNodeStatus): string { return STATUS_COLORS[status].border; }\n protected getNodeText(status: DependencyNodeStatus): string { return STATUS_COLORS[status].text; }\n}\n","<!-- Toolbar -->\n@if (showToolbar()) {\n <div class=\"dep-viewer__toolbar\">\n <button class=\"dep-viewer__btn\" (click)=\"zoomIn()\" title=\"Zoom in\">+</button>\n <span class=\"dep-viewer__zoom\">{{ zoom() }}%</span>\n <button class=\"dep-viewer__btn\" (click)=\"zoomOut()\" title=\"Zoom out\">−</button>\n <button class=\"dep-viewer__btn dep-viewer__btn--reset\" (click)=\"resetZoom()\" title=\"Reset\">⟲</button>\n <span class=\"dep-viewer__direction-label\">{{ direction() === 'horizontal' ? '→' : '↓' }}</span>\n </div>\n}\n\n<!-- Canvas -->\n<div\n class=\"dep-viewer__canvas\"\n (mousedown)=\"onMouseDown($event)\"\n (wheel)=\"onWheel($event)\"\n (click)=\"deselectNode()\"\n>\n <svg\n [attr.width]=\"svgWidth()\"\n [attr.height]=\"svgHeight()\"\n [attr.viewBox]=\"viewBox()\"\n [style.transform]=\"transform()\"\n class=\"dep-viewer__svg\"\n >\n <!-- Arrow markers for cross-reference edges -->\n <defs>\n <marker id=\"arrow-default\" markerWidth=\"8\" markerHeight=\"6\" refX=\"8\" refY=\"3\" orient=\"auto\"><path d=\"M0,0 L8,3 L0,6 Z\" fill=\"var(--color-neutral-400)\"/></marker>\n <marker id=\"arrow-blocks\" markerWidth=\"8\" markerHeight=\"6\" refX=\"8\" refY=\"3\" orient=\"auto\"><path d=\"M0,0 L8,3 L0,6 Z\" fill=\"var(--color-error-default)\"/></marker>\n <marker id=\"arrow-references\" markerWidth=\"8\" markerHeight=\"6\" refX=\"8\" refY=\"3\" orient=\"auto\"><path d=\"M0,0 L8,3 L0,6 Z\" fill=\"var(--color-info-default, #3b82f6)\"/></marker>\n <marker id=\"arrow-requires\" markerWidth=\"8\" markerHeight=\"6\" refX=\"8\" refY=\"3\" orient=\"auto\"><path d=\"M0,0 L8,3 L0,6 Z\" fill=\"var(--color-warning-default)\"/></marker>\n <marker id=\"arrow-extends\" markerWidth=\"8\" markerHeight=\"6\" refX=\"8\" refY=\"3\" orient=\"auto\"><path d=\"M0,0 L8,3 L0,6 Z\" fill=\"var(--color-primary-400)\"/></marker>\n <marker id=\"arrow-implements\" markerWidth=\"8\" markerHeight=\"6\" refX=\"8\" refY=\"3\" orient=\"auto\"><path d=\"M0,0 L8,3 L0,6 Z\" fill=\"var(--color-success-default)\"/></marker>\n <marker id=\"arrow-uses\" markerWidth=\"8\" markerHeight=\"6\" refX=\"8\" refY=\"3\" orient=\"auto\"><path d=\"M0,0 L8,3 L0,6 Z\" fill=\"var(--color-neutral-300)\"/></marker>\n <marker id=\"arrow-depends\" markerWidth=\"8\" markerHeight=\"6\" refX=\"8\" refY=\"3\" orient=\"auto\"><path d=\"M0,0 L8,3 L0,6 Z\" fill=\"var(--color-neutral-400)\"/></marker>\n </defs>\n\n <!-- Edges -->\n @for (edge of layout().edges; track edge.id) {\n <path\n [attr.d]=\"edge.path\"\n [attr.stroke]=\"edge.color\"\n [attr.stroke-width]=\"edgeWidth()\"\n [attr.stroke-dasharray]=\"edge.dashed ? '6 3' : 'none'\"\n [attr.marker-end]=\"edge.isCrossRef ? 'url(#arrow-' + (edge.relation || 'default') + ')' : ''\"\n fill=\"none\"\n class=\"dep-viewer__edge\"\n [class.dep-viewer__edge--cross-ref]=\"edge.isCrossRef\"\n />\n @if (showEdgeLabels() && edge.isCrossRef && edge.relation) {\n <text\n [attr.x]=\"edge.labelX\"\n [attr.y]=\"edge.labelY\"\n class=\"dep-viewer__edge-label\"\n [attr.fill]=\"edge.color\"\n text-anchor=\"middle\"\n >{{ getRelationLabel(edge.relation) }}</text>\n }\n }\n\n <!-- Nodes -->\n @for (node of layout().nodes; track node.id) {\n <g\n class=\"dep-viewer__node\"\n [class.dep-viewer__node--selected]=\"selectedNodeId() === node.id\"\n (click)=\"selectNode(node.id, $event)\"\n >\n <rect\n [attr.x]=\"node.x\"\n [attr.y]=\"node.y\"\n [attr.width]=\"node.width\"\n [attr.height]=\"node.height\"\n rx=\"6\" ry=\"6\"\n [attr.fill]=\"getNodeBg(node.status)\"\n [attr.stroke]=\"selectedNodeId() === node.id ? 'var(--color-primary-500)' : getNodeBorder(node.status)\"\n stroke-width=\"1.5\"\n />\n <text\n [attr.x]=\"node.x + node.width / 2\"\n [attr.y]=\"node.y + node.height / 2 + 4\"\n text-anchor=\"middle\"\n [attr.fill]=\"getNodeText(node.status)\"\n class=\"dep-viewer__node-label\"\n >{{ node.label }}</text>\n\n <!-- Collapse/expand toggle -->\n @if (hasChildren(node.id)) {\n <g\n class=\"dep-viewer__toggle\"\n (click)=\"toggleCollapse(node.id, $event)\"\n >\n @if (direction() === 'horizontal') {\n <circle\n [attr.cx]=\"node.x + node.width + 10\"\n [attr.cy]=\"node.y + node.height / 2\"\n r=\"8\"\n fill=\"var(--color-neutral-100)\" stroke=\"var(--color-neutral-300)\" stroke-width=\"1\"\n />\n <text\n [attr.x]=\"node.x + node.width + 10\"\n [attr.y]=\"node.y + node.height / 2 + 4\"\n text-anchor=\"middle\"\n class=\"dep-viewer__toggle-text\"\n >{{ isCollapsed(node.id) ? '+' : '−' }}</text>\n } @else {\n <circle\n [attr.cx]=\"node.x + node.width / 2\"\n [attr.cy]=\"node.y + node.height + 10\"\n r=\"8\"\n fill=\"var(--color-neutral-100)\" stroke=\"var(--color-neutral-300)\" stroke-width=\"1\"\n />\n <text\n [attr.x]=\"node.x + node.width / 2\"\n [attr.y]=\"node.y + node.height + 14\"\n text-anchor=\"middle\"\n class=\"dep-viewer__toggle-text\"\n >{{ isCollapsed(node.id) ? '+' : '−' }}</text>\n }\n </g>\n }\n </g>\n }\n </svg>\n</div>\n\n<!-- Legend -->\n@if (legendItems().length) {\n <div class=\"dep-viewer__legend\">\n @for (item of legendItems(); track item.relation) {\n <span class=\"dep-viewer__legend-item\">\n <svg width=\"24\" height=\"10\">\n <line\n x1=\"0\" y1=\"5\" x2=\"24\" y2=\"5\"\n [attr.stroke]=\"item.color\"\n stroke-width=\"2\"\n [attr.stroke-dasharray]=\"item.dashed ? '4 2' : 'none'\"\n />\n </svg>\n <span class=\"dep-viewer__legend-text\">{{ item.label }}</span>\n </span>\n }\n </div>\n}\n\n<!-- Detail panel -->\n@if (selectedNode(); as node) {\n <div class=\"dep-viewer__detail\">\n <div class=\"dep-viewer__detail-header\">\n <span class=\"dep-viewer__detail-status dep-viewer__detail-status--{{ node.status }}\">●</span>\n <strong>{{ node.label }}</strong>\n </div>\n @if (node.description) {\n <p class=\"dep-viewer__detail-desc\">{{ node.description }}</p>\n }\n <div class=\"dep-viewer__detail-meta\">\n <span>Depth: {{ node.depth }}</span>\n <span>Children: {{ node.outgoingCount }}</span>\n <span>Depends on: {{ node.incomingCount }}</span>\n </div>\n @if (selectedDependsOn().length) {\n <div class=\"dep-viewer__detail-deps\">\n <strong>Dependencies:</strong>\n <ul>\n @for (dep of selectedDependsOn(); track dep.id) {\n <li>\n <span class=\"dep-viewer__dep-relation\">{{ getRelationLabel(dep.relation || 'depends') }}</span>\n → {{ dep.id }}\n </li>\n }\n </ul>\n </div>\n }\n </div>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n computed,\n signal,\n output,\n} from '@angular/core';\n\nexport interface ScatterPoint {\n x: number;\n y: number;\n label?: string;\n size?: number;\n}\n\nexport interface ScatterSeries {\n label: string;\n data: ScatterPoint[];\n color?: string;\n}\n\nconst DEFAULT_COLORS = [\n 'var(--color-primary-500)',\n 'var(--color-secondary-500)',\n 'var(--color-success-default)',\n 'var(--color-warning-default)',\n 'var(--color-error-default)',\n 'var(--color-info-default)',\n];\n\n@Component({\n selector: 'lc-scatter-plot',\n standalone: true,\n templateUrl: './scatter-plot.component.html',\n styleUrls: ['./scatter-plot.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScatterPlotComponent {\n readonly series = input.required<ScatterSeries[]>();\n readonly width = input(400);\n readonly height = input(300);\n readonly showGrid = input(true);\n readonly showXLabels = input(true);\n readonly showYLabels = input(true);\n readonly showLegend = input(false);\n readonly showTooltip = input(true);\n readonly dotRadius = input(4);\n readonly xAxisLabel = input('');\n readonly yAxisLabel = input('');\n\n readonly pointClick = output<{ series: string; point: ScatterPoint }>();\n\n protected hoveredPoint = signal<{ x: number; y: number; label: string; sx: number; sy: number } | null>(null);\n\n private readonly PL = 48;\n private readonly PR = 16;\n private readonly PT = 16;\n private readonly PB = 36;\n\n protected readonly viewBox = computed(() => `0 0 ${this.width()} ${this.height()}`);\n\n private readonly allPoints = computed(() => this.series().flatMap(s => s.data));\n\n private readonly xExtent = computed(() => {\n const pts = this.allPoints();\n if (!pts.length) return { min: 0, max: 1 };\n const vals = pts.map(p => p.x);\n const min = Math.min(...vals);\n const max = Math.max(...vals);\n const pad = (max - min) * 0.05 || 0.5;\n return { min: min - pad, max: max + pad };\n });\n\n private readonly yExtent = computed(() => {\n const pts = this.allPoints();\n if (!pts.length) return { min: 0, max: 1 };\n const vals = pts.map(p => p.y);\n const min = Math.min(...vals);\n const max = Math.max(...vals);\n const pad = (max - min) * 0.05 || 0.5;\n return { min: min - pad, max: max + pad };\n });\n\n protected readonly plotArea = computed(() => ({\n x: this.PL,\n y: this.PT,\n w: this.width() - this.PL - this.PR,\n h: this.height() - this.PT - this.PB,\n }));\n\n protected readonly gridLinesX = computed(() => {\n if (!this.showGrid()) return [];\n const { min, max } = this.xExtent();\n const pa = this.plotArea();\n const steps = 5;\n const range = max - min;\n return Array.from({ length: steps + 1 }, (_, i) => {\n const val = min + (i / steps) * range;\n return { x: pa.x + (i / steps) * pa.w, label: Math.round(val * 10) / 10 };\n });\n });\n\n protected readonly gridLinesY = computed(() => {\n if (!this.showGrid()) return [];\n const { min, max } = this.yExtent();\n const pa = this.plotArea();\n const steps = 5;\n const range = max - min;\n return Array.from({ length: steps + 1 }, (_, i) => {\n const val = min + (i / steps) * range;\n return { y: pa.y + pa.h - (i / steps) * pa.h, label: Math.round(val * 10) / 10 };\n });\n });\n\n protected readonly renderedSeries = computed(() => {\n const pa = this.plotArea();\n const xE = this.xExtent();\n const yE = this.yExtent();\n const xRange = xE.max - xE.min || 1;\n const yRange = yE.max - yE.min || 1;\n const dr = this.dotRadius();\n\n return this.series().map((ser, si) => {\n const color = ser.color || DEFAULT_COLORS[si % DEFAULT_COLORS.length];\n const points = ser.data.map(p => ({\n cx: pa.x + ((p.x - xE.min) / xRange) * pa.w,\n cy: pa.y + pa.h - ((p.y - yE.min) / yRange) * pa.h,\n r: p.size ?? dr,\n label: p.label || `(${p.x}, ${p.y})`,\n orig: p,\n }));\n return { label: ser.label, color, points };\n });\n });\n\n protected readonly legendItems = computed(() => {\n if (!this.showLegend()) return [];\n return this.renderedSeries().map(s => ({ label: s.label, color: s.color }));\n });\n\n protected readonly axisLine = computed(() => {\n const pa = this.plotArea();\n return {\n vx1: pa.x, vy1: pa.y, vx2: pa.x, vy2: pa.y + pa.h,\n hx1: pa.x, hy1: pa.y + pa.h, hx2: pa.x + pa.w, hy2: pa.y + pa.h,\n };\n });\n\n protected onDotEnter(cx: number, cy: number, label: string): void {\n if (this.showTooltip()) this.hoveredPoint.set({ x: cx, y: cy, label, sx: cx, sy: cy - 12 });\n }\n\n protected onDotLeave(): void {\n this.hoveredPoint.set(null);\n }\n\n protected onDotClick(seriesLabel: string, point: ScatterPoint): void {\n this.pointClick.emit({ series: seriesLabel, point });\n }\n}\n","<div class=\"lc-scatter-plot\">\n <svg\n [attr.width]=\"width()\"\n [attr.height]=\"height()\"\n [attr.viewBox]=\"viewBox()\"\n role=\"img\"\n aria-label=\"Scatter plot\"\n class=\"lc-scatter-plot__svg\"\n >\n <!-- Grid lines Y -->\n @for (line of gridLinesY(); track line.y) {\n <line\n [attr.x1]=\"axisLine().hx1\"\n [attr.y1]=\"line.y\"\n [attr.x2]=\"axisLine().hx2\"\n [attr.y2]=\"line.y\"\n class=\"lc-scatter-plot__grid-line\"\n />\n @if (showYLabels()) {\n <text\n [attr.x]=\"axisLine().vx1 - 6\"\n [attr.y]=\"line.y\"\n text-anchor=\"end\"\n dominant-baseline=\"central\"\n class=\"lc-scatter-plot__label\"\n >{{ line.label }}</text>\n }\n }\n\n <!-- Grid lines X -->\n @for (line of gridLinesX(); track line.x) {\n <line\n [attr.x1]=\"line.x\"\n [attr.y1]=\"axisLine().vy1\"\n [attr.x2]=\"line.x\"\n [attr.y2]=\"axisLine().vy2\"\n class=\"lc-scatter-plot__grid-line\"\n />\n @if (showXLabels()) {\n <text\n [attr.x]=\"line.x\"\n [attr.y]=\"height() - 10\"\n text-anchor=\"middle\"\n class=\"lc-scatter-plot__label\"\n >{{ line.label }}</text>\n }\n }\n\n <!-- Axes -->\n <line [attr.x1]=\"axisLine().vx1\" [attr.y1]=\"axisLine().vy1\" [attr.x2]=\"axisLine().vx2\" [attr.y2]=\"axisLine().vy2\" class=\"lc-scatter-plot__axis\" />\n <line [attr.x1]=\"axisLine().hx1\" [attr.y1]=\"axisLine().hy1\" [attr.x2]=\"axisLine().hx2\" [attr.y2]=\"axisLine().hy2\" class=\"lc-scatter-plot__axis\" />\n\n <!-- Axis labels -->\n @if (xAxisLabel()) {\n <text [attr.x]=\"plotArea().x + plotArea().w / 2\" [attr.y]=\"height() - 2\" text-anchor=\"middle\" class=\"lc-scatter-plot__axis-label\">{{ xAxisLabel() }}</text>\n }\n @if (yAxisLabel()) {\n <text [attr.x]=\"12\" [attr.y]=\"plotArea().y + plotArea().h / 2\" text-anchor=\"middle\" [attr.transform]=\"'rotate(-90, 12, ' + (plotArea().y + plotArea().h / 2) + ')'\" class=\"lc-scatter-plot__axis-label\">{{ yAxisLabel() }}</text>\n }\n\n <!-- Series dots -->\n @for (ser of renderedSeries(); track ser.label) {\n @for (pt of ser.points; track $index) {\n <circle\n [attr.cx]=\"pt.cx\"\n [attr.cy]=\"pt.cy\"\n [attr.r]=\"pt.r\"\n [attr.fill]=\"ser.color\"\n class=\"lc-scatter-plot__dot\"\n (mouseenter)=\"onDotEnter(pt.cx, pt.cy, pt.label)\"\n (mouseleave)=\"onDotLeave()\"\n (click)=\"onDotClick(ser.label, pt.orig)\"\n />\n }\n }\n\n <!-- Tooltip -->\n @if (hoveredPoint(); as hp) {\n <rect\n [attr.x]=\"hp.sx - 40\"\n [attr.y]=\"hp.sy - 22\"\n width=\"80\" height=\"18\" rx=\"4\"\n class=\"lc-scatter-plot__tooltip-bg\"\n />\n <text\n [attr.x]=\"hp.sx\"\n [attr.y]=\"hp.sy - 10\"\n text-anchor=\"middle\"\n class=\"lc-scatter-plot__tooltip-text\"\n >{{ hp.label }}</text>\n }\n </svg>\n\n @if (legendItems().length) {\n <div class=\"lc-scatter-plot__legend\">\n @for (item of legendItems(); track item.label) {\n <div class=\"lc-scatter-plot__legend-item\">\n <span class=\"lc-scatter-plot__legend-dot\" [style.background-color]=\"item.color\"></span>\n <span class=\"lc-scatter-plot__legend-label\">{{ item.label }}</span>\n </div>\n }\n </div>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n computed,\n} from '@angular/core';\n\nexport interface FunnelStep {\n label: string;\n value: number;\n color?: string;\n}\n\nconst DEFAULT_COLORS = [\n 'var(--color-primary-500)',\n 'var(--color-primary-400)',\n 'var(--color-primary-300)',\n 'var(--color-secondary-500)',\n 'var(--color-secondary-400)',\n 'var(--color-secondary-300)',\n 'var(--color-success-default)',\n 'var(--color-warning-default)',\n];\n\n@Component({\n selector: 'lc-funnel-chart',\n standalone: true,\n templateUrl: './funnel-chart.component.html',\n styleUrls: ['./funnel-chart.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FunnelChartComponent {\n readonly steps = input.required<FunnelStep[]>();\n readonly width = input(400);\n readonly height = input(300);\n readonly showLabels = input(true);\n readonly showValues = input(true);\n readonly showPercentage = input(true);\n readonly orientation = input<'vertical' | 'horizontal'>('vertical');\n\n protected readonly viewBox = computed(() => `0 0 ${this.width()} ${this.height()}`);\n\n protected readonly renderedSteps = computed(() => {\n const steps = this.steps();\n if (!steps.length) return [];\n\n const maxVal = Math.max(...steps.map(s => s.value));\n const w = this.width();\n const h = this.height();\n const isV = this.orientation() === 'vertical';\n const count = steps.length;\n\n if (isV) {\n const stepH = h / count;\n const padding = 20;\n const maxWidth = w - padding * 2;\n\n return steps.map((step, i) => {\n const ratio = maxVal > 0 ? step.value / maxVal : 0;\n const nextRatio = i < count - 1 && maxVal > 0 ? steps[i + 1].value / maxVal : ratio * 0.6;\n const topW = ratio * maxWidth;\n const bottomW = (i < count - 1 ? nextRatio : ratio * 0.6) * maxWidth;\n const y = i * stepH;\n const cx = w / 2;\n const pct = i === 0 ? 100 : maxVal > 0 ? Math.round((step.value / maxVal) * 100) : 0;\n\n const path = [\n `M ${cx - topW / 2} ${y}`,\n `L ${cx + topW / 2} ${y}`,\n `L ${cx + bottomW / 2} ${y + stepH}`,\n `L ${cx - bottomW / 2} ${y + stepH}`,\n 'Z',\n ].join(' ');\n\n return {\n path,\n color: step.color || DEFAULT_COLORS[i % DEFAULT_COLORS.length],\n label: step.label,\n value: step.value,\n pct,\n labelX: cx,\n labelY: y + stepH / 2,\n };\n });\n } else {\n const stepW = w / count;\n const padding = 20;\n const maxHeight = h - padding * 2;\n\n return steps.map((step, i) => {\n const ratio = maxVal > 0 ? step.value / maxVal : 0;\n const nextRatio = i < count - 1 && maxVal > 0 ? steps[i + 1].value / maxVal : ratio * 0.6;\n const leftH = ratio * maxHeight;\n const rightH = (i < count - 1 ? nextRatio : ratio * 0.6) * maxHeight;\n const x = i * stepW;\n const cy = h / 2;\n const pct = i === 0 ? 100 : maxVal > 0 ? Math.round((step.value / maxVal) * 100) : 0;\n\n const path = [\n `M ${x} ${cy - leftH / 2}`,\n `L ${x + stepW} ${cy - rightH / 2}`,\n `L ${x + stepW} ${cy + rightH / 2}`,\n `L ${x} ${cy + leftH / 2}`,\n 'Z',\n ].join(' ');\n\n return {\n path,\n color: step.color || DEFAULT_COLORS[i % DEFAULT_COLORS.length],\n label: step.label,\n value: step.value,\n pct,\n labelX: x + stepW / 2,\n labelY: cy,\n };\n });\n }\n });\n}\n","<div class=\"lc-funnel-chart\">\n <svg\n [attr.width]=\"width()\"\n [attr.height]=\"height()\"\n [attr.viewBox]=\"viewBox()\"\n role=\"img\"\n aria-label=\"Funnel chart\"\n class=\"lc-funnel-chart__svg\"\n >\n @for (step of renderedSteps(); track step.label) {\n <path\n [attr.d]=\"step.path\"\n [attr.fill]=\"step.color\"\n class=\"lc-funnel-chart__step\"\n />\n\n @if (showLabels()) {\n <text\n [attr.x]=\"step.labelX\"\n [attr.y]=\"step.labelY - 2\"\n text-anchor=\"middle\"\n dominant-baseline=\"auto\"\n class=\"lc-funnel-chart__label\"\n >{{ step.label }}</text>\n }\n\n @if (showValues() || showPercentage()) {\n <text\n [attr.x]=\"step.labelX\"\n [attr.y]=\"step.labelY + 12\"\n text-anchor=\"middle\"\n dominant-baseline=\"auto\"\n class=\"lc-funnel-chart__value\"\n >\n @if (showValues()) { {{ step.value }} }\n @if (showValues() && showPercentage()) { · }\n @if (showPercentage()) { {{ step.pct }}% }\n </text>\n }\n }\n </svg>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n signal,\n computed,\n output,\n forwardRef,\n ElementRef,\n viewChild,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\n@Component({\n selector: 'lc-tag-input',\n standalone: true,\n templateUrl: './tag-input.component.html',\n styleUrls: ['./tag-input.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TagInputComponent),\n multi: true,\n },\n ],\n})\nexport class TagInputComponent implements ControlValueAccessor {\n readonly placeholder = input('Add tag…');\n readonly maxTags = input(Infinity);\n readonly allowDuplicates = input(false);\n readonly removable = input(true);\n readonly disabled = input(false);\n readonly separator = input<'enter' | 'comma' | 'both'>('both');\n readonly suggestions = input<string[]>([]);\n readonly label = input('');\n\n readonly tagAdded = output<string>();\n readonly tagRemoved = output<string>();\n\n protected tags = signal<string[]>([]);\n protected inputValue = signal('');\n protected focused = signal(false);\n\n protected readonly inputEl = viewChild<ElementRef<HTMLInputElement>>('inputEl');\n\n protected readonly filteredSuggestions = computed(() => {\n const val = this.inputValue().toLowerCase().trim();\n if (!val) return [];\n return this.suggestions().filter(\n s => s.toLowerCase().includes(val) && (this.allowDuplicates() || !this.tags().includes(s))\n );\n });\n\n protected readonly canAdd = computed(() => this.tags().length < this.maxTags());\n\n private onChange: (val: string[]) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: string[] | null): void {\n this.tags.set(value ?? []);\n }\n\n registerOnChange(fn: (val: string[]) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n protected addTag(value: string): void {\n const tag = value.trim();\n if (!tag || !this.canAdd()) return;\n if (!this.allowDuplicates() && this.tags().includes(tag)) return;\n\n this.tags.update(t => [...t, tag]);\n this.inputValue.set('');\n this.onChange(this.tags());\n this.tagAdded.emit(tag);\n }\n\n protected removeTag(index: number): void {\n const removed = this.tags()[index];\n this.tags.update(t => t.filter((_, i) => i !== index));\n this.onChange(this.tags());\n this.tagRemoved.emit(removed);\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n const sep = this.separator();\n const val = this.inputValue();\n\n if (event.key === 'Enter' && (sep === 'enter' || sep === 'both')) {\n event.preventDefault();\n this.addTag(val);\n }\n\n if (event.key === ',' && (sep === 'comma' || sep === 'both')) {\n event.preventDefault();\n this.addTag(val);\n }\n\n if (event.key === 'Backspace' && !val && this.tags().length > 0) {\n this.removeTag(this.tags().length - 1);\n }\n }\n\n protected onInput(event: Event): void {\n this.inputValue.set((event.target as HTMLInputElement).value);\n }\n\n protected onFocus(): void {\n this.focused.set(true);\n }\n\n protected onBlur(): void {\n this.focused.set(false);\n this.onTouched();\n const val = this.inputValue();\n if (val.trim()) this.addTag(val);\n }\n\n protected selectSuggestion(value: string): void {\n this.addTag(value);\n this.inputEl()?.nativeElement.focus();\n }\n\n protected focusInput(): void {\n this.inputEl()?.nativeElement.focus();\n }\n}\n","@if (label()) {\n <label class=\"lc-tag-input__label\">{{ label() }}</label>\n}\n\n<div\n class=\"lc-tag-input__container\"\n [class.lc-tag-input__container--focused]=\"focused()\"\n [class.lc-tag-input__container--disabled]=\"disabled()\"\n (click)=\"focusInput()\"\n>\n @for (tag of tags(); track $index) {\n <span class=\"lc-tag-input__tag\">\n <span class=\"lc-tag-input__tag-text\">{{ tag }}</span>\n @if (removable() && !disabled()) {\n <button\n type=\"button\"\n class=\"lc-tag-input__tag-remove\"\n (click)=\"removeTag($index); $event.stopPropagation()\"\n aria-label=\"Remove tag\"\n >×</button>\n }\n </span>\n }\n\n @if (canAdd() && !disabled()) {\n <input\n #inputEl\n type=\"text\"\n class=\"lc-tag-input__input\"\n [placeholder]=\"tags().length ? '' : placeholder()\"\n [value]=\"inputValue()\"\n (input)=\"onInput($event)\"\n (keydown)=\"onKeydown($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n />\n }\n</div>\n\n@if (filteredSuggestions().length && focused()) {\n <ul class=\"lc-tag-input__suggestions\">\n @for (sug of filteredSuggestions(); track sug) {\n <li\n class=\"lc-tag-input__suggestion\"\n (mousedown)=\"selectSuggestion(sug); $event.preventDefault()\"\n >{{ sug }}</li>\n }\n </ul>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n signal,\n computed,\n output,\n forwardRef,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\nexport interface DateRange {\n start: Date | null;\n end: Date | null;\n}\n\n@Component({\n selector: 'lc-date-range-picker',\n standalone: true,\n templateUrl: './date-range-picker.component.html',\n styleUrls: ['./date-range-picker.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DateRangePickerComponent),\n multi: true,\n },\n ],\n})\nexport class DateRangePickerComponent implements ControlValueAccessor {\n readonly label = input('');\n readonly placeholder = input('Select date range');\n readonly disabled = input(false);\n readonly minDate = input<Date | null>(null);\n readonly maxDate = input<Date | null>(null);\n\n readonly rangeChange = output<DateRange>();\n\n protected isOpen = signal(false);\n protected range = signal<DateRange>({ start: null, end: null });\n protected selecting = signal<'start' | 'end'>('start');\n protected hoveredDate = signal<Date | null>(null);\n protected viewingMonth = signal(new Date());\n\n private onChange: (val: DateRange) => void = () => {};\n private onTouched: () => void = () => {};\n\n protected readonly displayValue = computed(() => {\n const r = this.range();\n if (!r.start) return '';\n const fmt = (d: Date) => d.toLocaleDateString('de-DE', { day: '2-digit', month: '2-digit', year: 'numeric' });\n if (!r.end) return fmt(r.start) + ' – …';\n return `${fmt(r.start)} – ${fmt(r.end)}`;\n });\n\n protected readonly monthLabel = computed(() => {\n const d = this.viewingMonth();\n return d.toLocaleDateString('de-DE', { month: 'long', year: 'numeric' });\n });\n\n protected readonly weekdays = ['Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa', 'So'];\n\n protected readonly calendarDays = computed(() => {\n const viewing = this.viewingMonth();\n const year = viewing.getFullYear();\n const month = viewing.getMonth();\n const firstDay = new Date(year, month, 1);\n const lastDay = new Date(year, month + 1, 0);\n\n let startDow = firstDay.getDay();\n if (startDow === 0) startDow = 7; // Monday = 1\n const prefixDays = startDow - 1;\n\n const days: { date: Date; inMonth: boolean; disabled: boolean }[] = [];\n\n for (let i = prefixDays; i > 0; i--) {\n const d = new Date(year, month, 1 - i);\n days.push({ date: d, inMonth: false, disabled: this.isDateDisabled(d) });\n }\n\n for (let d = 1; d <= lastDay.getDate(); d++) {\n const date = new Date(year, month, d);\n days.push({ date, inMonth: true, disabled: this.isDateDisabled(date) });\n }\n\n const remaining = 42 - days.length;\n for (let i = 1; i <= remaining; i++) {\n const d = new Date(year, month + 1, i);\n days.push({ date: d, inMonth: false, disabled: this.isDateDisabled(d) });\n }\n\n return days;\n });\n\n writeValue(value: DateRange | null): void {\n this.range.set(value ?? { start: null, end: null });\n if (value?.start) {\n this.viewingMonth.set(new Date(value.start.getFullYear(), value.start.getMonth(), 1));\n }\n }\n\n registerOnChange(fn: (val: DateRange) => void): void { this.onChange = fn; }\n registerOnTouched(fn: () => void): void { this.onTouched = fn; }\n\n protected toggle(): void {\n if (this.disabled()) return;\n this.isOpen.update(v => !v);\n if (this.isOpen()) this.selecting.set('start');\n }\n\n protected close(): void {\n this.isOpen.set(false);\n this.onTouched();\n }\n\n protected prevMonth(): void {\n this.viewingMonth.update(d => new Date(d.getFullYear(), d.getMonth() - 1, 1));\n }\n\n protected nextMonth(): void {\n this.viewingMonth.update(d => new Date(d.getFullYear(), d.getMonth() + 1, 1));\n }\n\n protected selectDate(date: Date): void {\n if (this.isDateDisabled(date)) return;\n\n const current = this.range();\n if (this.selecting() === 'start') {\n this.range.set({ start: date, end: null });\n this.selecting.set('end');\n } else {\n if (date < current.start!) {\n this.range.set({ start: date, end: current.start });\n } else {\n this.range.set({ start: current.start, end: date });\n }\n this.selecting.set('start');\n this.emitRange();\n this.close();\n }\n }\n\n protected onDayHover(date: Date): void {\n if (this.selecting() === 'end') {\n this.hoveredDate.set(date);\n }\n }\n\n protected isStart(date: Date): boolean {\n return this.sameDay(date, this.range().start);\n }\n\n protected isEnd(date: Date): boolean {\n return this.sameDay(date, this.range().end);\n }\n\n protected isInRange(date: Date): boolean {\n const r = this.range();\n if (!r.start) return false;\n const end = r.end || this.hoveredDate();\n if (!end) return false;\n const s = Math.min(r.start.getTime(), end.getTime());\n const e = Math.max(r.start.getTime(), end.getTime());\n const t = date.getTime();\n return t > s && t < e;\n }\n\n protected isToday(date: Date): boolean {\n return this.sameDay(date, new Date());\n }\n\n protected clearRange(event: Event): void {\n event.stopPropagation();\n this.range.set({ start: null, end: null });\n const r = { start: null, end: null };\n this.onChange(r);\n this.rangeChange.emit(r);\n }\n\n private isDateDisabled(date: Date): boolean {\n const min = this.minDate();\n const max = this.maxDate();\n if (min && date < min) return true;\n if (max && date > max) return true;\n return false;\n }\n\n private sameDay(a: Date | null, b: Date | null): boolean {\n if (!a || !b) return false;\n return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();\n }\n\n private emitRange(): void {\n const r = this.range();\n this.onChange(r);\n this.rangeChange.emit(r);\n }\n}\n","@if (label()) {\n <label class=\"lc-drp__label\">{{ label() }}</label>\n}\n\n<div class=\"lc-drp__trigger\" [class.lc-drp__trigger--disabled]=\"disabled()\" (click)=\"toggle()\">\n <span class=\"lc-drp__icon\">📅</span>\n <span class=\"lc-drp__value\" [class.lc-drp__value--placeholder]=\"!displayValue()\">\n {{ displayValue() || placeholder() }}\n </span>\n @if (displayValue()) {\n <button type=\"button\" class=\"lc-drp__clear\" (click)=\"clearRange($event)\" aria-label=\"Clear\">×</button>\n }\n</div>\n\n@if (isOpen()) {\n <div class=\"lc-drp__dropdown\">\n <div class=\"lc-drp__header\">\n <button type=\"button\" class=\"lc-drp__nav\" (click)=\"prevMonth()\">‹</button>\n <span class=\"lc-drp__month\">{{ monthLabel() }}</span>\n <button type=\"button\" class=\"lc-drp__nav\" (click)=\"nextMonth()\">›</button>\n </div>\n\n <div class=\"lc-drp__weekdays\">\n @for (wd of weekdays; track wd) {\n <span class=\"lc-drp__weekday\">{{ wd }}</span>\n }\n </div>\n\n <div class=\"lc-drp__grid\">\n @for (day of calendarDays(); track $index) {\n <button\n type=\"button\"\n class=\"lc-drp__day\"\n [class.lc-drp__day--outside]=\"!day.inMonth\"\n [class.lc-drp__day--disabled]=\"day.disabled\"\n [class.lc-drp__day--today]=\"isToday(day.date)\"\n [class.lc-drp__day--start]=\"isStart(day.date)\"\n [class.lc-drp__day--end]=\"isEnd(day.date)\"\n [class.lc-drp__day--in-range]=\"isInRange(day.date)\"\n [disabled]=\"day.disabled\"\n (click)=\"selectDate(day.date)\"\n (mouseenter)=\"onDayHover(day.date)\"\n >{{ day.date.getDate() }}</button>\n }\n </div>\n\n <div class=\"lc-drp__footer\">\n <span class=\"lc-drp__hint\">\n @if (selecting() === 'start') { Select start date }\n @else { Select end date }\n </span>\n </div>\n </div>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n computed,\n} from '@angular/core';\n\nexport type DiffViewMode = 'side-by-side' | 'inline';\n\ninterface DiffLine {\n type: 'unchanged' | 'added' | 'removed';\n leftNum: number | null;\n rightNum: number | null;\n content: string;\n}\n\n@Component({\n selector: 'lc-diff-viewer',\n standalone: true,\n templateUrl: './diff-viewer.component.html',\n styleUrls: ['./diff-viewer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DiffViewerComponent {\n readonly oldText = input.required<string>();\n readonly newText = input.required<string>();\n readonly oldLabel = input('Original');\n readonly newLabel = input('Modified');\n readonly mode = input<DiffViewMode>('side-by-side');\n readonly showLineNumbers = input(true);\n readonly contextLines = input(Infinity);\n\n protected readonly diffLines = computed(() => {\n const oldLines = this.oldText().split('\\n');\n const newLines = this.newText().split('\\n');\n return this.computeDiff(oldLines, newLines);\n });\n\n protected readonly filteredLines = computed(() => {\n const ctx = this.contextLines();\n const lines = this.diffLines();\n if (ctx === Infinity) return lines;\n\n const changed = new Set<number>();\n lines.forEach((l, i) => { if (l.type !== 'unchanged') changed.add(i); });\n\n const visible = new Set<number>();\n for (const idx of changed) {\n for (let j = Math.max(0, idx - ctx); j <= Math.min(lines.length - 1, idx + ctx); j++) {\n visible.add(j);\n }\n }\n\n return lines.filter((_, i) => visible.has(i));\n });\n\n protected readonly sideBySide = computed(() => {\n if (this.mode() !== 'side-by-side') return { left: [], right: [] };\n\n const lines = this.filteredLines();\n const left: { num: number | null; content: string; type: string }[] = [];\n const right: { num: number | null; content: string; type: string }[] = [];\n\n for (const line of lines) {\n if (line.type === 'unchanged') {\n left.push({ num: line.leftNum, content: line.content, type: 'unchanged' });\n right.push({ num: line.rightNum, content: line.content, type: 'unchanged' });\n } else if (line.type === 'removed') {\n left.push({ num: line.leftNum, content: line.content, type: 'removed' });\n right.push({ num: null, content: '', type: 'empty' });\n } else {\n left.push({ num: null, content: '', type: 'empty' });\n right.push({ num: line.rightNum, content: line.content, type: 'added' });\n }\n }\n\n return { left, right };\n });\n\n protected readonly stats = computed(() => {\n const lines = this.diffLines();\n return {\n additions: lines.filter(l => l.type === 'added').length,\n deletions: lines.filter(l => l.type === 'removed').length,\n };\n });\n\n private computeDiff(oldLines: string[], newLines: string[]): DiffLine[] {\n const m = oldLines.length;\n const n = newLines.length;\n\n // LCS using dynamic programming\n const dp: number[][] = Array.from({ length: m + 1 }, () => Array(n + 1).fill(0));\n for (let i = 1; i <= m; i++) {\n for (let j = 1; j <= n; j++) {\n dp[i][j] = oldLines[i - 1] === newLines[j - 1]\n ? dp[i - 1][j - 1] + 1\n : Math.max(dp[i - 1][j], dp[i][j - 1]);\n }\n }\n\n // Backtrack\n const result: DiffLine[] = [];\n let i = m, j = n;\n const stack: DiffLine[] = [];\n\n while (i > 0 || j > 0) {\n if (i > 0 && j > 0 && oldLines[i - 1] === newLines[j - 1]) {\n stack.push({ type: 'unchanged', leftNum: i, rightNum: j, content: oldLines[i - 1] });\n i--; j--;\n } else if (j > 0 && (i === 0 || dp[i][j - 1] >= dp[i - 1][j])) {\n stack.push({ type: 'added', leftNum: null, rightNum: j, content: newLines[j - 1] });\n j--;\n } else {\n stack.push({ type: 'removed', leftNum: i, rightNum: null, content: oldLines[i - 1] });\n i--;\n }\n }\n\n while (stack.length) result.push(stack.pop()!);\n return result;\n }\n}\n","<div class=\"lc-diff\">\n <!-- Stats bar -->\n <div class=\"lc-diff__stats\">\n <span class=\"lc-diff__stat lc-diff__stat--add\">+{{ stats().additions }}</span>\n <span class=\"lc-diff__stat lc-diff__stat--del\">−{{ stats().deletions }}</span>\n </div>\n\n @if (mode() === 'inline') {\n <!-- Inline mode -->\n <div class=\"lc-diff__inline\">\n <div class=\"lc-diff__headers\">\n <span class=\"lc-diff__file-label\">{{ oldLabel() }} → {{ newLabel() }}</span>\n </div>\n <div class=\"lc-diff__body\">\n @for (line of filteredLines(); track $index) {\n <div\n class=\"lc-diff__line\"\n [class.lc-diff__line--added]=\"line.type === 'added'\"\n [class.lc-diff__line--removed]=\"line.type === 'removed'\"\n >\n @if (showLineNumbers()) {\n <span class=\"lc-diff__num lc-diff__num--left\">{{ line.leftNum ?? '' }}</span>\n <span class=\"lc-diff__num lc-diff__num--right\">{{ line.rightNum ?? '' }}</span>\n }\n <span class=\"lc-diff__prefix\">{{ line.type === 'added' ? '+' : line.type === 'removed' ? '−' : ' ' }}</span>\n <span class=\"lc-diff__content\">{{ line.content }}</span>\n </div>\n }\n </div>\n </div>\n } @else {\n <!-- Side-by-side mode -->\n <div class=\"lc-diff__side-by-side\">\n <div class=\"lc-diff__pane lc-diff__pane--left\">\n <div class=\"lc-diff__pane-header\">{{ oldLabel() }}</div>\n @for (line of sideBySide().left; track $index) {\n <div\n class=\"lc-diff__line\"\n [class.lc-diff__line--removed]=\"line.type === 'removed'\"\n [class.lc-diff__line--empty]=\"line.type === 'empty'\"\n >\n @if (showLineNumbers()) {\n <span class=\"lc-diff__num\">{{ line.num ?? '' }}</span>\n }\n <span class=\"lc-diff__content\">{{ line.content }}</span>\n </div>\n }\n </div>\n <div class=\"lc-diff__pane lc-diff__pane--right\">\n <div class=\"lc-diff__pane-header\">{{ newLabel() }}</div>\n @for (line of sideBySide().right; track $index) {\n <div\n class=\"lc-diff__line\"\n [class.lc-diff__line--added]=\"line.type === 'added'\"\n [class.lc-diff__line--empty]=\"line.type === 'empty'\"\n >\n @if (showLineNumbers()) {\n <span class=\"lc-diff__num\">{{ line.num ?? '' }}</span>\n }\n <span class=\"lc-diff__content\">{{ line.content }}</span>\n </div>\n }\n </div>\n </div>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n signal,\n computed,\n output,\n} from '@angular/core';\nimport { IconComponent } from '../icon/icon.component';\n\nexport interface KanbanCard {\n id: string;\n title: string;\n description?: string;\n labels?: KanbanLabel[];\n assignee?: string;\n priority?: 'low' | 'medium' | 'high' | 'critical';\n}\n\nexport interface KanbanLabel {\n text: string;\n color?: string;\n}\n\nexport interface KanbanColumn {\n id: string;\n title: string;\n cards: KanbanCard[];\n color?: string;\n limit?: number;\n}\n\nexport interface KanbanMoveEvent {\n cardId: string;\n fromColumnId: string;\n toColumnId: string;\n toIndex: number;\n}\n\n@Component({\n selector: 'lc-kanban-board',\n standalone: true,\n imports: [IconComponent],\n templateUrl: './kanban-board.component.html',\n styleUrls: ['./kanban-board.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class KanbanBoardComponent {\n readonly columns = input.required<KanbanColumn[]>();\n readonly showCardCount = input(true);\n readonly showWipLimit = input(true);\n readonly readonly = input(false);\n\n readonly cardMoved = output<KanbanMoveEvent>();\n readonly cardClick = output<{ card: KanbanCard; columnId: string }>();\n\n protected internalColumns = signal<KanbanColumn[]>([]);\n protected draggedCard = signal<{ card: KanbanCard; columnId: string } | null>(null);\n protected dropTargetColumn = signal<string | null>(null);\n protected dropTargetIndex = signal<number>(-1);\n\n protected readonly displayColumns = computed(() => {\n const internal = this.internalColumns();\n return internal.length ? internal : this.columns();\n });\n\n protected isOverLimit(col: KanbanColumn): boolean {\n return !!col.limit && col.cards.length > col.limit;\n }\n\n protected getPriorityIcon(priority?: string): string {\n switch (priority) {\n case 'critical': return 'exclamation-circle';\n case 'high': return 'arrow-up';\n case 'medium': return 'minus';\n case 'low': return 'arrow-down';\n default: return '';\n }\n }\n\n protected getPriorityColor(priority?: string): string {\n switch (priority) {\n case 'critical': return 'var(--color-error-default, #ef4444)';\n case 'high': return 'var(--color-warning-default, #f59e0b)';\n case 'medium': return 'var(--color-info-default, #3b82f6)';\n case 'low': return 'var(--color-success-default, #22c55e)';\n default: return '';\n }\n }\n\n protected onDragStart(event: DragEvent, card: KanbanCard, columnId: string): void {\n if (this.readonly()) { event.preventDefault(); return; }\n this.draggedCard.set({ card, columnId });\n if (event.dataTransfer) {\n event.dataTransfer.effectAllowed = 'move';\n event.dataTransfer.setData('text/plain', card.id);\n }\n }\n\n protected onDragOver(event: DragEvent, columnId: string, index: number): void {\n event.preventDefault();\n if (event.dataTransfer) event.dataTransfer.dropEffect = 'move';\n this.dropTargetColumn.set(columnId);\n this.dropTargetIndex.set(index);\n }\n\n protected onDragOverColumn(event: DragEvent, columnId: string): void {\n event.preventDefault();\n if (event.dataTransfer) event.dataTransfer.dropEffect = 'move';\n this.dropTargetColumn.set(columnId);\n }\n\n protected onDragLeave(): void {\n this.dropTargetColumn.set(null);\n this.dropTargetIndex.set(-1);\n }\n\n protected onDrop(event: DragEvent, toColumnId: string, toIndex?: number): void {\n event.preventDefault();\n const dragged = this.draggedCard();\n if (!dragged) return;\n\n const cols = this.displayColumns().map(c => ({ ...c, cards: [...c.cards] }));\n const fromCol = cols.find(c => c.id === dragged.columnId);\n const toCol = cols.find(c => c.id === toColumnId);\n if (!fromCol || !toCol) return;\n\n const cardIdx = fromCol.cards.findIndex(c => c.id === dragged.card.id);\n if (cardIdx < 0) return;\n\n const [card] = fromCol.cards.splice(cardIdx, 1);\n const insertIdx = toIndex ?? toCol.cards.length;\n toCol.cards.splice(insertIdx, 0, card);\n\n this.internalColumns.set(cols);\n this.draggedCard.set(null);\n this.dropTargetColumn.set(null);\n this.dropTargetIndex.set(-1);\n\n this.cardMoved.emit({\n cardId: card.id,\n fromColumnId: dragged.columnId,\n toColumnId,\n toIndex: insertIdx,\n });\n }\n\n protected onDragEnd(): void {\n this.draggedCard.set(null);\n this.dropTargetColumn.set(null);\n this.dropTargetIndex.set(-1);\n }\n\n protected onCardClick(card: KanbanCard, columnId: string): void {\n this.cardClick.emit({ card, columnId });\n }\n\n protected trackColumn(_: number, col: KanbanColumn): string { return col.id; }\n protected trackCard(_: number, card: KanbanCard): string { return card.id; }\n}\n","<div class=\"lc-kanban\">\n @for (col of displayColumns(); track trackColumn($index, col)) {\n <div\n class=\"lc-kanban__column\"\n [class.lc-kanban__column--drop-target]=\"dropTargetColumn() === col.id\"\n [class.lc-kanban__column--over-limit]=\"showWipLimit() && isOverLimit(col)\"\n (dragover)=\"onDragOverColumn($event, col.id)\"\n (dragleave)=\"onDragLeave()\"\n (drop)=\"onDrop($event, col.id)\"\n >\n <div class=\"lc-kanban__column-header\">\n @if (col.color) {\n <span class=\"lc-kanban__column-dot\" [style.background]=\"col.color\"></span>\n }\n <span class=\"lc-kanban__column-title\">{{ col.title }}</span>\n @if (showCardCount()) {\n <span class=\"lc-kanban__column-count\">{{ col.cards.length }}</span>\n }\n @if (showWipLimit() && col.limit) {\n <span class=\"lc-kanban__column-limit\" [class.lc-kanban__column-limit--over]=\"isOverLimit(col)\">\n / {{ col.limit }}\n </span>\n }\n </div>\n\n <div class=\"lc-kanban__cards\">\n @for (card of col.cards; track trackCard($index, card)) {\n <div\n class=\"lc-kanban__card\"\n [class.lc-kanban__card--dragging]=\"draggedCard()?.card?.id === card.id\"\n [attr.draggable]=\"!readonly()\"\n (dragstart)=\"onDragStart($event, card, col.id)\"\n (dragover)=\"onDragOver($event, col.id, $index)\"\n (drop)=\"onDrop($event, col.id, $index)\"\n (dragend)=\"onDragEnd()\"\n (click)=\"onCardClick(card, col.id)\"\n >\n @if (card.priority) {\n <lc-icon [name]=\"getPriorityIcon(card.priority)\" size=\"xs\" [color]=\"getPriorityColor(card.priority)\" class=\"lc-kanban__card-priority\"></lc-icon>\n }\n <span class=\"lc-kanban__card-title\">{{ card.title }}</span>\n\n @if (card.description) {\n <p class=\"lc-kanban__card-desc\">{{ card.description }}</p>\n }\n\n @if (card.labels?.length || card.assignee) {\n <div class=\"lc-kanban__card-footer\">\n @if (card.labels?.length) {\n <div class=\"lc-kanban__card-labels\">\n @for (label of card.labels; track label.text) {\n <span class=\"lc-kanban__card-label\" [style.background]=\"label.color || 'var(--color-neutral-200)'\">{{ label.text }}</span>\n }\n </div>\n }\n @if (card.assignee) {\n <span class=\"lc-kanban__card-assignee\">{{ card.assignee }}</span>\n }\n </div>\n }\n </div>\n }\n\n <!-- Empty state drop zone -->\n @if (col.cards.length === 0) {\n <div\n class=\"lc-kanban__empty\"\n (dragover)=\"onDragOver($event, col.id, 0)\"\n (drop)=\"onDrop($event, col.id, 0)\"\n >\n Drop here\n </div>\n }\n </div>\n </div>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n signal,\n computed,\n output,\n} from '@angular/core';\nimport { IconComponent } from '../icon/icon.component';\n\nexport type NotificationType = 'info' | 'success' | 'warning' | 'error';\nexport type NotificationPriority = 'low' | 'normal' | 'high' | 'urgent';\n\nexport interface Notification {\n id: string;\n title: string;\n message?: string;\n type?: NotificationType;\n priority?: NotificationPriority;\n timestamp: Date;\n read?: boolean;\n icon?: string;\n category?: string;\n actionLabel?: string;\n actionUrl?: string;\n}\n\nconst TYPE_ICONS: Record<NotificationType, string> = {\n info: 'information-circle',\n success: 'check-circle',\n warning: 'exclamation-triangle',\n error: 'x-circle',\n};\n\nconst PRIORITY_LABELS: Record<NotificationPriority, string> = {\n low: 'Low',\n normal: 'Normal',\n high: 'High',\n urgent: 'Urgent',\n};\n\n@Component({\n selector: 'lc-notification-center',\n standalone: true,\n imports: [IconComponent],\n templateUrl: './notification-center.component.html',\n styleUrls: ['./notification-center.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NotificationCenterComponent {\n readonly notifications = input.required<Notification[]>();\n readonly title = input('Notifications');\n readonly showFilter = input(true);\n readonly showTimestamp = input(true);\n readonly showPriority = input(false);\n readonly emptyMessage = input('No notifications');\n readonly maxHeight = input('480px');\n readonly groupByCategory = input(false);\n\n readonly notificationClick = output<Notification>();\n readonly notificationDismiss = output<string>();\n readonly notificationAction = output<Notification>();\n readonly markAllRead = output<void>();\n readonly clearAll = output<void>();\n\n protected activeFilter = signal<NotificationType | 'all'>('all');\n protected searchQuery = signal('');\n\n protected readonly unreadCount = computed(() =>\n this.notifications().filter(n => !n.read).length\n );\n\n protected readonly filteredNotifications = computed(() => {\n let items = this.notifications();\n const filter = this.activeFilter();\n const query = this.searchQuery().toLowerCase().trim();\n\n if (filter !== 'all') {\n items = items.filter(n => n.type === filter);\n }\n\n if (query) {\n items = items.filter(\n n =>\n n.title.toLowerCase().includes(query) ||\n n.message?.toLowerCase().includes(query) ||\n n.category?.toLowerCase().includes(query)\n );\n }\n\n return items.sort((a, b) => {\n const prio = this.priorityWeight(b.priority) - this.priorityWeight(a.priority);\n if (prio !== 0) return prio;\n return b.timestamp.getTime() - a.timestamp.getTime();\n });\n });\n\n protected readonly groupedNotifications = computed(() => {\n if (!this.groupByCategory()) return null;\n const map = new Map<string, Notification[]>();\n for (const n of this.filteredNotifications()) {\n const cat = n.category || 'Other';\n if (!map.has(cat)) map.set(cat, []);\n map.get(cat)!.push(n);\n }\n return Array.from(map.entries()).map(([category, items]) => ({ category, items }));\n });\n\n protected readonly filterCounts = computed(() => {\n const items = this.notifications();\n return {\n all: items.length,\n info: items.filter(n => n.type === 'info').length,\n success: items.filter(n => n.type === 'success').length,\n warning: items.filter(n => n.type === 'warning').length,\n error: items.filter(n => n.type === 'error').length,\n };\n });\n\n protected readonly hasNotifications = computed(() => this.filteredNotifications().length > 0);\n\n protected getTypeIcon(type?: NotificationType): string {\n return type ? TYPE_ICONS[type] : 'information-circle';\n }\n\n protected getPriorityLabel(priority?: NotificationPriority): string {\n return priority ? PRIORITY_LABELS[priority] : '';\n }\n\n protected formatTime(date: Date): string {\n const now = new Date();\n const diff = now.getTime() - date.getTime();\n const mins = Math.floor(diff / 60000);\n if (mins < 1) return 'Just now';\n if (mins < 60) return `${mins}m ago`;\n const hours = Math.floor(mins / 60);\n if (hours < 24) return `${hours}h ago`;\n const days = Math.floor(hours / 24);\n if (days < 7) return `${days}d ago`;\n return date.toLocaleDateString('de-DE', { day: '2-digit', month: '2-digit', year: 'numeric' });\n }\n\n protected setFilter(filter: NotificationType | 'all'): void {\n this.activeFilter.set(filter);\n }\n\n protected onSearch(event: Event): void {\n this.searchQuery.set((event.target as HTMLInputElement).value);\n }\n\n protected onClick(notification: Notification): void {\n this.notificationClick.emit(notification);\n }\n\n protected onDismiss(id: string, event: Event): void {\n event.stopPropagation();\n this.notificationDismiss.emit(id);\n }\n\n protected onAction(notification: Notification, event: Event): void {\n event.stopPropagation();\n this.notificationAction.emit(notification);\n }\n\n protected onMarkAllRead(): void {\n this.markAllRead.emit();\n }\n\n protected onClearAll(): void {\n this.clearAll.emit();\n }\n\n private priorityWeight(p?: NotificationPriority): number {\n switch (p) {\n case 'urgent': return 4;\n case 'high': return 3;\n case 'normal': return 2;\n case 'low': return 1;\n default: return 2;\n }\n }\n}\n","<div class=\"lc-nc\">\n <!-- Header -->\n <div class=\"lc-nc__header\">\n <div class=\"lc-nc__header-left\">\n <h3 class=\"lc-nc__title\">{{ title() }}</h3>\n @if (unreadCount() > 0) {\n <span class=\"lc-nc__badge\">{{ unreadCount() }}</span>\n }\n </div>\n <div class=\"lc-nc__header-actions\">\n @if (unreadCount() > 0) {\n <button type=\"button\" class=\"lc-nc__action-btn\" (click)=\"onMarkAllRead()\">Mark all read</button>\n }\n @if (notifications().length > 0) {\n <button type=\"button\" class=\"lc-nc__action-btn lc-nc__action-btn--danger\" (click)=\"onClearAll()\">Clear all</button>\n }\n </div>\n </div>\n\n <!-- Search -->\n <div class=\"lc-nc__search\">\n <input\n type=\"text\"\n class=\"lc-nc__search-input\"\n placeholder=\"Search notifications…\"\n [value]=\"searchQuery()\"\n (input)=\"onSearch($event)\"\n />\n </div>\n\n <!-- Filters -->\n @if (showFilter()) {\n <div class=\"lc-nc__filters\">\n <button\n type=\"button\"\n class=\"lc-nc__filter\"\n [class.lc-nc__filter--active]=\"activeFilter() === 'all'\"\n (click)=\"setFilter('all')\"\n >All ({{ filterCounts().all }})</button>\n @if (filterCounts().error > 0) {\n <button\n type=\"button\"\n class=\"lc-nc__filter lc-nc__filter--error\"\n [class.lc-nc__filter--active]=\"activeFilter() === 'error'\"\n (click)=\"setFilter('error')\"\n >Error ({{ filterCounts().error }})</button>\n }\n @if (filterCounts().warning > 0) {\n <button\n type=\"button\"\n class=\"lc-nc__filter lc-nc__filter--warning\"\n [class.lc-nc__filter--active]=\"activeFilter() === 'warning'\"\n (click)=\"setFilter('warning')\"\n >Warning ({{ filterCounts().warning }})</button>\n }\n @if (filterCounts().success > 0) {\n <button\n type=\"button\"\n class=\"lc-nc__filter lc-nc__filter--success\"\n [class.lc-nc__filter--active]=\"activeFilter() === 'success'\"\n (click)=\"setFilter('success')\"\n >Success ({{ filterCounts().success }})</button>\n }\n @if (filterCounts().info > 0) {\n <button\n type=\"button\"\n class=\"lc-nc__filter lc-nc__filter--info\"\n [class.lc-nc__filter--active]=\"activeFilter() === 'info'\"\n (click)=\"setFilter('info')\"\n >Info ({{ filterCounts().info }})</button>\n }\n </div>\n }\n\n <!-- Notification list -->\n <div class=\"lc-nc__list\" [style.max-height]=\"maxHeight()\">\n @if (!hasNotifications()) {\n <div class=\"lc-nc__empty\">\n <lc-icon name=\"bell\" size=\"lg\" class=\"lc-nc__empty-icon\"></lc-icon>\n <span class=\"lc-nc__empty-text\">{{ emptyMessage() }}</span>\n </div>\n } @else if (groupedNotifications(); as groups) {\n @for (group of groups; track group.category) {\n <div class=\"lc-nc__group\">\n <div class=\"lc-nc__group-header\">{{ group.category }}</div>\n @for (n of group.items; track n.id) {\n <div\n class=\"lc-nc__item\"\n [class.lc-nc__item--unread]=\"!n.read\"\n [class.lc-nc__item--urgent]=\"n.priority === 'urgent'\"\n (click)=\"onClick(n)\"\n >\n <lc-icon [name]=\"getTypeIcon(n.type)\" size=\"sm\" class=\"lc-nc__item-icon\" [class]=\"'lc-nc__item-icon lc-nc__item-icon--' + (n.type || 'info')\"></lc-icon>\n <div class=\"lc-nc__item-body\">\n <div class=\"lc-nc__item-header\">\n <span class=\"lc-nc__item-title\">{{ n.title }}</span>\n @if (showPriority() && n.priority && n.priority !== 'normal') {\n <span [class]=\"'lc-nc__item-priority lc-nc__item-priority--' + n.priority\">\n {{ getPriorityLabel(n.priority) }}\n </span>\n }\n </div>\n @if (n.message) {\n <p class=\"lc-nc__item-message\">{{ n.message }}</p>\n }\n <div class=\"lc-nc__item-footer\">\n @if (showTimestamp()) {\n <span class=\"lc-nc__item-time\">{{ formatTime(n.timestamp) }}</span>\n }\n @if (n.category) {\n <span class=\"lc-nc__item-category\">{{ n.category }}</span>\n }\n @if (n.actionLabel) {\n <button type=\"button\" class=\"lc-nc__item-action\" (click)=\"onAction(n, $event)\">{{ n.actionLabel }}</button>\n }\n </div>\n </div>\n <button\n type=\"button\"\n class=\"lc-nc__item-dismiss\"\n (click)=\"onDismiss(n.id, $event)\"\n aria-label=\"Dismiss notification\"\n >×</button>\n </div>\n }\n </div>\n }\n } @else {\n @for (n of filteredNotifications(); track n.id) {\n <div\n class=\"lc-nc__item\"\n [class.lc-nc__item--unread]=\"!n.read\"\n [class.lc-nc__item--urgent]=\"n.priority === 'urgent'\"\n (click)=\"onClick(n)\"\n >\n <lc-icon [name]=\"getTypeIcon(n.type)\" size=\"sm\" class=\"lc-nc__item-icon\" [class]=\"'lc-nc__item-icon lc-nc__item-icon--' + (n.type || 'info')\"></lc-icon>\n <div class=\"lc-nc__item-body\">\n <div class=\"lc-nc__item-header\">\n <span class=\"lc-nc__item-title\">{{ n.title }}</span>\n @if (showPriority() && n.priority && n.priority !== 'normal') {\n <span [class]=\"'lc-nc__item-priority lc-nc__item-priority--' + n.priority\">\n {{ getPriorityLabel(n.priority) }}\n </span>\n }\n </div>\n @if (n.message) {\n <p class=\"lc-nc__item-message\">{{ n.message }}</p>\n }\n <div class=\"lc-nc__item-footer\">\n @if (showTimestamp()) {\n <span class=\"lc-nc__item-time\">{{ formatTime(n.timestamp) }}</span>\n }\n @if (n.category) {\n <span class=\"lc-nc__item-category\">{{ n.category }}</span>\n }\n @if (n.actionLabel) {\n <button type=\"button\" class=\"lc-nc__item-action\" (click)=\"onAction(n, $event)\">{{ n.actionLabel }}</button>\n }\n </div>\n </div>\n <button\n type=\"button\"\n class=\"lc-nc__item-dismiss\"\n (click)=\"onDismiss(n.id, $event)\"\n aria-label=\"Dismiss notification\"\n >×</button>\n </div>\n }\n }\n </div>\n</div>\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n signal,\n computed,\n ElementRef,\n ViewChild,\n AfterViewInit,\n OnDestroy,\n forwardRef,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport type RichTextEditorMode = 'rich' | 'markdown' | 'split';\nexport type ToolbarAction =\n | 'bold'\n | 'italic'\n | 'underline'\n | 'strikethrough'\n | 'h1'\n | 'h2'\n | 'h3'\n | 'ul'\n | 'ol'\n | 'blockquote'\n | 'code'\n | 'codeblock'\n | 'link'\n | 'image'\n | 'hr';\n\nexport interface ToolbarConfig {\n actions: ToolbarAction[];\n}\n\nconst DEFAULT_TOOLBAR: ToolbarConfig = {\n actions: [\n 'bold',\n 'italic',\n 'underline',\n 'strikethrough',\n 'h1',\n 'h2',\n 'h3',\n 'ul',\n 'ol',\n 'blockquote',\n 'code',\n 'codeblock',\n 'link',\n 'hr',\n ],\n};\n\n/**\n * Rich Text Editor with Markdown support.\n *\n * Supports three modes:\n * - `rich`: WYSIWYG editing with toolbar\n * - `markdown`: Raw markdown editing with syntax highlighting\n * - `split`: Side-by-side markdown and preview\n *\n * Implements ControlValueAccessor for reactive form integration.\n * The value is always stored as Markdown.\n *\n * @example\n * ```html\n * <lc-rich-text-editor\n * [(ngModel)]=\"content\"\n * mode=\"split\"\n * placeholder=\"Write something...\" />\n * ```\n */\n@Component({\n selector: 'lc-rich-text-editor',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './rich-text-editor.component.html',\n styleUrl: './rich-text-editor.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RichTextEditorComponent),\n multi: true,\n },\n ],\n})\nexport class RichTextEditorComponent implements ControlValueAccessor, AfterViewInit, OnDestroy {\n /** Editor mode */\n mode = input<RichTextEditorMode>('rich');\n\n /** Placeholder text */\n placeholder = input<string>('Start typing...');\n\n /** Minimum height in px */\n minHeight = input<number>(200);\n\n /** Maximum height in px (0 = unlimited) */\n maxHeight = input<number>(0);\n\n /** Whether the editor is disabled */\n disabled = input<boolean>(false);\n\n /** Whether the editor is readonly */\n readonly = input<boolean>(false);\n\n /** Toolbar configuration */\n toolbar = input<ToolbarConfig>(DEFAULT_TOOLBAR);\n\n /** Whether to show word count */\n showWordCount = input<boolean>(true);\n\n /** Emitted on every content change */\n readonly contentChange = output<string>();\n\n @ViewChild('editorArea') editorArea!: ElementRef<HTMLTextAreaElement>;\n @ViewChild('richArea') richArea!: ElementRef<HTMLDivElement>;\n\n /** Internal markdown value */\n protected markdown = signal('');\n\n /** Current active mode (can be toggled by user) */\n protected activeMode = signal<RichTextEditorMode>('rich');\n\n /** Word count */\n protected wordCount = computed(() => {\n const text = this.markdown().trim();\n if (!text) return 0;\n return text.split(/\\s+/).length;\n });\n\n /** Character count */\n protected charCount = computed(() => this.markdown().length);\n\n /** Rendered HTML from markdown */\n protected renderedHtml = computed(() => this.markdownToHtml(this.markdown()));\n\n // CVA\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n ngAfterViewInit(): void {\n this.activeMode.set(this.mode());\n }\n\n ngOnDestroy(): void {\n // cleanup if needed\n }\n\n // -- ControlValueAccessor --\n writeValue(value: string): void {\n this.markdown.set(value || '');\n if (this.richArea?.nativeElement) {\n this.richArea.nativeElement.innerHTML = this.renderedHtml();\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 // handled by input\n }\n\n // -- Mode switching --\n protected switchMode(mode: RichTextEditorMode): void {\n if (this.activeMode() === 'rich' && mode !== 'rich') {\n // Sync rich content to markdown\n if (this.richArea?.nativeElement) {\n this.markdown.set(this.htmlToMarkdown(this.richArea.nativeElement.innerHTML));\n }\n } else if (this.activeMode() !== 'rich' && mode === 'rich') {\n // Will render from markdown when view updates\n setTimeout(() => {\n if (this.richArea?.nativeElement) {\n this.richArea.nativeElement.innerHTML = this.renderedHtml();\n }\n });\n }\n this.activeMode.set(mode);\n }\n\n // -- Toolbar actions --\n protected onToolbarAction(action: ToolbarAction): void {\n if (this.disabled() || this.readonly()) return;\n\n if (this.activeMode() === 'rich') {\n this.execRichCommand(action);\n } else {\n this.insertMarkdownSyntax(action);\n }\n }\n\n private execRichCommand(action: ToolbarAction): void {\n switch (action) {\n case 'bold':\n document.execCommand('bold');\n break;\n case 'italic':\n document.execCommand('italic');\n break;\n case 'underline':\n document.execCommand('underline');\n break;\n case 'strikethrough':\n document.execCommand('strikeThrough');\n break;\n case 'h1':\n document.execCommand('formatBlock', false, 'h1');\n break;\n case 'h2':\n document.execCommand('formatBlock', false, 'h2');\n break;\n case 'h3':\n document.execCommand('formatBlock', false, 'h3');\n break;\n case 'ul':\n document.execCommand('insertUnorderedList');\n break;\n case 'ol':\n document.execCommand('insertOrderedList');\n break;\n case 'blockquote':\n document.execCommand('formatBlock', false, 'blockquote');\n break;\n case 'code':\n document.execCommand('insertHTML', false, '<code>' + this.getSelection() + '</code>');\n break;\n case 'codeblock':\n document.execCommand('insertHTML', false, '<pre><code>' + this.getSelection() + '</code></pre>');\n break;\n case 'link': {\n const url = prompt('Enter URL:');\n if (url) document.execCommand('createLink', false, url);\n break;\n }\n case 'hr':\n document.execCommand('insertHorizontalRule');\n break;\n }\n this.syncFromRich();\n }\n\n private insertMarkdownSyntax(action: ToolbarAction): void {\n const textarea = this.editorArea?.nativeElement;\n if (!textarea) return;\n\n const start = textarea.selectionStart;\n const end = textarea.selectionEnd;\n const text = this.markdown();\n const selected = text.substring(start, end);\n\n let insertion = '';\n let cursorOffset = 0;\n\n switch (action) {\n case 'bold':\n insertion = `**${selected || 'bold text'}**`;\n cursorOffset = selected ? insertion.length : 2;\n break;\n case 'italic':\n insertion = `*${selected || 'italic text'}*`;\n cursorOffset = selected ? insertion.length : 1;\n break;\n case 'underline':\n insertion = `<u>${selected || 'underlined text'}</u>`;\n cursorOffset = selected ? insertion.length : 3;\n break;\n case 'strikethrough':\n insertion = `~~${selected || 'strikethrough'}~~`;\n cursorOffset = selected ? insertion.length : 2;\n break;\n case 'h1':\n insertion = `# ${selected || 'Heading 1'}`;\n cursorOffset = insertion.length;\n break;\n case 'h2':\n insertion = `## ${selected || 'Heading 2'}`;\n cursorOffset = insertion.length;\n break;\n case 'h3':\n insertion = `### ${selected || 'Heading 3'}`;\n cursorOffset = insertion.length;\n break;\n case 'ul':\n insertion = `- ${selected || 'List item'}`;\n cursorOffset = insertion.length;\n break;\n case 'ol':\n insertion = `1. ${selected || 'List item'}`;\n cursorOffset = insertion.length;\n break;\n case 'blockquote':\n insertion = `> ${selected || 'Quote'}`;\n cursorOffset = insertion.length;\n break;\n case 'code':\n insertion = `\\`${selected || 'code'}\\``;\n cursorOffset = selected ? insertion.length : 1;\n break;\n case 'codeblock':\n insertion = `\\`\\`\\`\\n${selected || 'code'}\\n\\`\\`\\``;\n cursorOffset = 4;\n break;\n case 'link':\n insertion = `[${selected || 'link text'}](url)`;\n cursorOffset = selected ? insertion.length - 5 : 1;\n break;\n case 'image':\n insertion = `![${selected || 'alt text'}](url)`;\n cursorOffset = selected ? insertion.length - 5 : 2;\n break;\n case 'hr':\n insertion = `\\n---\\n`;\n cursorOffset = insertion.length;\n break;\n }\n\n const newText = text.substring(0, start) + insertion + text.substring(end);\n this.markdown.set(newText);\n this.emitChange(newText);\n\n setTimeout(() => {\n textarea.focus();\n textarea.setSelectionRange(start + cursorOffset, start + cursorOffset);\n });\n }\n\n // -- Content input handlers --\n protected onMarkdownInput(event: Event): void {\n const value = (event.target as HTMLTextAreaElement).value;\n this.markdown.set(value);\n this.emitChange(value);\n }\n\n protected onRichInput(): void {\n this.syncFromRich();\n }\n\n protected onBlur(): void {\n this.onTouched();\n }\n\n private syncFromRich(): void {\n if (this.richArea?.nativeElement) {\n const md = this.htmlToMarkdown(this.richArea.nativeElement.innerHTML);\n this.markdown.set(md);\n this.emitChange(md);\n }\n }\n\n private emitChange(value: string): void {\n this.onChange(value);\n this.contentChange.emit(value);\n }\n\n private getSelection(): string {\n return window.getSelection()?.toString() || '';\n }\n\n // -- Toolbar label helpers --\n protected getActionLabel(action: ToolbarAction): string {\n const labels: Record<ToolbarAction, string> = {\n bold: 'B',\n italic: 'I',\n underline: 'U',\n strikethrough: 'S',\n h1: 'H1',\n h2: 'H2',\n h3: 'H3',\n ul: '•',\n ol: '1.',\n blockquote: '\"',\n code: '<>',\n codeblock: '{ }',\n link: '🔗',\n image: '🖼',\n hr: '—',\n };\n return labels[action] || action;\n }\n\n protected getActionTitle(action: ToolbarAction): string {\n const titles: Record<ToolbarAction, string> = {\n bold: 'Bold',\n italic: 'Italic',\n underline: 'Underline',\n strikethrough: 'Strikethrough',\n h1: 'Heading 1',\n h2: 'Heading 2',\n h3: 'Heading 3',\n ul: 'Unordered List',\n ol: 'Ordered List',\n blockquote: 'Blockquote',\n code: 'Inline Code',\n codeblock: 'Code Block',\n link: 'Insert Link',\n image: 'Insert Image',\n hr: 'Horizontal Rule',\n };\n return titles[action] || action;\n }\n\n // -- Markdown <-> HTML conversion (simple built-in) --\n protected markdownToHtml(md: string): string {\n if (!md) return '';\n\n let html = md;\n\n // Code blocks (must be first)\n html = html.replace(/```(\\w*)\\n([\\s\\S]*?)```/g, '<pre><code class=\"language-$1\">$2</code></pre>');\n\n // Headings\n html = html.replace(/^### (.+)$/gm, '<h3>$1</h3>');\n html = html.replace(/^## (.+)$/gm, '<h2>$1</h2>');\n html = html.replace(/^# (.+)$/gm, '<h1>$1</h1>');\n\n // Horizontal rule\n html = html.replace(/^---$/gm, '<hr>');\n\n // Bold/Italic\n html = html.replace(/\\*\\*\\*(.+?)\\*\\*\\*/g, '<strong><em>$1</em></strong>');\n html = html.replace(/\\*\\*(.+?)\\*\\*/g, '<strong>$1</strong>');\n html = html.replace(/\\*(.+?)\\*/g, '<em>$1</em>');\n html = html.replace(/~~(.+?)~~/g, '<del>$1</del>');\n\n // Inline code\n html = html.replace(/`(.+?)`/g, '<code>$1</code>');\n\n // Links and images\n html = html.replace(/!\\[(.+?)\\]\\((.+?)\\)/g, '<img alt=\"$1\" src=\"$2\" />');\n html = html.replace(/\\[(.+?)\\]\\((.+?)\\)/g, '<a href=\"$2\">$1</a>');\n\n // Blockquotes\n html = html.replace(/^> (.+)$/gm, '<blockquote>$1</blockquote>');\n\n // Unordered lists\n html = html.replace(/^- (.+)$/gm, '<li>$1</li>');\n html = html.replace(/(<li>.*<\\/li>\\n?)+/g, '<ul>$&</ul>');\n\n // Ordered lists\n html = html.replace(/^\\d+\\. (.+)$/gm, '<li>$1</li>');\n\n // Paragraphs (lines that aren't already wrapped)\n html = html.replace(/^(?!<[a-z])((?!^\\s*$).+)$/gm, '<p>$1</p>');\n\n // Clean up empty paragraphs\n html = html.replace(/<p>\\s*<\\/p>/g, '');\n\n return html.trim();\n }\n\n private htmlToMarkdown(html: string): string {\n if (!html) return '';\n\n let md = html;\n\n // Block elements\n md = md.replace(/<h1[^>]*>(.*?)<\\/h1>/gi, '# $1\\n');\n md = md.replace(/<h2[^>]*>(.*?)<\\/h2>/gi, '## $1\\n');\n md = md.replace(/<h3[^>]*>(.*?)<\\/h3>/gi, '### $1\\n');\n md = md.replace(/<hr\\s*\\/?>/gi, '---\\n');\n md = md.replace(/<blockquote[^>]*>(.*?)<\\/blockquote>/gi, '> $1\\n');\n md = md.replace(/<pre><code[^>]*>([\\s\\S]*?)<\\/code><\\/pre>/gi, '```\\n$1\\n```\\n');\n\n // Lists\n md = md.replace(/<ul[^>]*>([\\s\\S]*?)<\\/ul>/gi, '$1');\n md = md.replace(/<ol[^>]*>([\\s\\S]*?)<\\/ol>/gi, '$1');\n md = md.replace(/<li[^>]*>(.*?)<\\/li>/gi, '- $1\\n');\n\n // Inline\n md = md.replace(/<strong[^>]*>(.*?)<\\/strong>/gi, '**$1**');\n md = md.replace(/<b[^>]*>(.*?)<\\/b>/gi, '**$1**');\n md = md.replace(/<em[^>]*>(.*?)<\\/em>/gi, '*$1*');\n md = md.replace(/<i[^>]*>(.*?)<\\/i>/gi, '*$1*');\n md = md.replace(/<del[^>]*>(.*?)<\\/del>/gi, '~~$1~~');\n md = md.replace(/<u[^>]*>(.*?)<\\/u>/gi, '<u>$1</u>');\n md = md.replace(/<code[^>]*>(.*?)<\\/code>/gi, '`$1`');\n md = md.replace(/<a[^>]*href=\"([^\"]*)\"[^>]*>(.*?)<\\/a>/gi, '[$2]($1)');\n md = md.replace(/<img[^>]*alt=\"([^\"]*)\"[^>]*src=\"([^\"]*)\"[^>]*\\/?>/gi, '![$1]($2)');\n\n // Paragraphs and line breaks\n md = md.replace(/<p[^>]*>(.*?)<\\/p>/gi, '$1\\n\\n');\n md = md.replace(/<br\\s*\\/?>/gi, '\\n');\n md = md.replace(/<div[^>]*>(.*?)<\\/div>/gi, '$1\\n');\n\n // Strip remaining HTML tags\n md = md.replace(/<[^>]+>/g, '');\n\n // Decode HTML entities\n md = md.replace(/&amp;/g, '&');\n md = md.replace(/&lt;/g, '<');\n md = md.replace(/&gt;/g, '>');\n md = md.replace(/&quot;/g, '\"');\n md = md.replace(/&nbsp;/g, ' ');\n\n // Normalize whitespace\n md = md.replace(/\\n{3,}/g, '\\n\\n');\n\n return md.trim();\n }\n}\n","<div class=\"lc-rich-text-editor\" [class.lc-rich-text-editor--disabled]=\"disabled()\">\n <!-- Toolbar -->\n <div class=\"lc-rich-text-editor__toolbar\">\n <div class=\"lc-rich-text-editor__toolbar-actions\">\n @for (action of toolbar().actions; track action) {\n <button\n type=\"button\"\n class=\"lc-rich-text-editor__toolbar-btn\"\n [title]=\"getActionTitle(action)\"\n [disabled]=\"disabled() || readonly()\"\n (click)=\"onToolbarAction(action)\"\n >\n {{ getActionLabel(action) }}\n </button>\n }\n </div>\n <div class=\"lc-rich-text-editor__toolbar-modes\">\n <button\n type=\"button\"\n class=\"lc-rich-text-editor__mode-btn\"\n [class.active]=\"activeMode() === 'rich'\"\n (click)=\"switchMode('rich')\"\n title=\"Rich Text\"\n >Rich</button>\n <button\n type=\"button\"\n class=\"lc-rich-text-editor__mode-btn\"\n [class.active]=\"activeMode() === 'markdown'\"\n (click)=\"switchMode('markdown')\"\n title=\"Markdown\"\n >MD</button>\n <button\n type=\"button\"\n class=\"lc-rich-text-editor__mode-btn\"\n [class.active]=\"activeMode() === 'split'\"\n (click)=\"switchMode('split')\"\n title=\"Split View\"\n >Split</button>\n </div>\n </div>\n\n <!-- Editor area -->\n <div\n class=\"lc-rich-text-editor__content\"\n [style.min-height.px]=\"minHeight()\"\n [style.max-height.px]=\"maxHeight() || null\"\n >\n @switch (activeMode()) {\n @case ('rich') {\n <div\n #richArea\n class=\"lc-rich-text-editor__rich\"\n contenteditable=\"true\"\n [attr.data-placeholder]=\"placeholder()\"\n [class.lc-rich-text-editor__rich--empty]=\"!markdown()\"\n (input)=\"onRichInput()\"\n (blur)=\"onBlur()\"\n role=\"textbox\"\n aria-multiline=\"true\"\n [attr.aria-label]=\"placeholder()\"\n ></div>\n }\n @case ('markdown') {\n <textarea\n #editorArea\n class=\"lc-rich-text-editor__textarea\"\n [placeholder]=\"placeholder()\"\n [value]=\"markdown()\"\n [disabled]=\"disabled()\"\n [readOnly]=\"readonly()\"\n (input)=\"onMarkdownInput($event)\"\n (blur)=\"onBlur()\"\n spellcheck=\"false\"\n aria-label=\"Markdown editor\"\n ></textarea>\n }\n @case ('split') {\n <div class=\"lc-rich-text-editor__split\">\n <textarea\n #editorArea\n class=\"lc-rich-text-editor__textarea lc-rich-text-editor__split-editor\"\n [placeholder]=\"placeholder()\"\n [value]=\"markdown()\"\n [disabled]=\"disabled()\"\n [readOnly]=\"readonly()\"\n (input)=\"onMarkdownInput($event)\"\n (blur)=\"onBlur()\"\n spellcheck=\"false\"\n aria-label=\"Markdown editor\"\n ></textarea>\n <div\n class=\"lc-rich-text-editor__split-preview\"\n [innerHTML]=\"renderedHtml()\"\n ></div>\n </div>\n }\n }\n </div>\n\n <!-- Footer -->\n @if (showWordCount()) {\n <div class=\"lc-rich-text-editor__footer\">\n <span>{{ wordCount() }} words</span>\n <span>{{ charCount() }} characters</span>\n </div>\n }\n</div>\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// Hero Component\nexport * from './lib/hero/hero.component';\n\n// Progress Bar Component\nexport * from './lib/progress-bar/progress-bar.component';\n\n// Divider Component\nexport * from './lib/divider/divider.component';\n\n// Search Input Component\nexport * from './lib/search-input/search-input.component';\n\n// File Upload Component\nexport * from './lib/file-upload/file-upload.component';\n\n// Popover Component\nexport * from './lib/popover/popover.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// 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// Timeline Component\nexport * from './lib/timeline/timeline.component';\n\n// Avatar Group Component\nexport * from './lib/avatar-group/avatar-group.component';\n\n// Slider Component\nexport * from './lib/slider/slider.component';\n\n// Number Input Component\nexport * from './lib/number-input/number-input.component';\n\n// Callout Component\nexport * from './lib/callout/callout.component';\n\n// Rating Component\nexport * from './lib/rating/rating.component';\n\n// Color Picker Component\nexport * from './lib/color-picker/color-picker.component';\n\n// Code Block Component\nexport * from './lib/code-block/code-block.component';\n\n// Footer Component\nexport * from './lib/footer/footer.component';\n\n// ============================================================================\n// Chart Components\n// ============================================================================\n// Sparkline Component\nexport * from './lib/sparkline/sparkline.component';\n\n// Stat Trend Component\nexport * from './lib/stat-trend/stat-trend.component';\n\n// Donut Chart Component\nexport * from './lib/donut-chart/donut-chart.component';\n\n// Bar Chart Component\nexport * from './lib/bar-chart/bar-chart.component';\n\n// Line Chart Component\nexport * from './lib/line-chart/line-chart.component';\n\n// Gauge Component\nexport * from './lib/gauge/gauge.component';\n\n// Stacked Bar Chart Component\nexport * from './lib/stacked-bar-chart/stacked-bar-chart.component';\n\n// Area Chart Component\nexport * from './lib/area-chart/area-chart.component';\n\n// Heatmap Component\nexport * from './lib/heatmap/heatmap.component';\n\n// Pie Chart Component\nexport * from './lib/pie-chart/pie-chart.component';\n\n// Radar Chart Component\nexport * from './lib/radar-chart/radar-chart.component';\n\n// Progress Ring Component\nexport * from './lib/progress-ring/progress-ring.component';\n\n// Waterfall Chart Component\nexport * from './lib/waterfall-chart/waterfall-chart.component';\n\n// ============================================================================\n// Complex Components\n// ============================================================================\n// Calendar Component\nexport * from './lib/calendar/calendar.component';\n\n// Gantt Chart Component\nexport * from './lib/gantt-chart/gantt-chart.component';\n\n// Chat Component\nexport * from './lib/chat/chat.component';\n\n// Document Viewer Component\nexport * from './lib/document-viewer/document-viewer.component';\n\n// Gallery Component\nexport * from './lib/gallery/gallery.component';\n\n// Dependency Viewer Component\nexport * from './lib/dependency-viewer/dependency-viewer.component';\n\n// Scatter Plot Component\nexport * from './lib/scatter-plot/scatter-plot.component';\n\n// Funnel Chart Component\nexport * from './lib/funnel-chart/funnel-chart.component';\n\n// Tag Input Component\nexport * from './lib/tag-input/tag-input.component';\n\n// Date Range Picker Component\nexport * from './lib/date-range-picker/date-range-picker.component';\n\n// Diff Viewer Component\nexport * from './lib/diff-viewer/diff-viewer.component';\n\n// Kanban Board Component\nexport * from './lib/kanban-board/kanban-board.component';\n\n// Notification Center Component\nexport * from './lib/notification-center/notification-center.component';\n\n// Rich Text Editor Component\nexport * from './lib/rich-text-editor/rich-text-editor.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","escapeHtml","DEFAULT_COLORS","TYPE_ICONS"],"mappings":"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"}