@lesterarte/sefin-ui 0.0.20-dev.7 → 0.0.20-dev.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lesterarte-sefin-ui.mjs","sources":["../../../src/tokens/colors.ts","../../../src/tokens/spacing.ts","../../../src/tokens/typography.ts","../../../src/tokens/border-radius.ts","../../../src/tokens/shadow.ts","../../../src/tokens/index.ts","../../../src/themes/light-theme.ts","../../../src/themes/dark-theme.ts","../../../src/themes/brand-theme.ts","../../../src/themes/index.ts","../../../src/utils/theme-loader.ts","../../../src/utils/index.ts","../../../src/shared/types.ts","../../../src/shared/index.ts","../../../src/atoms/icon/icon.component.ts","../../../src/atoms/icon/icon.component.html","../../../src/atoms/avatar/avatar.component.ts","../../../src/atoms/avatar/avatar.component.html","../../../src/atoms/badge/badge.component.ts","../../../src/atoms/badge/badge.component.html","../../../src/atoms/button/button.component.ts","../../../src/atoms/button/button.component.html","../../../src/atoms/icon/index.ts","../../../src/atoms/icon-button/icon-button.component.ts","../../../src/atoms/icon-button/icon-button.component.html","../../../src/atoms/fab-button/fab-button.component.ts","../../../src/atoms/fab-button/fab-button.component.html","../../../src/atoms/chip/chip.component.ts","../../../src/atoms/chip/chip.component.html","../../../src/atoms/tag/tag.component.ts","../../../src/atoms/tag/tag.component.html","../../../src/atoms/link/link.component.ts","../../../src/atoms/link/link.component.html","../../../src/atoms/stack/stack.component.ts","../../../src/atoms/stack/stack.component.html","../../../src/atoms/container/container.component.ts","../../../src/atoms/container/container.component.html","../../../src/atoms/checkbox/checkbox.component.ts","../../../src/atoms/checkbox/checkbox.component.html","../../../src/atoms/radio/radio.component.ts","../../../src/atoms/radio/radio.component.html","../../../src/atoms/select/select.component.ts","../../../src/atoms/select/select.component.html","../../../src/atoms/switch/switch.component.ts","../../../src/atoms/switch/switch.component.html","../../../src/atoms/typography/typography.component.ts","../../../src/atoms/typography/typography.component.html","../../../src/atoms/divider/divider.component.ts","../../../src/atoms/divider/divider.component.html","../../../src/atoms/spinner/spinner.component.ts","../../../src/atoms/spinner/spinner.component.html","../../../src/atoms/progress-bar/progress-bar.component.ts","../../../src/atoms/progress-bar/progress-bar.component.html","../../../src/atoms/tooltip/tooltip.component.ts","../../../src/atoms/tooltip/tooltip.component.html","../../../src/atoms/alert/alert.component.ts","../../../src/atoms/alert/alert.component.html","../../../src/atoms/toast/toast.component.ts","../../../src/atoms/toast/toast.component.html","../../../src/atoms/textfield/textfield.component.ts","../../../src/atoms/textfield/textfield.component.html","../../../src/atoms/image/image.component.ts","../../../src/atoms/image/image.component.html","../../../src/atoms/tab/tab.component.ts","../../../src/atoms/tab/tab.component.html","../../../src/atoms/rate/rate.component.ts","../../../src/atoms/rate/rate.component.html","../../../src/atoms/index.ts","../../../src/molecules/accordion-item/accordion-item.component.ts","../../../src/molecules/accordion-item/accordion-item.component.html","../../../src/molecules/autocomplete/autocomplete.component.ts","../../../src/molecules/autocomplete/autocomplete.component.html","../../../src/molecules/breadcrumbs/breadcrumbs.component.ts","../../../src/molecules/breadcrumbs/breadcrumbs.component.html","../../../src/molecules/button-group/button-group.component.ts","../../../src/molecules/button-group/button-group.component.html","../../../src/molecules/card/card.component.ts","../../../src/molecules/card/card.component.html","../../../src/molecules/datepicker/datepicker.component.ts","../../../src/molecules/datepicker/datepicker.component.html","../../../src/molecules/pagination/pagination.component.ts","../../../src/molecules/pagination/pagination.component.html","../../../src/molecules/textarea/textarea.component.ts","../../../src/molecules/textarea/textarea.component.html","../../../src/molecules/index.ts","../../../src/public-api.ts","../../../src/lesterarte-sefin-ui.ts"],"sourcesContent":["/**\n * Color design tokens as TypeScript constants\n * Based on Secretaría de Finanzas brand guidelines\n * These values are the source of truth for all color tokens\n */\n\nexport const COLOR_TOKENS = {\n // Primary colors - Secretaría de Finanzas brand colors\n primary: {\n // Light Blue (Azul Claro) - Primary brand color\n 50: '#e6f7fb',\n 100: '#b3e5f0',\n 200: '#80d3e5',\n 300: '#4dc1da',\n 400: '#2ab0cf',\n 500: '#55C3D8', // Primary Light Blue from brand guidelines\n 600: '#4aafc4',\n 700: '#3f9bb0',\n 800: '#34879c',\n 900: '#297388',\n },\n // Secondary colors - Grays from brand guidelines\n secondary: {\n // Based on Dark Gray and Light Gray from brand\n 50: '#f5f5f5',\n 100: '#e8e8e8',\n 200: '#cecece', // Light Gray from brand guidelines\n 300: '#b5b5b5',\n 400: '#9b9b9b',\n 500: '#828282',\n 600: '#686868',\n 700: '#4f4f4f',\n 800: '#383838', // Dark Gray from brand guidelines\n 900: '#2a2a2a',\n },\n // Neutral colors - Based on brand grays\n neutral: {\n 50: '#ffffff', // White from brand guidelines\n 100: '#f5f5f5',\n 200: '#cecece', // Light Gray\n 300: '#b5b5b5',\n 400: '#9b9b9b',\n 500: '#828282',\n 600: '#686868',\n 700: '#4f4f4f',\n 800: '#383838', // Dark Gray\n 900: '#2a2a2a',\n },\n // Semantic colors - Keeping standard semantic colors\n success: {\n 50: '#e8f5e9',\n 100: '#c8e6c9',\n 200: '#a5d6a7',\n 300: '#81c784',\n 400: '#66bb6a',\n 500: '#4caf50',\n 600: '#43a047',\n 700: '#388e3c',\n 800: '#2e7d32',\n 900: '#1b5e20',\n },\n warning: {\n 50: '#fff3e0',\n 100: '#ffe0b2',\n 200: '#ffcc80',\n 300: '#ffb74d',\n 400: '#ffa726',\n 500: '#ff9800',\n 600: '#fb8c00',\n 700: '#f57c00',\n 800: '#ef6c00',\n 900: '#e65100',\n },\n error: {\n 50: '#ffebee',\n 100: '#ffcdd2',\n 200: '#ef9a9a',\n 300: '#e57373',\n 400: '#ef5350',\n 500: '#f44336',\n 600: '#e53935',\n 700: '#d32f2f',\n 800: '#c62828',\n 900: '#b71c1c',\n },\n info: {\n 50: '#e0f2f1',\n 100: '#b2dfdb',\n 200: '#80cbc4',\n 300: '#4db6ac',\n 400: '#26a69a',\n 500: '#009688',\n 600: '#00897b',\n 700: '#00796b',\n 800: '#00695c',\n 900: '#004d40',\n },\n // Brand-specific colors\n brand: {\n darkGray: '#383838', // Dark Gray from brand guidelines\n lightGray: '#cecece', // Light Gray from brand guidelines\n lightBlue: '#55C3D8', // Light Blue from brand guidelines\n white: '#ffffff', // White from brand guidelines\n },\n} as const;\n\n/**\n * Color token names for CSS variable generation\n */\nexport type ColorTokenName =\n | 'primary'\n | 'secondary'\n | 'neutral'\n | 'success'\n | 'warning'\n | 'error'\n | 'info'\n | 'brand';\n\nexport type ColorShade = 50 | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;\n","/**\n * Spacing design tokens\n * Based on 8px grid system\n */\n\nexport const SPACING_TOKENS = {\n xs: '4px',\n sm: '8px',\n md: '16px',\n lg: '24px',\n xl: '32px',\n '2xl': '48px',\n '3xl': '64px',\n '4xl': '96px',\n '5xl': '128px',\n} as const;\n\nexport type SpacingToken = keyof typeof SPACING_TOKENS;\n\n","/**\n * Typography design tokens\n * Based on Secretaría de Finanzas brand guidelines - Pluto typeface\n */\n\nexport const TYPOGRAPHY_TOKENS = {\n fontFamily: {\n base: \"'Pluto', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif\",\n mono: \"'Fira Code', '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 '5xl': '3rem', // 48px\n },\n fontWeight: {\n light: 300, // Pluto-Light\n normal: 400, // Pluto-Regular\n medium: 500,\n semibold: 600,\n bold: 700, // Pluto-Bold\n },\n lineHeight: {\n tight: 1.25,\n normal: 1.5,\n relaxed: 1.75,\n },\n} as const;\n\nexport type TypographyToken = keyof typeof TYPOGRAPHY_TOKENS;\n","/**\n * Border radius design tokens\n */\n\nexport const BORDER_RADIUS_TOKENS = {\n none: '0',\n sm: '4px',\n md: '8px',\n lg: '12px',\n xl: '16px',\n '2xl': '24px',\n full: '9999px',\n} as const;\n\nexport type BorderRadiusToken = keyof typeof BORDER_RADIUS_TOKENS;\n\n","/**\n * Shadow design tokens\n */\n\nexport const SHADOW_TOKENS = {\n none: 'none',\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 -1px rgba(0, 0, 0, 0.06)',\n lg: '0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)',\n xl: '0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)',\n '2xl': '0 25px 50px -12px rgba(0, 0, 0, 0.25)',\n} as const;\n\nexport type ShadowToken = keyof typeof SHADOW_TOKENS;\n\n","/**\n * Design tokens index\n * Central export for all design tokens\n */\n\nexport * from './colors';\nexport * from './spacing';\nexport * from './typography';\nexport * from './border-radius';\nexport * from './shadow';\n\n/**\n * All design tokens combined\n */\nexport const DESIGN_TOKENS = {\n colors: () => import('./colors').then(m => m.COLOR_TOKENS),\n spacing: () => import('./spacing').then(m => m.SPACING_TOKENS),\n typography: () => import('./typography').then(m => m.TYPOGRAPHY_TOKENS),\n borderRadius: () => import('./border-radius').then(m => m.BORDER_RADIUS_TOKENS),\n shadow: () => import('./shadow').then(m => m.SHADOW_TOKENS),\n};\n\n","import { COLOR_TOKENS } from '../tokens/colors';\n\n/**\n * Light theme configuration\n * Based on Secretaría de Finanzas brand colors\n */\nexport const LIGHT_THEME = {\n name: 'light',\n colors: {\n // Primary color is Light Blue from brand\n primary: COLOR_TOKENS.brand.lightBlue,\n 'primary-dark': COLOR_TOKENS.primary[700],\n 'primary-light': COLOR_TOKENS.primary[300],\n // Secondary uses Dark Gray\n secondary: COLOR_TOKENS.brand.darkGray,\n 'secondary-dark': COLOR_TOKENS.secondary[900],\n 'secondary-light': COLOR_TOKENS.secondary[600],\n // Background uses White and Light Gray\n background: COLOR_TOKENS.brand.white,\n 'background-elevated': COLOR_TOKENS.brand.white,\n surface: COLOR_TOKENS.brand.white,\n 'surface-hover': COLOR_TOKENS.brand.lightGray,\n // Text uses Dark Gray\n text: COLOR_TOKENS.brand.darkGray,\n 'text-secondary': COLOR_TOKENS.secondary[600],\n 'text-disabled': COLOR_TOKENS.secondary[400],\n // Borders use Light Gray\n border: COLOR_TOKENS.brand.lightGray,\n 'border-focus': COLOR_TOKENS.brand.lightBlue,\n // Semantic colors\n success: COLOR_TOKENS.success[500],\n warning: COLOR_TOKENS.warning[500],\n error: COLOR_TOKENS.error[500],\n info: COLOR_TOKENS.info[500],\n },\n} as const;\n","import { COLOR_TOKENS } from '../tokens/colors';\n\n/**\n * Dark theme configuration\n * Based on Secretaría de Finanzas brand colors (inverted)\n */\nexport const DARK_THEME = {\n name: 'dark',\n colors: {\n // Primary color remains Light Blue\n primary: COLOR_TOKENS.brand.lightBlue,\n 'primary-dark': COLOR_TOKENS.primary[300],\n 'primary-light': COLOR_TOKENS.primary[700],\n // Secondary uses Light Gray for contrast\n secondary: COLOR_TOKENS.brand.lightGray,\n 'secondary-dark': COLOR_TOKENS.secondary[400],\n 'secondary-light': COLOR_TOKENS.secondary[200],\n // Background uses Dark Gray\n background: COLOR_TOKENS.brand.darkGray,\n 'background-elevated': COLOR_TOKENS.secondary[700],\n surface: COLOR_TOKENS.secondary[700],\n 'surface-hover': COLOR_TOKENS.secondary[600],\n // Text uses White and Light Gray\n text: COLOR_TOKENS.brand.white,\n 'text-secondary': COLOR_TOKENS.brand.lightGray,\n 'text-disabled': COLOR_TOKENS.secondary[500],\n // Borders use medium gray\n border: COLOR_TOKENS.secondary[600],\n 'border-focus': COLOR_TOKENS.brand.lightBlue,\n // Semantic colors\n success: COLOR_TOKENS.success[400],\n warning: COLOR_TOKENS.warning[400],\n error: COLOR_TOKENS.error[400],\n info: COLOR_TOKENS.info[400],\n },\n} as const;\n","import { COLOR_TOKENS } from '../tokens/colors';\n\n/**\n * Brand theme configuration\n * Exact colors from Secretaría de Finanzas brand guidelines\n */\nexport const BRAND_THEME = {\n name: 'brand',\n colors: {\n // Primary: Light Blue from brand guidelines\n primary: COLOR_TOKENS.brand.lightBlue, // #55C3D8\n 'primary-dark': COLOR_TOKENS.primary[700],\n 'primary-light': COLOR_TOKENS.primary[300],\n // Secondary: Dark Gray from brand guidelines\n secondary: COLOR_TOKENS.brand.darkGray, // #383838\n 'secondary-dark': COLOR_TOKENS.secondary[900],\n 'secondary-light': COLOR_TOKENS.secondary[600],\n // Background: White from brand guidelines\n background: COLOR_TOKENS.brand.white, // #ffffff\n 'background-elevated': COLOR_TOKENS.brand.white,\n surface: COLOR_TOKENS.brand.white,\n 'surface-hover': COLOR_TOKENS.brand.lightGray, // #cecece\n // Text: Dark Gray from brand guidelines\n text: COLOR_TOKENS.brand.darkGray, // #383838\n 'text-secondary': COLOR_TOKENS.secondary[600],\n 'text-disabled': COLOR_TOKENS.secondary[400],\n // Border: Light Gray from brand guidelines\n border: COLOR_TOKENS.brand.lightGray, // #cecece\n 'border-focus': COLOR_TOKENS.brand.lightBlue, // #55C3D8\n // Semantic colors\n success: COLOR_TOKENS.success[500],\n warning: COLOR_TOKENS.warning[500],\n error: COLOR_TOKENS.error[500],\n info: COLOR_TOKENS.info[500],\n },\n} as const;\n","/**\n * Themes index\n */\nexport * from './light-theme';\nexport * from './dark-theme';\nexport * from './brand-theme';\n\nexport type Theme = 'light' | 'dark' | 'brand';\n\n","import { LIGHT_THEME } from '../themes/light-theme';\nimport { DARK_THEME } from '../themes/dark-theme';\nimport { BRAND_THEME } from '../themes/brand-theme';\nimport { SPACING_TOKENS } from '../tokens/spacing';\nimport { TYPOGRAPHY_TOKENS } from '../tokens/typography';\nimport { BORDER_RADIUS_TOKENS } from '../tokens/border-radius';\nimport { SHADOW_TOKENS } from '../tokens/shadow';\nimport type { Theme } from '../themes';\nimport type { CustomTheme } from '../shared/types';\n\n/**\n * Theme loader utility\n * Generates CSS variables from design tokens\n */\nexport class ThemeLoader {\n /**\n * Load a theme and apply it to the document root\n * @param themeName - Predefined theme name ('light', 'dark', 'brand') or a CustomTheme object\n * @param variant - Optional variant ('light' or 'dark') for CustomTheme with variants support\n */\n static loadTheme(\n themeName: Theme | CustomTheme = 'light',\n variant?: 'light' | 'dark'\n ): void {\n let theme: CustomTheme | typeof LIGHT_THEME;\n let colors: Record<string, string | undefined>;\n\n if (typeof themeName === 'string') {\n theme = this.getTheme(themeName);\n colors = theme.colors as Record<string, string | undefined>;\n } else {\n theme = themeName;\n // If variant is specified and theme has variants, use variant colors\n if (variant && theme.variants) {\n const variantColors = theme.variants[variant];\n if (variantColors) {\n colors = variantColors;\n } else {\n // Fallback to base colors if variant doesn't exist\n colors = theme.colors;\n }\n } else {\n // Use base colors if no variant specified or no variants defined\n colors = theme.colors;\n }\n }\n\n const root = document.documentElement;\n\n // Apply color tokens\n Object.entries(colors).forEach(([key, value]) => {\n if (value) {\n root.style.setProperty(`--sefin-color-${key}`, value);\n }\n });\n\n // Apply spacing tokens (use custom if provided, otherwise use defaults)\n const spacingTokens = typeof themeName === 'object' && themeName.spacing \n ? { ...SPACING_TOKENS, ...themeName.spacing }\n : SPACING_TOKENS;\n Object.entries(spacingTokens).forEach(([key, value]) => {\n root.style.setProperty(`--sefin-spacing-${key}`, value);\n });\n\n // Apply typography tokens (use custom if provided, otherwise use defaults)\n const typographyTokens = typeof themeName === 'object' && themeName.typography\n ? {\n fontFamily: { ...TYPOGRAPHY_TOKENS.fontFamily, ...themeName.typography.fontFamily },\n fontSize: { ...TYPOGRAPHY_TOKENS.fontSize, ...themeName.typography.fontSize },\n fontWeight: { ...TYPOGRAPHY_TOKENS.fontWeight, ...themeName.typography.fontWeight },\n lineHeight: { ...TYPOGRAPHY_TOKENS.lineHeight, ...themeName.typography.lineHeight },\n }\n : TYPOGRAPHY_TOKENS;\n\n Object.entries(typographyTokens.fontFamily).forEach(([key, value]) => {\n root.style.setProperty(`--sefin-font-family-${key}`, value);\n });\n Object.entries(typographyTokens.fontSize).forEach(([key, value]) => {\n root.style.setProperty(`--sefin-font-size-${key}`, value);\n });\n Object.entries(typographyTokens.fontWeight).forEach(([key, value]) => {\n root.style.setProperty(`--sefin-font-weight-${key}`, String(value));\n });\n Object.entries(typographyTokens.lineHeight).forEach(([key, value]) => {\n root.style.setProperty(`--sefin-line-height-${key}`, String(value));\n });\n\n // Apply border radius tokens (use custom if provided, otherwise use defaults)\n const borderRadiusTokens = typeof themeName === 'object' && themeName.borderRadius\n ? { ...BORDER_RADIUS_TOKENS, ...themeName.borderRadius }\n : BORDER_RADIUS_TOKENS;\n Object.entries(borderRadiusTokens).forEach(([key, value]) => {\n root.style.setProperty(`--sefin-radius-${key}`, value);\n });\n\n // Apply shadow tokens (use custom if provided, otherwise use defaults)\n const shadowTokens = typeof themeName === 'object' && themeName.shadow\n ? { ...SHADOW_TOKENS, ...themeName.shadow }\n : SHADOW_TOKENS;\n Object.entries(shadowTokens).forEach(([key, value]) => {\n root.style.setProperty(`--sefin-shadow-${key}`, value);\n });\n\n // Set theme attribute for CSS selectors\n let themeAttribute: string;\n if (typeof themeName === 'string') {\n themeAttribute = themeName;\n } else {\n themeAttribute = variant\n ? `${themeName.name}-${variant}`\n : themeName.name;\n }\n root.setAttribute('data-theme', themeAttribute);\n }\n\n /**\n * Load a custom theme variant (light or dark)\n * @param customTheme - CustomTheme object with variants support\n * @param variant - Variant to load ('light' or 'dark')\n */\n static loadThemeVariant(\n customTheme: CustomTheme,\n variant: 'light' | 'dark'\n ): void {\n if (!customTheme.variants) {\n console.warn(\n `Theme \"${customTheme.name}\" does not have variants. Loading base theme.`\n );\n this.loadTheme(customTheme);\n return;\n }\n\n this.loadTheme(customTheme, variant);\n }\n\n /**\n * Get theme configuration by name\n */\n private static getTheme(themeName: Theme) {\n switch (themeName) {\n case 'dark':\n return DARK_THEME;\n case 'brand':\n return BRAND_THEME;\n case 'light':\n default:\n return LIGHT_THEME;\n }\n }\n\n /**\n * Get all CSS variables as a string (useful for SSR or static generation)\n * @param themeName - Predefined theme name ('light', 'dark', 'brand') or a CustomTheme object\n * @param variant - Optional variant ('light' or 'dark') for CustomTheme with variants support\n */\n static getThemeCSS(\n themeName: Theme | CustomTheme = 'light',\n variant?: 'light' | 'dark'\n ): string {\n let theme: CustomTheme | typeof LIGHT_THEME;\n let colors: Record<string, string | undefined>;\n\n if (typeof themeName === 'string') {\n theme = this.getTheme(themeName);\n colors = theme.colors as Record<string, string | undefined>;\n } else {\n theme = themeName;\n // If variant is specified and theme has variants, use variant colors\n if (variant && theme.variants) {\n const variantColors = theme.variants[variant];\n if (variantColors) {\n colors = variantColors;\n } else {\n colors = theme.colors;\n }\n } else {\n colors = theme.colors;\n }\n }\n\n let css = ':root {\\n';\n\n // Color tokens\n Object.entries(colors).forEach(([key, value]) => {\n if (value) {\n css += ` --sefin-color-${key}: ${value};\\n`;\n }\n });\n\n // Spacing tokens\n const spacingTokens = typeof themeName === 'object' && themeName.spacing \n ? { ...SPACING_TOKENS, ...themeName.spacing }\n : SPACING_TOKENS;\n Object.entries(spacingTokens).forEach(([key, value]) => {\n css += ` --sefin-spacing-${key}: ${value};\\n`;\n });\n\n // Typography tokens\n const typographyTokens = typeof themeName === 'object' && themeName.typography\n ? {\n fontFamily: { ...TYPOGRAPHY_TOKENS.fontFamily, ...themeName.typography.fontFamily },\n fontSize: { ...TYPOGRAPHY_TOKENS.fontSize, ...themeName.typography.fontSize },\n fontWeight: { ...TYPOGRAPHY_TOKENS.fontWeight, ...themeName.typography.fontWeight },\n lineHeight: { ...TYPOGRAPHY_TOKENS.lineHeight, ...themeName.typography.lineHeight },\n }\n : TYPOGRAPHY_TOKENS;\n\n Object.entries(typographyTokens.fontFamily).forEach(([key, value]) => {\n css += ` --sefin-font-family-${key}: ${value};\\n`;\n });\n Object.entries(typographyTokens.fontSize).forEach(([key, value]) => {\n css += ` --sefin-font-size-${key}: ${value};\\n`;\n });\n Object.entries(typographyTokens.fontWeight).forEach(([key, value]) => {\n css += ` --sefin-font-weight-${key}: ${value};\\n`;\n });\n Object.entries(typographyTokens.lineHeight).forEach(([key, value]) => {\n css += ` --sefin-line-height-${key}: ${value};\\n`;\n });\n\n // Border radius tokens\n const borderRadiusTokens = typeof themeName === 'object' && themeName.borderRadius\n ? { ...BORDER_RADIUS_TOKENS, ...themeName.borderRadius }\n : BORDER_RADIUS_TOKENS;\n Object.entries(borderRadiusTokens).forEach(([key, value]) => {\n css += ` --sefin-radius-${key}: ${value};\\n`;\n });\n\n // Shadow tokens\n const shadowTokens = typeof themeName === 'object' && themeName.shadow\n ? { ...SHADOW_TOKENS, ...themeName.shadow }\n : SHADOW_TOKENS;\n Object.entries(shadowTokens).forEach(([key, value]) => {\n css += ` --sefin-shadow-${key}: ${value};\\n`;\n });\n\n css += '}\\n';\n return css;\n }\n}\n\n","/**\n * Utilities index\n */\nexport * from './theme-loader';\n\n","/**\n * Shared types and interfaces\n */\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'outline' | 'ghost' | 'danger';\nexport type ButtonSize = 'sm' | 'md' | 'lg';\nexport type InputSize = 'sm' | 'md' | 'lg';\nexport type CardVariant = 'default' | 'elevated' | 'outlined';\nexport type TypographyVariant = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'span';\nexport type TypographySize = 'xs' | 'sm' | 'base' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | '5xl';\nexport type TypographyWeight = 'light' | 'normal' | 'medium' | 'semibold' | 'bold';\nexport type TypographyColor = 'text' | 'text-secondary' | 'text-disabled' | 'primary' | 'secondary' | 'success' | 'warning' | 'error';\nexport type TypographyLineHeight = 'tight' | 'normal' | 'relaxed';\n\nexport interface BaseComponent {\n disabled?: boolean;\n class?: string;\n}\n\n/**\n * Theme color configuration\n */\nexport interface ThemeColors {\n primary: string;\n 'primary-dark'?: string;\n 'primary-light'?: string;\n secondary: string;\n 'secondary-dark'?: string;\n 'secondary-light'?: string;\n background: string;\n 'background-elevated'?: string;\n surface: string;\n 'surface-hover'?: string;\n text: string;\n 'text-secondary'?: string;\n 'text-disabled'?: string;\n border: string;\n 'border-focus'?: string;\n success?: string;\n warning?: string;\n error?: string;\n info?: string;\n [key: string]: string | undefined;\n}\n\n/**\n * Custom theme configuration interface\n * Allows users to create their own themes with custom colors, typography, spacing, etc.\n * Supports both single theme and light/dark variants.\n */\nexport interface CustomTheme {\n name: string;\n colors: ThemeColors;\n /**\n * Optional light and dark variants for the theme\n * If provided, allows switching between light and dark modes\n */\n variants?: {\n light?: ThemeColors;\n dark?: ThemeColors;\n };\n typography?: {\n fontFamily?: {\n base?: string;\n mono?: string;\n [key: string]: string | undefined;\n };\n fontSize?: {\n xs?: string;\n sm?: string;\n base?: string;\n lg?: string;\n xl?: string;\n '2xl'?: string;\n '3xl'?: string;\n '4xl'?: string;\n '5xl'?: string;\n [key: string]: string | undefined;\n };\n fontWeight?: {\n light?: number;\n normal?: number;\n medium?: number;\n semibold?: number;\n bold?: number;\n [key: string]: number | undefined;\n };\n lineHeight?: {\n tight?: number;\n normal?: number;\n relaxed?: number;\n [key: string]: number | undefined;\n };\n };\n spacing?: {\n xs?: string;\n sm?: string;\n md?: string;\n lg?: string;\n xl?: string;\n '2xl'?: string;\n '3xl'?: string;\n '4xl'?: string;\n '5xl'?: string;\n [key: string]: string | undefined;\n };\n borderRadius?: {\n none?: string;\n sm?: string;\n md?: string;\n lg?: string;\n xl?: string;\n '2xl'?: string;\n full?: string;\n [key: string]: string | undefined;\n };\n shadow?: {\n none?: string;\n sm?: string;\n md?: string;\n lg?: string;\n xl?: string;\n '2xl'?: string;\n [key: string]: string | undefined;\n };\n}\n\n","/**\n * Shared index\n */\nexport * from './types';\n\n","import { Component, Input, ChangeDetectionStrategy, Optional, Injector } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport * as LucideIcons from 'lucide';\n\nexport type IconSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\nconst SIZE_MAP: Record<IconSize, number> = {\n xs: 12,\n sm: 16,\n md: 24,\n lg: 32,\n xl: 48,\n};\n\nconst ICON_COMPONENT_MAP: Record<string, any> = {\n home: LucideIcons.Home,\n menu: LucideIcons.Menu,\n 'x': LucideIcons.X,\n 'arrow-left': LucideIcons.ArrowLeft,\n 'arrow-right': LucideIcons.ArrowRight,\n 'arrow-up': LucideIcons.ArrowUp,\n 'arrow-down': LucideIcons.ArrowDown,\n 'chevron-left': LucideIcons.ChevronLeft,\n 'chevron-right': LucideIcons.ChevronRight,\n 'chevron-up': LucideIcons.ChevronUp,\n 'chevron-down': LucideIcons.ChevronDown,\n 'plus': LucideIcons.Plus,\n 'minus': LucideIcons.Minus,\n 'edit': LucideIcons.Edit,\n 'trash-2': LucideIcons.Trash2,\n 'save': LucideIcons.Save,\n 'search': LucideIcons.Search,\n 'filter': LucideIcons.Filter,\n 'more-vertical': LucideIcons.MoreVertical,\n 'more-horizontal': LucideIcons.MoreHorizontal,\n 'check': LucideIcons.Check,\n 'check-circle': LucideIcons.CheckCircle,\n 'x-circle': LucideIcons.XCircle,\n 'info': LucideIcons.Info,\n 'alert-triangle': LucideIcons.AlertTriangle,\n 'alert-circle': LucideIcons.AlertCircle,\n 'star': LucideIcons.Star,\n 'mail': LucideIcons.Mail,\n 'bell': LucideIcons.Bell,\n 'share-2': LucideIcons.Share2,\n 'file': LucideIcons.File,\n 'folder': LucideIcons.Folder,\n 'download': LucideIcons.Download,\n 'upload': LucideIcons.Upload,\n 'settings': LucideIcons.Settings,\n 'refresh-cw': LucideIcons.RefreshCw,\n 'lock': LucideIcons.Lock,\n 'unlock': LucideIcons.Unlock,\n 'eye': LucideIcons.Eye,\n 'eye-off': LucideIcons.EyeOff,\n 'user': LucideIcons.User,\n 'user-circle': LucideIcons.UserCircle,\n 'log-out': LucideIcons.LogOut,\n 'log-in': LucideIcons.LogIn,\n};\n\nconst ICON_NAME_MAP: Record<string, string> = {\n home: 'home',\n menu: 'menu',\n close: 'x',\n arrow_back: 'arrow-left',\n arrow_forward: 'arrow-right',\n arrow_up: 'arrow-up',\n arrow_down: 'arrow-down',\n chevron_left: 'chevron-left',\n chevron_right: 'chevron-right',\n chevron_up: 'chevron-up',\n chevron_down: 'chevron-down',\n add: 'plus',\n remove: 'minus',\n edit: 'edit',\n delete: 'trash-2',\n save: 'save',\n search: 'search',\n filter: 'filter',\n more_vert: 'more-vertical',\n more_horiz: 'more-horizontal',\n check: 'check',\n check_circle: 'check-circle',\n cancel: 'x-circle',\n info: 'info',\n warning: 'alert-triangle',\n error: 'alert-circle',\n star: 'star',\n star_filled: 'star',\n mail: 'mail',\n notification: 'bell',\n share: 'share-2',\n file: 'file',\n folder: 'folder',\n download: 'download',\n upload: 'upload',\n settings: 'settings',\n refresh: 'refresh-cw',\n lock: 'lock',\n unlock: 'unlock',\n visibility: 'eye',\n visibility_off: 'eye-off',\n person: 'user',\n account_circle: 'user-circle',\n logout: 'log-out',\n login: 'log-in',\n};\n\n@Component({\n selector: 'sefin-icon',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './icon.component.html',\n styleUrls: ['./icon.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IconComponent {\n private sanitizer: DomSanitizer | null = null;\n\n constructor(private injector: Injector) {\n try {\n this.sanitizer = this.injector.get(DomSanitizer, null);\n } catch (e) {\n this.sanitizer = null;\n }\n }\n \n /** Icon name from Lucide Angular (e.g., 'home', 'search', 'user') */\n @Input() name?: string;\n /** Icon size. Options: 'xs' | 'sm' | 'md' | 'lg' | 'xl' */\n @Input() size: IconSize = 'md';\n /** Custom color for the icon */\n @Input() color?: string;\n /** Whether the icon should be rotated 180 degrees */\n @Input() rotate = false;\n /** Whether the icon should be flipped horizontally */\n @Input() flipH = false;\n /** Whether the icon should be flipped vertically */\n @Input() flipV = false;\n /** Additional CSS classes */\n @Input() class = '';\n\n get iconClasses(): string {\n return [\n 'sefin-icon',\n `sefin-icon--${this.size}`,\n this.rotate ? 'sefin-icon--rotate' : '',\n this.flipH ? 'sefin-icon--flip-h' : '',\n this.flipV ? 'sefin-icon--flip-v' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get sizeValue(): number {\n return SIZE_MAP[this.size];\n }\n\n get lucideIconName(): string | undefined {\n if (!this.name) {\n return undefined;\n }\n return ICON_NAME_MAP[this.name] || this.name;\n }\n\n get iconSvgHtml(): any {\n const iconName = this.lucideIconName;\n if (!iconName) {\n return '';\n }\n\n let iconData = ICON_COMPONENT_MAP[iconName];\n \n if (!iconData) {\n const pascalCaseName = iconName\n .split('-')\n .map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join('');\n \n iconData = (LucideIcons as any)[pascalCaseName];\n }\n \n if (!iconData || !Array.isArray(iconData)) {\n return '';\n }\n\n try {\n const size = this.sizeValue;\n const color = this.color || 'currentColor';\n const transform = this.getTransform();\n \n const paths = iconData\n .map((item: any) => {\n if (!Array.isArray(item) || item.length < 2) {\n return '';\n }\n \n const tag = item[0];\n const attrs = item[1] || {};\n \n if (tag === 'path') {\n const d = attrs.d || '';\n return `<path d=\"${d}\"></path>`;\n }\n if (tag === 'circle') {\n return `<circle cx=\"${attrs.cx || 0}\" cy=\"${attrs.cy || 0}\" r=\"${attrs.r || 0}\"></circle>`;\n }\n if (tag === 'line') {\n return `<line x1=\"${attrs.x1 || 0}\" y1=\"${attrs.y1 || 0}\" x2=\"${attrs.x2 || 0}\" y2=\"${attrs.y2 || 0}\"></line>`;\n }\n if (tag === 'polyline') {\n const points = attrs.points || '';\n return `<polyline points=\"${points}\"></polyline>`;\n }\n if (tag === 'rect') {\n return `<rect x=\"${attrs.x || 0}\" y=\"${attrs.y || 0}\" width=\"${attrs.width || 0}\" height=\"${attrs.height || 0}\"></rect>`;\n }\n if (tag === 'polygon') {\n const points = attrs.points || '';\n return `<polygon points=\"${points}\"></polygon>`;\n }\n return '';\n })\n .filter(Boolean)\n .join('');\n\n if (!paths) {\n return '';\n }\n\n const transformAttr = transform ? ` style=\"transform: ${transform}\"` : '';\n const safeColor = color.includes('\"') ? color.replace(/\"/g, '"') : color;\n const svgHtml = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${size}\" height=\"${size}\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"${safeColor}\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"${transformAttr}>${paths}</svg>`;\n \n if (this.sanitizer) {\n return this.sanitizer.bypassSecurityTrustHtml(svgHtml);\n }\n \n return svgHtml;\n } catch (error) {\n return '';\n }\n }\n\n private escapeHtml(text: string): string {\n if (typeof document === 'undefined') {\n return text.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/\"/g, '"').replace(/'/g, ''');\n }\n const div = document.createElement('div');\n div.textContent = text;\n return div.innerHTML;\n }\n\n private getTransform(): string {\n const transforms: string[] = [];\n if (this.rotate) transforms.push('rotate(180)');\n if (this.flipH) transforms.push('scaleX(-1)');\n if (this.flipV) transforms.push('scaleY(-1)');\n return transforms.length > 0 ? transforms.join(' ') : '';\n }\n\n}\n\n","<span\n [class]=\"iconClasses\"\n [attr.aria-hidden]=\"true\"\n role=\"img\"\n style=\"display: inline-flex; align-items: center; justify-content: center; width: 100%; height: 100%;\"\n>\n <span [innerHTML]=\"iconSvgHtml\" style=\"display: inline-block; width: 100%; height: 100%;\"></span>\n</span>\n\n","import {\n Component,\n Input,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IconComponent } from '../icon/icon.component';\n\nexport type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n@Component({\n selector: 'sefin-avatar',\n standalone: true,\n imports: [CommonModule, IconComponent],\n templateUrl: './avatar.component.html',\n styleUrls: ['./avatar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AvatarComponent {\n /** Avatar size. Options: 'xs' | 'sm' | 'md' | 'lg' | 'xl' */\n @Input() size: AvatarSize = 'md';\n /** Image source URL */\n @Input() src?: string;\n /** Alt text for the image */\n @Input() alt = '';\n /** Initials to display when no image is provided */\n @Input() initials?: string;\n /** Whether to show a border/ring around the avatar */\n @Input() bordered = false;\n /** Additional CSS classes */\n @Input() class = '';\n\n get avatarClasses(): string {\n return [\n 'sefin-avatar',\n `sefin-avatar--${this.size}`,\n this.bordered ? 'sefin-avatar--bordered' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get displayInitials(): string {\n if (this.initials) {\n return this.initials.toUpperCase().slice(0, 2);\n }\n return '';\n }\n\n onImageError(event: Event): void {\n const img = event.target as HTMLImageElement;\n img.style.display = 'none';\n }\n\n get iconSize(): 'xs' | 'sm' | 'md' | 'lg' | 'xl' {\n // Map avatar size to icon size\n const sizeMap: Record<AvatarSize, 'xs' | 'sm' | 'md' | 'lg' | 'xl'> = {\n xs: 'xs',\n sm: 'xs',\n md: 'sm',\n lg: 'md',\n xl: 'lg',\n };\n return sizeMap[this.size];\n }\n}\n\n","<div [class]=\"avatarClasses\">\n <img\n *ngIf=\"src\"\n [src]=\"src\"\n [alt]=\"alt || 'Avatar'\"\n (error)=\"onImageError($event)\"\n class=\"sefin-avatar__image\"\n />\n <span *ngIf=\"!src && displayInitials\" class=\"sefin-avatar__initials\">\n {{ displayInitials }}\n </span>\n <sefin-icon\n *ngIf=\"!src && !displayInitials\"\n name=\"user\"\n [size]=\"iconSize\"\n class=\"sefin-avatar__icon\"\n ></sefin-icon>\n</div>\n\n","import { Component, Input, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport type BadgeVariant =\n | 'default'\n | 'primary'\n | 'secondary'\n | 'success'\n | 'warning'\n | 'error';\nexport type BadgeSize = 'sm' | 'md' | 'lg';\n\n@Component({\n selector: 'sefin-badge',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './badge.component.html',\n styleUrls: ['./badge.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BadgeComponent {\n /** Badge variant style. Options: 'default' | 'primary' | 'secondary' | 'success' | 'warning' | 'error' */\n @Input() variant: BadgeVariant = 'default';\n /** Badge size. Options: 'sm' | 'md' | 'lg' */\n @Input() size: BadgeSize = 'md';\n /** Whether the badge should be displayed as a dot (no text) */\n @Input() dot = false;\n /** Maximum number to show before displaying as \"+N\" */\n @Input() max?: number;\n /** Badge value (number or text) */\n @Input() value?: number | string;\n /** Additional CSS classes */\n @Input() class = '';\n\n get badgeClasses(): string {\n return [\n 'sefin-badge',\n `sefin-badge--${this.variant}`,\n `sefin-badge--${this.size}`,\n this.dot ? 'sefin-badge--dot' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get displayValue(): string {\n if (this.dot) {\n return '';\n }\n\n if (this.value === undefined || this.value === null) {\n return '';\n }\n\n if (typeof this.value === 'number') {\n if (this.max !== undefined && this.value > this.max) {\n return `+${this.max}`;\n }\n return String(this.value);\n }\n\n return String(this.value);\n }\n}\n","<span [class]=\"badgeClasses\" [attr.aria-label]=\"displayValue || 'Badge'\">\n <span *ngIf=\"!dot\" class=\"sefin-badge__content\">{{ displayValue }}</span>\n</span>","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonVariant, ButtonSize } from '../../shared/types';\n\n@Component({\n selector: 'sefin-button',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ButtonComponent {\n /** Button variant style. Options: 'primary' | 'secondary' | 'outline' | 'ghost' | 'danger' */\n @Input() variant: ButtonVariant = 'primary';\n /** Button size. Options: 'sm' | 'md' | 'lg' */\n @Input() size: ButtonSize = 'md';\n /** Whether the button is disabled */\n @Input() disabled = false;\n /** Button type. Options: 'button' | 'submit' | 'reset' */\n @Input() type: 'button' | 'submit' | 'reset' = 'button';\n /** Additional CSS classes */\n @Input() class = '';\n\n @Output() clicked = new EventEmitter<MouseEvent>();\n\n onClick(event: MouseEvent): void {\n if (!this.disabled) {\n this.clicked.emit(event);\n }\n }\n\n get buttonClasses(): string {\n return [\n 'sefin-button',\n `sefin-button--${this.variant}`,\n `sefin-button--${this.size}`,\n this.disabled ? 'sefin-button--disabled' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n","<button [type]=\"type\" [disabled]=\"disabled\" [class]=\"buttonClasses\" (click)=\"onClick($event)\">\n <ng-content></ng-content>\n</button>\n","/**\n * Icon exports\n */\nexport * from './icon.component';\n// export * from './lucide-icon-map'; // Disabled - lucide-angular removed\n\n","import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonVariant, ButtonSize } from '../../shared/types';\n\n@Component({\n selector: 'sefin-icon-button',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './icon-button.component.html',\n styleUrls: ['./icon-button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IconButtonComponent {\n /** Button variant style. Options: 'primary' | 'secondary' | 'outline' | 'ghost' | 'danger' */\n @Input() variant: ButtonVariant = 'primary';\n /** Button size. Options: 'sm' | 'md' | 'lg' */\n @Input() size: ButtonSize = 'md';\n /** Whether the button is disabled */\n @Input() disabled = false;\n /** Button type. Options: 'button' | 'submit' | 'reset' */\n @Input() type: 'button' | 'submit' | 'reset' = 'button';\n /** Additional CSS classes */\n @Input() class = '';\n /** Accessibility label for the button */\n @Input() ariaLabel = '';\n /** Whether the button should be rounded (circular) */\n @Input() rounded = false;\n\n @Output() clicked = new EventEmitter<MouseEvent>();\n\n onClick(event: MouseEvent): void {\n if (!this.disabled) {\n this.clicked.emit(event);\n }\n }\n\n get buttonClasses(): string {\n return [\n 'sefin-icon-button',\n `sefin-icon-button--${this.variant}`,\n `sefin-icon-button--${this.size}`,\n this.disabled ? 'sefin-icon-button--disabled' : '',\n this.rounded ? 'sefin-icon-button--rounded' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n\n","<button \n [type]=\"type\" \n [disabled]=\"disabled\" \n [class]=\"buttonClasses\" \n (click)=\"onClick($event)\"\n [attr.aria-label]=\"ariaLabel || null\"\n>\n <ng-content></ng-content>\n</button>\n\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonVariant } from '../../shared/types';\n\nexport type FabSize = 'sm' | 'md' | 'lg';\n\n@Component({\n selector: 'sefin-fab-button',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './fab-button.component.html',\n styleUrls: ['./fab-button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FabButtonComponent {\n /** Button variant style. Options: 'primary' | 'secondary' | 'outline' | 'ghost' | 'danger' */\n @Input() variant: ButtonVariant = 'primary';\n /** FAB size. Options: 'sm' | 'md' | 'lg' */\n @Input() size: FabSize = 'md';\n /** Whether the button is disabled */\n @Input() disabled = false;\n /** Button type. Options: 'button' | 'submit' | 'reset' */\n @Input() type: 'button' | 'submit' | 'reset' = 'button';\n /** Additional CSS classes */\n @Input() class = '';\n /** Accessibility label for the button */\n @Input() ariaLabel = '';\n\n @Output() clicked = new EventEmitter<MouseEvent>();\n\n onClick(event: MouseEvent): void {\n if (!this.disabled) {\n this.clicked.emit(event);\n }\n }\n\n get buttonClasses(): string {\n return [\n 'sefin-fab-button',\n `sefin-fab-button--${this.variant}`,\n `sefin-fab-button--${this.size}`,\n this.disabled ? 'sefin-fab-button--disabled' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n\n","<button \n [type]=\"type\" \n [disabled]=\"disabled\" \n [class]=\"buttonClasses\" \n (click)=\"onClick($event)\"\n [attr.aria-label]=\"ariaLabel || null\"\n>\n <ng-content></ng-content>\n</button>\n\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport type ChipVariant = 'default' | 'primary' | 'secondary' | 'outline' | 'ghost';\nexport type ChipSize = 'sm' | 'md' | 'lg';\n\n@Component({\n selector: 'sefin-chip',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './chip.component.html',\n styleUrls: ['./chip.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChipComponent {\n /** Chip variant style. Options: 'default' | 'primary' | 'secondary' | 'outline' | 'ghost' */\n @Input() variant: ChipVariant = 'default';\n /** Chip size. Options: 'sm' | 'md' | 'lg' */\n @Input() size: ChipSize = 'md';\n /** Whether the chip is disabled */\n @Input() disabled = false;\n /** Whether the chip can be removed (shows remove button) */\n @Input() removable = false;\n /** Whether the chip is selected (for selectable chips) */\n @Input() selected = false;\n /** Additional CSS classes */\n @Input() class = '';\n\n @Output() removed = new EventEmitter<MouseEvent>();\n @Output() clicked = new EventEmitter<MouseEvent>();\n\n onRemove(event: MouseEvent): void {\n event.stopPropagation();\n if (!this.disabled) {\n this.removed.emit(event);\n }\n }\n\n onClick(event: MouseEvent): void {\n if (!this.disabled) {\n this.clicked.emit(event);\n }\n }\n\n get chipClasses(): string {\n return [\n 'sefin-chip',\n `sefin-chip--${this.variant}`,\n `sefin-chip--${this.size}`,\n this.disabled ? 'sefin-chip--disabled' : '',\n this.selected ? 'sefin-chip--selected' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n\n","<div\n [class]=\"chipClasses\"\n (click)=\"onClick($event)\"\n [attr.aria-disabled]=\"disabled\"\n [attr.aria-selected]=\"selected\"\n role=\"button\"\n tabindex=\"0\"\n>\n <span class=\"sefin-chip__content\">\n <ng-content></ng-content>\n </span>\n <button\n *ngIf=\"removable && !disabled\"\n type=\"button\"\n class=\"sefin-chip__remove\"\n (click)=\"onRemove($event)\"\n aria-label=\"Remove\"\n tabindex=\"-1\"\n >\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M10.5 3.5L3.5 10.5M3.5 3.5L10.5 10.5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </button>\n</div>\n\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IconComponent } from '../icon/icon.component';\n\nexport type TagVariant =\n | 'default'\n | 'primary'\n | 'secondary'\n | 'success'\n | 'warning'\n | 'error'\n | 'info';\nexport type TagSize = 'sm' | 'md' | 'lg';\n\n@Component({\n selector: 'sefin-tag',\n standalone: true,\n imports: [CommonModule, IconComponent],\n templateUrl: './tag.component.html',\n styleUrls: ['./tag.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TagComponent {\n /** Tag variant style. Options: 'default' | 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'info' */\n @Input() variant: TagVariant = 'default';\n /** Tag size. Options: 'sm' | 'md' | 'lg' */\n @Input() size: TagSize = 'md';\n /** Icon name to display before the tag content */\n @Input() icon?: string;\n /** Whether the tag can be removed (shows remove button) */\n @Input() removable = false;\n /** Whether the tag is disabled */\n @Input() disabled = false;\n /** Additional CSS classes */\n @Input() class = '';\n\n /** Event emitted when the tag is removed */\n @Output() removed = new EventEmitter<MouseEvent>();\n\n onRemove(event: MouseEvent): void {\n event.stopPropagation();\n if (!this.disabled) {\n this.removed.emit(event);\n }\n }\n\n get tagClasses(): string {\n return [\n 'sefin-tag',\n `sefin-tag--${this.variant}`,\n `sefin-tag--${this.size}`,\n this.disabled ? 'sefin-tag--disabled' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get iconSize(): 'xs' | 'sm' | 'md' {\n if (this.size === 'sm') return 'xs';\n if (this.size === 'lg') return 'sm';\n return 'sm';\n }\n}\n\n","<span\n [class]=\"tagClasses\"\n [attr.aria-disabled]=\"disabled\"\n role=\"status\"\n>\n <span class=\"sefin-tag__content\">\n <sefin-icon\n *ngIf=\"icon\"\n [name]=\"icon\"\n [size]=\"iconSize\"\n class=\"sefin-tag__icon\"\n ></sefin-icon>\n <ng-content></ng-content>\n </span>\n <button\n *ngIf=\"removable && !disabled\"\n type=\"button\"\n class=\"sefin-tag__remove\"\n (click)=\"onRemove($event)\"\n aria-label=\"Remove tag\"\n tabindex=\"-1\"\n >\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </button>\n</span>\n\n","import { Component, Input, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport type LinkVariant = 'default' | 'primary' | 'secondary' | 'underline';\nexport type LinkSize = 'sm' | 'md' | 'lg';\n\n@Component({\n selector: 'sefin-link',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './link.component.html',\n styleUrls: ['./link.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class LinkComponent {\n /** Link variant style. Options: 'default' | 'primary' | 'secondary' | 'underline' */\n @Input() variant: LinkVariant = 'default';\n /** Link size. Options: 'sm' | 'md' | 'lg' */\n @Input() size: LinkSize = 'md';\n /** Whether the link is disabled */\n @Input() disabled = false;\n /** Link URL */\n @Input() href?: string;\n /** Link target attribute (e.g., '_blank') */\n @Input() target?: string;\n /** Link rel attribute */\n @Input() rel?: string;\n /** Additional CSS classes */\n @Input() class = '';\n /** Whether to show underline */\n @Input() underline = false;\n\n get linkClasses(): string {\n return [\n 'sefin-link',\n `sefin-link--${this.variant}`,\n `sefin-link--${this.size}`,\n this.disabled ? 'sefin-link--disabled' : '',\n this.underline ? 'sefin-link--underline' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n onClick(event: Event): void {\n if (this.disabled) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n}\n\n","<a\n [class]=\"linkClasses\"\n [href]=\"disabled ? null : (href || '#')\"\n [attr.target]=\"target\"\n [attr.rel]=\"rel\"\n [attr.aria-disabled]=\"disabled ? true : null\"\n (click)=\"onClick($event)\"\n>\n <ng-content></ng-content>\n</a>\n\n","import { Component, Input, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'sefin-stack',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './stack.component.html',\n styleUrls: ['./stack.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class StackComponent {\n @Input() direction: 'row' | 'column' = 'column';\n @Input() spacing: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' = 'md';\n @Input() align: 'start' | 'center' | 'end' | 'stretch' = 'stretch';\n @Input() justify: 'start' | 'center' | 'end' | 'space-between' | 'space-around' | 'space-evenly' = 'start';\n @Input() wrap: boolean = false;\n @Input() class = '';\n\n get stackClasses(): string {\n return [\n 'sefin-stack',\n `sefin-stack--${this.direction}`,\n `sefin-stack--spacing-${this.spacing}`,\n `sefin-stack--align-${this.align}`,\n `sefin-stack--justify-${this.justify}`,\n this.wrap ? 'sefin-stack--wrap' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get spacingValue(): string {\n const spacingMap: Record<string, string> = {\n 'xs': '4px',\n 'sm': '8px',\n 'md': '16px',\n 'lg': '24px',\n 'xl': '32px',\n '2xl': '48px',\n };\n return spacingMap[this.spacing] || spacingMap['md'];\n }\n\n get stackStyles(): { [key: string]: string } {\n return {\n gap: this.spacingValue,\n };\n }\n}\n\n","<div [class]=\"stackClasses\" [ngStyle]=\"stackStyles\">\n <ng-content></ng-content>\n</div>\n\n","import { Component, Input, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport type ContainerSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';\nexport type ContainerVariant = 'default' | 'fluid' | 'fixed';\n\n@Component({\n selector: 'sefin-container',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './container.component.html',\n styleUrls: ['./container.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ContainerComponent {\n /** Container size. Options: 'sm' | 'md' | 'lg' | 'xl' | 'full' */\n @Input() size: ContainerSize = 'md';\n /** Container variant. Options: 'default' | 'fluid' | 'fixed' */\n @Input() variant: ContainerVariant = 'default';\n /** Whether the container has padding */\n @Input() padding = true;\n /** Additional CSS classes */\n @Input() class = '';\n\n get containerClasses(): string {\n return [\n 'sefin-container',\n `sefin-container--${this.size}`,\n `sefin-container--${this.variant}`,\n this.padding ? 'sefin-container--padded' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n\n","<div [class]=\"containerClasses\">\n <ng-content></ng-content>\n</div>\n\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n forwardRef,\n ViewChild,\n ElementRef,\n AfterViewInit,\n OnChanges,\n SimpleChanges,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { InputSize } from '../../shared/types';\n\n@Component({\n selector: 'sefin-checkbox',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxComponent),\n multi: true,\n },\n ],\n})\nexport class CheckboxComponent implements ControlValueAccessor, AfterViewInit, OnChanges {\n @ViewChild('checkboxInput', { static: false }) checkboxInput?: ElementRef<HTMLInputElement>;\n \n @Input() size: InputSize = 'md';\n @Input() disabled = false;\n @Input() indeterminate = false;\n @Input() class = '';\n @Input() label = '';\n @Input() name = '';\n @Input() value: boolean = false;\n\n @Output() valueChange = new EventEmitter<boolean>();\n @Output() checkedChange = new EventEmitter<boolean>();\n\n private onChange = (value: boolean) => {};\n private onTouched = () => {};\n\n ngAfterViewInit(): void {\n if (this.checkboxInput?.nativeElement && this.indeterminate && !this.value) {\n this.checkboxInput.nativeElement.indeterminate = true;\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.checkboxInput?.nativeElement && (changes['indeterminate'] || changes['value'])) {\n this.checkboxInput.nativeElement.indeterminate = this.indeterminate && !this.value;\n }\n }\n\n onCheckboxChange(event: Event): void {\n if (this.disabled) {\n return;\n }\n\n const target = event.target as HTMLInputElement;\n this.value = target.checked;\n this.indeterminate = false;\n \n if (this.checkboxInput?.nativeElement) {\n this.checkboxInput.nativeElement.indeterminate = false;\n }\n \n this.onChange(this.value);\n this.onTouched();\n this.valueChange.emit(this.value);\n this.checkedChange.emit(this.value);\n }\n\n writeValue(value: boolean): void {\n this.value = value;\n if (value) {\n this.indeterminate = false;\n if (this.checkboxInput?.nativeElement) {\n this.checkboxInput.nativeElement.indeterminate = false;\n }\n }\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n get wrapperClasses(): string {\n return [\n 'sefin-checkbox__wrapper',\n this.disabled ? 'sefin-checkbox__wrapper--disabled' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n\n","<label [class]=\"wrapperClasses\">\n <input\n type=\"checkbox\"\n class=\"sefin-checkbox\"\n [class.sefin-checkbox--sm]=\"size === 'sm'\"\n [class.sefin-checkbox--md]=\"size === 'md'\"\n [class.sefin-checkbox--lg]=\"size === 'lg'\"\n [class.sefin-checkbox--disabled]=\"disabled\"\n [checked]=\"value\"\n [disabled]=\"disabled\"\n [name]=\"name\"\n (change)=\"onCheckboxChange($event)\"\n #checkboxInput\n />\n <span \n class=\"sefin-checkbox__checkmark\" \n [class.sefin-checkbox__checkmark--sm]=\"size === 'sm'\" \n [class.sefin-checkbox__checkmark--md]=\"size === 'md'\" \n [class.sefin-checkbox__checkmark--lg]=\"size === 'lg'\" \n [class.sefin-checkbox__checkmark--checked]=\"value\" \n [class.sefin-checkbox__checkmark--indeterminate]=\"indeterminate && !value\"\n >\n <svg\n *ngIf=\"value\"\n class=\"sefin-checkbox__icon\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M13.3333 4L6 11.3333L2.66667 8\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n <svg\n *ngIf=\"indeterminate && !value\"\n class=\"sefin-checkbox__icon\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4 8H12\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n />\n </svg>\n </span>\n <span *ngIf=\"label\" class=\"sefin-checkbox__label\" [class.sefin-checkbox__label--sm]=\"size === 'sm'\" [class.sefin-checkbox__label--md]=\"size === 'md'\" [class.sefin-checkbox__label--lg]=\"size === 'lg'\">{{ label }}</span>\n</label>\n\n\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n forwardRef,\n ViewChild,\n ElementRef,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { InputSize } from '../../shared/types';\n\n@Component({\n selector: 'sefin-radio',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './radio.component.html',\n styleUrls: ['./radio.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RadioComponent),\n multi: true,\n },\n ],\n})\nexport class RadioComponent implements ControlValueAccessor {\n @ViewChild('radioInput', { static: false }) radioInput?: ElementRef<HTMLInputElement>;\n \n @Input() size: InputSize = 'md';\n @Input() disabled = false;\n @Input() class = '';\n @Input() label = '';\n @Input() name = '';\n @Input() value: string | number = '';\n @Input() checked = false;\n\n @Output() valueChange = new EventEmitter<string | number>();\n @Output() checkedChange = new EventEmitter<boolean>();\n\n private onChange = (value: string | number) => {};\n private onTouched = () => {};\n\n onRadioChange(event: Event): void {\n if (this.disabled) {\n return;\n }\n\n const target = event.target as HTMLInputElement;\n this.checked = target.checked;\n \n this.onChange(this.value);\n this.onTouched();\n this.valueChange.emit(this.value);\n this.checkedChange.emit(this.checked);\n }\n\n writeValue(value: string | number): void {\n // For radio buttons, the value is managed by the form control\n // The checked state is determined by comparing the value\n if (value === this.value) {\n this.checked = true;\n } else {\n this.checked = false;\n }\n }\n\n registerOnChange(fn: (value: string | number) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n get wrapperClasses(): string {\n return [\n 'sefin-radio__wrapper',\n this.disabled ? 'sefin-radio__wrapper--disabled' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n\n","<label [class]=\"wrapperClasses\">\n <input\n type=\"radio\"\n class=\"sefin-radio\"\n [class.sefin-radio--sm]=\"size === 'sm'\"\n [class.sefin-radio--md]=\"size === 'md'\"\n [class.sefin-radio--lg]=\"size === 'lg'\"\n [class.sefin-radio--disabled]=\"disabled\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [name]=\"name\"\n [value]=\"value\"\n (change)=\"onRadioChange($event)\"\n #radioInput\n />\n <span \n class=\"sefin-radio__circle\" \n [class.sefin-radio__circle--sm]=\"size === 'sm'\" \n [class.sefin-radio__circle--md]=\"size === 'md'\" \n [class.sefin-radio__circle--lg]=\"size === 'lg'\" \n [class.sefin-radio__circle--checked]=\"checked\"\n >\n <span *ngIf=\"checked\" class=\"sefin-radio__dot\"></span>\n </span>\n <span *ngIf=\"label\" class=\"sefin-radio__label\" [class.sefin-radio__label--sm]=\"size === 'sm'\" [class.sefin-radio__label--md]=\"size === 'md'\" [class.sefin-radio__label--lg]=\"size === 'lg'\">{{ label }}</span>\n</label>\n\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n forwardRef,\n ViewChild,\n ElementRef,\n OnInit,\n OnDestroy,\n OnChanges,\n SimpleChanges,\n HostListener,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { InputSize } from '../../shared/types';\n\nexport interface SelectOption {\n value: string | number;\n label: string;\n disabled?: boolean;\n}\n\n@Component({\n selector: 'sefin-select',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectComponent),\n multi: true,\n },\n ],\n})\nexport class SelectComponent\n implements ControlValueAccessor, OnInit, OnDestroy, OnChanges\n{\n @ViewChild('containerRef', { static: false })\n containerRef?: ElementRef<HTMLDivElement>;\n @ViewChild('dropdownRef', { static: false })\n dropdownRef?: ElementRef<HTMLDivElement>;\n @ViewChild('buttonRef', { static: false })\n buttonRef?: ElementRef<HTMLButtonElement>;\n\n @Input() options: SelectOption[] = [];\n @Input() placeholder = 'Seleccionar...';\n @Input() disabled = false;\n @Input() size: InputSize = 'md';\n @Input() class = '';\n @Input() value: string | number | null = null;\n\n @Output() valueChange = new EventEmitter<string | number | null>();\n @Output() optionSelected = new EventEmitter<SelectOption>();\n\n isOpen = false;\n selectedIndex = -1;\n\n private onChange = (value: string | number | null) => {};\n private onTouched = () => {};\n\n ngOnInit(): void {\n this.updateSelectedIndex();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['value'] || changes['options']) {\n this.updateSelectedIndex();\n }\n }\n\n ngOnDestroy(): void {}\n\n @HostListener('document:click', ['$event'])\n onClickOutside(event: MouseEvent): void {\n if (this.containerRef?.nativeElement && this.isOpen) {\n const clickedInside = this.containerRef.nativeElement.contains(\n event.target as Node\n );\n if (!clickedInside) {\n this.closeDropdown();\n }\n }\n }\n\n @HostListener('document:keydown.escape', ['$event'])\n onEscapeKey(event: Event): void {\n const keyboardEvent = event as KeyboardEvent;\n if (this.isOpen) {\n keyboardEvent.preventDefault();\n this.closeDropdown();\n this.buttonRef?.nativeElement?.focus();\n }\n }\n\n toggleDropdown(): void {\n if (this.disabled) return;\n\n if (this.isOpen) {\n this.closeDropdown();\n } else {\n this.openDropdown();\n }\n }\n\n openDropdown(): void {\n if (this.disabled || !this.options || this.options.length === 0) return;\n\n this.isOpen = true;\n this.updateSelectedIndex();\n \n // If no selection, focus first enabled option\n if (this.selectedIndex < 0) {\n const enabledOptions = this.options.filter((opt) => !opt.disabled);\n if (enabledOptions.length > 0) {\n this.selectedIndex = this.options.indexOf(enabledOptions[0]);\n }\n }\n \n // Scroll to selected option when opening\n setTimeout(() => {\n this.scrollToSelected();\n }, 0);\n }\n\n closeDropdown(): void {\n this.isOpen = false;\n this.selectedIndex = -1;\n }\n\n selectOption(option: SelectOption): void {\n if (option.disabled) return;\n\n this.value = option.value;\n this.onChange(this.value);\n this.onTouched();\n this.valueChange.emit(this.value);\n this.optionSelected.emit(option);\n this.closeDropdown();\n this.buttonRef?.nativeElement?.focus();\n }\n\n onKeyDown(event: KeyboardEvent): void {\n if (this.disabled) return;\n\n if (!this.isOpen) {\n if (event.key === 'Enter' || event.key === ' ' || event.key === 'ArrowDown') {\n event.preventDefault();\n this.openDropdown();\n }\n return;\n }\n\n if (!this.options || this.options.length === 0) return;\n\n const enabledOptions = this.options.filter((opt) => !opt.disabled);\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n if (enabledOptions.length === 0) return;\n \n let nextIndex = this.selectedIndex + 1;\n while (nextIndex < this.options.length && this.options[nextIndex].disabled) {\n nextIndex++;\n }\n \n if (nextIndex < this.options.length) {\n this.selectedIndex = nextIndex;\n } else {\n // Wrap to first enabled option\n this.selectedIndex = this.options.indexOf(enabledOptions[0]);\n }\n setTimeout(() => this.scrollToSelected(), 0);\n break;\n case 'ArrowUp':\n event.preventDefault();\n if (enabledOptions.length === 0) return;\n \n let prevIndex = this.selectedIndex - 1;\n while (prevIndex >= 0 && this.options[prevIndex].disabled) {\n prevIndex--;\n }\n \n if (prevIndex >= 0) {\n this.selectedIndex = prevIndex;\n } else {\n // Wrap to last enabled option\n const lastOption = enabledOptions[enabledOptions.length - 1];\n this.selectedIndex = this.options.indexOf(lastOption);\n }\n setTimeout(() => this.scrollToSelected(), 0);\n break;\n case 'Enter':\n event.preventDefault();\n if (this.selectedIndex >= 0 && this.selectedIndex < this.options.length) {\n const option = this.options[this.selectedIndex];\n if (!option.disabled) {\n this.selectOption(option);\n }\n }\n break;\n case 'Escape':\n event.preventDefault();\n this.closeDropdown();\n this.buttonRef?.nativeElement?.focus();\n break;\n case 'Home':\n event.preventDefault();\n if (enabledOptions.length > 0) {\n this.selectedIndex = this.options.indexOf(enabledOptions[0]);\n setTimeout(() => this.scrollToSelected(), 0);\n }\n break;\n case 'End':\n event.preventDefault();\n if (enabledOptions.length > 0) {\n const lastOption = enabledOptions[enabledOptions.length - 1];\n this.selectedIndex = this.options.indexOf(lastOption);\n setTimeout(() => this.scrollToSelected(), 0);\n }\n break;\n }\n }\n\n private updateSelectedIndex(): void {\n if (this.value === null || !this.options) {\n this.selectedIndex = -1;\n return;\n }\n\n const index = this.options.findIndex((opt) => opt.value === this.value);\n this.selectedIndex = index >= 0 ? index : -1;\n }\n\n private scrollToSelected(): void {\n try {\n if (\n this.dropdownRef?.nativeElement &&\n this.selectedIndex >= 0 &&\n this.selectedIndex < this.options.length\n ) {\n const selectedElement = this.dropdownRef.nativeElement.querySelector(\n `[data-index=\"${this.selectedIndex}\"]`\n ) as HTMLElement | null;\n if (selectedElement && selectedElement instanceof HTMLElement) {\n selectedElement.scrollIntoView({\n block: 'nearest',\n behavior: 'smooth',\n });\n }\n }\n } catch (error) {\n console.warn('Could not scroll to selected option:', error);\n }\n }\n\n getSelectedLabel(): string {\n if (this.value === null || !this.options) {\n return '';\n }\n\n const selectedOption = this.options.find((opt) => opt.value === this.value);\n return selectedOption?.label || '';\n }\n\n writeValue(value: string | number | null): void {\n this.value = value;\n this.updateSelectedIndex();\n }\n\n registerOnChange(fn: (value: string | number | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n if (isDisabled && this.isOpen) {\n this.closeDropdown();\n }\n }\n\n get buttonClasses(): string {\n return [\n 'sefin-select__button',\n `sefin-select__button--${this.size}`,\n this.disabled ? 'sefin-select__button--disabled' : '',\n this.isOpen ? 'sefin-select__button--open' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get containerClasses(): string {\n return [\n 'sefin-select',\n this.isOpen ? 'sefin-select--open' : '',\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n\n","<div [class]=\"containerClasses\" #containerRef>\n <button\n #buttonRef\n type=\"button\"\n [class]=\"buttonClasses\"\n [disabled]=\"disabled\"\n (click)=\"toggleDropdown()\"\n (keydown)=\"onKeyDown($event)\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-haspopup]=\"true\"\n aria-label=\"Select option\"\n >\n <span class=\"sefin-select__value\" [class.sefin-select__value--placeholder]=\"!getSelectedLabel()\">\n {{ getSelectedLabel() || placeholder }}\n </span>\n <div class=\"sefin-select__arrow\" [class.sefin-select__arrow--open]=\"isOpen\">\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4 6L8 10L12 6\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </button>\n <div\n *ngIf=\"isOpen && options && options.length > 0\"\n #dropdownRef\n class=\"sefin-select__dropdown\"\n role=\"listbox\"\n >\n <ul class=\"sefin-select__list\">\n <li\n *ngFor=\"let option of options; let i = index\"\n [attr.data-index]=\"i\"\n [class.sefin-select__option]=\"true\"\n [class.sefin-select__option--selected]=\"i === selectedIndex\"\n [class.sefin-select__option--disabled]=\"option.disabled\"\n [class.sefin-select__option--active]=\"option.value === value\"\n (click)=\"selectOption(option)\"\n [attr.aria-selected]=\"option.value === value\"\n role=\"option\"\n >\n {{ option.label }}\n </li>\n </ul>\n </div>\n <div\n *ngIf=\"isOpen && (!options || options.length === 0)\"\n class=\"sefin-select__dropdown sefin-select__dropdown--empty\"\n >\n <div class=\"sefin-select__no-options\">\n No hay opciones disponibles\n </div>\n </div>\n</div>\n\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n forwardRef,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { InputSize } from '../../shared/types';\n\n@Component({\n selector: 'sefin-switch',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './switch.component.html',\n styleUrls: ['./switch.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SwitchComponent),\n multi: true,\n },\n ],\n})\nexport class SwitchComponent implements ControlValueAccessor {\n @Input() size: InputSize = 'md';\n @Input() disabled = false;\n @Input() class = '';\n @Input() label = '';\n @Input() name = '';\n @Input() value: boolean = false;\n\n @Output() valueChange = new EventEmitter<boolean>();\n @Output() checkedChange = new EventEmitter<boolean>();\n\n private onChange = (value: boolean) => {};\n private onTouched = () => {};\n\n onSwitchChange(event: Event): void {\n if (this.disabled) {\n return;\n }\n\n const target = event.target as HTMLInputElement;\n this.value = target.checked;\n \n this.onChange(this.value);\n this.onTouched();\n this.valueChange.emit(this.value);\n this.checkedChange.emit(this.value);\n }\n\n writeValue(value: boolean): void {\n this.value = value;\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n get wrapperClasses(): string {\n return [\n 'sefin-switch__wrapper',\n this.disabled ? 'sefin-switch__wrapper--disabled' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n\n","<label [class]=\"wrapperClasses\">\n <input\n type=\"checkbox\"\n class=\"sefin-switch\"\n [class.sefin-switch--sm]=\"size === 'sm'\"\n [class.sefin-switch--md]=\"size === 'md'\"\n [class.sefin-switch--lg]=\"size === 'lg'\"\n [class.sefin-switch--disabled]=\"disabled\"\n [checked]=\"value\"\n [disabled]=\"disabled\"\n [name]=\"name\"\n (change)=\"onSwitchChange($event)\"\n />\n <span \n class=\"sefin-switch__track\" \n [class.sefin-switch__track--sm]=\"size === 'sm'\" \n [class.sefin-switch__track--md]=\"size === 'md'\" \n [class.sefin-switch__track--lg]=\"size === 'lg'\" \n [class.sefin-switch__track--checked]=\"value\" \n >\n <span \n class=\"sefin-switch__thumb\"\n [class.sefin-switch__thumb--sm]=\"size === 'sm'\"\n [class.sefin-switch__thumb--md]=\"size === 'md'\"\n [class.sefin-switch__thumb--lg]=\"size === 'lg'\"\n ></span>\n </span>\n <span *ngIf=\"label\" class=\"sefin-switch__label\" [class.sefin-switch__label--sm]=\"size === 'sm'\" [class.sefin-switch__label--md]=\"size === 'md'\" [class.sefin-switch__label--lg]=\"size === 'lg'\">{{ label }}</span>\n</label>\n\n","import { Component, Input, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n TypographyVariant,\n TypographySize,\n TypographyWeight,\n TypographyColor,\n TypographyLineHeight,\n} from '../../shared/types';\n\n@Component({\n selector: 'sefin-typography',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './typography.component.html',\n styleUrls: ['./typography.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class TypographyComponent {\n @Input() variant: TypographyVariant = 'p';\n @Input() size?: TypographySize;\n @Input() weight?: TypographyWeight;\n @Input() color: TypographyColor = 'text';\n @Input() lineHeight?: TypographyLineHeight;\n @Input() class = '';\n @Input() text?: string;\n\n get typographyClasses(): string {\n return [\n 'sefin-typography',\n `sefin-typography--${this.variant}`,\n this.size ? `sefin-typography--${this.size}` : '',\n this.weight ? `sefin-typography--${this.weight}` : '',\n `sefin-typography--${this.color}`,\n this.lineHeight ? `sefin-typography--line-height-${this.lineHeight}` : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n","<ng-container [ngSwitch]=\"variant\">\n <h1 *ngSwitchCase=\"'h1'\" [class]=\"typographyClasses\">{{ text }}<ng-content></ng-content></h1>\n <h2 *ngSwitchCase=\"'h2'\" [class]=\"typographyClasses\">{{ text }}<ng-content></ng-content></h2>\n <h3 *ngSwitchCase=\"'h3'\" [class]=\"typographyClasses\">{{ text }}<ng-content></ng-content></h3>\n <h4 *ngSwitchCase=\"'h4'\" [class]=\"typographyClasses\">{{ text }}<ng-content></ng-content></h4>\n <h5 *ngSwitchCase=\"'h5'\" [class]=\"typographyClasses\">{{ text }}<ng-content></ng-content></h5>\n <h6 *ngSwitchCase=\"'h6'\" [class]=\"typographyClasses\">{{ text }}<ng-content></ng-content></h6>\n <p *ngSwitchCase=\"'p'\" [class]=\"typographyClasses\">{{ text }}<ng-content></ng-content></p>\n <span *ngSwitchDefault [class]=\"typographyClasses\">{{ text }}<ng-content></ng-content></span>\n</ng-container>\n","import { Component, Input, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport type DividerOrientation = 'horizontal' | 'vertical';\nexport type DividerVariant = 'solid' | 'dashed' | 'dotted';\n\n@Component({\n selector: 'sefin-divider',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './divider.component.html',\n styleUrls: ['./divider.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DividerComponent {\n /** Divider orientation. Options: 'horizontal' | 'vertical' */\n @Input() orientation: DividerOrientation = 'horizontal';\n /** Divider variant style. Options: 'solid' | 'dashed' | 'dotted' */\n @Input() variant: DividerVariant = 'solid';\n /** Spacing around the divider (margin) */\n @Input() spacing: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' = 'md';\n /** Thickness of the divider */\n @Input() thickness: 'thin' | 'medium' | 'thick' = 'thin';\n /** Additional CSS classes */\n @Input() class = '';\n\n get dividerClasses(): string {\n return [\n 'sefin-divider',\n `sefin-divider--${this.orientation}`,\n `sefin-divider--${this.variant}`,\n `sefin-divider--spacing-${this.spacing}`,\n `sefin-divider--${this.thickness}`,\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n\n","<hr [class]=\"dividerClasses\" [attr.aria-orientation]=\"orientation\" />\n\n","import { Component, Input, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport type SpinnerSize = 'sm' | 'md' | 'lg';\nexport type SpinnerVariant = 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'default';\n\n@Component({\n selector: 'sefin-spinner',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './spinner.component.html',\n styleUrls: ['./spinner.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SpinnerComponent {\n /** Spinner size. Options: 'sm' | 'md' | 'lg' */\n @Input() size: SpinnerSize = 'md';\n /** Spinner variant color. Options: 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'default' */\n @Input() variant: SpinnerVariant = 'primary';\n /** Whether the spinner should be displayed inline (smaller margins) */\n @Input() inline = false;\n /** Additional CSS classes */\n @Input() class = '';\n\n get spinnerClasses(): string {\n return [\n 'sefin-spinner',\n `sefin-spinner--${this.size}`,\n `sefin-spinner--${this.variant}`,\n this.inline ? 'sefin-spinner--inline' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n\n","<div [class]=\"spinnerClasses\" role=\"status\" [attr.aria-label]=\"'Loading'\">\n <div class=\"sefin-spinner__circle\"></div>\n <span class=\"sr-only\">Loading...</span>\n</div>\n\n","import { Component, Input, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport type ProgressBarVariant = 'primary' | 'secondary' | 'success' | 'warning' | 'error';\nexport type ProgressBarSize = 'sm' | 'md' | 'lg';\n\n@Component({\n selector: 'sefin-progress-bar',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './progress-bar.component.html',\n styleUrls: ['./progress-bar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ProgressBarComponent {\n /** Progress value (0-100) */\n @Input() value: number = 0;\n /** Progress bar variant color. Options: 'primary' | 'secondary' | 'success' | 'warning' | 'error' */\n @Input() variant: ProgressBarVariant = 'primary';\n /** Progress bar size. Options: 'sm' | 'md' | 'lg' */\n @Input() size: ProgressBarSize = 'md';\n /** Whether to show the progress percentage label */\n @Input() showLabel = false;\n /** Whether the progress bar is in indeterminate state (animated) */\n @Input() indeterminate = false;\n /** Additional CSS classes */\n @Input() class = '';\n\n get progressBarClasses(): string {\n return [\n 'sefin-progress-bar',\n `sefin-progress-bar--${this.size}`,\n `sefin-progress-bar--${this.variant}`,\n this.indeterminate ? 'sefin-progress-bar--indeterminate' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get clampedValue(): number {\n return Math.min(Math.max(this.value, 0), 100);\n }\n\n get percentageText(): string {\n return `${Math.round(this.clampedValue)}%`;\n }\n}\n\n","<div [class]=\"progressBarClasses\" role=\"progressbar\" [attr.aria-valuenow]=\"indeterminate ? null : clampedValue\" [attr.aria-valuemin]=\"0\" [attr.aria-valuemax]=\"100\" [attr.aria-label]=\"indeterminate ? 'Loading progress' : percentageText + ' complete'\">\n <div class=\"sefin-progress-bar__track\">\n <div \n class=\"sefin-progress-bar__fill\" \n [style.width.%]=\"indeterminate ? undefined : clampedValue\"\n ></div>\n </div>\n <span *ngIf=\"showLabel && !indeterminate\" class=\"sefin-progress-bar__label\">{{ percentageText }}</span>\n</div>\n\n","import {\n Component,\n Input,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n HostListener,\n ElementRef,\n ViewChild,\n AfterViewInit,\n OnDestroy,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport type TooltipPosition = 'top' | 'bottom' | 'left' | 'right';\nexport type TooltipTrigger = 'hover' | 'click' | 'focus';\n\n@Component({\n selector: 'sefin-tooltip',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './tooltip.component.html',\n styleUrls: ['./tooltip.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TooltipComponent implements AfterViewInit, OnDestroy {\n /** Tooltip text content */\n @Input() text: string = '';\n /** Tooltip position. Options: 'top' | 'bottom' | 'left' | 'right' */\n @Input() position: TooltipPosition = 'top';\n /** Trigger event. Options: 'hover' | 'click' | 'focus' */\n @Input() trigger: TooltipTrigger = 'hover';\n /** Delay before showing tooltip (in milliseconds) */\n @Input() delay: number = 200;\n /** Whether the tooltip is disabled */\n @Input() disabled = false;\n /** Additional CSS classes */\n @Input() class = '';\n\n @ViewChild('tooltipContent', { static: false }) tooltipContent!: ElementRef<HTMLDivElement>;\n @ViewChild('tooltipTrigger', { static: false }) tooltipTrigger!: ElementRef<HTMLDivElement>;\n\n isVisible = false;\n private showTimeout?: ReturnType<typeof setTimeout>;\n private hideTimeout?: ReturnType<typeof setTimeout>;\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n ngAfterViewInit(): void {\n if (this.trigger === 'click') {\n document.addEventListener('click', this.handleOutsideClick);\n }\n }\n\n ngOnDestroy(): void {\n this.clearTimeouts();\n if (this.trigger === 'click') {\n document.removeEventListener('click', this.handleOutsideClick);\n }\n }\n\n @HostListener('mouseenter', ['$event'])\n onMouseEnter(event: Event): void {\n if (this.trigger === 'hover' && !this.disabled) {\n this.show();\n }\n }\n\n @HostListener('mouseleave', ['$event'])\n onMouseLeave(event: Event): void {\n if (this.trigger === 'hover' && !this.disabled) {\n this.hide();\n }\n }\n\n @HostListener('click', ['$event'])\n onClick(event: Event): void {\n if (this.trigger === 'click' && !this.disabled) {\n event.stopPropagation();\n this.toggle();\n }\n }\n\n @HostListener('focus', ['$event'])\n onFocus(event: Event): void {\n if (this.trigger === 'focus' && !this.disabled) {\n this.show();\n }\n }\n\n @HostListener('blur', ['$event'])\n onBlur(event: Event): void {\n if (this.trigger === 'focus' && !this.disabled) {\n this.hide();\n }\n }\n\n show(): void {\n this.clearTimeouts();\n this.showTimeout = setTimeout(() => {\n this.isVisible = true;\n this.cdr.markForCheck();\n }, this.delay);\n }\n\n hide(): void {\n this.clearTimeouts();\n this.hideTimeout = setTimeout(() => {\n this.isVisible = false;\n this.cdr.markForCheck();\n }, 50);\n }\n\n toggle(): void {\n if (this.isVisible) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n private clearTimeouts(): void {\n if (this.showTimeout) {\n clearTimeout(this.showTimeout);\n this.showTimeout = undefined;\n }\n if (this.hideTimeout) {\n clearTimeout(this.hideTimeout);\n this.hideTimeout = undefined;\n }\n }\n\n private handleOutsideClick = (event: MouseEvent): void => {\n if (this.isVisible && this.tooltipTrigger?.nativeElement) {\n const target = event.target as Node;\n const clickedInside = this.tooltipTrigger.nativeElement.contains(target);\n if (!clickedInside) {\n this.hide();\n }\n }\n };\n\n get tooltipClasses(): string {\n return [\n 'sefin-tooltip',\n `sefin-tooltip--${this.position}`,\n this.isVisible ? 'sefin-tooltip--visible' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n\n","<div #tooltipTrigger class=\"sefin-tooltip__wrapper\">\n <ng-content></ng-content>\n <div\n #tooltipContent\n [class]=\"tooltipClasses\"\n role=\"tooltip\"\n [attr.aria-hidden]=\"!isVisible\"\n *ngIf=\"text && !disabled\"\n >\n <div class=\"sefin-tooltip__content\">{{ text }}</div>\n <div class=\"sefin-tooltip__arrow\"></div>\n </div>\n</div>\n\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IconComponent } from '../icon/icon.component';\n\nexport type AlertVariant = 'success' | 'warning' | 'error' | 'info' | 'default';\nexport type AlertSize = 'sm' | 'md' | 'lg';\n\n@Component({\n selector: 'sefin-alert',\n standalone: true,\n imports: [CommonModule, IconComponent],\n templateUrl: './alert.component.html',\n styleUrls: ['./alert.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AlertComponent {\n /** Alert variant style. Options: 'success' | 'warning' | 'error' | 'info' | 'default' */\n @Input() variant: AlertVariant = 'default';\n /** Alert size. Options: 'sm' | 'md' | 'lg' */\n @Input() size: AlertSize = 'md';\n /** Alert title (optional) */\n @Input() title?: string;\n /** Whether the alert can be dismissed (shows close button) */\n @Input() dismissible = false;\n /** Whether to show an icon */\n @Input() showIcon = true;\n /** Whether the alert is visible */\n @Input() visible = true;\n /** Additional CSS classes */\n @Input() class = '';\n\n /** Event emitted when the alert is dismissed */\n @Output() dismissed = new EventEmitter<void>();\n\n onDismiss(): void {\n this.visible = false;\n this.dismissed.emit();\n }\n\n get alertClasses(): string {\n return [\n 'sefin-alert',\n `sefin-alert--${this.variant}`,\n `sefin-alert--${this.size}`,\n !this.visible ? 'sefin-alert--hidden' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get iconName(): string {\n const iconMap: Record<AlertVariant, string> = {\n success: 'check-circle',\n warning: 'alert-triangle',\n error: 'alert-circle',\n info: 'info',\n default: 'info',\n };\n return iconMap[this.variant];\n }\n\n get iconSize(): 'xs' | 'sm' | 'md' | 'lg' | 'xl' {\n // Icon size should be smaller than container to show rounded background\n // Container sizes: sm=20px, md=24px, lg=28px\n // Icon sizes: xs=12px, sm=16px, md=24px\n const sizeMap: Record<AlertSize, 'xs' | 'sm' | 'md' | 'lg' | 'xl'> = {\n sm: 'xs', // 12px icon in 20px container (4px margin on each side)\n md: 'sm', // 16px icon in 24px container (4px margin on each side)\n lg: 'md', // 24px icon in 28px container (2px margin on each side)\n };\n return sizeMap[this.size];\n }\n\n get iconColor(): string {\n return '#ffffff';\n }\n}\n\n","<div\n *ngIf=\"visible\"\n [class]=\"alertClasses\"\n role=\"alert\"\n [attr.aria-live]=\"variant === 'error' ? 'assertive' : 'polite'\"\n>\n <div class=\"sefin-alert__content\">\n <div *ngIf=\"showIcon\" class=\"sefin-alert__icon\" [attr.aria-hidden]=\"true\">\n <sefin-icon [name]=\"iconName\" [size]=\"iconSize\" [color]=\"iconColor\"></sefin-icon>\n </div>\n <div class=\"sefin-alert__body\">\n <div *ngIf=\"title\" class=\"sefin-alert__title\">{{ title }}</div>\n <div class=\"sefin-alert__message\">\n <ng-content></ng-content>\n </div>\n </div>\n <button\n *ngIf=\"dismissible\"\n type=\"button\"\n class=\"sefin-alert__close\"\n (click)=\"onDismiss()\"\n aria-label=\"Close alert\"\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n </div>\n</div>\n\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n OnInit,\n OnDestroy,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IconComponent } from '../icon/icon.component';\n\nexport type ToastVariant = 'success' | 'warning' | 'error' | 'info' | 'default';\nexport type ToastPosition =\n | 'top-right'\n | 'top-left'\n | 'top-center'\n | 'bottom-right'\n | 'bottom-left'\n | 'bottom-center';\n\n@Component({\n selector: 'sefin-toast',\n standalone: true,\n imports: [CommonModule, IconComponent],\n templateUrl: './toast.component.html',\n styleUrls: ['./toast.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ToastComponent implements OnInit, OnDestroy {\n /** Toast variant style. Options: 'success' | 'warning' | 'error' | 'info' | 'default' */\n @Input() variant: ToastVariant = 'default';\n /** Toast position. Options: 'top-right' | 'top-left' | 'top-center' | 'bottom-right' | 'bottom-left' | 'bottom-center' */\n @Input() position: ToastPosition = 'top-right';\n /** Toast title (optional) */\n @Input() title?: string;\n /** Toast message */\n @Input() message: string = '';\n /** Duration in milliseconds before auto-dismiss (0 = no auto-dismiss) */\n @Input() duration: number = 5000;\n /** Whether to show an icon */\n @Input() showIcon = true;\n /** Whether the toast can be dismissed manually */\n @Input() dismissible = true;\n /** Additional CSS classes */\n @Input() class = '';\n\n /** Event emitted when the toast is dismissed */\n @Output() dismissed = new EventEmitter<void>();\n\n isVisible = true;\n isExiting = false;\n isPaused = false;\n private dismissTimeout?: ReturnType<typeof setTimeout>;\n private exitAnimationTimeout?: ReturnType<typeof setTimeout>;\n private remainingTime = 0;\n private startTime = 0;\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n ngOnInit(): void {\n if (this.duration > 0) {\n this.startTimer();\n }\n }\n\n ngOnDestroy(): void {\n this.clearTimer();\n this.clearExitAnimation();\n }\n\n private startTimer(): void {\n if (this.duration <= 0) return;\n \n this.startTime = Date.now();\n this.remainingTime = this.duration;\n \n this.dismissTimeout = setTimeout(() => {\n if (!this.isPaused) {\n this.dismiss();\n }\n }, this.remainingTime);\n }\n\n private clearTimer(): void {\n if (this.dismissTimeout) {\n clearTimeout(this.dismissTimeout);\n this.dismissTimeout = undefined;\n }\n }\n\n private clearExitAnimation(): void {\n if (this.exitAnimationTimeout) {\n clearTimeout(this.exitAnimationTimeout);\n this.exitAnimationTimeout = undefined;\n }\n }\n\n pauseTimer(): void {\n if (this.duration <= 0 || this.isPaused || this.isExiting) return;\n \n this.isPaused = true;\n this.clearTimer();\n \n if (this.startTime > 0) {\n const elapsed = Date.now() - this.startTime;\n this.remainingTime = Math.max(0, this.remainingTime - elapsed);\n }\n }\n\n resumeTimer(): void {\n if (this.duration <= 0 || !this.isPaused || this.isExiting) return;\n \n this.isPaused = false;\n this.startTime = Date.now();\n \n if (this.remainingTime > 0) {\n this.dismissTimeout = setTimeout(() => {\n if (!this.isPaused) {\n this.dismiss();\n }\n }, this.remainingTime);\n }\n }\n\n onCloseClick(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n if (!this.isExiting) {\n this.dismiss();\n }\n }\n\n dismiss(): void {\n if (this.isExiting) {\n return;\n }\n\n this.clearTimer();\n this.clearExitAnimation();\n this.isExiting = true;\n this.cdr.detectChanges();\n\n // Emit the dismissed event immediately so parent can handle it\n // The animation will still play, but the parent can remove it from the array\n this.dismissed.emit();\n\n // Wait for exit animation to complete before hiding\n this.exitAnimationTimeout = setTimeout(() => {\n this.isVisible = false;\n this.cdr.detectChanges();\n this.exitAnimationTimeout = undefined;\n }, 200);\n }\n\n get toastClasses(): string {\n return [\n 'sefin-toast',\n `sefin-toast--${this.variant}`,\n `sefin-toast--${this.position}`,\n this.isExiting ? 'sefin-toast--exiting' : '',\n this.isVisible ? 'sefin-toast--visible' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get iconName(): string {\n const iconMap: Record<ToastVariant, string> = {\n success: 'check-circle',\n warning: 'warning',\n error: 'error',\n info: 'info',\n default: 'info',\n };\n return iconMap[this.variant];\n }\n}\n\n","<div\n *ngIf=\"isVisible\"\n [class]=\"toastClasses\"\n role=\"alert\"\n [attr.aria-live]=\"variant === 'error' ? 'assertive' : 'polite'\"\n (mouseenter)=\"pauseTimer()\"\n (mouseleave)=\"resumeTimer()\"\n>\n <div class=\"sefin-toast__content\">\n <div *ngIf=\"showIcon\" class=\"sefin-toast__icon\" [attr.aria-hidden]=\"true\">\n <sefin-icon [name]=\"iconName\" size=\"sm\" [color]=\"'#ffffff'\"></sefin-icon>\n </div>\n <div class=\"sefin-toast__body\">\n <div *ngIf=\"title\" class=\"sefin-toast__title\">{{ title }}</div>\n <div *ngIf=\"message\" class=\"sefin-toast__message\">{{ message }}</div>\n <ng-content></ng-content>\n </div>\n <button\n *ngIf=\"dismissible\"\n type=\"button\"\n class=\"sefin-toast__close\"\n (click)=\"onCloseClick($event)\"\n (mousedown)=\"$event.stopPropagation()\"\n aria-label=\"Close toast\"\n >\n <sefin-icon name=\"x\" size=\"sm\"></sefin-icon>\n </button>\n </div>\n</div>\n\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n forwardRef,\n ViewChild,\n ElementRef,\n OnInit,\n OnDestroy,\n AfterViewInit,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n NG_VALIDATORS,\n FormControl,\n Validator,\n AbstractControl,\n ValidationErrors,\n} from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { IconComponent } from '../icon/icon.component';\n\nexport type TextFieldVariant = 'outlined' | 'filled' | 'standard';\nexport type TextFieldSize = 'sm' | 'md' | 'lg';\nexport type TextFieldType =\n | 'text'\n | 'email'\n | 'password'\n | 'number'\n | 'tel'\n | 'url'\n | 'search';\n\n@Component({\n selector: 'sefin-textfield',\n standalone: true,\n imports: [CommonModule, IconComponent],\n templateUrl: './textfield.component.html',\n styleUrls: ['./textfield.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextFieldComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => TextFieldComponent),\n multi: true,\n },\n ],\n})\nexport class TextFieldComponent\n implements ControlValueAccessor, Validator, OnInit, AfterViewInit, OnDestroy\n{\n @ViewChild('inputRef', { static: false })\n inputRef?: ElementRef<HTMLInputElement>;\n\n /** TextField variant style. Options: 'outlined' | 'filled' | 'standard' */\n @Input() variant: TextFieldVariant = 'outlined';\n /** TextField size. Options: 'sm' | 'md' | 'lg' */\n @Input() size: TextFieldSize = 'md';\n /** Input type. Options: 'text' | 'email' | 'password' | 'number' | 'tel' | 'url' | 'search' | 'date' | 'time' | 'datetime-local' */\n @Input() type: TextFieldType = 'text';\n /** Placeholder text */\n @Input() placeholder = '';\n /** Helper text shown below the input */\n @Input() hint = '';\n /** Error message to display */\n @Input() errorMessage = '';\n /** Whether the field is required */\n @Input() required = false;\n /** Whether the field is disabled */\n @Input() disabled = false;\n /** Whether the field is readonly */\n @Input() readonly = false;\n /** Maximum length of the input */\n @Input() maxLength?: number;\n /** Minimum length of the input */\n @Input() minLength?: number;\n /** Pattern for validation (regex string) */\n @Input() pattern?: string;\n /** Leading icon name */\n @Input() leadingIcon?: string;\n /** Trailing icon name */\n @Input() trailingIcon?: string;\n /** Whether to show character counter */\n @Input() showCounter = false;\n /** Autocomplete attribute */\n @Input() autocomplete?: string;\n /** Input name attribute */\n @Input() name = '';\n /** Input id attribute */\n @Input() id = '';\n /** Additional CSS classes */\n @Input() class = '';\n /** Custom validation function */\n @Input() customValidator?: (value: string) => string | null;\n\n /** Event emitted when the value changes */\n @Output() valueChange = new EventEmitter<string>();\n /** Event emitted when the input is focused */\n @Output() focused = new EventEmitter<FocusEvent>();\n /** Event emitted when the input is blurred */\n @Output() blurred = new EventEmitter<FocusEvent>();\n /** Event emitted when trailing icon is clicked */\n @Output() trailingIconClick = new EventEmitter<MouseEvent>();\n\n value: string = '';\n isFocused = false;\n hasError = false;\n internalErrorMessage = '';\n\n private onChange = (value: string) => {};\n private onTouched = () => {};\n private destroy$ = new Subject<void>();\n private control?: FormControl;\n\n ngOnInit(): void {\n this.generateIdIfNeeded();\n }\n\n ngAfterViewInit(): void {\n if (this.inputRef?.nativeElement) {\n // Set initial value if provided\n if (this.value) {\n this.inputRef.nativeElement.value = this.value;\n }\n \n // Ocultar botón nativo de mostrar/ocultar contraseña del navegador\n if (this.type === 'password') {\n const input = this.inputRef.nativeElement as HTMLInputElement;\n // Intentar ocultar el botón nativo usando estilos inline\n input.style.setProperty('-webkit-appearance', 'none', 'important');\n // Agregar un atributo para ayudar con el CSS\n input.setAttribute('data-password-field', 'true');\n }\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private generateIdIfNeeded(): void {\n if (!this.id) {\n this.id = `sefin-textfield-${Math.random().toString(36).substr(2, 9)}`;\n }\n }\n\n onInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.value = target.value;\n this.onChange(this.value);\n this.valueChange.emit(this.value);\n this.validateField();\n }\n\n onFocus(event: FocusEvent): void {\n this.isFocused = true;\n this.focused.emit(event);\n }\n\n onBlur(event: FocusEvent): void {\n this.isFocused = false;\n this.onTouched();\n this.blurred.emit(event);\n this.validateField();\n }\n\n onTrailingIconClick(event: MouseEvent): void {\n event.stopPropagation();\n if (!this.disabled) {\n this.trailingIconClick.emit(event);\n }\n }\n\n private validateField(): void {\n this.hasError = false;\n this.internalErrorMessage = '';\n\n if (this.disabled || this.readonly) {\n return;\n }\n\n const value = this.value || '';\n\n // Required validation\n if (this.required && !value.trim()) {\n this.hasError = true;\n this.internalErrorMessage = 'Este campo es requerido';\n return;\n }\n\n // Skip other validations if field is empty and not required\n if (!value.trim()) {\n return;\n }\n\n // Min length validation\n if (this.minLength && value.length < this.minLength) {\n this.hasError = true;\n this.internalErrorMessage = `Mínimo ${this.minLength} caracteres`;\n return;\n }\n\n // Max length validation\n if (this.maxLength && value.length > this.maxLength) {\n this.hasError = true;\n this.internalErrorMessage = `Máximo ${this.maxLength} caracteres`;\n return;\n }\n\n // Pattern validation\n if (this.pattern) {\n try {\n const regex = new RegExp(this.pattern);\n if (!regex.test(value)) {\n this.hasError = true;\n this.internalErrorMessage = 'El formato no es válido';\n return;\n }\n } catch (e) {\n console.warn('Invalid pattern:', this.pattern);\n }\n }\n\n // Type-specific validation\n if (this.type === 'email' && value) {\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n if (!emailRegex.test(value)) {\n this.hasError = true;\n this.internalErrorMessage = 'Ingresa un email válido';\n return;\n }\n }\n\n if (this.type === 'url' && value) {\n try {\n new URL(value);\n } catch {\n this.hasError = true;\n this.internalErrorMessage = 'Ingresa una URL válida';\n return;\n }\n }\n\n // Custom validator\n if (this.customValidator) {\n const customError = this.customValidator(value);\n if (customError) {\n this.hasError = true;\n this.internalErrorMessage = customError;\n return;\n }\n }\n }\n\n get displayError(): boolean {\n return this.hasError && (!!this.errorMessage || !!this.internalErrorMessage);\n }\n\n get displayErrorMessage(): string {\n return this.errorMessage || this.internalErrorMessage;\n }\n\n get characterCount(): number {\n return this.value?.length || 0;\n }\n\n get textFieldClasses(): string {\n return [\n 'sefin-textfield',\n `sefin-textfield--${this.variant}`,\n `sefin-textfield--${this.size}`,\n this.isFocused ? 'sefin-textfield--focused' : '',\n this.hasError ? 'sefin-textfield--error' : '',\n this.disabled ? 'sefin-textfield--disabled' : '',\n this.readonly ? 'sefin-textfield--readonly' : '',\n this.leadingIcon ? 'sefin-textfield--with-leading-icon' : '',\n this.trailingIcon ? 'sefin-textfield--with-trailing-icon' : '',\n 'sefin-textfield--no-label',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n // ControlValueAccessor implementation\n writeValue(value: string): void {\n this.value = value || '';\n if (this.inputRef?.nativeElement) {\n this.inputRef.nativeElement.value = this.value;\n }\n this.validateField();\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n // Validator implementation\n validate(control: AbstractControl): ValidationErrors | null {\n this.control = control as FormControl;\n const value = control.value || '';\n\n if (this.disabled || this.readonly) {\n return null;\n }\n\n // Required validation\n if (this.required && !value.trim()) {\n return { required: true };\n }\n\n // Skip other validations if field is empty and not required\n if (!value.trim()) {\n return null;\n }\n\n const errors: ValidationErrors = {};\n\n // Min length validation\n if (this.minLength && value.length < this.minLength) {\n errors['minlength'] = {\n requiredLength: this.minLength,\n actualLength: value.length,\n };\n }\n\n // Max length validation\n if (this.maxLength && value.length > this.maxLength) {\n errors['maxlength'] = {\n requiredLength: this.maxLength,\n actualLength: value.length,\n };\n }\n\n // Pattern validation\n if (this.pattern) {\n try {\n const regex = new RegExp(this.pattern);\n if (!regex.test(value)) {\n errors['pattern'] = { requiredPattern: this.pattern, actualValue: value };\n }\n } catch (e) {\n console.warn('Invalid pattern:', this.pattern);\n }\n }\n\n // Type-specific validation\n if (this.type === 'email' && value) {\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n if (!emailRegex.test(value)) {\n errors['email'] = true;\n }\n }\n\n if (this.type === 'url' && value) {\n try {\n new URL(value);\n } catch {\n errors['url'] = true;\n }\n }\n\n // Custom validator\n if (this.customValidator) {\n const customError = this.customValidator(value);\n if (customError) {\n errors['custom'] = { message: customError };\n }\n }\n\n return Object.keys(errors).length > 0 ? errors : null;\n }\n}\n\n","<div [class]=\"textFieldClasses\">\n <!-- Input Container -->\n <div class=\"sefin-textfield__input-container\">\n <!-- Leading Icon -->\n <div *ngIf=\"leadingIcon\" class=\"sefin-textfield__leading-icon\">\n <sefin-icon [name]=\"leadingIcon\" [size]=\"size === 'sm' ? 'sm' : 'md'\"></sefin-icon>\n </div>\n\n <!-- Input Wrapper -->\n <div class=\"sefin-textfield__input-wrapper\">\n <!-- Input -->\n <input\n #inputRef\n [id]=\"id\"\n [name]=\"name\"\n [type]=\"type\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [attr.maxlength]=\"maxLength\"\n [attr.minlength]=\"minLength\"\n [pattern]=\"pattern\"\n [autocomplete]=\"autocomplete\"\n [attr.aria-label]=\"placeholder\"\n [attr.aria-required]=\"required\"\n [attr.aria-invalid]=\"hasError\"\n [attr.aria-describedby]=\"displayError || hint || showCounter ? id + '-helper' : null\"\n [attr.data-form-type]=\"type === 'password' ? 'password' : null\"\n class=\"sefin-textfield__input\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n />\n </div>\n\n <!-- Trailing Icon -->\n <div\n *ngIf=\"trailingIcon\"\n class=\"sefin-textfield__trailing-icon\"\n (click)=\"onTrailingIconClick($event)\"\n [attr.aria-label]=\"'Trailing icon'\"\n role=\"button\"\n tabindex=\"0\"\n >\n <sefin-icon [name]=\"trailingIcon\" [size]=\"size === 'sm' ? 'sm' : 'md'\"></sefin-icon>\n </div>\n\n <!-- Outline/Filled border -->\n <div class=\"sefin-textfield__border\"></div>\n </div>\n\n <!-- Helper Text / Error Message -->\n <div\n *ngIf=\"displayError || hint || showCounter\"\n [id]=\"id + '-helper'\"\n class=\"sefin-textfield__helper\"\n [class.sefin-textfield__helper--error]=\"displayError\"\n >\n <span *ngIf=\"displayError\" class=\"sefin-textfield__error-message\">\n {{ displayErrorMessage }}\n </span>\n <span *ngIf=\"!displayError && hint\" class=\"sefin-textfield__hint\">\n {{ hint }}\n </span>\n <span\n *ngIf=\"showCounter && !displayError\"\n class=\"sefin-textfield__counter\"\n [class.sefin-textfield__counter--warning]=\"maxLength && characterCount > maxLength * 0.8\"\n >\n {{ characterCount }}{{ maxLength ? ' / ' + maxLength : '' }}\n </span>\n </div>\n</div>\n\n","import {\n Component,\n Input,\n ChangeDetectionStrategy,\n OnInit,\n OnChanges,\n SimpleChanges,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport type ImageFit = 'cover' | 'contain' | 'fill' | 'none' | 'scale-down';\nexport type ImageLoading = 'lazy' | 'eager';\nexport type ImageRounded = 'none' | 'sm' | 'md' | 'lg' | 'full';\n\n@Component({\n selector: 'sefin-image',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './image.component.html',\n styleUrls: ['./image.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ImageComponent implements OnInit, OnChanges {\n /** Image source URL (required) */\n @Input() src?: string;\n /** Alt text for the image (required for accessibility) */\n @Input() alt = '';\n /** Image width (can be a number in pixels or a string like '100%', 'auto', etc.) */\n @Input() width?: string | number;\n /** Image height (can be a number in pixels or a string like '100%', 'auto', etc.) */\n @Input() height?: string | number;\n /** How the image should be resized to fit its container. Options: 'cover' | 'contain' | 'fill' | 'none' | 'scale-down' */\n @Input() fit: ImageFit = 'cover';\n /** Loading strategy. Options: 'lazy' | 'eager' */\n @Input() loading: ImageLoading = 'lazy';\n /** Whether the image should have rounded corners. Options: 'none' | 'sm' | 'md' | 'lg' | 'full' */\n @Input() rounded: ImageRounded = 'none';\n /** Aspect ratio (e.g., '16/9', '4/3', '1/1') */\n @Input() aspectRatio?: string;\n /** Placeholder/fallback image URL to show if main image fails to load */\n @Input() fallback?: string;\n /** Whether the image is disabled (reduced opacity) */\n @Input() disabled = false;\n /** Additional CSS classes */\n @Input() class = '';\n /** Sizes attribute for responsive images */\n @Input() sizes?: string;\n /** Srcset attribute for responsive images */\n @Input() srcset?: string;\n\n hasError = false;\n currentSrc: string | null = null;\n\n ngOnInit(): void {\n this.updateCurrentSrc();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['src'] || changes['fallback']) {\n this.updateCurrentSrc();\n }\n }\n\n private updateCurrentSrc(): void {\n const srcValue = this.src;\n if (srcValue && typeof srcValue === 'string' && srcValue.trim() !== '') {\n this.currentSrc = srcValue;\n this.hasError = false;\n } else {\n this.hasError = true;\n this.currentSrc = null;\n }\n }\n\n onImageError(event: Event): void {\n if (this.fallback && this.currentSrc !== this.fallback) {\n this.currentSrc = this.fallback;\n this.hasError = false;\n } else {\n this.hasError = true;\n }\n }\n\n onImageLoad(): void {\n this.hasError = false;\n }\n\n get imageClasses(): string {\n return [\n 'sefin-image',\n `sefin-image--fit-${this.fit}`,\n `sefin-image--rounded-${this.rounded}`,\n this.disabled ? 'sefin-image--disabled' : '',\n this.hasError ? 'sefin-image--error' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get imageStyles(): { [key: string]: string | number } {\n const styles: { [key: string]: string | number } = {};\n\n if (this.width !== undefined) {\n styles['width'] = typeof this.width === 'number' ? `${this.width}px` : this.width;\n }\n\n if (this.height !== undefined) {\n styles['height'] = typeof this.height === 'number' ? `${this.height}px` : this.height;\n }\n\n if (this.aspectRatio) {\n styles['aspect-ratio'] = this.aspectRatio;\n }\n\n return styles;\n }\n}\n\n","<div\n *ngIf=\"!hasError && currentSrc\"\n [class]=\"imageClasses\"\n [ngStyle]=\"imageStyles\"\n>\n <img\n [src]=\"currentSrc\"\n [alt]=\"alt || ''\"\n [loading]=\"loading\"\n [attr.sizes]=\"sizes || null\"\n [attr.srcset]=\"srcset || null\"\n (error)=\"onImageError($event)\"\n (load)=\"onImageLoad()\"\n class=\"sefin-image__img\"\n />\n</div>\n<div\n *ngIf=\"hasError\"\n [class]=\"imageClasses\"\n [ngStyle]=\"imageStyles\"\n class=\"sefin-image__error\"\n>\n <div class=\"sefin-image__error-content\">\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M21 19V5C21 3.9 20.1 3 19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19ZM8.5 13.5L11 16.51L14.5 12L19 18H5L8.5 13.5Z\"\n fill=\"currentColor\"\n />\n </svg>\n <span *ngIf=\"alt\" class=\"sefin-image__error-text\">{{ alt }}</span>\n </div>\n</div>\n\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport type TabVariant = 'default' | 'primary' | 'secondary' | 'underline';\nexport type TabSize = 'sm' | 'md' | 'lg';\n\n@Component({\n selector: 'sefin-tab',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './tab.component.html',\n styleUrls: ['./tab.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TabComponent {\n /** Tab variant style. Options: 'default' | 'primary' | 'secondary' | 'underline' */\n @Input() variant: TabVariant = 'default';\n /** Tab size. Options: 'sm' | 'md' | 'lg' */\n @Input() size: TabSize = 'md';\n /** Whether the tab is disabled */\n @Input() disabled = false;\n /** Whether the tab is active */\n @Input() active = false;\n /** Additional CSS classes */\n @Input() class = '';\n\n @Output() clicked = new EventEmitter<MouseEvent>();\n\n onClick(event: MouseEvent): void {\n if (!this.disabled) {\n this.clicked.emit(event);\n }\n }\n\n get tabClasses(): string {\n return [\n 'sefin-tab',\n `sefin-tab--${this.variant}`,\n `sefin-tab--${this.size}`,\n this.disabled ? 'sefin-tab--disabled' : '',\n this.active ? 'sefin-tab--active' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n\n","<button\n type=\"button\"\n [class]=\"tabClasses\"\n (click)=\"onClick($event)\"\n [disabled]=\"disabled\"\n [attr.aria-selected]=\"active\"\n role=\"tab\"\n [attr.tabindex]=\"disabled ? '-1' : '0'\"\n>\n <span class=\"sefin-tab__content\">\n <ng-content></ng-content>\n </span>\n <span *ngIf=\"active && variant === 'underline'\" class=\"sefin-tab__indicator\"></span>\n</button>\n\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n computed,\n signal,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport type RateSize = 'sm' | 'md' | 'lg';\nexport type RateIcon = 'star' | 'heart' | 'thumb';\n\n@Component({\n selector: 'sefin-rate',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './rate.component.html',\n styleUrls: ['./rate.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RateComponent {\n /** Current rating value (0 to max) */\n @Input() set value(value: number) {\n this._value.set(Math.max(0, Math.min(value, this.max)));\n }\n get value(): number {\n return this._value();\n }\n private _value = signal(0);\n\n /** Maximum rating value */\n @Input() max = 5;\n\n /** Whether the rating is disabled */\n @Input() disabled = false;\n\n /** Whether the rating is readonly */\n @Input() readonly = false;\n\n /** Whether to allow half stars */\n @Input() allowHalf = false;\n\n /** Icon type. Options: 'star' | 'heart' | 'thumb' */\n @Input() icon: RateIcon = 'star';\n\n /** Rate size. Options: 'sm' | 'md' | 'lg' */\n @Input() size: RateSize = 'md';\n\n /** Whether to show text with rating */\n @Input() showText = false;\n\n /** Additional CSS classes */\n @Input() class = '';\n\n /** Event emitted when rating changes */\n @Output() valueChange = new EventEmitter<number>();\n\n /** Event emitted when rating is hovered */\n @Output() hoverChange = new EventEmitter<number | null>();\n\n /** Internal hover value */\n private _hoverValue = signal<number | null>(null);\n\n readonly items = computed(() => {\n return Array.from({ length: this.max }, (_, i) => i + 1);\n });\n\n get rateClasses(): string {\n return [\n 'sefin-rate',\n `sefin-rate--${this.size}`,\n `sefin-rate--${this.icon}`,\n this.disabled ? 'sefin-rate--disabled' : '',\n this.readonly ? 'sefin-rate--readonly' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n isInteractive(): boolean {\n return !this.disabled && !this.readonly;\n }\n\n getDisplayValue(): number {\n return this._hoverValue() ?? this.value;\n }\n\n getIconState(index: number): 'full' | 'half' | 'empty' {\n const displayValue = this.getDisplayValue();\n \n if (displayValue >= index) {\n return 'full';\n }\n \n if (this.allowHalf && displayValue >= index - 0.5) {\n return 'half';\n }\n \n return 'empty';\n }\n\n onItemClick(index: number): void {\n if (!this.isInteractive()) {\n return;\n }\n \n const newValue = index;\n if (newValue !== this.value) {\n this._value.set(newValue);\n this.valueChange.emit(newValue);\n }\n }\n\n onItemHover(index: number | null): void {\n if (!this.isInteractive()) {\n return;\n }\n \n this._hoverValue.set(index);\n this.hoverChange.emit(index);\n }\n\n onHalfClick(index: number, isLeftHalf: boolean): void {\n if (!this.isInteractive() || !this.allowHalf) {\n return;\n }\n \n const newValue = isLeftHalf ? index - 0.5 : index;\n if (newValue !== this.value) {\n this._value.set(newValue);\n this.valueChange.emit(newValue);\n }\n }\n}\n\n","<div [class]=\"rateClasses\">\n <div class=\"sefin-rate__container\">\n <div\n *ngFor=\"let item of items(); let i = index\"\n class=\"sefin-rate__item\"\n (mouseenter)=\"onItemHover(item)\"\n (mouseleave)=\"onItemHover(null)\"\n [class.sefin-rate__item--interactive]=\"isInteractive()\"\n >\n <ng-container [ngSwitch]=\"icon\">\n <!-- Star icon -->\n <div *ngSwitchCase=\"'star'\" class=\"sefin-rate__icon-wrapper\">\n <ng-container *ngIf=\"allowHalf && isInteractive(); else fullStar\">\n <div class=\"sefin-rate__icon-half\" (click)=\"onHalfClick(item, true)\">\n <svg\n [class.sefin-rate__icon--full]=\"getIconState(item) === 'full'\"\n [class.sefin-rate__icon--half]=\"getIconState(item) === 'half'\"\n [class.sefin-rate__icon--empty]=\"getIconState(item) === 'empty'\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12 2L15.09 8.26L22 9.27L17 14.14L18.18 21.02L12 17.77L5.82 21.02L7 14.14L2 9.27L8.91 8.26L12 2Z\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n <div class=\"sefin-rate__icon-half sefin-rate__icon-half--right\" (click)=\"onHalfClick(item, false)\">\n <svg\n [class.sefin-rate__icon--full]=\"getIconState(item) === 'full'\"\n [class.sefin-rate__icon--half]=\"getIconState(item) === 'half'\"\n [class.sefin-rate__icon--empty]=\"getIconState(item) === 'empty'\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12 2L15.09 8.26L22 9.27L17 14.14L18.18 21.02L12 17.77L5.82 21.02L7 14.14L2 9.27L8.91 8.26L12 2Z\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </ng-container>\n <ng-template #fullStar>\n <svg\n class=\"sefin-rate__icon\"\n [class.sefin-rate__icon--full]=\"getIconState(item) === 'full'\"\n [class.sefin-rate__icon--half]=\"getIconState(item) === 'half'\"\n [class.sefin-rate__icon--empty]=\"getIconState(item) === 'empty'\"\n (click)=\"onItemClick(item)\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12 2L15.09 8.26L22 9.27L17 14.14L18.18 21.02L12 17.77L5.82 21.02L7 14.14L2 9.27L8.91 8.26L12 2Z\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </ng-template>\n </div>\n\n <!-- Heart icon -->\n <svg\n *ngSwitchCase=\"'heart'\"\n class=\"sefin-rate__icon\"\n [class.sefin-rate__icon--full]=\"getIconState(item) === 'full'\"\n [class.sefin-rate__icon--empty]=\"getIconState(item) === 'empty'\"\n (click)=\"onItemClick(item)\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M20.84 4.61C20.3292 4.099 19.7228 3.69364 19.0554 3.41708C18.3879 3.14052 17.6725 2.99817 16.95 2.99817C16.2275 2.99817 15.5121 3.14052 14.8446 3.41708C14.1772 3.69364 13.5708 4.099 13.06 4.61L12 5.67L10.94 4.61C9.9083 3.57831 8.50903 2.99871 7.05 2.99871C5.59096 2.99871 4.19169 3.57831 3.16 4.61C2.1283 5.64169 1.54871 7.04097 1.54871 8.5C1.54871 9.95903 2.1283 11.3583 3.16 12.39L4.22 13.45L12 21.23L19.78 13.45L20.84 12.39C21.351 11.8792 21.7564 11.2728 22.0329 10.6054C22.3095 9.93789 22.4518 9.22248 22.4518 8.5C22.4518 7.77752 22.3095 7.0621 22.0329 6.39464C21.7564 5.72718 21.351 5.12075 20.84 4.61Z\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n\n <!-- Thumb icon -->\n <svg\n *ngSwitchCase=\"'thumb'\"\n class=\"sefin-rate__icon\"\n [class.sefin-rate__icon--full]=\"getIconState(item) === 'full'\"\n [class.sefin-rate__icon--empty]=\"getIconState(item) === 'empty'\"\n (click)=\"onItemClick(item)\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M7 22V11M2 13V20C2 21.1046 2.89543 22 4 22H16.4262C17.907 22 19.1662 20.9197 19.3914 19.4562L20.4683 12.4562C20.7479 10.6388 19.3411 9 17.5032 9H14C13.4477 9 13 8.55228 13 8V4.46584C13 3.10399 11.896 2 10.5342 2C10.2093 2 9.91498 2.1913 9.78306 2.48812L7.26394 8.57899C7.09882 8.95673 6.74568 9.2 6.35471 9.2H4C2.89543 9.2 2 10.0954 2 11.2V13Z\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </ng-container>\n </div>\n </div>\n \n <span *ngIf=\"showText\" class=\"sefin-rate__text\">\n {{ value }} / {{ max }}\n </span>\n</div>\n\n","/**\n * Atoms index\n */\nexport * from './avatar/avatar.component';\nexport * from './badge/badge.component';\nexport * from './button/button.component';\nexport * from './icon';\nexport * from './icon-button/icon-button.component';\nexport * from './fab-button/fab-button.component';\nexport * from './chip/chip.component';\nexport * from './tag/tag.component';\nexport * from './link/link.component';\nexport * from './stack/stack.component';\nexport * from './container/container.component';\nexport * from './checkbox/checkbox.component';\nexport * from './radio/radio.component';\nexport * from './select/select.component';\nexport * from './switch/switch.component';\nexport * from './typography/typography.component';\nexport * from './divider/divider.component';\nexport * from './spinner/spinner.component';\nexport * from './progress-bar/progress-bar.component';\nexport * from './tooltip/tooltip.component';\nexport * from './alert/alert.component';\nexport * from './toast/toast.component';\nexport * from './textfield/textfield.component';\nexport * from './image/image.component';\nexport * from './tab/tab.component';\nexport * from './rate/rate.component';\n\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IconComponent } from '../../atoms/icon/icon.component';\n\n@Component({\n selector: 'sefin-accordion-item',\n standalone: true,\n imports: [CommonModule, IconComponent],\n templateUrl: './accordion-item.component.html',\n styleUrls: ['./accordion-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AccordionItemComponent {\n /** Title text for the accordion header */\n @Input() title = '';\n /** Whether the accordion item is expanded */\n @Input() expanded = false;\n /** Whether the accordion item is disabled */\n @Input() disabled = false;\n /** Additional CSS classes */\n @Input() class = '';\n\n /** Event emitted when the accordion item is toggled */\n @Output() toggle = new EventEmitter<boolean>();\n\n onHeaderClick(): void {\n if (!this.disabled) {\n this.expanded = !this.expanded;\n this.toggle.emit(this.expanded);\n }\n }\n\n get accordionClasses(): string {\n return [\n 'sefin-accordion-item',\n this.expanded ? 'sefin-accordion-item--expanded' : '',\n this.disabled ? 'sefin-accordion-item--disabled' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get headerClasses(): string {\n return [\n 'sefin-accordion-item__header',\n this.expanded ? 'sefin-accordion-item__header--expanded' : '',\n this.disabled ? 'sefin-accordion-item__header--disabled' : '',\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n\n","<div [class]=\"accordionClasses\">\n <button\n type=\"button\"\n [class]=\"headerClasses\"\n [disabled]=\"disabled\"\n (click)=\"onHeaderClick()\"\n [attr.aria-expanded]=\"expanded\"\n [attr.aria-disabled]=\"disabled\"\n >\n <span class=\"sefin-accordion-item__title\">{{ title }}</span>\n <sefin-icon\n name=\"chevron-down\"\n size=\"sm\"\n [class]=\"'sefin-accordion-item__icon'\"\n [ngClass]=\"{'sefin-accordion-item__icon--expanded': expanded}\"\n ></sefin-icon>\n </button>\n <div\n class=\"sefin-accordion-item__content\"\n [class.sefin-accordion-item__content--expanded]=\"expanded\"\n [attr.aria-hidden]=\"!expanded\"\n >\n <div class=\"sefin-accordion-item__content-inner\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n ViewChild,\n ElementRef,\n OnInit,\n OnDestroy,\n OnChanges,\n SimpleChanges,\n HostListener,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { InputSize } from '../../shared/types';\n\nexport interface AutocompleteOption {\n value: string | number;\n label: string;\n disabled?: boolean;\n}\n\n@Component({\n selector: 'sefin-autocomplete',\n standalone: true,\n imports: [CommonModule, FormsModule],\n templateUrl: './autocomplete.component.html',\n styleUrls: ['./autocomplete.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class AutocompleteComponent implements OnInit, OnDestroy, OnChanges {\n @ViewChild('inputRef', { static: false })\n inputRef?: ElementRef<HTMLInputElement>;\n @ViewChild('dropdownRef', { static: false })\n dropdownRef?: ElementRef<HTMLDivElement>;\n @ViewChild('containerRef', { static: false })\n containerRef?: ElementRef<HTMLDivElement>;\n\n @Input() options: AutocompleteOption[] = [];\n @Input() placeholder = '';\n @Input() disabled = false;\n @Input() size: InputSize = 'md';\n @Input() class = '';\n @Input() value: string | number | null = null;\n @Input() minChars = 0;\n @Input() maxResults = 10;\n\n @Output() valueChange = new EventEmitter<string | number | null>();\n @Output() optionSelected = new EventEmitter<AutocompleteOption>();\n @Output() inputChange = new EventEmitter<string>();\n\n searchText = '';\n filteredOptions: AutocompleteOption[] = [];\n isOpen = false;\n selectedIndex = -1;\n private isSelectingOption = false;\n\n ngOnInit(): void {\n if (this.value !== null) {\n const selectedOption = this.options.find(\n (opt) => opt.value === this.value\n );\n this.searchText = selectedOption?.label || String(this.value);\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['options']) {\n const options = changes['options'].currentValue || [];\n\n if (this.value !== null) {\n const selectedOption = options.find(\n (opt: AutocompleteOption) => opt.value === this.value\n );\n if (selectedOption) {\n this.searchText = selectedOption.label;\n } else {\n this.searchText = '';\n }\n }\n }\n\n if (changes['value']) {\n if (this.value !== null) {\n const selectedOption = this.options.find(\n (opt) => opt.value === this.value\n );\n this.searchText = selectedOption?.label || String(this.value);\n } else {\n this.searchText = '';\n }\n this.filteredOptions = [];\n this.isOpen = false;\n }\n }\n\n ngOnDestroy(): void {\n }\n\n @HostListener('document:click', ['$event'])\n onClickOutside(event: MouseEvent): void {\n if (this.containerRef?.nativeElement && this.isOpen) {\n const clickedInside = this.containerRef.nativeElement.contains(\n event.target as Node\n );\n if (!clickedInside) {\n this.isOpen = false;\n this.selectedIndex = -1;\n }\n }\n }\n\n onInputChange(value: string): void {\n this.searchText = value;\n this.inputChange.emit(value);\n\n if (this.options && this.options.length > 0) {\n this.filterOptions();\n this.isOpen = value.length >= this.minChars;\n } else {\n this.isOpen = false;\n this.filteredOptions = [];\n }\n }\n\n filterOptions(): void {\n if (!this.options || this.options.length === 0) {\n this.filteredOptions = [];\n return;\n }\n\n if (\n this.minChars > 0 &&\n (!this.searchText || this.searchText.length < this.minChars)\n ) {\n this.filteredOptions = [];\n return;\n }\n\n const searchText = this.searchText || '';\n\n if (searchText.length === 0) {\n this.filteredOptions = this.options\n .filter((option) => !option.disabled)\n .slice(0, this.maxResults);\n return;\n }\n\n const searchLower = searchText.toLowerCase();\n this.filteredOptions = this.options\n .filter((option) => {\n if (option.disabled) return false;\n return option.label.toLowerCase().includes(searchLower);\n })\n .slice(0, this.maxResults);\n }\n\n onOptionMouseDown(event: MouseEvent, option: AutocompleteOption): void {\n // Prevenir que el input pierda el foco cuando se hace clic en una opción\n event.preventDefault();\n if (!option.disabled) {\n this.isSelectingOption = true;\n this.selectOption(option);\n // Resetear el flag después de un pequeño delay\n setTimeout(() => {\n this.isSelectingOption = false;\n }, 100);\n }\n }\n\n selectOption(option: AutocompleteOption): void {\n if (option.disabled) return;\n\n this.searchText = option.label;\n this.value = option.value;\n this.valueChange.emit(option.value);\n this.optionSelected.emit(option);\n this.isOpen = false;\n this.selectedIndex = -1;\n }\n\n onInputFocus(): void {\n if (this.disabled) return;\n\n if (\n this.options &&\n Array.isArray(this.options) &&\n this.options.length > 0\n ) {\n this.filterOptions();\n this.isOpen = this.filteredOptions.length > 0;\n } else {\n this.isOpen = false;\n this.filteredOptions = [];\n }\n }\n\n onInputBlur(): void {\n // Si se está seleccionando una opción, no hacer nada\n if (this.isSelectingOption) {\n return;\n }\n\n if (this.disabled || !this.searchText) {\n return;\n }\n\n const exactMatch = this.options.find(\n (option) =>\n !option.disabled &&\n option.label.toLowerCase().trim() === this.searchText.toLowerCase().trim()\n );\n\n if (!exactMatch) {\n // Mantener el texto escrito por el usuario\n // Resetear el value a null ya que no hay una opción seleccionada\n if (this.value !== null) {\n this.value = null;\n this.valueChange.emit(null);\n }\n this.isOpen = false;\n this.filteredOptions = [];\n this.selectedIndex = -1;\n }\n }\n\n onKeyDown(event: KeyboardEvent): void {\n if (\n !this.isOpen ||\n !this.filteredOptions ||\n this.filteredOptions.length === 0\n ) {\n return;\n }\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.selectedIndex = Math.min(\n this.selectedIndex + 1,\n this.filteredOptions.length - 1\n );\n setTimeout(() => this.scrollToSelected(), 0);\n break;\n case 'ArrowUp':\n event.preventDefault();\n this.selectedIndex = Math.max(this.selectedIndex - 1, -1);\n setTimeout(() => this.scrollToSelected(), 0);\n break;\n case 'Enter':\n event.preventDefault();\n if (\n this.selectedIndex >= 0 &&\n this.selectedIndex < this.filteredOptions.length\n ) {\n this.selectOption(this.filteredOptions[this.selectedIndex]);\n }\n break;\n case 'Escape':\n event.preventDefault();\n this.isOpen = false;\n this.selectedIndex = -1;\n break;\n }\n }\n\n private scrollToSelected(): void {\n try {\n if (this.dropdownRef?.nativeElement && this.selectedIndex >= 0) {\n const selectedElement = this.dropdownRef.nativeElement.querySelector(\n `[data-index=\"${this.selectedIndex}\"]`\n ) as HTMLElement | null;\n if (selectedElement && selectedElement instanceof HTMLElement) {\n selectedElement.scrollIntoView({\n block: 'nearest',\n behavior: 'smooth',\n });\n }\n }\n } catch (error) {\n console.warn('Could not scroll to selected option:', error);\n }\n }\n\n clearValue(): void {\n this.searchText = '';\n this.value = null;\n this.valueChange.emit(null);\n this.isOpen = false;\n this.filteredOptions = [];\n if (this.inputRef?.nativeElement) {\n this.inputRef.nativeElement.focus();\n }\n }\n\n get inputClasses(): string {\n return [\n 'sefin-autocomplete__input',\n `sefin-autocomplete__input--${this.size}`,\n this.disabled ? 'sefin-autocomplete__input--disabled' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get containerClasses(): string {\n return [\n 'sefin-autocomplete',\n this.isOpen && this.filteredOptions.length > 0\n ? 'sefin-autocomplete--open'\n : '',\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n","<div [class]=\"containerClasses\" #containerRef>\n <div class=\"sefin-autocomplete__wrapper\">\n <input\n #inputRef\n type=\"text\"\n [class]=\"inputClasses\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [ngModel]=\"searchText\"\n (ngModelChange)=\"onInputChange($event)\"\n (focus)=\"onInputFocus()\"\n (click)=\"onInputFocus()\"\n (blur)=\"onInputBlur()\"\n (keydown)=\"onKeyDown($event)\"\n autocomplete=\"off\"\n />\n <div class=\"sefin-autocomplete__actions\">\n <button\n *ngIf=\"searchText && !disabled\"\n type=\"button\"\n class=\"sefin-autocomplete__clear\"\n (click)=\"clearValue()\"\n aria-label=\"Clear\"\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12 4L4 12M4 4L12 12\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </button>\n <div class=\"sefin-autocomplete__arrow\" [class.sefin-autocomplete__arrow--open]=\"isOpen\">\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4 6L8 10L12 6\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n </div>\n <div\n *ngIf=\"isOpen && filteredOptions && filteredOptions.length > 0\"\n #dropdownRef\n class=\"sefin-autocomplete__dropdown\"\n >\n <ul class=\"sefin-autocomplete__list\">\n <li\n *ngFor=\"let option of filteredOptions; let i = index\"\n [attr.data-index]=\"i\"\n [class.sefin-autocomplete__option]=\"true\"\n [class.sefin-autocomplete__option--selected]=\"i === selectedIndex\"\n [class.sefin-autocomplete__option--disabled]=\"option.disabled\"\n (mousedown)=\"onOptionMouseDown($event, option)\"\n (click)=\"selectOption(option)\"\n [attr.aria-selected]=\"i === selectedIndex\"\n role=\"option\"\n >\n {{ option.label }}\n </li>\n </ul>\n </div>\n <div\n *ngIf=\"\n isOpen &&\n filteredOptions &&\n filteredOptions.length === 0 &&\n searchText &&\n searchText.length >= minChars\n \"\n class=\"sefin-autocomplete__dropdown sefin-autocomplete__dropdown--empty\"\n >\n <div class=\"sefin-autocomplete__no-results\">\n No se encontraron resultados\n </div>\n </div>\n</div>\n","import {\n Component,\n Input,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { LinkComponent } from '../../atoms/link/link.component';\n\nexport interface BreadcrumbItem {\n label: string;\n href?: string;\n icon?: string;\n}\n\nexport type BreadcrumbSeparator = 'slash' | 'chevron' | 'arrow';\nexport type BreadcrumbSize = 'sm' | 'md' | 'lg';\n\n@Component({\n selector: 'sefin-breadcrumbs',\n standalone: true,\n imports: [CommonModule, LinkComponent],\n templateUrl: './breadcrumbs.component.html',\n styleUrls: ['./breadcrumbs.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BreadcrumbsComponent {\n /** Array of breadcrumb items */\n @Input() items: BreadcrumbItem[] = [];\n /** Separator style. Options: 'slash' | 'chevron' | 'arrow' */\n @Input() separator: BreadcrumbSeparator = 'slash';\n /** Breadcrumb size. Options: 'sm' | 'md' | 'lg' */\n @Input() size: BreadcrumbSize = 'md';\n /** Additional CSS classes */\n @Input() class = '';\n\n constructor(private sanitizer: DomSanitizer) {}\n\n get breadcrumbsClasses(): string {\n return [\n 'sefin-breadcrumbs',\n `sefin-breadcrumbs--${this.size}`,\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n isLastItem(index: number): boolean {\n return index === this.items.length - 1;\n }\n\n getSeparatorIcon(): string {\n switch (this.separator) {\n case 'chevron':\n return '<svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9 18L15 12L9 6\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>';\n case 'arrow':\n return '<svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M5 12H19M19 12L12 5M19 12L12 19\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>';\n case 'slash':\n default:\n return '/';\n }\n }\n\n sanitizeHtml(html: string | undefined): SafeHtml | string {\n if (!html) return '';\n // For simple text like '/', return as is\n if (html.length <= 2 && !html.includes('<')) {\n return html;\n }\n // Use sanitize for user-provided HTML (icons from items)\n // This sanitizes but allows safe SVG elements\n return this.sanitizer.sanitize(1, html) || '';\n }\n\n getSeparatorIconSafe(): SafeHtml {\n // For separators generated internally, we can trust the HTML\n const icon = this.getSeparatorIcon();\n if (icon.length <= 2 && !icon.includes('<')) {\n return icon;\n }\n return this.sanitizer.bypassSecurityTrustHtml(icon);\n }\n}\n\n","<nav [class]=\"breadcrumbsClasses\" aria-label=\"Breadcrumb\">\n <ol class=\"sefin-breadcrumbs__list\">\n <li\n *ngFor=\"let item of items; let i = index; let isLast = last\"\n class=\"sefin-breadcrumbs__item\"\n >\n <ng-container *ngIf=\"isLastItem(i); else linkTemplate\">\n <span class=\"sefin-breadcrumbs__current\" [attr.aria-current]=\"'page'\">\n <span *ngIf=\"item.icon\" class=\"sefin-breadcrumbs__icon\" [innerHTML]=\"sanitizeHtml(item.icon)\"></span>\n {{ item.label }}\n </span>\n </ng-container>\n <ng-template #linkTemplate>\n <sefin-link\n [href]=\"item.href || '#'\"\n variant=\"default\"\n [size]=\"size\"\n class=\"sefin-breadcrumbs__link\"\n >\n <span *ngIf=\"item.icon\" class=\"sefin-breadcrumbs__icon\" [innerHTML]=\"sanitizeHtml(item.icon)\"></span>\n {{ item.label }}\n </sefin-link>\n </ng-template>\n <span\n *ngIf=\"!isLast\"\n class=\"sefin-breadcrumbs__separator\"\n [attr.aria-hidden]=\"true\"\n [innerHTML]=\"getSeparatorIconSafe()\"\n ></span>\n </li>\n </ol>\n</nav>\n\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { ButtonComponent } from '../../atoms/button/button.component';\nimport { ButtonVariant, ButtonSize } from '../../shared/types';\n\nexport interface ButtonGroupOption {\n label: string;\n value: string | number;\n disabled?: boolean;\n icon?: string;\n}\n\nexport type ButtonGroupVariant = 'default' | 'segmented';\nexport type ButtonGroupSize = 'sm' | 'md' | 'lg';\n\n@Component({\n selector: 'sefin-button-group',\n standalone: true,\n imports: [CommonModule, ButtonComponent],\n templateUrl: './button-group.component.html',\n styleUrls: ['./button-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class ButtonGroupComponent {\n constructor(private sanitizer: DomSanitizer) {}\n\n /** Array of button options */\n @Input() options: ButtonGroupOption[] = [];\n /** Selected value (for segmented variant) */\n @Input() value: string | number | null = null;\n /** Whether multiple selection is allowed (for default variant) */\n @Input() multiple = false;\n /** Selected values (for multiple selection) */\n @Input() selectedValues: (string | number)[] = [];\n /** Button variant style. Options: 'primary' | 'secondary' | 'outline' | 'ghost' | 'danger' */\n @Input() variant: ButtonVariant = 'primary';\n /** Button size. Options: 'sm' | 'md' | 'lg' */\n @Input() size: ButtonSize = 'md';\n /** Button group variant. Options: 'default' | 'segmented' */\n @Input() groupVariant: ButtonGroupVariant = 'default';\n /** Whether the button group is disabled */\n @Input() disabled = false;\n /** Additional CSS classes */\n @Input() class = '';\n\n /** Event emitted when value changes (for segmented variant) */\n @Output() valueChange = new EventEmitter<string | number | null>();\n /** Event emitted when selected values change (for multiple selection) */\n @Output() selectedValuesChange = new EventEmitter<(string | number)[]>();\n /** Event emitted when a button is clicked */\n @Output() buttonClick = new EventEmitter<ButtonGroupOption>();\n\n get buttonGroupClasses(): string {\n return [\n 'sefin-button-group',\n `sefin-button-group--${this.groupVariant}`,\n `sefin-button-group--${this.size}`,\n this.disabled ? 'sefin-button-group--disabled' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n isSelected(option: ButtonGroupOption): boolean {\n if (this.groupVariant === 'segmented') {\n return this.value === option.value;\n }\n return this.selectedValues.includes(option.value);\n }\n\n onButtonClick(option: ButtonGroupOption): void {\n if (this.disabled || option.disabled) {\n return;\n }\n\n this.buttonClick.emit(option);\n\n if (this.groupVariant === 'segmented') {\n // Toggle selection for segmented\n const newValue = this.value === option.value ? null : option.value;\n this.value = newValue;\n this.valueChange.emit(newValue);\n } else {\n // Multiple selection logic\n const index = this.selectedValues.indexOf(option.value);\n if (this.multiple) {\n if (index >= 0) {\n // Deselect\n this.selectedValues = this.selectedValues.filter((v) => v !== option.value);\n } else {\n // Select\n this.selectedValues = [...this.selectedValues, option.value];\n }\n this.selectedValuesChange.emit([...this.selectedValues]);\n } else {\n // Single selection (even in default variant)\n if (index >= 0) {\n // Deselect if already selected\n this.selectedValues = [];\n } else {\n // Select only this one\n this.selectedValues = [option.value];\n }\n this.selectedValuesChange.emit([...this.selectedValues]);\n }\n }\n }\n\n getButtonVariant(option: ButtonGroupOption): ButtonVariant {\n // For default variant, always use primary to create unified look\n if (this.groupVariant === 'default') {\n return 'primary';\n }\n // For segmented variant, use outline for non-selected\n if (this.isSelected(option)) {\n return this.variant;\n }\n return 'outline';\n }\n\n sanitizeHtml(html: string | undefined): SafeHtml | string {\n if (!html) return '';\n // For simple text, return as is\n if (html.length <= 2 && !html.includes('<')) {\n return html;\n }\n // Use sanitize for user-provided HTML (icons)\n return this.sanitizer.sanitize(1, html) || '';\n }\n}\n\n","<div [class]=\"buttonGroupClasses\" role=\"group\" [attr.aria-label]=\"'Button group'\">\n <sefin-button\n *ngFor=\"let option of options\"\n [variant]=\"getButtonVariant(option)\"\n [size]=\"size\"\n [disabled]=\"disabled || option.disabled\"\n [class.sefin-button-group__button]=\"true\"\n [class.sefin-button-group__button--selected]=\"isSelected(option)\"\n (clicked)=\"onButtonClick(option)\"\n >\n <span *ngIf=\"option.icon\" class=\"sefin-button-group__icon\" [innerHTML]=\"sanitizeHtml(option.icon)\"></span>\n {{ option.label }}\n </sefin-button>\n</div>\n\n","import {\n Component,\n Input,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CardVariant } from '../../shared/types';\n\n@Component({\n selector: 'sefin-card',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './card.component.html',\n styleUrls: ['./card.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CardComponent {\n /** Card variant style. Options: 'default' | 'elevated' | 'outlined' */\n @Input() variant: CardVariant = 'default';\n /** Whether the card is clickable/interactive */\n @Input() clickable = false;\n /** Whether the card is disabled */\n @Input() disabled = false;\n /** Card padding size. Options: 'none' | 'sm' | 'md' | 'lg' */\n @Input() padding: 'none' | 'sm' | 'md' | 'lg' = 'md';\n /** Additional CSS classes */\n @Input() class = '';\n\n get cardClasses(): string {\n return [\n 'sefin-card',\n `sefin-card--${this.variant}`,\n this.clickable ? 'sefin-card--clickable' : '',\n this.disabled ? 'sefin-card--disabled' : '',\n `sefin-card--padding-${this.padding}`,\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n\n","<div [class]=\"cardClasses\">\n <ng-content></ng-content>\n</div>\n\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ViewChild,\n ElementRef,\n OnInit,\n OnChanges,\n AfterViewInit,\n OnDestroy,\n SimpleChanges,\n HostListener,\n ChangeDetectorRef,\n NgZone,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { InputSize } from '../../shared/types';\nimport { IconComponent } from '../../atoms/icon/icon.component';\nimport { TextFieldComponent } from '../../atoms/textfield/textfield.component';\n\nexport type DateFormat =\n | 'DD/MM/YYYY'\n | 'MM/DD/YYYY'\n | 'YYYY-MM-DD'\n | 'DD-MM-YYYY';\nexport type DatePickerMode = 'single' | 'range';\n\nexport interface DateRange {\n start: Date | null;\n end: Date | null;\n}\n\n@Component({\n selector: 'sefin-datepicker',\n standalone: true,\n imports: [CommonModule, IconComponent, TextFieldComponent],\n templateUrl: './datepicker.component.html',\n styleUrls: ['./datepicker.component.scss'],\n})\nexport class DatepickerComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n @ViewChild('containerRef', { static: false })\n containerRef?: ElementRef<HTMLDivElement>;\n @ViewChild('textfieldRef', { static: false })\n textfieldRef?: TextFieldComponent;\n @ViewChild('calendarRef', { static: false })\n calendarRef?: ElementRef<HTMLDivElement>;\n\n @Input() value: Date | DateRange | null = null;\n @Input() placeholder = 'Selecciona una fecha';\n @Input() disabled = false;\n @Input() size: InputSize = 'md';\n @Input() format: DateFormat = 'DD/MM/YYYY';\n @Input() mode: DatePickerMode = 'single';\n @Input() minDate?: Date;\n @Input() maxDate?: Date;\n @Input() showTodayButton = true;\n @Input() showClearButton = true;\n @Input() firstDayOfWeek: 0 | 1 = 1;\n\n @Output() valueChange = new EventEmitter<Date | DateRange | null>();\n @Output() dateSelected = new EventEmitter<Date | DateRange | null>();\n\n isOpen = false;\n currentMonth = new Date();\n selectedDate: Date | null = null;\n rangeStart: Date | null = null;\n rangeEnd: Date | null = null;\n displayValue = '';\n viewMode: 'month' | 'year' = 'month';\n\n private months = [\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 private days = ['Dom', 'Lun', 'Mar', 'Mié', 'Jue', 'Vie', 'Sáb'];\n\n constructor(private cdr: ChangeDetectorRef, private ngZone: NgZone) {\n this.currentMonth.setDate(1);\n }\n\n ngOnInit(): void {\n this.initializeDates();\n }\n\n ngAfterViewInit(): void {\n // Asegurar que el textfield esté disponible antes de actualizar el display\n this.updateDisplay();\n this.cdr.detectChanges();\n }\n\n ngOnDestroy(): void {\n // Limpiar timeout al destruir el componente\n if (this.openingTimeout) {\n clearTimeout(this.openingTimeout);\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['value'] || changes['mode']) {\n this.initializeDates();\n // Usar setTimeout para asegurar que el textfield esté disponible\n setTimeout(() => {\n this.updateDisplay();\n }, 0);\n }\n }\n\n private justOpened = false;\n private isSelectingDate = false;\n private openingTimeout?: ReturnType<typeof setTimeout>;\n\n @HostListener('document:click', ['$event'])\n onClickOutside(event: MouseEvent): void {\n // No procesar si el calendario está cerrado, se está seleccionando una fecha, o se acaba de abrir\n if (!this.isOpen || this.isSelectingDate || this.justOpened) {\n return;\n }\n\n const target = event.target as Node;\n \n // Verificar si el click es dentro del calendario o del contenedor - si es así, no cerrar\n if (\n this.calendarRef?.nativeElement?.contains(target) ||\n this.containerRef?.nativeElement?.contains(target)\n ) {\n return;\n }\n\n // Click está fuera - cerrar el calendario con un pequeño delay\n setTimeout(() => {\n // Verificar nuevamente antes de cerrar\n if (this.isOpen && !this.isSelectingDate && !this.justOpened) {\n this.closeCalendar();\n }\n }, 150);\n }\n\n @HostListener('document:keydown', ['$event'])\n onKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Escape' && this.isOpen) {\n this.closeCalendar();\n }\n }\n\n private initializeDates(): void {\n if (this.mode === 'single') {\n // Manejar diferentes tipos de valor\n if (this.value instanceof Date) {\n this.selectedDate = new Date(this.value);\n // Normalizar la fecha para evitar problemas de comparación\n this.selectedDate.setHours(0, 0, 0, 0);\n } else if (this.value && typeof this.value === 'object' && 'getTime' in this.value) {\n // Caso especial: objeto Date que no es instancia de Date\n this.selectedDate = new Date(this.value as any);\n this.selectedDate.setHours(0, 0, 0, 0);\n } else {\n this.selectedDate = null;\n }\n this.rangeStart = null;\n this.rangeEnd = null;\n if (this.selectedDate) {\n this.currentMonth = new Date(\n this.selectedDate.getFullYear(),\n this.selectedDate.getMonth(),\n 1\n );\n } else {\n this.currentMonth = new Date();\n this.currentMonth.setDate(1);\n }\n } else {\n const range = this.value as DateRange | null;\n this.selectedDate = null;\n if (range?.start) {\n this.rangeStart = new Date(range.start);\n this.rangeStart.setHours(0, 0, 0, 0);\n } else {\n this.rangeStart = null;\n }\n if (range?.end) {\n this.rangeEnd = new Date(range.end);\n this.rangeEnd.setHours(0, 0, 0, 0);\n } else {\n this.rangeEnd = null;\n }\n if (this.rangeStart) {\n this.currentMonth = new Date(\n this.rangeStart.getFullYear(),\n this.rangeStart.getMonth(),\n 1\n );\n } else {\n this.currentMonth = new Date();\n this.currentMonth.setDate(1);\n }\n }\n }\n\n toggleCalendar(): void {\n if (this.disabled) return;\n \n // Si ya está abierto, cerrarlo\n if (this.isOpen) {\n this.closeCalendar();\n return;\n }\n \n // Si está cerrado, abrirlo\n this.openCalendar();\n }\n\n openCalendar(): void {\n if (this.disabled || this.isOpen) return;\n \n // Limpiar cualquier timeout anterior\n if (this.openingTimeout) {\n clearTimeout(this.openingTimeout);\n }\n \n // Establecer flag ANTES de cambiar el estado para prevenir cierre inmediato\n this.justOpened = true;\n this.isOpen = true;\n \n // Usar NgZone para asegurar que el cambio se detecte correctamente\n this.ngZone.run(() => {\n this.cdr.detectChanges();\n });\n \n // Reset flag después de que Angular haya renderizado el calendario\n this.openingTimeout = setTimeout(() => {\n this.justOpened = false;\n }, 350);\n }\n\n closeCalendar(): void {\n if (!this.isOpen) return;\n \n // Limpiar timeout si existe\n if (this.openingTimeout) {\n clearTimeout(this.openingTimeout);\n this.openingTimeout = undefined;\n }\n \n this.isOpen = false;\n this.viewMode = 'month';\n this.justOpened = false;\n \n this.ngZone.run(() => {\n this.cdr.detectChanges();\n });\n }\n\n toggleViewMode(event?: MouseEvent): void {\n if (event) {\n event.stopPropagation();\n }\n this.viewMode = this.viewMode === 'month' ? 'year' : 'month';\n this.cdr.detectChanges();\n }\n\n getYears(): number[] {\n const currentYear = this.currentMonth.getFullYear();\n const years: number[] = [];\n const startYear = currentYear - 12;\n const endYear = currentYear + 12;\n\n for (let year = startYear; year <= endYear; year++) {\n years.push(year);\n }\n return years;\n }\n\n selectYear(year: number, event?: MouseEvent): void {\n if (event) {\n event.stopPropagation();\n }\n this.currentMonth = new Date(year, this.currentMonth.getMonth(), 1);\n this.viewMode = 'month';\n this.cdr.detectChanges();\n }\n\n getMonths(): { index: number; name: string }[] {\n return this.months.map((name, index) => ({ index, name }));\n }\n\n selectMonth(monthIndex: number): void {\n this.currentMonth = new Date(\n this.currentMonth.getFullYear(),\n monthIndex,\n 1\n );\n this.viewMode = 'month';\n this.cdr.detectChanges();\n }\n\n onTextFieldClick(event?: MouseEvent): void {\n if (event) {\n event.stopPropagation();\n event.preventDefault();\n }\n \n if (!this.disabled) {\n // Solo manejar el click si el calendario no está abierto\n // Si está abierto, el onClickOutside lo cerrará si es necesario\n if (!this.isOpen) {\n this.openCalendar();\n }\n }\n }\n\n onTextFieldFocus(event?: FocusEvent): void {\n if (event) {\n event.stopPropagation();\n }\n \n // No abrir el calendario en focus si ya está abierto\n // Esto previene que se abra/cierre/abra cuando se hace click\n if (!this.disabled && !this.isOpen) {\n this.openCalendar();\n }\n }\n\n onTrailingIconClick(event: MouseEvent): void {\n event.stopPropagation();\n event.preventDefault();\n \n if (this.displayValue && this.showClearButton && !this.disabled) {\n this.clearValue();\n } else if (!this.disabled && !this.isOpen) {\n // Solo abrir si no está abierto\n this.openCalendar();\n }\n }\n\n getCalendarDays(): (Date | null)[] {\n const days: (Date | null)[] = [];\n const year = this.currentMonth.getFullYear();\n const month = this.currentMonth.getMonth();\n const firstDay = new Date(year, month, 1).getDay();\n const daysInMonth = new Date(year, month + 1, 0).getDate();\n const offset =\n this.firstDayOfWeek === 1\n ? firstDay === 0\n ? 6\n : firstDay - 1\n : firstDay;\n\n for (let i = 0; i < offset; i++) {\n days.push(null);\n }\n for (let day = 1; day <= daysInMonth; day++) {\n days.push(new Date(year, month, day));\n }\n return days;\n }\n\n isToday(date: Date): boolean {\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n const dateCompare = new Date(date);\n dateCompare.setHours(0, 0, 0, 0);\n return dateCompare.getTime() === today.getTime();\n }\n\n isSelected(date: Date): boolean {\n if (!date) return false;\n\n const dateCompare = new Date(date);\n dateCompare.setHours(0, 0, 0, 0);\n\n if (this.mode === 'single') {\n if (!this.selectedDate) return false;\n const selected = new Date(this.selectedDate);\n selected.setHours(0, 0, 0, 0);\n return dateCompare.getTime() === selected.getTime();\n } else {\n // En modo rango, no usar --selected para inicio/fin, usar --range-start y --range-end\n return false;\n }\n }\n\n isInRange(date: Date): boolean {\n if (this.mode !== 'range' || !this.rangeStart || !this.rangeEnd)\n return false;\n\n const dateCompare = new Date(date);\n dateCompare.setHours(0, 0, 0, 0);\n const start = new Date(this.rangeStart);\n start.setHours(0, 0, 0, 0);\n const end = new Date(this.rangeEnd);\n end.setHours(0, 0, 0, 0);\n\n const startTime = start.getTime();\n const endTime = end.getTime();\n const dateTime = dateCompare.getTime();\n\n // No incluir inicio y fin en el rango (ya tienen su propia clase)\n return (\n (dateTime > startTime && dateTime < endTime) ||\n (dateTime > endTime && dateTime < startTime)\n );\n }\n\n isRangeStart(date: Date): boolean {\n if (this.mode !== 'range' || !this.rangeStart) return false;\n const dateCompare = new Date(date);\n dateCompare.setHours(0, 0, 0, 0);\n const start = new Date(this.rangeStart);\n start.setHours(0, 0, 0, 0);\n return dateCompare.getTime() === start.getTime();\n }\n\n isRangeEnd(date: Date): boolean {\n if (this.mode !== 'range' || !this.rangeEnd) return false;\n const dateCompare = new Date(date);\n dateCompare.setHours(0, 0, 0, 0);\n const end = new Date(this.rangeEnd);\n end.setHours(0, 0, 0, 0);\n return dateCompare.getTime() === end.getTime();\n }\n\n isDisabled(date: Date): boolean {\n const dateCompare = new Date(date);\n dateCompare.setHours(0, 0, 0, 0);\n\n if (this.minDate) {\n const min = new Date(this.minDate);\n min.setHours(0, 0, 0, 0);\n if (dateCompare < min) return true;\n }\n if (this.maxDate) {\n const max = new Date(this.maxDate);\n max.setHours(0, 0, 0, 0);\n if (dateCompare > max) return true;\n }\n return false;\n }\n\n\n onDayMouseDown(day: Date, event: MouseEvent): void {\n if (event) {\n // Stop propagation to prevent onClickOutside from firing\n event.stopPropagation();\n // Set flag IMMEDIATELY to prevent onClickOutside from closing calendar\n this.isSelectingDate = true;\n }\n }\n\n selectDate(date: Date, event?: MouseEvent): void {\n if (event) {\n event.stopPropagation();\n event.stopImmediatePropagation();\n event.preventDefault();\n }\n\n if (this.isDisabled(date)) {\n this.isSelectingDate = false;\n return;\n }\n\n // Flag should already be set from mousedown, but ensure it's set\n this.isSelectingDate = true;\n\n // Normalize date to avoid time comparison issues\n const normalizedDate = new Date(date);\n normalizedDate.setHours(0, 0, 0, 0);\n\n if (this.mode === 'single') {\n // Check if clicking the same date - if so, just close calendar\n if (this.selectedDate) {\n const selected = new Date(this.selectedDate);\n selected.setHours(0, 0, 0, 0);\n if (normalizedDate.getTime() === selected.getTime()) {\n // Same date clicked, just close calendar\n this.isSelectingDate = false;\n this.closeCalendar();\n return;\n }\n }\n\n // Update state immediately - do this synchronously\n this.selectedDate = new Date(normalizedDate);\n this.value = new Date(normalizedDate);\n\n // Calculate display value immediately\n const newDisplayValue = this.formatDate(this.selectedDate);\n this.displayValue = newDisplayValue;\n\n // Update textfield - usar setTimeout para asegurar que el DOM esté listo\n if (this.textfieldRef) {\n setTimeout(() => {\n if (this.textfieldRef) {\n this.textfieldRef.writeValue(newDisplayValue);\n }\n }, 0);\n }\n\n // Force change detection immediately\n this.cdr.detectChanges();\n\n // Emit events synchronously to ensure they're processed\n this.valueChange.emit(this.value);\n this.dateSelected.emit(this.value);\n\n // Close calendar after a delay to ensure everything is updated\n // Keep flag set during this time to prevent onClickOutside from interfering\n setTimeout(() => {\n if (this.isOpen) {\n this.closeCalendar();\n }\n // Reset flag after closing\n this.isSelectingDate = false;\n }, 250);\n } else {\n if (!this.rangeStart || (this.rangeStart && this.rangeEnd)) {\n this.rangeStart = new Date(normalizedDate);\n this.rangeEnd = null;\n this.value = { start: this.rangeStart, end: null };\n this.updateDisplay();\n this.cdr.detectChanges();\n this.ngZone.run(() => {\n this.valueChange.emit(this.value);\n });\n this.isSelectingDate = false;\n } else {\n this.rangeEnd = new Date(normalizedDate);\n if (this.rangeStart.getTime() > this.rangeEnd.getTime()) {\n [this.rangeStart, this.rangeEnd] = [this.rangeEnd, this.rangeStart];\n }\n this.value = { start: this.rangeStart, end: this.rangeEnd };\n this.updateDisplay();\n this.cdr.detectChanges();\n this.ngZone.run(() => {\n this.valueChange.emit(this.value);\n this.dateSelected.emit(this.value);\n });\n // En modo range, no cerrar automáticamente - solo se cierra al hacer clic fuera\n this.isSelectingDate = false;\n }\n }\n }\n\n trackByDate(index: number, day: Date | null): string {\n if (!day) return `empty-${index}`;\n return `${day.getFullYear()}-${day.getMonth()}-${day.getDate()}`;\n }\n\n previousMonth(event?: MouseEvent): void {\n if (event) {\n event.stopPropagation();\n }\n if (this.viewMode === 'year') {\n const currentYear = this.currentMonth.getFullYear();\n this.currentMonth = new Date(\n currentYear - 25,\n this.currentMonth.getMonth(),\n 1\n );\n } else {\n this.currentMonth = new Date(\n this.currentMonth.getFullYear(),\n this.currentMonth.getMonth() - 1,\n 1\n );\n }\n this.cdr.detectChanges();\n }\n\n nextMonth(event?: MouseEvent): void {\n if (event) {\n event.stopPropagation();\n }\n if (this.viewMode === 'year') {\n const currentYear = this.currentMonth.getFullYear();\n this.currentMonth = new Date(\n currentYear + 25,\n this.currentMonth.getMonth(),\n 1\n );\n } else {\n this.currentMonth = new Date(\n this.currentMonth.getFullYear(),\n this.currentMonth.getMonth() + 1,\n 1\n );\n }\n this.cdr.detectChanges();\n }\n\n goToToday(): void {\n const today = new Date();\n if (!this.isDisabled(today)) {\n this.selectDate(today);\n }\n }\n\n clearValue(): void {\n if (this.mode === 'single') {\n this.selectedDate = null;\n this.value = null;\n } else {\n this.rangeStart = null;\n this.rangeEnd = null;\n this.value = null;\n }\n this.updateDisplay();\n this.valueChange.emit(null);\n this.dateSelected.emit(null);\n this.closeCalendar();\n }\n\n formatDate(date: Date): string {\n const day = String(date.getDate()).padStart(2, '0');\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const year = date.getFullYear();\n\n switch (this.format) {\n case 'DD/MM/YYYY':\n return `${day}/${month}/${year}`;\n case 'MM/DD/YYYY':\n return `${month}/${day}/${year}`;\n case 'YYYY-MM-DD':\n return `${year}-${month}-${day}`;\n case 'DD-MM-YYYY':\n return `${day}-${month}-${year}`;\n default:\n return `${day}/${month}/${year}`;\n }\n }\n\n private updateDisplay(): void {\n let newValue = '';\n \n if (this.mode === 'single') {\n newValue = this.selectedDate\n ? this.formatDate(this.selectedDate)\n : '';\n } else {\n const range = this.value as DateRange | null;\n if (range?.start && range?.end) {\n newValue = `${this.formatDate(range.start)} - ${this.formatDate(range.end)}`;\n } else if (range?.start) {\n newValue = `${this.formatDate(range.start)} - ...`;\n } else {\n newValue = '';\n }\n }\n\n this.displayValue = newValue;\n\n // Update textfield value using writeValue\n // Asegurar que el textfield esté disponible antes de actualizar\n if (this.textfieldRef) {\n // Usar setTimeout para asegurar que el DOM esté listo\n setTimeout(() => {\n if (this.textfieldRef) {\n this.textfieldRef.writeValue(this.displayValue);\n }\n }, 0);\n }\n }\n\n getMonthName(): string {\n return this.months[this.currentMonth.getMonth()];\n }\n\n getYear(): number {\n return this.currentMonth.getFullYear();\n }\n\n getDayNames(): string[] {\n const days = [...this.days];\n if (this.firstDayOfWeek === 1) {\n const sunday = days.shift();\n if (sunday) days.push(sunday);\n }\n return days;\n }\n\n get containerClasses(): string {\n return `sefin-datepicker sefin-datepicker--${this.size} ${\n this.isOpen ? 'sefin-datepicker--open' : ''\n }`.trim();\n }\n\n getCurrentYear(): number {\n return new Date().getFullYear();\n }\n\n isCurrentYear(year: number): boolean {\n return year === this.getCurrentYear();\n }\n}\n\n","<div [class]=\"containerClasses\" #containerRef>\n <div class=\"sefin-datepicker__wrapper\">\n <div\n (click)=\"onTextFieldClick($event)\"\n (mousedown)=\"$event.stopPropagation()\"\n (mouseup)=\"$event.stopPropagation()\"\n class=\"sefin-datepicker__input-wrapper\"\n >\n <sefin-textfield\n #textfieldRef\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [size]=\"size\"\n [readonly]=\"true\"\n [trailingIcon]=\"\n displayValue && showClearButton && !disabled ? 'x' : 'calendar'\n \"\n (focused)=\"onTextFieldFocus($event)\"\n (trailingIconClick)=\"onTrailingIconClick($event)\"\n class=\"sefin-datepicker__input\"\n ></sefin-textfield>\n </div>\n </div>\n\n <div\n *ngIf=\"isOpen\"\n #calendarRef\n class=\"sefin-datepicker__calendar\"\n (click)=\"$event.stopPropagation()\"\n (mousedown)=\"$event.stopPropagation()\"\n >\n <div class=\"sefin-datepicker__header\">\n <button\n type=\"button\"\n class=\"sefin-datepicker__nav\"\n (click)=\"previousMonth($event)\"\n >\n <sefin-icon name=\"chevron-left\" size=\"sm\"></sefin-icon>\n </button>\n <button\n type=\"button\"\n class=\"sefin-datepicker__month-year-btn\"\n (click)=\"toggleViewMode($event)\"\n >\n <span *ngIf=\"viewMode === 'month'\"\n >{{ getMonthName() }} {{ getYear() }}</span\n >\n <span *ngIf=\"viewMode === 'year'\">{{ getYear() }}</span>\n </button>\n <button\n type=\"button\"\n class=\"sefin-datepicker__nav\"\n (click)=\"nextMonth($event)\"\n >\n <sefin-icon name=\"chevron-right\" size=\"sm\"></sefin-icon>\n </button>\n </div>\n\n <!-- Vista de Meses -->\n <div *ngIf=\"viewMode === 'month'\" class=\"sefin-datepicker__month-view\">\n <div class=\"sefin-datepicker__weekdays\">\n <div\n *ngFor=\"let day of getDayNames()\"\n class=\"sefin-datepicker__weekday\"\n >\n {{ day }}\n </div>\n </div>\n\n <div class=\"sefin-datepicker__days\">\n <button\n *ngFor=\"let day of getCalendarDays(); trackBy: trackByDate\"\n type=\"button\"\n class=\"sefin-datepicker__day\"\n [class.sefin-datepicker__day--today]=\"day && isToday(day)\"\n [class.sefin-datepicker__day--selected]=\"day && isSelected(day)\"\n [class.sefin-datepicker__day--in-range]=\"day && isInRange(day)\"\n [class.sefin-datepicker__day--range-start]=\"day && isRangeStart(day)\"\n [class.sefin-datepicker__day--range-end]=\"day && isRangeEnd(day)\"\n [class.sefin-datepicker__day--disabled]=\"day && isDisabled(day)\"\n [class.sefin-datepicker__day--empty]=\"!day\"\n [disabled]=\"!day || (day && isDisabled(day))\"\n (mousedown)=\"day && !isDisabled(day) && onDayMouseDown(day, $event)\"\n (click)=\"day && !isDisabled(day) && selectDate(day, $event)\"\n >\n {{ day ? day.getDate() : \"\" }}\n </button>\n </div>\n </div>\n\n <!-- Vista de Años -->\n <div *ngIf=\"viewMode === 'year'\" class=\"sefin-datepicker__year-view\">\n <div class=\"sefin-datepicker__years-grid\">\n <button\n *ngFor=\"let year of getYears()\"\n type=\"button\"\n class=\"sefin-datepicker__year\"\n [class.sefin-datepicker__year--current]=\"isCurrentYear(year)\"\n [class.sefin-datepicker__year--selected]=\"\n year === currentMonth.getFullYear()\n \"\n (click)=\"selectYear(year, $event)\"\n >\n {{ year }}\n </button>\n </div>\n </div>\n\n <div\n *ngIf=\"showTodayButton && viewMode === 'month'\"\n class=\"sefin-datepicker__footer\"\n >\n <button\n type=\"button\"\n class=\"sefin-datepicker__today\"\n (click)=\"goToToday()\"\n >\n Hoy\n </button>\n </div>\n </div>\n</div>\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n computed,\n signal,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonSize } from '../../shared/types';\n\nexport type PaginationSize = 'sm' | 'md' | 'lg';\nexport type PaginationVariant = 'default' | 'compact';\n\n@Component({\n selector: 'sefin-pagination',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './pagination.component.html',\n styleUrls: ['./pagination.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PaginationComponent {\n /** Current page (1-based) */\n @Input() set currentPage(value: number) {\n this._currentPage.set(Math.max(1, value));\n }\n get currentPage(): number {\n return this._currentPage();\n }\n private _currentPage = signal(1);\n\n /** Total number of pages */\n @Input() set totalPages(value: number) {\n this._totalPages.set(Math.max(1, value));\n }\n get totalPages(): number {\n return this._totalPages();\n }\n private _totalPages = signal(1);\n\n /** Total number of items (alternative to totalPages) */\n @Input() set totalItems(value: number | undefined) {\n if (value !== undefined) {\n this._totalItems.set(value);\n }\n }\n get totalItems(): number | undefined {\n return this._totalItems();\n }\n private _totalItems = signal<number | undefined>(undefined);\n\n /** Items per page (used when totalItems is provided) */\n @Input() itemsPerPage = 10;\n\n /** Number of page buttons to show on each side of current page */\n @Input() siblingCount = 1;\n\n /** Show first and last page buttons */\n @Input() showFirstLast = true;\n\n /** Show previous and next buttons */\n @Input() showPrevNext = true;\n\n /** Pagination size. Options: 'sm' | 'md' | 'lg' */\n @Input() size: PaginationSize = 'md';\n\n /** Pagination variant. Options: 'default' | 'compact' */\n @Input() variant: PaginationVariant = 'default';\n\n /** Additional CSS classes */\n @Input() class = '';\n\n /** Event emitted when page changes */\n @Output() pageChange = new EventEmitter<number>();\n\n /** Computed total pages (from totalItems or direct input) */\n readonly computedTotalPages = computed(() => {\n const total = this._totalItems();\n if (total !== undefined) {\n return Math.max(1, Math.ceil(total / this.itemsPerPage));\n }\n return this._totalPages();\n });\n\n /** Computed page numbers to display */\n readonly pageNumbers = computed(() => {\n const current = this._currentPage();\n const total = this.computedTotalPages();\n const sibling = this.siblingCount;\n\n const pages: (number | string)[] = [];\n\n // Always show first page if not already included\n if (this.showFirstLast && current > sibling + 2) {\n pages.push(1);\n if (current > sibling + 3) {\n pages.push('ellipsis-start');\n }\n }\n\n // Calculate start and end of page range\n const start = Math.max(1, current - sibling);\n const end = Math.min(total, current + sibling);\n\n // Add page numbers in range\n for (let i = start; i <= end; i++) {\n pages.push(i);\n }\n\n // Always show last page if not already included\n if (this.showFirstLast && current < total - sibling - 1) {\n if (current < total - sibling - 2) {\n pages.push('ellipsis-end');\n }\n pages.push(total);\n }\n\n return pages;\n });\n\n get paginationClasses(): string {\n return [\n 'sefin-pagination',\n `sefin-pagination--${this.size}`,\n `sefin-pagination--${this.variant}`,\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n isDisabled(direction: 'prev' | 'next'): boolean {\n if (direction === 'prev') {\n return this.currentPage <= 1;\n }\n return this.currentPage >= this.computedTotalPages();\n }\n\n goToPage(page: number | string): void {\n if (typeof page === 'number') {\n const validPage = Math.max(1, Math.min(page, this.computedTotalPages()));\n if (validPage !== this.currentPage) {\n this._currentPage.set(validPage);\n this.pageChange.emit(validPage);\n }\n }\n }\n\n goToPrevious(): void {\n if (!this.isDisabled('prev')) {\n this.goToPage(this.currentPage - 1);\n }\n }\n\n goToNext(): void {\n if (!this.isDisabled('next')) {\n this.goToPage(this.currentPage + 1);\n }\n }\n\n goToFirst(): void {\n if (this.currentPage > 1) {\n this.goToPage(1);\n }\n }\n\n goToLast(): void {\n const lastPage = this.computedTotalPages();\n if (this.currentPage < lastPage) {\n this.goToPage(lastPage);\n }\n }\n\n isEllipsis(item: number | string): boolean {\n return item === 'ellipsis-start' || item === 'ellipsis-end';\n }\n\n isCurrentPage(page: number | string): boolean {\n return typeof page === 'number' && page === this.currentPage;\n }\n\n getAriaCurrent(page: number | string): string | null {\n return this.isCurrentPage(page) ? 'page' : null;\n }\n}\n\n","<nav [class]=\"paginationClasses\" aria-label=\"Pagination Navigation\">\n <ul class=\"sefin-pagination__list\">\n <!-- First button -->\n <li *ngIf=\"showFirstLast\" class=\"sefin-pagination__item\">\n <button\n type=\"button\"\n class=\"sefin-pagination__button sefin-pagination__button--nav\"\n [disabled]=\"currentPage <= 1\"\n (click)=\"goToFirst()\"\n aria-label=\"Go to first page\"\n [attr.aria-disabled]=\"currentPage <= 1\"\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M11 17L6 12L11 7M18 17L13 12L18 7\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </button>\n </li>\n\n <!-- Previous button -->\n <li *ngIf=\"showPrevNext\" class=\"sefin-pagination__item\">\n <button\n type=\"button\"\n class=\"sefin-pagination__button sefin-pagination__button--nav\"\n [disabled]=\"isDisabled('prev')\"\n (click)=\"goToPrevious()\"\n aria-label=\"Go to previous page\"\n [attr.aria-disabled]=\"isDisabled('prev')\"\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M15 18L9 12L15 6\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </button>\n </li>\n\n <!-- Page numbers -->\n <li\n *ngFor=\"let page of pageNumbers(); let i = index\"\n class=\"sefin-pagination__item\"\n >\n <ng-container *ngIf=\"isEllipsis(page); else pageButton\">\n <span class=\"sefin-pagination__ellipsis\" aria-hidden=\"true\">...</span>\n </ng-container>\n <ng-template #pageButton>\n <button\n type=\"button\"\n class=\"sefin-pagination__button sefin-pagination__button--page\"\n [class.sefin-pagination__button--active]=\"isCurrentPage(page)\"\n (click)=\"goToPage(page)\"\n [attr.aria-label]=\"'Go to page ' + page\"\n [attr.aria-current]=\"getAriaCurrent(page)\"\n >\n {{ page }}\n </button>\n </ng-template>\n </li>\n\n <!-- Next button -->\n <li *ngIf=\"showPrevNext\" class=\"sefin-pagination__item\">\n <button\n type=\"button\"\n class=\"sefin-pagination__button sefin-pagination__button--nav\"\n [disabled]=\"isDisabled('next')\"\n (click)=\"goToNext()\"\n aria-label=\"Go to next page\"\n [attr.aria-disabled]=\"isDisabled('next')\"\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M9 18L15 12L9 6\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </button>\n </li>\n\n <!-- Last button -->\n <li *ngIf=\"showFirstLast\" class=\"sefin-pagination__item\">\n <button\n type=\"button\"\n class=\"sefin-pagination__button sefin-pagination__button--nav\"\n [disabled]=\"currentPage >= computedTotalPages()\"\n (click)=\"goToLast()\"\n aria-label=\"Go to last page\"\n [attr.aria-disabled]=\"currentPage >= computedTotalPages()\"\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M13 17L18 12L13 7M6 17L11 12L6 7\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </button>\n </li>\n </ul>\n</nav>\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n forwardRef,\n ViewChild,\n ElementRef,\n OnInit,\n OnDestroy,\n AfterViewInit,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n NG_VALIDATORS,\n FormControl,\n Validator,\n AbstractControl,\n ValidationErrors,\n} from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { IconComponent } from '../../atoms/icon/icon.component';\n\nexport type TextareaVariant = 'outlined' | 'filled' | 'standard';\nexport type TextareaSize = 'sm' | 'md' | 'lg';\n\n@Component({\n selector: 'sefin-textarea',\n standalone: true,\n imports: [CommonModule, IconComponent],\n templateUrl: './textarea.component.html',\n styleUrls: ['./textarea.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextareaComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => TextareaComponent),\n multi: true,\n },\n ],\n})\nexport class TextareaComponent\n implements ControlValueAccessor, Validator, OnInit, AfterViewInit, OnDestroy\n{\n @ViewChild('textareaRef', { static: false })\n textareaRef?: ElementRef<HTMLTextAreaElement>;\n\n /** Textarea variant style. Options: 'outlined' | 'filled' | 'standard' */\n @Input() variant: TextareaVariant = 'outlined';\n /** Textarea size. Options: 'sm' | 'md' | 'lg' */\n @Input() size: TextareaSize = 'md';\n /** Placeholder text */\n @Input() placeholder = '';\n /** Helper text shown below the textarea */\n @Input() hint = '';\n /** Error message to display */\n @Input() errorMessage = '';\n /** Whether the field is required */\n @Input() required = false;\n /** Whether the field is disabled */\n @Input() disabled = false;\n /** Whether the field is readonly */\n @Input() readonly = false;\n /** Maximum length of the input */\n @Input() maxLength?: number;\n /** Minimum length of the input */\n @Input() minLength?: number;\n /** Pattern for validation (regex string) */\n @Input() pattern?: string;\n /** Number of visible text lines */\n @Input() rows = 4;\n /** Number of visible text columns */\n @Input() cols?: number;\n /** Whether to auto-resize based on content */\n @Input() autoResize = false;\n /** Minimum height when auto-resize is enabled */\n @Input() minHeight?: number;\n /** Maximum height when auto-resize is enabled */\n @Input() maxHeight?: number;\n /** Whether to show character counter */\n @Input() showCounter = false;\n /** Autocomplete attribute */\n @Input() autocomplete?: string;\n /** Textarea name attribute */\n @Input() name = '';\n /** Textarea id attribute */\n @Input() id = '';\n /** Additional CSS classes */\n @Input() class = '';\n /** Custom validation function */\n @Input() customValidator?: (value: string) => string | null;\n /** Initial value for the textarea (for non-reactive forms) */\n @Input() set value(val: string) {\n this._value = val || '';\n if (this.textareaRef?.nativeElement) {\n this.textareaRef.nativeElement.value = this._value;\n if (this.autoResize) {\n setTimeout(() => this.adjustHeight(), 0);\n }\n }\n this.validateField();\n }\n get value(): string {\n return this._value;\n }\n\n /** Event emitted when the value changes */\n @Output() valueChange = new EventEmitter<string>();\n /** Event emitted when the textarea is focused */\n @Output() focused = new EventEmitter<FocusEvent>();\n /** Event emitted when the textarea is blurred */\n @Output() blurred = new EventEmitter<FocusEvent>();\n\n private _value: string = '';\n isFocused = false;\n hasError = false;\n internalErrorMessage = '';\n currentHeight = 0;\n\n private onChange = (value: string) => {};\n private onTouched = () => {};\n private destroy$ = new Subject<void>();\n private control?: FormControl;\n\n ngOnInit(): void {\n this.generateIdIfNeeded();\n }\n\n ngAfterViewInit(): void {\n if (this.textareaRef?.nativeElement) {\n // Set initial value if provided\n if (this._value) {\n this.textareaRef.nativeElement.value = this._value;\n }\n \n // Initialize auto-resize if enabled\n if (this.autoResize) {\n this.adjustHeight();\n }\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private generateIdIfNeeded(): void {\n if (!this.id) {\n this.id = `sefin-textarea-${Math.random().toString(36).substr(2, 9)}`;\n }\n }\n\n onInput(event: Event): void {\n const target = event.target as HTMLTextAreaElement;\n this._value = target.value;\n this.onChange(this._value);\n this.valueChange.emit(this._value);\n this.validateField();\n \n // Auto-resize if enabled\n if (this.autoResize) {\n this.adjustHeight();\n }\n }\n\n onFocus(event: FocusEvent): void {\n this.isFocused = true;\n this.focused.emit(event);\n }\n\n onBlur(event: FocusEvent): void {\n this.isFocused = false;\n this.onTouched();\n this.blurred.emit(event);\n this.validateField();\n }\n\n private adjustHeight(): void {\n if (!this.textareaRef?.nativeElement || !this.autoResize) {\n return;\n }\n\n const textarea = this.textareaRef.nativeElement;\n \n // Reset height to get accurate scrollHeight\n textarea.style.height = 'auto';\n \n // Calculate new height\n let newHeight = textarea.scrollHeight;\n \n // Apply min height if specified\n if (this.minHeight) {\n newHeight = Math.max(newHeight, this.minHeight);\n }\n \n // Apply max height if specified\n if (this.maxHeight) {\n newHeight = Math.min(newHeight, this.maxHeight);\n }\n \n // Set the new height\n textarea.style.height = `${newHeight}px`;\n this.currentHeight = newHeight;\n }\n\n private validateField(): void {\n this.hasError = false;\n this.internalErrorMessage = '';\n\n if (this.disabled || this.readonly) {\n return;\n }\n\n const value = this._value || '';\n\n // Required validation\n if (this.required && !value.trim()) {\n this.hasError = true;\n this.internalErrorMessage = 'Este campo es requerido';\n return;\n }\n\n // Skip other validations if field is empty and not required\n if (!value.trim()) {\n return;\n }\n\n // Min length validation\n if (this.minLength && value.length < this.minLength) {\n this.hasError = true;\n this.internalErrorMessage = `Mínimo ${this.minLength} caracteres`;\n return;\n }\n\n // Max length validation\n if (this.maxLength && value.length > this.maxLength) {\n this.hasError = true;\n this.internalErrorMessage = `Máximo ${this.maxLength} caracteres`;\n return;\n }\n\n // Pattern validation\n if (this.pattern) {\n try {\n const regex = new RegExp(this.pattern);\n if (!regex.test(value)) {\n this.hasError = true;\n this.internalErrorMessage = 'El formato no es válido';\n return;\n }\n } catch (e) {\n console.warn('Invalid pattern:', this.pattern);\n }\n }\n\n // Custom validator\n if (this.customValidator) {\n const customError = this.customValidator(value);\n if (customError) {\n this.hasError = true;\n this.internalErrorMessage = customError;\n return;\n }\n }\n }\n\n get displayError(): boolean {\n return this.hasError && (!!this.errorMessage || !!this.internalErrorMessage);\n }\n\n get displayErrorMessage(): string {\n return this.errorMessage || this.internalErrorMessage;\n }\n\n get characterCount(): number {\n return this._value?.length || 0;\n }\n\n get textareaClasses(): string {\n return [\n 'sefin-textarea',\n `sefin-textarea--${this.variant}`,\n `sefin-textarea--${this.size}`,\n this.isFocused ? 'sefin-textarea--focused' : '',\n this.hasError ? 'sefin-textarea--error' : '',\n this.disabled ? 'sefin-textarea--disabled' : '',\n this.readonly ? 'sefin-textarea--readonly' : '',\n this.autoResize ? 'sefin-textarea--auto-resize' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n // ControlValueAccessor implementation\n writeValue(value: string): void {\n this._value = value || '';\n if (this.textareaRef?.nativeElement) {\n this.textareaRef.nativeElement.value = this._value;\n if (this.autoResize) {\n setTimeout(() => this.adjustHeight(), 0);\n }\n }\n this.validateField();\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n // Validator implementation\n validate(control: AbstractControl): ValidationErrors | null {\n this.control = control as FormControl;\n const value = control.value || '';\n\n if (this.disabled || this.readonly) {\n return null;\n }\n\n // Required validation\n if (this.required && !value.trim()) {\n return { required: true };\n }\n\n // Skip other validations if field is empty and not required\n if (!value.trim()) {\n return null;\n }\n\n const errors: ValidationErrors = {};\n\n // Min length validation\n if (this.minLength && value.length < this.minLength) {\n errors['minlength'] = {\n requiredLength: this.minLength,\n actualLength: value.length,\n };\n }\n\n // Max length validation\n if (this.maxLength && value.length > this.maxLength) {\n errors['maxlength'] = {\n requiredLength: this.maxLength,\n actualLength: value.length,\n };\n }\n\n // Pattern validation\n if (this.pattern) {\n try {\n const regex = new RegExp(this.pattern);\n if (!regex.test(value)) {\n errors['pattern'] = { requiredPattern: this.pattern, actualValue: value };\n }\n } catch (e) {\n console.warn('Invalid pattern:', this.pattern);\n }\n }\n\n // Custom validator\n if (this.customValidator) {\n const customError = this.customValidator(value);\n if (customError) {\n errors['custom'] = { message: customError };\n }\n }\n\n return Object.keys(errors).length > 0 ? errors : null;\n }\n}\n\n","<div [class]=\"textareaClasses\">\n <!-- Textarea Container -->\n <div class=\"sefin-textarea__container\">\n <!-- Textarea Wrapper -->\n <div class=\"sefin-textarea__wrapper\">\n <!-- Textarea -->\n <textarea\n #textareaRef\n [id]=\"id\"\n [name]=\"name\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [attr.rows]=\"rows\"\n [attr.cols]=\"cols\"\n [attr.maxlength]=\"maxLength\"\n [attr.minlength]=\"minLength\"\n [autocomplete]=\"autocomplete\"\n [attr.aria-label]=\"placeholder\"\n [attr.aria-required]=\"required\"\n [attr.aria-invalid]=\"hasError\"\n [attr.aria-describedby]=\"displayError || hint || showCounter ? id + '-helper' : null\"\n class=\"sefin-textarea__textarea\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n ></textarea>\n </div>\n\n <!-- Outline/Filled border -->\n <div class=\"sefin-textarea__border\"></div>\n </div>\n\n <!-- Helper Text / Error Message -->\n <div\n *ngIf=\"displayError || hint || showCounter\"\n [id]=\"id + '-helper'\"\n class=\"sefin-textarea__helper\"\n [class.sefin-textarea__helper--error]=\"displayError\"\n >\n <span *ngIf=\"displayError\" class=\"sefin-textarea__error-message\">\n {{ displayErrorMessage }}\n </span>\n <span *ngIf=\"!displayError && hint\" class=\"sefin-textarea__hint\">\n {{ hint }}\n </span>\n <span\n *ngIf=\"showCounter && !displayError\"\n class=\"sefin-textarea__counter\"\n [class.sefin-textarea__counter--warning]=\"maxLength && characterCount > maxLength * 0.8\"\n >\n {{ characterCount }}{{ maxLength ? ' / ' + maxLength : '' }}\n </span>\n </div>\n</div>\n\n","/**\n * Molecules index\n */\nexport * from './accordion-item/accordion-item.component';\nexport * from './autocomplete/autocomplete.component';\nexport * from './breadcrumbs/breadcrumbs.component';\nexport * from './button-group/button-group.component';\nexport * from './card/card.component';\nexport * from './datepicker/datepicker.component';\nexport * from './pagination/pagination.component';\nexport * from './textarea/textarea.component';\n","/*\n * Public API Surface of @lesterarte/sefin-ui\n */\n\n// Design Tokens\nexport * from './tokens';\n\n// Themes\nexport * from './themes';\n\n// Utilities\nexport * from './utils';\n\n// Shared\nexport * from './shared';\n\n// Atoms\nexport * from './atoms';\n\n// Molecules\nexport * from './molecules';\n\n// Styles (for importing in consuming apps)\nexport const STYLES_PATH = './styles/index.scss';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lesterarte-sefin-ui.mjs","sources":["../../../src/tokens/colors.ts","../../../src/tokens/spacing.ts","../../../src/tokens/typography.ts","../../../src/tokens/border-radius.ts","../../../src/tokens/shadow.ts","../../../src/tokens/index.ts","../../../src/themes/light-theme.ts","../../../src/themes/dark-theme.ts","../../../src/themes/brand-theme.ts","../../../src/themes/index.ts","../../../src/utils/theme-loader.ts","../../../src/utils/index.ts","../../../src/shared/types.ts","../../../src/shared/index.ts","../../../src/atoms/icon/icon.component.ts","../../../src/atoms/icon/icon.component.html","../../../src/atoms/avatar/avatar.component.ts","../../../src/atoms/avatar/avatar.component.html","../../../src/atoms/badge/badge.component.ts","../../../src/atoms/badge/badge.component.html","../../../src/atoms/button/button.component.ts","../../../src/atoms/button/button.component.html","../../../src/atoms/icon/index.ts","../../../src/atoms/icon-button/icon-button.component.ts","../../../src/atoms/icon-button/icon-button.component.html","../../../src/atoms/fab-button/fab-button.component.ts","../../../src/atoms/fab-button/fab-button.component.html","../../../src/atoms/chip/chip.component.ts","../../../src/atoms/chip/chip.component.html","../../../src/atoms/tag/tag.component.ts","../../../src/atoms/tag/tag.component.html","../../../src/atoms/link/link.component.ts","../../../src/atoms/link/link.component.html","../../../src/atoms/stack/stack.component.ts","../../../src/atoms/stack/stack.component.html","../../../src/atoms/container/container.component.ts","../../../src/atoms/container/container.component.html","../../../src/atoms/checkbox/checkbox.component.ts","../../../src/atoms/checkbox/checkbox.component.html","../../../src/atoms/radio/radio.component.ts","../../../src/atoms/radio/radio.component.html","../../../src/atoms/select/select.component.ts","../../../src/atoms/select/select.component.html","../../../src/atoms/switch/switch.component.ts","../../../src/atoms/switch/switch.component.html","../../../src/atoms/typography/typography.component.ts","../../../src/atoms/typography/typography.component.html","../../../src/atoms/divider/divider.component.ts","../../../src/atoms/divider/divider.component.html","../../../src/atoms/spinner/spinner.component.ts","../../../src/atoms/spinner/spinner.component.html","../../../src/atoms/progress-bar/progress-bar.component.ts","../../../src/atoms/progress-bar/progress-bar.component.html","../../../src/atoms/tooltip/tooltip.component.ts","../../../src/atoms/tooltip/tooltip.component.html","../../../src/atoms/alert/alert.component.ts","../../../src/atoms/alert/alert.component.html","../../../src/atoms/toast/toast.component.ts","../../../src/atoms/toast/toast.component.html","../../../src/atoms/textfield/textfield.component.ts","../../../src/atoms/textfield/textfield.component.html","../../../src/atoms/image/image.component.ts","../../../src/atoms/image/image.component.html","../../../src/atoms/tab/tab.component.ts","../../../src/atoms/tab/tab.component.html","../../../src/atoms/rate/rate.component.ts","../../../src/atoms/rate/rate.component.html","../../../src/atoms/spacer/spacer.component.ts","../../../src/atoms/spacer/spacer.component.html","../../../src/atoms/index.ts","../../../src/molecules/accordion-item/accordion-item.component.ts","../../../src/molecules/accordion-item/accordion-item.component.html","../../../src/molecules/autocomplete/autocomplete.component.ts","../../../src/molecules/autocomplete/autocomplete.component.html","../../../src/molecules/breadcrumbs/breadcrumbs.component.ts","../../../src/molecules/breadcrumbs/breadcrumbs.component.html","../../../src/molecules/button-group/button-group.component.ts","../../../src/molecules/button-group/button-group.component.html","../../../src/molecules/card/card.component.ts","../../../src/molecules/card/card.component.html","../../../src/molecules/datepicker/datepicker.component.ts","../../../src/molecules/datepicker/datepicker.component.html","../../../src/molecules/pagination/pagination.component.ts","../../../src/molecules/pagination/pagination.component.html","../../../src/molecules/textarea/textarea.component.ts","../../../src/molecules/textarea/textarea.component.html","../../../src/molecules/index.ts","../../../src/public-api.ts","../../../src/lesterarte-sefin-ui.ts"],"sourcesContent":["/**\n * Color design tokens as TypeScript constants\n * Based on Secretaría de Finanzas brand guidelines\n * These values are the source of truth for all color tokens\n */\n\nexport const COLOR_TOKENS = {\n // Primary colors - Secretaría de Finanzas brand colors\n primary: {\n // Light Blue (Azul Claro) - Primary brand color\n 50: '#e6f7fb',\n 100: '#b3e5f0',\n 200: '#80d3e5',\n 300: '#4dc1da',\n 400: '#2ab0cf',\n 500: '#55C3D8', // Primary Light Blue from brand guidelines\n 600: '#4aafc4',\n 700: '#3f9bb0',\n 800: '#34879c',\n 900: '#297388',\n },\n // Secondary colors - Grays from brand guidelines\n secondary: {\n // Based on Dark Gray and Light Gray from brand\n 50: '#f5f5f5',\n 100: '#e8e8e8',\n 200: '#cecece', // Light Gray from brand guidelines\n 300: '#b5b5b5',\n 400: '#9b9b9b',\n 500: '#828282',\n 600: '#686868',\n 700: '#4f4f4f',\n 800: '#383838', // Dark Gray from brand guidelines\n 900: '#2a2a2a',\n },\n // Neutral colors - Based on brand grays\n neutral: {\n 50: '#ffffff', // White from brand guidelines\n 100: '#f5f5f5',\n 200: '#cecece', // Light Gray\n 300: '#b5b5b5',\n 400: '#9b9b9b',\n 500: '#828282',\n 600: '#686868',\n 700: '#4f4f4f',\n 800: '#383838', // Dark Gray\n 900: '#2a2a2a',\n },\n // Semantic colors - Keeping standard semantic colors\n success: {\n 50: '#e8f5e9',\n 100: '#c8e6c9',\n 200: '#a5d6a7',\n 300: '#81c784',\n 400: '#66bb6a',\n 500: '#4caf50',\n 600: '#43a047',\n 700: '#388e3c',\n 800: '#2e7d32',\n 900: '#1b5e20',\n },\n warning: {\n 50: '#fff3e0',\n 100: '#ffe0b2',\n 200: '#ffcc80',\n 300: '#ffb74d',\n 400: '#ffa726',\n 500: '#ff9800',\n 600: '#fb8c00',\n 700: '#f57c00',\n 800: '#ef6c00',\n 900: '#e65100',\n },\n error: {\n 50: '#ffebee',\n 100: '#ffcdd2',\n 200: '#ef9a9a',\n 300: '#e57373',\n 400: '#ef5350',\n 500: '#f44336',\n 600: '#e53935',\n 700: '#d32f2f',\n 800: '#c62828',\n 900: '#b71c1c',\n },\n info: {\n 50: '#e0f2f1',\n 100: '#b2dfdb',\n 200: '#80cbc4',\n 300: '#4db6ac',\n 400: '#26a69a',\n 500: '#009688',\n 600: '#00897b',\n 700: '#00796b',\n 800: '#00695c',\n 900: '#004d40',\n },\n // Brand-specific colors\n brand: {\n darkGray: '#383838', // Dark Gray from brand guidelines\n lightGray: '#cecece', // Light Gray from brand guidelines\n lightBlue: '#55C3D8', // Light Blue from brand guidelines\n white: '#ffffff', // White from brand guidelines\n },\n} as const;\n\n/**\n * Color token names for CSS variable generation\n */\nexport type ColorTokenName =\n | 'primary'\n | 'secondary'\n | 'neutral'\n | 'success'\n | 'warning'\n | 'error'\n | 'info'\n | 'brand';\n\nexport type ColorShade = 50 | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;\n","/**\n * Spacing design tokens\n * Based on 8px grid system\n */\n\nexport const SPACING_TOKENS = {\n xs: '4px',\n sm: '8px',\n md: '16px',\n lg: '24px',\n xl: '32px',\n '2xl': '48px',\n '3xl': '64px',\n '4xl': '96px',\n '5xl': '128px',\n} as const;\n\nexport type SpacingToken = keyof typeof SPACING_TOKENS;\n\n","/**\n * Typography design tokens\n * Based on Secretaría de Finanzas brand guidelines - Pluto typeface\n */\n\nexport const TYPOGRAPHY_TOKENS = {\n fontFamily: {\n base: \"'Pluto', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif\",\n mono: \"'Fira Code', '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 '5xl': '3rem', // 48px\n },\n fontWeight: {\n light: 300, // Pluto-Light\n normal: 400, // Pluto-Regular\n medium: 500,\n semibold: 600,\n bold: 700, // Pluto-Bold\n },\n lineHeight: {\n tight: 1.25,\n normal: 1.5,\n relaxed: 1.75,\n },\n} as const;\n\nexport type TypographyToken = keyof typeof TYPOGRAPHY_TOKENS;\n","/**\n * Border radius design tokens\n */\n\nexport const BORDER_RADIUS_TOKENS = {\n none: '0',\n sm: '4px',\n md: '8px',\n lg: '12px',\n xl: '16px',\n '2xl': '24px',\n full: '9999px',\n} as const;\n\nexport type BorderRadiusToken = keyof typeof BORDER_RADIUS_TOKENS;\n\n","/**\n * Shadow design tokens\n */\n\nexport const SHADOW_TOKENS = {\n none: 'none',\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 -1px rgba(0, 0, 0, 0.06)',\n lg: '0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)',\n xl: '0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)',\n '2xl': '0 25px 50px -12px rgba(0, 0, 0, 0.25)',\n} as const;\n\nexport type ShadowToken = keyof typeof SHADOW_TOKENS;\n\n","/**\n * Design tokens index\n * Central export for all design tokens\n */\n\nexport * from './colors';\nexport * from './spacing';\nexport * from './typography';\nexport * from './border-radius';\nexport * from './shadow';\n\n/**\n * All design tokens combined\n */\nexport const DESIGN_TOKENS = {\n colors: () => import('./colors').then(m => m.COLOR_TOKENS),\n spacing: () => import('./spacing').then(m => m.SPACING_TOKENS),\n typography: () => import('./typography').then(m => m.TYPOGRAPHY_TOKENS),\n borderRadius: () => import('./border-radius').then(m => m.BORDER_RADIUS_TOKENS),\n shadow: () => import('./shadow').then(m => m.SHADOW_TOKENS),\n};\n\n","import { COLOR_TOKENS } from '../tokens/colors';\n\n/**\n * Light theme configuration\n * Based on Secretaría de Finanzas brand colors\n */\nexport const LIGHT_THEME = {\n name: 'light',\n colors: {\n // Primary color is Light Blue from brand\n primary: COLOR_TOKENS.brand.lightBlue,\n 'primary-dark': COLOR_TOKENS.primary[700],\n 'primary-light': COLOR_TOKENS.primary[300],\n // Secondary uses Dark Gray\n secondary: COLOR_TOKENS.brand.darkGray,\n 'secondary-dark': COLOR_TOKENS.secondary[900],\n 'secondary-light': COLOR_TOKENS.secondary[600],\n // Background uses White and Light Gray\n background: COLOR_TOKENS.brand.white,\n 'background-elevated': COLOR_TOKENS.brand.white,\n surface: COLOR_TOKENS.brand.white,\n 'surface-hover': COLOR_TOKENS.brand.lightGray,\n // Text uses Dark Gray\n text: COLOR_TOKENS.brand.darkGray,\n 'text-secondary': COLOR_TOKENS.secondary[600],\n 'text-disabled': COLOR_TOKENS.secondary[400],\n // Borders use Light Gray\n border: COLOR_TOKENS.brand.lightGray,\n 'border-focus': COLOR_TOKENS.brand.lightBlue,\n // Semantic colors\n success: COLOR_TOKENS.success[500],\n warning: COLOR_TOKENS.warning[500],\n error: COLOR_TOKENS.error[500],\n info: COLOR_TOKENS.info[500],\n },\n} as const;\n","import { COLOR_TOKENS } from '../tokens/colors';\n\n/**\n * Dark theme configuration\n * Based on Secretaría de Finanzas brand colors (inverted)\n */\nexport const DARK_THEME = {\n name: 'dark',\n colors: {\n // Primary color remains Light Blue\n primary: COLOR_TOKENS.brand.lightBlue,\n 'primary-dark': COLOR_TOKENS.primary[300],\n 'primary-light': COLOR_TOKENS.primary[700],\n // Secondary uses Light Gray for contrast\n secondary: COLOR_TOKENS.brand.lightGray,\n 'secondary-dark': COLOR_TOKENS.secondary[400],\n 'secondary-light': COLOR_TOKENS.secondary[200],\n // Background uses Dark Gray\n background: COLOR_TOKENS.brand.darkGray,\n 'background-elevated': COLOR_TOKENS.secondary[700],\n surface: COLOR_TOKENS.secondary[700],\n 'surface-hover': COLOR_TOKENS.secondary[600],\n // Text uses White and Light Gray\n text: COLOR_TOKENS.brand.white,\n 'text-secondary': COLOR_TOKENS.brand.lightGray,\n 'text-disabled': COLOR_TOKENS.secondary[500],\n // Borders use medium gray\n border: COLOR_TOKENS.secondary[600],\n 'border-focus': COLOR_TOKENS.brand.lightBlue,\n // Semantic colors\n success: COLOR_TOKENS.success[400],\n warning: COLOR_TOKENS.warning[400],\n error: COLOR_TOKENS.error[400],\n info: COLOR_TOKENS.info[400],\n },\n} as const;\n","import { COLOR_TOKENS } from '../tokens/colors';\n\n/**\n * Brand theme configuration\n * Exact colors from Secretaría de Finanzas brand guidelines\n */\nexport const BRAND_THEME = {\n name: 'brand',\n colors: {\n // Primary: Light Blue from brand guidelines\n primary: COLOR_TOKENS.brand.lightBlue, // #55C3D8\n 'primary-dark': COLOR_TOKENS.primary[700],\n 'primary-light': COLOR_TOKENS.primary[300],\n // Secondary: Dark Gray from brand guidelines\n secondary: COLOR_TOKENS.brand.darkGray, // #383838\n 'secondary-dark': COLOR_TOKENS.secondary[900],\n 'secondary-light': COLOR_TOKENS.secondary[600],\n // Background: White from brand guidelines\n background: COLOR_TOKENS.brand.white, // #ffffff\n 'background-elevated': COLOR_TOKENS.brand.white,\n surface: COLOR_TOKENS.brand.white,\n 'surface-hover': COLOR_TOKENS.brand.lightGray, // #cecece\n // Text: Dark Gray from brand guidelines\n text: COLOR_TOKENS.brand.darkGray, // #383838\n 'text-secondary': COLOR_TOKENS.secondary[600],\n 'text-disabled': COLOR_TOKENS.secondary[400],\n // Border: Light Gray from brand guidelines\n border: COLOR_TOKENS.brand.lightGray, // #cecece\n 'border-focus': COLOR_TOKENS.brand.lightBlue, // #55C3D8\n // Semantic colors\n success: COLOR_TOKENS.success[500],\n warning: COLOR_TOKENS.warning[500],\n error: COLOR_TOKENS.error[500],\n info: COLOR_TOKENS.info[500],\n },\n} as const;\n","/**\n * Themes index\n */\nexport * from './light-theme';\nexport * from './dark-theme';\nexport * from './brand-theme';\n\nexport type Theme = 'light' | 'dark' | 'brand';\n\n","import { LIGHT_THEME } from '../themes/light-theme';\nimport { DARK_THEME } from '../themes/dark-theme';\nimport { BRAND_THEME } from '../themes/brand-theme';\nimport { SPACING_TOKENS } from '../tokens/spacing';\nimport { TYPOGRAPHY_TOKENS } from '../tokens/typography';\nimport { BORDER_RADIUS_TOKENS } from '../tokens/border-radius';\nimport { SHADOW_TOKENS } from '../tokens/shadow';\nimport type { Theme } from '../themes';\nimport type { CustomTheme } from '../shared/types';\n\n/**\n * Theme loader utility\n * Generates CSS variables from design tokens\n */\nexport class ThemeLoader {\n /**\n * Load a theme and apply it to the document root\n * @param themeName - Predefined theme name ('light', 'dark', 'brand') or a CustomTheme object\n * @param variant - Optional variant ('light' or 'dark') for CustomTheme with variants support\n */\n static loadTheme(\n themeName: Theme | CustomTheme = 'light',\n variant?: 'light' | 'dark'\n ): void {\n let theme: CustomTheme | typeof LIGHT_THEME;\n let colors: Record<string, string | undefined>;\n\n if (typeof themeName === 'string') {\n theme = this.getTheme(themeName);\n colors = theme.colors as Record<string, string | undefined>;\n } else {\n theme = themeName;\n // If variant is specified and theme has variants, use variant colors\n if (variant && theme.variants) {\n const variantColors = theme.variants[variant];\n if (variantColors) {\n colors = variantColors;\n } else {\n // Fallback to base colors if variant doesn't exist\n colors = theme.colors;\n }\n } else {\n // Use base colors if no variant specified or no variants defined\n colors = theme.colors;\n }\n }\n\n const root = document.documentElement;\n\n // Apply color tokens\n Object.entries(colors).forEach(([key, value]) => {\n if (value) {\n root.style.setProperty(`--sefin-color-${key}`, value);\n }\n });\n\n // Apply spacing tokens (use custom if provided, otherwise use defaults)\n const spacingTokens = typeof themeName === 'object' && themeName.spacing \n ? { ...SPACING_TOKENS, ...themeName.spacing }\n : SPACING_TOKENS;\n Object.entries(spacingTokens).forEach(([key, value]) => {\n root.style.setProperty(`--sefin-spacing-${key}`, value);\n });\n\n // Apply typography tokens (use custom if provided, otherwise use defaults)\n const typographyTokens = typeof themeName === 'object' && themeName.typography\n ? {\n fontFamily: { ...TYPOGRAPHY_TOKENS.fontFamily, ...themeName.typography.fontFamily },\n fontSize: { ...TYPOGRAPHY_TOKENS.fontSize, ...themeName.typography.fontSize },\n fontWeight: { ...TYPOGRAPHY_TOKENS.fontWeight, ...themeName.typography.fontWeight },\n lineHeight: { ...TYPOGRAPHY_TOKENS.lineHeight, ...themeName.typography.lineHeight },\n }\n : TYPOGRAPHY_TOKENS;\n\n Object.entries(typographyTokens.fontFamily).forEach(([key, value]) => {\n root.style.setProperty(`--sefin-font-family-${key}`, value);\n });\n Object.entries(typographyTokens.fontSize).forEach(([key, value]) => {\n root.style.setProperty(`--sefin-font-size-${key}`, value);\n });\n Object.entries(typographyTokens.fontWeight).forEach(([key, value]) => {\n root.style.setProperty(`--sefin-font-weight-${key}`, String(value));\n });\n Object.entries(typographyTokens.lineHeight).forEach(([key, value]) => {\n root.style.setProperty(`--sefin-line-height-${key}`, String(value));\n });\n\n // Apply border radius tokens (use custom if provided, otherwise use defaults)\n const borderRadiusTokens = typeof themeName === 'object' && themeName.borderRadius\n ? { ...BORDER_RADIUS_TOKENS, ...themeName.borderRadius }\n : BORDER_RADIUS_TOKENS;\n Object.entries(borderRadiusTokens).forEach(([key, value]) => {\n root.style.setProperty(`--sefin-radius-${key}`, value);\n });\n\n // Apply shadow tokens (use custom if provided, otherwise use defaults)\n const shadowTokens = typeof themeName === 'object' && themeName.shadow\n ? { ...SHADOW_TOKENS, ...themeName.shadow }\n : SHADOW_TOKENS;\n Object.entries(shadowTokens).forEach(([key, value]) => {\n root.style.setProperty(`--sefin-shadow-${key}`, value);\n });\n\n // Set theme attribute for CSS selectors\n let themeAttribute: string;\n if (typeof themeName === 'string') {\n themeAttribute = themeName;\n } else {\n themeAttribute = variant\n ? `${themeName.name}-${variant}`\n : themeName.name;\n }\n root.setAttribute('data-theme', themeAttribute);\n }\n\n /**\n * Load a custom theme variant (light or dark)\n * @param customTheme - CustomTheme object with variants support\n * @param variant - Variant to load ('light' or 'dark')\n */\n static loadThemeVariant(\n customTheme: CustomTheme,\n variant: 'light' | 'dark'\n ): void {\n if (!customTheme.variants) {\n console.warn(\n `Theme \"${customTheme.name}\" does not have variants. Loading base theme.`\n );\n this.loadTheme(customTheme);\n return;\n }\n\n this.loadTheme(customTheme, variant);\n }\n\n /**\n * Get theme configuration by name\n */\n private static getTheme(themeName: Theme) {\n switch (themeName) {\n case 'dark':\n return DARK_THEME;\n case 'brand':\n return BRAND_THEME;\n case 'light':\n default:\n return LIGHT_THEME;\n }\n }\n\n /**\n * Get all CSS variables as a string (useful for SSR or static generation)\n * @param themeName - Predefined theme name ('light', 'dark', 'brand') or a CustomTheme object\n * @param variant - Optional variant ('light' or 'dark') for CustomTheme with variants support\n */\n static getThemeCSS(\n themeName: Theme | CustomTheme = 'light',\n variant?: 'light' | 'dark'\n ): string {\n let theme: CustomTheme | typeof LIGHT_THEME;\n let colors: Record<string, string | undefined>;\n\n if (typeof themeName === 'string') {\n theme = this.getTheme(themeName);\n colors = theme.colors as Record<string, string | undefined>;\n } else {\n theme = themeName;\n // If variant is specified and theme has variants, use variant colors\n if (variant && theme.variants) {\n const variantColors = theme.variants[variant];\n if (variantColors) {\n colors = variantColors;\n } else {\n colors = theme.colors;\n }\n } else {\n colors = theme.colors;\n }\n }\n\n let css = ':root {\\n';\n\n // Color tokens\n Object.entries(colors).forEach(([key, value]) => {\n if (value) {\n css += ` --sefin-color-${key}: ${value};\\n`;\n }\n });\n\n // Spacing tokens\n const spacingTokens = typeof themeName === 'object' && themeName.spacing \n ? { ...SPACING_TOKENS, ...themeName.spacing }\n : SPACING_TOKENS;\n Object.entries(spacingTokens).forEach(([key, value]) => {\n css += ` --sefin-spacing-${key}: ${value};\\n`;\n });\n\n // Typography tokens\n const typographyTokens = typeof themeName === 'object' && themeName.typography\n ? {\n fontFamily: { ...TYPOGRAPHY_TOKENS.fontFamily, ...themeName.typography.fontFamily },\n fontSize: { ...TYPOGRAPHY_TOKENS.fontSize, ...themeName.typography.fontSize },\n fontWeight: { ...TYPOGRAPHY_TOKENS.fontWeight, ...themeName.typography.fontWeight },\n lineHeight: { ...TYPOGRAPHY_TOKENS.lineHeight, ...themeName.typography.lineHeight },\n }\n : TYPOGRAPHY_TOKENS;\n\n Object.entries(typographyTokens.fontFamily).forEach(([key, value]) => {\n css += ` --sefin-font-family-${key}: ${value};\\n`;\n });\n Object.entries(typographyTokens.fontSize).forEach(([key, value]) => {\n css += ` --sefin-font-size-${key}: ${value};\\n`;\n });\n Object.entries(typographyTokens.fontWeight).forEach(([key, value]) => {\n css += ` --sefin-font-weight-${key}: ${value};\\n`;\n });\n Object.entries(typographyTokens.lineHeight).forEach(([key, value]) => {\n css += ` --sefin-line-height-${key}: ${value};\\n`;\n });\n\n // Border radius tokens\n const borderRadiusTokens = typeof themeName === 'object' && themeName.borderRadius\n ? { ...BORDER_RADIUS_TOKENS, ...themeName.borderRadius }\n : BORDER_RADIUS_TOKENS;\n Object.entries(borderRadiusTokens).forEach(([key, value]) => {\n css += ` --sefin-radius-${key}: ${value};\\n`;\n });\n\n // Shadow tokens\n const shadowTokens = typeof themeName === 'object' && themeName.shadow\n ? { ...SHADOW_TOKENS, ...themeName.shadow }\n : SHADOW_TOKENS;\n Object.entries(shadowTokens).forEach(([key, value]) => {\n css += ` --sefin-shadow-${key}: ${value};\\n`;\n });\n\n css += '}\\n';\n return css;\n }\n}\n\n","/**\n * Utilities index\n */\nexport * from './theme-loader';\n\n","/**\n * Shared types and interfaces\n */\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'outline' | 'ghost' | 'danger';\nexport type ButtonSize = 'sm' | 'md' | 'lg';\nexport type InputSize = 'sm' | 'md' | 'lg';\nexport type CardVariant = 'default' | 'elevated' | 'outlined';\nexport type TypographyVariant = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'span';\nexport type TypographySize = 'xs' | 'sm' | 'base' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | '5xl';\nexport type TypographyWeight = 'light' | 'normal' | 'medium' | 'semibold' | 'bold';\nexport type TypographyColor = 'text' | 'text-secondary' | 'text-disabled' | 'primary' | 'secondary' | 'success' | 'warning' | 'error';\nexport type TypographyLineHeight = 'tight' | 'normal' | 'relaxed';\n\nexport interface BaseComponent {\n disabled?: boolean;\n class?: string;\n}\n\n/**\n * Theme color configuration\n */\nexport interface ThemeColors {\n primary: string;\n 'primary-dark'?: string;\n 'primary-light'?: string;\n secondary: string;\n 'secondary-dark'?: string;\n 'secondary-light'?: string;\n background: string;\n 'background-elevated'?: string;\n surface: string;\n 'surface-hover'?: string;\n text: string;\n 'text-secondary'?: string;\n 'text-disabled'?: string;\n border: string;\n 'border-focus'?: string;\n success?: string;\n warning?: string;\n error?: string;\n info?: string;\n [key: string]: string | undefined;\n}\n\n/**\n * Custom theme configuration interface\n * Allows users to create their own themes with custom colors, typography, spacing, etc.\n * Supports both single theme and light/dark variants.\n */\nexport interface CustomTheme {\n name: string;\n colors: ThemeColors;\n /**\n * Optional light and dark variants for the theme\n * If provided, allows switching between light and dark modes\n */\n variants?: {\n light?: ThemeColors;\n dark?: ThemeColors;\n };\n typography?: {\n fontFamily?: {\n base?: string;\n mono?: string;\n [key: string]: string | undefined;\n };\n fontSize?: {\n xs?: string;\n sm?: string;\n base?: string;\n lg?: string;\n xl?: string;\n '2xl'?: string;\n '3xl'?: string;\n '4xl'?: string;\n '5xl'?: string;\n [key: string]: string | undefined;\n };\n fontWeight?: {\n light?: number;\n normal?: number;\n medium?: number;\n semibold?: number;\n bold?: number;\n [key: string]: number | undefined;\n };\n lineHeight?: {\n tight?: number;\n normal?: number;\n relaxed?: number;\n [key: string]: number | undefined;\n };\n };\n spacing?: {\n xs?: string;\n sm?: string;\n md?: string;\n lg?: string;\n xl?: string;\n '2xl'?: string;\n '3xl'?: string;\n '4xl'?: string;\n '5xl'?: string;\n [key: string]: string | undefined;\n };\n borderRadius?: {\n none?: string;\n sm?: string;\n md?: string;\n lg?: string;\n xl?: string;\n '2xl'?: string;\n full?: string;\n [key: string]: string | undefined;\n };\n shadow?: {\n none?: string;\n sm?: string;\n md?: string;\n lg?: string;\n xl?: string;\n '2xl'?: string;\n [key: string]: string | undefined;\n };\n}\n\n","/**\n * Shared index\n */\nexport * from './types';\n\n","import { Component, Input, ChangeDetectionStrategy, Optional, Injector } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport * as LucideIcons from 'lucide';\n\nexport type IconSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\nconst SIZE_MAP: Record<IconSize, number> = {\n xs: 12,\n sm: 16,\n md: 24,\n lg: 32,\n xl: 48,\n};\n\nconst ICON_COMPONENT_MAP: Record<string, any> = {\n home: LucideIcons.Home,\n menu: LucideIcons.Menu,\n 'x': LucideIcons.X,\n 'arrow-left': LucideIcons.ArrowLeft,\n 'arrow-right': LucideIcons.ArrowRight,\n 'arrow-up': LucideIcons.ArrowUp,\n 'arrow-down': LucideIcons.ArrowDown,\n 'chevron-left': LucideIcons.ChevronLeft,\n 'chevron-right': LucideIcons.ChevronRight,\n 'chevron-up': LucideIcons.ChevronUp,\n 'chevron-down': LucideIcons.ChevronDown,\n 'plus': LucideIcons.Plus,\n 'minus': LucideIcons.Minus,\n 'edit': LucideIcons.Edit,\n 'trash-2': LucideIcons.Trash2,\n 'save': LucideIcons.Save,\n 'search': LucideIcons.Search,\n 'filter': LucideIcons.Filter,\n 'more-vertical': LucideIcons.MoreVertical,\n 'more-horizontal': LucideIcons.MoreHorizontal,\n 'check': LucideIcons.Check,\n 'check-circle': LucideIcons.CheckCircle,\n 'x-circle': LucideIcons.XCircle,\n 'info': LucideIcons.Info,\n 'alert-triangle': LucideIcons.AlertTriangle,\n 'alert-circle': LucideIcons.AlertCircle,\n 'star': LucideIcons.Star,\n 'mail': LucideIcons.Mail,\n 'bell': LucideIcons.Bell,\n 'share-2': LucideIcons.Share2,\n 'file': LucideIcons.File,\n 'folder': LucideIcons.Folder,\n 'download': LucideIcons.Download,\n 'upload': LucideIcons.Upload,\n 'settings': LucideIcons.Settings,\n 'refresh-cw': LucideIcons.RefreshCw,\n 'lock': LucideIcons.Lock,\n 'unlock': LucideIcons.Unlock,\n 'eye': LucideIcons.Eye,\n 'eye-off': LucideIcons.EyeOff,\n 'user': LucideIcons.User,\n 'user-circle': LucideIcons.UserCircle,\n 'log-out': LucideIcons.LogOut,\n 'log-in': LucideIcons.LogIn,\n};\n\nconst ICON_NAME_MAP: Record<string, string> = {\n home: 'home',\n menu: 'menu',\n close: 'x',\n arrow_back: 'arrow-left',\n arrow_forward: 'arrow-right',\n arrow_up: 'arrow-up',\n arrow_down: 'arrow-down',\n chevron_left: 'chevron-left',\n chevron_right: 'chevron-right',\n chevron_up: 'chevron-up',\n chevron_down: 'chevron-down',\n add: 'plus',\n remove: 'minus',\n edit: 'edit',\n delete: 'trash-2',\n save: 'save',\n search: 'search',\n filter: 'filter',\n more_vert: 'more-vertical',\n more_horiz: 'more-horizontal',\n check: 'check',\n check_circle: 'check-circle',\n cancel: 'x-circle',\n info: 'info',\n warning: 'alert-triangle',\n error: 'alert-circle',\n star: 'star',\n star_filled: 'star',\n mail: 'mail',\n notification: 'bell',\n share: 'share-2',\n file: 'file',\n folder: 'folder',\n download: 'download',\n upload: 'upload',\n settings: 'settings',\n refresh: 'refresh-cw',\n lock: 'lock',\n unlock: 'unlock',\n visibility: 'eye',\n visibility_off: 'eye-off',\n person: 'user',\n account_circle: 'user-circle',\n logout: 'log-out',\n login: 'log-in',\n};\n\n@Component({\n selector: 'sefin-icon',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './icon.component.html',\n styleUrls: ['./icon.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IconComponent {\n private sanitizer: DomSanitizer | null = null;\n\n constructor(private injector: Injector) {\n try {\n this.sanitizer = this.injector.get(DomSanitizer, null);\n } catch (e) {\n this.sanitizer = null;\n }\n }\n \n /** Icon name from Lucide Angular (e.g., 'home', 'search', 'user') */\n @Input() name?: string;\n /** Icon size. Options: 'xs' | 'sm' | 'md' | 'lg' | 'xl' */\n @Input() size: IconSize = 'md';\n /** Custom color for the icon */\n @Input() color?: string;\n /** Whether the icon should be rotated 180 degrees */\n @Input() rotate = false;\n /** Whether the icon should be flipped horizontally */\n @Input() flipH = false;\n /** Whether the icon should be flipped vertically */\n @Input() flipV = false;\n /** Additional CSS classes */\n @Input() class = '';\n\n get iconClasses(): string {\n return [\n 'sefin-icon',\n `sefin-icon--${this.size}`,\n this.rotate ? 'sefin-icon--rotate' : '',\n this.flipH ? 'sefin-icon--flip-h' : '',\n this.flipV ? 'sefin-icon--flip-v' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get sizeValue(): number {\n return SIZE_MAP[this.size];\n }\n\n get lucideIconName(): string | undefined {\n if (!this.name) {\n return undefined;\n }\n return ICON_NAME_MAP[this.name] || this.name;\n }\n\n get iconSvgHtml(): any {\n const iconName = this.lucideIconName;\n if (!iconName) {\n return '';\n }\n\n let iconData = ICON_COMPONENT_MAP[iconName];\n \n if (!iconData) {\n const pascalCaseName = iconName\n .split('-')\n .map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join('');\n \n iconData = (LucideIcons as any)[pascalCaseName];\n }\n \n if (!iconData || !Array.isArray(iconData)) {\n return '';\n }\n\n try {\n const size = this.sizeValue;\n const color = this.color || 'currentColor';\n const transform = this.getTransform();\n \n const paths = iconData\n .map((item: any) => {\n if (!Array.isArray(item) || item.length < 2) {\n return '';\n }\n \n const tag = item[0];\n const attrs = item[1] || {};\n \n if (tag === 'path') {\n const d = attrs.d || '';\n return `<path d=\"${d}\"></path>`;\n }\n if (tag === 'circle') {\n return `<circle cx=\"${attrs.cx || 0}\" cy=\"${attrs.cy || 0}\" r=\"${attrs.r || 0}\"></circle>`;\n }\n if (tag === 'line') {\n return `<line x1=\"${attrs.x1 || 0}\" y1=\"${attrs.y1 || 0}\" x2=\"${attrs.x2 || 0}\" y2=\"${attrs.y2 || 0}\"></line>`;\n }\n if (tag === 'polyline') {\n const points = attrs.points || '';\n return `<polyline points=\"${points}\"></polyline>`;\n }\n if (tag === 'rect') {\n return `<rect x=\"${attrs.x || 0}\" y=\"${attrs.y || 0}\" width=\"${attrs.width || 0}\" height=\"${attrs.height || 0}\"></rect>`;\n }\n if (tag === 'polygon') {\n const points = attrs.points || '';\n return `<polygon points=\"${points}\"></polygon>`;\n }\n return '';\n })\n .filter(Boolean)\n .join('');\n\n if (!paths) {\n return '';\n }\n\n const transformAttr = transform ? ` style=\"transform: ${transform}\"` : '';\n const safeColor = color.includes('\"') ? color.replace(/\"/g, '"') : color;\n const svgHtml = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${size}\" height=\"${size}\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"${safeColor}\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"${transformAttr}>${paths}</svg>`;\n \n if (this.sanitizer) {\n return this.sanitizer.bypassSecurityTrustHtml(svgHtml);\n }\n \n return svgHtml;\n } catch (error) {\n return '';\n }\n }\n\n private escapeHtml(text: string): string {\n if (typeof document === 'undefined') {\n return text.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/\"/g, '"').replace(/'/g, ''');\n }\n const div = document.createElement('div');\n div.textContent = text;\n return div.innerHTML;\n }\n\n private getTransform(): string {\n const transforms: string[] = [];\n if (this.rotate) transforms.push('rotate(180)');\n if (this.flipH) transforms.push('scaleX(-1)');\n if (this.flipV) transforms.push('scaleY(-1)');\n return transforms.length > 0 ? transforms.join(' ') : '';\n }\n\n}\n\n","<span\n [class]=\"iconClasses\"\n [attr.aria-hidden]=\"true\"\n role=\"img\"\n style=\"display: inline-flex; align-items: center; justify-content: center; width: 100%; height: 100%;\"\n>\n <span [innerHTML]=\"iconSvgHtml\" style=\"display: inline-block; width: 100%; height: 100%;\"></span>\n</span>\n\n","import {\n Component,\n Input,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IconComponent } from '../icon/icon.component';\n\nexport type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n@Component({\n selector: 'sefin-avatar',\n standalone: true,\n imports: [CommonModule, IconComponent],\n templateUrl: './avatar.component.html',\n styleUrls: ['./avatar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AvatarComponent {\n /** Avatar size. Options: 'xs' | 'sm' | 'md' | 'lg' | 'xl' */\n @Input() size: AvatarSize = 'md';\n /** Image source URL */\n @Input() src?: string;\n /** Alt text for the image */\n @Input() alt = '';\n /** Initials to display when no image is provided */\n @Input() initials?: string;\n /** Whether to show a border/ring around the avatar */\n @Input() bordered = false;\n /** Additional CSS classes */\n @Input() class = '';\n\n get avatarClasses(): string {\n return [\n 'sefin-avatar',\n `sefin-avatar--${this.size}`,\n this.bordered ? 'sefin-avatar--bordered' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get displayInitials(): string {\n if (this.initials) {\n return this.initials.toUpperCase().slice(0, 2);\n }\n return '';\n }\n\n onImageError(event: Event): void {\n const img = event.target as HTMLImageElement;\n img.style.display = 'none';\n }\n\n get iconSize(): 'xs' | 'sm' | 'md' | 'lg' | 'xl' {\n // Map avatar size to icon size\n const sizeMap: Record<AvatarSize, 'xs' | 'sm' | 'md' | 'lg' | 'xl'> = {\n xs: 'xs',\n sm: 'xs',\n md: 'sm',\n lg: 'md',\n xl: 'lg',\n };\n return sizeMap[this.size];\n }\n}\n\n","<div [class]=\"avatarClasses\">\n <img\n *ngIf=\"src\"\n [src]=\"src\"\n [alt]=\"alt || 'Avatar'\"\n (error)=\"onImageError($event)\"\n class=\"sefin-avatar__image\"\n />\n <span *ngIf=\"!src && displayInitials\" class=\"sefin-avatar__initials\">\n {{ displayInitials }}\n </span>\n <sefin-icon\n *ngIf=\"!src && !displayInitials\"\n name=\"user\"\n [size]=\"iconSize\"\n class=\"sefin-avatar__icon\"\n ></sefin-icon>\n</div>\n\n","import { Component, Input, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport type BadgeVariant =\n | 'default'\n | 'primary'\n | 'secondary'\n | 'success'\n | 'warning'\n | 'error';\nexport type BadgeSize = 'sm' | 'md' | 'lg';\n\n@Component({\n selector: 'sefin-badge',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './badge.component.html',\n styleUrls: ['./badge.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BadgeComponent {\n /** Badge variant style. Options: 'default' | 'primary' | 'secondary' | 'success' | 'warning' | 'error' */\n @Input() variant: BadgeVariant = 'default';\n /** Badge size. Options: 'sm' | 'md' | 'lg' */\n @Input() size: BadgeSize = 'md';\n /** Whether the badge should be displayed as a dot (no text) */\n @Input() dot = false;\n /** Maximum number to show before displaying as \"+N\" */\n @Input() max?: number;\n /** Badge value (number or text) */\n @Input() value?: number | string;\n /** Additional CSS classes */\n @Input() class = '';\n\n get badgeClasses(): string {\n return [\n 'sefin-badge',\n `sefin-badge--${this.variant}`,\n `sefin-badge--${this.size}`,\n this.dot ? 'sefin-badge--dot' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get displayValue(): string {\n if (this.dot) {\n return '';\n }\n\n if (this.value === undefined || this.value === null) {\n return '';\n }\n\n if (typeof this.value === 'number') {\n if (this.max !== undefined && this.value > this.max) {\n return `+${this.max}`;\n }\n return String(this.value);\n }\n\n return String(this.value);\n }\n}\n","<span [class]=\"badgeClasses\" [attr.aria-label]=\"displayValue || 'Badge'\">\n <span *ngIf=\"!dot\" class=\"sefin-badge__content\">{{ displayValue }}</span>\n</span>","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonVariant, ButtonSize } from '../../shared/types';\n\n@Component({\n selector: 'sefin-button',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ButtonComponent {\n /** Button variant style. Options: 'primary' | 'secondary' | 'outline' | 'ghost' | 'danger' */\n @Input() variant: ButtonVariant = 'primary';\n /** Button size. Options: 'sm' | 'md' | 'lg' */\n @Input() size: ButtonSize = 'md';\n /** Whether the button is disabled */\n @Input() disabled = false;\n /** Whether the button should take full width of the container */\n @Input() fullWidth = false;\n /** Button type. Options: 'button' | 'submit' | 'reset' */\n @Input() type: 'button' | 'submit' | 'reset' = 'button';\n /** Additional CSS classes */\n @Input() class = '';\n\n @Output() clicked = new EventEmitter<MouseEvent>();\n\n onClick(event: MouseEvent): void {\n if (!this.disabled) {\n this.clicked.emit(event);\n }\n }\n\n get buttonClasses(): string {\n return [\n 'sefin-button',\n `sefin-button--${this.variant}`,\n `sefin-button--${this.size}`,\n this.fullWidth ? 'sefin-button--full-width' : '',\n this.disabled ? 'sefin-button--disabled' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n","<button [type]=\"type\" [disabled]=\"disabled\" [class]=\"buttonClasses\" (click)=\"onClick($event)\">\n <ng-content></ng-content>\n</button>\n","/**\n * Icon exports\n */\nexport * from './icon.component';\n// export * from './lucide-icon-map'; // Disabled - lucide-angular removed\n\n","import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonVariant, ButtonSize } from '../../shared/types';\n\n@Component({\n selector: 'sefin-icon-button',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './icon-button.component.html',\n styleUrls: ['./icon-button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IconButtonComponent {\n /** Button variant style. Options: 'primary' | 'secondary' | 'outline' | 'ghost' | 'danger' */\n @Input() variant: ButtonVariant = 'primary';\n /** Button size. Options: 'sm' | 'md' | 'lg' */\n @Input() size: ButtonSize = 'md';\n /** Whether the button is disabled */\n @Input() disabled = false;\n /** Button type. Options: 'button' | 'submit' | 'reset' */\n @Input() type: 'button' | 'submit' | 'reset' = 'button';\n /** Additional CSS classes */\n @Input() class = '';\n /** Accessibility label for the button */\n @Input() ariaLabel = '';\n /** Whether the button should be rounded (circular) */\n @Input() rounded = false;\n\n @Output() clicked = new EventEmitter<MouseEvent>();\n\n onClick(event: MouseEvent): void {\n if (!this.disabled) {\n this.clicked.emit(event);\n }\n }\n\n get buttonClasses(): string {\n return [\n 'sefin-icon-button',\n `sefin-icon-button--${this.variant}`,\n `sefin-icon-button--${this.size}`,\n this.disabled ? 'sefin-icon-button--disabled' : '',\n this.rounded ? 'sefin-icon-button--rounded' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n\n","<button \n [type]=\"type\" \n [disabled]=\"disabled\" \n [class]=\"buttonClasses\" \n (click)=\"onClick($event)\"\n [attr.aria-label]=\"ariaLabel || null\"\n>\n <ng-content></ng-content>\n</button>\n\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonVariant } from '../../shared/types';\n\nexport type FabSize = 'sm' | 'md' | 'lg';\n\n@Component({\n selector: 'sefin-fab-button',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './fab-button.component.html',\n styleUrls: ['./fab-button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FabButtonComponent {\n /** Button variant style. Options: 'primary' | 'secondary' | 'outline' | 'ghost' | 'danger' */\n @Input() variant: ButtonVariant = 'primary';\n /** FAB size. Options: 'sm' | 'md' | 'lg' */\n @Input() size: FabSize = 'md';\n /** Whether the button is disabled */\n @Input() disabled = false;\n /** Button type. Options: 'button' | 'submit' | 'reset' */\n @Input() type: 'button' | 'submit' | 'reset' = 'button';\n /** Additional CSS classes */\n @Input() class = '';\n /** Accessibility label for the button */\n @Input() ariaLabel = '';\n\n @Output() clicked = new EventEmitter<MouseEvent>();\n\n onClick(event: MouseEvent): void {\n if (!this.disabled) {\n this.clicked.emit(event);\n }\n }\n\n get buttonClasses(): string {\n return [\n 'sefin-fab-button',\n `sefin-fab-button--${this.variant}`,\n `sefin-fab-button--${this.size}`,\n this.disabled ? 'sefin-fab-button--disabled' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n\n","<button \n [type]=\"type\" \n [disabled]=\"disabled\" \n [class]=\"buttonClasses\" \n (click)=\"onClick($event)\"\n [attr.aria-label]=\"ariaLabel || null\"\n>\n <ng-content></ng-content>\n</button>\n\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport type ChipVariant = 'default' | 'primary' | 'secondary' | 'outline' | 'ghost';\nexport type ChipSize = 'sm' | 'md' | 'lg';\n\n@Component({\n selector: 'sefin-chip',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './chip.component.html',\n styleUrls: ['./chip.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChipComponent {\n /** Chip variant style. Options: 'default' | 'primary' | 'secondary' | 'outline' | 'ghost' */\n @Input() variant: ChipVariant = 'default';\n /** Chip size. Options: 'sm' | 'md' | 'lg' */\n @Input() size: ChipSize = 'md';\n /** Whether the chip is disabled */\n @Input() disabled = false;\n /** Whether the chip can be removed (shows remove button) */\n @Input() removable = false;\n /** Whether the chip is selected (for selectable chips) */\n @Input() selected = false;\n /** Additional CSS classes */\n @Input() class = '';\n\n @Output() removed = new EventEmitter<MouseEvent>();\n @Output() clicked = new EventEmitter<MouseEvent>();\n\n onRemove(event: MouseEvent): void {\n event.stopPropagation();\n if (!this.disabled) {\n this.removed.emit(event);\n }\n }\n\n onClick(event: MouseEvent): void {\n if (!this.disabled) {\n this.clicked.emit(event);\n }\n }\n\n get chipClasses(): string {\n return [\n 'sefin-chip',\n `sefin-chip--${this.variant}`,\n `sefin-chip--${this.size}`,\n this.disabled ? 'sefin-chip--disabled' : '',\n this.selected ? 'sefin-chip--selected' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n\n","<div\n [class]=\"chipClasses\"\n (click)=\"onClick($event)\"\n [attr.aria-disabled]=\"disabled\"\n [attr.aria-selected]=\"selected\"\n role=\"button\"\n tabindex=\"0\"\n>\n <span class=\"sefin-chip__content\">\n <ng-content></ng-content>\n </span>\n <button\n *ngIf=\"removable && !disabled\"\n type=\"button\"\n class=\"sefin-chip__remove\"\n (click)=\"onRemove($event)\"\n aria-label=\"Remove\"\n tabindex=\"-1\"\n >\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M10.5 3.5L3.5 10.5M3.5 3.5L10.5 10.5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </button>\n</div>\n\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IconComponent } from '../icon/icon.component';\n\nexport type TagVariant =\n | 'default'\n | 'primary'\n | 'secondary'\n | 'success'\n | 'warning'\n | 'error'\n | 'info';\nexport type TagSize = 'sm' | 'md' | 'lg';\n\n@Component({\n selector: 'sefin-tag',\n standalone: true,\n imports: [CommonModule, IconComponent],\n templateUrl: './tag.component.html',\n styleUrls: ['./tag.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TagComponent {\n /** Tag variant style. Options: 'default' | 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'info' */\n @Input() variant: TagVariant = 'default';\n /** Tag size. Options: 'sm' | 'md' | 'lg' */\n @Input() size: TagSize = 'md';\n /** Icon name to display before the tag content */\n @Input() icon?: string;\n /** Whether the tag can be removed (shows remove button) */\n @Input() removable = false;\n /** Whether the tag is disabled */\n @Input() disabled = false;\n /** Additional CSS classes */\n @Input() class = '';\n\n /** Event emitted when the tag is removed */\n @Output() removed = new EventEmitter<MouseEvent>();\n\n onRemove(event: MouseEvent): void {\n event.stopPropagation();\n if (!this.disabled) {\n this.removed.emit(event);\n }\n }\n\n get tagClasses(): string {\n return [\n 'sefin-tag',\n `sefin-tag--${this.variant}`,\n `sefin-tag--${this.size}`,\n this.disabled ? 'sefin-tag--disabled' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get iconSize(): 'xs' | 'sm' | 'md' {\n if (this.size === 'sm') return 'xs';\n if (this.size === 'lg') return 'sm';\n return 'sm';\n }\n}\n\n","<span\n [class]=\"tagClasses\"\n [attr.aria-disabled]=\"disabled\"\n role=\"status\"\n>\n <span class=\"sefin-tag__content\">\n <sefin-icon\n *ngIf=\"icon\"\n [name]=\"icon\"\n [size]=\"iconSize\"\n class=\"sefin-tag__icon\"\n ></sefin-icon>\n <ng-content></ng-content>\n </span>\n <button\n *ngIf=\"removable && !disabled\"\n type=\"button\"\n class=\"sefin-tag__remove\"\n (click)=\"onRemove($event)\"\n aria-label=\"Remove tag\"\n tabindex=\"-1\"\n >\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </button>\n</span>\n\n","import { Component, Input, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport type LinkVariant = 'default' | 'primary' | 'secondary' | 'underline';\nexport type LinkSize = 'sm' | 'md' | 'lg';\n\n@Component({\n selector: 'sefin-link',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './link.component.html',\n styleUrls: ['./link.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class LinkComponent {\n /** Link variant style. Options: 'default' | 'primary' | 'secondary' | 'underline' */\n @Input() variant: LinkVariant = 'default';\n /** Link size. Options: 'sm' | 'md' | 'lg' */\n @Input() size: LinkSize = 'md';\n /** Whether the link is disabled */\n @Input() disabled = false;\n /** Link URL */\n @Input() href?: string;\n /** Link target attribute (e.g., '_blank') */\n @Input() target?: string;\n /** Link rel attribute */\n @Input() rel?: string;\n /** Additional CSS classes */\n @Input() class = '';\n /** Whether to show underline */\n @Input() underline = false;\n\n get linkClasses(): string {\n return [\n 'sefin-link',\n `sefin-link--${this.variant}`,\n `sefin-link--${this.size}`,\n this.disabled ? 'sefin-link--disabled' : '',\n this.underline ? 'sefin-link--underline' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n onClick(event: Event): void {\n if (this.disabled) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n}\n\n","<a\n [class]=\"linkClasses\"\n [href]=\"disabled ? null : (href || '#')\"\n [attr.target]=\"target\"\n [attr.rel]=\"rel\"\n [attr.aria-disabled]=\"disabled ? true : null\"\n (click)=\"onClick($event)\"\n>\n <ng-content></ng-content>\n</a>\n\n","import { Component, Input, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'sefin-stack',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './stack.component.html',\n styleUrls: ['./stack.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class StackComponent {\n @Input() direction: 'row' | 'column' = 'column';\n @Input() spacing: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' = 'md';\n @Input() align: 'start' | 'center' | 'end' | 'stretch' = 'stretch';\n @Input() justify: 'start' | 'center' | 'end' | 'space-between' | 'space-around' | 'space-evenly' = 'start';\n @Input() wrap: boolean = false;\n @Input() class = '';\n\n get stackClasses(): string {\n return [\n 'sefin-stack',\n `sefin-stack--${this.direction}`,\n `sefin-stack--spacing-${this.spacing}`,\n `sefin-stack--align-${this.align}`,\n `sefin-stack--justify-${this.justify}`,\n this.wrap ? 'sefin-stack--wrap' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get spacingValue(): string {\n const spacingMap: Record<string, string> = {\n 'xs': '4px',\n 'sm': '8px',\n 'md': '16px',\n 'lg': '24px',\n 'xl': '32px',\n '2xl': '48px',\n };\n return spacingMap[this.spacing] || spacingMap['md'];\n }\n\n get stackStyles(): { [key: string]: string } {\n return {\n gap: this.spacingValue,\n };\n }\n}\n\n","<div [class]=\"stackClasses\" [ngStyle]=\"stackStyles\">\n <ng-content></ng-content>\n</div>\n\n","import { Component, Input, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport type ContainerSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';\nexport type ContainerVariant = 'default' | 'fluid' | 'fixed';\n\n@Component({\n selector: 'sefin-container',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './container.component.html',\n styleUrls: ['./container.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ContainerComponent {\n /** Container size. Options: 'sm' | 'md' | 'lg' | 'xl' | 'full' */\n @Input() size: ContainerSize = 'md';\n /** Container variant. Options: 'default' | 'fluid' | 'fixed' */\n @Input() variant: ContainerVariant = 'default';\n /** Whether the container has padding */\n @Input() padding = true;\n /** Additional CSS classes */\n @Input() class = '';\n\n get containerClasses(): string {\n return [\n 'sefin-container',\n `sefin-container--${this.size}`,\n `sefin-container--${this.variant}`,\n this.padding ? 'sefin-container--padded' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n\n","<div [class]=\"containerClasses\">\n <ng-content></ng-content>\n</div>\n\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n forwardRef,\n ViewChild,\n ElementRef,\n AfterViewInit,\n OnChanges,\n SimpleChanges,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { InputSize } from '../../shared/types';\n\n@Component({\n selector: 'sefin-checkbox',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxComponent),\n multi: true,\n },\n ],\n})\nexport class CheckboxComponent implements ControlValueAccessor, AfterViewInit, OnChanges {\n @ViewChild('checkboxInput', { static: false }) checkboxInput?: ElementRef<HTMLInputElement>;\n \n @Input() size: InputSize = 'md';\n @Input() disabled = false;\n @Input() indeterminate = false;\n @Input() class = '';\n @Input() label = '';\n @Input() name = '';\n @Input() value: boolean = false;\n\n @Output() valueChange = new EventEmitter<boolean>();\n @Output() checkedChange = new EventEmitter<boolean>();\n\n private onChange = (value: boolean) => {};\n private onTouched = () => {};\n\n ngAfterViewInit(): void {\n if (this.checkboxInput?.nativeElement && this.indeterminate && !this.value) {\n this.checkboxInput.nativeElement.indeterminate = true;\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.checkboxInput?.nativeElement && (changes['indeterminate'] || changes['value'])) {\n this.checkboxInput.nativeElement.indeterminate = this.indeterminate && !this.value;\n }\n }\n\n onCheckboxChange(event: Event): void {\n if (this.disabled) {\n return;\n }\n\n const target = event.target as HTMLInputElement;\n this.value = target.checked;\n this.indeterminate = false;\n \n if (this.checkboxInput?.nativeElement) {\n this.checkboxInput.nativeElement.indeterminate = false;\n }\n \n this.onChange(this.value);\n this.onTouched();\n this.valueChange.emit(this.value);\n this.checkedChange.emit(this.value);\n }\n\n writeValue(value: boolean): void {\n this.value = value;\n if (value) {\n this.indeterminate = false;\n if (this.checkboxInput?.nativeElement) {\n this.checkboxInput.nativeElement.indeterminate = false;\n }\n }\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n get wrapperClasses(): string {\n return [\n 'sefin-checkbox__wrapper',\n this.disabled ? 'sefin-checkbox__wrapper--disabled' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n\n","<label [class]=\"wrapperClasses\">\n <input\n type=\"checkbox\"\n class=\"sefin-checkbox\"\n [class.sefin-checkbox--sm]=\"size === 'sm'\"\n [class.sefin-checkbox--md]=\"size === 'md'\"\n [class.sefin-checkbox--lg]=\"size === 'lg'\"\n [class.sefin-checkbox--disabled]=\"disabled\"\n [checked]=\"value\"\n [disabled]=\"disabled\"\n [name]=\"name\"\n (change)=\"onCheckboxChange($event)\"\n #checkboxInput\n />\n <span \n class=\"sefin-checkbox__checkmark\" \n [class.sefin-checkbox__checkmark--sm]=\"size === 'sm'\" \n [class.sefin-checkbox__checkmark--md]=\"size === 'md'\" \n [class.sefin-checkbox__checkmark--lg]=\"size === 'lg'\" \n [class.sefin-checkbox__checkmark--checked]=\"value\" \n [class.sefin-checkbox__checkmark--indeterminate]=\"indeterminate && !value\"\n >\n <svg\n *ngIf=\"value\"\n class=\"sefin-checkbox__icon\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M13.3333 4L6 11.3333L2.66667 8\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n <svg\n *ngIf=\"indeterminate && !value\"\n class=\"sefin-checkbox__icon\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4 8H12\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n />\n </svg>\n </span>\n <span *ngIf=\"label\" class=\"sefin-checkbox__label\" [class.sefin-checkbox__label--sm]=\"size === 'sm'\" [class.sefin-checkbox__label--md]=\"size === 'md'\" [class.sefin-checkbox__label--lg]=\"size === 'lg'\">{{ label }}</span>\n</label>\n\n\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n forwardRef,\n ViewChild,\n ElementRef,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { InputSize } from '../../shared/types';\n\n@Component({\n selector: 'sefin-radio',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './radio.component.html',\n styleUrls: ['./radio.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RadioComponent),\n multi: true,\n },\n ],\n})\nexport class RadioComponent implements ControlValueAccessor {\n @ViewChild('radioInput', { static: false }) radioInput?: ElementRef<HTMLInputElement>;\n \n @Input() size: InputSize = 'md';\n @Input() disabled = false;\n @Input() class = '';\n @Input() label = '';\n @Input() name = '';\n @Input() value: string | number = '';\n @Input() checked = false;\n\n @Output() valueChange = new EventEmitter<string | number>();\n @Output() checkedChange = new EventEmitter<boolean>();\n\n private onChange = (value: string | number) => {};\n private onTouched = () => {};\n\n onRadioChange(event: Event): void {\n if (this.disabled) {\n return;\n }\n\n const target = event.target as HTMLInputElement;\n this.checked = target.checked;\n \n this.onChange(this.value);\n this.onTouched();\n this.valueChange.emit(this.value);\n this.checkedChange.emit(this.checked);\n }\n\n writeValue(value: string | number): void {\n // For radio buttons, the value is managed by the form control\n // The checked state is determined by comparing the value\n if (value === this.value) {\n this.checked = true;\n } else {\n this.checked = false;\n }\n }\n\n registerOnChange(fn: (value: string | number) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n get wrapperClasses(): string {\n return [\n 'sefin-radio__wrapper',\n this.disabled ? 'sefin-radio__wrapper--disabled' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n\n","<label [class]=\"wrapperClasses\">\n <input\n type=\"radio\"\n class=\"sefin-radio\"\n [class.sefin-radio--sm]=\"size === 'sm'\"\n [class.sefin-radio--md]=\"size === 'md'\"\n [class.sefin-radio--lg]=\"size === 'lg'\"\n [class.sefin-radio--disabled]=\"disabled\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [name]=\"name\"\n [value]=\"value\"\n (change)=\"onRadioChange($event)\"\n #radioInput\n />\n <span \n class=\"sefin-radio__circle\" \n [class.sefin-radio__circle--sm]=\"size === 'sm'\" \n [class.sefin-radio__circle--md]=\"size === 'md'\" \n [class.sefin-radio__circle--lg]=\"size === 'lg'\" \n [class.sefin-radio__circle--checked]=\"checked\"\n >\n <span *ngIf=\"checked\" class=\"sefin-radio__dot\"></span>\n </span>\n <span *ngIf=\"label\" class=\"sefin-radio__label\" [class.sefin-radio__label--sm]=\"size === 'sm'\" [class.sefin-radio__label--md]=\"size === 'md'\" [class.sefin-radio__label--lg]=\"size === 'lg'\">{{ label }}</span>\n</label>\n\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n forwardRef,\n ViewChild,\n ElementRef,\n OnInit,\n OnDestroy,\n OnChanges,\n SimpleChanges,\n HostListener,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { InputSize } from '../../shared/types';\n\nexport interface SelectOption {\n value: string | number;\n label: string;\n disabled?: boolean;\n}\n\n@Component({\n selector: 'sefin-select',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectComponent),\n multi: true,\n },\n ],\n})\nexport class SelectComponent\n implements ControlValueAccessor, OnInit, OnDestroy, OnChanges\n{\n @ViewChild('containerRef', { static: false })\n containerRef?: ElementRef<HTMLDivElement>;\n @ViewChild('dropdownRef', { static: false })\n dropdownRef?: ElementRef<HTMLDivElement>;\n @ViewChild('buttonRef', { static: false })\n buttonRef?: ElementRef<HTMLButtonElement>;\n\n @Input() options: SelectOption[] = [];\n @Input() placeholder = 'Seleccionar...';\n @Input() disabled = false;\n @Input() size: InputSize = 'md';\n @Input() class = '';\n @Input() value: string | number | null = null;\n\n @Output() valueChange = new EventEmitter<string | number | null>();\n @Output() optionSelected = new EventEmitter<SelectOption>();\n\n isOpen = false;\n selectedIndex = -1;\n\n private onChange = (value: string | number | null) => {};\n private onTouched = () => {};\n\n ngOnInit(): void {\n this.updateSelectedIndex();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['value'] || changes['options']) {\n this.updateSelectedIndex();\n }\n }\n\n ngOnDestroy(): void {}\n\n @HostListener('document:click', ['$event'])\n onClickOutside(event: MouseEvent): void {\n if (this.containerRef?.nativeElement && this.isOpen) {\n const clickedInside = this.containerRef.nativeElement.contains(\n event.target as Node\n );\n if (!clickedInside) {\n this.closeDropdown();\n }\n }\n }\n\n @HostListener('document:keydown.escape', ['$event'])\n onEscapeKey(event: Event): void {\n const keyboardEvent = event as KeyboardEvent;\n if (this.isOpen) {\n keyboardEvent.preventDefault();\n this.closeDropdown();\n this.buttonRef?.nativeElement?.focus();\n }\n }\n\n toggleDropdown(): void {\n if (this.disabled) return;\n\n if (this.isOpen) {\n this.closeDropdown();\n } else {\n this.openDropdown();\n }\n }\n\n openDropdown(): void {\n if (this.disabled || !this.options || this.options.length === 0) return;\n\n this.isOpen = true;\n this.updateSelectedIndex();\n \n // If no selection, focus first enabled option\n if (this.selectedIndex < 0) {\n const enabledOptions = this.options.filter((opt) => !opt.disabled);\n if (enabledOptions.length > 0) {\n this.selectedIndex = this.options.indexOf(enabledOptions[0]);\n }\n }\n \n // Scroll to selected option when opening\n setTimeout(() => {\n this.scrollToSelected();\n }, 0);\n }\n\n closeDropdown(): void {\n this.isOpen = false;\n this.selectedIndex = -1;\n }\n\n selectOption(option: SelectOption): void {\n if (option.disabled) return;\n\n this.value = option.value;\n this.onChange(this.value);\n this.onTouched();\n this.valueChange.emit(this.value);\n this.optionSelected.emit(option);\n this.closeDropdown();\n this.buttonRef?.nativeElement?.focus();\n }\n\n onKeyDown(event: KeyboardEvent): void {\n if (this.disabled) return;\n\n if (!this.isOpen) {\n if (event.key === 'Enter' || event.key === ' ' || event.key === 'ArrowDown') {\n event.preventDefault();\n this.openDropdown();\n }\n return;\n }\n\n if (!this.options || this.options.length === 0) return;\n\n const enabledOptions = this.options.filter((opt) => !opt.disabled);\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n if (enabledOptions.length === 0) return;\n \n let nextIndex = this.selectedIndex + 1;\n while (nextIndex < this.options.length && this.options[nextIndex].disabled) {\n nextIndex++;\n }\n \n if (nextIndex < this.options.length) {\n this.selectedIndex = nextIndex;\n } else {\n // Wrap to first enabled option\n this.selectedIndex = this.options.indexOf(enabledOptions[0]);\n }\n setTimeout(() => this.scrollToSelected(), 0);\n break;\n case 'ArrowUp':\n event.preventDefault();\n if (enabledOptions.length === 0) return;\n \n let prevIndex = this.selectedIndex - 1;\n while (prevIndex >= 0 && this.options[prevIndex].disabled) {\n prevIndex--;\n }\n \n if (prevIndex >= 0) {\n this.selectedIndex = prevIndex;\n } else {\n // Wrap to last enabled option\n const lastOption = enabledOptions[enabledOptions.length - 1];\n this.selectedIndex = this.options.indexOf(lastOption);\n }\n setTimeout(() => this.scrollToSelected(), 0);\n break;\n case 'Enter':\n event.preventDefault();\n if (this.selectedIndex >= 0 && this.selectedIndex < this.options.length) {\n const option = this.options[this.selectedIndex];\n if (!option.disabled) {\n this.selectOption(option);\n }\n }\n break;\n case 'Escape':\n event.preventDefault();\n this.closeDropdown();\n this.buttonRef?.nativeElement?.focus();\n break;\n case 'Home':\n event.preventDefault();\n if (enabledOptions.length > 0) {\n this.selectedIndex = this.options.indexOf(enabledOptions[0]);\n setTimeout(() => this.scrollToSelected(), 0);\n }\n break;\n case 'End':\n event.preventDefault();\n if (enabledOptions.length > 0) {\n const lastOption = enabledOptions[enabledOptions.length - 1];\n this.selectedIndex = this.options.indexOf(lastOption);\n setTimeout(() => this.scrollToSelected(), 0);\n }\n break;\n }\n }\n\n private updateSelectedIndex(): void {\n if (this.value === null || !this.options) {\n this.selectedIndex = -1;\n return;\n }\n\n const index = this.options.findIndex((opt) => opt.value === this.value);\n this.selectedIndex = index >= 0 ? index : -1;\n }\n\n private scrollToSelected(): void {\n try {\n if (\n this.dropdownRef?.nativeElement &&\n this.selectedIndex >= 0 &&\n this.selectedIndex < this.options.length\n ) {\n const selectedElement = this.dropdownRef.nativeElement.querySelector(\n `[data-index=\"${this.selectedIndex}\"]`\n ) as HTMLElement | null;\n if (selectedElement && selectedElement instanceof HTMLElement) {\n selectedElement.scrollIntoView({\n block: 'nearest',\n behavior: 'smooth',\n });\n }\n }\n } catch (error) {\n console.warn('Could not scroll to selected option:', error);\n }\n }\n\n getSelectedLabel(): string {\n if (this.value === null || !this.options) {\n return '';\n }\n\n const selectedOption = this.options.find((opt) => opt.value === this.value);\n return selectedOption?.label || '';\n }\n\n writeValue(value: string | number | null): void {\n this.value = value;\n this.updateSelectedIndex();\n }\n\n registerOnChange(fn: (value: string | number | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n if (isDisabled && this.isOpen) {\n this.closeDropdown();\n }\n }\n\n get buttonClasses(): string {\n return [\n 'sefin-select__button',\n `sefin-select__button--${this.size}`,\n this.disabled ? 'sefin-select__button--disabled' : '',\n this.isOpen ? 'sefin-select__button--open' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get containerClasses(): string {\n return [\n 'sefin-select',\n this.isOpen ? 'sefin-select--open' : '',\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n\n","<div [class]=\"containerClasses\" #containerRef>\n <button\n #buttonRef\n type=\"button\"\n [class]=\"buttonClasses\"\n [disabled]=\"disabled\"\n (click)=\"toggleDropdown()\"\n (keydown)=\"onKeyDown($event)\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-haspopup]=\"true\"\n aria-label=\"Select option\"\n >\n <span class=\"sefin-select__value\" [class.sefin-select__value--placeholder]=\"!getSelectedLabel()\">\n {{ getSelectedLabel() || placeholder }}\n </span>\n <div class=\"sefin-select__arrow\" [class.sefin-select__arrow--open]=\"isOpen\">\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4 6L8 10L12 6\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </button>\n <div\n *ngIf=\"isOpen && options && options.length > 0\"\n #dropdownRef\n class=\"sefin-select__dropdown\"\n role=\"listbox\"\n >\n <ul class=\"sefin-select__list\">\n <li\n *ngFor=\"let option of options; let i = index\"\n [attr.data-index]=\"i\"\n [class.sefin-select__option]=\"true\"\n [class.sefin-select__option--selected]=\"i === selectedIndex\"\n [class.sefin-select__option--disabled]=\"option.disabled\"\n [class.sefin-select__option--active]=\"option.value === value\"\n (click)=\"selectOption(option)\"\n [attr.aria-selected]=\"option.value === value\"\n role=\"option\"\n >\n {{ option.label }}\n </li>\n </ul>\n </div>\n <div\n *ngIf=\"isOpen && (!options || options.length === 0)\"\n class=\"sefin-select__dropdown sefin-select__dropdown--empty\"\n >\n <div class=\"sefin-select__no-options\">\n No hay opciones disponibles\n </div>\n </div>\n</div>\n\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n forwardRef,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { InputSize } from '../../shared/types';\n\n@Component({\n selector: 'sefin-switch',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './switch.component.html',\n styleUrls: ['./switch.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SwitchComponent),\n multi: true,\n },\n ],\n})\nexport class SwitchComponent implements ControlValueAccessor {\n @Input() size: InputSize = 'md';\n @Input() disabled = false;\n @Input() class = '';\n @Input() label = '';\n @Input() name = '';\n @Input() value: boolean = false;\n\n @Output() valueChange = new EventEmitter<boolean>();\n @Output() checkedChange = new EventEmitter<boolean>();\n\n private onChange = (value: boolean) => {};\n private onTouched = () => {};\n\n onSwitchChange(event: Event): void {\n if (this.disabled) {\n return;\n }\n\n const target = event.target as HTMLInputElement;\n this.value = target.checked;\n \n this.onChange(this.value);\n this.onTouched();\n this.valueChange.emit(this.value);\n this.checkedChange.emit(this.value);\n }\n\n writeValue(value: boolean): void {\n this.value = value;\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n get wrapperClasses(): string {\n return [\n 'sefin-switch__wrapper',\n this.disabled ? 'sefin-switch__wrapper--disabled' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n\n","<label [class]=\"wrapperClasses\">\n <input\n type=\"checkbox\"\n class=\"sefin-switch\"\n [class.sefin-switch--sm]=\"size === 'sm'\"\n [class.sefin-switch--md]=\"size === 'md'\"\n [class.sefin-switch--lg]=\"size === 'lg'\"\n [class.sefin-switch--disabled]=\"disabled\"\n [checked]=\"value\"\n [disabled]=\"disabled\"\n [name]=\"name\"\n (change)=\"onSwitchChange($event)\"\n />\n <span \n class=\"sefin-switch__track\" \n [class.sefin-switch__track--sm]=\"size === 'sm'\" \n [class.sefin-switch__track--md]=\"size === 'md'\" \n [class.sefin-switch__track--lg]=\"size === 'lg'\" \n [class.sefin-switch__track--checked]=\"value\" \n >\n <span \n class=\"sefin-switch__thumb\"\n [class.sefin-switch__thumb--sm]=\"size === 'sm'\"\n [class.sefin-switch__thumb--md]=\"size === 'md'\"\n [class.sefin-switch__thumb--lg]=\"size === 'lg'\"\n ></span>\n </span>\n <span *ngIf=\"label\" class=\"sefin-switch__label\" [class.sefin-switch__label--sm]=\"size === 'sm'\" [class.sefin-switch__label--md]=\"size === 'md'\" [class.sefin-switch__label--lg]=\"size === 'lg'\">{{ label }}</span>\n</label>\n\n","import { Component, Input, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n TypographyVariant,\n TypographySize,\n TypographyWeight,\n TypographyColor,\n TypographyLineHeight,\n} from '../../shared/types';\n\n@Component({\n selector: 'sefin-typography',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './typography.component.html',\n styleUrls: ['./typography.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class TypographyComponent {\n @Input() variant: TypographyVariant = 'p';\n @Input() size?: TypographySize;\n @Input() weight?: TypographyWeight;\n @Input() color: TypographyColor = 'text';\n @Input() lineHeight?: TypographyLineHeight;\n @Input() class = '';\n @Input() text?: string;\n\n get typographyClasses(): string {\n return [\n 'sefin-typography',\n `sefin-typography--${this.variant}`,\n this.size ? `sefin-typography--${this.size}` : '',\n this.weight ? `sefin-typography--${this.weight}` : '',\n `sefin-typography--${this.color}`,\n this.lineHeight ? `sefin-typography--line-height-${this.lineHeight}` : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n","<ng-container [ngSwitch]=\"variant\">\n <h1 *ngSwitchCase=\"'h1'\" [class]=\"typographyClasses\">{{ text }}<ng-content></ng-content></h1>\n <h2 *ngSwitchCase=\"'h2'\" [class]=\"typographyClasses\">{{ text }}<ng-content></ng-content></h2>\n <h3 *ngSwitchCase=\"'h3'\" [class]=\"typographyClasses\">{{ text }}<ng-content></ng-content></h3>\n <h4 *ngSwitchCase=\"'h4'\" [class]=\"typographyClasses\">{{ text }}<ng-content></ng-content></h4>\n <h5 *ngSwitchCase=\"'h5'\" [class]=\"typographyClasses\">{{ text }}<ng-content></ng-content></h5>\n <h6 *ngSwitchCase=\"'h6'\" [class]=\"typographyClasses\">{{ text }}<ng-content></ng-content></h6>\n <p *ngSwitchCase=\"'p'\" [class]=\"typographyClasses\">{{ text }}<ng-content></ng-content></p>\n <span *ngSwitchDefault [class]=\"typographyClasses\">{{ text }}<ng-content></ng-content></span>\n</ng-container>\n","import { Component, Input, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport type DividerOrientation = 'horizontal' | 'vertical';\nexport type DividerVariant = 'solid' | 'dashed' | 'dotted';\n\n@Component({\n selector: 'sefin-divider',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './divider.component.html',\n styleUrls: ['./divider.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DividerComponent {\n /** Divider orientation. Options: 'horizontal' | 'vertical' */\n @Input() orientation: DividerOrientation = 'horizontal';\n /** Divider variant style. Options: 'solid' | 'dashed' | 'dotted' */\n @Input() variant: DividerVariant = 'solid';\n /** Spacing around the divider (margin) */\n @Input() spacing: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' = 'md';\n /** Thickness of the divider */\n @Input() thickness: 'thin' | 'medium' | 'thick' = 'thin';\n /** Additional CSS classes */\n @Input() class = '';\n\n get dividerClasses(): string {\n return [\n 'sefin-divider',\n `sefin-divider--${this.orientation}`,\n `sefin-divider--${this.variant}`,\n `sefin-divider--spacing-${this.spacing}`,\n `sefin-divider--${this.thickness}`,\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n\n","<hr [class]=\"dividerClasses\" [attr.aria-orientation]=\"orientation\" />\n\n","import { Component, Input, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport type SpinnerSize = 'sm' | 'md' | 'lg';\nexport type SpinnerVariant = 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'default';\n\n@Component({\n selector: 'sefin-spinner',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './spinner.component.html',\n styleUrls: ['./spinner.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SpinnerComponent {\n /** Spinner size. Options: 'sm' | 'md' | 'lg' */\n @Input() size: SpinnerSize = 'md';\n /** Spinner variant color. Options: 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'default' */\n @Input() variant: SpinnerVariant = 'primary';\n /** Whether the spinner should be displayed inline (smaller margins) */\n @Input() inline = false;\n /** Additional CSS classes */\n @Input() class = '';\n\n get spinnerClasses(): string {\n return [\n 'sefin-spinner',\n `sefin-spinner--${this.size}`,\n `sefin-spinner--${this.variant}`,\n this.inline ? 'sefin-spinner--inline' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n\n","<div [class]=\"spinnerClasses\" role=\"status\" [attr.aria-label]=\"'Loading'\">\n <div class=\"sefin-spinner__circle\"></div>\n <span class=\"sr-only\">Loading...</span>\n</div>\n\n","import { Component, Input, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport type ProgressBarVariant = 'primary' | 'secondary' | 'success' | 'warning' | 'error';\nexport type ProgressBarSize = 'sm' | 'md' | 'lg';\n\n@Component({\n selector: 'sefin-progress-bar',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './progress-bar.component.html',\n styleUrls: ['./progress-bar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ProgressBarComponent {\n /** Progress value (0-100) */\n @Input() value: number = 0;\n /** Progress bar variant color. Options: 'primary' | 'secondary' | 'success' | 'warning' | 'error' */\n @Input() variant: ProgressBarVariant = 'primary';\n /** Progress bar size. Options: 'sm' | 'md' | 'lg' */\n @Input() size: ProgressBarSize = 'md';\n /** Whether to show the progress percentage label */\n @Input() showLabel = false;\n /** Whether the progress bar is in indeterminate state (animated) */\n @Input() indeterminate = false;\n /** Additional CSS classes */\n @Input() class = '';\n\n get progressBarClasses(): string {\n return [\n 'sefin-progress-bar',\n `sefin-progress-bar--${this.size}`,\n `sefin-progress-bar--${this.variant}`,\n this.indeterminate ? 'sefin-progress-bar--indeterminate' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get clampedValue(): number {\n return Math.min(Math.max(this.value, 0), 100);\n }\n\n get percentageText(): string {\n return `${Math.round(this.clampedValue)}%`;\n }\n}\n\n","<div [class]=\"progressBarClasses\" role=\"progressbar\" [attr.aria-valuenow]=\"indeterminate ? null : clampedValue\" [attr.aria-valuemin]=\"0\" [attr.aria-valuemax]=\"100\" [attr.aria-label]=\"indeterminate ? 'Loading progress' : percentageText + ' complete'\">\n <div class=\"sefin-progress-bar__track\">\n <div \n class=\"sefin-progress-bar__fill\" \n [style.width.%]=\"indeterminate ? undefined : clampedValue\"\n ></div>\n </div>\n <span *ngIf=\"showLabel && !indeterminate\" class=\"sefin-progress-bar__label\">{{ percentageText }}</span>\n</div>\n\n","import {\n Component,\n Input,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n HostListener,\n ElementRef,\n ViewChild,\n AfterViewInit,\n OnDestroy,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport type TooltipPosition = 'top' | 'bottom' | 'left' | 'right';\nexport type TooltipTrigger = 'hover' | 'click' | 'focus';\n\n@Component({\n selector: 'sefin-tooltip',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './tooltip.component.html',\n styleUrls: ['./tooltip.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TooltipComponent implements AfterViewInit, OnDestroy {\n /** Tooltip text content */\n @Input() text: string = '';\n /** Tooltip position. Options: 'top' | 'bottom' | 'left' | 'right' */\n @Input() position: TooltipPosition = 'top';\n /** Trigger event. Options: 'hover' | 'click' | 'focus' */\n @Input() trigger: TooltipTrigger = 'hover';\n /** Delay before showing tooltip (in milliseconds) */\n @Input() delay: number = 200;\n /** Whether the tooltip is disabled */\n @Input() disabled = false;\n /** Additional CSS classes */\n @Input() class = '';\n\n @ViewChild('tooltipContent', { static: false }) tooltipContent!: ElementRef<HTMLDivElement>;\n @ViewChild('tooltipTrigger', { static: false }) tooltipTrigger!: ElementRef<HTMLDivElement>;\n\n isVisible = false;\n private showTimeout?: ReturnType<typeof setTimeout>;\n private hideTimeout?: ReturnType<typeof setTimeout>;\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n ngAfterViewInit(): void {\n if (this.trigger === 'click') {\n document.addEventListener('click', this.handleOutsideClick);\n }\n }\n\n ngOnDestroy(): void {\n this.clearTimeouts();\n if (this.trigger === 'click') {\n document.removeEventListener('click', this.handleOutsideClick);\n }\n }\n\n @HostListener('mouseenter', ['$event'])\n onMouseEnter(event: Event): void {\n if (this.trigger === 'hover' && !this.disabled) {\n this.show();\n }\n }\n\n @HostListener('mouseleave', ['$event'])\n onMouseLeave(event: Event): void {\n if (this.trigger === 'hover' && !this.disabled) {\n this.hide();\n }\n }\n\n @HostListener('click', ['$event'])\n onClick(event: Event): void {\n if (this.trigger === 'click' && !this.disabled) {\n event.stopPropagation();\n this.toggle();\n }\n }\n\n @HostListener('focus', ['$event'])\n onFocus(event: Event): void {\n if (this.trigger === 'focus' && !this.disabled) {\n this.show();\n }\n }\n\n @HostListener('blur', ['$event'])\n onBlur(event: Event): void {\n if (this.trigger === 'focus' && !this.disabled) {\n this.hide();\n }\n }\n\n show(): void {\n this.clearTimeouts();\n this.showTimeout = setTimeout(() => {\n this.isVisible = true;\n this.cdr.markForCheck();\n }, this.delay);\n }\n\n hide(): void {\n this.clearTimeouts();\n this.hideTimeout = setTimeout(() => {\n this.isVisible = false;\n this.cdr.markForCheck();\n }, 50);\n }\n\n toggle(): void {\n if (this.isVisible) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n private clearTimeouts(): void {\n if (this.showTimeout) {\n clearTimeout(this.showTimeout);\n this.showTimeout = undefined;\n }\n if (this.hideTimeout) {\n clearTimeout(this.hideTimeout);\n this.hideTimeout = undefined;\n }\n }\n\n private handleOutsideClick = (event: MouseEvent): void => {\n if (this.isVisible && this.tooltipTrigger?.nativeElement) {\n const target = event.target as Node;\n const clickedInside = this.tooltipTrigger.nativeElement.contains(target);\n if (!clickedInside) {\n this.hide();\n }\n }\n };\n\n get tooltipClasses(): string {\n return [\n 'sefin-tooltip',\n `sefin-tooltip--${this.position}`,\n this.isVisible ? 'sefin-tooltip--visible' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n\n","<div #tooltipTrigger class=\"sefin-tooltip__wrapper\">\n <ng-content></ng-content>\n <div\n #tooltipContent\n [class]=\"tooltipClasses\"\n role=\"tooltip\"\n [attr.aria-hidden]=\"!isVisible\"\n *ngIf=\"text && !disabled\"\n >\n <div class=\"sefin-tooltip__content\">{{ text }}</div>\n <div class=\"sefin-tooltip__arrow\"></div>\n </div>\n</div>\n\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IconComponent } from '../icon/icon.component';\n\nexport type AlertVariant = 'success' | 'warning' | 'error' | 'info' | 'default';\nexport type AlertSize = 'sm' | 'md' | 'lg';\n\n@Component({\n selector: 'sefin-alert',\n standalone: true,\n imports: [CommonModule, IconComponent],\n templateUrl: './alert.component.html',\n styleUrls: ['./alert.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AlertComponent {\n /** Alert variant style. Options: 'success' | 'warning' | 'error' | 'info' | 'default' */\n @Input() variant: AlertVariant = 'default';\n /** Alert size. Options: 'sm' | 'md' | 'lg' */\n @Input() size: AlertSize = 'md';\n /** Alert title (optional) */\n @Input() title?: string;\n /** Whether the alert can be dismissed (shows close button) */\n @Input() dismissible = false;\n /** Whether to show an icon */\n @Input() showIcon = true;\n /** Whether the alert is visible */\n @Input() visible = true;\n /** Additional CSS classes */\n @Input() class = '';\n\n /** Event emitted when the alert is dismissed */\n @Output() dismissed = new EventEmitter<void>();\n\n onDismiss(): void {\n this.visible = false;\n this.dismissed.emit();\n }\n\n get alertClasses(): string {\n return [\n 'sefin-alert',\n `sefin-alert--${this.variant}`,\n `sefin-alert--${this.size}`,\n !this.visible ? 'sefin-alert--hidden' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get iconName(): string {\n const iconMap: Record<AlertVariant, string> = {\n success: 'check-circle',\n warning: 'alert-triangle',\n error: 'alert-circle',\n info: 'info',\n default: 'info',\n };\n return iconMap[this.variant];\n }\n\n get iconSize(): 'xs' | 'sm' | 'md' | 'lg' | 'xl' {\n // Icon size should be smaller than container to show rounded background\n // Container sizes: sm=20px, md=24px, lg=28px\n // Icon sizes: xs=12px, sm=16px, md=24px\n const sizeMap: Record<AlertSize, 'xs' | 'sm' | 'md' | 'lg' | 'xl'> = {\n sm: 'xs', // 12px icon in 20px container (4px margin on each side)\n md: 'sm', // 16px icon in 24px container (4px margin on each side)\n lg: 'md', // 24px icon in 28px container (2px margin on each side)\n };\n return sizeMap[this.size];\n }\n\n get iconColor(): string {\n return '#ffffff';\n }\n}\n\n","<div\n *ngIf=\"visible\"\n [class]=\"alertClasses\"\n role=\"alert\"\n [attr.aria-live]=\"variant === 'error' ? 'assertive' : 'polite'\"\n>\n <div class=\"sefin-alert__content\">\n <div *ngIf=\"showIcon\" class=\"sefin-alert__icon\" [attr.aria-hidden]=\"true\">\n <sefin-icon [name]=\"iconName\" [size]=\"iconSize\" [color]=\"iconColor\"></sefin-icon>\n </div>\n <div class=\"sefin-alert__body\">\n <div *ngIf=\"title\" class=\"sefin-alert__title\">{{ title }}</div>\n <div class=\"sefin-alert__message\">\n <ng-content></ng-content>\n </div>\n </div>\n <button\n *ngIf=\"dismissible\"\n type=\"button\"\n class=\"sefin-alert__close\"\n (click)=\"onDismiss()\"\n aria-label=\"Close alert\"\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n </div>\n</div>\n\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n OnInit,\n OnDestroy,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IconComponent } from '../icon/icon.component';\n\nexport type ToastVariant = 'success' | 'warning' | 'error' | 'info' | 'default';\nexport type ToastPosition =\n | 'top-right'\n | 'top-left'\n | 'top-center'\n | 'bottom-right'\n | 'bottom-left'\n | 'bottom-center';\n\n@Component({\n selector: 'sefin-toast',\n standalone: true,\n imports: [CommonModule, IconComponent],\n templateUrl: './toast.component.html',\n styleUrls: ['./toast.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ToastComponent implements OnInit, OnDestroy {\n /** Toast variant style. Options: 'success' | 'warning' | 'error' | 'info' | 'default' */\n @Input() variant: ToastVariant = 'default';\n /** Toast position. Options: 'top-right' | 'top-left' | 'top-center' | 'bottom-right' | 'bottom-left' | 'bottom-center' */\n @Input() position: ToastPosition = 'top-right';\n /** Toast title (optional) */\n @Input() title?: string;\n /** Toast message */\n @Input() message: string = '';\n /** Duration in milliseconds before auto-dismiss (0 = no auto-dismiss) */\n @Input() duration: number = 5000;\n /** Whether to show an icon */\n @Input() showIcon = true;\n /** Whether the toast can be dismissed manually */\n @Input() dismissible = true;\n /** Additional CSS classes */\n @Input() class = '';\n\n /** Event emitted when the toast is dismissed */\n @Output() dismissed = new EventEmitter<void>();\n\n isVisible = true;\n isExiting = false;\n isPaused = false;\n private dismissTimeout?: ReturnType<typeof setTimeout>;\n private exitAnimationTimeout?: ReturnType<typeof setTimeout>;\n private remainingTime = 0;\n private startTime = 0;\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n ngOnInit(): void {\n if (this.duration > 0) {\n this.startTimer();\n }\n }\n\n ngOnDestroy(): void {\n this.clearTimer();\n this.clearExitAnimation();\n }\n\n private startTimer(): void {\n if (this.duration <= 0) return;\n \n this.startTime = Date.now();\n this.remainingTime = this.duration;\n \n this.dismissTimeout = setTimeout(() => {\n if (!this.isPaused) {\n this.dismiss();\n }\n }, this.remainingTime);\n }\n\n private clearTimer(): void {\n if (this.dismissTimeout) {\n clearTimeout(this.dismissTimeout);\n this.dismissTimeout = undefined;\n }\n }\n\n private clearExitAnimation(): void {\n if (this.exitAnimationTimeout) {\n clearTimeout(this.exitAnimationTimeout);\n this.exitAnimationTimeout = undefined;\n }\n }\n\n pauseTimer(): void {\n if (this.duration <= 0 || this.isPaused || this.isExiting) return;\n \n this.isPaused = true;\n this.clearTimer();\n \n if (this.startTime > 0) {\n const elapsed = Date.now() - this.startTime;\n this.remainingTime = Math.max(0, this.remainingTime - elapsed);\n }\n }\n\n resumeTimer(): void {\n if (this.duration <= 0 || !this.isPaused || this.isExiting) return;\n \n this.isPaused = false;\n this.startTime = Date.now();\n \n if (this.remainingTime > 0) {\n this.dismissTimeout = setTimeout(() => {\n if (!this.isPaused) {\n this.dismiss();\n }\n }, this.remainingTime);\n }\n }\n\n onCloseClick(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n if (!this.isExiting) {\n this.dismiss();\n }\n }\n\n dismiss(): void {\n if (this.isExiting) {\n return;\n }\n\n this.clearTimer();\n this.clearExitAnimation();\n this.isExiting = true;\n this.cdr.detectChanges();\n\n // Emit the dismissed event immediately so parent can handle it\n // The animation will still play, but the parent can remove it from the array\n this.dismissed.emit();\n\n // Wait for exit animation to complete before hiding\n this.exitAnimationTimeout = setTimeout(() => {\n this.isVisible = false;\n this.cdr.detectChanges();\n this.exitAnimationTimeout = undefined;\n }, 200);\n }\n\n get toastClasses(): string {\n return [\n 'sefin-toast',\n `sefin-toast--${this.variant}`,\n `sefin-toast--${this.position}`,\n this.isExiting ? 'sefin-toast--exiting' : '',\n this.isVisible ? 'sefin-toast--visible' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get iconName(): string {\n const iconMap: Record<ToastVariant, string> = {\n success: 'check-circle',\n warning: 'warning',\n error: 'error',\n info: 'info',\n default: 'info',\n };\n return iconMap[this.variant];\n }\n}\n\n","<div\n *ngIf=\"isVisible\"\n [class]=\"toastClasses\"\n role=\"alert\"\n [attr.aria-live]=\"variant === 'error' ? 'assertive' : 'polite'\"\n (mouseenter)=\"pauseTimer()\"\n (mouseleave)=\"resumeTimer()\"\n>\n <div class=\"sefin-toast__content\">\n <div *ngIf=\"showIcon\" class=\"sefin-toast__icon\" [attr.aria-hidden]=\"true\">\n <sefin-icon [name]=\"iconName\" size=\"sm\" [color]=\"'#ffffff'\"></sefin-icon>\n </div>\n <div class=\"sefin-toast__body\">\n <div *ngIf=\"title\" class=\"sefin-toast__title\">{{ title }}</div>\n <div *ngIf=\"message\" class=\"sefin-toast__message\">{{ message }}</div>\n <ng-content></ng-content>\n </div>\n <button\n *ngIf=\"dismissible\"\n type=\"button\"\n class=\"sefin-toast__close\"\n (click)=\"onCloseClick($event)\"\n (mousedown)=\"$event.stopPropagation()\"\n aria-label=\"Close toast\"\n >\n <sefin-icon name=\"x\" size=\"sm\"></sefin-icon>\n </button>\n </div>\n</div>\n\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n forwardRef,\n ViewChild,\n ElementRef,\n OnInit,\n OnDestroy,\n AfterViewInit,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n NG_VALIDATORS,\n FormControl,\n Validator,\n AbstractControl,\n ValidationErrors,\n} from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { IconComponent } from '../icon/icon.component';\n\nexport type TextFieldVariant = 'outlined' | 'filled' | 'standard';\nexport type TextFieldSize = 'sm' | 'md' | 'lg';\nexport type TextFieldType =\n | 'text'\n | 'email'\n | 'password'\n | 'number'\n | 'tel'\n | 'url'\n | 'search';\n\n@Component({\n selector: 'sefin-textfield',\n standalone: true,\n imports: [CommonModule, IconComponent],\n templateUrl: './textfield.component.html',\n styleUrls: ['./textfield.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextFieldComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => TextFieldComponent),\n multi: true,\n },\n ],\n})\nexport class TextFieldComponent\n implements ControlValueAccessor, Validator, OnInit, AfterViewInit, OnDestroy\n{\n @ViewChild('inputRef', { static: false })\n inputRef?: ElementRef<HTMLInputElement>;\n\n /** TextField variant style. Options: 'outlined' | 'filled' | 'standard' */\n @Input() variant: TextFieldVariant = 'outlined';\n /** TextField size. Options: 'sm' | 'md' | 'lg' */\n @Input() size: TextFieldSize = 'md';\n /** Input type. Options: 'text' | 'email' | 'password' | 'number' | 'tel' | 'url' | 'search' | 'date' | 'time' | 'datetime-local' */\n @Input() type: TextFieldType = 'text';\n /** Placeholder text */\n @Input() placeholder = '';\n /** Helper text shown below the input */\n @Input() hint = '';\n /** Error message to display */\n @Input() errorMessage = '';\n /** Whether the field is required */\n @Input() required = false;\n /** Whether the field is disabled */\n @Input() disabled = false;\n /** Whether the field is readonly */\n @Input() readonly = false;\n /** Maximum length of the input */\n @Input() maxLength?: number;\n /** Minimum length of the input */\n @Input() minLength?: number;\n /** Pattern for validation (regex string) */\n @Input() pattern?: string;\n /** Leading icon name */\n @Input() leadingIcon?: string;\n /** Trailing icon name */\n @Input() trailingIcon?: string;\n /** Whether to show character counter */\n @Input() showCounter = false;\n /** Autocomplete attribute */\n @Input() autocomplete?: string;\n /** Input name attribute */\n @Input() name = '';\n /** Input id attribute */\n @Input() id = '';\n /** Additional CSS classes */\n @Input() class = '';\n /** Custom validation function */\n @Input() customValidator?: (value: string) => string | null;\n\n /** Event emitted when the value changes */\n @Output() valueChange = new EventEmitter<string>();\n /** Event emitted when the input is focused */\n @Output() focused = new EventEmitter<FocusEvent>();\n /** Event emitted when the input is blurred */\n @Output() blurred = new EventEmitter<FocusEvent>();\n /** Event emitted when trailing icon is clicked */\n @Output() trailingIconClick = new EventEmitter<MouseEvent>();\n\n value: string = '';\n isFocused = false;\n hasError = false;\n internalErrorMessage = '';\n\n private onChange = (value: string) => {};\n private onTouched = () => {};\n private destroy$ = new Subject<void>();\n private control?: FormControl;\n\n ngOnInit(): void {\n this.generateIdIfNeeded();\n }\n\n ngAfterViewInit(): void {\n if (this.inputRef?.nativeElement) {\n // Set initial value if provided\n if (this.value) {\n this.inputRef.nativeElement.value = this.value;\n }\n \n // Ocultar botón nativo de mostrar/ocultar contraseña del navegador\n if (this.type === 'password') {\n const input = this.inputRef.nativeElement as HTMLInputElement;\n // Intentar ocultar el botón nativo usando estilos inline\n input.style.setProperty('-webkit-appearance', 'none', 'important');\n // Agregar un atributo para ayudar con el CSS\n input.setAttribute('data-password-field', 'true');\n }\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private generateIdIfNeeded(): void {\n if (!this.id) {\n this.id = `sefin-textfield-${Math.random().toString(36).substr(2, 9)}`;\n }\n }\n\n onInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.value = target.value;\n this.onChange(this.value);\n this.valueChange.emit(this.value);\n this.validateField();\n }\n\n onFocus(event: FocusEvent): void {\n this.isFocused = true;\n this.focused.emit(event);\n }\n\n onBlur(event: FocusEvent): void {\n this.isFocused = false;\n this.onTouched();\n this.blurred.emit(event);\n this.validateField();\n }\n\n onTrailingIconClick(event: MouseEvent): void {\n event.stopPropagation();\n if (!this.disabled) {\n this.trailingIconClick.emit(event);\n }\n }\n\n private validateField(): void {\n this.hasError = false;\n this.internalErrorMessage = '';\n\n if (this.disabled || this.readonly) {\n return;\n }\n\n const value = this.value || '';\n\n // Required validation\n if (this.required && !value.trim()) {\n this.hasError = true;\n this.internalErrorMessage = 'Este campo es requerido';\n return;\n }\n\n // Skip other validations if field is empty and not required\n if (!value.trim()) {\n return;\n }\n\n // Min length validation\n if (this.minLength && value.length < this.minLength) {\n this.hasError = true;\n this.internalErrorMessage = `Mínimo ${this.minLength} caracteres`;\n return;\n }\n\n // Max length validation\n if (this.maxLength && value.length > this.maxLength) {\n this.hasError = true;\n this.internalErrorMessage = `Máximo ${this.maxLength} caracteres`;\n return;\n }\n\n // Pattern validation\n if (this.pattern) {\n try {\n const regex = new RegExp(this.pattern);\n if (!regex.test(value)) {\n this.hasError = true;\n this.internalErrorMessage = 'El formato no es válido';\n return;\n }\n } catch (e) {\n console.warn('Invalid pattern:', this.pattern);\n }\n }\n\n // Type-specific validation\n if (this.type === 'email' && value) {\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n if (!emailRegex.test(value)) {\n this.hasError = true;\n this.internalErrorMessage = 'Ingresa un email válido';\n return;\n }\n }\n\n if (this.type === 'url' && value) {\n try {\n new URL(value);\n } catch {\n this.hasError = true;\n this.internalErrorMessage = 'Ingresa una URL válida';\n return;\n }\n }\n\n // Custom validator\n if (this.customValidator) {\n const customError = this.customValidator(value);\n if (customError) {\n this.hasError = true;\n this.internalErrorMessage = customError;\n return;\n }\n }\n }\n\n get displayError(): boolean {\n return this.hasError && (!!this.errorMessage || !!this.internalErrorMessage);\n }\n\n get displayErrorMessage(): string {\n return this.errorMessage || this.internalErrorMessage;\n }\n\n get characterCount(): number {\n return this.value?.length || 0;\n }\n\n get textFieldClasses(): string {\n return [\n 'sefin-textfield',\n `sefin-textfield--${this.variant}`,\n `sefin-textfield--${this.size}`,\n this.isFocused ? 'sefin-textfield--focused' : '',\n this.hasError ? 'sefin-textfield--error' : '',\n this.disabled ? 'sefin-textfield--disabled' : '',\n this.readonly ? 'sefin-textfield--readonly' : '',\n this.leadingIcon ? 'sefin-textfield--with-leading-icon' : '',\n this.trailingIcon ? 'sefin-textfield--with-trailing-icon' : '',\n 'sefin-textfield--no-label',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n // ControlValueAccessor implementation\n writeValue(value: string): void {\n this.value = value || '';\n if (this.inputRef?.nativeElement) {\n this.inputRef.nativeElement.value = this.value;\n }\n this.validateField();\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n // Validator implementation\n validate(control: AbstractControl): ValidationErrors | null {\n this.control = control as FormControl;\n const value = control.value || '';\n\n if (this.disabled || this.readonly) {\n return null;\n }\n\n // Required validation\n if (this.required && !value.trim()) {\n return { required: true };\n }\n\n // Skip other validations if field is empty and not required\n if (!value.trim()) {\n return null;\n }\n\n const errors: ValidationErrors = {};\n\n // Min length validation\n if (this.minLength && value.length < this.minLength) {\n errors['minlength'] = {\n requiredLength: this.minLength,\n actualLength: value.length,\n };\n }\n\n // Max length validation\n if (this.maxLength && value.length > this.maxLength) {\n errors['maxlength'] = {\n requiredLength: this.maxLength,\n actualLength: value.length,\n };\n }\n\n // Pattern validation\n if (this.pattern) {\n try {\n const regex = new RegExp(this.pattern);\n if (!regex.test(value)) {\n errors['pattern'] = { requiredPattern: this.pattern, actualValue: value };\n }\n } catch (e) {\n console.warn('Invalid pattern:', this.pattern);\n }\n }\n\n // Type-specific validation\n if (this.type === 'email' && value) {\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n if (!emailRegex.test(value)) {\n errors['email'] = true;\n }\n }\n\n if (this.type === 'url' && value) {\n try {\n new URL(value);\n } catch {\n errors['url'] = true;\n }\n }\n\n // Custom validator\n if (this.customValidator) {\n const customError = this.customValidator(value);\n if (customError) {\n errors['custom'] = { message: customError };\n }\n }\n\n return Object.keys(errors).length > 0 ? errors : null;\n }\n}\n\n","<div [class]=\"textFieldClasses\">\n <!-- Input Container -->\n <div class=\"sefin-textfield__input-container\">\n <!-- Leading Icon -->\n <div *ngIf=\"leadingIcon\" class=\"sefin-textfield__leading-icon\">\n <sefin-icon [name]=\"leadingIcon\" [size]=\"size === 'sm' ? 'sm' : 'md'\"></sefin-icon>\n </div>\n\n <!-- Input Wrapper -->\n <div class=\"sefin-textfield__input-wrapper\">\n <!-- Input -->\n <input\n #inputRef\n [id]=\"id\"\n [name]=\"name\"\n [type]=\"type\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [attr.maxlength]=\"maxLength\"\n [attr.minlength]=\"minLength\"\n [pattern]=\"pattern\"\n [autocomplete]=\"autocomplete\"\n [attr.aria-label]=\"placeholder\"\n [attr.aria-required]=\"required\"\n [attr.aria-invalid]=\"hasError\"\n [attr.aria-describedby]=\"displayError || hint || showCounter ? id + '-helper' : null\"\n [attr.data-form-type]=\"type === 'password' ? 'password' : null\"\n class=\"sefin-textfield__input\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n />\n </div>\n\n <!-- Trailing Icon -->\n <div\n *ngIf=\"trailingIcon\"\n class=\"sefin-textfield__trailing-icon\"\n (click)=\"onTrailingIconClick($event)\"\n [attr.aria-label]=\"'Trailing icon'\"\n role=\"button\"\n tabindex=\"0\"\n >\n <sefin-icon [name]=\"trailingIcon\" [size]=\"size === 'sm' ? 'sm' : 'md'\"></sefin-icon>\n </div>\n\n <!-- Outline/Filled border -->\n <div class=\"sefin-textfield__border\"></div>\n </div>\n\n <!-- Helper Text / Error Message -->\n <div\n *ngIf=\"displayError || hint || showCounter\"\n [id]=\"id + '-helper'\"\n class=\"sefin-textfield__helper\"\n [class.sefin-textfield__helper--error]=\"displayError\"\n >\n <span *ngIf=\"displayError\" class=\"sefin-textfield__error-message\">\n {{ displayErrorMessage }}\n </span>\n <span *ngIf=\"!displayError && hint\" class=\"sefin-textfield__hint\">\n {{ hint }}\n </span>\n <span\n *ngIf=\"showCounter && !displayError\"\n class=\"sefin-textfield__counter\"\n [class.sefin-textfield__counter--warning]=\"maxLength && characterCount > maxLength * 0.8\"\n >\n {{ characterCount }}{{ maxLength ? ' / ' + maxLength : '' }}\n </span>\n </div>\n</div>\n\n","import {\n Component,\n Input,\n ChangeDetectionStrategy,\n OnInit,\n OnChanges,\n SimpleChanges,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport type ImageFit = 'cover' | 'contain' | 'fill' | 'none' | 'scale-down';\nexport type ImageLoading = 'lazy' | 'eager';\nexport type ImageRounded = 'none' | 'sm' | 'md' | 'lg' | 'full';\n\n@Component({\n selector: 'sefin-image',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './image.component.html',\n styleUrls: ['./image.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ImageComponent implements OnInit, OnChanges {\n /** Image source URL (required) */\n @Input() src?: string;\n /** Alt text for the image (required for accessibility) */\n @Input() alt = '';\n /** Image width (can be a number in pixels or a string like '100%', 'auto', etc.) */\n @Input() width?: string | number;\n /** Image height (can be a number in pixels or a string like '100%', 'auto', etc.) */\n @Input() height?: string | number;\n /** How the image should be resized to fit its container. Options: 'cover' | 'contain' | 'fill' | 'none' | 'scale-down' */\n @Input() fit: ImageFit = 'cover';\n /** Loading strategy. Options: 'lazy' | 'eager' */\n @Input() loading: ImageLoading = 'lazy';\n /** Whether the image should have rounded corners. Options: 'none' | 'sm' | 'md' | 'lg' | 'full' */\n @Input() rounded: ImageRounded = 'none';\n /** Aspect ratio (e.g., '16/9', '4/3', '1/1') */\n @Input() aspectRatio?: string;\n /** Placeholder/fallback image URL to show if main image fails to load */\n @Input() fallback?: string;\n /** Whether the image is disabled (reduced opacity) */\n @Input() disabled = false;\n /** Additional CSS classes */\n @Input() class = '';\n /** Sizes attribute for responsive images */\n @Input() sizes?: string;\n /** Srcset attribute for responsive images */\n @Input() srcset?: string;\n\n hasError = false;\n currentSrc: string | null = null;\n\n ngOnInit(): void {\n this.updateCurrentSrc();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['src'] || changes['fallback']) {\n this.updateCurrentSrc();\n }\n }\n\n private updateCurrentSrc(): void {\n const srcValue = this.src;\n if (srcValue && typeof srcValue === 'string' && srcValue.trim() !== '') {\n this.currentSrc = srcValue;\n this.hasError = false;\n } else {\n this.hasError = true;\n this.currentSrc = null;\n }\n }\n\n onImageError(event: Event): void {\n if (this.fallback && this.currentSrc !== this.fallback) {\n this.currentSrc = this.fallback;\n this.hasError = false;\n } else {\n this.hasError = true;\n }\n }\n\n onImageLoad(): void {\n this.hasError = false;\n }\n\n get imageClasses(): string {\n return [\n 'sefin-image',\n `sefin-image--fit-${this.fit}`,\n `sefin-image--rounded-${this.rounded}`,\n this.disabled ? 'sefin-image--disabled' : '',\n this.hasError ? 'sefin-image--error' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get imageStyles(): { [key: string]: string | number } {\n const styles: { [key: string]: string | number } = {};\n\n if (this.width !== undefined) {\n styles['width'] = typeof this.width === 'number' ? `${this.width}px` : this.width;\n }\n\n if (this.height !== undefined) {\n styles['height'] = typeof this.height === 'number' ? `${this.height}px` : this.height;\n }\n\n if (this.aspectRatio) {\n styles['aspect-ratio'] = this.aspectRatio;\n }\n\n return styles;\n }\n}\n\n","<div\n *ngIf=\"!hasError && currentSrc\"\n [class]=\"imageClasses\"\n [ngStyle]=\"imageStyles\"\n>\n <img\n [src]=\"currentSrc\"\n [alt]=\"alt || ''\"\n [loading]=\"loading\"\n [attr.sizes]=\"sizes || null\"\n [attr.srcset]=\"srcset || null\"\n (error)=\"onImageError($event)\"\n (load)=\"onImageLoad()\"\n class=\"sefin-image__img\"\n />\n</div>\n<div\n *ngIf=\"hasError\"\n [class]=\"imageClasses\"\n [ngStyle]=\"imageStyles\"\n class=\"sefin-image__error\"\n>\n <div class=\"sefin-image__error-content\">\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M21 19V5C21 3.9 20.1 3 19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19ZM8.5 13.5L11 16.51L14.5 12L19 18H5L8.5 13.5Z\"\n fill=\"currentColor\"\n />\n </svg>\n <span *ngIf=\"alt\" class=\"sefin-image__error-text\">{{ alt }}</span>\n </div>\n</div>\n\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport type TabVariant = 'default' | 'primary' | 'secondary' | 'underline';\nexport type TabSize = 'sm' | 'md' | 'lg';\n\n@Component({\n selector: 'sefin-tab',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './tab.component.html',\n styleUrls: ['./tab.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TabComponent {\n /** Tab variant style. Options: 'default' | 'primary' | 'secondary' | 'underline' */\n @Input() variant: TabVariant = 'default';\n /** Tab size. Options: 'sm' | 'md' | 'lg' */\n @Input() size: TabSize = 'md';\n /** Whether the tab is disabled */\n @Input() disabled = false;\n /** Whether the tab is active */\n @Input() active = false;\n /** Additional CSS classes */\n @Input() class = '';\n\n @Output() clicked = new EventEmitter<MouseEvent>();\n\n onClick(event: MouseEvent): void {\n if (!this.disabled) {\n this.clicked.emit(event);\n }\n }\n\n get tabClasses(): string {\n return [\n 'sefin-tab',\n `sefin-tab--${this.variant}`,\n `sefin-tab--${this.size}`,\n this.disabled ? 'sefin-tab--disabled' : '',\n this.active ? 'sefin-tab--active' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n\n","<button\n type=\"button\"\n [class]=\"tabClasses\"\n (click)=\"onClick($event)\"\n [disabled]=\"disabled\"\n [attr.aria-selected]=\"active\"\n role=\"tab\"\n [attr.tabindex]=\"disabled ? '-1' : '0'\"\n>\n <span class=\"sefin-tab__content\">\n <ng-content></ng-content>\n </span>\n <span *ngIf=\"active && variant === 'underline'\" class=\"sefin-tab__indicator\"></span>\n</button>\n\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n computed,\n signal,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport type RateSize = 'sm' | 'md' | 'lg';\nexport type RateIcon = 'star' | 'heart' | 'thumb';\n\n@Component({\n selector: 'sefin-rate',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './rate.component.html',\n styleUrls: ['./rate.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RateComponent {\n /** Current rating value (0 to max) */\n @Input() set value(value: number) {\n this._value.set(Math.max(0, Math.min(value, this.max)));\n }\n get value(): number {\n return this._value();\n }\n private _value = signal(0);\n\n /** Maximum rating value */\n @Input() max = 5;\n\n /** Whether the rating is disabled */\n @Input() disabled = false;\n\n /** Whether the rating is readonly */\n @Input() readonly = false;\n\n /** Whether to allow half stars */\n @Input() allowHalf = false;\n\n /** Icon type. Options: 'star' | 'heart' | 'thumb' */\n @Input() icon: RateIcon = 'star';\n\n /** Rate size. Options: 'sm' | 'md' | 'lg' */\n @Input() size: RateSize = 'md';\n\n /** Whether to show text with rating */\n @Input() showText = false;\n\n /** Additional CSS classes */\n @Input() class = '';\n\n /** Event emitted when rating changes */\n @Output() valueChange = new EventEmitter<number>();\n\n /** Event emitted when rating is hovered */\n @Output() hoverChange = new EventEmitter<number | null>();\n\n /** Internal hover value */\n private _hoverValue = signal<number | null>(null);\n\n readonly items = computed(() => {\n return Array.from({ length: this.max }, (_, i) => i + 1);\n });\n\n get rateClasses(): string {\n return [\n 'sefin-rate',\n `sefin-rate--${this.size}`,\n `sefin-rate--${this.icon}`,\n this.disabled ? 'sefin-rate--disabled' : '',\n this.readonly ? 'sefin-rate--readonly' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n isInteractive(): boolean {\n return !this.disabled && !this.readonly;\n }\n\n getDisplayValue(): number {\n return this._hoverValue() ?? this.value;\n }\n\n getIconState(index: number): 'full' | 'half' | 'empty' {\n const displayValue = this.getDisplayValue();\n \n if (displayValue >= index) {\n return 'full';\n }\n \n if (this.allowHalf && displayValue >= index - 0.5) {\n return 'half';\n }\n \n return 'empty';\n }\n\n onItemClick(index: number): void {\n if (!this.isInteractive()) {\n return;\n }\n \n const newValue = index;\n if (newValue !== this.value) {\n this._value.set(newValue);\n this.valueChange.emit(newValue);\n }\n }\n\n onItemHover(index: number | null): void {\n if (!this.isInteractive()) {\n return;\n }\n \n this._hoverValue.set(index);\n this.hoverChange.emit(index);\n }\n\n onHalfClick(index: number, isLeftHalf: boolean): void {\n if (!this.isInteractive() || !this.allowHalf) {\n return;\n }\n \n const newValue = isLeftHalf ? index - 0.5 : index;\n if (newValue !== this.value) {\n this._value.set(newValue);\n this.valueChange.emit(newValue);\n }\n }\n}\n\n","<div [class]=\"rateClasses\">\n <div class=\"sefin-rate__container\">\n <div\n *ngFor=\"let item of items(); let i = index\"\n class=\"sefin-rate__item\"\n (mouseenter)=\"onItemHover(item)\"\n (mouseleave)=\"onItemHover(null)\"\n [class.sefin-rate__item--interactive]=\"isInteractive()\"\n >\n <ng-container [ngSwitch]=\"icon\">\n <!-- Star icon -->\n <div *ngSwitchCase=\"'star'\" class=\"sefin-rate__icon-wrapper\">\n <ng-container *ngIf=\"allowHalf && isInteractive(); else fullStar\">\n <div class=\"sefin-rate__icon-half\" (click)=\"onHalfClick(item, true)\">\n <svg\n [class.sefin-rate__icon--full]=\"getIconState(item) === 'full'\"\n [class.sefin-rate__icon--half]=\"getIconState(item) === 'half'\"\n [class.sefin-rate__icon--empty]=\"getIconState(item) === 'empty'\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12 2L15.09 8.26L22 9.27L17 14.14L18.18 21.02L12 17.77L5.82 21.02L7 14.14L2 9.27L8.91 8.26L12 2Z\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n <div class=\"sefin-rate__icon-half sefin-rate__icon-half--right\" (click)=\"onHalfClick(item, false)\">\n <svg\n [class.sefin-rate__icon--full]=\"getIconState(item) === 'full'\"\n [class.sefin-rate__icon--half]=\"getIconState(item) === 'half'\"\n [class.sefin-rate__icon--empty]=\"getIconState(item) === 'empty'\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12 2L15.09 8.26L22 9.27L17 14.14L18.18 21.02L12 17.77L5.82 21.02L7 14.14L2 9.27L8.91 8.26L12 2Z\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </ng-container>\n <ng-template #fullStar>\n <svg\n class=\"sefin-rate__icon\"\n [class.sefin-rate__icon--full]=\"getIconState(item) === 'full'\"\n [class.sefin-rate__icon--half]=\"getIconState(item) === 'half'\"\n [class.sefin-rate__icon--empty]=\"getIconState(item) === 'empty'\"\n (click)=\"onItemClick(item)\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12 2L15.09 8.26L22 9.27L17 14.14L18.18 21.02L12 17.77L5.82 21.02L7 14.14L2 9.27L8.91 8.26L12 2Z\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </ng-template>\n </div>\n\n <!-- Heart icon -->\n <svg\n *ngSwitchCase=\"'heart'\"\n class=\"sefin-rate__icon\"\n [class.sefin-rate__icon--full]=\"getIconState(item) === 'full'\"\n [class.sefin-rate__icon--empty]=\"getIconState(item) === 'empty'\"\n (click)=\"onItemClick(item)\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M20.84 4.61C20.3292 4.099 19.7228 3.69364 19.0554 3.41708C18.3879 3.14052 17.6725 2.99817 16.95 2.99817C16.2275 2.99817 15.5121 3.14052 14.8446 3.41708C14.1772 3.69364 13.5708 4.099 13.06 4.61L12 5.67L10.94 4.61C9.9083 3.57831 8.50903 2.99871 7.05 2.99871C5.59096 2.99871 4.19169 3.57831 3.16 4.61C2.1283 5.64169 1.54871 7.04097 1.54871 8.5C1.54871 9.95903 2.1283 11.3583 3.16 12.39L4.22 13.45L12 21.23L19.78 13.45L20.84 12.39C21.351 11.8792 21.7564 11.2728 22.0329 10.6054C22.3095 9.93789 22.4518 9.22248 22.4518 8.5C22.4518 7.77752 22.3095 7.0621 22.0329 6.39464C21.7564 5.72718 21.351 5.12075 20.84 4.61Z\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n\n <!-- Thumb icon -->\n <svg\n *ngSwitchCase=\"'thumb'\"\n class=\"sefin-rate__icon\"\n [class.sefin-rate__icon--full]=\"getIconState(item) === 'full'\"\n [class.sefin-rate__icon--empty]=\"getIconState(item) === 'empty'\"\n (click)=\"onItemClick(item)\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M7 22V11M2 13V20C2 21.1046 2.89543 22 4 22H16.4262C17.907 22 19.1662 20.9197 19.3914 19.4562L20.4683 12.4562C20.7479 10.6388 19.3411 9 17.5032 9H14C13.4477 9 13 8.55228 13 8V4.46584C13 3.10399 11.896 2 10.5342 2C10.2093 2 9.91498 2.1913 9.78306 2.48812L7.26394 8.57899C7.09882 8.95673 6.74568 9.2 6.35471 9.2H4C2.89543 9.2 2 10.0954 2 11.2V13Z\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </ng-container>\n </div>\n </div>\n \n <span *ngIf=\"showText\" class=\"sefin-rate__text\">\n {{ value }} / {{ max }}\n </span>\n</div>\n\n","import { Component, Input, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport type SpacerSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | '5xl';\nexport type SpacerOrientation = 'vertical' | 'horizontal';\n\n@Component({\n selector: 'sefin-spacer',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './spacer.component.html',\n styleUrls: ['./spacer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SpacerComponent {\n /** Size of the spacer. Options: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | '5xl' */\n @Input() size: SpacerSize = 'md';\n /** Orientation of the spacer. Options: 'vertical' | 'horizontal' */\n @Input() orientation: SpacerOrientation = 'vertical';\n /** Additional CSS classes */\n @Input() class = '';\n\n get spacerClasses(): string {\n return [\n 'sefin-spacer',\n `sefin-spacer--${this.orientation}`,\n `sefin-spacer--${this.size}`,\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n\n","<div [class]=\"spacerClasses\" aria-hidden=\"true\"></div>\n\n","/**\n * Atoms index\n */\nexport * from './avatar/avatar.component';\nexport * from './badge/badge.component';\nexport * from './button/button.component';\nexport * from './icon';\nexport * from './icon-button/icon-button.component';\nexport * from './fab-button/fab-button.component';\nexport * from './chip/chip.component';\nexport * from './tag/tag.component';\nexport * from './link/link.component';\nexport * from './stack/stack.component';\nexport * from './container/container.component';\nexport * from './checkbox/checkbox.component';\nexport * from './radio/radio.component';\nexport * from './select/select.component';\nexport * from './switch/switch.component';\nexport * from './typography/typography.component';\nexport * from './divider/divider.component';\nexport * from './spinner/spinner.component';\nexport * from './progress-bar/progress-bar.component';\nexport * from './tooltip/tooltip.component';\nexport * from './alert/alert.component';\nexport * from './toast/toast.component';\nexport * from './textfield/textfield.component';\nexport * from './image/image.component';\nexport * from './tab/tab.component';\nexport * from './rate/rate.component';\nexport * from './spacer/spacer.component';\n\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IconComponent } from '../../atoms/icon/icon.component';\n\n@Component({\n selector: 'sefin-accordion-item',\n standalone: true,\n imports: [CommonModule, IconComponent],\n templateUrl: './accordion-item.component.html',\n styleUrls: ['./accordion-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AccordionItemComponent {\n /** Title text for the accordion header */\n @Input() title = '';\n /** Whether the accordion item is expanded */\n @Input() expanded = false;\n /** Whether the accordion item is disabled */\n @Input() disabled = false;\n /** Additional CSS classes */\n @Input() class = '';\n\n /** Event emitted when the accordion item is toggled */\n @Output() toggle = new EventEmitter<boolean>();\n\n onHeaderClick(): void {\n if (!this.disabled) {\n this.expanded = !this.expanded;\n this.toggle.emit(this.expanded);\n }\n }\n\n get accordionClasses(): string {\n return [\n 'sefin-accordion-item',\n this.expanded ? 'sefin-accordion-item--expanded' : '',\n this.disabled ? 'sefin-accordion-item--disabled' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get headerClasses(): string {\n return [\n 'sefin-accordion-item__header',\n this.expanded ? 'sefin-accordion-item__header--expanded' : '',\n this.disabled ? 'sefin-accordion-item__header--disabled' : '',\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n\n","<div [class]=\"accordionClasses\">\n <button\n type=\"button\"\n [class]=\"headerClasses\"\n [disabled]=\"disabled\"\n (click)=\"onHeaderClick()\"\n [attr.aria-expanded]=\"expanded\"\n [attr.aria-disabled]=\"disabled\"\n >\n <span class=\"sefin-accordion-item__title\">{{ title }}</span>\n <sefin-icon\n name=\"chevron-down\"\n size=\"sm\"\n [class]=\"'sefin-accordion-item__icon'\"\n [ngClass]=\"{'sefin-accordion-item__icon--expanded': expanded}\"\n ></sefin-icon>\n </button>\n <div\n class=\"sefin-accordion-item__content\"\n [class.sefin-accordion-item__content--expanded]=\"expanded\"\n [attr.aria-hidden]=\"!expanded\"\n >\n <div class=\"sefin-accordion-item__content-inner\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n ViewChild,\n ElementRef,\n OnInit,\n OnDestroy,\n OnChanges,\n SimpleChanges,\n HostListener,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { InputSize } from '../../shared/types';\n\nexport interface AutocompleteOption {\n value: string | number;\n label: string;\n disabled?: boolean;\n}\n\n@Component({\n selector: 'sefin-autocomplete',\n standalone: true,\n imports: [CommonModule, FormsModule],\n templateUrl: './autocomplete.component.html',\n styleUrls: ['./autocomplete.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class AutocompleteComponent implements OnInit, OnDestroy, OnChanges {\n @ViewChild('inputRef', { static: false })\n inputRef?: ElementRef<HTMLInputElement>;\n @ViewChild('dropdownRef', { static: false })\n dropdownRef?: ElementRef<HTMLDivElement>;\n @ViewChild('containerRef', { static: false })\n containerRef?: ElementRef<HTMLDivElement>;\n\n @Input() options: AutocompleteOption[] = [];\n @Input() placeholder = '';\n @Input() disabled = false;\n @Input() size: InputSize = 'md';\n @Input() class = '';\n @Input() value: string | number | null = null;\n @Input() minChars = 0;\n @Input() maxResults = 10;\n\n @Output() valueChange = new EventEmitter<string | number | null>();\n @Output() optionSelected = new EventEmitter<AutocompleteOption>();\n @Output() inputChange = new EventEmitter<string>();\n\n searchText = '';\n filteredOptions: AutocompleteOption[] = [];\n isOpen = false;\n selectedIndex = -1;\n private isSelectingOption = false;\n\n ngOnInit(): void {\n if (this.value !== null) {\n const selectedOption = this.options.find(\n (opt) => opt.value === this.value\n );\n this.searchText = selectedOption?.label || String(this.value);\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['options']) {\n const options = changes['options'].currentValue || [];\n\n if (this.value !== null) {\n const selectedOption = options.find(\n (opt: AutocompleteOption) => opt.value === this.value\n );\n if (selectedOption) {\n this.searchText = selectedOption.label;\n } else {\n this.searchText = '';\n }\n }\n }\n\n if (changes['value']) {\n if (this.value !== null) {\n const selectedOption = this.options.find(\n (opt) => opt.value === this.value\n );\n this.searchText = selectedOption?.label || String(this.value);\n } else {\n this.searchText = '';\n }\n this.filteredOptions = [];\n this.isOpen = false;\n }\n }\n\n ngOnDestroy(): void {\n }\n\n @HostListener('document:click', ['$event'])\n onClickOutside(event: MouseEvent): void {\n if (this.containerRef?.nativeElement && this.isOpen) {\n const clickedInside = this.containerRef.nativeElement.contains(\n event.target as Node\n );\n if (!clickedInside) {\n this.isOpen = false;\n this.selectedIndex = -1;\n }\n }\n }\n\n onInputChange(value: string): void {\n this.searchText = value;\n this.inputChange.emit(value);\n\n if (this.options && this.options.length > 0) {\n this.filterOptions();\n this.isOpen = value.length >= this.minChars;\n } else {\n this.isOpen = false;\n this.filteredOptions = [];\n }\n }\n\n filterOptions(): void {\n if (!this.options || this.options.length === 0) {\n this.filteredOptions = [];\n return;\n }\n\n if (\n this.minChars > 0 &&\n (!this.searchText || this.searchText.length < this.minChars)\n ) {\n this.filteredOptions = [];\n return;\n }\n\n const searchText = this.searchText || '';\n\n if (searchText.length === 0) {\n this.filteredOptions = this.options\n .filter((option) => !option.disabled)\n .slice(0, this.maxResults);\n return;\n }\n\n const searchLower = searchText.toLowerCase();\n this.filteredOptions = this.options\n .filter((option) => {\n if (option.disabled) return false;\n return option.label.toLowerCase().includes(searchLower);\n })\n .slice(0, this.maxResults);\n }\n\n onOptionMouseDown(event: MouseEvent, option: AutocompleteOption): void {\n // Prevenir que el input pierda el foco cuando se hace clic en una opción\n event.preventDefault();\n if (!option.disabled) {\n this.isSelectingOption = true;\n this.selectOption(option);\n // Resetear el flag después de un pequeño delay\n setTimeout(() => {\n this.isSelectingOption = false;\n }, 100);\n }\n }\n\n selectOption(option: AutocompleteOption): void {\n if (option.disabled) return;\n\n this.searchText = option.label;\n this.value = option.value;\n this.valueChange.emit(option.value);\n this.optionSelected.emit(option);\n this.isOpen = false;\n this.selectedIndex = -1;\n }\n\n onInputFocus(): void {\n if (this.disabled) return;\n\n if (\n this.options &&\n Array.isArray(this.options) &&\n this.options.length > 0\n ) {\n this.filterOptions();\n this.isOpen = this.filteredOptions.length > 0;\n } else {\n this.isOpen = false;\n this.filteredOptions = [];\n }\n }\n\n onInputBlur(): void {\n // Si se está seleccionando una opción, no hacer nada\n if (this.isSelectingOption) {\n return;\n }\n\n if (this.disabled || !this.searchText) {\n return;\n }\n\n const exactMatch = this.options.find(\n (option) =>\n !option.disabled &&\n option.label.toLowerCase().trim() === this.searchText.toLowerCase().trim()\n );\n\n if (!exactMatch) {\n // Mantener el texto escrito por el usuario\n // Resetear el value a null ya que no hay una opción seleccionada\n if (this.value !== null) {\n this.value = null;\n this.valueChange.emit(null);\n }\n this.isOpen = false;\n this.filteredOptions = [];\n this.selectedIndex = -1;\n }\n }\n\n onKeyDown(event: KeyboardEvent): void {\n if (\n !this.isOpen ||\n !this.filteredOptions ||\n this.filteredOptions.length === 0\n ) {\n return;\n }\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.selectedIndex = Math.min(\n this.selectedIndex + 1,\n this.filteredOptions.length - 1\n );\n setTimeout(() => this.scrollToSelected(), 0);\n break;\n case 'ArrowUp':\n event.preventDefault();\n this.selectedIndex = Math.max(this.selectedIndex - 1, -1);\n setTimeout(() => this.scrollToSelected(), 0);\n break;\n case 'Enter':\n event.preventDefault();\n if (\n this.selectedIndex >= 0 &&\n this.selectedIndex < this.filteredOptions.length\n ) {\n this.selectOption(this.filteredOptions[this.selectedIndex]);\n }\n break;\n case 'Escape':\n event.preventDefault();\n this.isOpen = false;\n this.selectedIndex = -1;\n break;\n }\n }\n\n private scrollToSelected(): void {\n try {\n if (this.dropdownRef?.nativeElement && this.selectedIndex >= 0) {\n const selectedElement = this.dropdownRef.nativeElement.querySelector(\n `[data-index=\"${this.selectedIndex}\"]`\n ) as HTMLElement | null;\n if (selectedElement && selectedElement instanceof HTMLElement) {\n selectedElement.scrollIntoView({\n block: 'nearest',\n behavior: 'smooth',\n });\n }\n }\n } catch (error) {\n console.warn('Could not scroll to selected option:', error);\n }\n }\n\n clearValue(): void {\n this.searchText = '';\n this.value = null;\n this.valueChange.emit(null);\n this.isOpen = false;\n this.filteredOptions = [];\n if (this.inputRef?.nativeElement) {\n this.inputRef.nativeElement.focus();\n }\n }\n\n get inputClasses(): string {\n return [\n 'sefin-autocomplete__input',\n `sefin-autocomplete__input--${this.size}`,\n this.disabled ? 'sefin-autocomplete__input--disabled' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get containerClasses(): string {\n return [\n 'sefin-autocomplete',\n this.isOpen && this.filteredOptions.length > 0\n ? 'sefin-autocomplete--open'\n : '',\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n","<div [class]=\"containerClasses\" #containerRef>\n <div class=\"sefin-autocomplete__wrapper\">\n <input\n #inputRef\n type=\"text\"\n [class]=\"inputClasses\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [ngModel]=\"searchText\"\n (ngModelChange)=\"onInputChange($event)\"\n (focus)=\"onInputFocus()\"\n (click)=\"onInputFocus()\"\n (blur)=\"onInputBlur()\"\n (keydown)=\"onKeyDown($event)\"\n autocomplete=\"off\"\n />\n <div class=\"sefin-autocomplete__actions\">\n <button\n *ngIf=\"searchText && !disabled\"\n type=\"button\"\n class=\"sefin-autocomplete__clear\"\n (click)=\"clearValue()\"\n aria-label=\"Clear\"\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12 4L4 12M4 4L12 12\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </button>\n <div class=\"sefin-autocomplete__arrow\" [class.sefin-autocomplete__arrow--open]=\"isOpen\">\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4 6L8 10L12 6\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n </div>\n <div\n *ngIf=\"isOpen && filteredOptions && filteredOptions.length > 0\"\n #dropdownRef\n class=\"sefin-autocomplete__dropdown\"\n >\n <ul class=\"sefin-autocomplete__list\">\n <li\n *ngFor=\"let option of filteredOptions; let i = index\"\n [attr.data-index]=\"i\"\n [class.sefin-autocomplete__option]=\"true\"\n [class.sefin-autocomplete__option--selected]=\"i === selectedIndex\"\n [class.sefin-autocomplete__option--disabled]=\"option.disabled\"\n (mousedown)=\"onOptionMouseDown($event, option)\"\n (click)=\"selectOption(option)\"\n [attr.aria-selected]=\"i === selectedIndex\"\n role=\"option\"\n >\n {{ option.label }}\n </li>\n </ul>\n </div>\n <div\n *ngIf=\"\n isOpen &&\n filteredOptions &&\n filteredOptions.length === 0 &&\n searchText &&\n searchText.length >= minChars\n \"\n class=\"sefin-autocomplete__dropdown sefin-autocomplete__dropdown--empty\"\n >\n <div class=\"sefin-autocomplete__no-results\">\n No se encontraron resultados\n </div>\n </div>\n</div>\n","import {\n Component,\n Input,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { LinkComponent } from '../../atoms/link/link.component';\n\nexport interface BreadcrumbItem {\n label: string;\n href?: string;\n icon?: string;\n}\n\nexport type BreadcrumbSeparator = 'slash' | 'chevron' | 'arrow';\nexport type BreadcrumbSize = 'sm' | 'md' | 'lg';\n\n@Component({\n selector: 'sefin-breadcrumbs',\n standalone: true,\n imports: [CommonModule, LinkComponent],\n templateUrl: './breadcrumbs.component.html',\n styleUrls: ['./breadcrumbs.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BreadcrumbsComponent {\n /** Array of breadcrumb items */\n @Input() items: BreadcrumbItem[] = [];\n /** Separator style. Options: 'slash' | 'chevron' | 'arrow' */\n @Input() separator: BreadcrumbSeparator = 'slash';\n /** Breadcrumb size. Options: 'sm' | 'md' | 'lg' */\n @Input() size: BreadcrumbSize = 'md';\n /** Additional CSS classes */\n @Input() class = '';\n\n constructor(private sanitizer: DomSanitizer) {}\n\n get breadcrumbsClasses(): string {\n return [\n 'sefin-breadcrumbs',\n `sefin-breadcrumbs--${this.size}`,\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n isLastItem(index: number): boolean {\n return index === this.items.length - 1;\n }\n\n getSeparatorIcon(): string {\n switch (this.separator) {\n case 'chevron':\n return '<svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9 18L15 12L9 6\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>';\n case 'arrow':\n return '<svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M5 12H19M19 12L12 5M19 12L12 19\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>';\n case 'slash':\n default:\n return '/';\n }\n }\n\n sanitizeHtml(html: string | undefined): SafeHtml | string {\n if (!html) return '';\n // For simple text like '/', return as is\n if (html.length <= 2 && !html.includes('<')) {\n return html;\n }\n // Use sanitize for user-provided HTML (icons from items)\n // This sanitizes but allows safe SVG elements\n return this.sanitizer.sanitize(1, html) || '';\n }\n\n getSeparatorIconSafe(): SafeHtml {\n // For separators generated internally, we can trust the HTML\n const icon = this.getSeparatorIcon();\n if (icon.length <= 2 && !icon.includes('<')) {\n return icon;\n }\n return this.sanitizer.bypassSecurityTrustHtml(icon);\n }\n}\n\n","<nav [class]=\"breadcrumbsClasses\" aria-label=\"Breadcrumb\">\n <ol class=\"sefin-breadcrumbs__list\">\n <li\n *ngFor=\"let item of items; let i = index; let isLast = last\"\n class=\"sefin-breadcrumbs__item\"\n >\n <ng-container *ngIf=\"isLastItem(i); else linkTemplate\">\n <span class=\"sefin-breadcrumbs__current\" [attr.aria-current]=\"'page'\">\n <span *ngIf=\"item.icon\" class=\"sefin-breadcrumbs__icon\" [innerHTML]=\"sanitizeHtml(item.icon)\"></span>\n {{ item.label }}\n </span>\n </ng-container>\n <ng-template #linkTemplate>\n <sefin-link\n [href]=\"item.href || '#'\"\n variant=\"default\"\n [size]=\"size\"\n class=\"sefin-breadcrumbs__link\"\n >\n <span *ngIf=\"item.icon\" class=\"sefin-breadcrumbs__icon\" [innerHTML]=\"sanitizeHtml(item.icon)\"></span>\n {{ item.label }}\n </sefin-link>\n </ng-template>\n <span\n *ngIf=\"!isLast\"\n class=\"sefin-breadcrumbs__separator\"\n [attr.aria-hidden]=\"true\"\n [innerHTML]=\"getSeparatorIconSafe()\"\n ></span>\n </li>\n </ol>\n</nav>\n\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { ButtonVariant, ButtonSize } from '../../shared/types';\n\nexport interface ButtonGroupOption {\n label: string;\n value: string | number;\n disabled?: boolean;\n icon?: string;\n}\n\nexport type ButtonGroupVariant = 'default' | 'segmented';\nexport type ButtonGroupSize = 'sm' | 'md' | 'lg';\n\n@Component({\n selector: 'sefin-button-group',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './button-group.component.html',\n styleUrls: ['./button-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class ButtonGroupComponent {\n constructor(private sanitizer: DomSanitizer) {}\n\n /** Array of button options */\n @Input() options: ButtonGroupOption[] = [];\n /** Selected value (for segmented variant) */\n @Input() value: string | number | null = null;\n /** Whether multiple selection is allowed (for default variant) */\n @Input() multiple = false;\n /** Selected values (for multiple selection) */\n @Input() selectedValues: (string | number)[] = [];\n /** Button variant style. Options: 'primary' | 'secondary' | 'outline' | 'ghost' | 'danger' */\n @Input() variant: ButtonVariant = 'primary';\n /** Button size. Options: 'sm' | 'md' | 'lg' */\n @Input() size: ButtonSize = 'md';\n /** Button group variant. Options: 'default' | 'segmented' */\n @Input() groupVariant: ButtonGroupVariant = 'default';\n /** Whether the button group is disabled */\n @Input() disabled = false;\n /** Whether buttons should take full width of the container */\n @Input() fullWidth = false;\n /** Additional CSS classes */\n @Input() class = '';\n\n /** Event emitted when value changes (for segmented variant) */\n @Output() valueChange = new EventEmitter<string | number | null>();\n /** Event emitted when selected values change (for multiple selection) */\n @Output() selectedValuesChange = new EventEmitter<(string | number)[]>();\n /** Event emitted when a button is clicked */\n @Output() buttonClick = new EventEmitter<ButtonGroupOption>();\n\n get buttonGroupClasses(): string {\n return [\n 'sefin-button-group',\n `sefin-button-group--${this.groupVariant}`,\n `sefin-button-group--${this.size}`,\n this.groupVariant === 'default' ? `sefin-button-group--${this.variant}` : '',\n this.fullWidth ? 'sefin-button-group--full-width' : '',\n this.disabled ? 'sefin-button-group--disabled' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n isSelected(option: ButtonGroupOption): boolean {\n if (this.groupVariant === 'segmented') {\n return this.value === option.value;\n }\n return this.selectedValues.includes(option.value);\n }\n\n onButtonClick(option: ButtonGroupOption): void {\n if (this.disabled || option.disabled) {\n return;\n }\n\n this.buttonClick.emit(option);\n\n if (this.groupVariant === 'segmented') {\n // Toggle selection for segmented\n const newValue = this.value === option.value ? null : option.value;\n this.value = newValue;\n this.valueChange.emit(newValue);\n } else {\n // Multiple selection logic\n const index = this.selectedValues.indexOf(option.value);\n if (this.multiple) {\n if (index >= 0) {\n // Deselect\n this.selectedValues = this.selectedValues.filter((v) => v !== option.value);\n } else {\n // Select\n this.selectedValues = [...this.selectedValues, option.value];\n }\n this.selectedValuesChange.emit([...this.selectedValues]);\n } else {\n // Single selection (even in default variant)\n if (index >= 0) {\n // Deselect if already selected\n this.selectedValues = [];\n } else {\n // Select only this one\n this.selectedValues = [option.value];\n }\n this.selectedValuesChange.emit([...this.selectedValues]);\n }\n }\n }\n\n getButtonClasses(option: ButtonGroupOption): string {\n const classes = ['sefin-button-group__button-item'];\n \n // Size class\n classes.push(`sefin-button-group__button-item--${this.size}`);\n \n // Selected state\n if (this.isSelected(option)) {\n classes.push('sefin-button-group__button-item--selected');\n }\n \n // Variant classes\n if (this.groupVariant === 'default') {\n classes.push('sefin-button-group__button-item--default');\n // In default variant, all buttons use the variant style\n classes.push(`sefin-button-group__button-item--${this.variant}`);\n } else {\n // Segmented variant\n classes.push('sefin-button-group__button-item--segmented');\n if (this.isSelected(option)) {\n // Selected buttons use the variant style\n classes.push(`sefin-button-group__button-item--${this.variant}`);\n }\n }\n \n return classes.join(' ');\n }\n\n sanitizeHtml(html: string | undefined): SafeHtml | string {\n if (!html) return '';\n // For simple text, return as is\n if (html.length <= 2 && !html.includes('<')) {\n return html;\n }\n // Use sanitize for user-provided HTML (icons)\n return this.sanitizer.sanitize(1, html) || '';\n }\n}\n\n","<div\n [class]=\"buttonGroupClasses\"\n role=\"group\"\n [attr.aria-label]=\"'Button group'\"\n>\n <button\n *ngFor=\"let option of options\"\n type=\"button\"\n [class]=\"getButtonClasses(option)\"\n [disabled]=\"disabled || option.disabled\"\n (click)=\"onButtonClick(option)\"\n [attr.aria-pressed]=\"isSelected(option)\"\n [attr.aria-label]=\"option.label\"\n >\n <span\n *ngIf=\"option.icon\"\n class=\"sefin-button-group__icon\"\n [innerHTML]=\"sanitizeHtml(option.icon)\"\n ></span>\n <span class=\"sefin-button-group__label\">{{ option.label }}</span>\n </button>\n</div>\n","import {\n Component,\n Input,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CardVariant } from '../../shared/types';\n\n@Component({\n selector: 'sefin-card',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './card.component.html',\n styleUrls: ['./card.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CardComponent {\n /** Card variant style. Options: 'default' | 'elevated' | 'outlined' */\n @Input() variant: CardVariant = 'default';\n /** Whether the card is clickable/interactive */\n @Input() clickable = false;\n /** Whether the card is disabled */\n @Input() disabled = false;\n /** Card padding size. Options: 'none' | 'sm' | 'md' | 'lg' */\n @Input() padding: 'none' | 'sm' | 'md' | 'lg' = 'md';\n /** Additional CSS classes */\n @Input() class = '';\n\n get cardClasses(): string {\n return [\n 'sefin-card',\n `sefin-card--${this.variant}`,\n this.clickable ? 'sefin-card--clickable' : '',\n this.disabled ? 'sefin-card--disabled' : '',\n `sefin-card--padding-${this.padding}`,\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n\n","<div [class]=\"cardClasses\">\n <ng-content></ng-content>\n</div>\n\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ViewChild,\n ElementRef,\n OnInit,\n OnChanges,\n AfterViewInit,\n OnDestroy,\n SimpleChanges,\n HostListener,\n ChangeDetectorRef,\n NgZone,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { InputSize } from '../../shared/types';\nimport { IconComponent } from '../../atoms/icon/icon.component';\nimport { TextFieldComponent } from '../../atoms/textfield/textfield.component';\n\nexport type DateFormat =\n | 'DD/MM/YYYY'\n | 'MM/DD/YYYY'\n | 'YYYY-MM-DD'\n | 'DD-MM-YYYY';\nexport type DatePickerMode = 'single' | 'range';\n\nexport interface DateRange {\n start: Date | null;\n end: Date | null;\n}\n\n@Component({\n selector: 'sefin-datepicker',\n standalone: true,\n imports: [CommonModule, IconComponent, TextFieldComponent],\n templateUrl: './datepicker.component.html',\n styleUrls: ['./datepicker.component.scss'],\n})\nexport class DatepickerComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n @ViewChild('containerRef', { static: false })\n containerRef?: ElementRef<HTMLDivElement>;\n @ViewChild('textfieldRef', { static: false })\n textfieldRef?: TextFieldComponent;\n @ViewChild('calendarRef', { static: false })\n calendarRef?: ElementRef<HTMLDivElement>;\n\n @Input() value: Date | DateRange | null = null;\n @Input() placeholder = 'Selecciona una fecha';\n @Input() disabled = false;\n @Input() size: InputSize = 'md';\n @Input() format: DateFormat = 'DD/MM/YYYY';\n @Input() mode: DatePickerMode = 'single';\n @Input() minDate?: Date;\n @Input() maxDate?: Date;\n @Input() showTodayButton = true;\n @Input() showClearButton = true;\n @Input() firstDayOfWeek: 0 | 1 = 1;\n\n @Output() valueChange = new EventEmitter<Date | DateRange | null>();\n @Output() dateSelected = new EventEmitter<Date | DateRange | null>();\n\n isOpen = false;\n currentMonth = new Date();\n selectedDate: Date | null = null;\n rangeStart: Date | null = null;\n rangeEnd: Date | null = null;\n displayValue = '';\n viewMode: 'month' | 'year' = 'month';\n\n private months = [\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 private days = ['Dom', 'Lun', 'Mar', 'Mié', 'Jue', 'Vie', 'Sáb'];\n\n constructor(private cdr: ChangeDetectorRef, private ngZone: NgZone) {\n this.currentMonth.setDate(1);\n }\n\n ngOnInit(): void {\n this.initializeDates();\n }\n\n ngAfterViewInit(): void {\n // Asegurar que el textfield esté disponible antes de actualizar el display\n this.updateDisplay();\n this.cdr.detectChanges();\n }\n\n ngOnDestroy(): void {\n // Limpiar timeout al destruir el componente\n if (this.openingTimeout) {\n clearTimeout(this.openingTimeout);\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['value'] || changes['mode']) {\n this.initializeDates();\n // Usar setTimeout para asegurar que el textfield esté disponible\n setTimeout(() => {\n this.updateDisplay();\n }, 0);\n }\n }\n\n private justOpened = false;\n private isSelectingDate = false;\n private openingTimeout?: ReturnType<typeof setTimeout>;\n\n @HostListener('document:click', ['$event'])\n onClickOutside(event: MouseEvent): void {\n // No procesar si el calendario está cerrado, se está seleccionando una fecha, o se acaba de abrir\n if (!this.isOpen || this.isSelectingDate || this.justOpened) {\n return;\n }\n\n const target = event.target as Node;\n \n // Verificar si el click es dentro del calendario o del contenedor - si es así, no cerrar\n if (\n this.calendarRef?.nativeElement?.contains(target) ||\n this.containerRef?.nativeElement?.contains(target)\n ) {\n return;\n }\n\n // Click está fuera - cerrar el calendario con un pequeño delay\n setTimeout(() => {\n // Verificar nuevamente antes de cerrar\n if (this.isOpen && !this.isSelectingDate && !this.justOpened) {\n this.closeCalendar();\n }\n }, 150);\n }\n\n @HostListener('document:keydown', ['$event'])\n onKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Escape' && this.isOpen) {\n this.closeCalendar();\n }\n }\n\n private initializeDates(): void {\n if (this.mode === 'single') {\n // Manejar diferentes tipos de valor\n if (this.value instanceof Date) {\n this.selectedDate = new Date(this.value);\n // Normalizar la fecha para evitar problemas de comparación\n this.selectedDate.setHours(0, 0, 0, 0);\n } else if (this.value && typeof this.value === 'object' && 'getTime' in this.value) {\n // Caso especial: objeto Date que no es instancia de Date\n this.selectedDate = new Date(this.value as any);\n this.selectedDate.setHours(0, 0, 0, 0);\n } else {\n this.selectedDate = null;\n }\n this.rangeStart = null;\n this.rangeEnd = null;\n if (this.selectedDate) {\n this.currentMonth = new Date(\n this.selectedDate.getFullYear(),\n this.selectedDate.getMonth(),\n 1\n );\n } else {\n this.currentMonth = new Date();\n this.currentMonth.setDate(1);\n }\n } else {\n const range = this.value as DateRange | null;\n this.selectedDate = null;\n if (range?.start) {\n this.rangeStart = new Date(range.start);\n this.rangeStart.setHours(0, 0, 0, 0);\n } else {\n this.rangeStart = null;\n }\n if (range?.end) {\n this.rangeEnd = new Date(range.end);\n this.rangeEnd.setHours(0, 0, 0, 0);\n } else {\n this.rangeEnd = null;\n }\n if (this.rangeStart) {\n this.currentMonth = new Date(\n this.rangeStart.getFullYear(),\n this.rangeStart.getMonth(),\n 1\n );\n } else {\n this.currentMonth = new Date();\n this.currentMonth.setDate(1);\n }\n }\n }\n\n toggleCalendar(): void {\n if (this.disabled) return;\n \n // Si ya está abierto, cerrarlo\n if (this.isOpen) {\n this.closeCalendar();\n return;\n }\n \n // Si está cerrado, abrirlo\n this.openCalendar();\n }\n\n openCalendar(): void {\n if (this.disabled || this.isOpen) return;\n \n // Limpiar cualquier timeout anterior\n if (this.openingTimeout) {\n clearTimeout(this.openingTimeout);\n }\n \n // Establecer flag ANTES de cambiar el estado para prevenir cierre inmediato\n this.justOpened = true;\n this.isOpen = true;\n \n // Usar NgZone para asegurar que el cambio se detecte correctamente\n this.ngZone.run(() => {\n this.cdr.detectChanges();\n });\n \n // Reset flag después de que Angular haya renderizado el calendario\n this.openingTimeout = setTimeout(() => {\n this.justOpened = false;\n }, 350);\n }\n\n closeCalendar(): void {\n if (!this.isOpen) return;\n \n // Limpiar timeout si existe\n if (this.openingTimeout) {\n clearTimeout(this.openingTimeout);\n this.openingTimeout = undefined;\n }\n \n this.isOpen = false;\n this.viewMode = 'month';\n this.justOpened = false;\n \n this.ngZone.run(() => {\n this.cdr.detectChanges();\n });\n }\n\n toggleViewMode(event?: MouseEvent): void {\n if (event) {\n event.stopPropagation();\n }\n this.viewMode = this.viewMode === 'month' ? 'year' : 'month';\n this.cdr.detectChanges();\n }\n\n getYears(): number[] {\n const currentYear = this.currentMonth.getFullYear();\n const years: number[] = [];\n const startYear = currentYear - 12;\n const endYear = currentYear + 12;\n\n for (let year = startYear; year <= endYear; year++) {\n years.push(year);\n }\n return years;\n }\n\n selectYear(year: number, event?: MouseEvent): void {\n if (event) {\n event.stopPropagation();\n }\n this.currentMonth = new Date(year, this.currentMonth.getMonth(), 1);\n this.viewMode = 'month';\n this.cdr.detectChanges();\n }\n\n getMonths(): { index: number; name: string }[] {\n return this.months.map((name, index) => ({ index, name }));\n }\n\n selectMonth(monthIndex: number): void {\n this.currentMonth = new Date(\n this.currentMonth.getFullYear(),\n monthIndex,\n 1\n );\n this.viewMode = 'month';\n this.cdr.detectChanges();\n }\n\n onTextFieldClick(event?: MouseEvent): void {\n if (event) {\n event.stopPropagation();\n event.preventDefault();\n }\n \n if (!this.disabled) {\n // Solo manejar el click si el calendario no está abierto\n // Si está abierto, el onClickOutside lo cerrará si es necesario\n if (!this.isOpen) {\n this.openCalendar();\n }\n }\n }\n\n onTextFieldFocus(event?: FocusEvent): void {\n if (event) {\n event.stopPropagation();\n }\n \n // No abrir el calendario en focus si ya está abierto\n // Esto previene que se abra/cierre/abra cuando se hace click\n if (!this.disabled && !this.isOpen) {\n this.openCalendar();\n }\n }\n\n onTrailingIconClick(event: MouseEvent): void {\n event.stopPropagation();\n event.preventDefault();\n \n if (this.displayValue && this.showClearButton && !this.disabled) {\n this.clearValue();\n } else if (!this.disabled && !this.isOpen) {\n // Solo abrir si no está abierto\n this.openCalendar();\n }\n }\n\n getCalendarDays(): (Date | null)[] {\n const days: (Date | null)[] = [];\n const year = this.currentMonth.getFullYear();\n const month = this.currentMonth.getMonth();\n const firstDay = new Date(year, month, 1).getDay();\n const daysInMonth = new Date(year, month + 1, 0).getDate();\n const offset =\n this.firstDayOfWeek === 1\n ? firstDay === 0\n ? 6\n : firstDay - 1\n : firstDay;\n\n for (let i = 0; i < offset; i++) {\n days.push(null);\n }\n for (let day = 1; day <= daysInMonth; day++) {\n days.push(new Date(year, month, day));\n }\n return days;\n }\n\n isToday(date: Date): boolean {\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n const dateCompare = new Date(date);\n dateCompare.setHours(0, 0, 0, 0);\n return dateCompare.getTime() === today.getTime();\n }\n\n isSelected(date: Date): boolean {\n if (!date) return false;\n\n const dateCompare = new Date(date);\n dateCompare.setHours(0, 0, 0, 0);\n\n if (this.mode === 'single') {\n if (!this.selectedDate) return false;\n const selected = new Date(this.selectedDate);\n selected.setHours(0, 0, 0, 0);\n return dateCompare.getTime() === selected.getTime();\n } else {\n // En modo rango, no usar --selected para inicio/fin, usar --range-start y --range-end\n return false;\n }\n }\n\n isInRange(date: Date): boolean {\n if (this.mode !== 'range' || !this.rangeStart || !this.rangeEnd)\n return false;\n\n const dateCompare = new Date(date);\n dateCompare.setHours(0, 0, 0, 0);\n const start = new Date(this.rangeStart);\n start.setHours(0, 0, 0, 0);\n const end = new Date(this.rangeEnd);\n end.setHours(0, 0, 0, 0);\n\n const startTime = start.getTime();\n const endTime = end.getTime();\n const dateTime = dateCompare.getTime();\n\n // No incluir inicio y fin en el rango (ya tienen su propia clase)\n return (\n (dateTime > startTime && dateTime < endTime) ||\n (dateTime > endTime && dateTime < startTime)\n );\n }\n\n isRangeStart(date: Date): boolean {\n if (this.mode !== 'range' || !this.rangeStart) return false;\n const dateCompare = new Date(date);\n dateCompare.setHours(0, 0, 0, 0);\n const start = new Date(this.rangeStart);\n start.setHours(0, 0, 0, 0);\n return dateCompare.getTime() === start.getTime();\n }\n\n isRangeEnd(date: Date): boolean {\n if (this.mode !== 'range' || !this.rangeEnd) return false;\n const dateCompare = new Date(date);\n dateCompare.setHours(0, 0, 0, 0);\n const end = new Date(this.rangeEnd);\n end.setHours(0, 0, 0, 0);\n return dateCompare.getTime() === end.getTime();\n }\n\n isDisabled(date: Date): boolean {\n const dateCompare = new Date(date);\n dateCompare.setHours(0, 0, 0, 0);\n\n if (this.minDate) {\n const min = new Date(this.minDate);\n min.setHours(0, 0, 0, 0);\n if (dateCompare < min) return true;\n }\n if (this.maxDate) {\n const max = new Date(this.maxDate);\n max.setHours(0, 0, 0, 0);\n if (dateCompare > max) return true;\n }\n return false;\n }\n\n\n onDayMouseDown(day: Date, event: MouseEvent): void {\n if (event) {\n // Stop propagation to prevent onClickOutside from firing\n event.stopPropagation();\n // Set flag IMMEDIATELY to prevent onClickOutside from closing calendar\n this.isSelectingDate = true;\n }\n }\n\n selectDate(date: Date, event?: MouseEvent): void {\n if (event) {\n event.stopPropagation();\n event.stopImmediatePropagation();\n event.preventDefault();\n }\n\n if (this.isDisabled(date)) {\n this.isSelectingDate = false;\n return;\n }\n\n // Flag should already be set from mousedown, but ensure it's set\n this.isSelectingDate = true;\n\n // Normalize date to avoid time comparison issues\n const normalizedDate = new Date(date);\n normalizedDate.setHours(0, 0, 0, 0);\n\n if (this.mode === 'single') {\n // Check if clicking the same date - if so, just close calendar\n if (this.selectedDate) {\n const selected = new Date(this.selectedDate);\n selected.setHours(0, 0, 0, 0);\n if (normalizedDate.getTime() === selected.getTime()) {\n // Same date clicked, just close calendar\n this.isSelectingDate = false;\n this.closeCalendar();\n return;\n }\n }\n\n // Update state immediately - do this synchronously\n this.selectedDate = new Date(normalizedDate);\n this.value = new Date(normalizedDate);\n\n // Calculate display value immediately\n const newDisplayValue = this.formatDate(this.selectedDate);\n this.displayValue = newDisplayValue;\n\n // Update textfield - usar setTimeout para asegurar que el DOM esté listo\n if (this.textfieldRef) {\n setTimeout(() => {\n if (this.textfieldRef) {\n this.textfieldRef.writeValue(newDisplayValue);\n }\n }, 0);\n }\n\n // Force change detection immediately\n this.cdr.detectChanges();\n\n // Emit events synchronously to ensure they're processed\n this.valueChange.emit(this.value);\n this.dateSelected.emit(this.value);\n\n // Close calendar after a delay to ensure everything is updated\n // Keep flag set during this time to prevent onClickOutside from interfering\n setTimeout(() => {\n if (this.isOpen) {\n this.closeCalendar();\n }\n // Reset flag after closing\n this.isSelectingDate = false;\n }, 250);\n } else {\n if (!this.rangeStart || (this.rangeStart && this.rangeEnd)) {\n this.rangeStart = new Date(normalizedDate);\n this.rangeEnd = null;\n this.value = { start: this.rangeStart, end: null };\n this.updateDisplay();\n this.cdr.detectChanges();\n this.ngZone.run(() => {\n this.valueChange.emit(this.value);\n });\n this.isSelectingDate = false;\n } else {\n this.rangeEnd = new Date(normalizedDate);\n if (this.rangeStart.getTime() > this.rangeEnd.getTime()) {\n [this.rangeStart, this.rangeEnd] = [this.rangeEnd, this.rangeStart];\n }\n this.value = { start: this.rangeStart, end: this.rangeEnd };\n this.updateDisplay();\n this.cdr.detectChanges();\n this.ngZone.run(() => {\n this.valueChange.emit(this.value);\n this.dateSelected.emit(this.value);\n });\n // En modo range, no cerrar automáticamente - solo se cierra al hacer clic fuera\n this.isSelectingDate = false;\n }\n }\n }\n\n trackByDate(index: number, day: Date | null): string {\n if (!day) return `empty-${index}`;\n return `${day.getFullYear()}-${day.getMonth()}-${day.getDate()}`;\n }\n\n previousMonth(event?: MouseEvent): void {\n if (event) {\n event.stopPropagation();\n }\n if (this.viewMode === 'year') {\n const currentYear = this.currentMonth.getFullYear();\n this.currentMonth = new Date(\n currentYear - 25,\n this.currentMonth.getMonth(),\n 1\n );\n } else {\n this.currentMonth = new Date(\n this.currentMonth.getFullYear(),\n this.currentMonth.getMonth() - 1,\n 1\n );\n }\n this.cdr.detectChanges();\n }\n\n nextMonth(event?: MouseEvent): void {\n if (event) {\n event.stopPropagation();\n }\n if (this.viewMode === 'year') {\n const currentYear = this.currentMonth.getFullYear();\n this.currentMonth = new Date(\n currentYear + 25,\n this.currentMonth.getMonth(),\n 1\n );\n } else {\n this.currentMonth = new Date(\n this.currentMonth.getFullYear(),\n this.currentMonth.getMonth() + 1,\n 1\n );\n }\n this.cdr.detectChanges();\n }\n\n goToToday(): void {\n const today = new Date();\n if (!this.isDisabled(today)) {\n this.selectDate(today);\n }\n }\n\n clearValue(): void {\n if (this.mode === 'single') {\n this.selectedDate = null;\n this.value = null;\n } else {\n this.rangeStart = null;\n this.rangeEnd = null;\n this.value = null;\n }\n this.updateDisplay();\n this.valueChange.emit(null);\n this.dateSelected.emit(null);\n this.closeCalendar();\n }\n\n formatDate(date: Date): string {\n const day = String(date.getDate()).padStart(2, '0');\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const year = date.getFullYear();\n\n switch (this.format) {\n case 'DD/MM/YYYY':\n return `${day}/${month}/${year}`;\n case 'MM/DD/YYYY':\n return `${month}/${day}/${year}`;\n case 'YYYY-MM-DD':\n return `${year}-${month}-${day}`;\n case 'DD-MM-YYYY':\n return `${day}-${month}-${year}`;\n default:\n return `${day}/${month}/${year}`;\n }\n }\n\n private updateDisplay(): void {\n let newValue = '';\n \n if (this.mode === 'single') {\n newValue = this.selectedDate\n ? this.formatDate(this.selectedDate)\n : '';\n } else {\n const range = this.value as DateRange | null;\n if (range?.start && range?.end) {\n newValue = `${this.formatDate(range.start)} - ${this.formatDate(range.end)}`;\n } else if (range?.start) {\n newValue = `${this.formatDate(range.start)} - ...`;\n } else {\n newValue = '';\n }\n }\n\n this.displayValue = newValue;\n\n // Update textfield value using writeValue\n // Asegurar que el textfield esté disponible antes de actualizar\n if (this.textfieldRef) {\n // Usar setTimeout para asegurar que el DOM esté listo\n setTimeout(() => {\n if (this.textfieldRef) {\n this.textfieldRef.writeValue(this.displayValue);\n }\n }, 0);\n }\n }\n\n getMonthName(): string {\n return this.months[this.currentMonth.getMonth()];\n }\n\n getYear(): number {\n return this.currentMonth.getFullYear();\n }\n\n getDayNames(): string[] {\n const days = [...this.days];\n if (this.firstDayOfWeek === 1) {\n const sunday = days.shift();\n if (sunday) days.push(sunday);\n }\n return days;\n }\n\n get containerClasses(): string {\n return `sefin-datepicker sefin-datepicker--${this.size} ${\n this.isOpen ? 'sefin-datepicker--open' : ''\n }`.trim();\n }\n\n getCurrentYear(): number {\n return new Date().getFullYear();\n }\n\n isCurrentYear(year: number): boolean {\n return year === this.getCurrentYear();\n }\n}\n\n","<div [class]=\"containerClasses\" #containerRef>\n <div class=\"sefin-datepicker__wrapper\">\n <div\n (click)=\"onTextFieldClick($event)\"\n (mousedown)=\"$event.stopPropagation()\"\n (mouseup)=\"$event.stopPropagation()\"\n class=\"sefin-datepicker__input-wrapper\"\n >\n <sefin-textfield\n #textfieldRef\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [size]=\"size\"\n [readonly]=\"true\"\n [trailingIcon]=\"\n displayValue && showClearButton && !disabled ? 'x' : 'calendar'\n \"\n (focused)=\"onTextFieldFocus($event)\"\n (trailingIconClick)=\"onTrailingIconClick($event)\"\n class=\"sefin-datepicker__input\"\n ></sefin-textfield>\n </div>\n </div>\n\n <div\n *ngIf=\"isOpen\"\n #calendarRef\n class=\"sefin-datepicker__calendar\"\n (click)=\"$event.stopPropagation()\"\n (mousedown)=\"$event.stopPropagation()\"\n >\n <div class=\"sefin-datepicker__header\">\n <button\n type=\"button\"\n class=\"sefin-datepicker__nav\"\n (click)=\"previousMonth($event)\"\n >\n <sefin-icon name=\"chevron-left\" size=\"sm\"></sefin-icon>\n </button>\n <button\n type=\"button\"\n class=\"sefin-datepicker__month-year-btn\"\n (click)=\"toggleViewMode($event)\"\n >\n <span *ngIf=\"viewMode === 'month'\"\n >{{ getMonthName() }} {{ getYear() }}</span\n >\n <span *ngIf=\"viewMode === 'year'\">{{ getYear() }}</span>\n </button>\n <button\n type=\"button\"\n class=\"sefin-datepicker__nav\"\n (click)=\"nextMonth($event)\"\n >\n <sefin-icon name=\"chevron-right\" size=\"sm\"></sefin-icon>\n </button>\n </div>\n\n <!-- Vista de Meses -->\n <div *ngIf=\"viewMode === 'month'\" class=\"sefin-datepicker__month-view\">\n <div class=\"sefin-datepicker__weekdays\">\n <div\n *ngFor=\"let day of getDayNames()\"\n class=\"sefin-datepicker__weekday\"\n >\n {{ day }}\n </div>\n </div>\n\n <div class=\"sefin-datepicker__days\">\n <button\n *ngFor=\"let day of getCalendarDays(); trackBy: trackByDate\"\n type=\"button\"\n class=\"sefin-datepicker__day\"\n [class.sefin-datepicker__day--today]=\"day && isToday(day)\"\n [class.sefin-datepicker__day--selected]=\"day && isSelected(day)\"\n [class.sefin-datepicker__day--in-range]=\"day && isInRange(day)\"\n [class.sefin-datepicker__day--range-start]=\"day && isRangeStart(day)\"\n [class.sefin-datepicker__day--range-end]=\"day && isRangeEnd(day)\"\n [class.sefin-datepicker__day--disabled]=\"day && isDisabled(day)\"\n [class.sefin-datepicker__day--empty]=\"!day\"\n [disabled]=\"!day || (day && isDisabled(day))\"\n (mousedown)=\"day && !isDisabled(day) && onDayMouseDown(day, $event)\"\n (click)=\"day && !isDisabled(day) && selectDate(day, $event)\"\n >\n {{ day ? day.getDate() : \"\" }}\n </button>\n </div>\n </div>\n\n <!-- Vista de Años -->\n <div *ngIf=\"viewMode === 'year'\" class=\"sefin-datepicker__year-view\">\n <div class=\"sefin-datepicker__years-grid\">\n <button\n *ngFor=\"let year of getYears()\"\n type=\"button\"\n class=\"sefin-datepicker__year\"\n [class.sefin-datepicker__year--current]=\"isCurrentYear(year)\"\n [class.sefin-datepicker__year--selected]=\"\n year === currentMonth.getFullYear()\n \"\n (click)=\"selectYear(year, $event)\"\n >\n {{ year }}\n </button>\n </div>\n </div>\n\n <div\n *ngIf=\"showTodayButton && viewMode === 'month'\"\n class=\"sefin-datepicker__footer\"\n >\n <button\n type=\"button\"\n class=\"sefin-datepicker__today\"\n (click)=\"goToToday()\"\n >\n Hoy\n </button>\n </div>\n </div>\n</div>\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n computed,\n signal,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonSize } from '../../shared/types';\n\nexport type PaginationSize = 'sm' | 'md' | 'lg';\nexport type PaginationVariant = 'default' | 'compact';\n\n@Component({\n selector: 'sefin-pagination',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './pagination.component.html',\n styleUrls: ['./pagination.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PaginationComponent {\n /** Current page (1-based) */\n @Input() set currentPage(value: number) {\n this._currentPage.set(Math.max(1, value));\n }\n get currentPage(): number {\n return this._currentPage();\n }\n private _currentPage = signal(1);\n\n /** Total number of pages */\n @Input() set totalPages(value: number) {\n this._totalPages.set(Math.max(1, value));\n }\n get totalPages(): number {\n return this._totalPages();\n }\n private _totalPages = signal(1);\n\n /** Total number of items (alternative to totalPages) */\n @Input() set totalItems(value: number | undefined) {\n if (value !== undefined) {\n this._totalItems.set(value);\n }\n }\n get totalItems(): number | undefined {\n return this._totalItems();\n }\n private _totalItems = signal<number | undefined>(undefined);\n\n /** Items per page (used when totalItems is provided) */\n @Input() itemsPerPage = 10;\n\n /** Number of page buttons to show on each side of current page */\n @Input() siblingCount = 1;\n\n /** Show first and last page buttons */\n @Input() showFirstLast = true;\n\n /** Show previous and next buttons */\n @Input() showPrevNext = true;\n\n /** Pagination size. Options: 'sm' | 'md' | 'lg' */\n @Input() size: PaginationSize = 'md';\n\n /** Pagination variant. Options: 'default' | 'compact' */\n @Input() variant: PaginationVariant = 'default';\n\n /** Additional CSS classes */\n @Input() class = '';\n\n /** Event emitted when page changes */\n @Output() pageChange = new EventEmitter<number>();\n\n /** Computed total pages (from totalItems or direct input) */\n readonly computedTotalPages = computed(() => {\n const total = this._totalItems();\n if (total !== undefined) {\n return Math.max(1, Math.ceil(total / this.itemsPerPage));\n }\n return this._totalPages();\n });\n\n /** Computed page numbers to display */\n readonly pageNumbers = computed(() => {\n const current = this._currentPage();\n const total = this.computedTotalPages();\n const sibling = this.siblingCount;\n\n const pages: (number | string)[] = [];\n\n // Always show first page if not already included\n if (this.showFirstLast && current > sibling + 2) {\n pages.push(1);\n if (current > sibling + 3) {\n pages.push('ellipsis-start');\n }\n }\n\n // Calculate start and end of page range\n const start = Math.max(1, current - sibling);\n const end = Math.min(total, current + sibling);\n\n // Add page numbers in range\n for (let i = start; i <= end; i++) {\n pages.push(i);\n }\n\n // Always show last page if not already included\n if (this.showFirstLast && current < total - sibling - 1) {\n if (current < total - sibling - 2) {\n pages.push('ellipsis-end');\n }\n pages.push(total);\n }\n\n return pages;\n });\n\n get paginationClasses(): string {\n return [\n 'sefin-pagination',\n `sefin-pagination--${this.size}`,\n `sefin-pagination--${this.variant}`,\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n isDisabled(direction: 'prev' | 'next'): boolean {\n if (direction === 'prev') {\n return this.currentPage <= 1;\n }\n return this.currentPage >= this.computedTotalPages();\n }\n\n goToPage(page: number | string): void {\n if (typeof page === 'number') {\n const validPage = Math.max(1, Math.min(page, this.computedTotalPages()));\n if (validPage !== this.currentPage) {\n this._currentPage.set(validPage);\n this.pageChange.emit(validPage);\n }\n }\n }\n\n goToPrevious(): void {\n if (!this.isDisabled('prev')) {\n this.goToPage(this.currentPage - 1);\n }\n }\n\n goToNext(): void {\n if (!this.isDisabled('next')) {\n this.goToPage(this.currentPage + 1);\n }\n }\n\n goToFirst(): void {\n if (this.currentPage > 1) {\n this.goToPage(1);\n }\n }\n\n goToLast(): void {\n const lastPage = this.computedTotalPages();\n if (this.currentPage < lastPage) {\n this.goToPage(lastPage);\n }\n }\n\n isEllipsis(item: number | string): boolean {\n return item === 'ellipsis-start' || item === 'ellipsis-end';\n }\n\n isCurrentPage(page: number | string): boolean {\n return typeof page === 'number' && page === this.currentPage;\n }\n\n getAriaCurrent(page: number | string): string | null {\n return this.isCurrentPage(page) ? 'page' : null;\n }\n}\n\n","<nav [class]=\"paginationClasses\" aria-label=\"Pagination Navigation\">\n <ul class=\"sefin-pagination__list\">\n <!-- First button -->\n <li *ngIf=\"showFirstLast\" class=\"sefin-pagination__item\">\n <button\n type=\"button\"\n class=\"sefin-pagination__button sefin-pagination__button--nav\"\n [disabled]=\"currentPage <= 1\"\n (click)=\"goToFirst()\"\n aria-label=\"Go to first page\"\n [attr.aria-disabled]=\"currentPage <= 1\"\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M11 17L6 12L11 7M18 17L13 12L18 7\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </button>\n </li>\n\n <!-- Previous button -->\n <li *ngIf=\"showPrevNext\" class=\"sefin-pagination__item\">\n <button\n type=\"button\"\n class=\"sefin-pagination__button sefin-pagination__button--nav\"\n [disabled]=\"isDisabled('prev')\"\n (click)=\"goToPrevious()\"\n aria-label=\"Go to previous page\"\n [attr.aria-disabled]=\"isDisabled('prev')\"\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M15 18L9 12L15 6\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </button>\n </li>\n\n <!-- Page numbers -->\n <li\n *ngFor=\"let page of pageNumbers(); let i = index\"\n class=\"sefin-pagination__item\"\n >\n <ng-container *ngIf=\"isEllipsis(page); else pageButton\">\n <span class=\"sefin-pagination__ellipsis\" aria-hidden=\"true\">...</span>\n </ng-container>\n <ng-template #pageButton>\n <button\n type=\"button\"\n class=\"sefin-pagination__button sefin-pagination__button--page\"\n [class.sefin-pagination__button--active]=\"isCurrentPage(page)\"\n (click)=\"goToPage(page)\"\n [attr.aria-label]=\"'Go to page ' + page\"\n [attr.aria-current]=\"getAriaCurrent(page)\"\n >\n {{ page }}\n </button>\n </ng-template>\n </li>\n\n <!-- Next button -->\n <li *ngIf=\"showPrevNext\" class=\"sefin-pagination__item\">\n <button\n type=\"button\"\n class=\"sefin-pagination__button sefin-pagination__button--nav\"\n [disabled]=\"isDisabled('next')\"\n (click)=\"goToNext()\"\n aria-label=\"Go to next page\"\n [attr.aria-disabled]=\"isDisabled('next')\"\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M9 18L15 12L9 6\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </button>\n </li>\n\n <!-- Last button -->\n <li *ngIf=\"showFirstLast\" class=\"sefin-pagination__item\">\n <button\n type=\"button\"\n class=\"sefin-pagination__button sefin-pagination__button--nav\"\n [disabled]=\"currentPage >= computedTotalPages()\"\n (click)=\"goToLast()\"\n aria-label=\"Go to last page\"\n [attr.aria-disabled]=\"currentPage >= computedTotalPages()\"\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M13 17L18 12L13 7M6 17L11 12L6 7\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </button>\n </li>\n </ul>\n</nav>\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n forwardRef,\n ViewChild,\n ElementRef,\n OnInit,\n OnDestroy,\n AfterViewInit,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n NG_VALIDATORS,\n FormControl,\n Validator,\n AbstractControl,\n ValidationErrors,\n} from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { IconComponent } from '../../atoms/icon/icon.component';\n\nexport type TextareaVariant = 'outlined' | 'filled' | 'standard';\nexport type TextareaSize = 'sm' | 'md' | 'lg';\n\n@Component({\n selector: 'sefin-textarea',\n standalone: true,\n imports: [CommonModule, IconComponent],\n templateUrl: './textarea.component.html',\n styleUrls: ['./textarea.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextareaComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => TextareaComponent),\n multi: true,\n },\n ],\n})\nexport class TextareaComponent\n implements ControlValueAccessor, Validator, OnInit, AfterViewInit, OnDestroy\n{\n @ViewChild('textareaRef', { static: false })\n textareaRef?: ElementRef<HTMLTextAreaElement>;\n\n /** Textarea variant style. Options: 'outlined' | 'filled' | 'standard' */\n @Input() variant: TextareaVariant = 'outlined';\n /** Textarea size. Options: 'sm' | 'md' | 'lg' */\n @Input() size: TextareaSize = 'md';\n /** Placeholder text */\n @Input() placeholder = '';\n /** Helper text shown below the textarea */\n @Input() hint = '';\n /** Error message to display */\n @Input() errorMessage = '';\n /** Whether the field is required */\n @Input() required = false;\n /** Whether the field is disabled */\n @Input() disabled = false;\n /** Whether the field is readonly */\n @Input() readonly = false;\n /** Maximum length of the input */\n @Input() maxLength?: number;\n /** Minimum length of the input */\n @Input() minLength?: number;\n /** Pattern for validation (regex string) */\n @Input() pattern?: string;\n /** Number of visible text lines */\n @Input() rows = 4;\n /** Number of visible text columns */\n @Input() cols?: number;\n /** Whether to auto-resize based on content */\n @Input() autoResize = false;\n /** Minimum height when auto-resize is enabled */\n @Input() minHeight?: number;\n /** Maximum height when auto-resize is enabled */\n @Input() maxHeight?: number;\n /** Whether to show character counter */\n @Input() showCounter = false;\n /** Autocomplete attribute */\n @Input() autocomplete?: string;\n /** Textarea name attribute */\n @Input() name = '';\n /** Textarea id attribute */\n @Input() id = '';\n /** Additional CSS classes */\n @Input() class = '';\n /** Custom validation function */\n @Input() customValidator?: (value: string) => string | null;\n /** Initial value for the textarea (for non-reactive forms) */\n @Input() set value(val: string) {\n this._value = val || '';\n if (this.textareaRef?.nativeElement) {\n this.textareaRef.nativeElement.value = this._value;\n if (this.autoResize) {\n setTimeout(() => this.adjustHeight(), 0);\n }\n }\n this.validateField();\n }\n get value(): string {\n return this._value;\n }\n\n /** Event emitted when the value changes */\n @Output() valueChange = new EventEmitter<string>();\n /** Event emitted when the textarea is focused */\n @Output() focused = new EventEmitter<FocusEvent>();\n /** Event emitted when the textarea is blurred */\n @Output() blurred = new EventEmitter<FocusEvent>();\n\n private _value: string = '';\n isFocused = false;\n hasError = false;\n internalErrorMessage = '';\n currentHeight = 0;\n\n private onChange = (value: string) => {};\n private onTouched = () => {};\n private destroy$ = new Subject<void>();\n private control?: FormControl;\n\n ngOnInit(): void {\n this.generateIdIfNeeded();\n }\n\n ngAfterViewInit(): void {\n if (this.textareaRef?.nativeElement) {\n // Set initial value if provided\n if (this._value) {\n this.textareaRef.nativeElement.value = this._value;\n }\n \n // Initialize auto-resize if enabled\n if (this.autoResize) {\n this.adjustHeight();\n }\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private generateIdIfNeeded(): void {\n if (!this.id) {\n this.id = `sefin-textarea-${Math.random().toString(36).substr(2, 9)}`;\n }\n }\n\n onInput(event: Event): void {\n const target = event.target as HTMLTextAreaElement;\n this._value = target.value;\n this.onChange(this._value);\n this.valueChange.emit(this._value);\n this.validateField();\n \n // Auto-resize if enabled\n if (this.autoResize) {\n this.adjustHeight();\n }\n }\n\n onFocus(event: FocusEvent): void {\n this.isFocused = true;\n this.focused.emit(event);\n }\n\n onBlur(event: FocusEvent): void {\n this.isFocused = false;\n this.onTouched();\n this.blurred.emit(event);\n this.validateField();\n }\n\n private adjustHeight(): void {\n if (!this.textareaRef?.nativeElement || !this.autoResize) {\n return;\n }\n\n const textarea = this.textareaRef.nativeElement;\n \n // Reset height to get accurate scrollHeight\n textarea.style.height = 'auto';\n \n // Calculate new height\n let newHeight = textarea.scrollHeight;\n \n // Apply min height if specified\n if (this.minHeight) {\n newHeight = Math.max(newHeight, this.minHeight);\n }\n \n // Apply max height if specified\n if (this.maxHeight) {\n newHeight = Math.min(newHeight, this.maxHeight);\n }\n \n // Set the new height\n textarea.style.height = `${newHeight}px`;\n this.currentHeight = newHeight;\n }\n\n private validateField(): void {\n this.hasError = false;\n this.internalErrorMessage = '';\n\n if (this.disabled || this.readonly) {\n return;\n }\n\n const value = this._value || '';\n\n // Required validation\n if (this.required && !value.trim()) {\n this.hasError = true;\n this.internalErrorMessage = 'Este campo es requerido';\n return;\n }\n\n // Skip other validations if field is empty and not required\n if (!value.trim()) {\n return;\n }\n\n // Min length validation\n if (this.minLength && value.length < this.minLength) {\n this.hasError = true;\n this.internalErrorMessage = `Mínimo ${this.minLength} caracteres`;\n return;\n }\n\n // Max length validation\n if (this.maxLength && value.length > this.maxLength) {\n this.hasError = true;\n this.internalErrorMessage = `Máximo ${this.maxLength} caracteres`;\n return;\n }\n\n // Pattern validation\n if (this.pattern) {\n try {\n const regex = new RegExp(this.pattern);\n if (!regex.test(value)) {\n this.hasError = true;\n this.internalErrorMessage = 'El formato no es válido';\n return;\n }\n } catch (e) {\n console.warn('Invalid pattern:', this.pattern);\n }\n }\n\n // Custom validator\n if (this.customValidator) {\n const customError = this.customValidator(value);\n if (customError) {\n this.hasError = true;\n this.internalErrorMessage = customError;\n return;\n }\n }\n }\n\n get displayError(): boolean {\n return this.hasError && (!!this.errorMessage || !!this.internalErrorMessage);\n }\n\n get displayErrorMessage(): string {\n return this.errorMessage || this.internalErrorMessage;\n }\n\n get characterCount(): number {\n return this._value?.length || 0;\n }\n\n get textareaClasses(): string {\n return [\n 'sefin-textarea',\n `sefin-textarea--${this.variant}`,\n `sefin-textarea--${this.size}`,\n this.isFocused ? 'sefin-textarea--focused' : '',\n this.hasError ? 'sefin-textarea--error' : '',\n this.disabled ? 'sefin-textarea--disabled' : '',\n this.readonly ? 'sefin-textarea--readonly' : '',\n this.autoResize ? 'sefin-textarea--auto-resize' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n // ControlValueAccessor implementation\n writeValue(value: string): void {\n this._value = value || '';\n if (this.textareaRef?.nativeElement) {\n this.textareaRef.nativeElement.value = this._value;\n if (this.autoResize) {\n setTimeout(() => this.adjustHeight(), 0);\n }\n }\n this.validateField();\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n // Validator implementation\n validate(control: AbstractControl): ValidationErrors | null {\n this.control = control as FormControl;\n const value = control.value || '';\n\n if (this.disabled || this.readonly) {\n return null;\n }\n\n // Required validation\n if (this.required && !value.trim()) {\n return { required: true };\n }\n\n // Skip other validations if field is empty and not required\n if (!value.trim()) {\n return null;\n }\n\n const errors: ValidationErrors = {};\n\n // Min length validation\n if (this.minLength && value.length < this.minLength) {\n errors['minlength'] = {\n requiredLength: this.minLength,\n actualLength: value.length,\n };\n }\n\n // Max length validation\n if (this.maxLength && value.length > this.maxLength) {\n errors['maxlength'] = {\n requiredLength: this.maxLength,\n actualLength: value.length,\n };\n }\n\n // Pattern validation\n if (this.pattern) {\n try {\n const regex = new RegExp(this.pattern);\n if (!regex.test(value)) {\n errors['pattern'] = { requiredPattern: this.pattern, actualValue: value };\n }\n } catch (e) {\n console.warn('Invalid pattern:', this.pattern);\n }\n }\n\n // Custom validator\n if (this.customValidator) {\n const customError = this.customValidator(value);\n if (customError) {\n errors['custom'] = { message: customError };\n }\n }\n\n return Object.keys(errors).length > 0 ? errors : null;\n }\n}\n\n","<div [class]=\"textareaClasses\">\n <!-- Textarea Container -->\n <div class=\"sefin-textarea__container\">\n <!-- Textarea Wrapper -->\n <div class=\"sefin-textarea__wrapper\">\n <!-- Textarea -->\n <textarea\n #textareaRef\n [id]=\"id\"\n [name]=\"name\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [attr.rows]=\"rows\"\n [attr.cols]=\"cols\"\n [attr.maxlength]=\"maxLength\"\n [attr.minlength]=\"minLength\"\n [autocomplete]=\"autocomplete\"\n [attr.aria-label]=\"placeholder\"\n [attr.aria-required]=\"required\"\n [attr.aria-invalid]=\"hasError\"\n [attr.aria-describedby]=\"displayError || hint || showCounter ? id + '-helper' : null\"\n class=\"sefin-textarea__textarea\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n ></textarea>\n </div>\n\n <!-- Outline/Filled border -->\n <div class=\"sefin-textarea__border\"></div>\n </div>\n\n <!-- Helper Text / Error Message -->\n <div\n *ngIf=\"displayError || hint || showCounter\"\n [id]=\"id + '-helper'\"\n class=\"sefin-textarea__helper\"\n [class.sefin-textarea__helper--error]=\"displayError\"\n >\n <span *ngIf=\"displayError\" class=\"sefin-textarea__error-message\">\n {{ displayErrorMessage }}\n </span>\n <span *ngIf=\"!displayError && hint\" class=\"sefin-textarea__hint\">\n {{ hint }}\n </span>\n <span\n *ngIf=\"showCounter && !displayError\"\n class=\"sefin-textarea__counter\"\n [class.sefin-textarea__counter--warning]=\"maxLength && characterCount > maxLength * 0.8\"\n >\n {{ characterCount }}{{ maxLength ? ' / ' + maxLength : '' }}\n </span>\n </div>\n</div>\n\n","/**\n * Molecules index\n */\nexport * from './accordion-item/accordion-item.component';\nexport * from './autocomplete/autocomplete.component';\nexport * from './breadcrumbs/breadcrumbs.component';\nexport * from './button-group/button-group.component';\nexport * from './card/card.component';\nexport * from './datepicker/datepicker.component';\nexport * from './pagination/pagination.component';\nexport * from './textarea/textarea.component';\n","/*\n * Public API Surface of @lesterarte/sefin-ui\n */\n\n// Design Tokens\nexport * from './tokens';\n\n// Themes\nexport * from './themes';\n\n// Utilities\nexport * from './utils';\n\n// Shared\nexport * from './shared';\n\n// Atoms\nexport * from './atoms';\n\n// Molecules\nexport * from './molecules';\n\n// Styles (for importing in consuming apps)\nexport const STYLES_PATH = './styles/index.scss';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2"],"mappings":"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"}
|