@enelar-esp/ui 0.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.
- package/README.md +64 -0
- package/fesm2022/enelar-esp-ui.mjs +4264 -0
- package/fesm2022/enelar-esp-ui.mjs.map +1 -0
- package/package.json +24 -0
- package/src/lib/themes/_dark.scss +49 -0
- package/src/lib/themes/_light.scss +76 -0
- package/src/lib/themes/_theme.scss +17 -0
- package/src/lib/themes/_variables.scss +163 -0
- package/types/enelar-esp-ui.d.ts +1460 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enelar-esp-ui.mjs","sources":["../../../projects/ui-library/src/lib/tokens/design-tokens.ts","../../../projects/ui-library/src/lib/services/theme.service.ts","../../../projects/ui-library/src/lib/services/toast.service.ts","../../../projects/ui-library/src/lib/atoms/typography/typography.component.ts","../../../projects/ui-library/src/lib/atoms/typography/typography.component.html","../../../projects/ui-library/src/lib/atoms/spinner/spinner.component.ts","../../../projects/ui-library/src/lib/atoms/spinner/spinner.component.html","../../../projects/ui-library/src/lib/atoms/icon/icon.constants.ts","../../../projects/ui-library/src/lib/atoms/icon/icon.component.ts","../../../projects/ui-library/src/lib/atoms/icon/icon.component.html","../../../projects/ui-library/src/lib/atoms/button/button.component.ts","../../../projects/ui-library/src/lib/atoms/button/button.component.html","../../../projects/ui-library/src/lib/atoms/label/label.component.ts","../../../projects/ui-library/src/lib/atoms/label/label.component.html","../../../projects/ui-library/src/lib/tokens/form-field.token.ts","../../../projects/ui-library/src/lib/atoms/input/input.component.ts","../../../projects/ui-library/src/lib/atoms/input/input.component.html","../../../projects/ui-library/src/lib/atoms/badge/badge.component.ts","../../../projects/ui-library/src/lib/atoms/badge/badge.component.html","../../../projects/ui-library/src/lib/atoms/checkbox/checkbox.component.ts","../../../projects/ui-library/src/lib/atoms/checkbox/checkbox.component.html","../../../projects/ui-library/src/lib/atoms/radio/radio.component.ts","../../../projects/ui-library/src/lib/atoms/radio/radio.component.html","../../../projects/ui-library/src/lib/atoms/avatar/avatar.component.ts","../../../projects/ui-library/src/lib/atoms/avatar/avatar.component.html","../../../projects/ui-library/src/lib/atoms/select/select.component.ts","../../../projects/ui-library/src/lib/atoms/select/select.component.html","../../../projects/ui-library/src/lib/atoms/input-number/input-number.component.ts","../../../projects/ui-library/src/lib/atoms/input-number/input-number.component.html","../../../projects/ui-library/src/lib/atoms/input-otp/input-otp.component.ts","../../../projects/ui-library/src/lib/atoms/input-otp/input-otp.component.html","../../../projects/ui-library/src/lib/atoms/password/password.component.ts","../../../projects/ui-library/src/lib/atoms/password/password.component.html","../../../projects/ui-library/src/lib/atoms/textarea/textarea.component.ts","../../../projects/ui-library/src/lib/atoms/textarea/textarea.component.html","../../../projects/ui-library/src/lib/atoms/toggle-switch/toggle-switch.component.ts","../../../projects/ui-library/src/lib/atoms/toggle-switch/toggle-switch.component.html","../../../projects/ui-library/src/lib/atoms/skeleton/skeleton.component.ts","../../../projects/ui-library/src/lib/atoms/skeleton/skeleton.component.html","../../../projects/ui-library/src/lib/molecules/form-field/form-field.component.ts","../../../projects/ui-library/src/lib/molecules/form-field/form-field.component.html","../../../projects/ui-library/src/lib/molecules/search-input/search-input.component.ts","../../../projects/ui-library/src/lib/molecules/search-input/search-input.component.html","../../../projects/ui-library/src/lib/molecules/date-picker/date-picker.component.ts","../../../projects/ui-library/src/lib/molecules/date-picker/date-picker.component.html","../../../projects/ui-library/src/lib/molecules/card-header/card-header.component.ts","../../../projects/ui-library/src/lib/molecules/card-header/card-header.component.html","../../../projects/ui-library/src/lib/molecules/card/card.component.ts","../../../projects/ui-library/src/lib/molecules/card/card.component.html","../../../projects/ui-library/src/lib/molecules/login-form-field/login-form-field.component.ts","../../../projects/ui-library/src/lib/molecules/login-form-field/login-form-field.component.html","../../../projects/ui-library/src/lib/molecules/paginator/paginator.component.ts","../../../projects/ui-library/src/lib/molecules/paginator/paginator.component.html","../../../projects/ui-library/src/lib/molecules/stat-card/stat-card.component.ts","../../../projects/ui-library/src/lib/molecules/stat-card/stat-card.component.html","../../../projects/ui-library/src/lib/molecules/icon-field/icon-field.component.ts","../../../projects/ui-library/src/lib/molecules/icon-field/icon-field.component.html","../../../projects/ui-library/src/lib/molecules/multi-select/multi-select.component.ts","../../../projects/ui-library/src/lib/molecules/multi-select/multi-select.component.html","../../../projects/ui-library/src/lib/molecules/page-header/page-header.component.ts","../../../projects/ui-library/src/lib/molecules/page-header/page-header.component.html","../../../projects/ui-library/src/lib/molecules/skeleton-card/skeleton-card.component.ts","../../../projects/ui-library/src/lib/molecules/skeleton-card/skeleton-card.component.html","../../../projects/ui-library/src/lib/organisms/navbar/navbar.component.ts","../../../projects/ui-library/src/lib/organisms/navbar/navbar.component.html","../../../projects/ui-library/src/lib/organisms/sidebar/sidebar.component.ts","../../../projects/ui-library/src/lib/organisms/sidebar/sidebar.component.html","../../../projects/ui-library/src/lib/organisms/user-profile-card/user-profile-card.component.ts","../../../projects/ui-library/src/lib/organisms/user-profile-card/user-profile-card.component.html","../../../projects/ui-library/src/lib/organisms/login-panel/login-panel.component.ts","../../../projects/ui-library/src/lib/organisms/login-panel/login-panel.component.html","../../../projects/ui-library/src/lib/organisms/data-table/data-table.component.ts","../../../projects/ui-library/src/lib/organisms/data-table/data-table.component.html","../../../projects/ui-library/src/lib/organisms/modal/modal.component.ts","../../../projects/ui-library/src/lib/organisms/modal/modal.component.html","../../../projects/ui-library/src/lib/organisms/toast-container/toast-container.component.ts","../../../projects/ui-library/src/lib/organisms/toast-container/toast-container.component.html","../../../projects/ui-library/src/lib/organisms/dynamic-form/dynamic-form.component.ts","../../../projects/ui-library/src/lib/organisms/dynamic-form/dynamic-form.component.html","../../../projects/ui-library/src/lib/organisms/dynamic-table/column-template.directive.ts","../../../projects/ui-library/src/lib/organisms/dynamic-table/dynamic-table.component.ts","../../../projects/ui-library/src/lib/organisms/dynamic-table/dynamic-table.component.html","../../../projects/ui-library/src/lib/organisms/confirm-dialog/confirm-dialog.component.ts","../../../projects/ui-library/src/lib/organisms/confirm-dialog/confirm-dialog.component.html","../../../projects/ui-library/src/lib/organisms/dynamic-crud/dynamic-crud.component.ts","../../../projects/ui-library/src/lib/organisms/dynamic-crud/dynamic-crud.component.html","../../../projects/ui-library/src/lib/templates/auth-template/auth-template.component.ts","../../../projects/ui-library/src/lib/templates/auth-template/auth-template.component.html","../../../projects/ui-library/src/lib/templates/dashboard-template/dashboard-template.component.ts","../../../projects/ui-library/src/lib/templates/dashboard-template/dashboard-template.component.html","../../../projects/ui-library/src/lib/pages/login-page/login-page.component.ts","../../../projects/ui-library/src/lib/pages/login-page/login-page.component.html","../../../projects/ui-library/src/lib/pages/dashboard-page/dashboard-page.component.ts","../../../projects/ui-library/src/lib/pages/dashboard-page/dashboard-page.component.html","../../../projects/ui-library/src/public-api.ts","../../../projects/ui-library/src/enelar-esp-ui.ts"],"sourcesContent":["// design-tokens.ts\n\nexport const ColorTokens = {\n primary: {\n 50: '#f0fdf4',\n 100: '#dcfce7',\n 200: '#bbf7d0',\n 300: '#86efac',\n 400: '#4ade80',\n 500: '#22c55e',\n 600: '#16a34a',\n 700: '#15803d',\n 800: '#166534',\n 900: '#14532d',\n 950: '#052e16',\n },\n secondary: {\n 50: '#f8fafc',\n 100: '#f1f5f9',\n 200: '#e2e8f0',\n 300: '#cbd5e1',\n 400: '#94a3b8',\n 500: '#64748b',\n 600: '#475569',\n 700: '#334155',\n 800: '#1e293b',\n 900: '#0f172a',\n 950: '#020617',\n },\n neutral: {\n 50: '#fafafa',\n 100: '#f4f4f5',\n 200: '#e4e4e7',\n 300: '#d4d4d8',\n 400: '#a1a1aa',\n 500: '#71717a',\n 600: '#52525b',\n 700: '#3f3f46',\n 800: '#27272a',\n 900: '#18181b',\n 950: '#09090b',\n },\n semantic: {\n success: {\n light: '#bbf7d0',\n main: '#22c55e',\n dark: '#15803d',\n },\n warning: {\n light: '#fef08a',\n main: '#eab308',\n dark: '#a16207',\n },\n error: {\n light: '#fecaca',\n main: '#ef4444',\n dark: '#b91c1c',\n },\n info: {\n light: '#bfdbfe',\n main: '#3b82f6',\n dark: '#1d4ed8',\n },\n },\n} as const;\n\nexport const SpacingTokens = {\n xs: '4px',\n sm: '8px',\n md: '16px',\n lg: '24px',\n xl: '32px',\n '2xl': '48px',\n '3xl': '64px',\n} as const;\n\nexport const TypographyTokens = {\n fontFamily: {\n sans: 'Inter, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif',\n mono: 'SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace',\n },\n fontSize: {\n xs: '0.75rem', // 12px\n sm: '0.875rem', // 14px\n base: '1rem', // 16px\n lg: '1.125rem', // 18px\n xl: '1.25rem', // 20px\n '2xl': '1.5rem', // 24px\n '3xl': '1.875rem', // 30px\n '4xl': '2.25rem', // 36px\n },\n fontWeight: {\n light: '300',\n regular: '400',\n medium: '500',\n semibold: '600',\n bold: '700',\n },\n lineHeight: {\n none: '1',\n tight: '1.25',\n snug: '1.375',\n normal: '1.5',\n relaxed: '1.625',\n loose: '2',\n },\n} as const;\n\nexport const BorderTokens = {\n radius: {\n none: '0px',\n sm: '4px',\n md: '8px',\n lg: '12px',\n xl: '16px',\n full: '9999px',\n },\n width: {\n none: '0px',\n sm: '1px',\n md: '2px',\n lg: '4px',\n },\n} as const;\n\nexport const ShadowTokens = {\n sm: '0 1px 2px 0 rgba(0, 0, 0, 0.05)',\n md: '0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1)',\n lg: '0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1)',\n xl: '0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1)',\n inner: 'inset 0 2px 4px 0 rgba(0, 0, 0, 0.05)',\n} as const;\n\nexport const ZIndexTokens = {\n hide: -1,\n auto: 'auto',\n base: 0,\n docked: 10,\n dropdown: 1000,\n sticky: 1100,\n banner: 1200,\n overlay: 1300,\n modal: 1400,\n popover: 1500,\n skipLink: 1600,\n toast: 1700,\n tooltip: 1800,\n} as const;\n\nexport const AnimationTokens = {\n duration: {\n fastest: '50ms',\n fast: '150ms',\n normal: '200ms',\n slow: '300ms',\n slowest: '400ms',\n },\n easing: {\n linear: 'linear',\n easeIn: 'cubic-bezier(0.4, 0, 1, 1)',\n easeOut: 'cubic-bezier(0, 0, 0.2, 1)',\n easeInOut: 'cubic-bezier(0.4, 0, 0.2, 1)',\n },\n} as const;\n\nexport const BreakpointTokens = {\n xs: '320px',\n sm: '640px',\n md: '768px',\n lg: '1024px',\n xl: '1280px',\n '2xl': '1536px',\n} as const;\n","import { Injectable, signal, computed, effect } from '@angular/core';\n\nexport type EnlTheme = 'light' | 'dark';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EnlThemeService {\n private readonly STORAGE_KEY = 'enl-theme-preference';\n\n // Internal signal holding the active theme state\n private readonly activeThemeSignal = signal<EnlTheme>('light');\n\n // Public readonly exposure of the active theme\n readonly activeTheme = this.activeThemeSignal.asReadonly();\n\n // Computational signals for helper states\n readonly isDark = computed(() => this.activeThemeSignal() === 'dark');\n readonly isLight = computed(() => this.activeThemeSignal() === 'light');\n\n constructor() {\n this.initializeTheme();\n\n // Effect to auto-apply theme changes to the document tree\n effect(() => {\n const currentTheme = this.activeThemeSignal();\n this.applyThemeToDocument(currentTheme);\n if (typeof localStorage !== 'undefined') {\n try {\n localStorage.setItem(this.STORAGE_KEY, currentTheme);\n } catch {\n // Defensive check for headless/restricted storage environments\n }\n }\n });\n }\n\n /**\n * Directly sets a specific theme.\n * @param theme The theme to set.\n */\n setTheme(theme: EnlTheme): void {\n this.activeThemeSignal.set(theme);\n }\n\n /**\n * Toggles the active theme between light and dark.\n */\n toggleTheme(): void {\n this.activeThemeSignal.update((current) => (current === 'light' ? 'dark' : 'light'));\n }\n\n /**\n * Inits the theme setting based on storage or user browser defaults.\n */\n private initializeTheme(): void {\n if (typeof window !== 'undefined' && typeof localStorage !== 'undefined') {\n try {\n const savedTheme = localStorage.getItem(this.STORAGE_KEY) as EnlTheme | null;\n if (savedTheme === 'light' || savedTheme === 'dark') {\n this.activeThemeSignal.set(savedTheme);\n return;\n }\n } catch {\n // Defensive check for headless/restricted storage environments\n }\n\n // Check system color preferences\n const systemPrefersDark =\n typeof window.matchMedia === 'function' &&\n window.matchMedia('(prefers-color-scheme: dark)').matches;\n this.activeThemeSignal.set(systemPrefersDark ? 'dark' : 'light');\n }\n }\n\n /**\n * Applies the theme attribute to the HTML document tag.\n */\n private applyThemeToDocument(theme: EnlTheme): void {\n if (typeof document !== 'undefined' && document && document.documentElement) {\n try {\n const root = document.documentElement;\n root.setAttribute('data-theme', theme);\n\n // Update Tailwind or other theme indicators if necessary\n if (theme === 'dark') {\n root.classList.add('dark');\n } else {\n root.classList.remove('dark');\n }\n } catch {\n // Defensive check for tests/environments where document root is not ready\n }\n }\n }\n}\n","import { Injectable, signal } from '@angular/core';\n\nexport type ToastType = 'success' | 'error' | 'warning' | 'info';\n\nexport interface Toast {\n id: number;\n message: string;\n type: ToastType;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EnlToastService {\n private readonly toastsSignal = signal<Toast[]>([]);\n readonly toasts = this.toastsSignal.asReadonly();\n private seq = 0;\n\n show(message: string, type: ToastType = 'success', duration = 4000): number {\n const id = ++this.seq;\n this.toastsSignal.update((list) => [...list, { id, message, type }]);\n\n if (duration > 0) {\n setTimeout(() => this.remove(id), duration);\n }\n return id;\n }\n\n success(message: string, duration = 4000): number {\n return this.show(message, 'success', duration);\n }\n\n error(message: string, duration = 4000): number {\n return this.show(message, 'error', duration);\n }\n\n warning(message: string, duration = 4000): number {\n return this.show(message, 'warning', duration);\n }\n\n info(message: string, duration = 4000): number {\n return this.show(message, 'info', duration);\n }\n\n remove(id: number): void {\n this.toastsSignal.update((list) => list.filter((t) => t.id !== id));\n }\n}\n","import { Component, ChangeDetectionStrategy, input, computed } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n TypographyVariant,\n TypographyAlign,\n TypographyWeight,\n TypographyColor,\n TypographyElement,\n} from './typography.types';\n\n@Component({\n selector: 'enl-typography',\n standalone: true,\n imports: [NgTemplateOutlet],\n templateUrl: './typography.component.html',\n styleUrl: './typography.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EnlTypographyComponent {\n // Signal inputs with standard defaults\n readonly variant = input<TypographyVariant>('body');\n readonly align = input<TypographyAlign>('left');\n readonly weight = input<TypographyWeight | undefined>(undefined);\n readonly color = input<TypographyColor>('primary');\n\n readonly element = input<TypographyElement | undefined>(undefined);\n\n // Calculate semantic HTML tag to render\n readonly htmlTag = computed<TypographyElement>(() => {\n const custom = this.element();\n if (custom) return custom;\n\n const v = this.variant();\n if (v === 'h1' || v === 'h2' || v === 'h3' || v === 'h4' || v === 'h5' || v === 'h6') {\n return v as TypographyElement;\n }\n if (v === 'code') return 'span';\n return 'p';\n });\n\n // Computed classes combining all design systems attributes\n readonly computedClasses = computed(() => {\n const base = 'enl-typography';\n const classes = [\n base,\n `${base}--${this.variant()}`,\n `${base}--align-${this.align()}`,\n `${base}--color-${this.color()}`,\n ];\n\n const w = this.weight();\n if (w) {\n classes.push(`${base}--weight-${w}`);\n }\n\n return classes.join(' ');\n });\n}\n","<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>\n\n@switch (htmlTag()) {\n @case ('h1') {\n <h1 [class]=\"computedClasses()\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </h1>\n }\n @case ('h2') {\n <h2 [class]=\"computedClasses()\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </h2>\n }\n @case ('h3') {\n <h3 [class]=\"computedClasses()\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </h3>\n }\n @case ('h4') {\n <h4 [class]=\"computedClasses()\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </h4>\n }\n @case ('h5') {\n <h5 [class]=\"computedClasses()\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </h5>\n }\n @case ('h6') {\n <h6 [class]=\"computedClasses()\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </h6>\n }\n @case ('p') {\n <p [class]=\"computedClasses()\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </p>\n }\n @case ('span') {\n <span [class]=\"computedClasses()\"\n ><ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container\n ></span>\n }\n @case ('div') {\n <div [class]=\"computedClasses()\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </div>\n }\n}\n","import { Component, ChangeDetectionStrategy, input, computed } from '@angular/core';\nimport { SpinnerSize, SpinnerVariant } from './spinner.types';\n\n@Component({\n selector: 'enl-spinner',\n standalone: true,\n templateUrl: './spinner.component.html',\n styleUrl: './spinner.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EnlSpinnerComponent {\n readonly size = input<SpinnerSize>('md');\n readonly variant = input<SpinnerVariant>('primary');\n readonly ariaLabel = input<string>('cargando');\n\n readonly computedClasses = computed(() => {\n const base = 'enl-spinner';\n return [base, `${base}--${this.size()}`, `${base}--${this.variant()}`].join(' ');\n });\n}\n","<div [class]=\"computedClasses()\" role=\"status\" [attr.aria-label]=\"ariaLabel()\">\n <span class=\"enl-spinner__sr-only\">Cargando...</span>\n</div>\n","import { IconName } from './icon.types';\n\nexport const IconPaths: Record<IconName, string[]> = {\n search: ['M19 11A8 8 0 1 1 3 11a8 8 0 0 1 16 0Z', 'M21 21l-4.3-4.3'],\n close: ['M18 6L6 18', 'M6 6l12 12'],\n check: ['M20 6L9 17l-5-5'],\n 'chevron-down': ['M6 9l6 6 6-6'],\n 'chevron-up': ['M18 15l-6-6-6 6'],\n 'chevron-right': ['M9 18l6-6-6-6'],\n 'chevron-left': ['M15 18l-6-6 6-6'],\n menu: ['M4 12h16', 'M4 6h16', 'M4 18h16'],\n user: ['M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2', 'M12 11a4 4 0 1 0 0-8 4 4 0 0 0 0 8z'],\n lock: [\n 'M19 11H5a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7a2 2 0 0 0-2-2z',\n 'M7 11V7a5 5 0 0 1 10 0v4',\n ],\n info: ['M12 16v-4', 'M12 8h.01', 'M12 2a10 10 0 1 0 10 10A10 10 0 0 0 12 2z'],\n success: ['M22 11.08V12a10 10 0 1 1-5.93-9.14', 'M22 4L12 14.01l-3-3'],\n warning: [\n 'M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z',\n 'M12 9v4',\n 'M12 17h.01',\n ],\n error: ['M15 9l-6 6', 'M9 9l6 6', 'M12 2a10 10 0 1 0 10 10A10 10 0 0 0 12 2z'],\n settings: [\n 'M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.1a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z',\n 'M12 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6z',\n ],\n logout: ['M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4', 'M16 17l5-5-5-5', 'M21 12H9'],\n 'arrow-right': ['M5 12h14', 'M12 5l7 7-7 7'],\n mail: [\n 'M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z',\n 'M22 6l-10 7L2 6',\n ],\n avatar: [\n 'M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18z',\n 'M12 10a3 3 0 1 0 0-6 3 3 0 0 0 0 6z',\n 'M6.16 16.92A7.5 7.5 0 0 1 12 14.5a7.5 7.5 0 0 1 5.84 2.42',\n ],\n sun: [\n 'M12 12m-4 0a4 4 0 1 0 8 0a4 4 0 1 0 -8 0',\n 'M12 2v2',\n 'M12 20v2',\n 'M4.93 4.93l1.41 1.41',\n 'M17.66 17.66l1.41 1.41',\n 'M2 12h2',\n 'M20 12h2',\n 'M6.34 17.66l-1.41 1.41',\n 'M19.07 4.93l-1.41 1.41',\n ],\n moon: ['M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9z'],\n eye: ['M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z', 'M12 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6z'],\n 'eye-off': [\n 'M9.88 9.88a3 3 0 1 0 4.24 4.24',\n 'M10.73 5.08A10.43 10.43 0 0 1 12 5c7 0 10 7 10 7a13.16 13.16 0 0 1-1.67 2.68',\n 'M6.61 6.61A13.52 13.52 0 0 0 2 12s3 7 10 7a9.74 9.74 0 0 0 5.39-1.61',\n 'M2 2l20 20',\n ],\n calendar: [\n 'M19 4H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2z',\n 'M16 2v4',\n 'M8 2v4',\n 'M3 10h18',\n ],\n};\n","import { Component, ChangeDetectionStrategy, input, computed } from '@angular/core';\nimport { IconName, IconSize } from './icon.types';\nimport { IconPaths } from './icon.constants';\n\n@Component({\n selector: 'enl-icon',\n standalone: true,\n templateUrl: './icon.component.html',\n styleUrl: './icon.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EnlIconComponent {\n // Required signal input for the icon name\n readonly name = input.required<IconName>();\n\n // Custom size selection\n readonly size = input<IconSize>('md');\n\n // Custom color definition (defaults to CSS inherit/currentColor)\n readonly color = input<string | undefined>(undefined);\n\n // Optional ARIA label override\n readonly ariaLabel = input<string | undefined>(undefined);\n\n // Computed paths based on chosen icon name\n readonly paths = computed<string[]>(() => {\n return IconPaths[this.name()] || [];\n });\n\n // Computed host CSS classes\n readonly computedClasses = computed(() => {\n const base = 'enl-icon';\n return [base, `${base}--${this.size()}`].join(' ');\n });\n}\n","<svg\n [class]=\"computedClasses()\"\n [style.color]=\"color() || null\"\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 [attr.aria-label]=\"ariaLabel() || name()\"\n role=\"img\"\n>\n @for (path of paths(); track path) {\n <path [attr.d]=\"path\" />\n }\n</svg>\n","import { Component, ChangeDetectionStrategy, input, output, computed } from '@angular/core';\nimport { ButtonVariant, ButtonSize } from './button.types';\nimport { IconName } from '../icon/icon.types';\nimport { EnlIconComponent } from '../icon/icon.component';\nimport { EnlSpinnerComponent } from '../spinner/spinner.component';\n\n@Component({\n selector: 'enl-button',\n standalone: true,\n imports: [EnlIconComponent, EnlSpinnerComponent],\n templateUrl: './button.component.html',\n styleUrl: './button.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EnlButtonComponent {\n // Input signals\n readonly variant = input<ButtonVariant>('primary');\n readonly size = input<ButtonSize>('md');\n readonly disabled = input<boolean>(false);\n readonly loading = input<boolean>(false);\n readonly type = input<'button' | 'submit' | 'reset'>('button');\n readonly iconLeft = input<IconName | undefined>(undefined);\n readonly iconRight = input<IconName | undefined>(undefined);\n readonly ariaLabel = input<string | undefined>(undefined);\n readonly iconOnly = input<boolean>(false);\n\n // Output event emitters\n readonly clicked = output<MouseEvent>();\n\n // Computed absolute disabled state\n readonly isDisabled = computed(() => this.disabled() || this.loading());\n\n // Computed host CSS classes\n readonly computedClasses = computed(() => {\n const base = 'enl-btn';\n return [\n base,\n `${base}--${this.variant()}`,\n `${base}--${this.size()}`,\n this.iconOnly() ? `${base}--icon-only` : '',\n this.loading() ? `${base}--loading` : '',\n ]\n .filter(Boolean)\n .join(' ');\n });\n\n /**\n * Safe click handler preventing events when disabled.\n */\n handleClick(event: MouseEvent): void {\n if (this.isDisabled()) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n this.clicked.emit(event);\n }\n}\n","<button\n [type]=\"type()\"\n [class]=\"computedClasses()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-disabled]=\"isDisabled() || null\"\n [attr.aria-label]=\"ariaLabel() || null\"\n (click)=\"handleClick($event)\"\n>\n @if (loading()) {\n <enl-spinner class=\"enl-btn__spinner\" size=\"sm\" variant=\"inverse\" />\n } @else if (iconLeft()) {\n <enl-icon class=\"enl-btn__icon-left\" [name]=\"iconLeft()!\" size=\"inherit\" />\n }\n\n <span class=\"enl-btn__content\">\n <ng-content></ng-content>\n </span>\n\n @if (!loading() && iconRight()) {\n <enl-icon class=\"enl-btn__icon-right\" [name]=\"iconRight()!\" size=\"inherit\" />\n }\n</button>\n","import { Component, ChangeDetectionStrategy, input, computed } from '@angular/core';\n\n@Component({\n selector: 'enl-label',\n standalone: true,\n templateUrl: './label.component.html',\n styleUrl: './label.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EnlLabelComponent {\n readonly for = input<string | undefined>(undefined);\n readonly required = input<boolean>(false);\n readonly disabled = input<boolean>(false);\n\n readonly computedClasses = computed(() => {\n const base = 'enl-label';\n return [base, this.disabled() ? `${base}--disabled` : ''].filter(Boolean).join(' ');\n });\n}\n","<label [attr.for]=\"for() || null\" [class]=\"computedClasses()\">\n <span class=\"enl-label__text\">\n <ng-content></ng-content>\n </span>\n @if (required()) {\n <span class=\"enl-label__required\" aria-hidden=\"true\">*</span>\n }\n</label>\n","import { InjectionToken, Signal } from '@angular/core';\n\nexport interface EnlFormField {\n readonly id: Signal<string>;\n readonly disabled: Signal<boolean>;\n readonly error: Signal<string | undefined>;\n}\n\nexport const ENL_FORM_FIELD = new InjectionToken<EnlFormField>('ENL_FORM_FIELD');\n","import {\n Component,\n ChangeDetectionStrategy,\n forwardRef,\n input,\n signal,\n computed,\n inject,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { InputType, InputSize } from './input.types';\nimport { ENL_FORM_FIELD } from '../../tokens/form-field.token';\n\n@Component({\n selector: 'enl-input',\n standalone: true,\n imports: [FormsModule],\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(() => EnlInputComponent),\n multi: true,\n },\n ],\n})\nexport class EnlInputComponent implements ControlValueAccessor {\n readonly id = input<string | undefined>(undefined);\n readonly type = input<InputType>('text');\n readonly placeholder = input<string>('');\n readonly disabled = input<boolean>(false);\n readonly readonly = input<boolean>(false);\n readonly required = input<boolean>(false);\n readonly size = input<InputSize>('md');\n readonly error = input<boolean>(false);\n\n private readonly formField = inject(ENL_FORM_FIELD, { optional: true });\n private readonly generatedId = 'enl-input-' + Math.random().toString(36).substring(2, 9);\n\n readonly inputId = computed(() => this.id() || this.formField?.id() || this.generatedId);\n protected readonly isDisabled = computed(\n () => this.disabled() || this.isAccessorDisabled() || (this.formField?.disabled() ?? false),\n );\n protected readonly isError = computed(() => this.error() || !!this.formField?.error());\n\n protected readonly innerValue = signal<string>('');\n protected readonly isFocused = signal<boolean>(false);\n protected readonly isTouched = signal<boolean>(false);\n protected readonly isAccessorDisabled = signal<boolean>(false);\n\n // Accessor implementation methods\n private onChangeFn?: (value: string) => void;\n private onTouchedFn?: () => void;\n\n writeValue(value: unknown): void {\n this.innerValue.set(typeof value === 'string' ? value : '');\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isAccessorDisabled.set(isDisabled);\n }\n\n protected handleInput(event: Event): void {\n const val = (event.target as HTMLInputElement).value;\n this.innerValue.set(val);\n if (this.onChangeFn) {\n this.onChangeFn(val);\n }\n }\n\n protected handleFocus(): void {\n this.isFocused.set(true);\n }\n\n protected handleBlur(): void {\n this.isFocused.set(false);\n this.isTouched.set(true);\n if (this.onTouchedFn) {\n this.onTouchedFn();\n }\n }\n\n // Computed classes\n readonly computedClasses = computed(() => {\n const base = 'enl-input';\n return [base, `${base}--${this.size()}`, this.isError() ? `${base}--error` : '']\n .filter(Boolean)\n .join(' ');\n });\n}\n","<input\n [id]=\"inputId() || null\"\n [type]=\"type()\"\n [class]=\"computedClasses()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"isDisabled()\"\n [readOnly]=\"readonly()\"\n [required]=\"required()\"\n [value]=\"innerValue()\"\n (input)=\"handleInput($event)\"\n (focus)=\"handleFocus()\"\n (blur)=\"handleBlur()\"\n [attr.aria-invalid]=\"isError() || null\"\n [attr.aria-required]=\"required() || null\"\n/>\n","import { Component, ChangeDetectionStrategy, input, computed } from '@angular/core';\nimport { BadgeVariant, BadgeSize, BadgeShape } from './badge.types';\n\n@Component({\n selector: 'enl-badge',\n standalone: true,\n templateUrl: './badge.component.html',\n styleUrl: './badge.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EnlBadgeComponent {\n readonly variant = input<BadgeVariant>('primary');\n readonly size = input<BadgeSize>('md');\n readonly shape = input<BadgeShape>('pill');\n\n readonly computedClasses = computed(() => {\n const base = 'enl-badge';\n return [\n base,\n `${base}--${this.variant()}`,\n `${base}--${this.size()}`,\n `${base}--${this.shape()}`,\n ].join(' ');\n });\n}\n","<span [class]=\"computedClasses()\">\n <ng-content></ng-content>\n</span>\n","import {\n Component,\n ChangeDetectionStrategy,\n forwardRef,\n input,\n signal,\n computed,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { EnlIconComponent } from '../icon/icon.component';\n\n@Component({\n selector: 'enl-checkbox',\n standalone: true,\n imports: [FormsModule, EnlIconComponent],\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(() => EnlCheckboxComponent),\n multi: true,\n },\n ],\n})\nexport class EnlCheckboxComponent implements ControlValueAccessor {\n readonly id = input<string | undefined>(undefined);\n readonly name = input<string | undefined>(undefined);\n readonly disabled = input<boolean>(false);\n readonly required = input<boolean>(false);\n readonly error = input<boolean>(false);\n\n protected readonly innerChecked = signal<boolean>(false);\n protected readonly isTouched = signal<boolean>(false);\n protected readonly isAccessorDisabled = signal<boolean>(false);\n\n protected readonly isDisabled = computed(() => this.disabled() || this.isAccessorDisabled());\n\n // Accessor callbacks\n private onChangeFn?: (value: boolean) => void;\n private onTouchedFn?: () => void;\n\n writeValue(value: unknown): void {\n this.innerChecked.set(!!value);\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isAccessorDisabled.set(isDisabled);\n }\n\n protected handleChange(event: Event): void {\n const isChecked = (event.target as HTMLInputElement).checked;\n this.innerChecked.set(isChecked);\n if (this.onChangeFn) {\n this.onChangeFn(isChecked);\n }\n }\n\n protected handleBlur(): void {\n this.isTouched.set(true);\n if (this.onTouchedFn) {\n this.onTouchedFn();\n }\n }\n\n // Computed classes\n readonly computedLabelClasses = computed(() => {\n const base = 'enl-checkbox';\n return [\n base,\n this.isDisabled() ? `${base}--disabled` : '',\n this.error() ? `${base}--error` : '',\n ]\n .filter(Boolean)\n .join(' ');\n });\n}\n","<label [class]=\"computedLabelClasses()\">\n <input\n type=\"checkbox\"\n [id]=\"id() || null\"\n [name]=\"name() || null\"\n [checked]=\"innerChecked()\"\n [disabled]=\"isDisabled()\"\n [required]=\"required()\"\n (change)=\"handleChange($event)\"\n (blur)=\"handleBlur()\"\n [attr.aria-invalid]=\"error() || null\"\n class=\"enl-checkbox__input\"\n />\n <span class=\"enl-checkbox__box\">\n <enl-icon name=\"check\" size=\"xs\" class=\"enl-checkbox__icon\" />\n </span>\n <span class=\"enl-checkbox__label-text\">\n <ng-content></ng-content>\n </span>\n</label>\n","import {\n Component,\n ChangeDetectionStrategy,\n forwardRef,\n input,\n signal,\n computed,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\n\n@Component({\n selector: 'enl-radio',\n standalone: true,\n imports: [FormsModule],\n templateUrl: './radio.component.html',\n styleUrl: './radio.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => EnlRadioComponent),\n multi: true,\n },\n ],\n})\nexport class EnlRadioComponent implements ControlValueAccessor {\n readonly id = input<string | undefined>(undefined);\n readonly name = input<string | undefined>(undefined);\n readonly value = input<unknown>(undefined);\n readonly disabled = input<boolean>(false);\n readonly required = input<boolean>(false);\n readonly error = input<boolean>(false);\n\n protected readonly innerChecked = signal<boolean>(false);\n protected readonly isTouched = signal<boolean>(false);\n protected readonly isAccessorDisabled = signal<boolean>(false);\n\n protected readonly isDisabled = computed(() => this.disabled() || this.isAccessorDisabled());\n\n // Accessor callbacks\n private onChangeFn?: (value: unknown) => void;\n private onTouchedFn?: () => void;\n\n writeValue(value: unknown): void {\n // A radio is checked if the forms model value matches its own assigned value\n this.innerChecked.set(value === this.value());\n }\n\n registerOnChange(fn: (value: unknown) => void): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isAccessorDisabled.set(isDisabled);\n }\n\n protected handleChange(event: Event): void {\n const isChecked = (event.target as HTMLInputElement).checked;\n if (isChecked) {\n this.innerChecked.set(true);\n if (this.onChangeFn) {\n this.onChangeFn(this.value());\n }\n }\n }\n\n protected handleBlur(): void {\n this.isTouched.set(true);\n if (this.onTouchedFn) {\n this.onTouchedFn();\n }\n }\n\n // Computed classes\n readonly computedLabelClasses = computed(() => {\n const base = 'enl-radio';\n return [\n base,\n this.isDisabled() ? `${base}--disabled` : '',\n this.error() ? `${base}--error` : '',\n ]\n .filter(Boolean)\n .join(' ');\n });\n}\n","<label [class]=\"computedLabelClasses()\">\n <input\n type=\"radio\"\n [id]=\"id() || null\"\n [name]=\"name() || null\"\n [value]=\"value()\"\n [checked]=\"innerChecked()\"\n [disabled]=\"isDisabled()\"\n [required]=\"required()\"\n (change)=\"handleChange($event)\"\n (blur)=\"handleBlur()\"\n [attr.aria-invalid]=\"error() || null\"\n class=\"enl-radio__input\"\n />\n <span class=\"enl-radio__circle\">\n <span class=\"enl-radio__inner-circle\"></span>\n </span>\n <span class=\"enl-radio__label-text\">\n <ng-content></ng-content>\n </span>\n</label>\n","import { Component, ChangeDetectionStrategy, input, signal, computed } from '@angular/core';\nimport { AvatarSize, AvatarShape } from './avatar.types';\n\n@Component({\n selector: 'enl-avatar',\n standalone: true,\n templateUrl: './avatar.component.html',\n styleUrl: './avatar.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EnlAvatarComponent {\n readonly src = input<string | undefined>(undefined);\n readonly alt = input<string>('Avatar');\n readonly initials = input<string | undefined>(undefined);\n readonly size = input<AvatarSize>('md');\n readonly shape = input<AvatarShape>('circle');\n readonly backgroundColor = input<string | undefined>(undefined);\n\n protected readonly imageError = signal<boolean>(false);\n\n // Compute fallback logic\n readonly showInitials = computed(() => {\n return !this.src() || this.imageError();\n });\n\n protected handleImageError(): void {\n this.imageError.set(true);\n }\n\n // Computed classes\n readonly computedClasses = computed(() => {\n const base = 'enl-avatar';\n return [base, `${base}--${this.size()}`, `${base}--${this.shape()}`].join(' ');\n });\n}\n","<div\n [class]=\"computedClasses()\"\n [style.background-color]=\"backgroundColor() || null\"\n [attr.aria-label]=\"alt() || 'Avatar'\"\n>\n @if (showInitials()) {\n <span class=\"enl-avatar__initials\">{{ initials() || '?' }}</span>\n } @else {\n <img [src]=\"src()\" [alt]=\"alt() || ''\" class=\"enl-avatar__image\" (error)=\"handleImageError()\" />\n }\n</div>\n","import {\n Component,\n ChangeDetectionStrategy,\n forwardRef,\n input,\n signal,\n computed,\n inject,\n ElementRef,\n ViewChild,\n AfterContentInit,\n OnDestroy,\n HostListener,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { ENL_FORM_FIELD } from '../../tokens/form-field.token';\nimport { EnlSpinnerComponent } from '../spinner/spinner.component';\n\n@Component({\n selector: 'enl-select',\n standalone: true,\n imports: [FormsModule, EnlSpinnerComponent],\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(() => EnlSelectComponent),\n multi: true,\n },\n ],\n})\nexport class EnlSelectComponent implements ControlValueAccessor, AfterContentInit, OnDestroy {\n readonly id = input<string | undefined>(undefined);\n readonly disabled = input<boolean>(false);\n readonly required = input<boolean>(false);\n readonly size = input<'sm' | 'md' | 'lg'>('md');\n readonly error = input<boolean>(false);\n readonly placeholder = input<string>('');\n readonly searchable = input<boolean>(false);\n readonly searchPlaceholder = input<string>('Buscar...');\n readonly clearable = input<boolean>(false);\n readonly loading = input<boolean>(false);\n readonly showSelectedIcon = input<boolean>(true);\n\n @ViewChild('nativeSelect', { static: true }) nativeSelect!: ElementRef<HTMLSelectElement>;\n @ViewChild('searchInput') searchInput?: ElementRef<HTMLInputElement>;\n\n private readonly elementRef = inject(ElementRef);\n private readonly formField = inject(ENL_FORM_FIELD, { optional: true });\n private readonly generatedId = 'enl-select-' + Math.random().toString(36).substring(2, 9);\n\n readonly selectId = computed(() => this.id() || this.formField?.id() || this.generatedId);\n protected readonly isDisabled = computed(\n () =>\n this.disabled() ||\n this.loading() ||\n this.isAccessorDisabled() ||\n (this.formField?.disabled() ?? false),\n );\n protected readonly isError = computed(() => this.error() || !!this.formField?.error());\n\n protected readonly innerValue = signal<string>('');\n protected readonly isFocused = signal<boolean>(false);\n protected readonly isTouched = signal<boolean>(false);\n protected readonly isAccessorDisabled = signal<boolean>(false);\n\n // Custom Dropdown State\n protected readonly parsedOptions = signal<{ value: string; label: string }[]>([]);\n protected readonly isOpen = signal<boolean>(false);\n protected readonly activeOptionIndex = signal<number>(-1);\n protected readonly searchQuery = signal<string>('');\n\n protected readonly filteredOptions = computed(() => {\n const query = this.searchQuery().toLowerCase().trim();\n const opts = this.parsedOptions();\n if (!query) return opts;\n return opts.filter((o) => o.label.toLowerCase().includes(query));\n });\n\n protected readonly selectedLabel = computed(() => {\n const val = this.innerValue();\n const opts = this.parsedOptions();\n const match = opts.find((o) => o.value === val);\n return match ? match.label : '';\n });\n\n private observer?: MutationObserver;\n private onChangeFn?: (value: string) => void;\n private onTouchedFn?: () => void;\n\n ngAfterContentInit(): void {\n this.parseNativeOptions();\n\n // Set up a MutationObserver to react to dynamic changes in the options list (like @for (dept of departments))\n if (typeof window !== 'undefined' && this.nativeSelect) {\n this.observer = new MutationObserver(() => {\n this.parseNativeOptions();\n });\n this.observer.observe(this.nativeSelect.nativeElement, {\n childList: true,\n subtree: true,\n characterData: true,\n });\n }\n }\n\n ngOnDestroy(): void {\n if (this.observer) {\n this.observer.disconnect();\n }\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n const clickedInside = this.elementRef.nativeElement.contains(event.target);\n if (!clickedInside) {\n this.isOpen.set(false);\n this.searchQuery.set('');\n }\n }\n\n private parseNativeOptions(): void {\n if (!this.nativeSelect) return;\n const options = Array.from(this.nativeSelect.nativeElement.querySelectorAll('option'));\n\n const parsed = options\n .filter((opt) => opt.value !== '' || (opt.textContent && !opt.disabled && !opt.hidden))\n .map((opt) => ({\n value: opt.value,\n label: opt.textContent?.trim() || opt.value,\n }));\n\n this.parsedOptions.set(parsed);\n }\n\n writeValue(value: unknown): void {\n this.innerValue.set(typeof value === 'string' ? value : '');\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isAccessorDisabled.set(isDisabled);\n }\n\n protected selectOption(value: string, event?: Event): void {\n if (event) {\n event.stopPropagation();\n event.preventDefault();\n }\n if (this.isDisabled()) return;\n this.innerValue.set(value);\n if (this.onChangeFn) {\n this.onChangeFn(value);\n }\n this.isOpen.set(false);\n this.searchQuery.set('');\n this.isTouched.set(true);\n if (this.onTouchedFn) {\n this.onTouchedFn();\n }\n }\n\n private focusSearchInput(): void {\n if (this.searchable()) {\n setTimeout(() => {\n this.searchInput?.nativeElement?.focus();\n }, 0);\n }\n }\n\n protected toggleDropdown(event: MouseEvent): void {\n event.stopPropagation();\n event.preventDefault();\n if (this.isDisabled()) return;\n const nextState = !this.isOpen();\n this.isOpen.set(nextState);\n if (nextState) {\n const opts = this.filteredOptions();\n const currentVal = this.innerValue();\n const matchIdx = opts.findIndex((o) => o.value === currentVal);\n this.activeOptionIndex.set(matchIdx >= 0 ? matchIdx : 0);\n this.focusSearchInput();\n } else {\n this.searchQuery.set('');\n }\n }\n\n protected handleFocus(): void {\n if (this.isDisabled()) return;\n this.isFocused.set(true);\n }\n\n protected handleBlur(): void {\n this.isFocused.set(false);\n this.isTouched.set(true);\n if (this.onTouchedFn) {\n this.onTouchedFn();\n }\n }\n\n protected handleKeydown(event: KeyboardEvent): void {\n if (this.isDisabled()) return;\n\n const opts = this.filteredOptions();\n const activeIdx = this.activeOptionIndex();\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n if (!this.isOpen()) {\n this.isOpen.set(true);\n this.activeOptionIndex.set(0);\n this.focusSearchInput();\n } else if (activeIdx < opts.length - 1) {\n this.activeOptionIndex.set(activeIdx + 1);\n }\n break;\n case 'ArrowUp':\n event.preventDefault();\n if (!this.isOpen()) {\n this.isOpen.set(true);\n this.activeOptionIndex.set(opts.length - 1);\n this.focusSearchInput();\n } else if (activeIdx > 0) {\n this.activeOptionIndex.set(activeIdx - 1);\n }\n break;\n case 'Enter':\n case ' ':\n if (\n event.key === ' ' &&\n this.searchable() &&\n document.activeElement === this.searchInput?.nativeElement\n ) {\n return;\n }\n event.preventDefault();\n if (this.isOpen()) {\n if (activeIdx >= 0 && activeIdx < opts.length) {\n this.selectOption(opts[activeIdx].value);\n } else {\n this.isOpen.set(false);\n }\n } else {\n this.isOpen.set(true);\n const currentVal = this.innerValue();\n const matchIdx = opts.findIndex((o) => o.value === currentVal);\n this.activeOptionIndex.set(matchIdx >= 0 ? matchIdx : 0);\n this.focusSearchInput();\n }\n break;\n case 'Escape':\n event.preventDefault();\n this.isOpen.set(false);\n break;\n case 'Tab':\n this.isOpen.set(false);\n break;\n }\n }\n\n protected clearSelection(event: MouseEvent): void {\n event.stopPropagation();\n event.preventDefault();\n if (this.isDisabled()) return;\n this.selectOption('');\n }\n\n protected onSearchInput(event: Event): void {\n const value = (event.target as HTMLInputElement).value;\n this.searchQuery.set(value);\n const opts = this.filteredOptions();\n this.activeOptionIndex.set(opts.length > 0 ? 0 : -1);\n }\n\n protected clearSearch(event: MouseEvent): void {\n event.stopPropagation();\n event.preventDefault();\n this.searchQuery.set('');\n this.activeOptionIndex.set(this.filteredOptions().length > 0 ? 0 : -1);\n this.searchInput?.nativeElement?.focus();\n }\n\n protected handleSearchKeydown(event: KeyboardEvent): void {\n if (\n event.key === 'ArrowDown' ||\n event.key === 'ArrowUp' ||\n event.key === 'Enter' ||\n event.key === 'Escape'\n ) {\n this.handleKeydown(event);\n }\n }\n\n // Computed classes\n readonly computedTriggerClasses = computed(() => {\n const base = 'enl-select-trigger';\n return [\n base,\n `${base}--${this.size()}`,\n this.isDisabled() ? `${base}--disabled` : '',\n this.loading() ? `${base}--loading` : '',\n this.isError() ? `${base}--error` : '',\n this.isOpen() ? `${base}--open` : '',\n ]\n .filter(Boolean)\n .join(' ');\n });\n}\n","<div class=\"enl-select-wrapper\">\n <!-- Trigger Element -->\n <div\n [id]=\"selectId() || null\"\n [class]=\"computedTriggerClasses()\"\n [attr.tabindex]=\"isDisabled() ? -1 : 0\"\n [attr.aria-haspopup]=\"'listbox'\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-disabled]=\"isDisabled() || null\"\n (click)=\"toggleDropdown($event)\"\n (keydown)=\"handleKeydown($event)\"\n (focus)=\"handleFocus()\"\n (blur)=\"handleBlur()\"\n >\n <span class=\"enl-select__value\" [class.enl-select__value--placeholder]=\"!selectedLabel()\">\n {{ selectedLabel() || placeholder() }}\n </span>\n\n <div class=\"enl-select-trigger-actions\">\n @if (clearable() && innerValue() !== '' && !isDisabled()) {\n <button\n type=\"button\"\n class=\"enl-select-clear-btn\"\n (click)=\"clearSelection($event)\"\n aria-label=\"Limpiar selección\"\n >\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2.5\"\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\n @if (loading()) {\n <enl-spinner size=\"sm\" class=\"enl-select-spinner\" />\n } @else {\n <div class=\"enl-select-chevron\" [class.enl-select-chevron--open]=\"isOpen()\">\n <svg\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 <polyline points=\"6 9 12 15 18 9\"></polyline>\n </svg>\n </div>\n }\n </div>\n </div>\n\n <!-- Hidden native select for HTML compatibility -->\n <select\n #nativeSelect\n style=\"display: none\"\n [value]=\"innerValue()\"\n [disabled]=\"isDisabled()\"\n [required]=\"required()\"\n aria-hidden=\"true\"\n >\n <ng-content></ng-content>\n </select>\n\n <!-- Custom Simulated Options Panel -->\n @if (isOpen() && !isDisabled()) {\n <div class=\"enl-select__panel\" (mousedown)=\"$event.preventDefault()\">\n @if (searchable()) {\n <div class=\"enl-select__search-box\">\n <svg\n class=\"enl-select__search-icon\"\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 <circle cx=\"11\" cy=\"11\" r=\"8\"></circle>\n <line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line>\n </svg>\n <input\n #searchInput\n type=\"text\"\n [placeholder]=\"searchPlaceholder()\"\n [value]=\"searchQuery()\"\n (input)=\"onSearchInput($event)\"\n (keydown)=\"handleSearchKeydown($event)\"\n class=\"enl-select__search-input\"\n />\n @if (searchQuery()) {\n <button type=\"button\" class=\"enl-select__search-clear\" (click)=\"clearSearch($event)\">\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2.5\"\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 </div>\n }\n <ul\n class=\"enl-select__options\"\n role=\"listbox\"\n [attr.aria-label]=\"placeholder() || 'Selección'\"\n >\n @if (placeholder() && !searchQuery()) {\n <li\n class=\"enl-select__option enl-select__option--placeholder\"\n [class.enl-select__option--selected]=\"innerValue() === ''\"\n (click)=\"selectOption('', $event)\"\n (keydown.enter)=\"selectOption('', $event)\"\n (keydown.space)=\"selectOption('', $event)\"\n role=\"option\"\n tabindex=\"-1\"\n [attr.aria-selected]=\"innerValue() === ''\"\n >\n {{ placeholder() }}\n </li>\n }\n @if (filteredOptions().length === 0) {\n <li\n class=\"enl-select__option enl-select__option--no-results\"\n role=\"option\"\n aria-disabled=\"true\"\n aria-selected=\"false\"\n >\n No se encontraron resultados\n </li>\n }\n @for (opt of filteredOptions(); track opt.value) {\n <li\n class=\"enl-select__option\"\n [class.enl-select__option--selected]=\"innerValue() === opt.value\"\n [class.enl-select__option--active]=\"activeOptionIndex() === $index\"\n (click)=\"selectOption(opt.value, $event)\"\n (keydown.enter)=\"selectOption(opt.value, $event)\"\n (keydown.space)=\"selectOption(opt.value, $event)\"\n role=\"option\"\n tabindex=\"-1\"\n [attr.aria-selected]=\"innerValue() === opt.value\"\n >\n <span class=\"enl-select__option-text\">{{ opt.label }}</span>\n @if (showSelectedIcon() && innerValue() === opt.value) {\n <svg\n class=\"enl-select__check-icon\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <polyline points=\"20 6 9 17 4 12\"></polyline>\n </svg>\n }\n </li>\n }\n </ul>\n </div>\n }\n</div>\n","import {\n Component,\n ChangeDetectionStrategy,\n forwardRef,\n input,\n signal,\n computed,\n inject,\n EventEmitter,\n Output,\n OnInit,\n effect,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { ENL_FORM_FIELD } from '../../tokens/form-field.token';\nimport { EnlIconComponent } from '../icon/icon.component';\n\n@Component({\n selector: 'enl-input-number',\n standalone: true,\n imports: [FormsModule, EnlIconComponent],\n templateUrl: './input-number.component.html',\n styleUrl: './input-number.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => EnlInputNumberComponent),\n multi: true,\n },\n ],\n})\nexport class EnlInputNumberComponent implements ControlValueAccessor, OnInit {\n readonly id = input<string | undefined>(undefined);\n readonly placeholder = input<string>('');\n readonly disabled = input<boolean>(false);\n readonly readonly = input<boolean>(false);\n readonly required = input<boolean>(false);\n readonly size = input<'sm' | 'md' | 'lg'>('md');\n readonly error = input<boolean>(false);\n\n readonly min = input<number | undefined>(undefined);\n readonly max = input<number | undefined>(undefined);\n readonly step = input<number>(1);\n readonly showButtons = input<boolean>(true);\n readonly buttonLayout = input<'stacked' | 'horizontal'>('stacked');\n readonly format = input<boolean>(true);\n readonly locale = input<string>('es-CO');\n readonly mode = input<'decimal' | 'currency'>('decimal');\n readonly currency = input<string | undefined>(undefined);\n readonly minFractionDigits = input<number>(0);\n readonly maxFractionDigits = input<number>(2);\n readonly prefix = input<string | undefined>(undefined);\n readonly suffix = input<string | undefined>(undefined);\n\n @Output() readonly valueChange = new EventEmitter<number | null>();\n @Output() readonly focusEvent = new EventEmitter<FocusEvent>();\n @Output() readonly blurEvent = new EventEmitter<FocusEvent>();\n\n private readonly formField = inject(ENL_FORM_FIELD, { optional: true });\n private readonly generatedId = 'enl-input-number-' + Math.random().toString(36).substring(2, 9);\n\n readonly inputId = computed(() => this.id() || this.formField?.id() || this.generatedId);\n protected readonly isDisabled = computed(\n () => this.disabled() || this.isAccessorDisabled() || (this.formField?.disabled() ?? false),\n );\n protected readonly isError = computed(() => this.error() || !!this.formField?.error());\n\n protected readonly val = signal<number | null>(null);\n protected readonly inputValue = signal<string>('');\n protected readonly isFocused = signal<boolean>(false);\n protected readonly isTouched = signal<boolean>(false);\n protected readonly isAccessorDisabled = signal<boolean>(false);\n\n // Accessor implementation methods\n private onChangeFn?: (value: number | null) => void;\n private onTouchedFn?: () => void;\n\n constructor() {\n // Automatically update input field text when raw value programmatically changes and input is not focused\n effect(\n () => {\n const raw = this.val();\n if (!this.isFocused()) {\n this.inputValue.set(this.getFormattedValue(raw));\n }\n },\n { allowSignalWrites: true },\n );\n }\n\n ngOnInit(): void {\n if (!this.isFocused()) {\n this.inputValue.set(this.getFormattedValue(this.val()));\n }\n }\n\n writeValue(value: unknown): void {\n const num = typeof value === 'number' ? value : null;\n this.val.set(num);\n }\n\n registerOnChange(fn: (value: number | null) => void): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isAccessorDisabled.set(isDisabled);\n }\n\n protected handleInput(event: Event): void {\n const text = (event.target as HTMLInputElement).value;\n this.inputValue.set(text);\n\n const parsed = this.parseValue(text);\n this.val.set(parsed);\n this.emitChange(parsed);\n }\n\n protected handleFocus(event: FocusEvent): void {\n if (this.isDisabled()) return;\n this.isFocused.set(true);\n const rawEdit = this.getRawEditValue(this.val());\n this.inputValue.set(rawEdit);\n this.focusEvent.emit(event);\n }\n\n protected handleBlur(event: FocusEvent): void {\n this.isFocused.set(false);\n this.isTouched.set(true);\n\n const clamped = this.clampValue(this.val());\n this.val.set(clamped);\n this.emitChange(clamped);\n\n const formatted = this.getFormattedValue(clamped);\n this.inputValue.set(formatted);\n\n if (this.onTouchedFn) {\n this.onTouchedFn();\n }\n this.blurEvent.emit(event);\n }\n\n protected handleKeyDown(event: KeyboardEvent): void {\n if (this.isDisabled() || this.readonly()) return;\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n this.increment();\n } else if (event.key === 'ArrowDown') {\n event.preventDefault();\n this.decrement();\n }\n }\n\n protected increment(): void {\n if (this.isDisabled() || this.readonly()) return;\n const current = this.val() !== null ? this.val()! : 0;\n let next = current + this.step();\n next = this.clampValue(next) ?? next;\n\n this.val.set(next);\n this.inputValue.set(\n this.isFocused() ? this.getRawEditValue(next) : this.getFormattedValue(next),\n );\n this.emitChange(next);\n }\n\n protected decrement(): void {\n if (this.isDisabled() || this.readonly()) return;\n const current = this.val() !== null ? this.val()! : 0;\n let next = current - this.step();\n next = this.clampValue(next) ?? next;\n\n this.val.set(next);\n this.inputValue.set(\n this.isFocused() ? this.getRawEditValue(next) : this.getFormattedValue(next),\n );\n this.emitChange(next);\n }\n\n private emitChange(value: number | null): void {\n if (this.onChangeFn) {\n this.onChangeFn(value);\n }\n this.valueChange.emit(value);\n }\n\n // Formatting and parsing helpers\n private getDecimalSeparator(): string {\n try {\n const parts = new Intl.NumberFormat(this.locale(), {\n minimumFractionDigits: 1,\n }).formatToParts(1.1);\n return parts.find((p) => p.type === 'decimal')?.value || '.';\n } catch {\n return '.';\n }\n }\n\n private getGroupSeparator(): string {\n try {\n const parts = new Intl.NumberFormat(this.locale(), {\n minimumFractionDigits: 1,\n }).formatToParts(1.1);\n return parts.find((p) => p.type === 'group')?.value || ',';\n } catch {\n return ',';\n }\n }\n\n private getRawEditValue(value: number | null): string {\n if (value === null) return '';\n const decimalSep = this.getDecimalSeparator();\n return value.toString().replace('.', decimalSep);\n }\n\n private getFormattedValue(value: number | null): string {\n if (value === null) return '';\n\n if (!this.format()) {\n return this.getRawEditValue(value);\n }\n\n try {\n const opts: Intl.NumberFormatOptions = {\n minimumFractionDigits: this.minFractionDigits(),\n maximumFractionDigits: this.maxFractionDigits(),\n };\n\n if (this.mode() === 'currency' && this.currency()) {\n opts.style = 'currency';\n opts.currency = this.currency();\n } else {\n opts.style = 'decimal';\n }\n\n let formatted = new Intl.NumberFormat(this.locale(), opts).format(value);\n\n if (this.prefix()) {\n formatted = `${this.prefix()}${formatted}`;\n }\n if (this.suffix()) {\n formatted = `${formatted}${this.suffix()}`;\n }\n\n return formatted;\n } catch {\n return this.getRawEditValue(value);\n }\n }\n\n private parseValue(text: string): number | null {\n if (!text) return null;\n\n const decimalSep = this.getDecimalSeparator();\n const groupSep = this.getGroupSeparator();\n\n const escapedGroupSep = groupSep.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n let cleanText = text.replace(new RegExp(escapedGroupSep, 'g'), '');\n cleanText = cleanText.replace(decimalSep, '.');\n cleanText = cleanText.replace(/[^0-9.-]/g, '');\n\n const num = parseFloat(cleanText);\n return isNaN(num) ? null : num;\n }\n\n private clampValue(value: number | null): number | null {\n if (value === null) return null;\n const minVal = this.min();\n const maxVal = this.max();\n if (minVal !== undefined && value < minVal) return minVal;\n if (maxVal !== undefined && value > maxVal) return maxVal;\n return value;\n }\n\n // Computed visual classes for the wrapper and input element\n readonly computedWrapperClasses = computed(() => {\n const base = 'enl-input-number';\n return [\n base,\n `${base}--${this.size()}`,\n `${base}--layout-${this.buttonLayout()}`,\n this.isDisabled() ? `${base}--disabled` : '',\n this.isError() ? `${base}--error` : '',\n ]\n .filter(Boolean)\n .join(' ');\n });\n\n readonly computedInputClasses = computed(() => {\n const base = 'enl-input-number__input';\n return [\n base,\n `${base}--${this.size()}`,\n this.isError() ? `${base}--error` : '',\n this.showButtons() ? `${base}--with-buttons` : '',\n ]\n .filter(Boolean)\n .join(' ');\n });\n}\n","<div [class]=\"computedWrapperClasses()\">\n @if (buttonLayout() === 'horizontal' && showButtons()) {\n <button\n type=\"button\"\n class=\"enl-input-number__button enl-input-number__button--minus\"\n [class.enl-input-number__button--sm]=\"size() === 'sm'\"\n [class.enl-input-number__button--lg]=\"size() === 'lg'\"\n [disabled]=\"\n isDisabled() || readonly() || (min() !== undefined && val() !== null && val()! <= min()!)\n \"\n (click)=\"decrement()\"\n tabindex=\"-1\"\n >\n <enl-icon name=\"chevron-down\" size=\"xs\"></enl-icon>\n </button>\n }\n\n <input\n [id]=\"inputId()\"\n type=\"text\"\n [class]=\"computedInputClasses()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"isDisabled()\"\n [readOnly]=\"readonly()\"\n [required]=\"required()\"\n [value]=\"inputValue()\"\n (input)=\"handleInput($event)\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"\n (keydown)=\"handleKeyDown($event)\"\n [attr.aria-invalid]=\"isError() || null\"\n [attr.aria-required]=\"required() || null\"\n autocomplete=\"off\"\n />\n\n @if (showButtons()) {\n @if (buttonLayout() === 'stacked') {\n <div class=\"enl-input-number__stacked-buttons\">\n <button\n type=\"button\"\n class=\"enl-input-number__button enl-input-number__button--up\"\n [disabled]=\"\n isDisabled() ||\n readonly() ||\n (max() !== undefined && val() !== null && val()! >= max()!)\n \"\n (click)=\"increment()\"\n tabindex=\"-1\"\n >\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"3\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n class=\"enl-input-number__stacked-icon\"\n >\n <polyline points=\"18 15 12 9 6 15\"></polyline>\n </svg>\n </button>\n <button\n type=\"button\"\n class=\"enl-input-number__button enl-input-number__button--down\"\n [disabled]=\"\n isDisabled() ||\n readonly() ||\n (min() !== undefined && val() !== null && val()! <= min()!)\n \"\n (click)=\"decrement()\"\n tabindex=\"-1\"\n >\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"3\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n class=\"enl-input-number__stacked-icon\"\n >\n <polyline points=\"6 9 12 15 18 9\"></polyline>\n </svg>\n </button>\n </div>\n } @else if (buttonLayout() === 'horizontal') {\n <button\n type=\"button\"\n class=\"enl-input-number__button enl-input-number__button--plus\"\n [class.enl-input-number__button--sm]=\"size() === 'sm'\"\n [class.enl-input-number__button--lg]=\"size() === 'lg'\"\n [disabled]=\"\n isDisabled() || readonly() || (max() !== undefined && val() !== null && val()! >= max()!)\n \"\n (click)=\"increment()\"\n tabindex=\"-1\"\n >\n <enl-icon name=\"chevron-up\" size=\"xs\"></enl-icon>\n </button>\n }\n }\n</div>\n","import {\n Component,\n ChangeDetectionStrategy,\n forwardRef,\n input,\n signal,\n computed,\n inject,\n EventEmitter,\n Output,\n ElementRef,\n viewChildren,\n effect,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { ENL_FORM_FIELD } from '../../tokens/form-field.token';\n\n@Component({\n selector: 'enl-input-otp',\n standalone: true,\n imports: [FormsModule],\n templateUrl: './input-otp.component.html',\n styleUrl: './input-otp.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => EnlInputOtpComponent),\n multi: true,\n },\n ],\n})\nexport class EnlInputOtpComponent implements ControlValueAccessor {\n readonly id = input<string | undefined>(undefined);\n readonly length = input<number>(4);\n readonly disabled = input<boolean>(false);\n readonly readonly = input<boolean>(false);\n readonly required = input<boolean>(false);\n readonly size = input<'sm' | 'md' | 'lg'>('md');\n readonly error = input<boolean>(false);\n readonly integerOnly = input<boolean>(true);\n readonly mask = input<boolean>(false);\n readonly placeholder = input<string>('');\n\n @Output() readonly otpChange = new EventEmitter<string>();\n @Output() readonly complete = new EventEmitter<string>();\n\n private readonly formField = inject(ENL_FORM_FIELD, { optional: true });\n private readonly generatedId = 'enl-input-otp-' + Math.random().toString(36).substring(2, 9);\n\n readonly inputId = computed(() => this.id() || this.formField?.id() || this.generatedId);\n protected readonly isDisabled = computed(\n () => this.disabled() || this.isAccessorDisabled() || (this.formField?.disabled() ?? false),\n );\n protected readonly isError = computed(() => this.error() || !!this.formField?.error());\n\n protected readonly cells = signal<string[]>([]);\n protected readonly isAccessorDisabled = signal<boolean>(false);\n protected readonly isTouched = signal<boolean>(false);\n\n private onChangeFn?: (value: string) => void;\n private onTouchedFn?: () => void;\n\n private readonly cellInputs = viewChildren<ElementRef<HTMLInputElement>>('cellInput');\n\n protected readonly cellIndices = computed(() => {\n const len = this.length();\n return Array.from({ length: len }, (_, i) => i);\n });\n\n constructor() {\n effect(\n () => {\n const len = this.length();\n const current = this.cells();\n if (current.length !== len) {\n const next = Array.from({ length: len }, (_, i) => current[i] || '');\n this.cells.set(next);\n }\n },\n { allowSignalWrites: true },\n );\n }\n\n writeValue(value: unknown): void {\n const valString =\n typeof value === 'string'\n ? value\n : value !== null && value !== undefined\n ? String(value)\n : '';\n const len = this.length();\n const next = Array.from({ length: len }, (_, i) => valString[i] || '');\n this.cells.set(next);\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isAccessorDisabled.set(isDisabled);\n }\n\n protected handleInput(event: Event, index: number): void {\n const inputEl = event.target as HTMLInputElement;\n let char = inputEl.value;\n\n if (this.integerOnly()) {\n char = char.replace(/[^0-9]/g, '');\n }\n\n if (char.length > 1) {\n char = char.slice(-1);\n }\n\n const currentCells = [...this.cells()];\n currentCells[index] = char;\n this.cells.set(currentCells);\n\n const fullValue = currentCells.join('');\n this.emitChange(fullValue);\n\n if (char && index < this.length() - 1) {\n this.focusCell(index + 1);\n }\n }\n\n protected handleKeyDown(event: KeyboardEvent, index: number): void {\n if (this.isDisabled() || this.readonly()) return;\n\n const inputEl = event.target as HTMLInputElement;\n\n if (event.key === 'Backspace') {\n if (!inputEl.value && index > 0) {\n const currentCells = [...this.cells()];\n currentCells[index - 1] = '';\n this.cells.set(currentCells);\n this.emitChange(currentCells.join(''));\n\n this.focusCell(index - 1);\n event.preventDefault();\n } else if (inputEl.value) {\n const currentCells = [...this.cells()];\n currentCells[index] = '';\n this.cells.set(currentCells);\n this.emitChange(currentCells.join(''));\n }\n } else if (event.key === 'ArrowLeft' && index > 0) {\n this.focusCell(index - 1);\n event.preventDefault();\n } else if (event.key === 'ArrowRight' && index < this.length() - 1) {\n this.focusCell(index + 1);\n event.preventDefault();\n }\n }\n\n protected handlePaste(event: ClipboardEvent, index: number): void {\n if (this.isDisabled() || this.readonly()) return;\n\n event.preventDefault();\n const pastedData = event.clipboardData?.getData('text') || '';\n let filtered = pastedData.trim();\n\n if (this.integerOnly()) {\n filtered = filtered.replace(/[^0-9]/g, '');\n }\n\n if (!filtered) return;\n\n const currentCells = [...this.cells()];\n let pasteIndex = index;\n\n for (let i = 0; i < filtered.length && pasteIndex < this.length(); i++) {\n currentCells[pasteIndex] = filtered[i];\n pasteIndex++;\n }\n\n this.cells.set(currentCells);\n const fullValue = currentCells.join('');\n this.emitChange(fullValue);\n\n const finalFocusIndex = Math.min(pasteIndex, this.length() - 1);\n this.focusCell(finalFocusIndex);\n }\n\n protected handleFocus(): void {\n this.isTouched.set(true);\n }\n\n protected handleBlur(): void {\n if (this.onTouchedFn) {\n this.onTouchedFn();\n }\n }\n\n private focusCell(index: number): void {\n const inputs = this.cellInputs();\n if (inputs && inputs[index]) {\n inputs[index].nativeElement.focus();\n inputs[index].nativeElement.select();\n }\n }\n\n private emitChange(value: string): void {\n if (this.onChangeFn) {\n this.onChangeFn(value);\n }\n this.otpChange.emit(value);\n\n if (value.length === this.length()) {\n this.complete.emit(value);\n }\n }\n\n readonly computedWrapperClasses = computed(() => {\n const base = 'enl-input-otp';\n return [\n base,\n `${base}--${this.size()}`,\n this.isDisabled() ? `${base}--disabled` : '',\n this.isError() ? `${base}--error` : '',\n ]\n .filter(Boolean)\n .join(' ');\n });\n\n readonly computedCellClasses = computed(() => {\n const base = 'enl-input-otp__cell';\n return [base, `${base}--${this.size()}`, this.isError() ? `${base}--error` : '']\n .filter(Boolean)\n .join(' ');\n });\n}\n","<div [class]=\"computedWrapperClasses()\">\n @for (index of cellIndices(); track index) {\n <input\n #cellInput\n [type]=\"mask() ? 'password' : 'text'\"\n [class]=\"computedCellClasses()\"\n [placeholder]=\"placeholder() || ''\"\n [disabled]=\"isDisabled()\"\n [readOnly]=\"readonly()\"\n [required]=\"required()\"\n [value]=\"cells()[index] || ''\"\n (input)=\"handleInput($event, index)\"\n (keydown)=\"handleKeyDown($event, index)\"\n (paste)=\"handlePaste($event, index)\"\n (focus)=\"handleFocus()\"\n (blur)=\"handleBlur()\"\n maxlength=\"1\"\n [attr.inputmode]=\"integerOnly() ? 'numeric' : 'text'\"\n [attr.pattern]=\"integerOnly() ? '[0-9]*' : null\"\n autocomplete=\"one-time-code\"\n />\n\n @if (length() % 2 === 0 && index === length() / 2 - 1) {\n <span class=\"enl-input-otp__separator\">—</span>\n }\n }\n</div>\n","import {\n Component,\n ChangeDetectionStrategy,\n forwardRef,\n input,\n signal,\n computed,\n inject,\n EventEmitter,\n Output,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { ENL_FORM_FIELD } from '../../tokens/form-field.token';\nimport { EnlIconComponent } from '../icon/icon.component';\n\n@Component({\n selector: 'enl-password',\n standalone: true,\n imports: [FormsModule, EnlIconComponent],\n templateUrl: './password.component.html',\n styleUrl: './password.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => EnlPasswordComponent),\n multi: true,\n },\n ],\n})\nexport class EnlPasswordComponent implements ControlValueAccessor {\n readonly id = input<string | undefined>(undefined);\n readonly placeholder = input<string>('');\n readonly disabled = input<boolean>(false);\n readonly readonly = input<boolean>(false);\n readonly required = input<boolean>(false);\n readonly size = input<'sm' | 'md' | 'lg'>('md');\n readonly error = input<boolean>(false);\n readonly toggleMask = input<boolean>(true);\n readonly feedback = input<boolean>(false);\n readonly promptLabel = input<string>('Escribe una contraseña');\n readonly weakLabel = input<string>('Débil');\n readonly mediumLabel = input<string>('Medio');\n readonly strongLabel = input<string>('Fuerte');\n\n @Output() readonly valueChange = new EventEmitter<string>();\n @Output() readonly focusEvent = new EventEmitter<FocusEvent>();\n @Output() readonly blurEvent = new EventEmitter<FocusEvent>();\n\n private readonly formField = inject(ENL_FORM_FIELD, { optional: true });\n private readonly generatedId = 'enl-password-' + Math.random().toString(36).substring(2, 9);\n\n readonly inputId = computed(() => this.id() || this.formField?.id() || this.generatedId);\n protected readonly isDisabled = computed(\n () => this.disabled() || this.isAccessorDisabled() || (this.formField?.disabled() ?? false),\n );\n protected readonly isError = computed(() => this.error() || !!this.formField?.error());\n\n protected readonly innerValue = signal<string>('');\n protected readonly isMasked = signal<boolean>(true);\n protected readonly isFocused = signal<boolean>(false);\n protected readonly isTouched = signal<boolean>(false);\n protected readonly isAccessorDisabled = signal<boolean>(false);\n\n private onChangeFn?: (value: string) => void;\n private onTouchedFn?: () => void;\n\n writeValue(value: unknown): void {\n this.innerValue.set(typeof value === 'string' ? value : '');\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isAccessorDisabled.set(isDisabled);\n }\n\n protected handleInput(event: Event): void {\n const val = (event.target as HTMLInputElement).value;\n this.innerValue.set(val);\n if (this.onChangeFn) {\n this.onChangeFn(val);\n }\n this.valueChange.emit(val);\n }\n\n protected handleFocus(event: FocusEvent): void {\n if (this.isDisabled()) return;\n this.isFocused.set(true);\n this.focusEvent.emit(event);\n }\n\n protected handleBlur(event: FocusEvent): void {\n this.isFocused.set(false);\n this.isTouched.set(true);\n if (this.onTouchedFn) {\n this.onTouchedFn();\n }\n this.blurEvent.emit(event);\n }\n\n protected toggleVisibility(event: MouseEvent): void {\n event.stopPropagation();\n event.preventDefault();\n if (this.isDisabled()) return;\n this.isMasked.set(!this.isMasked());\n }\n\n // Password strength logic\n protected readonly strengthScore = computed(() => {\n const val = this.innerValue();\n if (!val) return 0;\n\n let points = 0;\n\n // Length >= 8\n if (val.length >= 8) {\n points += 30;\n }\n\n // Has lowercase letter\n if (/[a-z]/.test(val)) {\n points += 20;\n }\n\n // Has uppercase letter\n if (/[A-Z]/.test(val)) {\n points += 20;\n }\n\n // Has number\n if (/[0-9]/.test(val)) {\n points += 15;\n }\n\n // Has special character\n if (/[^A-Za-z0-9]/.test(val)) {\n points += 15;\n }\n\n return points;\n });\n\n protected readonly strengthLabel = computed(() => {\n const score = this.strengthScore();\n const val = this.innerValue();\n if (!val) return this.promptLabel();\n if (score <= 35) return this.weakLabel();\n if (score <= 75) return this.mediumLabel();\n return this.strongLabel();\n });\n\n protected readonly strengthClass = computed(() => {\n const score = this.strengthScore();\n const val = this.innerValue();\n if (!val) return 'enl-password__strength--empty';\n if (score <= 35) return 'enl-password__strength--weak';\n if (score <= 75) return 'enl-password__strength--medium';\n return 'enl-password__strength--strong';\n });\n\n // Visual dynamic classes\n readonly computedWrapperClasses = computed(() => {\n const base = 'enl-password';\n return [\n base,\n `${base}--${this.size()}`,\n this.isDisabled() ? `${base}--disabled` : '',\n this.isError() ? `${base}--error` : '',\n ]\n .filter(Boolean)\n .join(' ');\n });\n\n readonly computedInputClasses = computed(() => {\n const base = 'enl-password__input';\n return [\n base,\n `${base}--${this.size()}`,\n this.isError() ? `${base}--error` : '',\n this.toggleMask() ? `${base}--with-mask` : '',\n ]\n .filter(Boolean)\n .join(' ');\n });\n}\n","<div [class]=\"computedWrapperClasses()\">\n <input\n [id]=\"inputId()\"\n [type]=\"isMasked() ? 'password' : 'text'\"\n [class]=\"computedInputClasses()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"isDisabled()\"\n [readOnly]=\"readonly()\"\n [required]=\"required()\"\n [value]=\"innerValue()\"\n (input)=\"handleInput($event)\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"\n [attr.aria-invalid]=\"isError() || null\"\n [attr.aria-required]=\"required() || null\"\n autocomplete=\"current-password\"\n />\n\n @if (toggleMask()) {\n <button\n type=\"button\"\n class=\"enl-password__toggle\"\n [disabled]=\"isDisabled()\"\n (click)=\"toggleVisibility($event)\"\n tabindex=\"-1\"\n aria-label=\"Alternar visibilidad de contraseña\"\n >\n <enl-icon [name]=\"isMasked() ? 'eye' : 'eye-off'\" size=\"sm\"></enl-icon>\n </button>\n }\n\n <!-- Medidor de Fuerza Popover Flotante -->\n @if (feedback() && isFocused() && innerValue()) {\n <div class=\"enl-password__panel\" (mousedown)=\"$event.preventDefault()\">\n <div class=\"enl-password__strength-text\">\n <span>Seguridad:</span>\n <span class=\"enl-password__strength-label\" [class]=\"strengthClass() + '-text'\">\n {{ strengthLabel() }}\n </span>\n </div>\n <div class=\"enl-password__meter\">\n <div\n class=\"enl-password__meter-bar\"\n [class]=\"strengthClass()\"\n [style.width.%]=\"strengthScore()\"\n ></div>\n </div>\n </div>\n }\n</div>\n","import {\n Component,\n ChangeDetectionStrategy,\n forwardRef,\n input,\n signal,\n computed,\n inject,\n ElementRef,\n ViewChild,\n Output,\n EventEmitter,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { ENL_FORM_FIELD } from '../../tokens/form-field.token';\n\n@Component({\n selector: 'enl-textarea',\n standalone: true,\n imports: [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(() => EnlTextareaComponent),\n multi: true,\n },\n ],\n})\nexport class EnlTextareaComponent implements ControlValueAccessor {\n readonly id = input<string | undefined>(undefined);\n readonly placeholder = input<string>('');\n readonly disabled = input<boolean>(false);\n readonly readonly = input<boolean>(false);\n readonly required = input<boolean>(false);\n readonly size = input<'sm' | 'md' | 'lg'>('md');\n readonly error = input<boolean>(false);\n readonly rows = input<number>(3);\n readonly cols = input<number | undefined>(undefined);\n readonly maxlength = input<number | undefined>(undefined);\n readonly counter = input<boolean>(false);\n readonly autoResize = input<boolean>(false);\n\n @Output() readonly valueChange = new EventEmitter<string>();\n @Output() readonly focusEvent = new EventEmitter<FocusEvent>();\n @Output() readonly blurEvent = new EventEmitter<FocusEvent>();\n\n @ViewChild('textareaElement') textareaElement?: ElementRef<HTMLTextAreaElement>;\n\n private readonly formField = inject(ENL_FORM_FIELD, { optional: true });\n private readonly generatedId = 'enl-textarea-' + Math.random().toString(36).substring(2, 9);\n\n readonly textareaId = computed(() => this.id() || this.formField?.id() || this.generatedId);\n protected readonly isDisabled = computed(\n () => this.disabled() || this.isAccessorDisabled() || (this.formField?.disabled() ?? false),\n );\n protected readonly isError = computed(() => this.error() || !!this.formField?.error());\n\n protected readonly innerValue = signal<string>('');\n protected readonly isFocused = signal<boolean>(false);\n protected readonly isTouched = signal<boolean>(false);\n protected readonly isAccessorDisabled = signal<boolean>(false);\n\n protected readonly currentLength = computed(() => this.innerValue().length);\n\n private onChangeFn?: (value: string) => void;\n private onTouchedFn?: () => void;\n\n writeValue(value: unknown): void {\n const val = typeof value === 'string' ? value : '';\n this.innerValue.set(val);\n\n if (this.autoResize()) {\n setTimeout(() => {\n if (this.textareaElement) {\n this.adjustHeight(this.textareaElement.nativeElement);\n }\n });\n }\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isAccessorDisabled.set(isDisabled);\n }\n\n protected handleInput(event: Event): void {\n const val = (event.target as HTMLTextAreaElement).value;\n this.innerValue.set(val);\n if (this.onChangeFn) {\n this.onChangeFn(val);\n }\n this.valueChange.emit(val);\n\n if (this.autoResize()) {\n this.adjustHeight(event.target as HTMLTextAreaElement);\n }\n }\n\n protected handleFocus(event: FocusEvent): void {\n if (this.isDisabled()) return;\n this.isFocused.set(true);\n this.focusEvent.emit(event);\n }\n\n protected handleBlur(event: FocusEvent): void {\n this.isFocused.set(false);\n this.isTouched.set(true);\n if (this.onTouchedFn) {\n this.onTouchedFn();\n }\n this.blurEvent.emit(event);\n }\n\n private adjustHeight(textarea: HTMLTextAreaElement): void {\n textarea.style.height = 'auto';\n textarea.style.height = textarea.scrollHeight + 'px';\n }\n\n // Computed classes\n readonly computedWrapperClasses = computed(() => {\n const base = 'enl-textarea-wrapper';\n return [\n base,\n `${base}--${this.size()}`,\n this.isDisabled() ? `${base}--disabled` : '',\n this.isError() ? `${base}--error` : '',\n ]\n .filter(Boolean)\n .join(' ');\n });\n\n readonly computedTextareaClasses = computed(() => {\n const base = 'enl-textarea';\n return [\n base,\n `${base}--${this.size()}`,\n this.isError() ? `${base}--error` : '',\n this.autoResize() ? `${base}--auto-resize` : '',\n ]\n .filter(Boolean)\n .join(' ');\n });\n}\n","<div [class]=\"computedWrapperClasses()\">\n <textarea\n #textareaElement\n [id]=\"textareaId()\"\n [class]=\"computedTextareaClasses()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"isDisabled()\"\n [readOnly]=\"readonly()\"\n [required]=\"required()\"\n [rows]=\"rows()\"\n [cols]=\"cols() || null\"\n [value]=\"innerValue()\"\n [attr.maxlength]=\"maxlength() || null\"\n (input)=\"handleInput($event)\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"\n [attr.aria-invalid]=\"isError() || null\"\n [attr.aria-required]=\"required() || null\"\n ></textarea>\n\n @if (maxlength() && counter()) {\n <div class=\"enl-textarea__counter\">{{ currentLength() }} / {{ maxlength() }}</div>\n }\n</div>\n","import {\n Component,\n ChangeDetectionStrategy,\n forwardRef,\n input,\n signal,\n computed,\n inject,\n Output,\n EventEmitter,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { ENL_FORM_FIELD } from '../../tokens/form-field.token';\n\n@Component({\n selector: 'enl-toggle-switch',\n standalone: true,\n imports: [FormsModule],\n templateUrl: './toggle-switch.component.html',\n styleUrl: './toggle-switch.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => EnlToggleSwitchComponent),\n multi: true,\n },\n ],\n})\nexport class EnlToggleSwitchComponent implements ControlValueAccessor {\n readonly id = input<string | undefined>(undefined);\n readonly disabled = input<boolean>(false);\n readonly required = input<boolean>(false);\n readonly size = input<'sm' | 'md' | 'lg'>('md');\n readonly error = input<boolean>(false);\n readonly label = input<string>('');\n readonly labelPosition = input<'left' | 'right'>('right');\n\n @Output() readonly valueChange = new EventEmitter<boolean>();\n @Output() readonly focusEvent = new EventEmitter<FocusEvent>();\n @Output() readonly blurEvent = new EventEmitter<FocusEvent>();\n\n private readonly formField = inject(ENL_FORM_FIELD, { optional: true });\n private readonly generatedId = 'enl-toggle-switch-' + Math.random().toString(36).substring(2, 9);\n\n readonly toggleId = computed(() => this.id() || this.formField?.id() || this.generatedId);\n protected readonly isDisabled = computed(\n () => this.disabled() || this.isAccessorDisabled() || (this.formField?.disabled() ?? false),\n );\n protected readonly isError = computed(() => this.error() || !!this.formField?.error());\n\n protected readonly innerValue = signal<boolean>(false);\n protected readonly isFocused = signal<boolean>(false);\n protected readonly isTouched = signal<boolean>(false);\n protected readonly isAccessorDisabled = signal<boolean>(false);\n\n private onChangeFn?: (value: boolean) => void;\n private onTouchedFn?: () => void;\n\n writeValue(value: unknown): void {\n this.innerValue.set(!!value);\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isAccessorDisabled.set(isDisabled);\n }\n\n protected handleChange(event: Event): void {\n const val = (event.target as HTMLInputElement).checked;\n this.innerValue.set(val);\n if (this.onChangeFn) {\n this.onChangeFn(val);\n }\n this.valueChange.emit(val);\n }\n\n protected handleFocus(event: FocusEvent): void {\n if (this.isDisabled()) return;\n this.isFocused.set(true);\n this.focusEvent.emit(event);\n }\n\n protected handleBlur(event: FocusEvent): void {\n this.isFocused.set(false);\n this.isTouched.set(true);\n if (this.onTouchedFn) {\n this.onTouchedFn();\n }\n this.blurEvent.emit(event);\n }\n\n protected toggleState(event: Event): void {\n if (this.isDisabled()) return;\n\n // Prevent default to prevent double triggering when clicking label/wrapper\n event.preventDefault();\n\n const nextVal = !this.innerValue();\n this.innerValue.set(nextVal);\n\n if (this.onChangeFn) {\n this.onChangeFn(nextVal);\n }\n this.valueChange.emit(nextVal);\n\n this.isTouched.set(true);\n if (this.onTouchedFn) {\n this.onTouchedFn();\n }\n }\n\n // Computed classes\n readonly computedWrapperClasses = computed(() => {\n const base = 'enl-toggle-switch';\n return [\n base,\n `${base}--${this.size()}`,\n this.innerValue() ? `${base}--checked` : '',\n this.isDisabled() ? `${base}--disabled` : '',\n this.isError() ? `${base}--error` : '',\n this.isFocused() ? `${base}--focused` : '',\n `${base}--label-${this.labelPosition()}`,\n ]\n .filter(Boolean)\n .join(' ');\n });\n}\n","<div\n [class]=\"computedWrapperClasses()\"\n (click)=\"toggleState($event)\"\n (keydown.space)=\"toggleState($event)\"\n (keydown.enter)=\"toggleState($event)\"\n [attr.tabindex]=\"isDisabled() ? -1 : 0\"\n role=\"checkbox\"\n [attr.aria-checked]=\"innerValue()\"\n [attr.aria-disabled]=\"isDisabled() || null\"\n>\n <input\n type=\"checkbox\"\n class=\"enl-toggle-switch__input\"\n [id]=\"toggleId()\"\n [checked]=\"innerValue()\"\n [disabled]=\"isDisabled()\"\n [required]=\"required()\"\n (change)=\"handleChange($event)\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"\n [attr.aria-invalid]=\"isError() || null\"\n [attr.aria-required]=\"required() || null\"\n tabindex=\"-1\"\n />\n\n @if (label() && labelPosition() === 'left') {\n <span class=\"enl-toggle-switch__label\">\n {{ label() }}\n </span>\n }\n\n <div class=\"enl-toggle-switch__slider\">\n <div class=\"enl-toggle-switch__thumb\"></div>\n </div>\n\n @if (label() && labelPosition() === 'right') {\n <span class=\"enl-toggle-switch__label\">\n {{ label() }}\n </span>\n }\n</div>\n","import { Component, ChangeDetectionStrategy, input, computed } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'enl-skeleton',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './skeleton.component.html',\n styleUrl: './skeleton.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EnlSkeletonComponent {\n readonly shape = input<'rectangle' | 'circle' | 'line'>('rectangle');\n readonly width = input<string>('100%');\n readonly height = input<string>('16px');\n readonly borderRadius = input<string | undefined>(undefined);\n\n protected readonly computedClasses = computed(() => {\n return `enl-skeleton--shape-${this.shape()}`;\n });\n\n protected readonly customBorderRadius = computed(() => {\n const br = this.borderRadius();\n if (br) return br;\n\n const s = this.shape();\n if (s === 'circle') return '50%';\n if (s === 'line') return '9999px';\n return '4px';\n });\n}\n","<div\n class=\"enl-skeleton\"\n [class]=\"computedClasses()\"\n [style.width]=\"width()\"\n [style.height]=\"height()\"\n [style.border-radius]=\"customBorderRadius()\"\n></div>\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n computed,\n forwardRef,\n ContentChild,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { EnlLabelComponent } from '../../atoms/label/label.component';\nimport { ENL_FORM_FIELD } from '../../tokens/form-field.token';\nimport { EnlInputComponent } from '../../atoms/input/input.component';\n\n@Component({\n selector: 'enl-form-field',\n standalone: true,\n imports: [CommonModule, EnlLabelComponent],\n templateUrl: './form-field.component.html',\n styleUrl: './form-field.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: ENL_FORM_FIELD,\n useExisting: forwardRef(() => EnlFormFieldComponent),\n },\n ],\n})\nexport class EnlFormFieldComponent {\n readonly label = input<string | undefined>(undefined);\n readonly required = input<boolean>(false);\n readonly disabled = input<boolean>(false);\n readonly error = input<string | undefined>(undefined);\n readonly hint = input<string | undefined>(undefined);\n\n readonly customId = input<string | undefined>(undefined);\n private readonly generatedId = 'enl-field-' + Math.random().toString(36).substring(2, 9);\n readonly id = computed(() => this.customId() || this.generatedId);\n\n readonly errorId = computed(() => `${this.id()}-error`);\n readonly hintId = computed(() => `${this.id()}-hint`);\n\n // Detect projected input to bind accessibility properties dynamically\n @ContentChild(EnlInputComponent) protected projectedInput?: EnlInputComponent;\n\n // Sincronización del aria-describedby\n protected readonly ariaDescribedBy = computed(() => {\n const ids: string[] = [];\n if (this.error()) {\n ids.push(this.errorId());\n } else if (this.hint()) {\n ids.push(this.hintId());\n }\n return ids.length > 0 ? ids.join(' ') : null;\n });\n}\n","<div\n class=\"enl-form-field\"\n [class.enl-form-field--error]=\"!!error()\"\n [class.enl-form-field--disabled]=\"disabled()\"\n>\n @if (label()) {\n <enl-label\n [for]=\"id()\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n class=\"enl-form-field__label\"\n >\n {{ label() }}\n </enl-label>\n }\n\n <div class=\"enl-form-field__control\" [attr.aria-describedby]=\"ariaDescribedBy()\">\n <ng-content></ng-content>\n </div>\n\n @if (error()) {\n <span class=\"enl-form-field__error\" [id]=\"errorId()\">\n {{ error() }}\n </span>\n } @else if (hint()) {\n <span class=\"enl-form-field__hint\" [id]=\"hintId()\">\n {{ hint() }}\n </span>\n }\n</div>\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n signal,\n forwardRef,\n computed,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { EnlInputComponent } from '../../atoms/input/input.component';\nimport { EnlButtonComponent } from '../../atoms/button/button.component';\nimport { EnlIconComponent } from '../../atoms/icon/icon.component';\nimport { EnlSpinnerComponent } from '../../atoms/spinner/spinner.component';\nimport { InputSize } from '../../atoms/input/input.types';\n\n@Component({\n selector: 'enl-search-input',\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n EnlInputComponent,\n EnlButtonComponent,\n EnlIconComponent,\n EnlSpinnerComponent,\n ],\n templateUrl: './search-input.component.html',\n styleUrl: './search-input.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => EnlSearchInputComponent),\n multi: true,\n },\n ],\n})\nexport class EnlSearchInputComponent implements ControlValueAccessor {\n readonly placeholder = input<string>('Buscar...');\n readonly disabled = input<boolean>(false);\n readonly size = input<InputSize>('md');\n readonly buttonText = input<string | undefined>(undefined);\n readonly loading = input<boolean>(false);\n\n readonly searchSubmitted = output<string>();\n readonly cleared = output<void>();\n\n protected readonly innerValue = signal<string>('');\n protected readonly isAccessorDisabled = signal<boolean>(false);\n protected readonly isFocused = signal<boolean>(false);\n\n protected readonly isDisabled = computed(\n () => this.disabled() || this.isAccessorDisabled() || this.loading(),\n );\n\n private onChangeFn?: (value: string) => void;\n private onTouchedFn?: () => void;\n\n writeValue(value: unknown): void {\n this.innerValue.set(typeof value === 'string' ? value : '');\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isAccessorDisabled.set(isDisabled);\n }\n\n protected handleInput(val: string): void {\n this.innerValue.set(val);\n if (this.onChangeFn) {\n this.onChangeFn(val);\n }\n }\n\n protected handleKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Enter') {\n this.triggerSearch();\n }\n }\n\n protected handleFocus(): void {\n this.isFocused.set(true);\n }\n\n protected handleBlur(): void {\n this.isFocused.set(false);\n if (this.onTouchedFn) {\n this.onTouchedFn();\n }\n }\n\n protected handleClear(): void {\n if (this.isDisabled()) return;\n this.innerValue.set('');\n if (this.onChangeFn) {\n this.onChangeFn('');\n }\n this.cleared.emit();\n }\n\n protected triggerSearch(): void {\n if (this.isDisabled()) return;\n this.searchSubmitted.emit(this.innerValue());\n }\n\n protected readonly containerClasses = computed(() => {\n const base = 'enl-search-input-container';\n return [\n base,\n `${base}--${this.size()}`,\n this.isFocused() ? `${base}--focused` : '',\n this.isDisabled() ? `${base}--disabled` : '',\n ]\n .filter(Boolean)\n .join(' ');\n });\n}\n","<div [class]=\"containerClasses()\">\n <div class=\"enl-search-input-container__input-wrapper\">\n <enl-icon\n name=\"search\"\n [size]=\"size() === 'lg' ? 'md' : 'sm'\"\n class=\"enl-search-input-container__prefix\"\n ></enl-icon>\n\n <enl-input\n [placeholder]=\"placeholder()\"\n [disabled]=\"isDisabled()\"\n [size]=\"size()\"\n [ngModel]=\"innerValue()\"\n (ngModelChange)=\"handleInput($event)\"\n (keydown)=\"handleKeyDown($event)\"\n (focus)=\"handleFocus()\"\n (blur)=\"handleBlur()\"\n class=\"enl-search-input-container__field\"\n ></enl-input>\n\n @if (innerValue() && !isDisabled() && !loading()) {\n <button\n type=\"button\"\n class=\"enl-search-input-container__clear\"\n (click)=\"handleClear()\"\n aria-label=\"Limpiar búsqueda\"\n >\n <enl-icon name=\"close\" size=\"sm\"></enl-icon>\n </button>\n }\n\n @if (loading()) {\n <div class=\"enl-search-input-container__spinner\">\n <enl-spinner size=\"sm\"></enl-spinner>\n </div>\n }\n </div>\n\n @if (buttonText() || loading()) {\n <enl-button\n [size]=\"size()\"\n [disabled]=\"isDisabled()\"\n [loading]=\"loading()\"\n (click)=\"triggerSearch()\"\n class=\"enl-search-input-container__btn\"\n >\n @if (buttonText()) {\n {{ buttonText() }}\n } @else {\n Buscar\n }\n </enl-button>\n }\n</div>\n","import {\n Component,\n ChangeDetectionStrategy,\n forwardRef,\n input,\n signal,\n computed,\n inject,\n ElementRef,\n HostListener,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { ENL_FORM_FIELD } from '../../tokens/form-field.token';\nimport { EnlIconComponent } from '../../atoms/icon/icon.component';\n\nexport interface CalendarDay {\n date: Date;\n dayNumber: number;\n isCurrentMonth: boolean;\n isSelected: boolean;\n isToday: boolean;\n isDisabled: boolean;\n isRangeStart: boolean;\n isRangeEnd: boolean;\n isInRange: boolean;\n}\n\n@Component({\n selector: 'enl-date-picker',\n standalone: true,\n imports: [CommonModule, FormsModule, EnlIconComponent],\n templateUrl: './date-picker.component.html',\n styleUrl: './date-picker.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => EnlDatePickerComponent),\n multi: true,\n },\n ],\n})\nexport class EnlDatePickerComponent implements ControlValueAccessor {\n readonly id = input<string | undefined>(undefined);\n readonly placeholder = input<string>('Seleccione fecha...');\n readonly disabled = input<boolean>(false);\n readonly readonly = input<boolean>(false);\n readonly required = input<boolean>(false);\n readonly size = input<'sm' | 'md' | 'lg'>('md');\n readonly error = input<boolean>(false);\n readonly minDate = input<string | undefined>(undefined); // format YYYY-MM-DD\n readonly maxDate = input<string | undefined>(undefined); // format YYYY-MM-DD\n\n // Advanced features inputs\n readonly mode = input<'single' | 'range' | 'month' | 'time'>('single');\n readonly showTime = input<boolean>(false);\n readonly hourFormat = input<'12' | '24'>('24');\n readonly dateFormat = input<string>('DD/MM/YYYY');\n readonly blockedDates = input<string[] | undefined>(undefined); // Array of format 'YYYY-MM-DD'\n readonly disabledDatesFn = input<((date: Date) => boolean) | undefined>(undefined);\n\n private readonly formField = inject(ENL_FORM_FIELD, { optional: true });\n private readonly generatedId = 'enl-date-picker-' + Math.random().toString(36).substring(2, 9);\n private readonly elementRef = inject(ElementRef);\n\n readonly inputId = computed(() => this.id() || this.formField?.id() || this.generatedId);\n protected readonly isDisabled = computed(\n () => this.disabled() || this.isAccessorDisabled() || (this.formField?.disabled() ?? false),\n );\n protected readonly isError = computed(() => this.error() || !!this.formField?.error());\n readonly computedPlaceholder = computed(() => {\n if (this.placeholder() !== 'Seleccione fecha...') {\n return this.placeholder();\n }\n return this.mode() === 'time' ? 'Seleccione hora...' : 'Seleccione fecha...';\n });\n\n // Date selection states\n protected readonly selectedDate = signal<Date | null>(null);\n protected readonly rangeStart = signal<Date | null>(null);\n protected readonly rangeEnd = signal<Date | null>(null);\n protected readonly hoveredDate = signal<Date | null>(null);\n\n // Time picker states\n protected readonly selectedHour = signal<number>(12);\n protected readonly selectedMinute = signal<number>(0);\n\n // Calendar navigation states\n protected readonly viewYear = signal<number>(new Date().getFullYear());\n protected readonly viewMonth = signal<number>(new Date().getMonth()); // 0-11\n protected readonly isOpen = signal<boolean>(false);\n protected readonly isFocused = signal<boolean>(false);\n protected readonly isTouched = signal<boolean>(false);\n protected readonly isAccessorDisabled = signal<boolean>(false);\n\n readonly monthNames = [\n 'Enero',\n 'Febrero',\n 'Marzo',\n 'Abril',\n 'Mayo',\n 'Junio',\n 'Julio',\n 'Agosto',\n 'Septiembre',\n 'Octubre',\n 'Noviembre',\n 'Diciembre',\n ];\n readonly dayNames = ['Do', 'Lu', 'Ma', 'Mi', 'Ju', 'Vi', 'Sa'];\n\n // Accessor implementation methods\n private onChangeFn?: (value: string) => void;\n private onTouchedFn?: () => void;\n\n // Format visual display according to mode and showTime\n readonly displayText = computed(() => {\n if (this.mode() === 'month') {\n const date = this.selectedDate();\n if (!date) return '';\n return `${this.monthNames[date.getMonth()]} ${date.getFullYear()}`;\n }\n\n if (this.mode() === 'range') {\n const start = this.rangeStart();\n const end = this.rangeEnd();\n if (!start) return '';\n const startText = this.formatDateVisual(start);\n if (!end) return `${startText} - ...`;\n return `${startText} - ${this.formatDateVisual(end)}`;\n }\n\n if (this.mode() === 'time') {\n const hh = this.selectedHour();\n const mm = this.selectedMinute();\n if (this.hourFormat() === '12') {\n const ampm = hh >= 12 ? 'PM' : 'AM';\n const displayH = hh % 12 || 12;\n return `${String(displayH).padStart(2, '0')}:${String(mm).padStart(2, '0')} ${ampm}`;\n } else {\n return `${String(hh).padStart(2, '0')}:${String(mm).padStart(2, '0')}`;\n }\n }\n\n // Default 'single' mode\n const date = this.selectedDate();\n if (!date) return '';\n const dateText = this.formatDateVisual(date);\n if (this.showTime()) {\n const hh = String(this.selectedHour()).padStart(2, '0');\n const mm = String(this.selectedMinute()).padStart(2, '0');\n return `${dateText} ${hh}:${mm}`;\n }\n return dateText;\n });\n\n // Generate calendar days grid (42 cells: 6 weeks)\n readonly calendarDays = computed(() => {\n const year = this.viewYear();\n const month = this.viewMonth();\n const today = new Date();\n\n const min = this.minDate()\n ? this.parseISOString(this.minDate()!) || this.parseVisualDateString(this.minDate()!)\n : null;\n const max = this.maxDate()\n ? this.parseISOString(this.maxDate()!) || this.parseVisualDateString(this.maxDate()!)\n : null;\n\n const firstDayOfWeek = new Date(year, month, 1).getDay(); // 0 = Sun, 6 = Sat\n const totalDays = new Date(year, month + 1, 0).getDate();\n const prevMonthTotalDays = new Date(year, month, 0).getDate();\n\n const days: CalendarDay[] = [];\n\n // Mode-specific variables\n const modeVal = this.mode();\n const rangeS = this.rangeStart();\n const rangeE = this.rangeEnd();\n const hoverD = this.hoveredDate();\n const singleSelected = this.selectedDate();\n\n // Previous month filler\n for (let i = firstDayOfWeek - 1; i >= 0; i--) {\n const d = new Date(year, month - 1, prevMonthTotalDays - i);\n const isStart = modeVal === 'range' && this.isSameDay(d, rangeS);\n const isEnd = modeVal === 'range' && this.isSameDay(d, rangeE);\n days.push({\n date: d,\n dayNumber: d.getDate(),\n isCurrentMonth: false,\n isSelected: modeVal === 'single' && this.isSameDay(d, singleSelected),\n isToday: this.isSameDay(d, today),\n isDisabled: this.checkIsDayDisabled(d, min, max),\n isRangeStart: isStart,\n isRangeEnd: isEnd,\n isInRange: modeVal === 'range' && this.checkIsInRange(d, rangeS, rangeE, hoverD),\n });\n }\n\n // Current month\n for (let i = 1; i <= totalDays; i++) {\n const d = new Date(year, month, i);\n const isStart = modeVal === 'range' && this.isSameDay(d, rangeS);\n const isEnd = modeVal === 'range' && this.isSameDay(d, rangeE);\n days.push({\n date: d,\n dayNumber: i,\n isCurrentMonth: true,\n isSelected: modeVal === 'single' && this.isSameDay(d, singleSelected),\n isToday: this.isSameDay(d, today),\n isDisabled: this.checkIsDayDisabled(d, min, max),\n isRangeStart: isStart,\n isRangeEnd: isEnd,\n isInRange: modeVal === 'range' && this.checkIsInRange(d, rangeS, rangeE, hoverD),\n });\n }\n\n // Next month filler\n const remainingCells = 42 - days.length;\n for (let i = 1; i <= remainingCells; i++) {\n const d = new Date(year, month + 1, i);\n const isStart = modeVal === 'range' && this.isSameDay(d, rangeS);\n const isEnd = modeVal === 'range' && this.isSameDay(d, rangeE);\n days.push({\n date: d,\n dayNumber: i,\n isCurrentMonth: false,\n isSelected: modeVal === 'single' && this.isSameDay(d, singleSelected),\n isToday: this.isSameDay(d, today),\n isDisabled: this.checkIsDayDisabled(d, min, max),\n isRangeStart: isStart,\n isRangeEnd: isEnd,\n isInRange: modeVal === 'range' && this.checkIsInRange(d, rangeS, rangeE, hoverD),\n });\n }\n\n return days;\n });\n\n readonly computedClasses = computed(() => {\n const base = 'enl-date-picker';\n return [\n base,\n `${base}--${this.size()}`,\n this.isError() ? `${base}--error` : '',\n this.isDisabled() ? `${base}--disabled` : '',\n this.isOpen() ? `${base}--open` : '',\n ]\n .filter(Boolean)\n .join(' ');\n });\n\n @HostListener('document:click', ['$event'])\n protected onDocumentClick(event: MouseEvent): void {\n if (!this.elementRef.nativeElement.contains(event.target)) {\n this.isOpen.set(false);\n }\n }\n\n writeValue(value: unknown): void {\n if (typeof value === 'string' && value) {\n if (this.mode() === 'range') {\n const parts = value.split(' to ');\n if (parts.length === 2) {\n const start = this.parseISOString(parts[0]);\n const end = this.parseISOString(parts[1]);\n this.rangeStart.set(start);\n this.rangeEnd.set(end);\n if (start) {\n this.viewYear.set(start.getFullYear());\n this.viewMonth.set(start.getMonth());\n }\n } else {\n this.rangeStart.set(null);\n this.rangeEnd.set(null);\n }\n } else if (this.mode() === 'month') {\n const parsed = this.parseMonthString(value);\n this.selectedDate.set(parsed);\n if (parsed) {\n this.viewYear.set(parsed.getFullYear());\n this.viewMonth.set(parsed.getMonth());\n }\n } else if (this.mode() === 'time') {\n const parsed = this.parseTimeString(value);\n if (parsed) {\n this.selectedHour.set(parsed.hour);\n this.selectedMinute.set(parsed.minute);\n }\n } else {\n // Single mode (optionally with time)\n const parsed = this.parseDateTimeString(value);\n this.selectedDate.set(parsed);\n if (parsed) {\n this.viewYear.set(parsed.getFullYear());\n this.viewMonth.set(parsed.getMonth());\n if (this.showTime()) {\n this.selectedHour.set(parsed.getHours());\n this.selectedMinute.set(parsed.getMinutes());\n }\n }\n }\n } else if (value instanceof Date) {\n this.selectedDate.set(value);\n this.viewYear.set(value.getFullYear());\n this.viewMonth.set(value.getMonth());\n if (this.showTime() || this.mode() === 'time') {\n this.selectedHour.set(value.getHours());\n this.selectedMinute.set(value.getMinutes());\n }\n } else {\n this.selectedDate.set(null);\n this.rangeStart.set(null);\n this.rangeEnd.set(null);\n }\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isAccessorDisabled.set(isDisabled);\n }\n\n protected toggleCalendar(): void {\n if (this.isDisabled() || this.readonly()) return;\n this.isOpen.set(!this.isOpen());\n if (this.isOpen()) {\n this.isFocused.set(true);\n const selected = this.selectedDate() || this.rangeStart();\n if (selected) {\n this.viewYear.set(selected.getFullYear());\n this.viewMonth.set(selected.getMonth());\n }\n }\n }\n\n protected selectDay(day: CalendarDay): void {\n if (day.isDisabled || this.isDisabled() || this.readonly()) return;\n\n if (this.mode() === 'range') {\n const start = this.rangeStart();\n const end = this.rangeEnd();\n\n if (!start || (start && end)) {\n // First selection click\n this.rangeStart.set(day.date);\n this.rangeEnd.set(null);\n this.hoveredDate.set(null);\n } else {\n // Second selection click\n if (day.date < start) {\n // If selected end is earlier, swap start and reset end\n this.rangeStart.set(day.date);\n this.rangeEnd.set(null);\n } else {\n this.rangeEnd.set(day.date);\n this.hoveredDate.set(null);\n this.propagateRangeValue(start, day.date);\n this.isOpen.set(false);\n }\n }\n } else if (this.mode() === 'single') {\n if (this.showTime()) {\n // In datetime, set selected date but wait for \"Confirm\" click\n this.selectedDate.set(day.date);\n } else {\n // Single selection closes and propagates immediately\n this.selectedDate.set(day.date);\n this.propagateSingleValue(day.date);\n this.isOpen.set(false);\n }\n }\n }\n\n protected handleDayMouseEnter(date: Date): void {\n if (this.mode() === 'range' && this.rangeStart() && !this.rangeEnd()) {\n this.hoveredDate.set(date);\n }\n }\n\n // Month-only selection methods\n protected isMonthSelected(monthIndex: number): boolean {\n const selected = this.selectedDate();\n if (!selected) return false;\n return selected.getMonth() === monthIndex && selected.getFullYear() === this.viewYear();\n }\n\n protected selectMonth(monthIndex: number): void {\n if (this.isDisabled() || this.readonly()) return;\n const date = new Date(this.viewYear(), monthIndex, 1);\n this.selectedDate.set(date);\n this.propagateMonthValue(date);\n this.isOpen.set(false);\n }\n\n // Time picker adjustment methods\n protected adjustHour(amount: number): void {\n let hh = this.selectedHour() + amount;\n if (hh > 23) hh = 0;\n if (hh < 0) hh = 23;\n this.selectedHour.set(hh);\n }\n\n protected adjustMinute(amount: number): void {\n let mm = this.selectedMinute() + amount;\n if (mm > 59) mm = 0;\n if (mm < 0) mm = 59;\n this.selectedMinute.set(mm);\n }\n\n protected toggleAmPm(): void {\n if (this.isDisabled() || this.readonly()) return;\n const current = this.selectedHour();\n if (current >= 12) {\n this.selectedHour.set(current - 12);\n } else {\n this.selectedHour.set(current + 12);\n }\n }\n\n protected padTime(val: number): string {\n return String(val).padStart(2, '0');\n }\n\n protected confirmDateTime(): void {\n const selected = this.selectedDate() || new Date();\n const finalDate = new Date(\n selected.getFullYear(),\n selected.getMonth(),\n selected.getDate(),\n this.selectedHour(),\n this.selectedMinute(),\n );\n this.selectedDate.set(finalDate);\n this.propagateSingleValue(finalDate);\n this.isOpen.set(false);\n }\n\n protected confirmTimeOnly(): void {\n this.propagateTimeOnlyValue();\n this.isOpen.set(false);\n }\n\n private propagateTimeOnlyValue(): void {\n if (this.onChangeFn) {\n const hh = this.selectedHour();\n const mm = this.selectedMinute();\n if (this.hourFormat() === '12') {\n const ampm = hh >= 12 ? 'PM' : 'AM';\n const displayH = hh % 12 || 12;\n this.onChangeFn(\n `${String(displayH).padStart(2, '0')}:${String(mm).padStart(2, '0')} ${ampm}`,\n );\n } else {\n this.onChangeFn(`${String(hh).padStart(2, '0')}:${String(mm).padStart(2, '0')}`);\n }\n }\n }\n\n protected prevMonth(event: Event): void {\n event.stopPropagation();\n let m = this.viewMonth() - 1;\n let y = this.viewYear();\n if (m < 0) {\n m = 11;\n y--;\n }\n this.viewMonth.set(m);\n this.viewYear.set(y);\n }\n\n protected nextMonth(event: Event): void {\n event.stopPropagation();\n let m = this.viewMonth() + 1;\n let y = this.viewYear();\n if (m > 11) {\n m = 0;\n y++;\n }\n this.viewMonth.set(m);\n this.viewYear.set(y);\n }\n\n protected prevYear(event: Event): void {\n event.stopPropagation();\n this.viewYear.set(this.viewYear() - 1);\n }\n\n protected nextYear(event: Event): void {\n event.stopPropagation();\n this.viewYear.set(this.viewYear() + 1);\n }\n\n protected handleFocus(): void {\n if (this.isDisabled()) return;\n this.isFocused.set(true);\n }\n\n protected handleBlur(): void {\n this.isFocused.set(false);\n this.isTouched.set(true);\n if (this.onTouchedFn) {\n this.onTouchedFn();\n }\n }\n\n protected handleInputChange(event: Event): void {\n const val = (event.target as HTMLInputElement).value;\n if (!val) {\n this.updateValue(null, null);\n return;\n }\n\n if (this.mode() === 'time') {\n const parsed = this.parseTimeString(val);\n if (parsed) {\n this.selectedHour.set(parsed.hour);\n this.selectedMinute.set(parsed.minute);\n this.propagateTimeOnlyValue();\n }\n return;\n }\n\n if (this.mode() === 'range') {\n const parts = val.split(' - ');\n if (parts.length === 2) {\n const start = this.parseVisualDateString(parts[0]);\n const end = this.parseVisualDateString(parts[1]);\n if (start && end && start <= end) {\n this.rangeStart.set(start);\n this.rangeEnd.set(end);\n this.propagateRangeValue(start, end);\n }\n }\n } else if (this.mode() === 'month') {\n // Month-only visual selection typing\n const parts = val.split('/');\n if (parts.length === 2) {\n const mm = parseInt(parts[0], 10) - 1;\n const yy = parseInt(parts[1], 10);\n if (!isNaN(mm) && !isNaN(yy) && mm >= 0 && mm <= 11 && yy > 1000) {\n const date = new Date(yy, mm, 1);\n this.selectedDate.set(date);\n this.propagateMonthValue(date);\n }\n }\n } else {\n // Single and Datetime\n const parts = val.split(' ');\n if (parts.length > 0) {\n const datePart = this.parseVisualDateString(parts[0]);\n if (datePart) {\n if (this.showTime() && parts.length === 2) {\n const timeParts = parts[1].split(':');\n if (timeParts.length === 2) {\n const hh = parseInt(timeParts[0], 10);\n const mm = parseInt(timeParts[1], 10);\n if (!isNaN(hh) && !isNaN(mm) && hh >= 0 && hh <= 23 && mm >= 0 && mm <= 59) {\n const finalDate = new Date(\n datePart.getFullYear(),\n datePart.getMonth(),\n datePart.getDate(),\n hh,\n mm,\n );\n this.selectedDate.set(finalDate);\n this.selectedHour.set(hh);\n this.selectedMinute.set(mm);\n this.propagateSingleValue(finalDate);\n return;\n }\n }\n } else if (!this.showTime()) {\n this.selectedDate.set(datePart);\n this.propagateSingleValue(datePart);\n }\n }\n }\n }\n }\n\n private updateValue(start: Date | null, end: Date | null): void {\n if (this.mode() === 'range') {\n this.rangeStart.set(start);\n this.rangeEnd.set(end);\n if (this.onChangeFn) {\n if (start && end) {\n this.onChangeFn(`${this.formatDateToString(start)} to ${this.formatDateToString(end)}`);\n } else {\n this.onChangeFn('');\n }\n }\n } else if (this.mode() === 'time') {\n this.selectedHour.set(12);\n this.selectedMinute.set(0);\n if (this.onChangeFn) {\n this.onChangeFn('');\n }\n } else {\n this.selectedDate.set(start);\n if (this.onChangeFn) {\n if (start) {\n if (this.mode() === 'month') {\n this.onChangeFn(this.formatMonthToString(start));\n } else {\n this.onChangeFn(\n this.showTime() ? this.formatDateTimeToString(start) : this.formatDateToString(start),\n );\n }\n } else {\n this.onChangeFn('');\n }\n }\n }\n }\n\n private propagateSingleValue(date: Date): void {\n if (this.onChangeFn) {\n this.onChangeFn(\n this.showTime() ? this.formatDateTimeToString(date) : this.formatDateToString(date),\n );\n }\n }\n\n private propagateRangeValue(start: Date, end: Date): void {\n if (this.onChangeFn) {\n this.onChangeFn(`${this.formatDateToString(start)} to ${this.formatDateToString(end)}`);\n }\n }\n\n private propagateMonthValue(date: Date): void {\n if (this.onChangeFn) {\n this.onChangeFn(this.formatMonthToString(date));\n }\n }\n\n private isSameDay(d1: Date | null, d2: Date | null): boolean {\n if (!d1 || !d2) return false;\n return (\n d1.getDate() === d2.getDate() &&\n d1.getMonth() === d2.getMonth() &&\n d1.getFullYear() === d2.getFullYear()\n );\n }\n\n private checkIsInRange(\n date: Date,\n start: Date | null,\n end: Date | null,\n hover: Date | null,\n ): boolean {\n if (!start) return false;\n const d = this.zeroOutTime(date);\n const s = this.zeroOutTime(start);\n\n if (end) {\n const e = this.zeroOutTime(end);\n return d > s && d < e;\n }\n\n if (hover) {\n const h = this.zeroOutTime(hover);\n if (h > s) {\n return d > s && d < h;\n }\n }\n\n return false;\n }\n\n private checkIsDayDisabled(date: Date, min: Date | null, max: Date | null): boolean {\n const isOutOfBound = this.isDateOutOfRange(date, min, max);\n if (isOutOfBound) return true;\n\n // Check custom blocked list (robust format-independent parsing)\n if (this.blockedDates()) {\n const isBlocked = this.blockedDates()!.some((bd) => {\n const parsedBd = this.parseISOString(bd) || this.parseVisualDateString(bd);\n return parsedBd && this.isSameDay(date, parsedBd);\n });\n if (isBlocked) return true;\n }\n\n // Check custom program callback function\n if (this.disabledDatesFn() && this.disabledDatesFn()!(date)) {\n return true;\n }\n\n return false;\n }\n\n private isDateOutOfRange(date: Date, min: Date | null, max: Date | null): boolean {\n const d = this.zeroOutTime(date);\n if (min) {\n const minD = this.zeroOutTime(min);\n if (d < minD) return true;\n }\n if (max) {\n const maxD = this.zeroOutTime(max);\n if (d > maxD) return true;\n }\n return false;\n }\n\n private zeroOutTime(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n }\n\n private parseISOString(val: string): Date | null {\n if (!val) return null;\n const parts = val.split('-');\n if (parts.length === 3) {\n const year = parseInt(parts[0], 10);\n const month = parseInt(parts[1], 10) - 1;\n const day = parseInt(parts[2], 10);\n if (!isNaN(year) && !isNaN(month) && !isNaN(day)) {\n return new Date(year, month, day);\n }\n }\n return null;\n }\n\n private parseMonthString(val: string): Date | null {\n if (!val) return null;\n const parts = val.split('-');\n if (parts.length === 2) {\n const year = parseInt(parts[0], 10);\n const month = parseInt(parts[1], 10) - 1;\n if (!isNaN(year) && !isNaN(month)) {\n return new Date(year, month, 1);\n }\n }\n return null;\n }\n\n private parseDateTimeString(val: string): Date | null {\n if (!val) return null;\n const parts = val.split(' ');\n if (parts.length === 2) {\n const datePart = this.parseISOString(parts[0]) || this.parseVisualDateString(parts[0]);\n const timeParts = parts[1].split(':');\n if (datePart && timeParts.length === 2) {\n const hh = parseInt(timeParts[0], 10);\n const mm = parseInt(timeParts[1], 10);\n if (!isNaN(hh) && !isNaN(mm)) {\n return new Date(datePart.getFullYear(), datePart.getMonth(), datePart.getDate(), hh, mm);\n }\n }\n }\n return this.parseISOString(val) || this.parseVisualDateString(val);\n }\n\n private parseTimeString(val: string): { hour: number; minute: number } | null {\n if (!val) return null;\n // 1. Try 12-hour format: 'hh:mm AM' or 'hh:mm PM'\n const match12 = val.match(/^(\\d{1,2}):(\\d{2})\\s*(AM|PM|am|pm)$/i);\n if (match12) {\n let hh = parseInt(match12[1], 10);\n const mm = parseInt(match12[2], 10);\n const ampm = match12[3].toUpperCase();\n if (hh >= 1 && hh <= 12 && mm >= 0 && mm <= 59) {\n if (ampm === 'PM' && hh < 12) hh += 12;\n if (ampm === 'AM' && hh === 12) hh = 0;\n return { hour: hh, minute: mm };\n }\n }\n // 2. Try 24-hour format: 'HH:mm'\n const match24 = val.match(/^(\\d{1,2}):(\\d{2})$/);\n if (match24) {\n const hh = parseInt(match24[1], 10);\n const mm = parseInt(match24[2], 10);\n if (hh >= 0 && hh <= 23 && mm >= 0 && mm <= 59) {\n return { hour: hh, minute: mm };\n }\n }\n return null;\n }\n\n /**\n * Parses a formatted date string using the configured dateFormat pattern.\n * Leverages any separator (like /, -, .) in the pattern to split and match\n * year, month, and day elements correctly.\n */\n private parseVisualDateString(val: string): Date | null {\n if (!val) return null;\n const pattern = this.dateFormat().toLowerCase();\n\n // Extract first non-alphanumeric separator in the pattern\n const separatorMatch = pattern.match(/[^dmy\\s]/);\n const separator = separatorMatch ? separatorMatch[0] : '/';\n\n const patternParts = pattern.split(separator);\n const valParts = val.split(separator);\n\n if (patternParts.length !== 3 || valParts.length !== 3) {\n return this.parseDateFallback(val);\n }\n\n let day = NaN;\n let month = NaN;\n let year = NaN;\n\n for (let i = 0; i < 3; i++) {\n const pat = patternParts[i].trim();\n const num = parseInt(valParts[i].trim(), 10);\n if (isNaN(num)) return null;\n\n if (pat.includes('d')) {\n day = num;\n } else if (pat.includes('m')) {\n month = num - 1; // 0-indexed\n } else if (pat.includes('y')) {\n year = num;\n if (pat.length === 2) {\n // Handle 2-digit year transition logic\n const currentYear = new Date().getFullYear();\n const baseYear = Math.floor(currentYear / 100) * 100;\n year = baseYear + num;\n }\n }\n }\n\n if (!isNaN(day) && !isNaN(month) && !isNaN(year) && year > 1000) {\n const d = new Date(year, month, day);\n if (d.getDate() === day && d.getMonth() === month && d.getFullYear() === year) {\n return d;\n }\n }\n\n return null;\n }\n\n /**\n * Fallback parser for standard visual formats if the custom pattern split fails.\n */\n private parseDateFallback(val: string): Date | null {\n // Try DD/MM/YYYY\n const partsSlash = val.split('/');\n if (partsSlash.length === 3) {\n const day = parseInt(partsSlash[0], 10);\n const month = parseInt(partsSlash[1], 10) - 1;\n const year = parseInt(partsSlash[2], 10);\n if (!isNaN(day) && !isNaN(month) && !isNaN(year)) {\n const d = new Date(year, month, day);\n if (d.getDate() === day && d.getMonth() === month && d.getFullYear() === year) {\n return d;\n }\n }\n }\n // Try YYYY-MM-DD\n const partsDash = val.split('-');\n if (partsDash.length === 3) {\n const year = parseInt(partsDash[0], 10);\n const month = parseInt(partsDash[1], 10) - 1;\n const day = parseInt(partsDash[2], 10);\n if (!isNaN(day) && !isNaN(month) && !isNaN(year)) {\n const d = new Date(year, month, day);\n if (d.getDate() === day && d.getMonth() === month && d.getFullYear() === year) {\n return d;\n }\n }\n }\n return null;\n }\n\n /**\n * Formats a Date object into a string based on a given pattern (e.g. DD/MM/YYYY).\n * Supports tokens: YYYY (4-digit year), YY (2-digit year), MM (2-digit month),\n * DD (2-digit day), D (1 or 2-digit day), M (1 or 2-digit month).\n */\n private formatDateByPattern(date: Date, pattern: string): string {\n const year = date.getFullYear();\n const month = date.getMonth() + 1;\n const day = date.getDate();\n\n const yyyy = String(year);\n const yy = yyyy.slice(-2);\n const mm = String(month).padStart(2, '0');\n const m = String(month);\n const dd = String(day).padStart(2, '0');\n const d = String(day);\n\n let result = pattern;\n\n // 1. Year replacements\n result = result.replace(/YYYY/g, yyyy).replace(/yyyy/g, yyyy);\n result = result.replace(/YY/g, yy).replace(/yy/g, yy);\n\n // 2. Month replacements (MM first, then single M)\n result = result.replace(/MM/g, mm).replace(/mm/g, mm);\n result = result.replace(/(?<![M])M(?![M])/g, m).replace(/(?<![m])m(?![m])/g, m);\n\n // 3. Day replacements (DD first, then single D)\n result = result.replace(/DD/g, dd).replace(/dd/g, dd);\n result = result.replace(/(?<![D])D(?![D])/g, d).replace(/(?<![d])d(?![d])/g, d);\n\n return result;\n }\n\n private formatDateToString(date: Date | null): string {\n if (!date) return '';\n return this.formatDateByPattern(date, this.dateFormat());\n }\n\n private formatMonthToString(date: Date | null): string {\n if (!date) return '';\n const y = date.getFullYear();\n const m = String(date.getMonth() + 1).padStart(2, '0');\n return `${y}-${m}`;\n }\n\n private formatDateTimeToString(date: Date | null): string {\n if (!date) return '';\n const dt = this.formatDateToString(date);\n const hh = String(date.getHours()).padStart(2, '0');\n const mm = String(date.getMinutes()).padStart(2, '0');\n return `${dt} ${hh}:${mm}`;\n }\n\n private formatDateVisual(date: Date): string {\n return this.formatDateByPattern(date, this.dateFormat());\n }\n}\n","<div [class]=\"computedClasses()\">\n <!-- Input Container -->\n <div class=\"enl-date-picker__input-wrapper\">\n <input\n [id]=\"inputId()\"\n type=\"text\"\n class=\"enl-date-picker__input\"\n [placeholder]=\"computedPlaceholder()\"\n [value]=\"displayText()\"\n [disabled]=\"isDisabled()\"\n [readOnly]=\"readonly()\"\n [required]=\"required()\"\n (focus)=\"handleFocus()\"\n (blur)=\"handleBlur()\"\n (input)=\"handleInputChange($event)\"\n [attr.aria-invalid]=\"isError() || null\"\n [attr.aria-required]=\"required() || null\"\n [attr.aria-expanded]=\"isOpen()\"\n aria-haspopup=\"grid\"\n />\n <button\n type=\"button\"\n class=\"enl-date-picker__toggle-btn\"\n [disabled]=\"isDisabled() || readonly()\"\n (click)=\"toggleCalendar()\"\n aria-label=\"Abrir calendario\"\n >\n <enl-icon name=\"calendar\" size=\"sm\" class=\"enl-date-picker__icon\" />\n </button>\n </div>\n\n <!-- Calendar Floating Popover -->\n @if (isOpen()) {\n <div\n [class]=\"\n 'enl-date-picker__calendar' +\n (mode() === 'time' ? ' enl-date-picker__calendar--time-only' : '')\n \"\n role=\"dialog\"\n aria-label=\"Calendario\"\n >\n <!-- TIME ONLY SELECTOR VIEW -->\n @if (mode() === 'time') {\n <div class=\"enl-calendar__time-picker-only\">\n <!-- Hour Control (Horizontal layout) -->\n <div class=\"enl-time-picker__control\">\n <!-- Increment Hour (DOM Index 0 for tests) -->\n <button\n type=\"button\"\n class=\"enl-time-picker__btn enl-time-picker__btn--inc\"\n (click)=\"adjustHour(1)\"\n aria-label=\"Incrementar hora\"\n >\n <enl-icon name=\"chevron-right\" size=\"xs\" />\n </button>\n <!-- Decrement Hour (DOM Index 1 for tests) -->\n <button\n type=\"button\"\n class=\"enl-time-picker__btn enl-time-picker__btn--dec\"\n (click)=\"adjustHour(-1)\"\n aria-label=\"Disminuir hora\"\n >\n <enl-icon name=\"chevron-left\" size=\"xs\" />\n </button>\n <span class=\"enl-time-picker__value\">\n {{ padTime(hourFormat() === '12' ? selectedHour() % 12 || 12 : selectedHour()) }}\n </span>\n </div>\n\n <span class=\"enl-time-picker__separator\">:</span>\n\n <!-- Minute Control (Horizontal layout) -->\n <div class=\"enl-time-picker__control\">\n <!-- Increment Minute (DOM Index 2 for tests) -->\n <button\n type=\"button\"\n class=\"enl-time-picker__btn enl-time-picker__btn--inc\"\n (click)=\"adjustMinute(1)\"\n aria-label=\"Incrementar minutos\"\n >\n <enl-icon name=\"chevron-right\" size=\"xs\" />\n </button>\n <!-- Decrement Minute (DOM Index 3 for tests) -->\n <button\n type=\"button\"\n class=\"enl-time-picker__btn enl-time-picker__btn--dec\"\n (click)=\"adjustMinute(-1)\"\n aria-label=\"Disminuir minutos\"\n >\n <enl-icon name=\"chevron-left\" size=\"xs\" />\n </button>\n <span class=\"enl-time-picker__value\">{{ padTime(selectedMinute()) }}</span>\n </div>\n\n <!-- AM/PM Toggle Button -->\n @if (hourFormat() === '12') {\n <button\n type=\"button\"\n class=\"enl-time-picker__ampm-btn\"\n (click)=\"toggleAmPm()\"\n aria-label=\"Cambiar AM/PM\"\n >\n {{ selectedHour() >= 12 ? 'PM' : 'AM' }}\n </button>\n }\n\n <button type=\"button\" class=\"enl-time-picker__confirm\" (click)=\"confirmTimeOnly()\">\n Ok\n </button>\n </div>\n }\n\n <!-- MONTH ONLY SELECTOR VIEW -->\n @else if (mode() === 'month') {\n <div class=\"enl-calendar__header\">\n <button\n type=\"button\"\n class=\"enl-calendar__nav-btn\"\n (click)=\"prevYear($event)\"\n aria-label=\"Año anterior\"\n >\n <enl-icon name=\"chevron-left\" size=\"sm\" />\n </button>\n <span class=\"enl-calendar__month-year\">\n {{ viewYear() }}\n </span>\n <button\n type=\"button\"\n class=\"enl-calendar__nav-btn\"\n (click)=\"nextYear($event)\"\n aria-label=\"Año siguiente\"\n >\n <enl-icon name=\"chevron-right\" size=\"sm\" />\n </button>\n </div>\n\n <div class=\"enl-calendar__months-grid\" role=\"grid\">\n @for (monthName of monthNames; track monthName; let i = $index) {\n <button\n type=\"button\"\n class=\"enl-calendar__month-btn\"\n [class.enl-calendar__month-btn--selected]=\"isMonthSelected(i)\"\n (click)=\"selectMonth(i)\"\n role=\"gridcell\"\n >\n {{ monthName | slice: 0 : 3 }}\n </button>\n }\n </div>\n }\n\n <!-- DEFAULT DAY SELECTOR AND RANGE VIEWS -->\n @else {\n <!-- Calendar Header -->\n <div class=\"enl-calendar__header\">\n <button\n type=\"button\"\n class=\"enl-calendar__nav-btn\"\n (click)=\"prevMonth($event)\"\n aria-label=\"Mes anterior\"\n >\n <enl-icon name=\"chevron-left\" size=\"sm\" />\n </button>\n <span class=\"enl-calendar__month-year\">\n {{ monthNames[viewMonth()] }} {{ viewYear() }}\n </span>\n <button\n type=\"button\"\n class=\"enl-calendar__nav-btn\"\n (click)=\"nextMonth($event)\"\n aria-label=\"Mes siguiente\"\n >\n <enl-icon name=\"chevron-right\" size=\"sm\" />\n </button>\n </div>\n\n <!-- Days of Week Headers -->\n <div class=\"enl-calendar__weekdays\">\n @for (dayName of dayNames; track dayName) {\n <span class=\"enl-calendar__weekday\">{{ dayName }}</span>\n }\n </div>\n\n <!-- Calendar Days Grid -->\n <div class=\"enl-calendar__days-grid\" role=\"grid\">\n @for (day of calendarDays(); track day.date.toISOString()) {\n <button\n type=\"button\"\n class=\"enl-calendar__day\"\n [class.enl-calendar__day--muted]=\"!day.isCurrentMonth\"\n [class.enl-calendar__day--selected]=\"day.isSelected\"\n [class.enl-calendar__day--today]=\"day.isToday\"\n [class.enl-calendar__day--disabled]=\"day.isDisabled\"\n [class.enl-calendar__day--range-start]=\"day.isRangeStart\"\n [class.enl-calendar__day--range-end]=\"day.isRangeEnd\"\n [class.enl-calendar__day--in-range]=\"day.isInRange\"\n [disabled]=\"day.isDisabled\"\n (click)=\"selectDay(day)\"\n (mouseenter)=\"handleDayMouseEnter(day.date)\"\n [attr.aria-selected]=\"day.isSelected || day.isRangeStart || day.isRangeEnd || null\"\n role=\"gridcell\"\n >\n {{ day.dayNumber }}\n </button>\n }\n </div>\n\n <!-- TIME PICKER INTEGRATION AT FOOTER -->\n @if (showTime() && mode() === 'single') {\n <div class=\"enl-calendar__time-picker\">\n <div class=\"enl-time-picker__label\">Horario:</div>\n\n <div class=\"enl-time-picker__adjuster\">\n <!-- Hour Control (Horizontal layout) -->\n <div class=\"enl-time-picker__control\">\n <!-- Increment Hour (DOM Index 0 for tests) -->\n <button\n type=\"button\"\n class=\"enl-time-picker__btn enl-time-picker__btn--inc\"\n (click)=\"adjustHour(1)\"\n aria-label=\"Incrementar hora\"\n >\n <enl-icon name=\"chevron-right\" size=\"xs\" />\n </button>\n <!-- Decrement Hour (DOM Index 1 for tests) -->\n <button\n type=\"button\"\n class=\"enl-time-picker__btn enl-time-picker__btn--dec\"\n (click)=\"adjustHour(-1)\"\n aria-label=\"Disminuir hora\"\n >\n <enl-icon name=\"chevron-left\" size=\"xs\" />\n </button>\n <span class=\"enl-time-picker__value\">{{ padTime(selectedHour()) }}</span>\n </div>\n\n <span class=\"enl-time-picker__separator\">:</span>\n\n <!-- Minute Control (Horizontal layout) -->\n <div class=\"enl-time-picker__control\">\n <!-- Increment Minute (DOM Index 2 for tests) -->\n <button\n type=\"button\"\n class=\"enl-time-picker__btn enl-time-picker__btn--inc\"\n (click)=\"adjustMinute(1)\"\n aria-label=\"Incrementar minutos\"\n >\n <enl-icon name=\"chevron-right\" size=\"xs\" />\n </button>\n <!-- Decrement Minute (DOM Index 3 for tests) -->\n <button\n type=\"button\"\n class=\"enl-time-picker__btn enl-time-picker__btn--dec\"\n (click)=\"adjustMinute(-1)\"\n aria-label=\"Disminuir minutos\"\n >\n <enl-icon name=\"chevron-left\" size=\"xs\" />\n </button>\n <span class=\"enl-time-picker__value\">{{ padTime(selectedMinute()) }}</span>\n </div>\n </div>\n\n <button\n type=\"button\"\n class=\"enl-time-picker__confirm\"\n [disabled]=\"!selectedDate()\"\n (click)=\"confirmDateTime()\"\n >\n Ok\n </button>\n </div>\n }\n }\n </div>\n }\n</div>\n","import { Component, ChangeDetectionStrategy, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { EnlAvatarComponent } from '../../atoms/avatar/avatar.component';\nimport { EnlBadgeComponent } from '../../atoms/badge/badge.component';\nimport { BadgeVariant } from '../../atoms/badge/badge.types';\nimport { AvatarShape } from '../../atoms/avatar/avatar.types';\n\n@Component({\n selector: 'enl-card-header',\n standalone: true,\n imports: [CommonModule, EnlAvatarComponent, EnlBadgeComponent],\n templateUrl: './card-header.component.html',\n styleUrl: './card-header.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EnlCardHeaderComponent {\n readonly title = input.required<string>();\n readonly subtitle = input<string | undefined>(undefined);\n readonly avatarSrc = input<string | undefined>(undefined);\n readonly avatarInitials = input<string | undefined>(undefined);\n readonly avatarShape = input<AvatarShape>('circle');\n readonly badgeText = input<string | undefined>(undefined);\n readonly badgeVariant = input<BadgeVariant>('info');\n}\n","<div class=\"enl-card-header\">\n <div class=\"enl-card-header__left\">\n @if (avatarSrc() || avatarInitials()) {\n <enl-avatar\n [src]=\"avatarSrc()\"\n [initials]=\"avatarInitials() || ''\"\n [shape]=\"avatarShape()\"\n size=\"md\"\n class=\"enl-card-header__avatar\"\n ></enl-avatar>\n }\n <div class=\"enl-card-header__content\">\n <div class=\"enl-card-header__title-row\">\n <span class=\"enl-card-header__title\">\n {{ title() }}\n </span>\n @if (badgeText()) {\n <enl-badge [variant]=\"badgeVariant()\" size=\"sm\" class=\"enl-card-header__badge\">\n {{ badgeText() }}\n </enl-badge>\n }\n </div>\n @if (subtitle()) {\n <span class=\"enl-card-header__subtitle\">\n {{ subtitle() }}\n </span>\n }\n </div>\n </div>\n <div class=\"enl-card-header__actions\">\n <ng-content select=\"[actions]\"></ng-content>\n </div>\n</div>\n","import { Component, ChangeDetectionStrategy, input, output, computed } from '@angular/core';\n\n@Component({\n selector: 'enl-card',\n standalone: true,\n imports: [],\n templateUrl: './card.component.html',\n styleUrl: './card.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EnlCardComponent {\n readonly shadow = input<'none' | 'sm' | 'md' | 'lg'>('sm');\n readonly bordered = input<boolean>(true);\n readonly interactive = input<boolean>(false);\n readonly padding = input<'none' | 'sm' | 'md' | 'lg'>('md');\n\n readonly cardClick = output<Event>();\n\n readonly computedClasses = computed(() => {\n const base = 'enl-card';\n return [\n base,\n `${base}--shadow-${this.shadow()}`,\n this.bordered() ? `${base}--bordered` : '',\n this.interactive() ? `${base}--interactive` : '',\n `${base}--padding-${this.padding()}`,\n ]\n .filter(Boolean)\n .join(' ');\n });\n\n protected onCardClick(event: Event): void {\n if (this.interactive()) {\n if (event instanceof KeyboardEvent) {\n if (event.key === ' ' || event.key === 'Enter') {\n event.preventDefault();\n this.cardClick.emit(event);\n }\n } else {\n this.cardClick.emit(event);\n }\n }\n }\n}\n","<div\n [class]=\"computedClasses()\"\n (click)=\"onCardClick($event)\"\n [attr.tabindex]=\"interactive() ? 0 : null\"\n [attr.role]=\"interactive() ? 'button' : null\"\n (keydown.enter)=\"onCardClick($event)\"\n (keydown.space)=\"onCardClick($event)\"\n>\n <!-- Slot Cabecera -->\n <ng-content select=\"enl-card-header, [header]\"></ng-content>\n\n <!-- Slot Cuerpo/Contenido -->\n <div class=\"enl-card__content\">\n <ng-content></ng-content>\n </div>\n\n <!-- Slot Pie de Página -->\n <ng-content select=\"[footer]\"></ng-content>\n</div>\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n signal,\n forwardRef,\n computed,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { EnlFormFieldComponent } from '../form-field/form-field.component';\nimport { EnlInputComponent } from '../../atoms/input/input.component';\nimport { EnlIconComponent } from '../../atoms/icon/icon.component';\n\n@Component({\n selector: 'enl-login-form-field',\n standalone: true,\n imports: [CommonModule, FormsModule, EnlFormFieldComponent, EnlInputComponent, EnlIconComponent],\n templateUrl: './login-form-field.component.html',\n styleUrl: './login-form-field.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => EnlLoginFormFieldComponent),\n multi: true,\n },\n ],\n})\nexport class EnlLoginFormFieldComponent implements ControlValueAccessor {\n readonly type = input<'email' | 'password'>('email');\n readonly label = input<string>('');\n readonly placeholder = input<string>('');\n readonly required = input<boolean>(false);\n readonly disabled = input<boolean>(false);\n readonly error = input<string | undefined>(undefined);\n\n protected readonly innerValue = signal<string>('');\n protected readonly isAccessorDisabled = signal<boolean>(false);\n protected readonly isFocused = signal<boolean>(false);\n protected readonly showPassword = signal<boolean>(false);\n\n protected readonly isDisabled = computed(() => this.disabled() || this.isAccessorDisabled());\n protected readonly currentInputType = computed(() => {\n if (this.type() === 'email') return 'email';\n return this.showPassword() ? 'text' : 'password';\n });\n\n protected readonly generatedId = 'enl-login-field-' + Math.random().toString(36).substring(2, 9);\n\n private onChangeFn?: (value: string) => void;\n private onTouchedFn?: () => void;\n\n writeValue(value: unknown): void {\n this.innerValue.set(typeof value === 'string' ? value : '');\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isAccessorDisabled.set(isDisabled);\n }\n\n protected handleInput(val: string): void {\n this.innerValue.set(val);\n if (this.onChangeFn) {\n this.onChangeFn(val);\n }\n }\n\n protected handleFocus(): void {\n this.isFocused.set(true);\n }\n\n protected handleBlur(): void {\n this.isFocused.set(false);\n if (this.onTouchedFn) {\n this.onTouchedFn();\n }\n }\n\n protected togglePasswordVisibility(): void {\n if (this.isDisabled()) return;\n this.showPassword.update((val) => !val);\n }\n}\n","<enl-form-field\n [label]=\"label()\"\n [required]=\"required()\"\n [disabled]=\"isDisabled()\"\n [error]=\"error()\"\n [id]=\"generatedId\"\n>\n <div\n class=\"enl-login-form-field-control\"\n [class.enl-login-form-field-control--focused]=\"isFocused()\"\n [class.enl-login-form-field-control--disabled]=\"isDisabled()\"\n [class.enl-login-form-field-control--error]=\"!!error()\"\n >\n <enl-icon\n [name]=\"type() === 'email' ? 'mail' : 'lock'\"\n size=\"sm\"\n class=\"enl-login-form-field-control__prefix\"\n ></enl-icon>\n\n <enl-input\n [type]=\"currentInputType()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"isDisabled()\"\n [ngModel]=\"innerValue()\"\n (ngModelChange)=\"handleInput($event)\"\n (focus)=\"handleFocus()\"\n (blur)=\"handleBlur()\"\n class=\"enl-login-form-field-control__input\"\n ></enl-input>\n\n @if (type() === 'password' && !isDisabled()) {\n <button\n type=\"button\"\n class=\"enl-login-form-field-control__toggle\"\n (click)=\"togglePasswordVisibility()\"\n [attr.aria-label]=\"showPassword() ? 'Ocultar contraseña' : 'Mostrar contraseña'\"\n >\n <enl-icon [name]=\"showPassword() ? 'eye-off' : 'eye'\" size=\"sm\"></enl-icon>\n </button>\n }\n </div>\n</enl-form-field>\n","import { Component, ChangeDetectionStrategy, input, output, computed } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { EnlButtonComponent } from '../../atoms/button/button.component';\nimport { EnlSelectComponent } from '../../atoms/select/select.component';\n\n@Component({\n selector: 'enl-paginator',\n standalone: true,\n imports: [FormsModule, EnlButtonComponent, EnlSelectComponent],\n templateUrl: './paginator.component.html',\n styleUrl: './paginator.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EnlPaginatorComponent {\n readonly currentPage = input<number>(1);\n readonly totalPages = input<number>(1);\n readonly pageSize = input<number>(8);\n readonly pageSizeOptions = input<readonly number[] | number[]>([5, 8, 15, 25]);\n readonly totalItems = input<number>(0);\n\n readonly pageChange = output<number>();\n readonly pageSizeChange = output<number>();\n\n readonly rangeStart = computed(() => {\n if (this.totalItems() === 0) return 0;\n return (this.currentPage() - 1) * this.pageSize() + 1;\n });\n\n readonly rangeEnd = computed(() => {\n return Math.min(this.currentPage() * this.pageSize(), this.totalItems());\n });\n\n readonly pageNumbers = computed(() => {\n const total = this.totalPages();\n const current = this.currentPage();\n if (total <= 7) return Array.from({ length: total }, (_, i) => i + 1);\n const pages: (number | '...')[] = [1];\n if (current > 3) pages.push('...');\n for (let i = Math.max(2, current - 1); i <= Math.min(total - 1, current + 1); i++)\n pages.push(i);\n if (current < total - 2) pages.push('...');\n pages.push(total);\n return pages;\n });\n\n goToPage(p: number | '...'): void {\n if (p === '...' || p < 1 || p > this.totalPages() || p === this.currentPage()) return;\n this.pageChange.emit(p);\n }\n\n onPageSizeSelect(value: string | number): void {\n const size = Number(value);\n this.pageSizeChange.emit(size);\n }\n}\n","<div class=\"enl-paginator\">\n <div class=\"enl-paginator__info\">\n Mostrando <strong>{{ rangeStart() }}–{{ rangeEnd() }}</strong> de\n <strong>{{ totalItems() }}</strong> registros\n </div>\n\n <div class=\"enl-paginator__controls\">\n <enl-button\n variant=\"ghost\"\n size=\"sm\"\n [iconOnly]=\"true\"\n iconLeft=\"chevron-left\"\n [disabled]=\"currentPage() === 1\"\n (click)=\"goToPage(currentPage() - 1)\"\n ariaLabel=\"Página anterior\"\n >\n </enl-button>\n\n @for (p of pageNumbers(); track $index) {\n @if (p === '...') {\n <span class=\"enl-paginator-ellipsis\">…</span>\n } @else {\n <enl-button\n [variant]=\"currentPage() === p ? 'primary' : 'ghost'\"\n size=\"sm\"\n (click)=\"goToPage(p)\"\n [ariaLabel]=\"'Página ' + p\"\n [attr.aria-current]=\"currentPage() === p ? 'page' : null\"\n >\n {{ p }}\n </enl-button>\n }\n }\n\n <enl-button\n variant=\"ghost\"\n size=\"sm\"\n [iconOnly]=\"true\"\n iconLeft=\"chevron-right\"\n [disabled]=\"currentPage() === totalPages()\"\n (click)=\"goToPage(currentPage() + 1)\"\n ariaLabel=\"Página siguiente\"\n >\n </enl-button>\n </div>\n\n <div class=\"enl-paginator__size\">\n <label for=\"enl-paginator-select\" class=\"enl-paginator__size-label\">Filas:</label>\n <enl-select\n id=\"enl-paginator-select\"\n size=\"sm\"\n [showSelectedIcon]=\"false\"\n [ngModel]=\"pageSize().toString()\"\n (ngModelChange)=\"onPageSizeSelect($event)\"\n >\n @for (opt of pageSizeOptions(); track opt) {\n <option [value]=\"opt.toString()\">{{ opt }}</option>\n }\n </enl-select>\n </div>\n</div>\n","import { Component, ChangeDetectionStrategy, input, computed } from '@angular/core';\n\n@Component({\n selector: 'enl-stat-card',\n standalone: true,\n imports: [],\n templateUrl: './stat-card.component.html',\n styleUrl: './stat-card.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EnlStatCardComponent {\n readonly label = input.required<string>();\n readonly value = input.required<number | string>();\n readonly variant = input<'primary' | 'success' | 'secondary' | 'danger'>('primary');\n\n readonly computedClasses = computed(() => {\n const base = 'enl-stat-card';\n return [base, `${base}--${this.variant()}`].filter(Boolean).join(' ');\n });\n\n readonly valueClasses = computed(() => {\n const base = 'enl-stat-card__value';\n return [base, `${base}--${this.variant()}`].filter(Boolean).join(' ');\n });\n\n readonly barClasses = computed(() => {\n const base = 'enl-stat-card__bar';\n return [base, `${base}--${this.variant()}`].filter(Boolean).join(' ');\n });\n}\n","<div [class]=\"computedClasses()\">\n <span [class]=\"valueClasses()\">{{ value() }}</span>\n <span class=\"enl-stat-card__label\">{{ label() }}</span>\n <div [class]=\"barClasses()\"></div>\n</div>\n","import { Component, ChangeDetectionStrategy, input, computed } from '@angular/core';\n\n@Component({\n selector: 'enl-icon-field',\n standalone: true,\n imports: [],\n templateUrl: './icon-field.component.html',\n styleUrl: './icon-field.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EnlIconFieldComponent {\n readonly iconPosition = input<'left' | 'right' | 'both'>('left');\n\n readonly computedClasses = computed(() => {\n const base = 'enl-icon-field';\n return [base, `${base}--${this.iconPosition()}`].filter(Boolean).join(' ');\n });\n}\n","<div [class]=\"computedClasses()\">\n <ng-content></ng-content>\n</div>\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n Component,\n ChangeDetectionStrategy,\n forwardRef,\n input,\n signal,\n computed,\n inject,\n ElementRef,\n HostListener,\n EventEmitter,\n Output,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { ENL_FORM_FIELD } from '../../tokens/form-field.token';\n\n@Component({\n selector: 'enl-multi-select',\n standalone: true,\n imports: [FormsModule],\n templateUrl: './multi-select.component.html',\n styleUrl: './multi-select.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => EnlMultiSelectComponent),\n multi: true,\n },\n ],\n})\nexport class EnlMultiSelectComponent implements ControlValueAccessor {\n readonly id = input<string | undefined>(undefined);\n readonly options = input<any[]>([]);\n readonly optionLabel = input<string | undefined>(undefined);\n readonly optionValue = input<string | undefined>(undefined);\n readonly placeholder = input<string>('Seleccionar...');\n readonly disabled = input<boolean>(false);\n readonly readonly = input<boolean>(false);\n readonly required = input<boolean>(false);\n readonly size = input<'sm' | 'md' | 'lg'>('md');\n readonly error = input<boolean>(false);\n readonly filter = input<boolean>(true);\n readonly filterPlaceholder = input<string>('Buscar...');\n readonly maxSelectedLabels = input<number>(3);\n readonly selectedItemsLabel = input<string>('{0} seleccionados');\n readonly display = input<'comma' | 'chip'>('comma');\n readonly emptyMessage = input<string>('No se encontraron resultados');\n readonly showHeader = input<boolean>(true);\n\n @Output() readonly valueChange = new EventEmitter<any[]>();\n @Output() readonly panelShow = new EventEmitter<void>();\n @Output() readonly panelHide = new EventEmitter<void>();\n\n private readonly formField = inject(ENL_FORM_FIELD, { optional: true });\n private readonly elementRef = inject(ElementRef);\n private readonly generatedId = 'enl-multi-select-' + Math.random().toString(36).substring(2, 9);\n\n readonly inputId = computed(() => this.id() || this.formField?.id() || this.generatedId);\n protected readonly isDisabled = computed(\n () => this.disabled() || this.isAccessorDisabled() || (this.formField?.disabled() ?? false),\n );\n protected readonly isError = computed(() => this.error() || !!this.formField?.error());\n\n protected readonly selectedValues = signal<any[]>([]);\n protected readonly isOpen = signal<boolean>(false);\n protected readonly filterText = signal<string>('');\n protected readonly isAccessorDisabled = signal<boolean>(false);\n protected readonly isTouched = signal<boolean>(false);\n\n private onChangeFn?: (value: any[]) => void;\n private onTouchedFn?: () => void;\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n if (!this.elementRef.nativeElement.contains(event.target)) {\n this.closePanel();\n }\n }\n\n writeValue(value: unknown): void {\n const val = Array.isArray(value) ? value : [];\n this.selectedValues.set(val);\n }\n\n registerOnChange(fn: (value: any[]) => void): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isAccessorDisabled.set(isDisabled);\n }\n\n // Desplegar / Contraer panel\n protected togglePanel(): void {\n if (this.isDisabled() || this.readonly()) return;\n if (this.isOpen()) {\n this.closePanel();\n } else {\n this.openPanel();\n }\n }\n\n protected openPanel(): void {\n if (this.isDisabled() || this.readonly() || this.isOpen()) return;\n this.isOpen.set(true);\n this.filterText.set('');\n this.panelShow.emit();\n }\n\n protected closePanel(): void {\n if (!this.isOpen()) return;\n this.isOpen.set(false);\n this.isTouched.set(true);\n if (this.onTouchedFn) {\n this.onTouchedFn();\n }\n this.panelHide.emit();\n }\n\n // Helpers de opción\n protected getOptionLabel(option: any): string {\n if (option && typeof option === 'object' && this.optionLabel()) {\n return option[this.optionLabel()!];\n }\n return String(option);\n }\n\n protected getOptionValue(option: any): any {\n if (option && typeof option === 'object' && this.optionValue()) {\n return option[this.optionValue()!];\n }\n return option;\n }\n\n protected isSelected(option: any): boolean {\n const val = this.getOptionValue(option);\n return this.selectedValues().includes(val);\n }\n\n // Selección individual\n protected toggleOption(option: any, event?: Event): void {\n if (event) {\n event.stopPropagation();\n event.preventDefault();\n }\n if (this.isDisabled() || this.readonly()) return;\n\n const val = this.getOptionValue(option);\n const current = [...this.selectedValues()];\n const index = current.indexOf(val);\n\n if (index > -1) {\n current.splice(index, 1);\n } else {\n current.push(val);\n }\n\n this.selectedValues.set(current);\n this.emitChange(current);\n }\n\n // Selección masiva (todo / nada)\n protected toggleAll(event?: Event): void {\n if (event) {\n event.stopPropagation();\n event.preventDefault();\n }\n if (this.isDisabled() || this.readonly()) return;\n\n if (this.isAllSelected()) {\n // Deseleccionar todo\n this.selectedValues.set([]);\n this.emitChange([]);\n } else {\n // Seleccionar todo\n const allValues = this.options().map((opt) => this.getOptionValue(opt));\n this.selectedValues.set(allValues);\n this.emitChange(allValues);\n }\n }\n\n private emitChange(value: any[]): void {\n if (this.onChangeFn) {\n this.onChangeFn(value);\n }\n this.valueChange.emit(value);\n }\n\n // Filtrado reactivo computado\n protected readonly filteredOptions = computed(() => {\n const text = this.filterText().toLowerCase().trim();\n const opts = this.options();\n if (!text) return opts;\n return opts.filter((opt) => this.getOptionLabel(opt).toLowerCase().includes(text));\n });\n\n // Cómputo de estados para la casilla \"Seleccionar todo\"\n protected readonly isAllSelected = computed(() => {\n const opts = this.options();\n const selected = this.selectedValues();\n if (opts.length === 0) return false;\n return opts.every((opt) => selected.includes(this.getOptionValue(opt)));\n });\n\n protected readonly isPartiallySelected = computed(() => {\n const selected = this.selectedValues();\n if (selected.length === 0) return false;\n return !this.isAllSelected();\n });\n\n // Representaciones de la selección en el disparador (comas o chips)\n protected readonly selectedOptions = computed(() => {\n const values = this.selectedValues();\n return values.map((val) => {\n const opt = this.options().find((o) => this.getOptionValue(o) === val);\n return {\n label: opt ? this.getOptionLabel(opt) : String(val),\n value: val,\n };\n });\n });\n\n protected readonly visibleChips = computed(() => {\n const opts = this.selectedOptions();\n const max = this.maxSelectedLabels();\n return opts.slice(0, max);\n });\n\n protected readonly extraChipsCount = computed(() => {\n const total = this.selectedOptions().length;\n const max = this.maxSelectedLabels();\n return total > max ? total - max : 0;\n });\n\n protected readonly commaDisplayText = computed(() => {\n const opts = this.selectedOptions();\n if (opts.length === 0) return '';\n if (opts.length > this.maxSelectedLabels()) {\n return this.selectedItemsLabel().replace('{0}', String(opts.length));\n }\n return opts.map((o) => o.label).join(', ');\n });\n\n // Clases CSS dinámicas\n readonly computedWrapperClasses = computed(() => {\n const base = 'enl-multi-select';\n return [\n base,\n `${base}--${this.size()}`,\n this.isOpen() ? `${base}--open` : '',\n this.isDisabled() ? `${base}--disabled` : '',\n this.isError() ? `${base}--error` : '',\n ]\n .filter(Boolean)\n .join(' ');\n });\n}\n","<div [class]=\"computedWrapperClasses()\" [attr.id]=\"inputId()\">\n <!-- Desplegable Trigger -->\n <div\n class=\"enl-multi-select__trigger\"\n (click)=\"togglePanel()\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-disabled]=\"isDisabled()\"\n tabindex=\"0\"\n (keydown.space)=\"$event.preventDefault(); togglePanel()\"\n (keydown.enter)=\"$event.preventDefault(); togglePanel()\"\n >\n <div class=\"enl-multi-select__label-container\">\n @if (selectedValues().length === 0) {\n <span class=\"enl-multi-select__placeholder\">{{ placeholder() }}</span>\n } @else {\n @if (display() === 'comma') {\n <span class=\"enl-multi-select__label\">{{ commaDisplayText() }}</span>\n } @else {\n <div class=\"enl-multi-select__chips\">\n @for (chip of visibleChips(); track chip.value) {\n <div\n class=\"enl-multi-select__chip\"\n (click)=\"$event.stopPropagation()\"\n (keydown)=\"$event.stopPropagation()\"\n role=\"presentation\"\n >\n <span class=\"enl-multi-select__chip-text\">{{ chip.label }}</span>\n <button\n type=\"button\"\n class=\"enl-multi-select__chip-remove\"\n [disabled]=\"isDisabled()\"\n (click)=\"toggleOption({ label: chip.label, value: chip.value }, $event)\"\n tabindex=\"-1\"\n >\n ×\n </button>\n </div>\n }\n @if (extraChipsCount() > 0) {\n <div class=\"enl-multi-select__chip enl-multi-select__chip--extra\">\n <span class=\"enl-multi-select__chip-text\">+{{ extraChipsCount() }}</span>\n </div>\n }\n </div>\n }\n }\n </div>\n\n <!-- Chevron Icon -->\n <div class=\"enl-multi-select__arrow\">\n <svg\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 class=\"enl-multi-select__arrow-icon\"\n >\n <polyline points=\"6 9 12 15 18 9\"></polyline>\n </svg>\n </div>\n </div>\n\n <!-- Panel Desplegable Flotante -->\n @if (isOpen()) {\n <div class=\"enl-multi-select__panel\">\n <!-- Cabecera del Panel (Filtro e Selector Masivo) -->\n @if (showHeader()) {\n <div class=\"enl-multi-select__header\">\n <!-- Casilla Seleccionar Todo -->\n <div\n class=\"enl-multi-select__toggle-all\"\n (click)=\"toggleAll($event)\"\n (keydown.space)=\"toggleAll($event)\"\n (keydown.enter)=\"toggleAll($event)\"\n role=\"button\"\n tabindex=\"0\"\n >\n <div class=\"enl-multi-select__checkbox-wrapper\">\n <input\n type=\"checkbox\"\n class=\"enl-multi-select__checkbox\"\n [checked]=\"isAllSelected()\"\n [indeterminate]=\"isPartiallySelected()\"\n [disabled]=\"isDisabled()\"\n tabindex=\"-1\"\n />\n <span class=\"enl-multi-select__checkbox-box\"></span>\n </div>\n <span class=\"enl-multi-select__toggle-all-label\">Seleccionar todo</span>\n </div>\n\n <!-- Filtro de Búsqueda -->\n @if (filter()) {\n <div\n class=\"enl-multi-select__filter-container\"\n (click)=\"$event.stopPropagation()\"\n (keydown)=\"$event.stopPropagation()\"\n role=\"presentation\"\n >\n <input\n type=\"text\"\n class=\"enl-multi-select__filter-input\"\n [placeholder]=\"filterPlaceholder()\"\n [disabled]=\"isDisabled()\"\n [(ngModel)]=\"filterText\"\n autocomplete=\"off\"\n />\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n class=\"enl-multi-select__filter-icon\"\n >\n <circle cx=\"11\" cy=\"11\" r=\"8\"></circle>\n <line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line>\n </svg>\n </div>\n }\n\n <!-- Botón de Cerrar -->\n <button\n type=\"button\"\n class=\"enl-multi-select__close\"\n (click)=\"closePanel()\"\n tabindex=\"-1\"\n >\n ×\n </button>\n </div>\n }\n\n <!-- Listado de Opciones -->\n <ul class=\"enl-multi-select__items\">\n @for (option of filteredOptions(); track getOptionValue(option)) {\n <li\n class=\"enl-multi-select__item\"\n [class.enl-multi-select__item--selected]=\"isSelected(option)\"\n (click)=\"toggleOption(option, $event)\"\n (keydown.space)=\"toggleOption(option, $event)\"\n (keydown.enter)=\"toggleOption(option, $event)\"\n role=\"option\"\n [attr.aria-selected]=\"isSelected(option)\"\n tabindex=\"0\"\n >\n <div class=\"enl-multi-select__checkbox-wrapper\">\n <input\n type=\"checkbox\"\n class=\"enl-multi-select__checkbox\"\n [checked]=\"isSelected(option)\"\n [disabled]=\"isDisabled()\"\n tabindex=\"-1\"\n />\n <span class=\"enl-multi-select__checkbox-box\"></span>\n </div>\n <span class=\"enl-multi-select__item-label\">{{ getOptionLabel(option) }}</span>\n </li>\n } @empty {\n <li class=\"enl-multi-select__empty\">\n {{ emptyMessage() }}\n </li>\n }\n </ul>\n </div>\n }\n</div>\n","import { Component, ChangeDetectionStrategy, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { EnlTypographyComponent } from '../../atoms/typography/typography.component';\n\n@Component({\n selector: 'enl-page-header',\n standalone: true,\n imports: [CommonModule, EnlTypographyComponent],\n templateUrl: './page-header.component.html',\n styleUrl: './page-header.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EnlPageHeaderComponent {\n readonly title = input.required<string>();\n readonly subtitle = input<string | undefined>(undefined);\n}\n","<div class=\"enl-page-header\">\n <enl-typography variant=\"h2\" weight=\"bold\" class=\"enl-page-header__title\">\n {{ title() }}\n </enl-typography>\n @if (subtitle()) {\n <enl-typography variant=\"body-sm\" color=\"muted\" class=\"enl-page-header__subtitle\">\n {{ subtitle() }}\n </enl-typography>\n }\n</div>\n","import { Component, ChangeDetectionStrategy, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { EnlSkeletonComponent } from '../../atoms/skeleton/skeleton.component';\nimport { EnlCardComponent } from '../card/card.component';\n\n@Component({\n selector: 'enl-skeleton-card',\n standalone: true,\n imports: [CommonModule, EnlSkeletonComponent, EnlCardComponent],\n templateUrl: './skeleton-card.component.html',\n styleUrl: './skeleton-card.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EnlSkeletonCardComponent {\n readonly avatar = input<boolean>(true);\n readonly lines = input<number>(3);\n readonly cardBordered = input<boolean>(true);\n}\n","<enl-card [bordered]=\"cardBordered()\" shadow=\"sm\" class=\"enl-skeleton-card\">\n <div class=\"enl-skeleton-card__body\">\n <!-- Header part: Avatar + Title -->\n @if (avatar()) {\n <div class=\"enl-skeleton-card__header flex items-center gap-3 mb-4\">\n <enl-skeleton shape=\"circle\" width=\"40px\" height=\"40px\" />\n <div class=\"flex-grow flex flex-col gap-2\">\n <enl-skeleton shape=\"line\" width=\"60%\" height=\"16px\" />\n <enl-skeleton shape=\"line\" width=\"40%\" height=\"12px\" />\n </div>\n </div>\n } @else {\n <div class=\"mb-4\">\n <enl-skeleton shape=\"line\" width=\"70%\" height=\"20px\" />\n </div>\n }\n\n <!-- Content Lines -->\n <div class=\"flex flex-col gap-2\">\n @for (line of [].constructor(lines()); track $index) {\n <enl-skeleton shape=\"line\" [width]=\"$last && lines() > 1 ? '50%' : '100%'\" height=\"12px\" />\n }\n </div>\n </div>\n</enl-card>\n","import { Component, ChangeDetectionStrategy, input, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { EnlIconComponent } from '../../atoms/icon/icon.component';\nimport { EnlAvatarComponent } from '../../atoms/avatar/avatar.component';\n\n@Component({\n selector: 'enl-navbar',\n standalone: true,\n imports: [CommonModule, EnlIconComponent, EnlAvatarComponent],\n templateUrl: './navbar.component.html',\n styleUrl: './navbar.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EnlNavbarComponent {\n readonly brandTitle = input.required<string>();\n readonly brandSubtitle = input<string | undefined>(undefined);\n readonly userAvatarSrc = input<string | undefined>(undefined);\n readonly userAvatarInitials = input<string>('');\n readonly showThemeToggle = input<boolean>(true);\n\n readonly userProfileClick = output<void>();\n readonly themeToggleClick = output<void>();\n\n protected onUserProfileClick(): void {\n this.userProfileClick.emit();\n }\n\n protected onThemeToggleClick(): void {\n this.themeToggleClick.emit();\n }\n}\n","<header class=\"enl-navbar\">\n <div class=\"enl-navbar__left\">\n <div class=\"enl-navbar__brand\">\n <span class=\"enl-navbar__brand-title\">{{ brandTitle() }}</span>\n @if (brandSubtitle()) {\n <span class=\"enl-navbar__brand-subtitle\">{{ brandSubtitle() }}</span>\n }\n </div>\n </div>\n\n <div class=\"enl-navbar__center\">\n <ng-content></ng-content>\n </div>\n\n <div class=\"enl-navbar__right\">\n <ng-content select=\"[right-actions]\"></ng-content>\n\n @if (showThemeToggle()) {\n <button\n type=\"button\"\n class=\"enl-navbar__action-btn\"\n (click)=\"onThemeToggleClick()\"\n aria-label=\"Alternar tema de interfaz\"\n >\n <enl-icon name=\"sun\" size=\"md\"></enl-icon>\n </button>\n }\n\n @if (userAvatarSrc() || userAvatarInitials()) {\n <button\n type=\"button\"\n class=\"enl-navbar__profile-btn\"\n (click)=\"onUserProfileClick()\"\n aria-label=\"Ver perfil de usuario\"\n >\n <enl-avatar\n [src]=\"userAvatarSrc()\"\n [initials]=\"userAvatarInitials()\"\n size=\"md\"\n ></enl-avatar>\n </button>\n }\n </div>\n</header>\n","import { Component, ChangeDetectionStrategy, input, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { EnlIconComponent } from '../../atoms/icon/icon.component';\n@Component({\n selector: 'enl-sidebar',\n standalone: true,\n imports: [CommonModule, EnlIconComponent],\n templateUrl: './sidebar.component.html',\n styleUrl: './sidebar.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EnlSidebarComponent {\n readonly collapsed = input<boolean>(false);\n readonly brandTitle = input<string>('EnelarUI');\n readonly userEmail = input<string | undefined>(undefined);\n\n readonly collapsedChange = output<boolean>();\n\n protected toggleCollapse(): void {\n this.collapsedChange.emit(!this.collapsed());\n }\n}\n","<aside class=\"enl-sidebar\" [class.enl-sidebar--collapsed]=\"collapsed()\">\n <div class=\"enl-sidebar__header\">\n @if (!collapsed()) {\n <span class=\"enl-sidebar__brand\">{{ brandTitle() }}</span>\n }\n <button\n type=\"button\"\n class=\"enl-sidebar__toggle-btn\"\n (click)=\"toggleCollapse()\"\n [attr.aria-label]=\"collapsed() ? 'Expandir barra lateral' : 'Colapsar barra lateral'\"\n >\n <enl-icon [name]=\"collapsed() ? 'chevron-right' : 'chevron-left'\" size=\"sm\"></enl-icon>\n </button>\n </div>\n\n <div class=\"enl-sidebar__content\">\n <ng-content></ng-content>\n </div>\n\n @if (userEmail()) {\n <div class=\"enl-sidebar__footer\">\n <enl-icon name=\"user\" size=\"md\" class=\"enl-sidebar__footer-icon\"></enl-icon>\n @if (!collapsed()) {\n <div class=\"enl-sidebar__user-info\">\n <span class=\"enl-sidebar__user-email\">{{ userEmail() }}</span>\n </div>\n }\n </div>\n }\n</aside>\n","import { Component, ChangeDetectionStrategy, input, output, computed } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { EnlCardHeaderComponent } from '../../molecules/card-header/card-header.component';\nimport { EnlButtonComponent } from '../../atoms/button/button.component';\nimport { BadgeVariant } from '../../atoms/badge/badge.types';\n\n@Component({\n selector: 'enl-user-profile-card',\n standalone: true,\n imports: [CommonModule, EnlCardHeaderComponent, EnlButtonComponent],\n templateUrl: './user-profile-card.component.html',\n styleUrl: './user-profile-card.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EnlUserProfileCardComponent {\n readonly name = input.required<string>();\n readonly email = input<string | undefined>(undefined);\n readonly role = input<string | undefined>(undefined);\n readonly avatarSrc = input<string | undefined>(undefined);\n readonly avatarInitials = input<string>('');\n readonly status = input<'online' | 'offline' | 'away'>('online');\n\n readonly actionClick = output<string>();\n\n protected readonly badgeVariant = computed<BadgeVariant>(() => {\n switch (this.status()) {\n case 'online':\n return 'success';\n case 'away':\n return 'warning';\n case 'offline':\n default:\n return 'secondary';\n }\n });\n\n protected readonly badgeLabel = computed<string>(() => {\n switch (this.status()) {\n case 'online':\n return 'Conectado';\n case 'away':\n return 'Ausente';\n case 'offline':\n default:\n return 'Desconectado';\n }\n });\n\n protected triggerAction(action: string): void {\n this.actionClick.emit(action);\n }\n}\n","<div class=\"enl-user-profile-card\">\n <div class=\"enl-user-profile-card__header\">\n <enl-card-header\n [title]=\"name()\"\n [subtitle]=\"role() || ''\"\n [avatarSrc]=\"avatarSrc()\"\n [avatarInitials]=\"avatarInitials()\"\n [badgeText]=\"badgeLabel()\"\n [badgeVariant]=\"badgeVariant()\"\n ></enl-card-header>\n </div>\n\n @if (email()) {\n <div class=\"enl-user-profile-card__body\">\n <span class=\"enl-user-profile-card__label\">Correo de contacto</span>\n <span class=\"enl-user-profile-card__value\">{{ email() }}</span>\n </div>\n }\n\n <div class=\"enl-user-profile-card__footer\">\n <enl-button\n variant=\"ghost\"\n size=\"sm\"\n (click)=\"triggerAction('message')\"\n class=\"enl-user-profile-card__btn\"\n >\n Mensaje\n </enl-button>\n <enl-button\n variant=\"primary\"\n size=\"sm\"\n (click)=\"triggerAction('profile')\"\n class=\"enl-user-profile-card__btn\"\n >\n Ver Perfil\n </enl-button>\n </div>\n</div>\n","import { Component, ChangeDetectionStrategy, input, output, signal, computed } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { EnlLoginFormFieldComponent } from '../../molecules/login-form-field/login-form-field.component';\nimport { EnlButtonComponent } from '../../atoms/button/button.component';\nimport { EnlSkeletonComponent } from '../../atoms/skeleton/skeleton.component';\n\n@Component({\n selector: 'enl-login-panel',\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n EnlLoginFormFieldComponent,\n EnlButtonComponent,\n EnlSkeletonComponent,\n ],\n templateUrl: './login-panel.component.html',\n styleUrl: './login-panel.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EnlLoginPanelComponent {\n readonly title = input<string>('Iniciar Sesión');\n readonly subtitle = input<string>('Ingresa tus credenciales para acceder al sistema');\n readonly loading = input<boolean>(false);\n readonly skeleton = input<boolean>(false);\n readonly errorMessage = input<string | undefined>(undefined);\n\n readonly loginSubmit = output<{ email: string; password: string }>();\n\n protected readonly emailValue = signal<string>('');\n protected readonly passwordValue = signal<string>('');\n\n protected readonly emailError = signal<string | undefined>(undefined);\n protected readonly passwordError = signal<string | undefined>(undefined);\n\n // Email format validator regex\n private readonly emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/;\n\n protected readonly isFormValid = computed(() => {\n const email = this.emailValue().trim();\n const password = this.passwordValue();\n return this.emailRegex.test(email) && password.length >= 8;\n });\n\n protected handleSubmit(event: Event): void {\n event.preventDefault();\n if (this.loading()) return;\n\n // Reset validations\n this.emailError.set(undefined);\n this.passwordError.set(undefined);\n\n const email = this.emailValue().trim();\n const password = this.passwordValue();\n\n let valid = true;\n\n if (!email) {\n this.emailError.set('El correo electrónico es obligatorio');\n valid = false;\n } else if (!this.emailRegex.test(email)) {\n this.emailError.set('El formato de correo no es válido (ejemplo@enelar.com)');\n valid = false;\n }\n\n if (!password) {\n this.passwordError.set('La contraseña es obligatoria');\n valid = false;\n } else if (password.length < 8) {\n this.passwordError.set('La contraseña debe tener al menos 8 caracteres');\n valid = false;\n }\n\n if (valid) {\n this.loginSubmit.emit({ email, password });\n }\n }\n}\n","@if (skeleton()) {\n <div class=\"enl-login-panel flex flex-col gap-6\">\n <div class=\"enl-login-panel__header flex flex-col gap-2\">\n <enl-skeleton shape=\"line\" width=\"60%\" height=\"24px\"></enl-skeleton>\n <enl-skeleton shape=\"line\" width=\"85%\" height=\"16px\"></enl-skeleton>\n </div>\n <div class=\"flex flex-col gap-5 mt-2\">\n <div class=\"flex flex-col gap-2\">\n <enl-skeleton shape=\"line\" width=\"40%\" height=\"14px\"></enl-skeleton>\n <enl-skeleton\n shape=\"rectangle\"\n width=\"100%\"\n height=\"42px\"\n borderRadius=\"6px\"\n ></enl-skeleton>\n </div>\n <div class=\"flex flex-col gap-2\">\n <enl-skeleton shape=\"line\" width=\"30%\" height=\"14px\"></enl-skeleton>\n <enl-skeleton\n shape=\"rectangle\"\n width=\"100%\"\n height=\"42px\"\n borderRadius=\"6px\"\n ></enl-skeleton>\n </div>\n <enl-skeleton\n shape=\"rectangle\"\n width=\"100%\"\n height=\"46px\"\n borderRadius=\"6px\"\n class=\"mt-4\"\n ></enl-skeleton>\n </div>\n </div>\n} @else {\n <div class=\"enl-login-panel\">\n <div class=\"enl-login-panel__header\">\n <h2 class=\"enl-login-panel__title\">{{ title() }}</h2>\n <p class=\"enl-login-panel__subtitle\">{{ subtitle() }}</p>\n </div>\n\n @if (errorMessage()) {\n <div class=\"enl-login-panel__alert\" role=\"alert\">\n <span class=\"enl-login-panel__alert-text\">{{ errorMessage() }}</span>\n </div>\n }\n\n <form (submit)=\"handleSubmit($event)\" class=\"enl-login-panel__form\">\n <enl-login-form-field\n name=\"email\"\n type=\"email\"\n label=\"Correo Electrónico\"\n placeholder=\"ejemplo@enelar.com\"\n [required]=\"true\"\n [disabled]=\"loading()\"\n [ngModel]=\"emailValue()\"\n (ngModelChange)=\"emailValue.set($event)\"\n [error]=\"emailError()\"\n class=\"enl-login-panel__field\"\n ></enl-login-form-field>\n\n <enl-login-form-field\n name=\"password\"\n type=\"password\"\n label=\"Contraseña\"\n placeholder=\"••••••••\"\n [required]=\"true\"\n [disabled]=\"loading()\"\n [ngModel]=\"passwordValue()\"\n (ngModelChange)=\"passwordValue.set($event)\"\n [error]=\"passwordError()\"\n class=\"enl-login-panel__field\"\n ></enl-login-form-field>\n\n <div class=\"enl-login-panel__actions\">\n <enl-button\n type=\"submit\"\n variant=\"primary\"\n size=\"lg\"\n [loading]=\"loading()\"\n [disabled]=\"loading() || !isFormValid()\"\n class=\"enl-login-panel__submit\"\n >\n Ingresar al Sistema\n </enl-button>\n </div>\n </form>\n </div>\n}\n","import { Component, ChangeDetectionStrategy, input, signal, computed, effect } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { EnlSearchInputComponent } from '../../molecules/search-input/search-input.component';\nimport { EnlBadgeComponent } from '../../atoms/badge/badge.component';\nimport { EnlAvatarComponent } from '../../atoms/avatar/avatar.component';\nimport { EnlIconComponent } from '../../atoms/icon/icon.component';\nimport { EnlPaginatorComponent } from '../../molecules/paginator/paginator.component';\n\nexport interface TableColumn {\n key: string;\n label: string;\n sortable?: boolean;\n type?: 'text' | 'badge' | 'avatar';\n}\n\n@Component({\n selector: 'enl-data-table',\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n EnlSearchInputComponent,\n EnlBadgeComponent,\n EnlAvatarComponent,\n EnlIconComponent,\n EnlPaginatorComponent,\n ],\n templateUrl: './data-table.component.html',\n styleUrl: './data-table.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EnlDataTableComponent {\n readonly columns = input.required<TableColumn[]>();\n readonly data = input.required<Record<string, unknown>[]>();\n readonly pageSize = input<number>(5);\n readonly searchPlaceholder = input<string>('Buscar en la tabla...');\n readonly showSearch = input<boolean>(true);\n\n protected readonly sortColumn = signal<string | null>(null);\n protected readonly sortDirection = signal<'asc' | 'desc'>('asc');\n protected readonly currentPage = signal<number>(1);\n protected readonly currentPageSize = signal<number>(5);\n protected readonly searchQuery = signal<string>('');\n\n constructor() {\n effect(\n () => {\n this.currentPageSize.set(this.pageSize());\n },\n { allowSignalWrites: true },\n );\n }\n\n protected readonly filteredData = computed(() => {\n const q = this.searchQuery().toLowerCase().trim();\n const rows = this.data();\n if (!q) return rows;\n return rows.filter((row) =>\n Object.values(row).some((val) => {\n if (typeof val === 'object' && val !== null) {\n return Object.values(val).some((innerVal) => String(innerVal).toLowerCase().includes(q));\n }\n return String(val).toLowerCase().includes(q);\n }),\n );\n });\n\n protected readonly sortedData = computed(() => {\n const col = this.sortColumn();\n const dir = this.sortDirection();\n const rows = this.filteredData();\n if (!col) return rows;\n\n return [...rows].sort((a, b) => {\n let valA = a[col];\n let valB = b[col];\n\n // Handle avatar objects\n if (typeof valA === 'object' && valA !== null && 'initials' in valA) {\n valA = (valA as { initials: string }).initials;\n }\n if (typeof valB === 'object' && valB !== null && 'initials' in valB) {\n valB = (valB as { initials: string }).initials;\n }\n\n const strA = String(valA ?? '');\n const strB = String(valB ?? '');\n\n return dir === 'asc'\n ? strA.localeCompare(strB, undefined, { numeric: true })\n : strB.localeCompare(strA, undefined, { numeric: true });\n });\n });\n\n protected readonly paginatedData = computed(() => {\n const page = this.currentPage();\n const size = this.currentPageSize();\n const rows = this.sortedData();\n const start = (page - 1) * size;\n return rows.slice(start, start + size);\n });\n\n protected readonly totalPages = computed(() => {\n const rows = this.sortedData();\n const size = this.currentPageSize();\n return Math.max(1, Math.ceil(rows.length / size));\n });\n\n protected handleSearchChange(query: string): void {\n this.searchQuery.set(query);\n this.currentPage.set(1); // Reset to first page\n }\n\n protected handleSort(col: TableColumn): void {\n if (!col.sortable) return;\n const currentCol = this.sortColumn();\n const currentDir = this.sortDirection();\n\n if (currentCol === col.key) {\n this.sortDirection.set(currentDir === 'asc' ? 'desc' : 'asc');\n } else {\n this.sortColumn.set(col.key);\n this.sortDirection.set('asc');\n }\n }\n\n protected onPageSizeChange(size: number): void {\n this.currentPageSize.set(size);\n this.currentPage.set(1);\n }\n\n // Type helper for templates\n protected getAvatarData(value: unknown): { src?: string; initials: string } {\n if (typeof value === 'object' && value !== null) {\n return value as { src?: string; initials: string };\n }\n return { initials: String(value ?? '') };\n }\n}\n","<div class=\"enl-data-table\">\n @if (showSearch()) {\n <div class=\"enl-data-table__search-wrapper\">\n <enl-search-input\n [placeholder]=\"searchPlaceholder()\"\n [ngModel]=\"searchQuery()\"\n (ngModelChange)=\"handleSearchChange($event)\"\n ></enl-search-input>\n </div>\n }\n\n <div class=\"enl-data-table__table-container\">\n <table class=\"enl-data-table__table\">\n <thead>\n <tr>\n @for (col of columns(); track col.key) {\n <th [class.enl-data-table__th--sortable]=\"col.sortable\" (click)=\"handleSort(col)\">\n <div class=\"enl-data-table__th-content\">\n <span class=\"enl-data-table__th-label\">{{ col.label }}</span>\n @if (col.sortable) {\n <span class=\"enl-data-table__sort-indicator\">\n @if (sortColumn() === col.key) {\n <enl-icon\n [name]=\"sortDirection() === 'asc' ? 'chevron-up' : 'chevron-down'\"\n size=\"xs\"\n class=\"enl-data-table__sort-icon enl-data-table__sort-icon--active\"\n ></enl-icon>\n } @else {\n <enl-icon\n name=\"chevron-down\"\n size=\"xs\"\n class=\"enl-data-table__sort-icon enl-data-table__sort-icon--inactive\"\n ></enl-icon>\n }\n </span>\n }\n </div>\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of paginatedData(); track row) {\n <tr class=\"enl-data-table__row\">\n @for (col of columns(); track col.key) {\n <td class=\"enl-data-table__cell\">\n @switch (col.type) {\n @case ('badge') {\n <enl-badge [variant]=\"$any(row[col.key]) || 'primary'\">\n {{ row[col.key] }}\n </enl-badge>\n }\n @case ('avatar') {\n @let avatar = getAvatarData(row[col.key]);\n <enl-avatar\n [src]=\"avatar.src\"\n [initials]=\"avatar.initials\"\n size=\"sm\"\n ></enl-avatar>\n }\n @default {\n {{ row[col.key] }}\n }\n }\n </td>\n }\n </tr>\n } @empty {\n <tr class=\"enl-data-table__empty-row\">\n <td [attr.colspan]=\"columns().length\" class=\"enl-data-table__empty-cell\">\n No se encontraron registros.\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n\n <div class=\"enl-data-table__footer\">\n <enl-paginator\n [currentPage]=\"currentPage()\"\n [totalPages]=\"totalPages()\"\n [pageSize]=\"currentPageSize()\"\n [totalItems]=\"sortedData().length\"\n (pageChange)=\"currentPage.set($event)\"\n (pageSizeChange)=\"onPageSizeChange($event)\"\n ></enl-paginator>\n </div>\n</div>\n","import { Component, ChangeDetectionStrategy, input, output, computed } from '@angular/core';\n\nimport { EnlIconComponent } from '../../atoms/icon/icon.component';\n\n@Component({\n selector: 'enl-modal',\n standalone: true,\n imports: [EnlIconComponent],\n templateUrl: './modal.component.html',\n styleUrl: './modal.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EnlModalComponent {\n readonly show = input<boolean>(false);\n readonly title = input<string | undefined>(undefined);\n readonly subtitle = input<string | undefined>(undefined);\n readonly size = input<'sm' | 'md' | 'lg'>('md');\n readonly variant = input<'default' | 'danger'>('default');\n readonly closeOnBackdrop = input<boolean>(true);\n readonly showCloseButton = input<boolean>(true);\n\n readonly closed = output<void>();\n\n // Computed modal window classes\n readonly computedClasses = computed(() => {\n const base = 'enl-modal';\n return [base, `${base}--${this.size()}`, `${base}--${this.variant()}`]\n .filter(Boolean)\n .join(' ');\n });\n\n handleClose(): void {\n this.closed.emit();\n }\n\n handleBackdropClick(event: MouseEvent): void {\n if (event.target === event.currentTarget && this.closeOnBackdrop()) {\n this.handleClose();\n }\n }\n}\n","@if (show()) {\n <div\n class=\"enl-modal-backdrop\"\n (click)=\"handleBackdropClick($event)\"\n (keydown)=\"(null)\"\n tabindex=\"-1\"\n role=\"dialog\"\n aria-modal=\"true\"\n >\n <div\n [class]=\"computedClasses()\"\n (click)=\"$event.stopPropagation()\"\n (keydown)=\"(null)\"\n tabindex=\"-1\"\n >\n <!-- Header -->\n <div class=\"enl-modal__header\">\n <div class=\"enl-modal__header-info\">\n <div\n class=\"enl-modal__header-icon\"\n [class.enl-modal__header-icon--danger]=\"variant() === 'danger'\"\n >\n @if (variant() === 'danger') {\n ✕\n } @else {\n <ng-content select=\"[header-icon]\"></ng-content>\n }\n </div>\n\n <div class=\"enl-modal__header-text\">\n @if (title()) {\n <h3 class=\"enl-modal__title\">{{ title() }}</h3>\n }\n @if (subtitle()) {\n <p class=\"enl-modal__subtitle\">{{ subtitle() }}</p>\n }\n </div>\n </div>\n @if (showCloseButton()) {\n <button\n type=\"button\"\n class=\"enl-modal__close\"\n (click)=\"handleClose()\"\n aria-label=\"Cerrar modal\"\n >\n <enl-icon name=\"close\" size=\"sm\"></enl-icon>\n </button>\n }\n </div>\n\n <!-- Body -->\n <div class=\"enl-modal__body\">\n <ng-content></ng-content>\n </div>\n\n <!-- Footer -->\n <div class=\"enl-modal__footer\">\n <ng-content select=\"[footer]\"></ng-content>\n </div>\n </div>\n </div>\n}\n","import { Component, ChangeDetectionStrategy, inject } from '@angular/core';\nimport { EnlToastService } from '../../services/toast.service';\n\n@Component({\n selector: 'enl-toast-container',\n standalone: true,\n imports: [],\n templateUrl: './toast-container.component.html',\n styleUrl: './toast-container.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EnlToastContainerComponent {\n protected readonly toastService = inject(EnlToastService);\n protected readonly toasts = this.toastService.toasts;\n\n removeToast(id: number): void {\n this.toastService.remove(id);\n }\n}\n","<div class=\"enl-toast-container\" aria-live=\"polite\">\n @for (toast of toasts(); track toast.id) {\n <div class=\"enl-toast\" [class]=\"'enl-toast--' + toast.type\" role=\"alert\">\n <div class=\"enl-toast__icon\">\n @switch (toast.type) {\n @case ('success') {\n ✓\n }\n @case ('error') {\n ✕\n }\n @case ('warning') {\n ⚠\n }\n @case ('info') {\n ℹ\n }\n }\n </div>\n <span class=\"enl-toast__message\">{{ toast.message }}</span>\n <button\n type=\"button\"\n class=\"enl-toast__close\"\n (click)=\"removeToast(toast.id)\"\n aria-label=\"Cerrar notificación\"\n >\n ✕\n </button>\n </div>\n }\n</div>\n","import { Component, ChangeDetectionStrategy, input, model, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { FormFieldConfig } from './dynamic-form.types';\n\nimport { EnlFormFieldComponent } from '../../molecules/form-field/form-field.component';\nimport { EnlDatePickerComponent } from '../../molecules/date-picker/date-picker.component';\nimport { EnlInputComponent } from '../../atoms/input/input.component';\nimport { EnlPasswordComponent } from '../../atoms/password/password.component';\nimport { EnlInputNumberComponent } from '../../atoms/input-number/input-number.component';\nimport { EnlSelectComponent } from '../../atoms/select/select.component';\nimport { EnlCheckboxComponent } from '../../atoms/checkbox/checkbox.component';\nimport { EnlRadioComponent } from '../../atoms/radio/radio.component';\nimport { EnlTextareaComponent } from '../../atoms/textarea/textarea.component';\nimport { EnlToggleSwitchComponent } from '../../atoms/toggle-switch/toggle-switch.component';\nimport { EnlButtonComponent } from '../../atoms/button/button.component';\n\n@Component({\n selector: 'enl-dynamic-form',\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n EnlFormFieldComponent,\n EnlDatePickerComponent,\n EnlInputComponent,\n EnlPasswordComponent,\n EnlInputNumberComponent,\n EnlSelectComponent,\n EnlCheckboxComponent,\n EnlRadioComponent,\n EnlTextareaComponent,\n EnlToggleSwitchComponent,\n EnlButtonComponent,\n ],\n templateUrl: './dynamic-form.component.html',\n styleUrl: './dynamic-form.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EnlDynamicFormComponent {\n readonly schema = input.required<FormFieldConfig[]>();\n readonly value = model<Record<string, unknown>>({});\n readonly errors = input<Record<string, string>>({});\n readonly disabled = input<boolean>(false);\n readonly loading = input<boolean>(false);\n readonly submitLabel = input<string>('Enviar');\n readonly cancelLabel = input<string>('Cancelar');\n readonly showActions = input<boolean>(true);\n\n readonly formSubmit = output<Record<string, unknown>>();\n readonly formCancel = output<void>();\n readonly valueChange = output<Record<string, unknown>>();\n\n protected handleValueChange(key: string, val: unknown): void {\n const current = { ...this.value() };\n current[key] = val;\n this.value.set(current);\n this.valueChange.emit(current);\n }\n\n protected onSubmit(event: Event): void {\n event.preventDefault();\n if (this.disabled() || this.loading()) return;\n this.formSubmit.emit(this.value());\n }\n\n protected onCancel(): void {\n if (this.disabled()) return;\n this.formCancel.emit();\n }\n}\n","<form (submit)=\"onSubmit($event)\" class=\"enl-dynamic-form grid grid-cols-12 gap-4\">\n @for (field of schema(); track field.key) {\n <div [class]=\"field.gridClass || 'enl-col-12'\">\n @switch (field.type) {\n @case ('text') {\n <enl-form-field\n [label]=\"field.label\"\n [required]=\"!!field.required\"\n [disabled]=\"!!(field.disabled || disabled())\"\n [error]=\"errors()[field.key]\"\n [hint]=\"field.hint\"\n [customId]=\"field.key\"\n >\n <enl-input\n [id]=\"field.key\"\n type=\"text\"\n [placeholder]=\"field.placeholder || ''\"\n [ngModel]=\"value()[field.key]\"\n [ngModelOptions]=\"{ standalone: true }\"\n (ngModelChange)=\"handleValueChange(field.key, $event)\"\n [disabled]=\"!!(field.disabled || disabled())\"\n [required]=\"!!field.required\"\n ></enl-input>\n </enl-form-field>\n }\n @case ('email') {\n <enl-form-field\n [label]=\"field.label\"\n [required]=\"!!field.required\"\n [disabled]=\"!!(field.disabled || disabled())\"\n [error]=\"errors()[field.key]\"\n [hint]=\"field.hint\"\n [customId]=\"field.key\"\n >\n <enl-input\n [id]=\"field.key\"\n type=\"email\"\n [placeholder]=\"field.placeholder || ''\"\n [ngModel]=\"value()[field.key]\"\n [ngModelOptions]=\"{ standalone: true }\"\n (ngModelChange)=\"handleValueChange(field.key, $event)\"\n [disabled]=\"!!(field.disabled || disabled())\"\n [required]=\"!!field.required\"\n ></enl-input>\n </enl-form-field>\n }\n @case ('password') {\n <enl-form-field\n [label]=\"field.label\"\n [required]=\"!!field.required\"\n [disabled]=\"!!(field.disabled || disabled())\"\n [error]=\"errors()[field.key]\"\n [hint]=\"field.hint\"\n [customId]=\"field.key\"\n >\n <enl-password\n [id]=\"field.key\"\n [placeholder]=\"field.placeholder || ''\"\n [ngModel]=\"value()[field.key]\"\n [ngModelOptions]=\"{ standalone: true }\"\n (ngModelChange)=\"handleValueChange(field.key, $event)\"\n [disabled]=\"!!(field.disabled || disabled())\"\n [required]=\"!!field.required\"\n ></enl-password>\n </enl-form-field>\n }\n @case ('number') {\n <enl-form-field\n [label]=\"field.label\"\n [required]=\"!!field.required\"\n [disabled]=\"!!(field.disabled || disabled())\"\n [error]=\"errors()[field.key]\"\n [hint]=\"field.hint\"\n [customId]=\"field.key\"\n >\n <enl-input-number\n [id]=\"field.key\"\n [placeholder]=\"field.placeholder || ''\"\n [ngModel]=\"value()[field.key]\"\n [ngModelOptions]=\"{ standalone: true }\"\n (ngModelChange)=\"handleValueChange(field.key, $event)\"\n [disabled]=\"!!(field.disabled || disabled())\"\n [required]=\"!!field.required\"\n [min]=\"field.min\"\n [max]=\"field.max\"\n ></enl-input-number>\n </enl-form-field>\n }\n @case ('select') {\n <enl-form-field\n [label]=\"field.label\"\n [required]=\"!!field.required\"\n [disabled]=\"!!(field.disabled || disabled())\"\n [error]=\"errors()[field.key]\"\n [hint]=\"field.hint\"\n [customId]=\"field.key\"\n >\n <enl-select\n [id]=\"field.key\"\n [placeholder]=\"field.placeholder || 'Seleccione...'\"\n [ngModel]=\"$any(value()[field.key])?.toString() || ''\"\n [ngModelOptions]=\"{ standalone: true }\"\n (ngModelChange)=\"handleValueChange(field.key, $event)\"\n [disabled]=\"!!(field.disabled || disabled())\"\n [required]=\"!!field.required\"\n >\n @for (opt of field.options || []; track opt.value) {\n <option [value]=\"opt.value.toString()\">{{ opt.label }}</option>\n }\n </enl-select>\n </enl-form-field>\n }\n @case ('checkbox') {\n <enl-form-field\n [required]=\"!!field.required\"\n [disabled]=\"!!(field.disabled || disabled())\"\n [error]=\"errors()[field.key]\"\n [hint]=\"field.hint\"\n [customId]=\"field.key\"\n >\n <enl-checkbox\n [id]=\"field.key\"\n [ngModel]=\"value()[field.key]\"\n [ngModelOptions]=\"{ standalone: true }\"\n (ngModelChange)=\"handleValueChange(field.key, $event)\"\n [disabled]=\"!!(field.disabled || disabled())\"\n [required]=\"!!field.required\"\n [error]=\"!!errors()[field.key]\"\n >\n {{ field.label }}\n </enl-checkbox>\n </enl-form-field>\n }\n @case ('radio') {\n <enl-form-field\n [label]=\"field.label\"\n [required]=\"!!field.required\"\n [disabled]=\"!!(field.disabled || disabled())\"\n [error]=\"errors()[field.key]\"\n [hint]=\"field.hint\"\n [customId]=\"field.key\"\n >\n <div class=\"enl-dynamic-form__radio-group flex flex-col gap-2\">\n @for (opt of field.options || []; track opt.value) {\n <enl-radio\n [id]=\"field.key + '_' + opt.value\"\n [name]=\"field.key\"\n [value]=\"opt.value\"\n [ngModel]=\"value()[field.key]\"\n [ngModelOptions]=\"{ standalone: true }\"\n (ngModelChange)=\"handleValueChange(field.key, $event)\"\n [disabled]=\"!!(field.disabled || disabled())\"\n [required]=\"!!field.required\"\n [error]=\"!!errors()[field.key]\"\n >\n {{ opt.label }}\n </enl-radio>\n }\n </div>\n </enl-form-field>\n }\n @case ('textarea') {\n <enl-form-field\n [label]=\"field.label\"\n [required]=\"!!field.required\"\n [disabled]=\"!!(field.disabled || disabled())\"\n [error]=\"errors()[field.key]\"\n [hint]=\"field.hint\"\n [customId]=\"field.key\"\n >\n <enl-textarea\n [id]=\"field.key\"\n [placeholder]=\"field.placeholder || ''\"\n [ngModel]=\"value()[field.key]\"\n [ngModelOptions]=\"{ standalone: true }\"\n (ngModelChange)=\"handleValueChange(field.key, $event)\"\n [disabled]=\"!!(field.disabled || disabled())\"\n [required]=\"!!field.required\"\n ></enl-textarea>\n </enl-form-field>\n }\n @case ('toggle') {\n <enl-form-field\n [required]=\"!!field.required\"\n [disabled]=\"!!(field.disabled || disabled())\"\n [error]=\"errors()[field.key]\"\n [hint]=\"field.hint\"\n [customId]=\"field.key\"\n >\n <enl-toggle-switch\n [id]=\"field.key\"\n [label]=\"field.label\"\n [ngModel]=\"value()[field.key]\"\n [ngModelOptions]=\"{ standalone: true }\"\n (ngModelChange)=\"handleValueChange(field.key, $event)\"\n [disabled]=\"!!(field.disabled || disabled())\"\n [required]=\"!!field.required\"\n [error]=\"!!errors()[field.key]\"\n ></enl-toggle-switch>\n </enl-form-field>\n }\n @case ('date') {\n <enl-form-field\n [label]=\"field.label\"\n [required]=\"!!field.required\"\n [disabled]=\"!!(field.disabled || disabled())\"\n [error]=\"errors()[field.key]\"\n [hint]=\"field.hint\"\n [customId]=\"field.key\"\n >\n <enl-date-picker\n [id]=\"field.key\"\n [placeholder]=\"field.placeholder || 'Seleccione fecha...'\"\n [ngModel]=\"value()[field.key]\"\n [ngModelOptions]=\"{ standalone: true }\"\n (ngModelChange)=\"handleValueChange(field.key, $event)\"\n [disabled]=\"!!(field.disabled || disabled())\"\n [required]=\"!!field.required\"\n [error]=\"!!errors()[field.key]\"\n ></enl-date-picker>\n </enl-form-field>\n }\n }\n </div>\n }\n\n <!-- Actions -->\n @if (showActions()) {\n <div class=\"col-span-12 flex justify-end gap-3 mt-4\">\n <enl-button variant=\"ghost\" type=\"button\" [disabled]=\"disabled()\" (clicked)=\"onCancel()\">\n {{ cancelLabel() }}\n </enl-button>\n <enl-button variant=\"primary\" type=\"submit\" [disabled]=\"disabled()\" [loading]=\"loading()\">\n {{ submitLabel() }}\n </enl-button>\n </div>\n }\n</form>\n","import { Directive, TemplateRef, inject, input } from '@angular/core';\n\n@Directive({\n selector: '[enlColumnTemplate]',\n standalone: true,\n})\nexport class EnlColumnTemplateDirective {\n readonly templateRef = inject(TemplateRef);\n readonly columnName = input.required<string>({ alias: 'enlColumnTemplate' });\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n signal,\n computed,\n contentChildren,\n viewChild,\n TemplateRef,\n output,\n effect,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { EnlCheckboxComponent } from '../../atoms/checkbox/checkbox.component';\nimport { EnlIconComponent } from '../../atoms/icon/icon.component';\nimport { EnlPaginatorComponent } from '../../molecules/paginator/paginator.component';\nimport { EnlColumnTemplateDirective } from './column-template.directive';\n\nexport interface DynamicTableHeader {\n text: string;\n value: string;\n sortable?: boolean;\n}\n\n@Component({\n selector: 'enl-dynamic-table',\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n EnlCheckboxComponent,\n EnlIconComponent,\n EnlPaginatorComponent,\n ],\n templateUrl: './dynamic-table.component.html',\n styleUrl: './dynamic-table.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EnlDynamicTableComponent {\n // Inputs\n readonly itemsTable = input<Record<string, unknown>[]>([]);\n readonly headerTable = input<DynamicTableHeader[]>([]);\n readonly selectData = input<boolean>(false);\n readonly loading = input<boolean>(false);\n readonly skeletonRows = input<number>(5);\n readonly paginator = input<boolean>(true);\n readonly pageSize = input<number>(5);\n\n // Outputs\n readonly selectedDataChange = output<Record<string, unknown>[]>();\n\n // Internal Signals\n readonly selectedItems = signal<Record<string, unknown>[]>([]);\n readonly sortColumn = signal<string | null>(null);\n readonly sortDirection = signal<'asc' | 'desc'>('asc');\n readonly currentPage = signal<number>(1);\n readonly currentPageSize = signal<number>(5);\n\n // Queries\n readonly columnTemplates = contentChildren(EnlColumnTemplateDirective);\n readonly defaultTemplate = viewChild.required<TemplateRef<unknown>>('defaultTemplate');\n\n constructor() {\n // Sincronizar pageSize inicial\n effect(\n () => {\n this.currentPageSize.set(this.pageSize());\n },\n { allowSignalWrites: true },\n );\n }\n\n // Reactive Template Map\n protected readonly templateMap = computed(() => {\n const templates = this.columnTemplates();\n const map: Record<string, TemplateRef<unknown>> = {};\n for (const t of templates) {\n map[t.columnName()] = t.templateRef;\n }\n return map;\n });\n\n // Reactive Sorted Data\n protected readonly sortedData = computed(() => {\n const col = this.sortColumn();\n const dir = this.sortDirection();\n const rows = this.itemsTable();\n if (!col) return rows;\n\n return [...rows].sort((a, b) => {\n const valA = a[col];\n const valB = b[col];\n\n const strA = String(valA ?? '');\n const strB = String(valB ?? '');\n\n return dir === 'asc'\n ? strA.localeCompare(strB, undefined, { numeric: true })\n : strB.localeCompare(strA, undefined, { numeric: true });\n });\n });\n\n // Reactive Paginated Data\n protected readonly paginatedData = computed(() => {\n const rows = this.sortedData();\n if (!this.paginator()) return rows;\n\n const page = this.currentPage();\n const size = this.currentPageSize();\n const start = (page - 1) * size;\n return rows.slice(start, start + size);\n });\n\n // Reactive Total Pages\n protected readonly totalPages = computed(() => {\n const rows = this.sortedData();\n const size = this.currentPageSize();\n return Math.max(1, Math.ceil(rows.length / size));\n });\n\n // Selection Logic\n protected readonly isAllSelected = computed(() => {\n const rows = this.sortedData();\n const selected = this.selectedItems();\n if (rows.length === 0) return false;\n return rows.every((row) => selected.includes(row));\n });\n\n protected isSelected(row: Record<string, unknown>): boolean {\n return this.selectedItems().includes(row);\n }\n\n protected toggleSelectAll(checked: boolean): void {\n if (checked) {\n const currentSelected = [...this.selectedItems()];\n const rows = this.sortedData();\n for (const r of rows) {\n if (!currentSelected.includes(r)) {\n currentSelected.push(r);\n }\n }\n this.selectedItems.set(currentSelected);\n } else {\n const rows = this.sortedData();\n const nextSelected = this.selectedItems().filter((r) => !rows.includes(r));\n this.selectedItems.set(nextSelected);\n }\n this.selectedDataChange.emit(this.selectedItems());\n }\n\n protected toggleSelectRow(row: Record<string, unknown>, checked: boolean): void {\n const currentSelected = [...this.selectedItems()];\n if (checked) {\n if (!currentSelected.includes(row)) {\n currentSelected.push(row);\n }\n } else {\n const idx = currentSelected.indexOf(row);\n if (idx >= 0) {\n currentSelected.splice(idx, 1);\n }\n }\n this.selectedItems.set(currentSelected);\n this.selectedDataChange.emit(currentSelected);\n }\n\n // Sort Logic\n protected handleSort(col: DynamicTableHeader): void {\n if (col.sortable === false) return;\n const currentCol = this.sortColumn();\n const currentDir = this.sortDirection();\n\n if (currentCol === col.value) {\n this.sortDirection.set(currentDir === 'asc' ? 'desc' : 'asc');\n } else {\n this.sortColumn.set(col.value);\n this.sortDirection.set('asc');\n }\n }\n\n protected onPageSizeChange(size: number): void {\n this.currentPageSize.set(size);\n this.currentPage.set(1);\n }\n\n // Template Fetcher\n getTemplateForColumn(columnName: string): TemplateRef<unknown> {\n return this.templateMap()[columnName] || this.defaultTemplate();\n }\n}\n","<div class=\"enl-dynamic-table\">\n <div class=\"enl-dynamic-table__table-container\">\n <table class=\"enl-dynamic-table__table\">\n <thead>\n <tr>\n <!-- Multiple Selection Header Checkbox -->\n @if (selectData()) {\n <th class=\"enl-dynamic-table__th-select\">\n <enl-checkbox\n [ngModel]=\"isAllSelected()\"\n (ngModelChange)=\"toggleSelectAll($event)\"\n [disabled]=\"loading() || sortedData().length === 0\"\n ></enl-checkbox>\n </th>\n }\n\n <!-- Dynamic Columns Headers -->\n @for (col of headerTable(); track col.value) {\n <th\n [class.enl-dynamic-table__th--sortable]=\"col.sortable !== false\"\n (click)=\"handleSort(col)\"\n >\n <div class=\"enl-dynamic-table__th-content\">\n <span class=\"enl-dynamic-table__th-label\">{{ col.text }}</span>\n @if (col.sortable !== false) {\n <span\n class=\"enl-dynamic-table__sort-indicator\"\n [class.enl-dynamic-table__sort-indicator--active]=\"sortColumn() === col.value\"\n >\n @if (sortColumn() === col.value) {\n <enl-icon\n [name]=\"sortDirection() === 'asc' ? 'chevron-up' : 'chevron-down'\"\n size=\"xs\"\n class=\"enl-dynamic-table__sort-icon enl-dynamic-table__sort-icon--active\"\n ></enl-icon>\n } @else {\n <enl-icon\n name=\"chevron-down\"\n size=\"xs\"\n class=\"enl-dynamic-table__sort-icon enl-dynamic-table__sort-icon--inactive\"\n ></enl-icon>\n }\n </span>\n }\n </div>\n </th>\n }\n </tr>\n </thead>\n <tbody>\n <!-- Loader Skeleton State -->\n @if (loading()) {\n @for (dummy of [].constructor(skeletonRows()); track $index) {\n <tr class=\"enl-dynamic-table__row enl-dynamic-table__row--skeleton\">\n @if (selectData()) {\n <td class=\"enl-dynamic-table__cell\">\n <div class=\"enl-dynamic-table__skeleton-checkbox\"></div>\n </td>\n }\n @for (col of headerTable(); track col.value) {\n <td class=\"enl-dynamic-table__cell\">\n <div class=\"enl-dynamic-table__skeleton-line\"></div>\n </td>\n }\n </tr>\n }\n } @else {\n <!-- Real Data State -->\n @for (row of paginatedData(); track row) {\n <tr\n class=\"enl-dynamic-table__row\"\n [class.enl-dynamic-table__row--selected]=\"isSelected(row)\"\n >\n <!-- Selection Checkbox -->\n @if (selectData()) {\n <td class=\"enl-dynamic-table__cell\">\n <enl-checkbox\n [ngModel]=\"isSelected(row)\"\n (ngModelChange)=\"toggleSelectRow(row, $event)\"\n ></enl-checkbox>\n </td>\n }\n\n <!-- Dynamic Data Cells -->\n @for (col of headerTable(); track col.value) {\n <td class=\"enl-dynamic-table__cell\">\n <ng-container\n *ngTemplateOutlet=\"\n getTemplateForColumn(col.value);\n context: { $implicit: row[col.value], row: row }\n \"\n ></ng-container>\n </td>\n }\n </tr>\n } @empty {\n <!-- Empty State -->\n <tr class=\"enl-dynamic-table__empty-row\">\n <td\n [attr.colspan]=\"headerTable().length + (selectData() ? 1 : 0)\"\n class=\"enl-dynamic-table__empty-cell\"\n >\n No se encontraron registros.\n </td>\n </tr>\n }\n }\n </tbody>\n </table>\n </div>\n\n <!-- Optional Footer Paginator -->\n @if (paginator() && !loading()) {\n <div class=\"enl-dynamic-table__footer\">\n <enl-paginator\n [currentPage]=\"currentPage()\"\n [totalPages]=\"totalPages()\"\n [pageSize]=\"currentPageSize()\"\n [totalItems]=\"sortedData().length\"\n (pageChange)=\"currentPage.set($event)\"\n (pageSizeChange)=\"onPageSizeChange($event)\"\n ></enl-paginator>\n </div>\n }\n</div>\n\n<!-- Default Flat Value Template -->\n<ng-template #defaultTemplate let-item let-row=\"row\">\n {{ item !== undefined && item !== null ? item : '' }}\n</ng-template>\n","import { Component, ChangeDetectionStrategy, input, model, output, computed } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { EnlModalComponent } from '../modal/modal.component';\nimport { EnlButtonComponent } from '../../atoms/button/button.component';\nimport { EnlIconComponent } from '../../atoms/icon/icon.component';\nimport { IconName } from '../../atoms/icon/icon.types';\nimport { ButtonVariant } from '../../atoms/button/button.types';\n\n@Component({\n selector: 'enl-confirm-dialog',\n standalone: true,\n imports: [CommonModule, EnlModalComponent, EnlButtonComponent, EnlIconComponent],\n templateUrl: './confirm-dialog.component.html',\n styleUrl: './confirm-dialog.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EnlConfirmDialogComponent {\n // Visibilidad del diálogo (two-way binding)\n readonly show = model<boolean>(false);\n\n // Textos y configuraciones\n readonly title = input<string>('Confirmar acción');\n readonly message = input<string>('¿Está seguro de continuar?');\n readonly confirmLabel = input<string>('Confirmar');\n readonly cancelLabel = input<string>('Cancelar');\n readonly severity = input<'info' | 'success' | 'warning' | 'danger'>('info');\n readonly loading = input<boolean>(false);\n\n // Emitters\n readonly confirmed = output<void>();\n readonly cancelled = output<void>();\n\n // IconName matching severity\n protected readonly iconName = computed<IconName>(() => {\n switch (this.severity()) {\n case 'success':\n return 'success';\n case 'warning':\n return 'warning';\n case 'danger':\n return 'error';\n case 'info':\n default:\n return 'info';\n }\n });\n\n // ButtonVariant matching severity\n protected readonly confirmButtonVariant = computed<ButtonVariant>(() => {\n switch (this.severity()) {\n case 'danger':\n return 'danger';\n case 'success':\n return 'success';\n case 'warning':\n return 'warn';\n case 'info':\n default:\n return 'primary';\n }\n });\n\n handleConfirm(): void {\n if (this.loading()) return;\n this.confirmed.emit();\n }\n\n handleCancel(): void {\n if (this.loading()) return;\n this.show.set(false);\n this.cancelled.emit();\n }\n}\n","<enl-modal\n [show]=\"show()\"\n [title]=\"title()\"\n [variant]=\"severity() === 'danger' ? 'danger' : 'default'\"\n size=\"sm\"\n (closed)=\"handleCancel()\"\n>\n <!-- Body content projected into default slot -->\n <div class=\"enl-confirm-dialog__body\">\n <div\n class=\"enl-confirm-dialog__icon-wrapper\"\n [class]=\"'enl-confirm-dialog__icon-wrapper--' + severity()\"\n >\n <enl-icon [name]=\"iconName()\" size=\"lg\"></enl-icon>\n </div>\n <div class=\"enl-confirm-dialog__content\">\n <p class=\"enl-confirm-dialog__message\">{{ message() }}</p>\n </div>\n </div>\n\n <!-- Footer actions projected into [footer] slot -->\n <div footer class=\"enl-confirm-dialog__footer\">\n <enl-button variant=\"ghost\" (clicked)=\"handleCancel()\" [disabled]=\"loading()\">\n {{ cancelLabel() }}\n </enl-button>\n <enl-button\n [variant]=\"confirmButtonVariant()\"\n (clicked)=\"handleConfirm()\"\n [loading]=\"loading()\"\n >\n {{ confirmLabel() }}\n </enl-button>\n </div>\n</enl-modal>\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n signal,\n computed,\n contentChildren,\n output,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport {\n EnlDynamicTableComponent,\n DynamicTableHeader,\n} from '../dynamic-table/dynamic-table.component';\nimport { EnlColumnTemplateDirective } from '../dynamic-table/column-template.directive';\nimport { EnlModalComponent } from '../modal/modal.component';\nimport { EnlDynamicFormComponent } from '../dynamic-form/dynamic-form.component';\nimport { FormFieldConfig } from '../dynamic-form/dynamic-form.types';\nimport { EnlConfirmDialogComponent } from '../confirm-dialog/confirm-dialog.component';\nimport { EnlButtonComponent } from '../../atoms/button/button.component';\nimport { EnlCardComponent } from '../../molecules/card/card.component';\nimport { EnlSearchInputComponent } from '../../molecules/search-input/search-input.component';\nimport { EnlPageHeaderComponent } from '../../molecules/page-header/page-header.component';\n\n@Component({\n selector: 'enl-dynamic-crud',\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n EnlDynamicTableComponent,\n EnlColumnTemplateDirective,\n EnlModalComponent,\n EnlDynamicFormComponent,\n EnlConfirmDialogComponent,\n EnlButtonComponent,\n EnlCardComponent,\n EnlSearchInputComponent,\n EnlPageHeaderComponent,\n ],\n templateUrl: './dynamic-crud.component.html',\n styleUrl: './dynamic-crud.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EnlDynamicCrudComponent {\n // Inputs\n readonly title = input<string>('Gestión de Registros');\n readonly subtitle = input<string | undefined>(undefined);\n readonly items = input<Record<string, unknown>[]>([]);\n readonly tableHeaders = input<DynamicTableHeader[]>([]);\n readonly formSchema = input<FormFieldConfig[]>([]);\n readonly loading = input<boolean>(false);\n readonly pageSize = input<number>(5);\n readonly entityName = input<string>('registro');\n readonly fixedModal = input<boolean>(false);\n readonly selectData = input<boolean>(false);\n\n // Outputs\n readonly created = output<Record<string, unknown>>();\n readonly updated = output<{\n original: Record<string, unknown>;\n updated: Record<string, unknown>;\n }>();\n readonly deleted = output<Record<string, unknown>>();\n readonly selectedDataChange = output<Record<string, unknown>[]>();\n readonly reload = output<void>();\n readonly bulkDeleted = output<Record<string, unknown>[]>();\n\n // Internal Signals\n readonly showFormModal = signal<boolean>(false);\n readonly showConfirmDelete = signal<boolean>(false);\n readonly selectedItem = signal<Record<string, unknown> | null>(null);\n readonly formValue = signal<Record<string, unknown>>({});\n readonly isEditMode = signal<boolean>(false);\n readonly formLoading = signal<boolean>(false);\n readonly searchQuery = signal<string>('');\n readonly selectedItems = signal<Record<string, unknown>[]>([]);\n readonly showConfirmBulkDelete = signal<boolean>(false);\n\n // Content Queries\n readonly columnTemplates = contentChildren(EnlColumnTemplateDirective);\n\n // Computed: filtered items list based on search query\n protected readonly filteredItems = computed(() => {\n const q = this.searchQuery().toLowerCase().trim();\n const rows = this.items();\n if (!q) return rows;\n\n return rows.filter((row) =>\n Object.values(row).some((val) => {\n if (typeof val === 'object' && val !== null) {\n return Object.values(val).some((innerVal) => String(innerVal).toLowerCase().includes(q));\n }\n return String(val ?? '')\n .toLowerCase()\n .includes(q);\n }),\n );\n });\n\n // Computed headers with Actions column appended\n protected readonly tableHeadersWithActions = computed<DynamicTableHeader[]>(() => {\n const headers = this.tableHeaders();\n // Check if actions column is already defined by parent, if not, append it\n const hasActions = headers.some((h) => h.value === 'actions');\n if (hasActions) return headers;\n\n return [...headers, { text: 'Acciones', value: 'actions', sortable: false }];\n });\n\n protected readonly modalTitle = computed<string>(() => {\n const prefix = this.isEditMode() ? 'Editar' : 'Crear';\n const entity = this.entityName();\n // Capitalize first letter of entityName\n const entityCapitalized = entity.charAt(0).toUpperCase() + entity.slice(1);\n return `${prefix} ${entityCapitalized}`;\n });\n\n // Action methods\n openCreate(): void {\n this.isEditMode.set(false);\n this.formValue.set({});\n this.showFormModal.set(true);\n }\n\n openEdit(row: Record<string, unknown>): void {\n this.isEditMode.set(true);\n this.selectedItem.set(row);\n // Clone row object to avoid mutating the table state directly\n this.formValue.set({ ...row });\n this.showFormModal.set(true);\n }\n\n openDelete(row: Record<string, unknown>): void {\n this.selectedItem.set(row);\n this.showConfirmDelete.set(true);\n }\n\n handleFormSubmit(value: Record<string, unknown>): void {\n if (this.isEditMode()) {\n const original = this.selectedItem();\n if (original) {\n this.updated.emit({ original, updated: value });\n }\n } else {\n this.created.emit(value);\n }\n this.showFormModal.set(false);\n }\n\n handleDeleteConfirm(): void {\n const item = this.selectedItem();\n if (item) {\n this.deleted.emit(item);\n }\n this.showConfirmDelete.set(false);\n }\n\n // Selection and Bulk Delete\n onSelectionChange(selected: Record<string, unknown>[]): void {\n this.selectedItems.set(selected);\n this.selectedDataChange.emit(selected);\n }\n\n openBulkDelete(): void {\n this.showConfirmBulkDelete.set(true);\n }\n\n handleBulkDeleteConfirm(): void {\n const selected = this.selectedItems();\n if (selected.length > 0) {\n this.bulkDeleted.emit(selected);\n }\n this.showConfirmBulkDelete.set(false);\n this.selectedItems.set([]);\n }\n}\n","<enl-card shadow=\"md\" [bordered]=\"true\" class=\"enl-dynamic-crud\">\n <!-- Header section -->\n <div class=\"enl-dynamic-crud__header-padding flex items-center justify-between gap-4 flex-wrap\">\n <enl-page-header [title]=\"title()\" [subtitle]=\"subtitle()\" />\n <div class=\"flex items-center gap-2\">\n @if (selectedItems().length > 0) {\n <enl-button variant=\"danger\" (clicked)=\"openBulkDelete()\" id=\"btn-bulk-delete\">\n Eliminar ({{ selectedItems().length }})\n </enl-button>\n }\n <enl-button variant=\"primary\" (clicked)=\"openCreate()\" id=\"btn-create\">\n Nuevo {{ entityName() }}\n </enl-button>\n </div>\n </div>\n\n <!-- Toolbar section with Search & Count -->\n <div class=\"enl-dynamic-crud__toolbar\">\n <!-- Left side: Quantity of elements -->\n <div class=\"enl-dynamic-crud__meta\">\n <span class=\"enl-dynamic-crud__count\">\n {{ filteredItems().length }} resultado{{ filteredItems().length !== 1 ? 's' : '' }}\n </span>\n </div>\n\n <!-- Right side: Search Box and Reload Button -->\n <div class=\"flex items-center gap-2 flex-grow justify-end\">\n <div class=\"enl-dynamic-crud__search-wrapper\">\n <enl-search-input\n [ngModel]=\"searchQuery()\"\n (ngModelChange)=\"searchQuery.set($event)\"\n [placeholder]=\"'Buscar ' + entityName() + '...'\"\n />\n </div>\n <enl-button\n variant=\"secondary\"\n (clicked)=\"reload.emit()\"\n id=\"btn-reload\"\n ariaLabel=\"Recargar\"\n >\n <span [class.enl-dynamic-crud__spin]=\"loading()\">↻</span>\n </enl-button>\n </div>\n </div>\n\n <!-- Table list section -->\n <div class=\"enl-dynamic-crud__table-wrapper\">\n <enl-dynamic-table\n [itemsTable]=\"filteredItems()\"\n [headerTable]=\"tableHeadersWithActions()\"\n [selectData]=\"selectData()\"\n [loading]=\"loading()\"\n [pageSize]=\"pageSize()\"\n (selectedDataChange)=\"onSelectionChange($event)\"\n >\n <!-- Project parent templates dynamically -->\n @for (tpl of columnTemplates(); track tpl.columnName()) {\n <ng-template [enlColumnTemplate]=\"tpl.columnName()\" let-value let-row=\"row\">\n <ng-container\n *ngTemplateOutlet=\"tpl.templateRef; context: { $implicit: value, row: row }\"\n ></ng-container>\n </ng-template>\n }\n\n <!-- Custom Actions column template -->\n <ng-template enlColumnTemplate=\"actions\" let-row=\"row\">\n <div class=\"flex items-center justify-center gap-2\">\n <enl-button\n variant=\"ghost\"\n size=\"sm\"\n iconLeft=\"settings\"\n [iconOnly]=\"true\"\n (clicked)=\"openEdit(row)\"\n ariaLabel=\"Editar\"\n >\n </enl-button>\n <enl-button\n variant=\"danger\"\n size=\"sm\"\n iconLeft=\"close\"\n [iconOnly]=\"true\"\n (clicked)=\"openDelete(row)\"\n ariaLabel=\"Eliminar\"\n >\n </enl-button>\n </div>\n </ng-template>\n </enl-dynamic-table>\n </div>\n\n <!-- Form modal (Create / Edit) -->\n <enl-modal\n [show]=\"showFormModal()\"\n (closed)=\"showFormModal.set(false)\"\n [title]=\"modalTitle()\"\n size=\"md\"\n [closeOnBackdrop]=\"!fixedModal()\"\n >\n <div class=\"enl-dynamic-crud__form-container\">\n <enl-dynamic-form\n [schema]=\"formSchema()\"\n [(value)]=\"formValue\"\n [loading]=\"formLoading()\"\n [showActions]=\"true\"\n confirmLabel=\"Guardar\"\n cancelLabel=\"Cancelar\"\n (formSubmit)=\"handleFormSubmit($event)\"\n (formCancel)=\"showFormModal.set(false)\"\n ></enl-dynamic-form>\n </div>\n </enl-modal>\n\n <!-- Delete confirmation modal -->\n <enl-confirm-dialog\n [(show)]=\"showConfirmDelete\"\n severity=\"danger\"\n [title]=\"'Eliminar ' + entityName()\"\n [message]=\"\n '¿Está seguro de eliminar este ' + entityName() + '? Esta acción no se puede deshacer.'\n \"\n (confirmed)=\"handleDeleteConfirm()\"\n [loading]=\"formLoading()\"\n ></enl-confirm-dialog>\n\n <!-- Bulk Delete confirmation modal -->\n <enl-confirm-dialog\n [(show)]=\"showConfirmBulkDelete\"\n severity=\"danger\"\n [title]=\"'Eliminar ' + entityName() + 's'\"\n [message]=\"\n '¿Está seguro de eliminar los ' +\n selectedItems().length +\n ' registros seleccionados? Esta acción no se puede deshacer.'\n \"\n (confirmed)=\"handleBulkDeleteConfirm()\"\n [loading]=\"formLoading()\"\n ></enl-confirm-dialog>\n</enl-card>\n","import { Component, ChangeDetectionStrategy, input, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { EnlButtonComponent } from '../../atoms/button/button.component';\n\n@Component({\n selector: 'enl-auth-template',\n standalone: true,\n imports: [CommonModule, EnlButtonComponent],\n templateUrl: './auth-template.component.html',\n styleUrl: './auth-template.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EnlAuthTemplateComponent {\n readonly brandTitle = input<string>('EnelarUI');\n readonly brandDescription = input<string>(\n 'El sistema de diseño para aplicaciones enterprise-grade de Enelar S.A.S. flexible, reactivo y de alta fidelidad.',\n );\n readonly showThemeToggle = input<boolean>(true);\n\n readonly themeToggleClick = output<void>();\n\n protected onThemeToggle(): void {\n this.themeToggleClick.emit();\n }\n}\n","<div class=\"enl-auth-template\">\n <!-- Brand Graphic Side -->\n <div class=\"enl-auth-template__brand-panel\">\n <div class=\"enl-auth-template__brand-bg-pattern\"></div>\n <div class=\"enl-auth-template__brand-overlay\"></div>\n <div class=\"enl-auth-template__brand-content\">\n <div class=\"enl-auth-template__logo-mark\">\n <span class=\"enl-auth-template__logo-symbol\">E</span>\n </div>\n <div>\n <h1\n class=\"enl-typography enl-typography--h1 enl-typography--weight-bold enl-auth-template__brand-title\"\n >\n {{ brandTitle() }}\n </h1>\n <p class=\"enl-typography enl-typography--body enl-auth-template__brand-desc\">\n {{ brandDescription() }}\n </p>\n </div>\n <div class=\"enl-auth-template__brand-footer\">\n <span class=\"enl-typography enl-typography--caption\"\n >© 2026 Enelar S.A.S. Todos los derechos reservados.</span\n >\n </div>\n </div>\n </div>\n\n <!-- Form/Content Side -->\n <div class=\"enl-auth-template__content-panel\">\n @if (showThemeToggle()) {\n <div class=\"enl-auth-template__header-actions\">\n <enl-button\n variant=\"ghost\"\n size=\"sm\"\n (click)=\"onThemeToggle()\"\n iconLeft=\"sun\"\n ariaLabel=\"Cambiar Tema\"\n class=\"enl-auth-template__theme-btn\"\n >\n Tema\n </enl-button>\n </div>\n }\n\n <div class=\"enl-auth-template__form-wrapper\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n","import { Component, ChangeDetectionStrategy, input, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { EnlNavbarComponent } from '../../organisms/navbar/navbar.component';\nimport { EnlSidebarComponent } from '../../organisms/sidebar/sidebar.component';\n\n@Component({\n selector: 'enl-dashboard-template',\n standalone: true,\n imports: [CommonModule, EnlNavbarComponent, EnlSidebarComponent],\n templateUrl: './dashboard-template.component.html',\n styleUrl: './dashboard-template.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EnlDashboardTemplateComponent {\n readonly brandTitle = input<string>('EnelarUI');\n readonly userEmail = input<string | undefined>(undefined);\n readonly userAvatarSrc = input<string | undefined>(undefined);\n readonly userAvatarInitials = input<string>('');\n readonly sidebarCollapsed = input<boolean>(false);\n\n readonly sidebarCollapsedChange = output<boolean>();\n readonly userProfileClick = output<void>();\n readonly themeToggleClick = output<void>();\n\n protected onSidebarCollapseChange(collapsed: boolean): void {\n this.sidebarCollapsedChange.emit(collapsed);\n }\n\n protected onUserProfileClick(): void {\n this.userProfileClick.emit();\n }\n\n protected onThemeToggleClick(): void {\n this.themeToggleClick.emit();\n }\n}\n","<div class=\"enl-dashboard-template\">\n <!-- Sidebar Organism -->\n <enl-sidebar\n [collapsed]=\"sidebarCollapsed()\"\n [brandTitle]=\"brandTitle()\"\n [userEmail]=\"userEmail()\"\n (collapsedChange)=\"onSidebarCollapseChange($event)\"\n ></enl-sidebar>\n\n <!-- Main Viewport Area -->\n <div class=\"enl-dashboard-template__main\">\n <!-- Navbar Organism -->\n <enl-navbar\n [brandTitle]=\"brandTitle()\"\n [userAvatarSrc]=\"userAvatarSrc()\"\n [userAvatarInitials]=\"userAvatarInitials()\"\n (userProfileClick)=\"onUserProfileClick()\"\n (themeToggleClick)=\"onThemeToggleClick()\"\n ></enl-navbar>\n\n <!-- Scrollable Viewport Content -->\n <main class=\"enl-dashboard-template__viewport\">\n <ng-content></ng-content>\n </main>\n </div>\n</div>\n","import { Component, ChangeDetectionStrategy, input, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { EnlAuthTemplateComponent } from '../../templates/auth-template/auth-template.component';\nimport { EnlLoginPanelComponent } from '../../organisms/login-panel/login-panel.component';\n\n@Component({\n selector: 'enl-login-page',\n standalone: true,\n imports: [CommonModule, EnlAuthTemplateComponent, EnlLoginPanelComponent],\n templateUrl: './login-page.component.html',\n styleUrl: './login-page.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EnlLoginPageComponent {\n readonly brandTitle = input<string>('EnelarUI');\n readonly brandDescription = input<string | undefined>(undefined);\n readonly panelTitle = input<string>('Iniciar Sesión');\n readonly panelSubtitle = input<string>('Ingresa tus credenciales para acceder al sistema');\n readonly loading = input<boolean>(false);\n readonly skeleton = input<boolean>(false);\n readonly errorMessage = input<string | undefined>(undefined);\n readonly showThemeToggle = input<boolean>(true);\n\n readonly loginSubmitted = output<{ email: string; password: string }>();\n readonly themeToggleClick = output<void>();\n\n protected onLoginSubmit(event: { email: string; password: string }): void {\n this.loginSubmitted.emit(event);\n }\n\n protected onThemeToggle(): void {\n this.themeToggleClick.emit();\n }\n}\n","<enl-auth-template\n [brandTitle]=\"brandTitle()\"\n [brandDescription]=\"\n brandDescription() ||\n 'El sistema de diseño para aplicaciones enterprise-grade de Enelar S.A.S. flexible, reactivo y de alta fidelidad.'\n \"\n [showThemeToggle]=\"showThemeToggle()\"\n (themeToggleClick)=\"onThemeToggle()\"\n>\n <div class=\"enl-login-page__panel-container\">\n <enl-login-panel\n [title]=\"panelTitle()\"\n [subtitle]=\"panelSubtitle()\"\n [loading]=\"loading()\"\n [skeleton]=\"skeleton()\"\n [errorMessage]=\"errorMessage()\"\n (loginSubmit)=\"onLoginSubmit($event)\"\n ></enl-login-panel>\n </div>\n</enl-auth-template>\n","import { Component, ChangeDetectionStrategy, input, output, computed } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { EnlDashboardTemplateComponent } from '../../templates/dashboard-template/dashboard-template.component';\nimport { EnlUserProfileCardComponent } from '../../organisms/user-profile-card/user-profile-card.component';\nimport { TableColumn } from '../../organisms/data-table/data-table.component';\nimport { EnlTypographyComponent } from '../../atoms/typography/typography.component';\nimport { EnlButtonComponent } from '../../atoms/button/button.component';\nimport { EnlPageHeaderComponent } from '../../molecules/page-header/page-header.component';\nimport { EnlStatCardComponent } from '../../molecules/stat-card/stat-card.component';\nimport {\n EnlDynamicTableComponent,\n DynamicTableHeader,\n} from '../../organisms/dynamic-table/dynamic-table.component';\nimport { EnlColumnTemplateDirective } from '../../organisms/dynamic-table/column-template.directive';\nimport { EnlAvatarComponent } from '../../atoms/avatar/avatar.component';\nimport { EnlBadgeComponent } from '../../atoms/badge/badge.component';\nimport { EnlSkeletonComponent } from '../../atoms/skeleton/skeleton.component';\nimport { EnlSkeletonCardComponent } from '../../molecules/skeleton-card/skeleton-card.component';\n\n@Component({\n selector: 'enl-dashboard-page',\n standalone: true,\n imports: [\n CommonModule,\n EnlDashboardTemplateComponent,\n EnlUserProfileCardComponent,\n EnlTypographyComponent,\n EnlButtonComponent,\n EnlPageHeaderComponent,\n EnlStatCardComponent,\n EnlDynamicTableComponent,\n EnlColumnTemplateDirective,\n EnlAvatarComponent,\n EnlBadgeComponent,\n EnlSkeletonComponent,\n EnlSkeletonCardComponent,\n ],\n templateUrl: './dashboard-page.component.html',\n styleUrl: './dashboard-page.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EnlDashboardPageComponent {\n readonly brandTitle = input<string>('EnelarUI');\n readonly userEmail = input<string | undefined>(undefined);\n readonly userName = input<string>('Ricardo Solís');\n readonly userRole = input<string>('Lead Angular Developer');\n readonly userAvatarSrc = input<string | undefined>(undefined);\n readonly userAvatarInitials = input<string>('RS');\n readonly sidebarCollapsed = input<boolean>(false);\n readonly tableColumns = input.required<TableColumn[]>();\n readonly tableData = input.required<Record<string, unknown>[]>();\n readonly loading = input<boolean>(false);\n\n readonly sidebarCollapsedChange = output<boolean>();\n readonly userProfileClick = output<void>();\n readonly themeToggleClick = output<void>();\n readonly profileActionClick = output<string>();\n readonly logoutClicked = output<void>();\n\n readonly headers = computed<DynamicTableHeader[]>(() => {\n return this.tableColumns().map((col) => ({\n text: col.label,\n value: col.key,\n sortable: col.sortable ?? true,\n }));\n });\n\n protected onSidebarCollapseChange(collapsed: boolean): void {\n this.sidebarCollapsedChange.emit(collapsed);\n }\n\n protected onUserProfileClick(): void {\n this.userProfileClick.emit();\n }\n\n protected onThemeToggleClick(): void {\n this.themeToggleClick.emit();\n }\n\n protected onProfileActionClick(action: string): void {\n this.profileActionClick.emit(action);\n }\n\n protected onLogoutClick(): void {\n this.logoutClicked.emit();\n }\n}\n","<enl-dashboard-template\n [brandTitle]=\"brandTitle()\"\n [userEmail]=\"userEmail()\"\n [userAvatarSrc]=\"userAvatarSrc()\"\n [userAvatarInitials]=\"userAvatarInitials()\"\n [sidebarCollapsed]=\"sidebarCollapsed()\"\n (sidebarCollapsedChange)=\"onSidebarCollapseChange($event)\"\n (userProfileClick)=\"onUserProfileClick()\"\n (themeToggleClick)=\"onThemeToggleClick()\"\n>\n <div class=\"enl-dashboard-page__cockpit\">\n <!-- Header Summary -->\n <header class=\"enl-dashboard-page__header flex justify-between items-center w-full\">\n <enl-page-header\n [title]=\"'¡Hola de nuevo, ' + userName() + '!'\"\n subtitle=\"Bienvenido al portal corporativo de administración de EnelarUI. Todo el ecosistema está sincronizado.\"\n />\n <div>\n <enl-button\n variant=\"danger\"\n size=\"sm\"\n iconLeft=\"logout\"\n (clicked)=\"onLogoutClick()\"\n class=\"enl-dashboard-page__logout-btn\"\n >\n Salir\n </enl-button>\n </div>\n </header>\n\n <!-- Page Body Grid -->\n <div class=\"enl-dashboard-page__grid\">\n <!-- Sidebar/Details Column -->\n <div class=\"enl-dashboard-page__sidebar-col\">\n <!-- Profile Card with Loading Skeleton State -->\n @if (loading()) {\n <enl-skeleton-card [avatar]=\"true\" [lines]=\"2\"></enl-skeleton-card>\n } @else {\n <enl-user-profile-card\n [name]=\"userName()\"\n [role]=\"userRole()\"\n [email]=\"userEmail()\"\n [avatarSrc]=\"userAvatarSrc()\"\n [avatarInitials]=\"userAvatarInitials()\"\n status=\"online\"\n (actionClick)=\"onProfileActionClick($event)\"\n ></enl-user-profile-card>\n }\n\n <!-- Dynamic Statistics Widget -->\n <div class=\"enl-dashboard-page__widget\">\n <enl-typography variant=\"h4\" weight=\"semibold\" class=\"enl-dashboard-page__widget-title\">\n Métricas del Sistema\n </enl-typography>\n <div class=\"enl-dashboard-page__stats-grid\">\n @if (loading()) {\n <div\n class=\"p-4 bg-slate-50 dark:bg-zinc-950/20 border border-slate-200 dark:border-zinc-800 rounded-xl flex flex-col gap-2\"\n >\n <enl-skeleton shape=\"line\" width=\"60%\" height=\"12px\"></enl-skeleton>\n <enl-skeleton shape=\"line\" width=\"30%\" height=\"24px\"></enl-skeleton>\n </div>\n <div\n class=\"p-4 bg-slate-50 dark:bg-zinc-950/20 border border-slate-200 dark:border-zinc-800 rounded-xl flex flex-col gap-2\"\n >\n <enl-skeleton shape=\"line\" width=\"60%\" height=\"12px\"></enl-skeleton>\n <enl-skeleton shape=\"line\" width=\"30%\" height=\"24px\"></enl-skeleton>\n </div>\n } @else {\n <enl-stat-card label=\"Tests de Vitest\" value=\"99\" variant=\"success\"></enl-stat-card>\n <enl-stat-card label=\"Lint Warnings\" value=\"0\" variant=\"primary\"></enl-stat-card>\n }\n </div>\n </div>\n </div>\n\n <!-- Main Data Table Column -->\n <div class=\"enl-dashboard-page__main-col\">\n <div class=\"enl-dashboard-page__table-wrapper\">\n <div class=\"enl-dashboard-page__table-header\">\n <enl-typography variant=\"h3\" weight=\"semibold\">Colaboradores Activos</enl-typography>\n <enl-typography variant=\"body-sm\" color=\"muted\" class=\"mb-4\"\n >Listado consolidado de recursos asignados a la división</enl-typography\n >\n </div>\n\n <enl-dynamic-table\n [headerTable]=\"headers()\"\n [itemsTable]=\"tableData()\"\n [loading]=\"loading()\"\n [skeletonRows]=\"5\"\n [paginator]=\"true\"\n [pageSize]=\"5\"\n >\n <!-- Custom Templates for Avatar column -->\n <ng-template enlColumnTemplate=\"avatar\" let-value>\n <enl-avatar [initials]=\"value?.initials\" [src]=\"value?.src\" size=\"sm\"></enl-avatar>\n </ng-template>\n\n <!-- Custom Templates for Status column -->\n <ng-template enlColumnTemplate=\"status\" let-value>\n <enl-badge [variant]=\"value === 'success' ? 'success' : 'warning'\">\n {{ value === 'success' ? 'Activo' : 'Pausado' }}\n </enl-badge>\n </ng-template>\n </enl-dynamic-table>\n </div>\n </div>\n </div>\n </div>\n</enl-dashboard-template>\n","/*\n * Public API Surface of @enelar/ui\n */\n\n// Design Tokens & Themes\nexport * from './lib/tokens/design-tokens';\nexport * from './lib/services/theme.service';\nexport * from './lib/services/toast.service';\n\n// Atoms\nexport * from './lib/atoms/typography/index';\nexport * from './lib/atoms/spinner/index';\nexport * from './lib/atoms/icon/index';\nexport * from './lib/atoms/button/index';\nexport * from './lib/atoms/label/index';\nexport * from './lib/atoms/input/index';\nexport * from './lib/atoms/badge/index';\nexport * from './lib/atoms/checkbox/index';\nexport * from './lib/atoms/radio/index';\nexport * from './lib/atoms/avatar/index';\nexport * from './lib/atoms/select/index';\nexport * from './lib/atoms/input-number/index';\nexport * from './lib/atoms/input-otp/index';\nexport * from './lib/atoms/password/index';\nexport * from './lib/atoms/textarea/index';\nexport * from './lib/atoms/toggle-switch/index';\nexport * from './lib/atoms/skeleton/index';\n\n// Molecules\nexport * from './lib/molecules/form-field/index';\nexport * from './lib/molecules/search-input/index';\nexport * from './lib/molecules/date-picker/index';\nexport * from './lib/molecules/card-header/index';\nexport * from './lib/molecules/card/index';\nexport * from './lib/molecules/login-form-field/index';\nexport * from './lib/molecules/paginator/index';\nexport * from './lib/molecules/stat-card/index';\nexport * from './lib/molecules/icon-field/index';\nexport * from './lib/molecules/multi-select/index';\nexport * from './lib/molecules/page-header/index';\nexport * from './lib/molecules/skeleton-card/index';\n\n// Organisms\nexport * from './lib/organisms/navbar/index';\nexport * from './lib/organisms/sidebar/index';\nexport * from './lib/organisms/user-profile-card/index';\nexport * from './lib/organisms/login-panel/index';\nexport * from './lib/organisms/data-table/index';\nexport * from './lib/organisms/modal/index';\nexport * from './lib/organisms/toast-container/index';\nexport * from './lib/organisms/dynamic-form/index';\nexport * from './lib/organisms/dynamic-table/index';\nexport * from './lib/organisms/confirm-dialog/index';\nexport * from './lib/organisms/dynamic-crud/index';\n\n// Templates\nexport * from './lib/templates/auth-template/index';\nexport * from './lib/templates/dashboard-template/index';\n\n// Pages\nexport * from './lib/pages/login-page/index';\nexport * from './lib/pages/dashboard-page/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2"],"mappings":"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"}
|