@eduboxpro/studio 0.1.30 → 0.1.31
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":"eduboxpro-studio.mjs","sources":["../../../projects/studio/src/lib/config/studio.config.ts","../../../projects/studio/src/lib/utils/font-loader.ts","../../../projects/studio/src/lib/config/studio.service.ts","../../../projects/studio/src/lib/config/provide-studio.ts","../../../projects/studio/src/lib/config/index.ts","../../../projects/studio/src/lib/primitives/icon/icon.component.ts","../../../projects/studio/src/lib/primitives/icon/icon.provider.ts","../../../projects/studio/src/lib/utils/url-validator.ts","../../../projects/studio/src/lib/utils/class-names.ts","../../../projects/studio/src/lib/utils/config-helpers.ts","../../../projects/studio/src/lib/utils/index.ts","../../../projects/studio/src/lib/primitives/badge/badge.component.ts","../../../projects/studio/src/lib/primitives/badge/badge.types.ts","../../../projects/studio/src/lib/primitives/badge/index.ts","../../../projects/studio/src/lib/primitives/badge-wrapper/badge-wrapper.component.ts","../../../projects/studio/src/lib/primitives/badge-wrapper/badge-wrapper.component.html","../../../projects/studio/src/lib/primitives/bottom-navigation/bottom-navigation.component.ts","../../../projects/studio/src/lib/primitives/bottom-navigation/bottom-navigation.component.html","../../../projects/studio/src/lib/primitives/button/button.component.ts","../../../projects/studio/src/lib/primitives/button/index.ts","../../../projects/studio/src/lib/primitives/button-group/button-group.component.ts","../../../projects/studio/src/lib/primitives/card/card.component.ts","../../../projects/studio/src/lib/primitives/card/card.types.ts","../../../projects/studio/src/lib/primitives/chat/chat-message.component.ts","../../../projects/studio/src/lib/primitives/chat/chat-input.component.ts","../../../projects/studio/src/lib/primitives/chat/chat.component.ts","../../../projects/studio/src/lib/primitives/chat/chat.component.html","../../../projects/studio/src/lib/primitives/checkbox/checkbox.component.ts","../../../projects/studio/src/lib/primitives/checkbox/checkbox.component.html","../../../projects/studio/src/lib/utils/color-converter.ts","../../../projects/studio/src/lib/primitives/color-picker/default-presets.ts","../../../projects/studio/src/lib/primitives/color-picker/color-picker.component.ts","../../../projects/studio/src/lib/primitives/color-picker/color-picker.component.html","../../../projects/studio/src/lib/primitives/popover/popover.component.ts","../../../projects/studio/src/lib/primitives/popover/popover.component.html","../../../projects/studio/src/lib/primitives/color-picker-compact/color-picker-compact.component.ts","../../../projects/studio/src/lib/primitives/drawer/drawer.service.ts","../../../projects/studio/src/lib/primitives/drawer/drawer.component.ts","../../../projects/studio/src/lib/primitives/drawer/drawer.component.html","../../../projects/studio/src/lib/primitives/dropdown/dropdown.component.ts","../../../projects/studio/src/lib/primitives/input/input.component.ts","../../../projects/studio/src/lib/primitives/input/input.component.html","../../../projects/studio/src/lib/primitives/menu/menu.component.ts","../../../projects/studio/src/lib/primitives/menu/menu.component.html","../../../projects/studio/src/lib/primitives/phone-input/phone-input.component.ts","../../../projects/studio/src/lib/primitives/phone-input/phone-input.component.html","../../../projects/studio/src/lib/primitives/modal/modal.component.ts","../../../projects/studio/src/lib/primitives/navbar/navbar.component.ts","../../../projects/studio/src/lib/primitives/navbar/navbar.component.html","../../../projects/studio/src/lib/primitives/radio-button/radio-button.component.ts","../../../projects/studio/src/lib/primitives/radio-button/radio-button.component.html","../../../projects/studio/src/lib/primitives/select/select.component.ts","../../../projects/studio/src/lib/primitives/select/select.component.html","../../../projects/studio/src/lib/primitives/sidebar/sidebar.component.ts","../../../projects/studio/src/lib/primitives/sidebar/sidebar.component.html","../../../projects/studio/src/lib/primitives/sidebar/sidebar.types.ts","../../../projects/studio/src/lib/primitives/sidebar/index.ts","../../../projects/studio/src/lib/primitives/switch/switch.component.ts","../../../projects/studio/src/lib/primitives/switch/index.ts","../../../projects/studio/src/lib/primitives/pagination/pagination.component.ts","../../../projects/studio/src/lib/primitives/pagination/pagination.types.ts","../../../projects/studio/src/lib/primitives/pagination/index.ts","../../../projects/studio/src/lib/primitives/table/table-column.directive.ts","../../../projects/studio/src/lib/primitives/table/table.component.ts","../../../projects/studio/src/lib/primitives/table/table.component.html","../../../projects/studio/src/lib/primitives/table/table.types.ts","../../../projects/studio/src/lib/primitives/tabs/tabs.component.ts","../../../projects/studio/src/lib/primitives/textarea/textarea.component.ts","../../../projects/studio/src/lib/primitives/textarea/textarea.component.html","../../../projects/studio/src/lib/primitives/toast/toast.service.ts","../../../projects/studio/src/lib/primitives/toast/toast.component.ts","../../../projects/studio/src/lib/primitives/tooltip/tooltip.component.ts","../../../projects/studio/src/lib/primitives/confirm-dialog/confirm-dialog.service.ts","../../../projects/studio/src/lib/primitives/confirm-dialog/confirm-dialog.component.ts","../../../projects/studio/src/lib/primitives/index.ts","../../../projects/studio/src/lib/composites/button-toggle-group/button-toggle-group.component.ts","../../../projects/studio/src/lib/composites/inspector/inspector.component.ts","../../../projects/studio/src/lib/composites/inspector/inspector.component.html","../../../projects/studio/src/lib/composites/theme-switch/theme-switch.component.ts","../../../projects/studio/src/lib/composites/theme-switch/index.ts","../../../projects/studio/src/lib/composites/index.ts","../../../projects/studio/src/lib/education/index.ts","../../../projects/studio/src/lib/directives/mask/mask-engine.ts","../../../projects/studio/src/lib/directives/mask/mask-presets.ts","../../../projects/studio/src/lib/directives/mask/mask.directive.ts","../../../projects/studio/src/public-api.ts","../../../projects/studio/src/eduboxpro-studio.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\n/**\n * Theme mode: light or dark\n */\nexport type ThemeMode = 'light' | 'dark';\n\n/**\n * Color configuration with hover and active states\n */\nexport interface ColorConfig {\n base?: string;\n hover?: string;\n active?: string;\n bg?: string;\n}\n\n/**\n * Theme configuration interface\n */\nexport interface StudioThemeConfig {\n /**\n * Theme mode (default: 'light')\n */\n mode?: ThemeMode;\n\n /**\n * Color tokens override with hover/active states\n */\n colors?: {\n primary?: ColorConfig | string;\n secondary?: ColorConfig | string;\n success?: ColorConfig | string;\n error?: ColorConfig | string;\n warning?: ColorConfig | string;\n info?: ColorConfig | string;\n bg?: {\n primary?: string;\n secondary?: string;\n tertiary?: string;\n };\n text?: {\n primary?: string;\n secondary?: string;\n tertiary?: string;\n inverse?: string;\n };\n border?: {\n primary?: string;\n secondary?: string;\n };\n };\n\n /**\n * Typography tokens override\n */\n typography?: {\n fontFamily?: string;\n fontMono?: string;\n /**\n * Google Fonts configuration\n * Automatically loads fonts from Google Fonts\n */\n googleFonts?: Array<{\n family: string;\n weights?: number[];\n display?: 'auto' | 'block' | 'swap' | 'fallback' | 'optional';\n }>;\n fontSize?: {\n xs?: string;\n sm?: string;\n base?: string;\n lg?: string;\n xl?: string;\n '2xl'?: string;\n };\n fontWeight?: {\n normal?: number;\n medium?: number;\n semibold?: number;\n bold?: number;\n };\n lineHeight?: {\n tight?: number;\n normal?: number;\n relaxed?: number;\n };\n };\n\n /**\n * Spacing tokens override\n */\n spacing?: {\n xs?: string;\n sm?: string;\n md?: string;\n lg?: string;\n xl?: string;\n '2xl'?: string;\n };\n\n /**\n * Border radius tokens override\n */\n borderRadius?: {\n none?: string;\n sm?: string;\n md?: string;\n lg?: string;\n xl?: string;\n full?: string;\n };\n\n /**\n * Shadow tokens override\n */\n shadows?: {\n sm?: string;\n md?: string;\n lg?: string;\n xl?: string;\n };\n\n /**\n * Transition tokens override\n */\n transitions?: {\n fast?: string;\n base?: string;\n slow?: string;\n };\n\n /**\n * Z-index tokens override\n */\n zIndex?: {\n dropdown?: number;\n sticky?: number;\n fixed?: number;\n modalBackdrop?: number;\n modal?: number;\n popover?: number;\n tooltip?: number;\n };\n}\n\n/**\n * Button component defaults configuration\n */\nexport interface ButtonDefaultsConfig {\n variant?: 'solid' | 'outline' | 'ghost';\n size?: 'sm' | 'md' | 'lg';\n color?: 'primary' | 'secondary' | 'success' | 'error' | 'warning';\n radius?: 'none' | 'sm' | 'md' | 'lg' | 'xl' | 'full';\n shadow?: 'none' | 'sm' | 'md' | 'lg';\n compact?: boolean;\n}\n\n/**\n * Badge component defaults configuration\n */\nexport interface BadgeDefaultsConfig {\n variant?: 'solid' | 'outline' | 'soft' | 'dot';\n size?: 'sm' | 'md' | 'lg';\n color?: 'primary' | 'secondary' | 'success' | 'error' | 'warning' | 'info' | 'neutral';\n radius?: 'sm' | 'md' | 'lg' | 'full';\n}\n\n/**\n * Switch component defaults configuration\n */\nexport interface SwitchDefaultsConfig {\n size?: 'sm' | 'md' | 'lg';\n color?: 'primary' | 'secondary' | 'success';\n}\n\n/**\n * Input component defaults configuration\n */\nexport interface InputDefaultsConfig {\n variant?: 'outline' | 'filled' | 'underline';\n size?: 'sm' | 'md' | 'lg';\n radius?: 'none' | 'sm' | 'md' | 'lg' | 'full';\n floatingLabel?: boolean;\n clearable?: boolean;\n}\n\n/**\n * Checkbox component defaults configuration\n */\nexport interface CheckboxDefaultsConfig {\n size?: 'sm' | 'md' | 'lg';\n color?: 'primary' | 'secondary' | 'success' | 'error';\n variant?: 'default' | 'outlined' | 'filled';\n radius?: 'none' | 'sm' | 'md' | 'lg' | 'full';\n labelPosition?: 'left' | 'right';\n}\n\n/**\n * RadioButton component defaults configuration\n */\nexport interface RadioButtonDefaultsConfig {\n size?: 'sm' | 'md' | 'lg';\n color?: 'primary' | 'secondary' | 'success' | 'error';\n variant?: 'default' | 'outlined' | 'filled';\n radius?: 'none' | 'sm' | 'md' | 'lg' | 'full';\n labelPosition?: 'left' | 'right';\n}\n\n/**\n * Textarea component defaults configuration\n */\nexport interface TextareaDefaultsConfig {\n variant?: 'outline' | 'filled' | 'underline';\n size?: 'sm' | 'md' | 'lg';\n color?: 'primary' | 'secondary' | 'success' | 'error';\n radius?: 'none' | 'sm' | 'md' | 'lg' | 'full';\n rows?: number;\n autoResize?: boolean;\n resize?: 'none' | 'vertical' | 'horizontal' | 'both';\n showCharCount?: boolean;\n clearable?: boolean;\n}\n\n/**\n * ButtonGroup component defaults configuration\n */\nexport interface ButtonGroupDefaultsConfig {\n orientation?: 'horizontal' | 'vertical';\n size?: 'sm' | 'md' | 'lg';\n variant?: 'solid' | 'outline' | 'ghost';\n color?: 'primary' | 'secondary' | 'success' | 'error' | 'warning';\n radius?: 'none' | 'sm' | 'md' | 'lg' | 'xl' | 'full';\n}\n\n/**\n * ButtonToggleGroup component defaults configuration\n */\nexport interface ButtonToggleGroupDefaultsConfig {\n orientation?: 'horizontal' | 'vertical';\n size?: 'sm' | 'md' | 'lg';\n variant?: 'solid' | 'outline' | 'ghost';\n color?: 'primary' | 'secondary' | 'success' | 'error' | 'warning';\n radius?: 'none' | 'sm' | 'md' | 'lg' | 'xl' | 'full';\n shadow?: 'none' | 'sm' | 'md' | 'lg';\n}\n\n/**\n * Select component defaults configuration\n */\nexport interface SelectDefaultsConfig {\n variant?: 'outline' | 'filled' | 'underline';\n size?: 'sm' | 'md' | 'lg';\n radius?: 'none' | 'sm' | 'md' | 'lg' | 'full';\n searchable?: boolean;\n clearable?: boolean;\n maxHeight?: string;\n position?: 'auto' | 'top' | 'bottom';\n}\n\n/**\n * Drawer component defaults configuration\n */\nexport interface DrawerDefaultsConfig {\n position?: 'left' | 'right' | 'top' | 'bottom';\n size?: 'sm' | 'md' | 'lg' | 'xl' | 'full';\n modal?: boolean;\n closeOnEscape?: boolean;\n closeOnBackdropClick?: boolean;\n showHeader?: boolean;\n showCloseButton?: boolean;\n closeButtonPosition?: 'left' | 'right';\n swipeToClose?: boolean;\n swipeThreshold?: number;\n animationDuration?: number;\n animationEasing?: 'ease' | 'ease-in' | 'ease-out' | 'ease-in-out';\n disableAnimation?: boolean;\n shadow?: boolean;\n shadowSize?: 'sm' | 'md' | 'lg' | 'xl';\n radius?: 'none' | 'sm' | 'md' | 'lg';\n autoFocus?: boolean;\n restoreFocus?: boolean;\n blockScroll?: boolean;\n role?: 'dialog' | 'alertdialog';\n}\n\n/**\n * Sidebar component defaults configuration\n */\nexport interface SidebarDefaultsConfig {\n position?: 'left' | 'right';\n size?: 'sm' | 'md' | 'lg' | 'full';\n variant?: 'default' | 'minimal' | 'compact';\n modal?: boolean;\n collapsible?: boolean;\n defaultCollapsed?: boolean;\n closeOnNavigate?: boolean;\n closeOnBackdropClick?: boolean;\n closeOnEscape?: boolean;\n blockScroll?: boolean;\n swipeToClose?: boolean;\n showHeader?: boolean;\n showFooter?: boolean;\n showCloseButton?: boolean;\n}\n\n/**\n * ColorPicker component defaults configuration\n */\nexport interface ColorPickerDefaultsConfig {\n variant?: 'inline' | 'popover' | 'input';\n size?: 'sm' | 'md' | 'lg';\n format?: 'hex' | 'rgb' | 'hsl';\n showAlpha?: boolean;\n showPresets?: boolean;\n showFormatToggle?: boolean;\n showCopyButton?: boolean;\n}\n\n/**\n * Popover component defaults configuration\n */\nexport interface PopoverDefaultsConfig {\n position?: 'top' | 'bottom' | 'left' | 'right' | 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end' | 'left-start' | 'left-end' | 'right-start' | 'right-end';\n trigger?: 'click' | 'hover' | 'focus' | 'manual';\n variant?: 'default' | 'bordered' | 'shadow' | 'minimal';\n size?: 'sm' | 'md' | 'lg';\n animation?: 'fade' | 'scale' | 'slide' | 'none';\n}\n\n/**\n * Tooltip component defaults configuration\n */\nexport interface TooltipDefaultsConfig {\n position?: 'top' | 'bottom' | 'left' | 'right';\n trigger?: 'hover' | 'focus' | 'click';\n hoverDelay?: number;\n}\n\n/**\n * Dropdown component defaults configuration\n */\nexport interface DropdownDefaultsConfig {\n trigger?: 'click' | 'hover';\n position?: 'bottom-start' | 'bottom-end' | 'top-start' | 'top-end' | 'left-start' | 'right-start';\n width?: string;\n minWidth?: string;\n}\n\n/**\n * Tabs component defaults configuration\n */\nexport interface TabsDefaultsConfig {\n variant?: 'line' | 'pills' | 'enclosed';\n size?: 'sm' | 'md' | 'lg';\n orientation?: 'horizontal' | 'vertical';\n}\n\n/**\n * Modal component defaults configuration\n */\nexport interface ModalDefaultsConfig {\n size?: 'sm' | 'md' | 'lg' | 'xl' | 'full';\n variant?: 'default' | 'bordered' | 'minimal';\n animation?: 'fade' | 'scale' | 'slide-down' | 'none';\n position?: 'center' | 'top' | 'bottom';\n closeOnOverlayClick?: boolean;\n closeOnEscape?: boolean;\n showHeader?: boolean;\n showFooter?: boolean;\n showCloseButton?: boolean;\n}\n\n/**\n * BottomNavigation component defaults configuration\n */\nexport interface BottomNavigationDefaultsConfig {\n variant?: 'default' | 'filled' | 'minimal';\n showLabels?: 'always' | 'selected' | 'never';\n size?: 'sm' | 'md' | 'lg';\n elevation?: 'none' | 'sm' | 'md' | 'lg';\n blur?: boolean;\n hideOnDesktop?: boolean;\n}\n\n/**\n * Card component defaults configuration\n */\nexport interface CardDefaultsConfig {\n variant?: 'elevated' | 'filled' | 'outlined' | 'ghost';\n size?: 'sm' | 'md' | 'lg';\n color?: 'default' | 'primary' | 'secondary' | 'success' | 'error' | 'warning' | 'neutral';\n radius?: 'none' | 'sm' | 'md' | 'lg' | 'xl';\n shadow?: 'none' | 'sm' | 'md' | 'lg' | 'xl';\n padding?: 'none' | 'sm' | 'md' | 'lg';\n}\n\n/**\n * Table component defaults configuration\n */\nexport interface TableDefaultsConfig {\n variant?: 'default' | 'striped' | 'bordered' | 'minimal';\n density?: 'compact' | 'comfortable' | 'spacious';\n hoverable?: boolean;\n stickyHeader?: boolean;\n}\n\n/**\n * Components defaults configuration\n */\nexport interface ComponentsConfig {\n button?: ButtonDefaultsConfig;\n badge?: BadgeDefaultsConfig;\n switch?: SwitchDefaultsConfig;\n input?: InputDefaultsConfig;\n checkbox?: CheckboxDefaultsConfig;\n radioButton?: RadioButtonDefaultsConfig;\n textarea?: TextareaDefaultsConfig;\n buttonGroup?: ButtonGroupDefaultsConfig;\n buttonToggleGroup?: ButtonToggleGroupDefaultsConfig;\n select?: SelectDefaultsConfig;\n drawer?: DrawerDefaultsConfig;\n sidebar?: SidebarDefaultsConfig;\n colorPicker?: ColorPickerDefaultsConfig;\n popover?: PopoverDefaultsConfig;\n tooltip?: TooltipDefaultsConfig;\n dropdown?: DropdownDefaultsConfig;\n tabs?: TabsDefaultsConfig;\n modal?: ModalDefaultsConfig;\n bottomNavigation?: BottomNavigationDefaultsConfig;\n card?: CardDefaultsConfig;\n table?: TableDefaultsConfig;\n}\n\n/**\n * Main Studio configuration interface\n */\nexport interface StudioConfig {\n /**\n * Theme configuration\n */\n theme?: StudioThemeConfig;\n\n /**\n * Components default values configuration\n */\n components?: ComponentsConfig;\n}\n\n/**\n * Injection token for Studio configuration\n */\nexport const STUDIO_CONFIG = new InjectionToken<StudioConfig>('STUDIO_CONFIG', {\n providedIn: 'root',\n factory: () => ({})\n});\n","/**\n * Utility for loading Google Fonts dynamically\n */\n\n/**\n * Load a Google Font dynamically\n * @param fontFamily - Font family name (e.g., 'Inter', 'Poppins')\n * @param weights - Array of font weights to load (default: [400, 500, 600, 700])\n * @param display - Font display strategy (default: 'swap')\n *\n * @example\n * loadGoogleFont('Inter', [400, 500, 600, 700]);\n * loadGoogleFont('Poppins', [300, 400, 600]);\n */\nexport function loadGoogleFont(\n fontFamily: string,\n weights: number[] = [400, 500, 600, 700],\n display: 'auto' | 'block' | 'swap' | 'fallback' | 'optional' = 'swap'\n): void {\n if (typeof document === 'undefined') {\n return;\n }\n\n const fontId = `google-font-${fontFamily.toLowerCase().replace(/\\s+/g, '-')}`;\n if (document.getElementById(fontId)) {\n return;\n }\n\n const preconnect1 = document.createElement('link');\n preconnect1.rel = 'preconnect';\n preconnect1.href = 'https://fonts.googleapis.com';\n\n const preconnect2 = document.createElement('link');\n preconnect2.rel = 'preconnect';\n preconnect2.href = 'https://fonts.gstatic.com';\n preconnect2.crossOrigin = 'anonymous';\n\n const fontLink = document.createElement('link');\n fontLink.id = fontId;\n fontLink.rel = 'stylesheet';\n\n const weightsParam = weights.join(';');\n fontLink.href = `https://fonts.googleapis.com/css2?family=${fontFamily.replace(/\\s+/g, '+')}:wght@${weightsParam}&display=${display}`;\n\n const head = document.head || document.getElementsByTagName('head')[0];\n if (!head.querySelector('link[href*=\"fonts.googleapis.com\"]')) {\n head.appendChild(preconnect1);\n head.appendChild(preconnect2);\n }\n head.appendChild(fontLink);\n}\n\n/**\n * Load multiple Google Fonts at once\n * @param fonts - Array of font configurations\n *\n * @example\n * loadGoogleFonts([\n * { family: 'Inter', weights: [400, 500, 600, 700] },\n * { family: 'Roboto Mono', weights: [400, 500] }\n * ]);\n */\nexport function loadGoogleFonts(fonts: Array<{\n family: string;\n weights?: number[];\n display?: 'auto' | 'block' | 'swap' | 'fallback' | 'optional';\n}>): void {\n fonts.forEach(font => {\n loadGoogleFont(font.family, font.weights, font.display);\n });\n}\n","import { Injectable, inject, signal, effect } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { StudioConfig, StudioThemeConfig, ThemeMode, ColorConfig } from './studio.config';\nimport { loadGoogleFonts } from '../utils/font-loader';\n\nconst THEME_STORAGE_KEY = 'studio-theme-mode';\n\n@Injectable({ providedIn: 'root' })\nexport class StudioConfigService {\n private readonly document = inject(DOCUMENT);\n\n readonly config = signal<StudioConfig>({});\n readonly themeMode = signal<ThemeMode>('light');\n\n constructor() {\n // Load saved theme from localStorage\n this.loadSavedTheme();\n\n effect(() => {\n this.applyTheme(this.config().theme);\n });\n }\n\n configure(config: StudioConfig): void {\n this.config.set(config);\n // Only set theme mode from config if no saved preference exists\n if (config.theme?.mode && !this.hasSavedTheme()) {\n this.setThemeMode(config.theme.mode, false);\n }\n }\n\n setThemeMode(mode: ThemeMode, persist = true): void {\n this.themeMode.set(mode);\n this.document.documentElement.setAttribute('data-theme', mode);\n\n // Toggle .dark class for Tailwind CSS compatibility\n if (mode === 'dark') {\n this.document.documentElement.classList.add('dark');\n } else {\n this.document.documentElement.classList.remove('dark');\n }\n\n if (persist) {\n this.saveTheme(mode);\n }\n }\n\n toggleTheme(): void {\n const newMode = this.themeMode() === 'light' ? 'dark' : 'light';\n this.setThemeMode(newMode);\n }\n\n private loadSavedTheme(): void {\n try {\n const savedTheme = localStorage.getItem(THEME_STORAGE_KEY) as ThemeMode | null;\n if (savedTheme && (savedTheme === 'light' || savedTheme === 'dark')) {\n this.setThemeMode(savedTheme, false);\n }\n } catch {\n // localStorage not available (SSR or private browsing)\n }\n }\n\n private saveTheme(mode: ThemeMode): void {\n try {\n localStorage.setItem(THEME_STORAGE_KEY, mode);\n } catch {\n // localStorage not available\n }\n }\n\n private hasSavedTheme(): boolean {\n try {\n return localStorage.getItem(THEME_STORAGE_KEY) !== null;\n } catch {\n return false;\n }\n }\n\n updateTheme(theme: Partial<StudioThemeConfig>): void {\n this.config.update(cfg => ({\n ...cfg,\n theme: { ...cfg.theme, ...theme }\n }));\n }\n\n reset(): void {\n this.config.set({});\n this.setThemeMode('light');\n }\n\n private applyTheme(theme?: StudioThemeConfig): void {\n if (!theme) return;\n\n const root = this.document.documentElement;\n\n if (theme.colors) {\n this.applyColorTokens(root, theme.colors);\n }\n\n if (theme.typography) {\n // Load Google Fonts if configured\n if (theme.typography.googleFonts) {\n loadGoogleFonts(theme.typography.googleFonts);\n }\n\n if (theme.typography.fontFamily) {\n root.style.setProperty('--studio-font-family', theme.typography.fontFamily);\n }\n if (theme.typography.fontMono) {\n root.style.setProperty('--studio-font-mono', theme.typography.fontMono);\n }\n if (theme.typography.fontSize) {\n this.applyTokens(root, 'studio-font-size', theme.typography.fontSize);\n }\n if (theme.typography.fontWeight) {\n this.applyTokens(root, 'studio-font-weight', theme.typography.fontWeight);\n }\n if (theme.typography.lineHeight) {\n this.applyTokens(root, 'studio-line-height', theme.typography.lineHeight);\n }\n }\n\n if (theme.spacing) {\n this.applyTokens(root, 'studio-spacing', theme.spacing);\n }\n\n if (theme.borderRadius) {\n this.applyTokens(root, 'studio-radius', theme.borderRadius);\n }\n\n if (theme.shadows) {\n this.applyTokens(root, 'studio-shadow', theme.shadows);\n }\n\n if (theme.transitions) {\n this.applyTokens(root, 'studio-transition', theme.transitions);\n }\n\n if (theme.zIndex) {\n this.applyZIndexTokens(root, theme.zIndex);\n }\n }\n\n private applyColorTokens(\n root: HTMLElement,\n colors: NonNullable<StudioThemeConfig['colors']>\n ): void {\n const brandColors = ['primary', 'secondary', 'success', 'error', 'warning', 'info'] as const;\n\n brandColors.forEach(colorName => {\n const colorValue = colors[colorName];\n if (!colorValue) return;\n\n if (typeof colorValue === 'string') {\n root.style.setProperty(`--studio-${colorName}`, colorValue);\n } else {\n const config = colorValue as ColorConfig;\n if (config.base) {\n root.style.setProperty(`--studio-${colorName}`, config.base);\n }\n if (config.hover) {\n root.style.setProperty(`--studio-${colorName}-hover`, config.hover);\n }\n if (config.active) {\n root.style.setProperty(`--studio-${colorName}-active`, config.active);\n }\n if (config.bg) {\n root.style.setProperty(`--studio-${colorName}-bg`, config.bg);\n }\n }\n });\n\n if (colors.bg) {\n this.applyTokens(root, 'studio-bg', colors.bg);\n }\n\n if (colors.text) {\n this.applyTokens(root, 'studio-text', colors.text);\n }\n\n if (colors.border) {\n this.applyTokens(root, 'studio-border', colors.border);\n }\n }\n\n private applyZIndexTokens(\n root: HTMLElement,\n zIndex: NonNullable<StudioThemeConfig['zIndex']>\n ): void {\n const zIndexMap: Record<string, string> = {\n dropdown: 'dropdown',\n sticky: 'sticky',\n fixed: 'fixed',\n modalBackdrop: 'modal-backdrop',\n modal: 'modal',\n popover: 'popover',\n tooltip: 'tooltip'\n };\n\n Object.entries(zIndex).forEach(([key, value]) => {\n if (value !== undefined && value !== null) {\n const cssKey = zIndexMap[key] || key;\n root.style.setProperty(`--studio-z-${cssKey}`, String(value));\n }\n });\n }\n\n private applyTokens(\n root: HTMLElement,\n prefix: string,\n tokens: Record<string, string | number>\n ): void {\n Object.entries(tokens).forEach(([key, value]) => {\n if (value !== undefined && value !== null) {\n root.style.setProperty(`--${prefix}-${key}`, String(value));\n }\n });\n }\n}\n","import { EnvironmentProviders, makeEnvironmentProviders, ENVIRONMENT_INITIALIZER, inject } from '@angular/core';\nimport { STUDIO_CONFIG, StudioConfig } from './studio.config';\nimport { StudioConfigService } from './studio.service';\n\n/**\n * Provide Studio configuration for the application\n *\n * @example\n * ```typescript\n * // app.config.ts\n * import { provideStudioConfig } from '@eduboxpro/studio/config';\n *\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideStudioConfig({\n * theme: {\n * mode: 'light',\n * colors: {\n * primary: '#3b82f6'\n * }\n * }\n * })\n * ]\n * };\n * ```\n */\nexport function provideStudioConfig(config: StudioConfig = {}): EnvironmentProviders {\n return makeEnvironmentProviders([\n {\n provide: STUDIO_CONFIG,\n useValue: config\n },\n {\n provide: ENVIRONMENT_INITIALIZER,\n multi: true,\n useValue: () => {\n const studioConfig = inject(StudioConfigService);\n const initialConfig = inject(STUDIO_CONFIG);\n studioConfig.configure(initialConfig);\n }\n }\n ]);\n}\n","/**\n * Configuration module\n * @module config\n */\n\nexport * from './studio.config';\nexport * from './studio.service';\nexport * from './provide-studio';\n","import { Component, ChangeDetectionStrategy, input, computed } from '@angular/core';\nimport { LucideAngularModule, icons } from 'lucide-angular';\n\n/**\n * Icon component with Lucide icons support\n *\n * @example\n * <studio-icon name=\"check\" size=\"24\" color=\"primary\" />\n */\n@Component({\n selector: 'studio-icon',\n standalone: true,\n imports: [LucideAngularModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[style.width.px]': 'size()',\n '[style.height.px]': 'size()',\n },\n template: `\n @if (lucideIcon(); as iconName) {\n <lucide-icon\n [name]=\"iconName\"\n [size]=\"size()\"\n [color]=\"computedColor()\"\n [strokeWidth]=\"strokeWidth()\"\n [absoluteStrokeWidth]=\"absoluteStrokeWidth()\"\n />\n }\n `,\n styles: [`\n :host {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n }\n `]\n})\nexport class IconComponent {\n name = input.required<string>();\n size = input<number>(24);\n color = input<'primary' | 'secondary' | 'success' | 'error' | 'warning' | 'inherit' | string>('inherit');\n strokeWidth = input<number>(2);\n absoluteStrokeWidth = input<boolean>(false);\n showFallback = input<boolean>(true);\n fallbackIcon = input<string>('help-circle');\n\n protected readonly icons = icons;\n\n protected lucideIcon = computed(() => {\n const iconName = this.name();\n\n if (iconName && (icons as any)[iconName]) {\n return iconName;\n }\n\n const pascalCaseName = this.kebabToPascalCase(iconName);\n if (pascalCaseName && (icons as any)[pascalCaseName]) {\n return pascalCaseName;\n }\n\n if (this.showFallback()) {\n const fallback = this.fallbackIcon();\n if ((icons as any)[fallback]) {\n return fallback;\n }\n const pascalCaseFallback = this.kebabToPascalCase(fallback);\n if (pascalCaseFallback && (icons as any)[pascalCaseFallback]) {\n return pascalCaseFallback;\n }\n }\n\n return null;\n });\n\n private kebabToPascalCase(str: string): string {\n return str\n .split('-')\n .map(word => word.charAt(0).toUpperCase() + word.slice(1))\n .join('');\n }\n\n protected computedColor = computed(() => {\n const colorValue = this.color();\n\n const colorMap: Record<string, string> = {\n 'primary': 'var(--studio-primary)',\n 'secondary': 'var(--studio-secondary)',\n 'success': 'var(--studio-success)',\n 'error': 'var(--studio-error)',\n 'warning': 'var(--studio-warning)',\n 'inherit': 'currentColor'\n };\n\n return colorMap[colorValue] || colorValue;\n });\n\n protected hostClasses = computed(() => {\n return ['studio-icon'];\n });\n}\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { LUCIDE_ICONS, LucideIconProvider } from 'lucide-angular';\nimport * as LucideIcons from 'lucide-angular';\n\nexport type IconPreset = 'minimal' | 'common' | 'full';\n\nexport interface StudioIconConfig {\n preset?: IconPreset;\n customIcons?: Record<string, any>;\n}\n\n// Минимальный набор - только для внутренних компонентов библиотеки\nconst MINIMAL_ICONS = {\n X: LucideIcons.X,\n ChevronDown: LucideIcons.ChevronDown,\n ChevronUp: LucideIcons.ChevronUp,\n ChevronLeft: LucideIcons.ChevronLeft,\n ChevronRight: LucideIcons.ChevronRight,\n Check: LucideIcons.Check,\n Loader2: LucideIcons.Loader2,\n Search: LucideIcons.Search,\n};\n\n// Расширенный набор - частоиспользуемые иконки для UI\nconst COMMON_ICONS = {\n ...MINIMAL_ICONS,\n ArrowRight: LucideIcons.ArrowRight,\n ArrowLeft: LucideIcons.ArrowLeft,\n Download: LucideIcons.Download,\n Upload: LucideIcons.Upload,\n Mail: LucideIcons.Mail,\n Phone: LucideIcons.Phone,\n Heart: LucideIcons.Heart,\n Star: LucideIcons.Star,\n Settings: LucideIcons.Settings,\n User: LucideIcons.User,\n Users: LucideIcons.Users,\n Trash2: LucideIcons.Trash2,\n Pen: LucideIcons.Pen,\n Edit2: LucideIcons.Edit2,\n Plus: LucideIcons.Plus,\n Minus: LucideIcons.Minus,\n Filter: LucideIcons.Filter,\n ExternalLink: LucideIcons.ExternalLink,\n Link: LucideIcons.Link,\n Copy: LucideIcons.Copy,\n Share2: LucideIcons.Share2,\n House: LucideIcons.House,\n Menu: LucideIcons.Menu,\n MoreVertical: LucideIcons.MoreVertical,\n MoreHorizontal: LucideIcons.MoreHorizontal,\n Bell: LucideIcons.Bell,\n Calendar: LucideIcons.Calendar,\n Clock: LucideIcons.Clock,\n Eye: LucideIcons.Eye,\n EyeOff: LucideIcons.EyeOff,\n Lock: LucideIcons.Lock,\n LockOpen: LucideIcons.LockOpen,\n LogIn: LucideIcons.LogIn,\n LogOut: LucideIcons.LogOut,\n CircleAlert: LucideIcons.CircleAlert,\n TriangleAlert: LucideIcons.TriangleAlert,\n Info: LucideIcons.Info,\n CircleCheck: LucideIcons.CircleCheck,\n CircleX: LucideIcons.CircleX,\n CircleQuestionMark: LucideIcons.CircleQuestionMark,\n File: LucideIcons.File,\n FileText: LucideIcons.FileText,\n Folder: LucideIcons.Folder,\n FolderOpen: LucideIcons.FolderOpen,\n Image: LucideIcons.Image,\n Save: LucideIcons.Save,\n Printer: LucideIcons.Printer,\n RefreshCw: LucideIcons.RefreshCw,\n RotateCw: LucideIcons.RotateCw,\n Loader: LucideIcons.Loader,\n ShoppingCart: LucideIcons.ShoppingCart,\n Sun: LucideIcons.Sun,\n Moon: LucideIcons.Moon,\n TextAlignStart: LucideIcons.TextAlignStart,\n TextAlignCenter: LucideIcons.TextAlignCenter,\n TextAlignEnd: LucideIcons.TextAlignEnd,\n TextAlignJustify: LucideIcons.TextAlignJustify,\n Bold: LucideIcons.Bold,\n Italic: LucideIcons.Italic,\n Underline: LucideIcons.Underline,\n Strikethrough: LucideIcons.Strikethrough,\n Grid3x3: LucideIcons.Grid3x3,\n List: LucideIcons.List,\n MessageSquare: LucideIcons.MessageSquare,\n Laptop: LucideIcons.Laptop,\n Globe: LucideIcons.Globe,\n Apple: LucideIcons.Apple,\n Circle: LucideIcons.Circle,\n};\n\n/**\n * Studio icon provider с поддержкой preset'ов\n *\n * @example\n * ```typescript\n * // Минимальный набор (только для компонентов библиотеки)\n * provideStudioIcons({ preset: 'minimal' });\n *\n * // Расширенный набор (рекомендуется)\n * provideStudioIcons({ preset: 'common' });\n *\n * // Все иконки Lucide (~1400 штук)\n * provideStudioIcons({ preset: 'full' });\n *\n * // С кастомными иконками\n * import { Zap, Wifi } from 'lucide-angular';\n * provideStudioIcons({\n * preset: 'common',\n * customIcons: { Zap, Wifi }\n * });\n * ```\n */\nexport function provideStudioIcons(config: StudioIconConfig = { preset: 'common' }): EnvironmentProviders {\n let icons: Record<string, any>;\n\n switch (config.preset) {\n case 'minimal':\n icons = MINIMAL_ICONS;\n break;\n case 'full':\n // Все иконки из lucide-angular (кроме служебных)\n icons = Object.keys(LucideIcons)\n .filter(key => !key.startsWith('Lucide') && !key.startsWith('LUCIDE'))\n .reduce((acc, key) => {\n acc[key] = (LucideIcons as any)[key];\n return acc;\n }, {} as Record<string, any>);\n break;\n case 'common':\n default:\n icons = COMMON_ICONS;\n break;\n }\n\n // Добавляем кастомные иконки\n if (config.customIcons) {\n icons = { ...icons, ...config.customIcons };\n }\n\n return makeEnvironmentProviders([\n {\n provide: LUCIDE_ICONS,\n multi: true,\n useValue: new LucideIconProvider(icons)\n }\n ]);\n}\n","/**\n * Checks if URL is safe for navigation\n *\n * @param url - URL to check\n * @returns true if URL is safe (http/https or relative)\n *\n * @example\n * ```typescript\n * isSafeUrl('https://example.com') // true\n * isSafeUrl('javascript:alert(1)') // false\n * isSafeUrl('/relative/path') // true\n * ```\n */\nexport function isSafeUrl(url: string): boolean {\n if (!url || typeof url !== 'string') {\n return false;\n }\n\n try {\n const parsed = new URL(url, window.location.origin);\n return ['http:', 'https:', ''].includes(parsed.protocol);\n } catch {\n return false;\n }\n}\n\n/**\n * Sanitize URL before using in navigation\n *\n * @param url - URL to sanitize\n * @returns Safe URL or '#' if URL is unsafe\n *\n * @example\n * ```typescript\n * sanitizeUrl('https://example.com') // 'https://example.com'\n * sanitizeUrl('javascript:alert(1)') // '#' (with console warning)\n * ```\n */\nexport function sanitizeUrl(url: string): string {\n if (!isSafeUrl(url)) {\n console.warn(`[Studio] Unsafe URL blocked: ${url}`);\n return '#';\n }\n return url;\n}\n","/**\n * Combines CSS classes, ignoring falsy values\n *\n * @param classes - Array of classes (strings, undefined, null, false)\n * @returns String with combined classes\n *\n * @example\n * ```typescript\n * classNames('btn', 'btn-primary') // 'btn btn-primary'\n * classNames('btn', isActive && 'active') // 'btn active' if isActive=true, else 'btn'\n * classNames('btn', undefined, null, false, 'large') // 'btn large'\n * ```\n */\nexport function classNames(...classes: (string | false | undefined | null)[]): string {\n return classes.filter(Boolean).join(' ');\n}\n","import { computed, Signal } from '@angular/core';\n\n/**\n * Creates computed signal with fallback chain: input → config → default\n *\n * @param inputSignal - User input signal\n * @param configSignal - Config value (can be undefined)\n * @param defaultValue - Fallback value\n * @returns Computed signal with resolved value\n *\n * @example\n * ```typescript\n * export class ButtonComponent {\n * private defaults = computed(() => this.configService.config().components?.button);\n *\n * variantInput = input<Variant | undefined>(undefined, { alias: 'variant' });\n *\n * variant = withConfigDefault(\n * this.variantInput,\n * computed(() => this.defaults()?.variant),\n * 'solid'\n * );\n * }\n * ```\n */\nexport function withConfigDefault<T>(\n inputSignal: Signal<T | undefined>,\n configSignal: Signal<T | undefined>,\n defaultValue: T\n): Signal<T> {\n return computed(() => {\n const inputValue = inputSignal();\n if (inputValue !== undefined) return inputValue;\n\n const configValue = configSignal();\n if (configValue !== undefined) return configValue;\n\n return defaultValue;\n });\n}\n","/**\n * @eduboxpro/studio - Utilities\n *\n * Helper functions and utilities for the Studio library\n */\n\nexport * from './url-validator';\nexport * from './class-names';\nexport * from './config-helpers';\nexport * from './font-loader';\n","import { Component, input, output, computed, inject, ChangeDetectionStrategy } from '@angular/core';\nimport { IconComponent } from '../icon';\nimport { StudioConfigService } from '../../config';\nimport { sanitizeUrl, classNames, withConfigDefault } from '../../utils';\nimport { BadgeVariant, BadgeSize, BadgeColor, BadgeRadius, BadgeIconPosition } from './badge.types';\n\n@Component({\n selector: 'studio-badge',\n standalone: true,\n imports: [IconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[attr.disabled]': 'disabled() ? \"\" : null',\n '[attr.href]': 'href()',\n '[attr.target]': 'href() ? target() : null',\n '[attr.rel]': 'href() && target() === \"_blank\" ? \"noopener noreferrer\" : null',\n '[style.display]': 'isVisible() ? null : \"none\"',\n '(click)': 'handleClick($event)'\n },\n template: `\n <span class=\"studio-badge__content\">\n @if (dot()) {\n <span\n class=\"studio-badge__dot\"\n [class]=\"'studio-badge__dot--' + (dotColor() || color())\"\n ></span>\n }\n @if (icon() && iconPosition() === 'left') {\n <studio-icon [name]=\"icon()!\" [size]=\"iconSize()\" />\n }\n <span class=\"studio-badge__text\">\n @if (displayValue()) {\n {{ displayValue() }}\n } @else {\n <ng-content />\n }\n </span>\n @if (icon() && iconPosition() === 'right') {\n <studio-icon [name]=\"icon()!\" [size]=\"iconSize()\" />\n }\n @if (removable()) {\n <button\n type=\"button\"\n class=\"studio-badge__remove\"\n (click)=\"handleRemove($event)\"\n aria-label=\"Remove\"\n >\n <studio-icon name=\"x\" [size]=\"iconSize()\" />\n </button>\n }\n </span>\n `,\n styleUrl: './badge.component.scss'\n})\nexport class BadgeComponent {\n private readonly configService = inject(StudioConfigService);\n private readonly badgeDefaults = computed(() => this.configService.config().components?.badge);\n\n variantInput = input<BadgeVariant | undefined>(undefined, { alias: 'variant' });\n sizeInput = input<BadgeSize | undefined>(undefined, { alias: 'size' });\n colorInput = input<BadgeColor | undefined>(undefined, { alias: 'color' });\n radiusInput = input<BadgeRadius | undefined>(undefined, { alias: 'radius' });\n\n variant = withConfigDefault(this.variantInput, computed(() => this.badgeDefaults()?.variant), 'solid');\n size = withConfigDefault(this.sizeInput, computed(() => this.badgeDefaults()?.size), 'md');\n color = withConfigDefault(this.colorInput, computed(() => this.badgeDefaults()?.color), 'primary');\n radius = withConfigDefault(this.radiusInput, computed(() => this.badgeDefaults()?.radius), 'full');\n\n icon = input<string>();\n iconPosition = input<BadgeIconPosition>('left');\n\n dot = input<boolean>(false);\n dotColor = input<BadgeColor>();\n\n removable = input<boolean>(false);\n removed = output<void>();\n\n href = input<string>();\n target = input<'_blank' | '_self' | '_parent' | '_top'>('_self');\n disabled = input<boolean>(false);\n clicked = output<MouseEvent>();\n\n value = input<string | number>();\n max = input<number>();\n showZero = input<boolean>(true);\n\n uppercase = input<boolean>(false);\n bold = input<boolean>(false);\n\n pulse = input<boolean>(false);\n autoColor = input<boolean>(false);\n\n protected iconSize = computed(() => {\n const sizeMap = { sm: 12, md: 14, lg: 16 };\n return sizeMap[this.size()];\n });\n\n protected displayValue = computed(() => {\n const val = this.value();\n if (val === undefined || val === null) return '';\n\n const numVal = typeof val === 'number' ? val : parseInt(val, 10);\n\n if (!isNaN(numVal)) {\n if (numVal === 0 && !this.showZero()) return '';\n\n const maxVal = this.max();\n if (maxVal !== undefined && numVal > maxVal) {\n return `${maxVal}+`;\n }\n\n return numVal.toString();\n }\n\n return val.toString();\n });\n\n protected isVisible = computed(() => {\n const val = this.value();\n if (val !== undefined && val !== null) {\n const numVal = typeof val === 'number' ? val : parseInt(val, 10);\n if (!isNaN(numVal) && numVal === 0 && !this.showZero()) {\n return false;\n }\n }\n return true;\n });\n\n protected hostClasses = computed(() => classNames(\n 'studio-badge',\n `studio-badge--${this.variant()}`,\n `studio-badge--${this.size()}`,\n `studio-badge--${this.color()}`,\n `studio-badge--radius-${this.radius()}`,\n this.disabled() && 'studio-badge--disabled',\n this.uppercase() && 'studio-badge--uppercase',\n this.bold() && 'studio-badge--bold',\n this.pulse() && 'studio-badge--pulse',\n this.href() && 'studio-badge--clickable'\n ));\n\n protected handleClick(event: MouseEvent): void {\n if (this.disabled()) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n\n const url = this.href();\n if (url) {\n const safeUrl = sanitizeUrl(url);\n if (safeUrl === '#') {\n return;\n }\n\n const target = this.target();\n if (target === '_blank') {\n window.open(safeUrl, '_blank', 'noopener,noreferrer');\n } else {\n window.location.href = safeUrl;\n }\n }\n\n this.clicked.emit(event);\n }\n\n protected handleRemove(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n if (this.disabled()) return;\n\n this.removed.emit();\n }\n}\n","/**\n * Badge component types\n */\n\nexport type BadgeVariant = 'solid' | 'outline' | 'soft' | 'dot';\nexport type BadgeSize = 'sm' | 'md' | 'lg';\nexport type BadgeColor = 'primary' | 'secondary' | 'success' | 'error' | 'warning' | 'info' | 'neutral';\nexport type BadgeRadius = 'sm' | 'md' | 'lg' | 'full';\nexport type BadgeIconPosition = 'left' | 'right';\n","/**\n * Badge component\n */\n\nexport * from './badge.component';\nexport * from './badge.types';\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n computed\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BadgeComponent, BadgeColor, BadgeVariant } from '../badge';\nimport { BadgeWrapperPosition, BadgeWrapperSize } from './badge-wrapper.types';\n\n/**\n * BadgeWrapper component - Wraps content with a positioned badge\n *\n * @example\n * <studio-badge-wrapper [count]=\"5\" color=\"error\">\n * <studio-button variant=\"ghost\">\n * <studio-icon name=\"bell\" />\n * </studio-button>\n * </studio-badge-wrapper>\n */\n@Component({\n selector: 'studio-badge-wrapper',\n standalone: true,\n imports: [CommonModule, BadgeComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()'\n },\n templateUrl: './badge-wrapper.component.html',\n styleUrl: './badge-wrapper.component.scss'\n})\nexport class BadgeWrapperComponent {\n // ========== Content ==========\n count = input<number | string>();\n content = input<string>();\n\n // ========== Badge style ==========\n variant = input<BadgeVariant>('solid');\n color = input<BadgeColor>('error');\n size = input<BadgeWrapperSize>('sm');\n\n // ========== Position ==========\n position = input<BadgeWrapperPosition>('top-right');\n\n // ========== Behavior ==========\n showZero = input<boolean>(false);\n max = input<number>(99);\n dot = input<boolean>(false);\n overlap = input<boolean>(false);\n\n // ========== Customization ==========\n class = input<string>('');\n\n // ========== Computed values ==========\n protected hostClasses = computed(() => {\n const classes = ['studio-badge-wrapper'];\n\n classes.push(`studio-badge-wrapper--${this.position()}`);\n classes.push(`studio-badge-wrapper--${this.size()}`);\n\n if (this.overlap()) classes.push('studio-badge-wrapper--overlap');\n if (this.dot()) classes.push('studio-badge-wrapper--dot');\n if (this.class()) classes.push(this.class());\n\n return classes.join(' ');\n });\n\n protected badgeContent = computed(() => {\n if (this.content()) return this.content();\n\n const count = this.count();\n if (count === undefined || count === null) return undefined;\n\n const numCount = typeof count === 'number' ? count : parseInt(count, 10);\n\n if (numCount === 0 && !this.showZero()) return undefined;\n\n const max = this.max();\n if (numCount > max) return `${max}+`;\n\n return count.toString();\n });\n\n protected shouldShowBadge = computed(() => {\n if (this.dot()) return true;\n return this.badgeContent() !== undefined;\n });\n}\n","<div class=\"studio-badge-wrapper__content\">\n <ng-content />\n</div>\n\n@if (shouldShowBadge()) {\n <studio-badge\n class=\"studio-badge-wrapper__badge\"\n [variant]=\"dot() ? 'dot' : variant()\"\n [color]=\"color()\"\n [size]=\"size()\"\n >\n {{ badgeContent() }}\n </studio-badge>\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n signal,\n inject,\n effect,\n OnInit,\n OnDestroy,\n PLATFORM_ID\n} from '@angular/core';\nimport { isPlatformBrowser, CommonModule } from '@angular/common';\nimport { Router, RouterModule, NavigationEnd, IsActiveMatchOptions } from '@angular/router';\nimport { filter } from 'rxjs/operators';\nimport { Subscription } from 'rxjs';\nimport { IconComponent } from '../icon';\nimport { BadgeComponent } from '../badge';\nimport {\n BottomNavigationItem,\n BottomNavigationVariant,\n BottomNavigationLabelMode,\n BottomNavigationFabPosition,\n BottomNavigationSize\n} from './bottom-navigation.types';\n\n/**\n * Bottom Navigation component - Mobile-first navigation component\n *\n * @example\n * <studio-bottom-navigation\n * [items]=\"navItems\"\n * variant=\"default\"\n * showLabels=\"always\"\n * (itemClicked)=\"handleClick($event)\"\n * />\n */\n@Component({\n selector: 'studio-bottom-navigation',\n standalone: true,\n imports: [CommonModule, RouterModule, IconComponent, BadgeComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[attr.role]': '\"navigation\"',\n '[attr.aria-label]': 'ariaLabel()'\n },\n templateUrl: './bottom-navigation.component.html',\n styleUrl: './bottom-navigation.component.scss'\n})\nexport class BottomNavigationComponent implements OnInit, OnDestroy {\n private readonly router = inject(Router);\n private readonly platformId = inject(PLATFORM_ID);\n\n // ========== Items ==========\n items = input.required<BottomNavigationItem[]>();\n activeItem = input<string>();\n\n // ========== Visual ==========\n variant = input<BottomNavigationVariant>('default');\n showLabels = input<BottomNavigationLabelMode>('always');\n size = input<BottomNavigationSize>('md');\n elevation = input<'none' | 'sm' | 'md' | 'lg'>('sm');\n blur = input<boolean>(false);\n\n // ========== FAB ==========\n showFab = input<boolean>(false);\n fabIcon = input<string>('plus');\n fabPosition = input<BottomNavigationFabPosition>('center');\n fabAriaLabel = input<string>();\n\n // ========== Behavior ==========\n fixed = input<boolean>(false);\n hideOnScroll = input<boolean>(false);\n scrollThreshold = input<number>(10);\n hideOnDesktop = input<boolean>(false);\n\n // ========== Gestures ==========\n enableSwipeGestures = input<boolean>(false);\n swipeThreshold = input<number>(50);\n enableHapticFeedback = input<boolean>(false);\n\n // ========== Router ==========\n routerLinkActiveOptions = input<IsActiveMatchOptions>({\n paths: 'exact',\n queryParams: 'exact',\n fragment: 'ignored',\n matrixParams: 'ignored'\n });\n\n // ========== Accessibility ==========\n ariaLabel = input<string>('Bottom navigation');\n\n // ========== Customization ==========\n class = input<string>('');\n\n // ========== Outputs ==========\n activeItemChange = output<string>();\n itemClicked = output<BottomNavigationItem>();\n fabClicked = output<void>();\n swipedLeft = output<void>();\n swipedRight = output<void>();\n\n // ========== State ==========\n protected isHidden = signal<boolean>(false);\n\n private lastScrollY = 0;\n private routerSubscription?: Subscription;\n private touchStartX = 0;\n private touchStartY = 0;\n private isSwiping = false;\n\n protected hostClasses = computed(() => {\n const classes = ['studio-bottom-navigation'];\n\n classes.push(`studio-bottom-navigation--${this.variant()}`);\n classes.push(`studio-bottom-navigation--${this.size()}`);\n classes.push(`studio-bottom-navigation--labels-${this.showLabels()}`);\n\n if (this.elevation() !== 'none') {\n classes.push(`studio-bottom-navigation--elevation-${this.elevation()}`);\n }\n\n if (this.blur()) classes.push('studio-bottom-navigation--blur');\n if (this.showFab()) classes.push('studio-bottom-navigation--has-fab');\n if (this.hideOnDesktop()) classes.push('studio-bottom-navigation--hide-desktop');\n if (!this.fixed()) classes.push('studio-bottom-navigation--relative');\n if (this.isHidden()) classes.push('studio-bottom-navigation--hidden');\n if (this.class()) classes.push(this.class());\n\n return classes.join(' ');\n });\n\n protected visibleItems = computed(() =>\n this.items().filter(item => item.visible !== false)\n );\n\n protected centerIndex = computed(() =>\n Math.floor(this.visibleItems().length / 2)\n );\n\n protected iconSize = computed(() => {\n const sizes: Record<BottomNavigationSize, number> = {\n sm: 20,\n md: 24,\n lg: 28\n };\n return sizes[this.size()];\n });\n\n ngOnInit(): void {\n if (isPlatformBrowser(this.platformId)) {\n this.routerSubscription = this.router.events\n .pipe(filter(event => event instanceof NavigationEnd))\n .subscribe(() => {});\n\n if (this.hideOnScroll()) {\n window.addEventListener('scroll', this.handleScroll, { passive: true });\n }\n }\n }\n\n ngOnDestroy(): void {\n this.routerSubscription?.unsubscribe();\n\n if (isPlatformBrowser(this.platformId) && this.hideOnScroll()) {\n window.removeEventListener('scroll', this.handleScroll);\n }\n }\n\n private handleScroll = (): void => {\n const currentScrollY = window.scrollY;\n\n if (Math.abs(currentScrollY - this.lastScrollY) < this.scrollThreshold()) {\n return;\n }\n\n if (currentScrollY > this.lastScrollY && currentScrollY > 100) {\n this.isHidden.set(true);\n } else {\n this.isHidden.set(false);\n }\n\n this.lastScrollY = currentScrollY;\n };\n\n protected isItemActive(item: BottomNavigationItem): boolean {\n if (this.activeItem()) {\n return item.id === this.activeItem();\n }\n\n if (item.routerLink && isPlatformBrowser(this.platformId)) {\n const url = Array.isArray(item.routerLink)\n ? item.routerLink.join('/')\n : item.routerLink;\n return this.router.isActive(url, this.routerLinkActiveOptions());\n }\n\n return false;\n }\n\n protected shouldShowLabel(item: BottomNavigationItem): boolean {\n const mode = this.showLabels();\n if (mode === 'never') return false;\n if (mode === 'always') return true;\n if (mode === 'selected') return this.isItemActive(item);\n return true;\n }\n\n protected onItemClick(item: BottomNavigationItem, event: Event): void {\n if (item.disabled) {\n event.preventDefault();\n return;\n }\n\n this.triggerHapticFeedback('light');\n\n if (item.command) {\n item.command(item);\n }\n\n this.activeItemChange.emit(item.id);\n this.itemClicked.emit(item);\n }\n\n protected onFabClick(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n this.triggerHapticFeedback('medium');\n this.fabClicked.emit();\n }\n\n protected onTouchStart(event: TouchEvent): void {\n if (!this.enableSwipeGestures()) return;\n\n const touch = event.touches[0];\n this.touchStartX = touch.clientX;\n this.touchStartY = touch.clientY;\n this.isSwiping = false;\n }\n\n protected onTouchMove(event: TouchEvent): void {\n if (!this.enableSwipeGestures()) return;\n\n const touch = event.touches[0];\n const deltaX = Math.abs(touch.clientX - this.touchStartX);\n const deltaY = Math.abs(touch.clientY - this.touchStartY);\n\n if (deltaX > deltaY && deltaX > 10) {\n this.isSwiping = true;\n }\n }\n\n protected onTouchEnd(event: TouchEvent): void {\n if (!this.enableSwipeGestures() || !this.isSwiping) return;\n\n const touch = event.changedTouches[0];\n const deltaX = touch.clientX - this.touchStartX;\n\n if (Math.abs(deltaX) > this.swipeThreshold()) {\n if (deltaX > 0) {\n this.triggerHapticFeedback('light');\n this.swipedRight.emit();\n } else {\n this.triggerHapticFeedback('light');\n this.swipedLeft.emit();\n }\n }\n\n this.isSwiping = false;\n }\n\n private triggerHapticFeedback(style: 'light' | 'medium' | 'heavy' = 'light'): void {\n if (!this.enableHapticFeedback() || !isPlatformBrowser(this.platformId)) return;\n\n if ('vibrate' in navigator) {\n const patterns: Record<string, number | number[]> = {\n light: 10,\n medium: 20,\n heavy: [30, 10, 30]\n };\n navigator.vibrate(patterns[style]);\n }\n }\n}\n","<div\n class=\"bottom-navigation__container\"\n (touchstart)=\"onTouchStart($event)\"\n (touchmove)=\"onTouchMove($event)\"\n (touchend)=\"onTouchEnd($event)\"\n>\n <ng-content select=\"[bottomNavLeft]\" />\n\n <div class=\"bottom-navigation__items\">\n @for (item of visibleItems(); track item.id) {\n @if (!showFab() || fabPosition() !== 'center' || $index !== centerIndex()) {\n <a\n class=\"bottom-navigation__item\"\n [class.bottom-navigation__item--active]=\"isItemActive(item)\"\n [class.bottom-navigation__item--disabled]=\"item.disabled\"\n [routerLink]=\"item.routerLink || null\"\n [queryParams]=\"item.queryParams\"\n [attr.href]=\"item.href || null\"\n [attr.aria-current]=\"isItemActive(item) ? 'page' : null\"\n [attr.aria-disabled]=\"item.disabled || null\"\n (click)=\"onItemClick(item, $event)\"\n >\n <div class=\"bottom-navigation__icon-wrapper\">\n <studio-icon\n [name]=\"item.icon\"\n [size]=\"iconSize()\"\n class=\"bottom-navigation__icon\"\n />\n\n @if (item.badge) {\n <studio-badge\n [value]=\"item.badge\"\n [color]=\"item.badgeColor || 'primary'\"\n size=\"sm\"\n class=\"bottom-navigation__badge\"\n />\n }\n </div>\n\n @if (shouldShowLabel(item)) {\n <span class=\"bottom-navigation__label\">{{ item.label }}</span>\n }\n </a>\n } @else {\n <div class=\"bottom-navigation__fab-spacer\"></div>\n }\n }\n </div>\n\n <ng-content select=\"[bottomNavRight]\" />\n\n @if (showFab()) {\n <button\n class=\"bottom-navigation__fab\"\n [class.bottom-navigation__fab--center]=\"fabPosition() === 'center'\"\n [class.bottom-navigation__fab--end]=\"fabPosition() === 'end'\"\n [attr.aria-label]=\"fabAriaLabel() || 'Action button'\"\n (click)=\"onFabClick($event)\"\n >\n <studio-icon\n [name]=\"fabIcon()\"\n [size]=\"24\"\n />\n </button>\n }\n</div>\n","import { Component, input, output, computed, inject, ChangeDetectionStrategy } from '@angular/core';\nimport { IconComponent } from '../icon';\nimport { StudioConfigService } from '../../config';\nimport { sanitizeUrl, classNames, withConfigDefault } from '../../utils';\n\n/**\n * Button component with multiple variants, sizes, colors and states\n *\n * @example\n * <studio-button variant=\"solid\" color=\"primary\" (clicked)=\"onClick()\">\n * Click me\n * </studio-button>\n */\n@Component({\n selector: 'studio-button',\n standalone: true,\n imports: [IconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[attr.disabled]': 'disabled() || loading() ? \"\" : null',\n '[attr.type]': 'href() ? null : type()',\n '[attr.href]': 'href()',\n '[attr.target]': 'href() ? target() : null',\n '[attr.rel]': 'href() && target() === \"_blank\" ? \"noopener noreferrer\" : null',\n '[attr.aria-label]': 'ariaLabel()',\n '(click)': 'handleClick($event)'\n },\n template: `\n <span class=\"studio-button__content\">\n @if (loading()) {\n <studio-icon\n name=\"loader-2\"\n [size]=\"iconSize()\"\n class=\"studio-button__spinner\"\n />\n }\n @if (!loading() && icon() && iconPosition() === 'left') {\n <studio-icon [name]=\"icon()!\" [size]=\"iconSize()\" />\n }\n @if (iconPosition() !== 'only' && !loading()) {\n <ng-content />\n }\n @if (!loading() && icon() && iconPosition() === 'right') {\n <studio-icon [name]=\"icon()!\" [size]=\"iconSize()\" />\n }\n @if (!loading() && icon() && iconPosition() === 'only') {\n <studio-icon [name]=\"icon()!\" [size]=\"iconSize()\" />\n }\n @if (loading() && iconPosition() === 'only') {\n } @else if (loading()) {\n <span>{{ loadingText() }}</span>\n }\n @if (badge() !== undefined && badge() !== null && badge() !== '') {\n <span class=\"studio-button__badge studio-button__badge--{{ badgeColor() }}\">\n {{ badge() }}\n </span>\n }\n </span>\n `,\n styleUrl: './button.component.scss'\n})\nexport class ButtonComponent {\n private readonly configService = inject(StudioConfigService);\n private readonly buttonDefaults = computed(() => this.configService.config().components?.button);\n\n variantInput = input<'solid' | 'outline' | 'ghost' | undefined>(undefined, { alias: 'variant' });\n sizeInput = input<'sm' | 'md' | 'lg' | undefined>(undefined, { alias: 'size' });\n colorInput = input<'primary' | 'secondary' | 'success' | 'error' | 'warning' | undefined>(undefined, { alias: 'color' });\n radiusInput = input<'none' | 'sm' | 'md' | 'lg' | 'xl' | 'full' | undefined>(undefined, { alias: 'radius' });\n shadowInput = input<'none' | 'sm' | 'md' | 'lg' | undefined>(undefined, { alias: 'shadow' });\n compactInput = input<boolean | undefined>(undefined, { alias: 'compact' });\n\n variant = withConfigDefault(this.variantInput, computed(() => this.buttonDefaults()?.variant), 'solid');\n size = withConfigDefault(this.sizeInput, computed(() => this.buttonDefaults()?.size), 'md');\n color = withConfigDefault(this.colorInput, computed(() => this.buttonDefaults()?.color), 'primary');\n radius = withConfigDefault(this.radiusInput, computed(() => this.buttonDefaults()?.radius), 'sm');\n shadow = withConfigDefault(this.shadowInput, computed(() => this.buttonDefaults()?.shadow), 'none');\n compact = withConfigDefault(this.compactInput, computed(() => this.buttonDefaults()?.compact), false);\n\n disabled = input<boolean>(false);\n loading = input<boolean>(false);\n loadingText = input<string>('Loading...');\n fullWidth = input<boolean>(false);\n type = input<'button' | 'submit' | 'reset'>('button');\n icon = input<string>();\n iconPosition = input<'left' | 'right' | 'only'>('left');\n href = input<string>();\n target = input<'_blank' | '_self' | '_parent' | '_top'>('_self');\n badge = input<string | number>();\n badgeColor = input<'primary' | 'error' | 'warning'>('error');\n ariaLabel = input<string>();\n\n clicked = output<MouseEvent>();\n\n protected iconSize = computed(() => {\n const sizeMap = { sm: 16, md: 18, lg: 20 };\n return sizeMap[this.size()];\n });\n\n protected hostClasses = computed(() => classNames(\n 'studio-button',\n `studio-button--${this.variant()}`,\n `studio-button--${this.size()}`,\n `studio-button--${this.color()}`,\n `studio-button--radius-${this.radius()}`,\n `studio-button--shadow-${this.shadow()}`,\n this.compact() && 'studio-button--compact',\n this.fullWidth() && 'studio-button--full',\n this.loading() && 'studio-button--loading',\n this.iconPosition() === 'only' && 'studio-button--icon-only'\n ));\n\n protected handleClick(event: MouseEvent): void {\n if (this.disabled() || this.loading()) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n\n const url = this.href();\n if (url) {\n const safeUrl = sanitizeUrl(url);\n if (safeUrl === '#') return;\n\n const target = this.target();\n if (target === '_blank') {\n window.open(safeUrl, '_blank', 'noopener,noreferrer');\n } else {\n window.location.href = safeUrl;\n }\n }\n\n this.clicked.emit(event);\n }\n}\n","/**\n * Button component\n */\n\nexport * from './button.component';\n","import { Component, ChangeDetectionStrategy, input, computed, inject, contentChildren, effect, ElementRef } from '@angular/core';\nimport { ButtonComponent } from '../button';\nimport { StudioConfigService } from '../../config';\nimport { classNames, withConfigDefault } from '../../utils';\n\n@Component({\n selector: 'studio-button-group',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[attr.role]': 'role()',\n '[attr.aria-label]': 'ariaLabel()'\n },\n template: `<ng-content select=\"studio-button\" />`,\n styleUrl: './button-group.component.scss'\n})\nexport class ButtonGroupComponent {\n private readonly elementRef = inject(ElementRef);\n private readonly configService = inject(StudioConfigService);\n private readonly groupDefaults = computed(() => this.configService.config().components?.buttonGroup);\n\n orientationInput = input<'horizontal' | 'vertical' | undefined>(undefined, { alias: 'orientation' });\n sizeInput = input<'sm' | 'md' | 'lg' | undefined>(undefined, { alias: 'size' });\n variantInput = input<'solid' | 'outline' | 'ghost' | undefined>(undefined, { alias: 'variant' });\n colorInput = input<'primary' | 'secondary' | 'success' | 'error' | 'warning' | undefined>(undefined, { alias: 'color' });\n radiusInput = input<'none' | 'sm' | 'md' | 'lg' | 'xl' | 'full' | undefined>(undefined, { alias: 'radius' });\n\n orientation = withConfigDefault(this.orientationInput, computed(() => this.groupDefaults()?.orientation), 'horizontal');\n size = withConfigDefault(this.sizeInput, computed(() => this.groupDefaults()?.size), undefined);\n variant = withConfigDefault(this.variantInput, computed(() => this.groupDefaults()?.variant), undefined);\n color = withConfigDefault(this.colorInput, computed(() => this.groupDefaults()?.color), undefined);\n radius = withConfigDefault(this.radiusInput, computed(() => this.groupDefaults()?.radius), undefined);\n\n attached = input<boolean>(false);\n fullWidth = input<boolean>(false);\n disabled = input<boolean>(false);\n spacing = input<'none' | 'xs' | 'sm' | 'md' | 'lg'>('sm');\n align = input<'start' | 'center' | 'end' | 'stretch'>('start');\n ariaLabel = input<string>();\n role = input<string>('group');\n\n protected hostClasses = computed(() => classNames(\n 'studio-button-group',\n `studio-button-group--${this.orientation()}`,\n `studio-button-group--spacing-${this.spacing()}`,\n `studio-button-group--align-${this.align()}`,\n this.attached() && 'studio-button-group--attached',\n this.fullWidth() && 'studio-button-group--full',\n this.disabled() && 'studio-button-group--disabled'\n ));\n\n constructor() {\n effect(() => {\n const isAttached = this.attached();\n const hostElement = this.elementRef.nativeElement as HTMLElement;\n const buttonElements = hostElement.querySelectorAll('studio-button');\n\n buttonElements.forEach((buttonEl, index) => {\n const isFirst = index === 0;\n const isLast = index === buttonElements.length - 1;\n const isMiddle = !isFirst && !isLast;\n\n if (isAttached) {\n buttonEl.classList.add('studio-button-group__item--attached');\n if (isFirst) buttonEl.classList.add('studio-button-group__item--first');\n if (isLast) buttonEl.classList.add('studio-button-group__item--last');\n if (isMiddle) buttonEl.classList.add('studio-button-group__item--middle');\n } else {\n buttonEl.classList.remove('studio-button-group__item--attached');\n buttonEl.classList.remove('studio-button-group__item--first');\n buttonEl.classList.remove('studio-button-group__item--last');\n buttonEl.classList.remove('studio-button-group__item--middle');\n }\n });\n });\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n inject,\n contentChild,\n TemplateRef\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IconComponent } from '../icon';\nimport { StudioConfigService } from '../../config';\nimport { sanitizeUrl, classNames, withConfigDefault } from '../../utils';\nimport {\n CardVariant,\n CardSize,\n CardColor,\n CardRadius,\n CardShadow,\n CardPadding,\n CardOrientation,\n CardImagePosition\n} from './card.types';\n\n/**\n * Card component for displaying content in a container\n *\n * @example\n * <studio-card variant=\"elevated\" color=\"primary\">\n * <div card-header>Header</div>\n * <div card-body>Content</div>\n * <div card-footer>Footer</div>\n * </studio-card>\n */\n@Component({\n selector: 'studio-card',\n standalone: true,\n imports: [CommonModule, IconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[attr.href]': 'href()',\n '[attr.target]': 'href() ? target() : null',\n '[attr.rel]': 'href() && target() === \"_blank\" ? \"noopener noreferrer\" : null',\n '[attr.disabled]': 'disabled() ? \"\" : null',\n '(click)': 'handleClick($event)'\n },\n template: `\n <div class=\"studio-card__container\">\n <!-- Header -->\n @if (showHeader() && (headerTemplate() || title() || subtitle())) {\n <div class=\"studio-card__header\">\n @if (headerTemplate()) {\n <ng-container *ngTemplateOutlet=\"headerTemplate()!\" />\n } @else {\n <div class=\"studio-card__header-content\">\n @if (avatar()) {\n <img [src]=\"avatar()!\" alt=\"\" class=\"studio-card__avatar\" />\n }\n @if (icon() && !avatar()) {\n <div class=\"studio-card__icon-wrapper\">\n <studio-icon [name]=\"icon()!\" [size]=\"iconSize()\" />\n </div>\n }\n <div class=\"studio-card__header-text\">\n @if (title()) {\n <h3 class=\"studio-card__title\">{{ title() }}</h3>\n }\n @if (subtitle()) {\n <p class=\"studio-card__subtitle\">{{ subtitle() }}</p>\n }\n </div>\n </div>\n @if (headerActionsTemplate()) {\n <div class=\"studio-card__header-actions\">\n <ng-container *ngTemplateOutlet=\"headerActionsTemplate()!\" />\n </div>\n }\n }\n </div>\n }\n\n <!-- Media -->\n @if (showMedia() && (mediaTemplate() || image())) {\n <div class=\"studio-card__media\">\n @if (mediaTemplate()) {\n <ng-container *ngTemplateOutlet=\"mediaTemplate()!\" />\n } @else if (image()) {\n <img\n [src]=\"image()!\"\n [alt]=\"imageAlt()\"\n class=\"studio-card__image\"\n [class.studio-card__image--cover]=\"imageFit() === 'cover'\"\n [class.studio-card__image--contain]=\"imageFit() === 'contain'\"\n />\n }\n </div>\n }\n\n <!-- Body -->\n <div class=\"studio-card__body\">\n @if (bodyTemplate()) {\n <ng-container *ngTemplateOutlet=\"bodyTemplate()!\" />\n } @else {\n <ng-content />\n }\n </div>\n\n <!-- Footer -->\n @if (showFooter() && footerTemplate()) {\n <div class=\"studio-card__footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate()!\" />\n </div>\n }\n\n <!-- Loading overlay -->\n @if (loading()) {\n <div class=\"studio-card__loading\">\n <studio-icon name=\"loader-2\" [size]=\"24\" class=\"studio-card__spinner\" />\n </div>\n }\n </div>\n `,\n styleUrl: './card.component.scss'\n})\nexport class CardComponent {\n private readonly configService = inject(StudioConfigService);\n private readonly cardDefaults = computed(() => this.configService.config().components?.card);\n\n // Style inputs with config defaults\n variantInput = input<CardVariant | undefined>(undefined, { alias: 'variant' });\n sizeInput = input<CardSize | undefined>(undefined, { alias: 'size' });\n colorInput = input<CardColor | undefined>(undefined, { alias: 'color' });\n radiusInput = input<CardRadius | undefined>(undefined, { alias: 'radius' });\n shadowInput = input<CardShadow | undefined>(undefined, { alias: 'shadow' });\n paddingInput = input<CardPadding | undefined>(undefined, { alias: 'padding' });\n\n variant = withConfigDefault(this.variantInput, computed(() => this.cardDefaults()?.variant), 'elevated');\n size = withConfigDefault(this.sizeInput, computed(() => this.cardDefaults()?.size), 'md');\n color = withConfigDefault(this.colorInput, computed(() => this.cardDefaults()?.color), 'default');\n radius = withConfigDefault(this.radiusInput, computed(() => this.cardDefaults()?.radius), 'lg');\n shadow = withConfigDefault(this.shadowInput, computed(() => this.cardDefaults()?.shadow), 'md');\n padding = withConfigDefault(this.paddingInput, computed(() => this.cardDefaults()?.padding), 'md');\n\n // Layout inputs\n orientation = input<CardOrientation>('vertical');\n imagePosition = input<CardImagePosition>('top');\n fullWidth = input<boolean>(false);\n fullHeight = input<boolean>(false);\n\n // Content inputs\n title = input<string>();\n subtitle = input<string>();\n avatar = input<string>();\n icon = input<string>();\n image = input<string>();\n imageAlt = input<string>('');\n imageFit = input<'cover' | 'contain'>('cover');\n\n // Visibility inputs\n showHeader = input<boolean>(true);\n showMedia = input<boolean>(true);\n showFooter = input<boolean>(true);\n divider = input<boolean>(false);\n\n // Interaction inputs\n hoverable = input<boolean>(false);\n pressable = input<boolean>(false);\n disabled = input<boolean>(false);\n loading = input<boolean>(false);\n href = input<string>();\n target = input<'_blank' | '_self' | '_parent' | '_top'>('_self');\n\n // Effects\n blurred = input<boolean>(false);\n blurredFooter = input<boolean>(false);\n animated = input<boolean>(false);\n\n // Outputs\n clicked = output<MouseEvent>();\n headerAction = output<void>();\n\n // Template refs\n protected headerTemplate = contentChild<TemplateRef<any>>('cardHeader');\n protected headerActionsTemplate = contentChild<TemplateRef<any>>('cardHeaderActions');\n protected mediaTemplate = contentChild<TemplateRef<any>>('cardMedia');\n protected bodyTemplate = contentChild<TemplateRef<any>>('cardBody');\n protected footerTemplate = contentChild<TemplateRef<any>>('cardFooter');\n\n // Computed\n protected iconSize = computed(() => {\n const sizeMap: Record<CardSize, number> = { sm: 18, md: 20, lg: 24 };\n return sizeMap[this.size()];\n });\n\n protected hostClasses = computed(() => classNames(\n 'studio-card',\n `studio-card--${this.variant()}`,\n `studio-card--${this.size()}`,\n `studio-card--${this.color()}`,\n `studio-card--radius-${this.radius()}`,\n `studio-card--shadow-${this.shadow()}`,\n `studio-card--padding-${this.padding()}`,\n `studio-card--${this.orientation()}`,\n this.imagePosition() !== 'top' && `studio-card--image-${this.imagePosition()}`,\n this.fullWidth() && 'studio-card--full-width',\n this.fullHeight() && 'studio-card--full-height',\n this.hoverable() && 'studio-card--hoverable',\n this.pressable() && 'studio-card--pressable',\n this.disabled() && 'studio-card--disabled',\n this.loading() && 'studio-card--loading',\n this.blurred() && 'studio-card--blurred',\n this.blurredFooter() && 'studio-card--blurred-footer',\n this.animated() && 'studio-card--animated',\n this.divider() && 'studio-card--divider',\n this.href() && 'studio-card--clickable'\n ));\n\n protected handleClick(event: MouseEvent): void {\n if (this.disabled() || this.loading()) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n\n const url = this.href();\n if (url) {\n const safeUrl = sanitizeUrl(url);\n if (safeUrl === '#') {\n return;\n }\n\n const target = this.target();\n if (target === '_blank') {\n window.open(safeUrl, '_blank', 'noopener,noreferrer');\n } else {\n window.location.href = safeUrl;\n }\n }\n\n this.clicked.emit(event);\n }\n}\n","/**\n * Card component types\n */\n\nexport type CardVariant = 'elevated' | 'filled' | 'outlined' | 'ghost';\nexport type CardSize = 'sm' | 'md' | 'lg';\nexport type CardColor = 'default' | 'primary' | 'secondary' | 'success' | 'error' | 'warning' | 'neutral';\nexport type CardRadius = 'none' | 'sm' | 'md' | 'lg' | 'xl';\nexport type CardShadow = 'none' | 'sm' | 'md' | 'lg' | 'xl';\nexport type CardPadding = 'none' | 'sm' | 'md' | 'lg';\nexport type CardOrientation = 'vertical' | 'horizontal';\nexport type CardImagePosition = 'top' | 'left' | 'right' | 'bottom';\n","import { Component, ChangeDetectionStrategy, input, computed } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IconComponent } from '../icon';\nimport { ChatMessage } from './chat.types';\n\n@Component({\n selector: 'studio-chat-message',\n standalone: true,\n imports: [CommonModule, IconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()'\n },\n template: `\n <div class=\"chat-message__container\">\n @if (showAvatar() && !isOwn()) {\n <div class=\"chat-message__avatar\">\n @if (message().userAvatar) {\n <img [src]=\"message().userAvatar\" [alt]=\"message().userName\" />\n } @else {\n <div class=\"chat-message__avatar-fallback\">\n {{ getInitials(message().userName) }}\n </div>\n }\n </div>\n }\n\n <div class=\"chat-message__content-wrapper\">\n @if (!isOwn() && showUserName()) {\n <div class=\"chat-message__user-name\">{{ message().userName }}</div>\n }\n\n <div class=\"chat-message__bubble\">\n @if (message().type === 'system') {\n <div class=\"chat-message__system\">{{ message().content }}</div>\n } @else {\n <div class=\"chat-message__text\">{{ message().content }}</div>\n }\n\n @if (message().edited) {\n <span class=\"chat-message__edited\">(edited)</span>\n }\n </div>\n\n <div class=\"chat-message__meta\">\n @if (showTimestamp()) {\n <span class=\"chat-message__time\">{{ formatTime(message().timestamp) }}</span>\n }\n\n @if (isOwn() && message().status && message().status !== 'sending') {\n <span class=\"chat-message__status\">\n @if (message().status === 'sent') {\n <studio-icon name=\"check\" [size]=\"12\" />\n }\n @if (message().status === 'delivered' || message().status === 'read') {\n <studio-icon name=\"check-check\" [size]=\"12\" />\n }\n @if (message().status === 'error') {\n <studio-icon name=\"alert-circle\" [size]=\"12\" />\n }\n </span>\n }\n </div>\n </div>\n </div>\n `,\n styles: [`\n :host {\n display: block;\n margin-bottom: 0.75rem;\n }\n\n :host(.chat-message--own) {\n .chat-message__container {\n justify-content: flex-end;\n }\n\n .chat-message__bubble {\n background: var(--studio-primary);\n color: white;\n }\n\n .chat-message__meta {\n justify-content: flex-end;\n }\n }\n\n :host(.chat-message--system) {\n text-align: center;\n margin: 1rem 0;\n\n .chat-message__system {\n display: inline-block;\n padding: 0.25rem 0.75rem;\n background: var(--studio-bg-secondary);\n color: var(--studio-text-secondary);\n border-radius: var(--studio-radius-full);\n font-size: 0.75rem;\n }\n }\n\n :host(.chat-message--compact) {\n margin-bottom: 0.25rem;\n }\n\n .chat-message__container {\n display: flex;\n gap: 0.75rem;\n align-items: flex-end;\n }\n\n .chat-message__avatar {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n overflow: hidden;\n flex-shrink: 0;\n\n img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n }\n\n .chat-message__avatar-fallback {\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--studio-primary);\n color: white;\n font-size: 0.75rem;\n font-weight: 600;\n }\n\n .chat-message__content-wrapper {\n max-width: 70%;\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n }\n\n .chat-message__user-name {\n font-size: 0.75rem;\n font-weight: 500;\n color: var(--studio-text-secondary);\n padding-left: 0.75rem;\n }\n\n .chat-message__bubble {\n padding: 0.625rem 0.875rem;\n border-radius: var(--studio-radius-lg);\n background: var(--studio-bg-secondary);\n color: var(--studio-text-primary);\n word-wrap: break-word;\n position: relative;\n }\n\n .chat-message__text {\n white-space: pre-wrap;\n line-height: 1.5;\n }\n\n .chat-message__edited {\n font-size: 0.6875rem;\n color: var(--studio-text-tertiary);\n margin-left: 0.25rem;\n }\n\n .chat-message__meta {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0 0.75rem;\n }\n\n .chat-message__time {\n font-size: 0.6875rem;\n color: var(--studio-text-tertiary);\n }\n\n .chat-message__status {\n display: flex;\n align-items: center;\n color: var(--studio-text-tertiary);\n }\n\n :host(.chat-message--own) .chat-message__status {\n color: var(--studio-text-tertiary);\n }\n\n :host(.chat-message--status-read) .chat-message__status {\n color: var(--studio-primary);\n }\n\n :host(.chat-message--status-error) .chat-message__status {\n color: var(--studio-error);\n }\n\n :host(.chat-message--compact) {\n .chat-message__avatar {\n width: 24px;\n height: 24px;\n }\n\n .chat-message__bubble {\n padding: 0.5rem 0.75rem;\n font-size: 0.875rem;\n }\n }\n `]\n})\nexport class ChatMessageComponent {\n message = input.required<ChatMessage>();\n currentUserId = input.required<string>();\n showAvatar = input<boolean>(true);\n showTimestamp = input<boolean>(true);\n showUserName = input<boolean>(true);\n compact = input<boolean>(false);\n\n protected isOwn = computed(() =>\n this.message().userId === this.currentUserId()\n );\n\n protected hostClasses = computed(() => {\n const classes = ['studio-chat-message'];\n\n if (this.isOwn()) classes.push('chat-message--own');\n if (this.message().type === 'system') classes.push('chat-message--system');\n if (this.compact()) classes.push('chat-message--compact');\n if (this.message().status === 'read') classes.push('chat-message--status-read');\n if (this.message().status === 'error') classes.push('chat-message--status-error');\n\n return classes.join(' ');\n });\n\n protected getInitials(name: string): string {\n return name\n .split(' ')\n .map(n => n[0])\n .slice(0, 2)\n .join('')\n .toUpperCase();\n }\n\n protected formatTime(date: Date): string {\n const now = new Date();\n const messageDate = new Date(date);\n const diff = now.getTime() - messageDate.getTime();\n const minutes = Math.floor(diff / 60000);\n const hours = Math.floor(diff / 3600000);\n const days = Math.floor(diff / 86400000);\n\n if (minutes < 1) return 'Just now';\n if (minutes < 60) return `${minutes}m ago`;\n if (hours < 24) return `${hours}h ago`;\n if (days === 1) return 'Yesterday';\n if (days < 7) return `${days}d ago`;\n\n return messageDate.toLocaleDateString('en-US', {\n month: 'short',\n day: 'numeric'\n });\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n signal,\n computed,\n ElementRef,\n viewChild,\n effect\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { IconComponent } from '../icon';\nimport { ButtonComponent } from '../button';\n\n@Component({\n selector: 'studio-chat-input',\n standalone: true,\n imports: [CommonModule, FormsModule, IconComponent, ButtonComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()'\n },\n template: `\n <div class=\"chat-input__container\">\n <textarea\n #textareaRef\n class=\"chat-input__textarea\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [(ngModel)]=\"inputValue\"\n (keydown)=\"onKeyDown($event)\"\n (input)=\"onInput()\"\n rows=\"1\"\n ></textarea>\n\n <studio-button\n variant=\"ghost\"\n size=\"sm\"\n [disabled]=\"!canSend()\"\n (click)=\"handleSubmit()\"\n class=\"chat-input__send-button\"\n >\n <studio-icon name=\"send\" [size]=\"20\" />\n </studio-button>\n </div>\n `,\n styles: [`\n :host {\n display: block;\n }\n\n .chat-input__container {\n display: flex;\n align-items: flex-end;\n gap: 0.5rem;\n padding: 1rem;\n background: var(--studio-bg-primary);\n border-top: 1px solid var(--studio-border-primary);\n }\n\n .chat-input__textarea {\n flex: 1;\n min-height: 40px;\n max-height: 120px;\n padding: 0.625rem 0.875rem;\n border: 1px solid var(--studio-border-primary);\n border-radius: var(--studio-radius-md);\n background: var(--studio-bg-primary);\n color: var(--studio-text-primary);\n font-family: inherit;\n font-size: 0.875rem;\n line-height: 1.5;\n resize: none;\n overflow-y: auto;\n transition: border-color 150ms ease;\n\n &:focus {\n outline: none;\n border-color: var(--studio-primary);\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n &::placeholder {\n color: var(--studio-text-tertiary);\n }\n }\n\n .chat-input__send-button {\n flex-shrink: 0;\n }\n\n :host(.chat-input--compact) {\n .chat-input__container {\n padding: 0.75rem;\n }\n\n .chat-input__textarea {\n padding: 0.5rem 0.75rem;\n font-size: 0.8125rem;\n }\n }\n `]\n})\nexport class ChatInputComponent {\n placeholder = input<string>('Type a message...');\n disabled = input<boolean>(false);\n compact = input<boolean>(false);\n\n messageSubmit = output<{ content: string }>();\n typing = output<boolean>();\n\n protected inputValue = signal<string>('');\n protected textareaRef = viewChild<ElementRef<HTMLTextAreaElement>>('textareaRef');\n\n private typingTimeout?: ReturnType<typeof setTimeout>;\n\n protected canSend = computed(() =>\n this.inputValue().trim().length > 0 && !this.disabled()\n );\n\n protected hostClasses = computed(() => {\n const classes = ['studio-chat-input'];\n\n if (this.compact()) classes.push('chat-input--compact');\n\n return classes.join(' ');\n });\n\n constructor() {\n // Auto-resize textarea\n effect(() => {\n const textarea = this.textareaRef()?.nativeElement;\n if (textarea) {\n textarea.style.height = 'auto';\n textarea.style.height = textarea.scrollHeight + 'px';\n }\n });\n }\n\n protected onKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Enter' && !event.shiftKey) {\n event.preventDefault();\n this.handleSubmit();\n }\n }\n\n protected onInput(): void {\n // Emit typing indicator\n this.typing.emit(true);\n\n // Clear previous timeout\n if (this.typingTimeout) {\n clearTimeout(this.typingTimeout);\n }\n\n // Set new timeout to stop typing after 1 second\n this.typingTimeout = setTimeout(() => {\n this.typing.emit(false);\n }, 1000);\n\n // Auto-resize\n const textarea = this.textareaRef()?.nativeElement;\n if (textarea) {\n textarea.style.height = 'auto';\n textarea.style.height = textarea.scrollHeight + 'px';\n }\n }\n\n protected handleSubmit(): void {\n const content = this.inputValue().trim();\n if (content && !this.disabled()) {\n this.messageSubmit.emit({ content });\n this.inputValue.set('');\n\n // Reset textarea height\n const textarea = this.textareaRef()?.nativeElement;\n if (textarea) {\n textarea.style.height = 'auto';\n }\n\n // Stop typing indicator\n if (this.typingTimeout) {\n clearTimeout(this.typingTimeout);\n }\n this.typing.emit(false);\n }\n }\n\n public focus(): void {\n this.textareaRef()?.nativeElement.focus();\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n signal,\n effect,\n ElementRef,\n viewChild,\n AfterViewInit\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ChatMessageComponent } from './chat-message.component';\nimport { ChatInputComponent } from './chat-input.component';\nimport { IconComponent } from '../icon';\nimport { ChatMessage, ChatVariant, ChatSize } from './chat.types';\n\n/**\n * Chat component - Flexible chat/messaging component\n *\n * @example\n * <studio-chat\n * [messages]=\"messages\"\n * [currentUserId]=\"currentUser.id\"\n * variant=\"default\"\n * (messageSubmit)=\"handleMessage($event)\"\n * />\n */\n@Component({\n selector: 'studio-chat',\n standalone: true,\n imports: [\n CommonModule,\n ChatMessageComponent,\n ChatInputComponent,\n IconComponent\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[style.height]': 'height()'\n },\n templateUrl: './chat.component.html',\n styleUrl: './chat.component.scss'\n})\nexport class ChatComponent implements AfterViewInit {\n // ========== Required ==========\n messages = input.required<ChatMessage[]>();\n currentUserId = input.required<string>();\n\n // ========== Appearance ==========\n variant = input<ChatVariant>('default');\n size = input<ChatSize>('md');\n height = input<string>('600px');\n\n // ========== Behavior ==========\n placeholder = input<string>('Type a message...');\n showAvatars = input<boolean>(true);\n showTimestamps = input<boolean>(true);\n showUserNames = input<boolean>(true);\n enableAutoScroll = input<boolean>(true);\n disabled = input<boolean>(false);\n\n // ========== Customization ==========\n class = input<string>('');\n\n // ========== Outputs ==========\n messageSubmit = output<{ content: string }>();\n typing = output<boolean>();\n\n // ========== State ==========\n protected messagesContainerRef = viewChild<ElementRef<HTMLDivElement>>('messagesContainer');\n protected isScrolledUp = signal<boolean>(false);\n protected shouldAutoScroll = signal<boolean>(true);\n\n protected hostClasses = computed(() => {\n const classes = ['studio-chat'];\n\n classes.push(`studio-chat--${this.variant()}`);\n classes.push(`studio-chat--${this.size()}`);\n\n if (this.disabled()) classes.push('studio-chat--disabled');\n if (this.class()) classes.push(this.class());\n\n return classes.join(' ');\n });\n\n protected isCompact = computed(() =>\n this.variant() === 'compact' || this.variant() === 'minimal'\n );\n\n constructor() {\n // Auto-scroll when new messages arrive\n effect(() => {\n const messages = this.messages();\n if (messages.length > 0 && this.shouldAutoScroll() && this.enableAutoScroll()) {\n setTimeout(() => this.scrollToBottom(), 0);\n }\n });\n }\n\n ngAfterViewInit(): void {\n this.scrollToBottom();\n }\n\n protected onScroll(): void {\n const container = this.messagesContainerRef()?.nativeElement;\n if (!container) return;\n\n const isAtBottom =\n container.scrollHeight - container.scrollTop - container.clientHeight < 50;\n\n this.isScrolledUp.set(!isAtBottom);\n this.shouldAutoScroll.set(isAtBottom);\n }\n\n protected onMessageSubmit(event: { content: string }): void {\n this.messageSubmit.emit(event);\n this.shouldAutoScroll.set(true);\n }\n\n protected scrollToBottom(): void {\n const container = this.messagesContainerRef()?.nativeElement;\n if (container) {\n container.scrollTop = container.scrollHeight;\n this.isScrolledUp.set(false);\n this.shouldAutoScroll.set(true);\n }\n }\n\n protected onTyping(typing: boolean): void {\n this.typing.emit(typing);\n }\n}\n","<div class=\"chat__container\">\n <div\n #messagesContainer\n class=\"chat__messages\"\n (scroll)=\"onScroll()\"\n >\n @if (messages().length === 0) {\n <div class=\"chat__empty\">\n <studio-icon name=\"message-circle\" [size]=\"48\" />\n <p>No messages yet</p>\n <small>Start a conversation</small>\n </div>\n } @else {\n @for (message of messages(); track message.id || $index) {\n <studio-chat-message\n [message]=\"message\"\n [currentUserId]=\"currentUserId()\"\n [showAvatar]=\"showAvatars()\"\n [showTimestamp]=\"showTimestamps()\"\n [showUserName]=\"showUserNames()\"\n [compact]=\"isCompact()\"\n />\n }\n }\n </div>\n\n @if (isScrolledUp()) {\n <button\n class=\"chat__scroll-button\"\n (click)=\"scrollToBottom()\"\n type=\"button\"\n >\n <studio-icon name=\"arrow-down\" [size]=\"20\" />\n </button>\n }\n\n <studio-chat-input\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [compact]=\"isCompact()\"\n (messageSubmit)=\"onMessageSubmit($event)\"\n (typing)=\"onTyping($event)\"\n />\n</div>\n","import { Component, input, output, computed, signal, forwardRef, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { StudioConfigService } from '../../config/studio.service';\n\n/**\n * Checkbox component for selecting boolean values\n *\n * @example\n * <studio-checkbox\n * [(ngModel)]=\"accepted\"\n * label=\"I accept terms and conditions\"\n * (changed)=\"onAccept($event)\"\n * />\n */\n@Component({\n selector: 'studio-checkbox',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './checkbox.component.html',\n styleUrl: './checkbox.component.scss',\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxComponent),\n multi: true\n }],\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-size]': 'size()',\n '[attr.data-color]': 'color()',\n '[attr.data-disabled]': 'disabled()',\n '[attr.data-error]': 'error()'\n }\n})\nexport class CheckboxComponent implements ControlValueAccessor {\n private readonly configService = inject(StudioConfigService);\n private readonly checkboxDefaults = computed(() => this.configService.config().components?.checkbox);\n\n // ==========================================\n // INPUTS - Appearance\n // ==========================================\n\n /**\n * Size of the checkbox\n */\n size = input<CheckboxSize>(\n this.checkboxDefaults()?.size ?? 'md'\n );\n\n /**\n * Color scheme\n */\n color = input<CheckboxColor>(\n this.checkboxDefaults()?.color ?? 'primary'\n );\n\n /**\n * Visual variant\n */\n variant = input<CheckboxVariant>(\n this.checkboxDefaults()?.variant ?? 'default'\n );\n\n /**\n * Border radius\n */\n radius = input<CheckboxRadius>(\n this.checkboxDefaults()?.radius ?? 'sm'\n );\n\n // ==========================================\n // INPUTS - Labels & Description\n // ==========================================\n\n /**\n * Label text\n */\n label = input<string>();\n\n /**\n * Label position relative to checkbox\n */\n labelPosition = input<'left' | 'right'>(\n this.checkboxDefaults()?.labelPosition ?? 'right'\n );\n\n /**\n * Additional description text\n */\n description = input<string>();\n\n /**\n * Helper text\n */\n hint = input<string>();\n\n // ==========================================\n // INPUTS - Validation\n // ==========================================\n\n /**\n * Required field\n */\n required = input<boolean>(false);\n\n /**\n * Error state\n */\n error = input<boolean>(false);\n\n /**\n * Error message\n */\n errorMessage = input<string>();\n\n // ==========================================\n // INPUTS - Behavior\n // ==========================================\n\n /**\n * Disabled state\n */\n disabled = input<boolean>(false);\n\n /**\n * Readonly state\n */\n readonly = input<boolean>(false);\n\n /**\n * Indeterminate state (for \"select all\" checkboxes)\n */\n indeterminate = input<boolean>(false);\n\n /**\n * Name attribute for form control\n */\n name = input<string>();\n\n /**\n * Tab index\n */\n tabIndex = input<number>(0);\n\n /**\n * Value for checkbox groups\n */\n value = input<any>();\n\n // ==========================================\n // OUTPUTS\n // ==========================================\n\n /**\n * Emitted when checkbox state changes\n */\n changed = output<boolean>();\n\n // ==========================================\n // STATE\n // ==========================================\n\n /**\n * Internal checked state\n */\n protected internalChecked = signal(false);\n\n /**\n * Internal focus state\n */\n protected isFocused = signal(false);\n\n /**\n * Unique ID for accessibility\n */\n protected checkboxId = signal(`studio-checkbox-${Math.random().toString(36).substr(2, 9)}`);\n\n // ==========================================\n // COMPUTED\n // ==========================================\n\n /**\n * Host CSS classes\n */\n protected hostClasses = computed(() => ({\n 'studio-checkbox-wrapper': true,\n [`studio-checkbox-wrapper--${this.size()}`]: true,\n 'studio-checkbox-wrapper--disabled': this.disabled(),\n 'studio-checkbox-wrapper--error': this.error(),\n 'studio-checkbox-wrapper--focused': this.isFocused(),\n 'studio-checkbox-wrapper--label-left': this.labelPosition() === 'left'\n }));\n\n /**\n * Checkbox element CSS classes\n */\n protected checkboxClasses = computed(() => ({\n 'studio-checkbox': true,\n [`studio-checkbox--${this.size()}`]: true,\n [`studio-checkbox--${this.color()}`]: true,\n [`studio-checkbox--${this.variant()}`]: true,\n [`studio-checkbox--radius-${this.radius()}`]: true,\n 'studio-checkbox--checked': this.internalChecked(),\n 'studio-checkbox--indeterminate': this.indeterminate(),\n 'studio-checkbox--disabled': this.disabled(),\n 'studio-checkbox--error': this.error()\n }));\n\n /**\n * Show error message\n */\n protected showError = computed(() => this.error() && this.errorMessage());\n\n /**\n * Show hint\n */\n protected showHint = computed(() => !this.error() && this.hint());\n\n /**\n * ARIA checked state\n */\n protected ariaChecked = computed(() => {\n if (this.indeterminate()) return 'mixed';\n return this.internalChecked() ? 'true' : 'false';\n });\n\n // ==========================================\n // CONTROL VALUE ACCESSOR\n // ==========================================\n\n private onChange: (value: boolean) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: boolean): void {\n this.internalChecked.set(value ?? false);\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n // Disabled state is controlled via input\n }\n\n // ==========================================\n // METHODS\n // ==========================================\n\n /**\n * Handle checkbox toggle\n */\n protected handleChange(event: Event): void {\n if (this.disabled() || this.readonly()) {\n event.preventDefault();\n return;\n }\n\n const newValue = (event.target as HTMLInputElement).checked;\n this.internalChecked.set(newValue);\n this.onChange(newValue);\n this.changed.emit(newValue);\n }\n\n /**\n * Handle focus\n */\n protected handleFocus(): void {\n this.isFocused.set(true);\n }\n\n /**\n * Handle blur\n */\n protected handleBlur(): void {\n this.isFocused.set(false);\n this.onTouched();\n }\n\n /**\n * Handle label click\n */\n protected handleLabelClick(event: Event): void {\n if (this.disabled() || this.readonly()) {\n event.preventDefault();\n }\n }\n}\n\n// ==========================================\n// TYPES\n// ==========================================\n\nexport type CheckboxSize = 'sm' | 'md' | 'lg';\nexport type CheckboxColor = 'primary' | 'secondary' | 'success' | 'error';\nexport type CheckboxVariant = 'default' | 'outlined' | 'filled';\nexport type CheckboxRadius = 'none' | 'sm' | 'md' | 'lg' | 'full';\n","<label\n [for]=\"checkboxId()\"\n [ngClass]=\"hostClasses()\"\n (click)=\"handleLabelClick($event)\"\n>\n <!-- Checkbox input -->\n <input\n type=\"checkbox\"\n [id]=\"checkboxId()\"\n [name]=\"name()\"\n [checked]=\"internalChecked()\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n [tabIndex]=\"tabIndex()\"\n [attr.aria-checked]=\"ariaChecked()\"\n [attr.aria-label]=\"label() || undefined\"\n [attr.aria-describedby]=\"showHint() || showError() ? checkboxId() + '-description' : undefined\"\n [attr.aria-invalid]=\"error()\"\n [attr.aria-required]=\"required()\"\n class=\"studio-checkbox__input\"\n (change)=\"handleChange($event)\"\n (focus)=\"handleFocus()\"\n (blur)=\"handleBlur()\"\n />\n\n <!-- Custom checkbox -->\n <span [ngClass]=\"checkboxClasses()\">\n <!-- Checkmark icon -->\n @if (internalChecked() && !indeterminate()) {\n <svg\n class=\"studio-checkbox__icon\"\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.66666 8\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n }\n\n <!-- Indeterminate icon -->\n @if (indeterminate()) {\n <svg\n class=\"studio-checkbox__icon studio-checkbox__icon--indeterminate\"\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 }\n </span>\n\n <!-- Label content -->\n @if (label() || description()) {\n <span class=\"studio-checkbox__label-wrapper\">\n @if (label()) {\n <span class=\"studio-checkbox__label\">\n {{ label() }}\n @if (required()) {\n <span class=\"studio-checkbox__required\" aria-hidden=\"true\">*</span>\n }\n </span>\n }\n\n @if (description()) {\n <span class=\"studio-checkbox__description\">\n {{ description() }}\n </span>\n }\n </span>\n }\n</label>\n\n<!-- Helper text / Error message -->\n@if (showHint() || showError()) {\n <div\n [id]=\"checkboxId() + '-description'\"\n class=\"studio-checkbox__info\"\n >\n @if (showError()) {\n <span class=\"studio-checkbox__error\">\n {{ errorMessage() }}\n </span>\n }\n\n @if (showHint()) {\n <span class=\"studio-checkbox__hint\">\n {{ hint() }}\n </span>\n }\n </div>\n}\n","import { RGB, HSL, ColorValue, ColorFormat } from '../primitives/color-picker/color-picker.types';\n\nexport class ColorConverter {\n static hexToRgb(hex: string): RGB | null {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n } : null;\n }\n\n static rgbToHex(r: number, g: number, b: number): string {\n return \"#\" + [r, g, b]\n .map(x => {\n const hex = Math.round(x).toString(16);\n return hex.length === 1 ? \"0\" + hex : hex;\n })\n .join(\"\");\n }\n\n static rgbToHsl(r: number, g: number, b: number): HSL {\n r /= 255;\n g /= 255;\n b /= 255;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n let h = 0, s = 0;\n const l = (max + min) / 2;\n\n if (max !== min) {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\n switch (max) {\n case r: h = ((g - b) / d + (g < b ? 6 : 0)) / 6; break;\n case g: h = ((b - r) / d + 2) / 6; break;\n case b: h = ((r - g) / d + 4) / 6; break;\n }\n }\n\n return {\n h: Math.round(h * 360),\n s: Math.round(s * 100),\n l: Math.round(l * 100)\n };\n }\n\n static hslToRgb(h: number, s: number, l: number): RGB {\n h = h / 360;\n s = s / 100;\n l = l / 100;\n\n let r, g, b;\n\n if (s === 0) {\n r = g = b = l;\n } else {\n const hue2rgb = (p: number, q: number, t: number) => {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1/6) return p + (q - p) * 6 * t;\n if (t < 1/2) return q;\n if (t < 2/3) return p + (q - p) * (2/3 - t) * 6;\n return p;\n };\n\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const p = 2 * l - q;\n\n r = hue2rgb(p, q, h + 1/3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1/3);\n }\n\n return {\n r: Math.round(r * 255),\n g: Math.round(g * 255),\n b: Math.round(b * 255)\n };\n }\n\n static format(color: ColorValue, format: ColorFormat): string {\n switch (format) {\n case 'hex':\n return color.hex;\n case 'rgb':\n if (color.alpha < 1) {\n return `rgba(${color.rgb.r}, ${color.rgb.g}, ${color.rgb.b}, ${color.alpha})`;\n }\n return `rgb(${color.rgb.r}, ${color.rgb.g}, ${color.rgb.b})`;\n case 'hsl':\n if (color.alpha < 1) {\n return `hsla(${color.hsl.h}, ${color.hsl.s}%, ${color.hsl.l}%, ${color.alpha})`;\n }\n return `hsl(${color.hsl.h}, ${color.hsl.s}%, ${color.hsl.l}%)`;\n default:\n return color.hex;\n }\n }\n\n static parse(colorString: string): ColorValue | null {\n const trimmed = colorString.trim();\n\n const hexMatch = /^#?([a-f\\d]{6})$/i.exec(trimmed);\n if (hexMatch) {\n const hex = '#' + hexMatch[1];\n const rgb = this.hexToRgb(hex);\n if (!rgb) return null;\n\n return {\n hex,\n rgb,\n hsl: this.rgbToHsl(rgb.r, rgb.g, rgb.b),\n alpha: 1\n };\n }\n\n const rgbMatch = /^rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*([\\d.]+))?\\)$/i.exec(trimmed);\n if (rgbMatch) {\n const r = parseInt(rgbMatch[1]);\n const g = parseInt(rgbMatch[2]);\n const b = parseInt(rgbMatch[3]);\n const alpha = rgbMatch[4] ? parseFloat(rgbMatch[4]) : 1;\n\n return {\n hex: this.rgbToHex(r, g, b),\n rgb: { r, g, b },\n hsl: this.rgbToHsl(r, g, b),\n alpha\n };\n }\n\n const hslMatch = /^hsla?\\((\\d+),\\s*(\\d+)%?,\\s*(\\d+)%?(?:,\\s*([\\d.]+))?\\)$/i.exec(trimmed);\n if (hslMatch) {\n const h = parseInt(hslMatch[1]);\n const s = parseInt(hslMatch[2]);\n const l = parseInt(hslMatch[3]);\n const alpha = hslMatch[4] ? parseFloat(hslMatch[4]) : 1;\n\n const rgb = this.hslToRgb(h, s, l);\n\n return {\n hex: this.rgbToHex(rgb.r, rgb.g, rgb.b),\n rgb,\n hsl: { h, s, l },\n alpha\n };\n }\n\n return null;\n }\n\n static isValid(colorString: string): boolean {\n return this.parse(colorString) !== null;\n }\n}\n","import { ColorSwatchGroup } from './color-picker.types';\n\nexport const DEFAULT_COLOR_PRESETS: ColorSwatchGroup[] = [\n {\n label: 'Brand Colors',\n colors: [\n { label: 'Primary', value: '#7c3aed' },\n { label: 'Secondary', value: '#6366f1' },\n { label: 'Success', value: '#10b981' },\n { label: 'Error', value: '#ef4444' },\n { label: 'Warning', value: '#f59e0b' },\n { label: 'Info', value: '#3b82f6' }\n ]\n },\n {\n label: 'Grays',\n colors: [\n { value: '#ffffff' },\n { value: '#f3f4f6' },\n { value: '#d1d5db' },\n { value: '#9ca3af' },\n { value: '#6b7280' },\n { value: '#374151' },\n { value: '#1f2937' },\n { value: '#000000' }\n ]\n },\n {\n label: 'Common',\n colors: [\n { value: '#ff0000' },\n { value: '#ff7f00' },\n { value: '#ffff00' },\n { value: '#00ff00' },\n { value: '#0000ff' },\n { value: '#4b0082' },\n { value: '#9400d3' },\n { value: '#ff1493' }\n ]\n }\n];\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n signal,\n inject,\n viewChild,\n ElementRef,\n effect,\n forwardRef,\n AfterViewInit\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { StudioConfigService } from '../../config';\nimport { classNames, withConfigDefault } from '../../utils';\nimport { ColorConverter } from '../../utils/color-converter';\nimport {\n ColorFormat,\n ColorValue,\n ColorPreset,\n ColorSwatchGroup,\n ColorPickerVariant,\n ColorPickerSize\n} from './color-picker.types';\nimport { DEFAULT_COLOR_PRESETS } from './default-presets';\n\n@Component({\n selector: 'studio-color-picker',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ColorPickerComponent),\n multi: true\n }\n ],\n host: {\n '[class]': 'hostClasses()',\n },\n templateUrl: './color-picker.component.html',\n styleUrl: './color-picker.component.scss'\n})\nexport class ColorPickerComponent implements ControlValueAccessor, AfterViewInit {\n private readonly configService = inject(StudioConfigService);\n private readonly pickerDefaults = computed(() => this.configService.config().components?.colorPicker);\n\n protected readonly colorAreaCanvas = viewChild<ElementRef<HTMLCanvasElement>>('colorArea');\n\n variantInput = input<ColorPickerVariant | undefined>(undefined, { alias: 'variant' });\n sizeInput = input<ColorPickerSize | undefined>(undefined, { alias: 'size' });\n\n variant = withConfigDefault(this.variantInput, computed(() => this.pickerDefaults()?.variant), 'inline');\n size = withConfigDefault(this.sizeInput, computed(() => this.pickerDefaults()?.size), 'md');\n\n format = input<ColorFormat>('hex');\n showAlpha = input<boolean>(false);\n showPresets = input<boolean>(true);\n showFormatToggle = input<boolean>(true);\n showCopyButton = input<boolean>(true);\n\n presets = input<ColorPreset[] | ColorSwatchGroup[]>();\n\n label = input<string | undefined>(undefined);\n hint = input<string | undefined>(undefined);\n required = input<boolean>(false);\n error = input<boolean>(false);\n errorMessage = input<string | undefined>(undefined);\n disabled = input<boolean>(false);\n readonly = input<boolean>(false);\n\n colorChange = output<string>();\n colorValueChange = output<ColorValue>();\n copied = output<string>();\n\n protected currentColor = signal<ColorValue>(this.createColorValue('#000000'));\n protected hue = signal(0);\n protected saturation = signal(100);\n protected lightness = signal(50);\n protected alpha = signal(1);\n protected currentFormat = signal<ColorFormat>('hex');\n\n protected generatedId = `studio-color-picker-${Math.random().toString(36).substr(2, 9)}`;\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n private isDragging = false;\n\n constructor() {\n effect(() => {\n this.currentFormat.set(this.format());\n });\n\n effect(() => {\n this.renderColorArea();\n });\n }\n\n ngAfterViewInit(): void {\n this.renderColorArea();\n }\n\n protected displayColor = computed(() => {\n const color = this.currentColor();\n return ColorConverter.format(color, this.currentFormat());\n });\n\n protected effectivePresets = computed(() => {\n const custom = this.presets();\n return custom && custom.length > 0 ? custom : DEFAULT_COLOR_PRESETS;\n });\n\n protected hostClasses = computed(() => classNames(\n 'studio-color-picker',\n `studio-color-picker--${this.variant()}`,\n `studio-color-picker--${this.size()}`,\n this.error() && 'studio-color-picker--error',\n this.disabled() && 'studio-color-picker--disabled'\n ));\n\n writeValue(value: string): void {\n if (!value) return;\n\n const colorValue = ColorConverter.parse(value);\n if (colorValue) {\n this.currentColor.set(colorValue);\n this.hue.set(colorValue.hsl.h);\n this.saturation.set(colorValue.hsl.s);\n this.lightness.set(colorValue.hsl.l);\n this.alpha.set(colorValue.alpha);\n }\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {}\n\n protected onHueChange(event: Event): void {\n const value = +(event.target as HTMLInputElement).value;\n this.hue.set(value);\n this.updateColor();\n }\n\n protected onAlphaChange(event: Event): void {\n const value = +(event.target as HTMLInputElement).value;\n this.alpha.set(value / 100);\n this.updateColor();\n }\n\n protected onColorAreaMouseDown(event: MouseEvent): void {\n if (this.disabled() || this.readonly()) return;\n this.isDragging = true;\n this.updateColorArea(event);\n\n const onMouseMove = (e: MouseEvent) => {\n if (this.isDragging) {\n this.updateColorArea(e);\n }\n };\n\n const onMouseUp = () => {\n this.isDragging = false;\n document.removeEventListener('mousemove', onMouseMove);\n document.removeEventListener('mouseup', onMouseUp);\n };\n\n document.addEventListener('mousemove', onMouseMove);\n document.addEventListener('mouseup', onMouseUp);\n }\n\n private updateColorArea(event: MouseEvent): void {\n const canvas = this.colorAreaCanvas()?.nativeElement;\n if (!canvas) return;\n\n const rect = canvas.getBoundingClientRect();\n const x = Math.max(0, Math.min(event.clientX - rect.left, rect.width));\n const y = Math.max(0, Math.min(event.clientY - rect.top, rect.height));\n\n this.saturation.set((x / rect.width) * 100);\n this.lightness.set(100 - (y / rect.height) * 100);\n this.updateColor();\n }\n\n private updateColor(): void {\n const h = this.hue();\n const s = this.saturation();\n const l = this.lightness();\n\n const rgb = ColorConverter.hslToRgb(h, s, l);\n const hex = ColorConverter.rgbToHex(rgb.r, rgb.g, rgb.b);\n\n const colorValue: ColorValue = {\n hex,\n rgb,\n hsl: { h, s, l },\n alpha: this.alpha()\n };\n\n this.currentColor.set(colorValue);\n\n const formatted = ColorConverter.format(colorValue, this.currentFormat());\n this.onChange(formatted);\n this.colorChange.emit(formatted);\n this.colorValueChange.emit(colorValue);\n }\n\n private renderColorArea(): void {\n const canvas = this.colorAreaCanvas()?.nativeElement;\n if (!canvas) return;\n\n const ctx = canvas.getContext('2d');\n if (!ctx) return;\n\n const width = canvas.width;\n const height = canvas.height;\n const hue = this.hue();\n\n const horizGradient = ctx.createLinearGradient(0, 0, width, 0);\n horizGradient.addColorStop(0, 'white');\n horizGradient.addColorStop(1, `hsl(${hue}, 100%, 50%)`);\n ctx.fillStyle = horizGradient;\n ctx.fillRect(0, 0, width, height);\n\n const vertGradient = ctx.createLinearGradient(0, 0, 0, height);\n vertGradient.addColorStop(0, 'transparent');\n vertGradient.addColorStop(1, 'black');\n ctx.fillStyle = vertGradient;\n ctx.fillRect(0, 0, width, height);\n }\n\n protected toggleFormat(): void {\n const formats: ColorFormat[] = ['hex', 'rgb', 'hsl'];\n const current = this.currentFormat();\n const index = formats.indexOf(current);\n const next = formats[(index + 1) % formats.length];\n this.currentFormat.set(next);\n }\n\n protected async copyColor(): Promise<void> {\n const color = this.displayColor();\n\n try {\n await navigator.clipboard.writeText(color);\n this.copied.emit(color);\n } catch (error) {\n console.error('Copy failed:', error);\n }\n }\n\n protected selectPreset(preset: ColorPreset): void {\n this.writeValue(preset.value);\n this.updateColor();\n }\n\n protected isPresetGroup(item: any): item is ColorSwatchGroup {\n return item && 'colors' in item && Array.isArray(item.colors);\n }\n\n private createColorValue(hex: string): ColorValue {\n const rgb = ColorConverter.hexToRgb(hex) || { r: 0, g: 0, b: 0 };\n const hsl = ColorConverter.rgbToHsl(rgb.r, rgb.g, rgb.b);\n\n return {\n hex,\n rgb,\n hsl,\n alpha: 1\n };\n }\n}\n","@if (label()) {\n <label [for]=\"generatedId\" class=\"studio-color-picker__label\">\n {{ label() }}\n @if (required()) {\n <span class=\"studio-color-picker__required\">*</span>\n }\n </label>\n}\n\n<div class=\"studio-color-picker__picker\">\n <div class=\"studio-color-picker__preview\">\n <div\n class=\"studio-color-picker__preview-color\"\n [style.background-color]=\"displayColor()\"\n ></div>\n <div class=\"studio-color-picker__preview-info\">\n <span class=\"studio-color-picker__preview-value\">{{ displayColor() }}</span>\n @if (showFormatToggle()) {\n <button\n type=\"button\"\n class=\"studio-color-picker__format-btn\"\n (click)=\"toggleFormat()\"\n [disabled]=\"disabled() || readonly()\"\n >\n {{ currentFormat().toUpperCase() }}\n </button>\n }\n </div>\n @if (showCopyButton()) {\n <button\n type=\"button\"\n class=\"studio-color-picker__copy-btn\"\n (click)=\"copyColor()\"\n [disabled]=\"disabled() || readonly()\"\n aria-label=\"Copy color\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" ry=\"2\"></rect>\n <path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"></path>\n </svg>\n </button>\n }\n </div>\n\n <div class=\"studio-color-picker__area\">\n <canvas\n #colorArea\n class=\"studio-color-picker__canvas\"\n width=\"280\"\n height=\"180\"\n (mousedown)=\"onColorAreaMouseDown($event)\"\n ></canvas>\n <div\n class=\"studio-color-picker__cursor\"\n [style.left.%]=\"saturation()\"\n [style.top.%]=\"100 - lightness()\"\n ></div>\n </div>\n\n <div class=\"studio-color-picker__sliders\">\n <div class=\"studio-color-picker__slider\">\n <div class=\"studio-color-picker__slider-label\">Hue</div>\n <input\n type=\"range\"\n class=\"studio-color-picker__hue-slider\"\n min=\"0\"\n max=\"360\"\n [value]=\"hue()\"\n (input)=\"onHueChange($event)\"\n [disabled]=\"disabled() || readonly()\"\n aria-label=\"Hue\"\n />\n </div>\n\n @if (showAlpha()) {\n <div class=\"studio-color-picker__slider\">\n <div class=\"studio-color-picker__slider-label\">Opacity</div>\n <input\n type=\"range\"\n class=\"studio-color-picker__alpha-slider\"\n min=\"0\"\n max=\"100\"\n [value]=\"alpha() * 100\"\n (input)=\"onAlphaChange($event)\"\n [disabled]=\"disabled() || readonly()\"\n aria-label=\"Opacity\"\n />\n <span class=\"studio-color-picker__alpha-value\">{{ (alpha() * 100).toFixed(0) }}%</span>\n </div>\n }\n </div>\n\n @if (showPresets() && effectivePresets().length > 0) {\n <div class=\"studio-color-picker__presets\">\n @for (preset of effectivePresets(); track $index) {\n @if (isPresetGroup(preset)) {\n <div class=\"studio-color-picker__preset-group\">\n <div class=\"studio-color-picker__preset-group-label\">{{ preset.label }}</div>\n <div class=\"studio-color-picker__preset-swatches\">\n @for (color of preset.colors; track color.value) {\n <button\n type=\"button\"\n class=\"studio-color-picker__preset-swatch\"\n [style.background-color]=\"color.value\"\n [title]=\"color.label || color.value\"\n (click)=\"selectPreset(color)\"\n [disabled]=\"disabled() || readonly()\"\n ></button>\n }\n </div>\n </div>\n } @else {\n <button\n type=\"button\"\n class=\"studio-color-picker__preset-swatch\"\n [style.background-color]=\"preset.value\"\n [title]=\"preset.label || preset.value\"\n (click)=\"selectPreset(preset)\"\n [disabled]=\"disabled() || readonly()\"\n ></button>\n }\n }\n </div>\n }\n</div>\n\n@if (hint() && !error()) {\n <span class=\"studio-color-picker__hint\">\n {{ hint() }}\n </span>\n}\n\n@if (error() && errorMessage()) {\n <span class=\"studio-color-picker__error\" role=\"alert\">\n {{ errorMessage() }}\n </span>\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n signal,\n inject,\n model,\n effect,\n contentChild,\n viewChild,\n ElementRef,\n TemplateRef,\n HostListener,\n DestroyRef,\n DOCUMENT,\n afterNextRender,\n Injector\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n computePosition,\n flip,\n shift,\n offset as floatingOffset,\n arrow as floatingArrow,\n autoUpdate,\n Placement\n} from '@floating-ui/dom';\nimport { IconComponent } from '../icon';\nimport { StudioConfigService } from '../../config';\nimport { classNames, withConfigDefault } from '../../utils';\nimport {\n PopoverPosition,\n PopoverTrigger,\n PopoverVariant,\n PopoverSize,\n PopoverAnimation,\n PopoverWidth\n} from './popover.types';\n\n@Component({\n selector: 'studio-popover',\n standalone: true,\n imports: [NgTemplateOutlet, IconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-visible]': 'visible()',\n },\n templateUrl: './popover.component.html',\n styleUrl: './popover.component.scss'\n})\nexport class PopoverComponent {\n private readonly document = inject(DOCUMENT);\n private readonly destroyRef = inject(DestroyRef);\n private readonly injector = inject(Injector);\n private readonly configService = inject(StudioConfigService);\n private readonly popoverDefaults = computed(() => this.configService.config().components?.popover);\n\n protected readonly headerTemplate = contentChild<TemplateRef<any>>('popoverHeader');\n protected readonly footerTemplate = contentChild<TemplateRef<any>>('popoverFooter');\n protected readonly contentTemplate = contentChild<TemplateRef<any>>('popoverContent');\n protected readonly triggerEl = viewChild<ElementRef<HTMLElement>>('popoverTrigger');\n protected readonly panelEl = viewChild<ElementRef<HTMLDivElement>>('popoverPanel');\n protected readonly arrowEl = viewChild<ElementRef<HTMLDivElement>>('popoverArrow');\n\n id = input<string>('studio-popover-' + Math.random().toString(36).substring(2, 11));\n visible = model<boolean>(false);\n disabled = input<boolean>(false);\n\n triggerInput = input<PopoverTrigger | undefined>(undefined, { alias: 'trigger' });\n openDelay = input<number>(0);\n closeDelay = input<number>(200);\n trigger = withConfigDefault(this.triggerInput, computed(() => this.popoverDefaults()?.trigger), 'click');\n\n positionInput = input<PopoverPosition | undefined>(undefined, { alias: 'position' });\n offset = input<number>(8);\n preventOverflow = input<boolean>(true);\n flipValue = input<boolean>(true);\n position = withConfigDefault(this.positionInput, computed(() => this.popoverDefaults()?.position), 'bottom');\n\n variantInput = input<PopoverVariant | undefined>(undefined, { alias: 'variant' });\n sizeInput = input<PopoverSize | undefined>(undefined, { alias: 'size' });\n width = input<PopoverWidth>('auto');\n minWidth = input<string | number | undefined>(undefined);\n maxWidth = input<string | number | undefined>(undefined);\n maxHeight = input<string | number | undefined>(undefined);\n padding = input<string | undefined>(undefined);\n variant = withConfigDefault(this.variantInput, computed(() => this.popoverDefaults()?.variant), 'default');\n size = withConfigDefault(this.sizeInput, computed(() => this.popoverDefaults()?.size), 'md');\n\n arrow = input<boolean>(true);\n arrowSize = input<number>(8);\n\n closeOnClickOutside = input<boolean>(true);\n closeOnEscape = input<boolean>(true);\n closeOnScroll = input<boolean>(false);\n\n showOverlay = input<boolean>(false);\n overlayOpacity = input<number>(0.5);\n\n animationInput = input<PopoverAnimation | undefined>(undefined, { alias: 'animation' });\n animationDuration = input<number>(200);\n animation = withConfigDefault(this.animationInput, computed(() => this.popoverDefaults()?.animation), 'fade');\n\n showHeader = input<boolean>(true);\n showFooter = input<boolean>(true);\n showCloseButton = input<boolean>(false);\n content = input<string | undefined>(undefined);\n\n zIndex = input<number>(1000);\n\n ariaLabel = input<string | undefined>(undefined);\n role = input<string>('dialog');\n\n visibleChange = output<boolean>();\n opened = output<void>();\n closed = output<void>();\n positionChanged = output<Placement>();\n\n private cleanup?: () => void;\n private openTimeout?: number;\n private closeTimeout?: number;\n private isHovered = signal(false);\n private isFocused = signal(false);\n\n protected hostClasses = computed(() => classNames(\n 'studio-popover',\n 'studio-popover--' + this.variant(),\n 'studio-popover--' + this.size(),\n 'studio-popover--' + this.animation(),\n this.visible() && 'studio-popover--visible',\n this.showOverlay() && 'studio-popover--with-overlay'\n ));\n\n constructor() {\n effect(() => {\n if (this.visible()) {\n this.handleOpen();\n } else {\n this.handleClose();\n }\n });\n\n afterNextRender(() => {\n this.setupPositioning();\n }, { injector: this.injector });\n\n this.destroyRef.onDestroy(() => {\n this.cleanup?.();\n this.clearTimeouts();\n });\n }\n\n private setupPositioning(): void {\n const triggerElement = this.triggerEl()?.nativeElement;\n const panelElement = this.panelEl()?.nativeElement;\n\n if (!triggerElement || !panelElement) return;\n\n this.cleanup?.();\n this.cleanup = autoUpdate(triggerElement, panelElement, () => {\n this.updatePosition();\n });\n }\n\n private async updatePosition(): Promise<void> {\n const triggerElement = this.triggerEl()?.nativeElement;\n const panelElement = this.panelEl()?.nativeElement;\n const arrowElement = this.arrowEl()?.nativeElement;\n\n if (!triggerElement || !panelElement || !this.visible()) return;\n\n const middleware = [\n floatingOffset(this.offset()),\n this.flipValue() && flip(),\n this.preventOverflow() && shift({ padding: 8 }),\n arrowElement && this.arrow() && floatingArrow({ element: arrowElement })\n ].filter(Boolean) as any[];\n\n const { x, y, placement, middlewareData } = await computePosition(\n triggerElement,\n panelElement,\n {\n placement: this.position() as Placement,\n middleware\n }\n );\n\n Object.assign(panelElement.style, {\n left: x + 'px',\n top: y + 'px',\n });\n\n if (arrowElement && middlewareData.arrow && this.arrow()) {\n const { x: arrowX, y: arrowY } = middlewareData.arrow;\n const staticSide = {\n top: 'bottom',\n right: 'left',\n bottom: 'top',\n left: 'right',\n }[placement.split('-')[0]];\n\n Object.assign(arrowElement.style, {\n left: arrowX != null ? arrowX + 'px' : '',\n top: arrowY != null ? arrowY + 'px' : '',\n right: '',\n bottom: '',\n [staticSide as string]: '-' + (this.arrowSize() / 2) + 'px',\n });\n }\n\n this.positionChanged.emit(placement);\n }\n\n protected handleOpen(): void {\n if (this.closeOnScroll()) {\n this.document.addEventListener('scroll', this.handleScrollBind, true);\n }\n this.opened.emit();\n setTimeout(() => this.updatePosition(), 0);\n }\n\n protected handleClose(): void {\n if (this.closeOnScroll()) {\n this.document.removeEventListener('scroll', this.handleScrollBind, true);\n }\n this.closed.emit();\n }\n\n private handleScrollBind = this.handleScroll.bind(this);\n\n private handleScroll(): void {\n if (this.visible()) {\n this.close();\n }\n }\n\n public open(): void {\n if (this.disabled()) return;\n this.visible.set(true);\n this.visibleChange.emit(true);\n }\n\n public close(): void {\n this.visible.set(false);\n this.visibleChange.emit(false);\n }\n\n public toggle(): void {\n if (this.visible()) {\n this.close();\n } else {\n this.open();\n }\n }\n\n protected handleTriggerClick(): void {\n if (this.trigger() === 'click' || this.trigger() === 'manual') {\n this.toggle();\n }\n }\n\n protected handleTriggerMouseEnter(): void {\n if (this.trigger() === 'hover') {\n this.clearTimeouts();\n this.isHovered.set(true);\n this.openTimeout = window.setTimeout(() => {\n this.open();\n }, this.openDelay());\n }\n }\n\n protected handleTriggerMouseLeave(): void {\n if (this.trigger() === 'hover') {\n this.clearTimeouts();\n this.isHovered.set(false);\n this.closeTimeout = window.setTimeout(() => {\n if (!this.isHovered()) {\n this.close();\n }\n }, this.closeDelay());\n }\n }\n\n protected handlePanelMouseEnter(): void {\n if (this.trigger() === 'hover') {\n this.clearTimeouts();\n this.isHovered.set(true);\n }\n }\n\n protected handlePanelMouseLeave(): void {\n if (this.trigger() === 'hover') {\n this.isHovered.set(false);\n this.closeTimeout = window.setTimeout(() => {\n if (!this.isHovered()) {\n this.close();\n }\n }, this.closeDelay());\n }\n }\n\n protected handleTriggerFocus(): void {\n if (this.trigger() === 'focus') {\n this.isFocused.set(true);\n this.open();\n }\n }\n\n protected handleTriggerBlur(): void {\n if (this.trigger() === 'focus') {\n this.isFocused.set(false);\n setTimeout(() => {\n if (!this.isFocused()) {\n this.close();\n }\n }, 100);\n }\n }\n\n protected handleBackdropClick(): void {\n if (this.closeOnClickOutside()) {\n this.close();\n }\n }\n\n @HostListener('document:click', ['$event'])\n protected handleDocumentClick(event: MouseEvent): void {\n if (!this.visible() || !this.closeOnClickOutside()) return;\n\n const target = event.target as HTMLElement;\n const panel = this.panelEl()?.nativeElement;\n const trigger = this.triggerEl()?.nativeElement;\n\n if (panel && !panel.contains(target) && trigger && !trigger.contains(target)) {\n this.close();\n }\n }\n\n @HostListener('document:keydown.escape', ['$event'])\n protected handleEscapeKey(event: KeyboardEvent): void {\n if (this.visible() && this.closeOnEscape()) {\n event.preventDefault();\n this.close();\n }\n }\n\n private clearTimeouts(): void {\n if (this.openTimeout) {\n window.clearTimeout(this.openTimeout);\n this.openTimeout = undefined;\n }\n if (this.closeTimeout) {\n window.clearTimeout(this.closeTimeout);\n this.closeTimeout = undefined;\n }\n }\n}\n","@if (showOverlay() && visible()) {\n <div\n class=\"studio-popover__overlay\"\n [style.opacity]=\"overlayOpacity()\"\n [style.z-index]=\"zIndex()\"\n (click)=\"handleBackdropClick()\"\n ></div>\n}\n\n<div\n #popoverTrigger\n class=\"studio-popover__trigger\"\n (click)=\"handleTriggerClick()\"\n (mouseenter)=\"handleTriggerMouseEnter()\"\n (mouseleave)=\"handleTriggerMouseLeave()\"\n (focus)=\"handleTriggerFocus()\"\n (blur)=\"handleTriggerBlur()\"\n>\n <ng-content />\n</div>\n\n@if (visible()) {\n <div\n #popoverPanel\n class=\"studio-popover__panel\"\n [style.z-index]=\"zIndex() + 1\"\n [style.width]=\"width() === 'auto' ? 'auto' : width() === 'trigger' && triggerEl()?.nativeElement ? triggerEl()!.nativeElement.offsetWidth + 'px' : width()\"\n [style.min-width]=\"minWidth() ? (typeof minWidth() === 'number' ? minWidth() + 'px' : minWidth()) : undefined\"\n [style.max-width]=\"maxWidth() ? (typeof maxWidth() === 'number' ? maxWidth() + 'px' : maxWidth()) : undefined\"\n [style.max-height]=\"maxHeight() ? (typeof maxHeight() === 'number' ? maxHeight() + 'px' : maxHeight()) : undefined\"\n [style.padding]=\"padding()\"\n [attr.role]=\"role()\"\n [attr.aria-label]=\"ariaLabel()\"\n (mouseenter)=\"handlePanelMouseEnter()\"\n (mouseleave)=\"handlePanelMouseLeave()\"\n >\n @if (arrow()) {\n <div #popoverArrow class=\"studio-popover__arrow\" [style.width.px]=\"arrowSize()\" [style.height.px]=\"arrowSize()\"></div>\n }\n\n @if (showHeader() && (headerTemplate() || showCloseButton())) {\n <div class=\"studio-popover__header\">\n @if (headerTemplate()) {\n <ng-container *ngTemplateOutlet=\"headerTemplate()!\" />\n }\n \n @if (showCloseButton()) {\n <button\n type=\"button\"\n class=\"studio-popover__close\"\n (click)=\"close()\"\n aria-label=\"Close\"\n >\n <studio-icon name=\"x\" [size]=\"18\" />\n </button>\n }\n </div>\n }\n\n <div class=\"studio-popover__content\">\n @if (contentTemplate()) {\n <ng-container *ngTemplateOutlet=\"contentTemplate()!\" />\n } @else if (content()) {\n {{ content() }}\n } @else {\n <ng-content select=\"[popoverContent]\" />\n }\n </div>\n\n @if (showFooter() && footerTemplate()) {\n <div class=\"studio-popover__footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate()!\" />\n </div>\n }\n </div>\n}\n","import { Component, ChangeDetectionStrategy, input, output, computed, signal, inject, forwardRef, effect } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { PopoverComponent } from '../popover';\nimport { ColorPickerComponent } from '../color-picker';\nimport { ButtonComponent } from '../button';\nimport { StudioConfigService } from '../../config';\nimport { classNames } from '../../utils';\n\n@Component({\n selector: 'studio-color-picker-compact',\n standalone: true,\n imports: [FormsModule, PopoverComponent, ColorPickerComponent, ButtonComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ColorPickerCompactComponent),\n multi: true\n }\n ],\n host: {\n '[class]': 'hostClasses()',\n },\n template: `\n <studio-popover\n [trigger]=\"trigger()\"\n [position]=\"position()\"\n [width]=\"popoverWidth()\"\n [arrow]=\"showArrow()\"\n [closeOnClickOutside]=\"false\"\n [(visible)]=\"isOpen\"\n [showFooter]=\"showFooter()\"\n >\n <div\n class=\"color-picker-compact__trigger\"\n [class.color-picker-compact__trigger--disabled]=\"disabled()\"\n [style.width]=\"triggerSize()\"\n [style.height]=\"triggerSize()\"\n [style.border-radius]=\"triggerRadius()\"\n [style.background]=\"currentValue()\"\n [attr.aria-label]=\"ariaLabel() || 'Select color'\"\n [attr.role]=\"'button'\"\n [attr.tabindex]=\"disabled() ? -1 : 0\"\n >\n @if (showCurrentColor()) {\n <span class=\"color-picker-compact__color-text\">{{ currentValue() }}</span>\n }\n </div>\n\n <div popoverContent>\n <studio-color-picker\n [(ngModel)]=\"tempValue\"\n [format]=\"format()\"\n [showAlpha]=\"showAlpha()\"\n [showPresets]=\"showPresets()\"\n [showFormatToggle]=\"showFormatToggle()\"\n [showCopyButton]=\"showCopyButton()\"\n [presets]=\"presets()\"\n [disabled]=\"disabled()\"\n />\n </div>\n\n @if (showFooter()) {\n <ng-template #popoverFooter>\n <div class=\"color-picker-compact__footer\">\n <studio-button\n variant=\"outline\"\n size=\"sm\"\n (click)=\"handleCancel()\"\n [fullWidth]=\"true\"\n >\n {{ cancelLabel() }}\n </studio-button>\n <studio-button\n size=\"sm\"\n (click)=\"handleApply()\"\n [fullWidth]=\"true\"\n >\n {{ applyLabel() }}\n </studio-button>\n </div>\n </ng-template>\n }\n </studio-popover>\n `,\n styles: `\n :host {\n display: inline-block;\n }\n\n .color-picker-compact__trigger {\n position: relative;\n cursor: pointer;\n border: 2px solid var(--studio-border-primary);\n transition: all var(--studio-transition-fast);\n overflow: hidden;\n\n &:hover:not(.color-picker-compact__trigger--disabled) {\n border-color: var(--studio-border-secondary);\n transform: scale(1.05);\n }\n\n &:active:not(.color-picker-compact__trigger--disabled) {\n transform: scale(0.95);\n }\n\n &:focus-visible {\n outline: 2px solid var(--studio-primary);\n outline-offset: 2px;\n }\n\n &--disabled {\n cursor: not-allowed;\n opacity: 0.5;\n }\n }\n\n .color-picker-compact__color-text {\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n padding: 0.125rem 0.25rem;\n background: rgba(0, 0, 0, 0.6);\n color: white;\n font-size: 0.625rem;\n text-align: center;\n font-family: var(--studio-font-family-mono, monospace);\n }\n\n .color-picker-compact__footer {\n display: flex;\n gap: 0.75rem;\n padding: 1rem;\n }\n `\n})\nexport class ColorPickerCompactComponent implements ControlValueAccessor {\n private readonly configService = inject(StudioConfigService);\n\n trigger = input<'click' | 'hover'>('click');\n position = input<'top' | 'bottom' | 'left' | 'right' | 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end'>('bottom-start');\n popoverWidth = input<string>('280px');\n showArrow = input<boolean>(false);\n closeOnClickOutside = input<boolean>(true);\n\n triggerSize = input<string>('32px');\n triggerRadius = input<string>('var(--studio-radius-sm)');\n showCurrentColor = input<boolean>(false);\n\n format = input<'hex' | 'rgb' | 'hsl'>('hex');\n showAlpha = input<boolean>(false);\n showPresets = input<boolean>(true);\n showFormatToggle = input<boolean>(false);\n showCopyButton = input<boolean>(false);\n presets = input<any[] | undefined>(undefined);\n\n showFooter = input<boolean>(true);\n applyLabel = input<string>('OK');\n cancelLabel = input<string>('Отмена');\n\n disabled = input<boolean>(false);\n ariaLabel = input<string | undefined>(undefined);\n\n colorChange = output<string>();\n\n protected currentValue = signal<string>('#000000');\n protected tempValue = signal<string>('#000000');\n protected isOpen = signal<boolean>(false);\n\n protected hostClasses = computed(() => classNames(\n 'color-picker-compact',\n this.disabled() && 'color-picker-compact--disabled'\n ));\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor() {\n effect(() => {\n // Sync temp value when popover opens\n if (this.isOpen()) {\n this.tempValue.set(this.currentValue());\n }\n });\n }\n\n protected handleApply(): void {\n this.currentValue.set(this.tempValue());\n this.onChange(this.tempValue());\n this.colorChange.emit(this.tempValue());\n this.onTouched();\n this.isOpen.set(false);\n }\n\n protected handleCancel(): void {\n this.tempValue.set(this.currentValue());\n this.isOpen.set(false);\n }\n\n writeValue(value: string): void {\n if (value) {\n this.currentValue.set(value);\n this.tempValue.set(value);\n }\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {}\n}\n","import { Injectable, WritableSignal } from '@angular/core';\n\n/**\n * Service for programmatic control of Drawer components\n *\n * @example\n * ```typescript\n * // In component\n * private drawerService = inject(DrawerService);\n *\n * openSettings() {\n * this.drawerService.open('settings-drawer');\n * }\n * ```\n */\n@Injectable({ providedIn: 'root' })\nexport class DrawerService {\n private drawers = new Map<string, WritableSignal<boolean>>();\n\n /**\n * Register a drawer with the service\n * Called automatically by DrawerComponent\n */\n register(id: string, signal: WritableSignal<boolean>): void {\n this.drawers.set(id, signal);\n }\n\n /**\n * Unregister a drawer from the service\n * Called automatically on component destroy\n */\n unregister(id: string): void {\n this.drawers.delete(id);\n }\n\n /**\n * Open a drawer by ID\n */\n open(id: string): void {\n const drawer = this.drawers.get(id);\n if (drawer) {\n drawer.set(true);\n } else {\n console.warn(`[DrawerService] Drawer with id=\"${id}\" not found`);\n }\n }\n\n /**\n * Close a drawer by ID\n */\n close(id: string): void {\n const drawer = this.drawers.get(id);\n if (drawer) {\n drawer.set(false);\n } else {\n console.warn(`[DrawerService] Drawer with id=\"${id}\" not found`);\n }\n }\n\n /**\n * Toggle a drawer by ID\n */\n toggle(id: string): void {\n const drawer = this.drawers.get(id);\n if (drawer) {\n drawer.update(v => !v);\n } else {\n console.warn(`[DrawerService] Drawer with id=\"${id}\" not found`);\n }\n }\n\n /**\n * Close all registered drawers\n */\n closeAll(): void {\n this.drawers.forEach(signal => signal.set(false));\n }\n\n /**\n * Check if a drawer is open\n */\n isOpen(id: string): boolean {\n const drawer = this.drawers.get(id);\n return drawer ? drawer() : false;\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n signal,\n inject,\n model,\n effect,\n contentChild,\n viewChild,\n ElementRef,\n TemplateRef,\n HostListener,\n DestroyRef,\n DOCUMENT,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { IconComponent } from '../icon';\nimport { StudioConfigService } from '../../config';\nimport { classNames, withConfigDefault } from '../../utils';\nimport { DrawerService } from './drawer.service';\nimport {\n DrawerPosition,\n DrawerSize,\n DrawerRadius,\n DrawerShadowSize,\n DrawerRole,\n DrawerAnimationEasing,\n DrawerCloseButtonPosition\n} from './drawer.types';\n\n@Component({\n selector: 'studio-drawer',\n standalone: true,\n imports: [NgTemplateOutlet, IconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-visible]': 'visible()',\n },\n templateUrl: './drawer.component.html',\n styleUrl: './drawer.component.scss'\n})\nexport class DrawerComponent {\n private readonly document = inject(DOCUMENT);\n private readonly destroyRef = inject(DestroyRef);\n private readonly configService = inject(StudioConfigService);\n private readonly drawerService = inject(DrawerService);\n private readonly drawerDefaults = computed(() => this.configService.config().components?.drawer);\n\n // Template references\n protected readonly headerTemplate = contentChild<TemplateRef<any>>('headerTemplate');\n protected readonly footerTemplate = contentChild<TemplateRef<any>>('footerTemplate');\n protected readonly panelEl = viewChild<ElementRef<HTMLDivElement>>('drawerPanel');\n\n // Core\n id = input<string>(`studio-drawer-${Math.random().toString(36).substr(2, 9)}`);\n visible = model<boolean>(false);\n\n // Position & Size\n positionInput = input<DrawerPosition | undefined>(undefined, { alias: 'position' });\n sizeInput = input<DrawerSize | undefined>(undefined, { alias: 'size' });\n customWidth = input<string | undefined>(undefined);\n customHeight = input<string | undefined>(undefined);\n\n position = withConfigDefault(this.positionInput, computed(() => this.drawerDefaults()?.position), 'right');\n size = withConfigDefault(this.sizeInput, computed(() => this.drawerDefaults()?.size), 'md');\n\n // Behavior\n modalInput = input<boolean | undefined>(undefined, { alias: 'modal' });\n closeOnEscapeInput = input<boolean | undefined>(undefined, { alias: 'closeOnEscape' });\n closeOnBackdropClickInput = input<boolean | undefined>(undefined, { alias: 'closeOnBackdropClick' });\n blockScrollInput = input<boolean | undefined>(undefined, { alias: 'blockScroll' });\n\n modal = withConfigDefault(this.modalInput, computed(() => this.drawerDefaults()?.modal), true);\n closeOnEscape = withConfigDefault(this.closeOnEscapeInput, computed(() => this.drawerDefaults()?.closeOnEscape), true);\n closeOnBackdropClick = withConfigDefault(this.closeOnBackdropClickInput, computed(() => this.drawerDefaults()?.closeOnBackdropClick), true);\n blockScroll = withConfigDefault(this.blockScrollInput, computed(() => this.drawerDefaults()?.blockScroll), true);\n\n // UI Elements\n header = input<string | undefined>(undefined);\n showHeaderInput = input<boolean | undefined>(undefined, { alias: 'showHeader' });\n showCloseButtonInput = input<boolean | undefined>(undefined, { alias: 'showCloseButton' });\n closeButtonPositionInput = input<DrawerCloseButtonPosition | undefined>(undefined, { alias: 'closeButtonPosition' });\n showFooter = input<boolean>(true);\n\n showHeader = withConfigDefault(this.showHeaderInput, computed(() => this.drawerDefaults()?.showHeader ?? true), true);\n showCloseButton = withConfigDefault(this.showCloseButtonInput, computed(() => this.drawerDefaults()?.showCloseButton), true);\n closeButtonPosition = withConfigDefault(this.closeButtonPositionInput, computed(() => this.drawerDefaults()?.closeButtonPosition), 'right');\n\n // Swipe Gestures\n swipeToCloseInput = input<boolean | undefined>(undefined, { alias: 'swipeToClose' });\n swipeThresholdInput = input<number | undefined>(undefined, { alias: 'swipeThreshold' });\n\n swipeToClose = withConfigDefault(this.swipeToCloseInput, computed(() => this.drawerDefaults()?.swipeToClose), true);\n swipeThreshold = withConfigDefault(this.swipeThresholdInput, computed(() => this.drawerDefaults()?.swipeThreshold), 50);\n\n // Animation\n animationDurationInput = input<number | undefined>(undefined, { alias: 'animationDuration' });\n animationEasingInput = input<DrawerAnimationEasing | undefined>(undefined, { alias: 'animationEasing' });\n disableAnimationInput = input<boolean | undefined>(undefined, { alias: 'disableAnimation' });\n\n animationDuration = withConfigDefault(this.animationDurationInput, computed(() => this.drawerDefaults()?.animationDuration), 300);\n animationEasing = withConfigDefault(this.animationEasingInput, computed(() => this.drawerDefaults()?.animationEasing), 'ease-out');\n disableAnimation = withConfigDefault(this.disableAnimationInput, computed(() => this.drawerDefaults()?.disableAnimation), false);\n\n // Styling\n radiusInput = input<DrawerRadius | undefined>(undefined, { alias: 'radius' });\n shadowInput = input<boolean | undefined>(undefined, { alias: 'shadow' });\n shadowSizeInput = input<DrawerShadowSize | undefined>(undefined, { alias: 'shadowSize' });\n\n radius = withConfigDefault(this.radiusInput, computed(() => this.drawerDefaults()?.radius), 'none');\n shadow = withConfigDefault(this.shadowInput, computed(() => this.drawerDefaults()?.shadow), true);\n shadowSize = withConfigDefault(this.shadowSizeInput, computed(() => this.drawerDefaults()?.shadowSize), 'lg');\n\n // Accessibility\n ariaLabel = input<string | undefined>(undefined);\n ariaLabelledBy = input<string | undefined>(undefined);\n ariaDescribedBy = input<string | undefined>(undefined);\n autoFocusInput = input<boolean | undefined>(undefined, { alias: 'autoFocus' });\n restoreFocusInput = input<boolean | undefined>(undefined, { alias: 'restoreFocus' });\n roleInput = input<DrawerRole | undefined>(undefined, { alias: 'role' });\n\n autoFocus = withConfigDefault(this.autoFocusInput, computed(() => this.drawerDefaults()?.autoFocus), true);\n restoreFocus = withConfigDefault(this.restoreFocusInput, computed(() => this.drawerDefaults()?.restoreFocus), true);\n role = withConfigDefault(this.roleInput, computed(() => this.drawerDefaults()?.role), 'dialog');\n\n // Outputs\n visibleChange = output<boolean>();\n opened = output<void>();\n closed = output<void>();\n backdropClick = output<void>();\n\n // Internal state\n private previousActiveElement?: HTMLElement;\n private touchStartX = 0;\n private touchStartY = 0;\n private isDragging = signal(false);\n private scrollbarWidth = 0;\n\n protected hostClasses = computed(() => classNames(\n 'studio-drawer',\n `studio-drawer--${this.position()}`,\n `studio-drawer--${this.size()}`,\n this.visible() && 'studio-drawer--visible',\n this.modal() && 'studio-drawer--modal',\n this.shadow() && `studio-drawer--shadow-${this.shadowSize()}`,\n this.isDragging() && 'studio-drawer--dragging',\n (this.position() === 'left' || this.position() === 'right') && `studio-drawer--radius-${this.radius()}`\n ));\n\n constructor() {\n // Register with DrawerService\n effect(() => {\n this.drawerService.register(this.id(), this.visible);\n });\n\n // Handle visibility changes\n effect(() => {\n if (this.visible()) {\n this.handleOpen();\n } else {\n this.handleClose();\n }\n });\n\n // Cleanup on destroy\n this.destroyRef.onDestroy(() => {\n this.drawerService.unregister(this.id());\n this.unlockBodyScroll();\n });\n }\n\n protected handleOpen(): void {\n if (this.blockScroll() && this.modal()) {\n this.lockBodyScroll();\n }\n\n if (this.autoFocus()) {\n this.setupFocusTrap();\n }\n\n this.opened.emit();\n }\n\n protected handleClose(): void {\n if (this.blockScroll() && this.modal()) {\n this.unlockBodyScroll();\n }\n\n if (this.restoreFocus()) {\n this.restorePreviousFocus();\n }\n\n this.closed.emit();\n }\n\n public open(): void {\n this.visible.set(true);\n this.visibleChange.emit(true);\n }\n\n public close(): void {\n this.visible.set(false);\n this.visibleChange.emit(false);\n }\n\n public toggle(): void {\n this.visible.update(v => !v);\n this.visibleChange.emit(this.visible());\n }\n\n protected handleBackdropClick(): void {\n this.backdropClick.emit();\n if (this.closeOnBackdropClick()) {\n this.close();\n }\n }\n\n @HostListener('document:keydown.escape', ['$event'])\n protected handleEscapeKey(event: KeyboardEvent): void {\n if (this.visible() && this.closeOnEscape()) {\n event.preventDefault();\n this.close();\n }\n }\n\n // Touch gesture handling\n @HostListener('touchstart', ['$event'])\n protected onTouchStart(event: TouchEvent): void {\n if (!this.swipeToClose() || !this.visible()) return;\n\n const target = event.target as HTMLElement;\n const panel = this.panelEl()?.nativeElement;\n\n // Only start drag if touching the panel\n if (!panel?.contains(target)) return;\n\n this.touchStartX = event.touches[0].clientX;\n this.touchStartY = event.touches[0].clientY;\n this.isDragging.set(true);\n }\n\n @HostListener('touchmove', ['$event'])\n protected onTouchMove(event: TouchEvent): void {\n if (!this.isDragging()) return;\n\n const deltaX = event.touches[0].clientX - this.touchStartX;\n const deltaY = event.touches[0].clientY - this.touchStartY;\n const pos = this.position();\n\n // Apply drag transform based on position\n let shouldAllowDrag = false;\n\n if (pos === 'right' && deltaX > 0) {\n shouldAllowDrag = true;\n this.applyDragTransform(deltaX, 0);\n } else if (pos === 'left' && deltaX < 0) {\n shouldAllowDrag = true;\n this.applyDragTransform(deltaX, 0);\n } else if (pos === 'bottom' && deltaY > 0) {\n shouldAllowDrag = true;\n this.applyDragTransform(0, deltaY);\n } else if (pos === 'top' && deltaY < 0) {\n shouldAllowDrag = true;\n this.applyDragTransform(0, deltaY);\n }\n\n // Prevent scroll while dragging\n if (shouldAllowDrag && (Math.abs(deltaX) > 10 || Math.abs(deltaY) > 10)) {\n event.preventDefault();\n }\n }\n\n @HostListener('touchend', ['$event'])\n protected onTouchEnd(event: TouchEvent): void {\n if (!this.isDragging()) return;\n\n const deltaX = event.changedTouches[0].clientX - this.touchStartX;\n const deltaY = event.changedTouches[0].clientY - this.touchStartY;\n const threshold = this.swipeThreshold();\n const pos = this.position();\n\n let shouldClose = false;\n\n if (pos === 'right' && deltaX > threshold) shouldClose = true;\n if (pos === 'left' && deltaX < -threshold) shouldClose = true;\n if (pos === 'bottom' && deltaY > threshold) shouldClose = true;\n if (pos === 'top' && deltaY < -threshold) shouldClose = true;\n\n if (shouldClose) {\n this.close();\n } else {\n this.resetTransform();\n }\n\n this.isDragging.set(false);\n }\n\n private applyDragTransform(deltaX: number, deltaY: number): void {\n const panel = this.panelEl()?.nativeElement;\n if (!panel) return;\n\n const pos = this.position();\n\n if (pos === 'right') {\n const translateX = Math.max(0, deltaX);\n panel.style.transform = `translateX(${translateX}px)`;\n panel.style.transition = 'none';\n } else if (pos === 'left') {\n const translateX = Math.min(0, deltaX);\n panel.style.transform = `translateX(${translateX}px)`;\n panel.style.transition = 'none';\n } else if (pos === 'bottom') {\n const translateY = Math.max(0, deltaY);\n panel.style.transform = `translateY(${translateY}px)`;\n panel.style.transition = 'none';\n } else if (pos === 'top') {\n const translateY = Math.min(0, deltaY);\n panel.style.transform = `translateY(${translateY}px)`;\n panel.style.transition = 'none';\n }\n }\n\n private resetTransform(): void {\n const panel = this.panelEl()?.nativeElement;\n if (!panel) return;\n\n panel.style.transition = '';\n panel.style.transform = '';\n }\n\n // Body scroll lock\n private lockBodyScroll(): void {\n this.scrollbarWidth = window.innerWidth - this.document.documentElement.clientWidth;\n this.document.body.style.overflow = 'hidden';\n this.document.body.style.paddingRight = `${this.scrollbarWidth}px`;\n }\n\n private unlockBodyScroll(): void {\n this.document.body.style.overflow = '';\n this.document.body.style.paddingRight = '';\n }\n\n // Focus management\n private setupFocusTrap(): void {\n this.previousActiveElement = this.document.activeElement as HTMLElement;\n\n // Move focus to drawer after render\n setTimeout(() => {\n const panel = this.panelEl()?.nativeElement;\n if (!panel) return;\n\n const firstFocusable = this.getFirstFocusableElement(panel);\n if (firstFocusable) {\n firstFocusable.focus();\n } else {\n panel.focus();\n }\n }, 0);\n }\n\n private restorePreviousFocus(): void {\n if (this.previousActiveElement) {\n this.previousActiveElement.focus();\n this.previousActiveElement = undefined;\n }\n }\n\n private getFirstFocusableElement(container: HTMLElement): HTMLElement | null {\n const focusableSelectors = [\n 'a[href]',\n 'button:not([disabled])',\n 'textarea:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])'\n ].join(', ');\n\n return container.querySelector<HTMLElement>(focusableSelectors);\n }\n\n @HostListener('keydown', ['$event'])\n protected handleKeydown(event: KeyboardEvent): void {\n if (!this.visible()) return;\n\n if (event.key === 'Tab') {\n this.trapFocus(event);\n }\n }\n\n private trapFocus(event: KeyboardEvent): void {\n const panel = this.panelEl()?.nativeElement;\n if (!panel) return;\n\n const focusableElements = panel.querySelectorAll<HTMLElement>([\n 'a[href]',\n 'button:not([disabled])',\n 'textarea:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])'\n ].join(', '));\n\n const firstElement = focusableElements[0];\n const lastElement = focusableElements[focusableElements.length - 1];\n\n if (event.shiftKey) {\n if (this.document.activeElement === firstElement) {\n event.preventDefault();\n lastElement?.focus();\n }\n } else {\n if (this.document.activeElement === lastElement) {\n event.preventDefault();\n firstElement?.focus();\n }\n }\n }\n}\n","@if (visible()) {\n <!-- Backdrop -->\n @if (modal()) {\n <div\n class=\"studio-drawer__backdrop\"\n (click)=\"handleBackdropClick()\">\n </div>\n }\n\n <!-- Drawer Panel -->\n <div\n #drawerPanel\n class=\"studio-drawer__panel\"\n [attr.role]=\"role()\"\n [attr.aria-modal]=\"modal()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-labelledby]=\"ariaLabelledBy()\"\n [attr.aria-describedby]=\"ariaDescribedBy()\"\n [attr.tabindex]=\"-1\"\n [style.width]=\"customWidth()\"\n [style.height]=\"customHeight()\"\n [style.--drawer-animation-duration]=\"animationDuration() + 'ms'\"\n [style.--drawer-animation-timing]=\"animationEasing()\">\n\n <!-- Header -->\n @if (showHeader() && (headerTemplate() || header() || showCloseButton())) {\n <div class=\"studio-drawer__header\">\n @if (headerTemplate(); as tmpl) {\n <!-- Custom template -->\n <ng-container *ngTemplateOutlet=\"tmpl\" />\n } @else if (header()) {\n <!-- Simple string header -->\n <div class=\"studio-drawer__header-content\">\n @if (showCloseButton() && closeButtonPosition() === 'left') {\n <button\n type=\"button\"\n class=\"studio-drawer__close\"\n (click)=\"close()\"\n aria-label=\"Close drawer\">\n <studio-icon name=\"x\" [size]=\"20\" />\n </button>\n }\n\n <h2 class=\"studio-drawer__title\">{{ header() }}</h2>\n\n @if (showCloseButton() && closeButtonPosition() === 'right') {\n <button\n type=\"button\"\n class=\"studio-drawer__close\"\n (click)=\"close()\"\n aria-label=\"Close drawer\">\n <studio-icon name=\"x\" [size]=\"20\" />\n </button>\n }\n </div>\n } @else {\n <!-- Named slot fallback -->\n <div class=\"studio-drawer__header-content\">\n @if (showCloseButton() && closeButtonPosition() === 'left') {\n <button\n type=\"button\"\n class=\"studio-drawer__close\"\n (click)=\"close()\"\n aria-label=\"Close drawer\">\n <studio-icon name=\"x\" [size]=\"20\" />\n </button>\n }\n\n <ng-content select=\"[drawerHeader]\" />\n\n @if (showCloseButton() && closeButtonPosition() === 'right') {\n <button\n type=\"button\"\n class=\"studio-drawer__close\"\n (click)=\"close()\"\n aria-label=\"Close drawer\">\n <studio-icon name=\"x\" [size]=\"20\" />\n </button>\n }\n </div>\n }\n </div>\n }\n\n <!-- Content -->\n <div class=\"studio-drawer__content\">\n <ng-content />\n </div>\n\n <!-- Footer -->\n @if (showFooter() && footerTemplate()) {\n <div class=\"studio-drawer__footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate()!\" />\n </div>\n } @else if (showFooter()) {\n <div class=\"studio-drawer__footer\">\n <ng-content select=\"[drawerFooter]\" />\n </div>\n }\n </div>\n}\n","import { Component, ChangeDetectionStrategy, input, output, computed, signal } from '@angular/core';\nimport { PopoverComponent } from '../popover';\nimport { IconComponent } from '../icon';\nimport { classNames } from '../../utils';\nimport { DropdownItem, DropdownPosition } from './dropdown.types';\n\n@Component({\n selector: 'studio-dropdown',\n standalone: true,\n imports: [PopoverComponent, IconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n },\n template: `\n <studio-popover\n [trigger]=\"trigger()\"\n [position]=\"position()\"\n [width]=\"width()\"\n [minWidth]=\"minWidth()\"\n [arrow]=\"false\"\n [closeOnClickOutside]=\"true\"\n [(visible)]=\"isOpen\"\n >\n <ng-content />\n \n <div popoverContent style=\"padding: 0.25rem;\">\n @for (item of items(); track item.id) {\n @if (item.divider) {\n <div class=\"dropdown__divider\"></div>\n } @else {\n <button\n type=\"button\"\n class=\"dropdown__item\"\n [class.dropdown__item--disabled]=\"item.disabled\"\n [class.dropdown__item--danger]=\"item.danger\"\n [disabled]=\"item.disabled\"\n (click)=\"handleItemClick(item)\"\n >\n @if (item.icon) {\n <studio-icon [name]=\"item.icon\" [size]=\"16\" class=\"dropdown__icon\" />\n }\n <span class=\"dropdown__label\">{{ item.label }}</span>\n @if (item.shortcut) {\n <span class=\"dropdown__shortcut\">{{ item.shortcut }}</span>\n }\n </button>\n }\n }\n </div>\n </studio-popover>\n `,\n styles: `\n :host {\n display: inline-block;\n }\n\n .dropdown__item {\n width: 100%;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.5rem 0.75rem;\n background: none;\n border: none;\n border-radius: var(--studio-radius-sm);\n color: var(--studio-text-primary);\n font-size: 0.875rem;\n cursor: pointer;\n transition: all var(--studio-transition-fast);\n text-align: left;\n\n &:hover:not(:disabled) {\n background: var(--studio-bg-secondary);\n }\n\n &:active:not(:disabled) {\n transform: scale(0.98);\n }\n\n &--disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n &--danger {\n color: var(--studio-error);\n }\n }\n\n .dropdown__icon {\n flex-shrink: 0;\n color: var(--studio-text-secondary);\n }\n\n .dropdown__label {\n flex: 1;\n }\n\n .dropdown__shortcut {\n font-size: 0.75rem;\n color: var(--studio-text-tertiary);\n font-family: var(--studio-font-family-mono, monospace);\n }\n\n .dropdown__divider {\n height: 1px;\n background: var(--studio-border-primary);\n margin: 0.25rem 0;\n }\n `\n})\nexport class DropdownComponent {\n items = input.required<DropdownItem[]>();\n trigger = input<'click' | 'hover'>('click');\n position = input<DropdownPosition>('bottom-start');\n width = input<string>('auto');\n minWidth = input<string>('200px');\n\n itemClick = output<DropdownItem>();\n\n protected isOpen = signal<boolean>(false);\n protected hostClasses = computed(() => classNames('studio-dropdown'));\n\n protected handleItemClick(item: DropdownItem): void {\n if (item.disabled) return;\n \n item.onClick?.();\n this.itemClick.emit(item);\n this.isOpen.set(false);\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n signal,\n inject,\n viewChild,\n ElementRef,\n effect,\n forwardRef\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { IconComponent } from '../icon';\nimport { StudioConfigService } from '../../config';\nimport { classNames, withConfigDefault } from '../../utils';\n\nexport type InputType = 'text' | 'email' | 'tel' | 'url' | 'password' | 'number' | 'search' | 'date' | 'time';\nexport type InputMode = 'none' | 'text' | 'decimal' | 'numeric' | 'tel' | 'search' | 'email' | 'url';\n\n/**\n * Input component with form control support, variants, and accessibility\n *\n * @example\n * <studio-input [(ngModel)]=\"email\" label=\"Email\" type=\"email\" />\n * <studio-input [formControl]=\"passwordControl\" type=\"password\" [showPasswordToggle]=\"true\" />\n */\n@Component({\n selector: 'studio-input',\n standalone: true,\n imports: [IconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InputComponent),\n multi: true\n }\n ],\n host: {\n '[class]': 'hostClasses()',\n },\n templateUrl: './input.component.html',\n styleUrl: './input.component.scss'\n})\nexport class InputComponent implements ControlValueAccessor {\n private readonly configService = inject(StudioConfigService);\n private readonly inputDefaults = computed(() => this.configService.config().components?.input);\n\n protected readonly inputEl = viewChild<ElementRef<HTMLInputElement>>('inputElement');\n\n variantInput = input<'outline' | 'filled' | 'underline' | undefined>(undefined, { alias: 'variant' });\n sizeInput = input<'sm' | 'md' | 'lg' | undefined>(undefined, { alias: 'size' });\n radiusInput = input<'none' | 'sm' | 'md' | 'lg' | 'full' | undefined>(undefined, { alias: 'radius' });\n\n variant = withConfigDefault(this.variantInput, computed(() => this.inputDefaults()?.variant), 'outline');\n size = withConfigDefault(this.sizeInput, computed(() => this.inputDefaults()?.size), 'md');\n radius = withConfigDefault(this.radiusInput, computed(() => this.inputDefaults()?.radius), 'md');\n\n disabled = input<boolean>(false);\n readonly = input<boolean>(false);\n loading = input<boolean>(false);\n\n type = input<InputType>('text');\n inputmode = input<InputMode | undefined>(undefined);\n autocomplete = input<string | undefined>(undefined);\n placeholder = input<string | undefined>(undefined);\n maxLength = input<number | undefined>(undefined);\n minLength = input<number | undefined>(undefined);\n min = input<number | string | undefined>(undefined);\n max = input<number | string | undefined>(undefined);\n step = input<number | undefined>(undefined);\n pattern = input<string | undefined>(undefined);\n\n label = input<string | undefined>(undefined);\n floatingLabel = input<boolean>(false);\n hint = input<string | undefined>(undefined);\n\n required = input<boolean>(false);\n error = input<boolean>(false);\n errorMessage = input<string | undefined>(undefined);\n\n prefixIcon = input<string | undefined>(undefined);\n suffixIcon = input<string | undefined>(undefined);\n clearable = input<boolean>(false);\n showPasswordToggle = input<boolean>(false);\n\n fullWidth = input<boolean>(false);\n autoFocus = input<boolean>(false);\n name = input<string | undefined>(undefined);\n id = input<string | undefined>(undefined);\n ariaLabel = input<string | undefined>(undefined);\n\n valueChange = output<string | number>();\n focused = output<FocusEvent>();\n blurred = output<FocusEvent>();\n cleared = output<void>();\n entered = output<KeyboardEvent>();\n\n protected value = signal<string | number>('');\n protected isPasswordVisible = signal(false);\n protected isFocused = signal(false);\n protected isTouched = signal(false);\n protected generatedId = `studio-input-${Math.random().toString(36).substr(2, 9)}`;\n\n private onChange: (value: string | number) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor() {\n effect(() => {\n if (this.autoFocus() && this.inputEl()) {\n setTimeout(() => this.inputEl()?.nativeElement.focus(), 0);\n }\n });\n }\n\n writeValue(value: string | number): void {\n this.value.set(value ?? '');\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 }\n\n protected computedType = computed(() => {\n if (this.type() === 'password' && this.isPasswordVisible()) {\n return 'text';\n }\n return this.type();\n });\n\n protected computedPlaceholder = computed(() => {\n // Don't show placeholder when using floating label\n if (this.floatingLabel()) {\n return '';\n }\n return this.placeholder();\n });\n\n protected hasValue = computed(() => {\n const val = this.value();\n return val !== '' && val !== null && val !== undefined;\n });\n\n protected hostClasses = computed(() => classNames(\n 'studio-input',\n `studio-input--${this.variant()}`,\n `studio-input--${this.size()}`,\n `studio-input--radius-${this.radius()}`,\n this.error() && 'studio-input--error',\n this.disabled() && 'studio-input--disabled',\n this.readonly() && 'studio-input--readonly',\n this.loading() && 'studio-input--loading',\n this.fullWidth() && 'studio-input--full-width',\n this.isFocused() && 'studio-input--focused',\n this.isTouched() && 'studio-input--touched',\n this.hasValue() && 'studio-input--has-value'\n ));\n\n protected ariaDescribedByValue = computed(() => {\n const ids: string[] = [];\n if (this.hint()) ids.push(this.hintId);\n if (this.error() && this.errorMessage()) ids.push(this.errorId);\n return ids.length > 0 ? ids.join(' ') : null;\n });\n\n protected hintId = `${this.generatedId}-hint`;\n protected errorId = `${this.generatedId}-error`;\n\n protected handleInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n const newValue = this.type() === 'number' ? +target.value : target.value;\n this.value.set(newValue);\n this.onChange(newValue);\n this.valueChange.emit(newValue);\n }\n\n protected handleFocus(event: FocusEvent): void {\n this.isFocused.set(true);\n this.focused.emit(event);\n }\n\n protected handleBlur(event: FocusEvent): void {\n this.isFocused.set(false);\n this.isTouched.set(true);\n this.onTouched();\n this.blurred.emit(event);\n }\n\n protected handleClear(): void {\n this.value.set('');\n this.onChange('');\n this.valueChange.emit('');\n this.cleared.emit();\n this.inputEl()?.nativeElement.focus();\n }\n\n protected handleEnter(event: Event): void {\n this.entered.emit(event as KeyboardEvent);\n }\n\n protected togglePasswordVisibility(): void {\n this.isPasswordVisible.update(v => !v);\n }\n}\n","@if (label() && !floatingLabel()) {\n <label [for]=\"id() || generatedId\" class=\"studio-input__label\">\n {{ label() }}\n @if (required()) {\n <span class=\"studio-input__required\">*</span>\n }\n </label>\n}\n\n<div class=\"studio-input__container\">\n @if (prefixIcon()) {\n <span class=\"studio-input__prefix\">\n <studio-icon [name]=\"prefixIcon()!\" [size]=\"16\" />\n </span>\n }\n\n @if (label() && floatingLabel()) {\n <label [for]=\"id() || generatedId\" class=\"studio-input__label--floating\">\n {{ label() }}\n @if (required()) {\n <span>*</span>\n }\n </label>\n }\n\n <input\n #inputElement\n class=\"studio-input__field\"\n [type]=\"computedType()\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly()\"\n [placeholder]=\"computedPlaceholder()\"\n [required]=\"required()\"\n [attr.maxlength]=\"maxLength()\"\n [attr.minlength]=\"minLength()\"\n [min]=\"min()\"\n [max]=\"max()\"\n [step]=\"step()\"\n [pattern]=\"pattern()\"\n [attr.inputmode]=\"inputmode()\"\n [attr.autocomplete]=\"autocomplete()\"\n [name]=\"name()\"\n [id]=\"id() || generatedId\"\n [attr.aria-label]=\"ariaLabel() || (!label() ? placeholder() : null)\"\n [attr.aria-invalid]=\"error() ? 'true' : null\"\n [attr.aria-describedby]=\"ariaDescribedByValue()\"\n [attr.aria-required]=\"required() ? 'true' : null\"\n (input)=\"handleInput($event)\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"\n (keydown.enter)=\"handleEnter($event)\"\n />\n\n @if (loading()) {\n <span class=\"studio-input__loading\">\n <studio-icon name=\"loader-2\" [size]=\"16\" class=\"studio-icon--spin\" />\n </span>\n }\n\n @if (clearable() && value() && !disabled() && !loading()) {\n <button\n type=\"button\"\n class=\"studio-input__clear\"\n (click)=\"handleClear()\"\n [attr.aria-label]=\"'Clear input'\"\n tabindex=\"-1\"\n >\n <studio-icon name=\"x\" [size]=\"14\" />\n </button>\n }\n\n @if (type() === 'password' && showPasswordToggle() && !loading()) {\n <button\n type=\"button\"\n class=\"studio-input__toggle-password\"\n (click)=\"togglePasswordVisibility()\"\n [attr.aria-label]=\"isPasswordVisible() ? 'Hide password' : 'Show password'\"\n tabindex=\"-1\"\n >\n <studio-icon [name]=\"isPasswordVisible() ? 'eye-off' : 'eye'\" [size]=\"16\" />\n </button>\n }\n\n @if (suffixIcon() && !loading() && !clearable() && !(type() === 'password' && showPasswordToggle())) {\n <span class=\"studio-input__suffix\">\n <studio-icon [name]=\"suffixIcon()!\" [size]=\"16\" />\n </span>\n }\n </div>\n\n@if (hint() && !error()) {\n <span class=\"studio-input__hint\" [id]=\"hintId\">\n {{ hint() }}\n </span>\n}\n\n@if (error() && errorMessage()) {\n <span class=\"studio-input__error\" [id]=\"errorId\" role=\"alert\">\n <studio-icon name=\"alert-circle\" [size]=\"14\" />\n {{ errorMessage() }}\n </span>\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n signal,\n effect,\n HostListener,\n inject,\n PLATFORM_ID,\n OnInit\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { Router, RouterLink, RouterLinkActive, IsActiveMatchOptions } from '@angular/router';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport { IconComponent } from '../icon/icon.component';\nimport { BadgeComponent } from '../badge/badge.component';\nimport {\n MenuItem,\n MenuItemClickEvent,\n MenuItemCommandEvent,\n MenuExpandEvent\n} from './menu.types';\n\nexport type MenuOrientation = 'vertical' | 'horizontal';\nexport type MenuMode = 'static' | 'accordion' | 'overlay';\nexport type MenuSize = 'sm' | 'md' | 'lg';\nexport type MenuVariant = 'default' | 'filled' | 'outlined' | 'ghost';\nexport type MenuColor = 'primary' | 'secondary' | 'inherit';\nexport type MenuRadius = 'none' | 'sm' | 'md' | 'lg';\nexport type MenuSpacing = 'none' | 'sm' | 'md' | 'lg';\nexport type MenuExpandIconPosition = 'left' | 'right';\n\n/**\n * Menu component - Primitive component for navigation menus\n *\n * @example\n * <studio-menu\n * [items]=\"menuItems\"\n * size=\"md\"\n * variant=\"default\"\n * (itemClick)=\"handleClick($event)\"\n * />\n */\n@Component({\n selector: 'studio-menu',\n standalone: true,\n imports: [\n CommonModule,\n RouterLink,\n RouterLinkActive,\n IconComponent,\n BadgeComponent\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[attr.role]': 'role()',\n '[attr.aria-label]': 'ariaLabel()',\n '[attr.aria-orientation]': 'orientation()'\n },\n animations: [\n trigger('expandCollapse', [\n state('collapsed', style({\n height: '0',\n opacity: '0',\n overflow: 'hidden'\n })),\n state('expanded', style({\n height: '*',\n opacity: '1',\n overflow: 'visible'\n })),\n transition('collapsed <=> expanded', [\n animate('200ms ease-in-out')\n ])\n ])\n ],\n templateUrl: './menu.component.html',\n styleUrl: './menu.component.scss'\n})\nexport class MenuComponent implements OnInit {\n private router = inject(Router, { optional: true });\n private platformId = inject(PLATFORM_ID);\n\n // ========== Основные параметры ==========\n items = input.required<MenuItem[]>();\n orientation = input<MenuOrientation>('vertical');\n\n // ========== Поведение ==========\n mode = input<MenuMode>('static');\n collapsible = input<boolean>(true);\n defaultExpanded = input<string[]>([]);\n expandOnHover = input<boolean>(false);\n\n // ========== Навигация ==========\n activeItem = input<string>();\n routerLinkActive = input<boolean>(true);\n selectOnNavigate = input<boolean>(true);\n routerLinkActiveOptions = input<IsActiveMatchOptions>({\n paths: 'subset',\n queryParams: 'subset',\n fragment: 'ignored',\n matrixParams: 'ignored'\n });\n\n // ========== Клавиатурная навигация ==========\n keyboardNavigation = input<boolean>(true);\n arrowNavigation = input<boolean>(true);\n homeEndNavigation = input<boolean>(true);\n\n // ========== Анимации ==========\n animated = input<boolean>(true);\n animationDuration = input<number>(200);\n\n // ========== Доступность ==========\n ariaLabel = input<string>();\n role = input<'navigation' | 'menu'>('navigation');\n\n // ========== Стилевые параметры ==========\n size = input<MenuSize>('md');\n compact = input<boolean>(false);\n fullWidth = input<boolean>(false);\n variant = input<MenuVariant>('default');\n color = input<MenuColor>('inherit');\n radius = input<MenuRadius>('md');\n spacing = input<MenuSpacing>('sm');\n showDividers = input<boolean>(false);\n\n // ========== Иконки ==========\n iconSize = input<number>(20);\n iconOnly = input<boolean>(false);\n\n // ========== Подменю ==========\n indentLevel = input<number>(16);\n showExpandIcon = input<boolean>(true);\n expandIconPosition = input<MenuExpandIconPosition>('right');\n expandIcon = input<string>('chevron-down');\n\n // ========== Кастомизация ==========\n class = input<string>('');\n itemClass = input<string>('');\n\n // ========== Internal state (for nested menus) ==========\n level = input<number>(0);\n parentExpanded = input<boolean>(true);\n\n // ========== Outputs ==========\n itemClick = output<MenuItemClickEvent>();\n itemSelect = output<MenuItem>();\n expandChange = output<MenuExpandEvent>();\n activeChange = output<string>();\n\n // ========== Signals for state management ==========\n private expandedItems = signal<Set<string>>(new Set());\n private activeItemId = signal<string | undefined>(undefined);\n private focusedIndex = signal<number>(-1);\n private flattenedItems = computed(() => this.flattenMenuItems(this.items()));\n\n // ========== Computed values ==========\n protected hostClasses = computed(() => {\n const classes = ['studio-menu'];\n\n classes.push(`studio-menu--${this.orientation()}`);\n classes.push(`studio-menu--${this.size()}`);\n classes.push(`studio-menu--${this.variant()}`);\n classes.push(`studio-menu--${this.mode()}`);\n\n if (this.compact()) classes.push('studio-menu--compact');\n if (this.fullWidth()) classes.push('studio-menu--full-width');\n if (this.iconOnly()) classes.push('studio-menu--icon-only');\n if (this.color() !== 'inherit') classes.push(`studio-menu--${this.color()}`);\n if (this.class()) classes.push(this.class());\n\n return classes.join(' ');\n });\n\n constructor() {\n // Initialize expanded items from defaultExpanded\n effect(() => {\n const defaultExp = this.defaultExpanded();\n if (defaultExp.length > 0) {\n this.expandedItems.set(new Set(defaultExp));\n }\n });\n\n // Track active item\n effect(() => {\n const active = this.activeItem();\n if (active) {\n this.activeItemId.set(active);\n }\n });\n }\n\n ngOnInit() {\n if (this.routerLinkActive() && this.router && isPlatformBrowser(this.platformId)) {\n this.updateActiveFromRouter();\n }\n }\n\n // ========== Item state methods ==========\n\n isExpanded(item: MenuItem): boolean {\n if (!item.id) return false;\n return this.expandedItems().has(item.id);\n }\n\n isActive(item: MenuItem): boolean {\n // Check explicit active item\n if (item.id && item.id === this.activeItemId()) {\n return true;\n }\n\n // Router-based active state is handled by RouterLinkActive directive\n return false;\n }\n\n isDisabled(item: MenuItem): boolean {\n return item.disabled === true;\n }\n\n isVisible(item: MenuItem): boolean {\n return item.visible !== false;\n }\n\n hasChildren(item: MenuItem): boolean {\n return !!(item.items && item.items.length > 0);\n }\n\n getItemId(item: MenuItem, index: number): string {\n return item.id || `menu-item-${this.level()}-${index}`;\n }\n\n // ========== Interaction methods ==========\n\n handleItemClick(event: Event, item: MenuItem) {\n if (this.isDisabled(item) || item.separator) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n\n // Emit click event\n this.itemClick.emit({ originalEvent: event, item });\n\n // Execute command if provided\n if (item.command) {\n item.command({ originalEvent: event, item });\n }\n\n // Handle expansion for items with children\n if (this.hasChildren(item) && this.collapsible()) {\n event.preventDefault();\n this.toggleExpand(item);\n }\n\n // Handle selection\n if (this.selectOnNavigate() && item.id) {\n this.activeItemId.set(item.id);\n this.itemSelect.emit(item);\n this.activeChange.emit(item.id);\n }\n\n // Navigation is handled by RouterLink directive if routerLink is set\n }\n\n handleItemMouseEnter(item: MenuItem) {\n if (this.expandOnHover() && this.hasChildren(item) && !this.isDisabled(item)) {\n this.expand(item);\n }\n }\n\n handleItemMouseLeave(item: MenuItem) {\n if (this.expandOnHover() && this.hasChildren(item)) {\n this.collapse(item);\n }\n }\n\n toggleExpand(item: MenuItem) {\n if (!item.id) return;\n\n const expanded = this.expandedItems();\n const newExpanded = new Set(expanded);\n\n if (newExpanded.has(item.id)) {\n newExpanded.delete(item.id);\n this.expandChange.emit({ itemId: item.id, expanded: false });\n } else {\n // In accordion mode, collapse others at the same level\n if (this.mode() === 'accordion') {\n this.items().forEach(i => {\n if (i.id && i.id !== item.id) {\n newExpanded.delete(i.id);\n }\n });\n }\n newExpanded.add(item.id);\n this.expandChange.emit({ itemId: item.id, expanded: true });\n }\n\n this.expandedItems.set(newExpanded);\n }\n\n expand(item: MenuItem) {\n if (!item.id || this.isExpanded(item)) return;\n\n const newExpanded = new Set(this.expandedItems());\n newExpanded.add(item.id);\n this.expandedItems.set(newExpanded);\n this.expandChange.emit({ itemId: item.id, expanded: true });\n }\n\n collapse(item: MenuItem) {\n if (!item.id || !this.isExpanded(item)) return;\n\n const newExpanded = new Set(this.expandedItems());\n newExpanded.delete(item.id);\n this.expandedItems.set(newExpanded);\n this.expandChange.emit({ itemId: item.id, expanded: false });\n }\n\n // ========== Keyboard navigation ==========\n\n @HostListener('keydown', ['$event'])\n handleKeyDown(event: KeyboardEvent) {\n if (!this.keyboardNavigation()) return;\n\n const items = this.flattenedItems();\n const currentIndex = this.focusedIndex();\n\n switch (event.key) {\n case 'ArrowDown':\n if (this.arrowNavigation() && this.orientation() === 'vertical') {\n event.preventDefault();\n this.focusNextItem(items, currentIndex);\n }\n break;\n\n case 'ArrowUp':\n if (this.arrowNavigation() && this.orientation() === 'vertical') {\n event.preventDefault();\n this.focusPreviousItem(items, currentIndex);\n }\n break;\n\n case 'ArrowRight':\n if (this.arrowNavigation()) {\n event.preventDefault();\n if (this.orientation() === 'horizontal') {\n this.focusNextItem(items, currentIndex);\n } else {\n this.expandFocusedItem(items, currentIndex);\n }\n }\n break;\n\n case 'ArrowLeft':\n if (this.arrowNavigation()) {\n event.preventDefault();\n if (this.orientation() === 'horizontal') {\n this.focusPreviousItem(items, currentIndex);\n } else {\n this.collapseFocusedItem(items, currentIndex);\n }\n }\n break;\n\n case 'Home':\n if (this.homeEndNavigation()) {\n event.preventDefault();\n this.focusedIndex.set(0);\n }\n break;\n\n case 'End':\n if (this.homeEndNavigation()) {\n event.preventDefault();\n this.focusedIndex.set(items.length - 1);\n }\n break;\n\n case 'Enter':\n case ' ':\n event.preventDefault();\n this.activateFocusedItem(items, currentIndex);\n break;\n\n case 'Escape':\n event.preventDefault();\n this.collapseAll();\n break;\n }\n }\n\n private focusNextItem(items: MenuItem[], currentIndex: number) {\n const nextIndex = (currentIndex + 1) % items.length;\n this.focusedIndex.set(nextIndex);\n }\n\n private focusPreviousItem(items: MenuItem[], currentIndex: number) {\n const prevIndex = currentIndex <= 0 ? items.length - 1 : currentIndex - 1;\n this.focusedIndex.set(prevIndex);\n }\n\n private expandFocusedItem(items: MenuItem[], currentIndex: number) {\n if (currentIndex >= 0 && currentIndex < items.length) {\n const item = items[currentIndex];\n if (this.hasChildren(item)) {\n this.expand(item);\n }\n }\n }\n\n private collapseFocusedItem(items: MenuItem[], currentIndex: number) {\n if (currentIndex >= 0 && currentIndex < items.length) {\n const item = items[currentIndex];\n if (this.hasChildren(item) && this.isExpanded(item)) {\n this.collapse(item);\n }\n }\n }\n\n private activateFocusedItem(items: MenuItem[], currentIndex: number) {\n if (currentIndex >= 0 && currentIndex < items.length) {\n const item = items[currentIndex];\n const fakeEvent = new Event('click');\n this.handleItemClick(fakeEvent, item);\n }\n }\n\n private collapseAll() {\n this.expandedItems.set(new Set());\n }\n\n // ========== Helper methods ==========\n\n private flattenMenuItems(items: MenuItem[]): MenuItem[] {\n const result: MenuItem[] = [];\n\n const flatten = (itemList: MenuItem[]) => {\n itemList.forEach(item => {\n if (this.isVisible(item) && !item.separator) {\n result.push(item);\n if (item.items && this.isExpanded(item)) {\n flatten(item.items);\n }\n }\n });\n };\n\n flatten(items);\n return result;\n }\n\n private updateActiveFromRouter() {\n if (!this.router) return;\n\n // This would require checking current route against menu items\n // Implementation depends on routing setup\n // For now, RouterLinkActive directive handles this\n }\n\n getIndentStyle(itemLevel: number = 0): Record<string, string> {\n const indent = this.level() + itemLevel;\n if (indent === 0) return {};\n\n return {\n 'padding-left': `calc(var(--menu-padding) + ${indent * this.indentLevel()}px)`\n };\n }\n}\n","<div class=\"studio-menu__list\">\n @for (item of items(); track getItemId(item, $index)) {\n @if (isVisible(item)) {\n @if (item.separator) {\n <!-- Separator -->\n <div class=\"studio-menu__separator\"></div>\n } @else {\n <!-- Menu Item -->\n <div\n class=\"studio-menu-item\"\n [class.studio-menu-item--disabled]=\"isDisabled(item)\"\n [class.studio-menu-item--active]=\"isActive(item)\"\n [class.studio-menu-item--has-children]=\"hasChildren(item)\"\n [class.studio-menu-item--expanded]=\"isExpanded(item)\"\n [class]=\"itemClass() + ' ' + (item.class || '')\"\n [style]=\"getIndentStyle()\"\n [attr.role]=\"role() === 'menu' ? 'menuitem' : undefined\"\n [attr.aria-disabled]=\"isDisabled(item)\"\n [attr.aria-expanded]=\"hasChildren(item) ? isExpanded(item) : undefined\"\n [attr.title]=\"item.tooltip\"\n (click)=\"handleItemClick($event, item)\"\n (mouseenter)=\"handleItemMouseEnter(item)\"\n (mouseleave)=\"handleItemMouseLeave(item)\"\n >\n <!-- Router Link -->\n @if (item.routerLink && !isDisabled(item)) {\n <a\n class=\"studio-menu-item__link\"\n [routerLink]=\"item.routerLink\"\n [queryParams]=\"item.queryParams\"\n [fragment]=\"item.fragment\"\n [target]=\"item.target\"\n routerLinkActive=\"studio-menu-item__link--active\"\n [attr.aria-current]=\"isActive(item) ? 'page' : undefined\"\n >\n <ng-container *ngTemplateOutlet=\"itemContent; context: { $implicit: item }\" />\n </a>\n }\n <!-- External Link -->\n @else if (item.href && !isDisabled(item)) {\n <a\n class=\"studio-menu-item__link\"\n [href]=\"item.href\"\n [target]=\"item.target\"\n >\n <ng-container *ngTemplateOutlet=\"itemContent; context: { $implicit: item }\" />\n </a>\n }\n <!-- Button (no navigation) -->\n @else {\n <div class=\"studio-menu-item__content\">\n <ng-container *ngTemplateOutlet=\"itemContent; context: { $implicit: item }\" />\n </div>\n }\n </div>\n\n <!-- Submenu (recursive) -->\n @if (hasChildren(item) && isExpanded(item)) {\n <div\n class=\"studio-menu__submenu\"\n [@expandCollapse]=\"animated() ? 'expanded' : undefined\"\n >\n <studio-menu\n [items]=\"item.items!\"\n [orientation]=\"orientation()\"\n [mode]=\"mode()\"\n [collapsible]=\"collapsible()\"\n [expandOnHover]=\"expandOnHover()\"\n [selectOnNavigate]=\"selectOnNavigate()\"\n [keyboardNavigation]=\"keyboardNavigation()\"\n [arrowNavigation]=\"arrowNavigation()\"\n [homeEndNavigation]=\"homeEndNavigation()\"\n [animated]=\"animated()\"\n [animationDuration]=\"animationDuration()\"\n [size]=\"size()\"\n [compact]=\"compact()\"\n [fullWidth]=\"fullWidth()\"\n [variant]=\"variant()\"\n [color]=\"color()\"\n [radius]=\"radius()\"\n [spacing]=\"spacing()\"\n [showDividers]=\"showDividers()\"\n [iconSize]=\"iconSize()\"\n [iconOnly]=\"iconOnly()\"\n [indentLevel]=\"indentLevel()\"\n [showExpandIcon]=\"showExpandIcon()\"\n [expandIconPosition]=\"expandIconPosition()\"\n [expandIcon]=\"expandIcon()\"\n [itemClass]=\"itemClass()\"\n [level]=\"level() + 1\"\n [parentExpanded]=\"isExpanded(item)\"\n (itemClick)=\"itemClick.emit($event)\"\n (itemSelect)=\"itemSelect.emit($event)\"\n (expandChange)=\"expandChange.emit($event)\"\n (activeChange)=\"activeChange.emit($event)\"\n />\n </div>\n }\n\n <!-- Divider (if enabled) -->\n @if (showDividers() && $index < items().length - 1) {\n <div class=\"studio-menu__divider\"></div>\n }\n }\n }\n }\n</div>\n\n<!-- Item Content Template -->\n<ng-template #itemContent let-item>\n <div class=\"studio-menu-item__inner\">\n <!-- Left Icon -->\n @if (item.icon && (!item.iconPosition || item.iconPosition === 'left')) {\n <studio-icon\n class=\"studio-menu-item__icon studio-menu-item__icon--left\"\n [name]=\"item.icon\"\n [size]=\"iconSize()\"\n />\n }\n\n <!-- Label -->\n @if (!iconOnly()) {\n <span class=\"studio-menu-item__label\">{{ item.label }}</span>\n }\n\n <!-- Badge -->\n @if (item.badge && !iconOnly()) {\n <studio-badge\n class=\"studio-menu-item__badge\"\n [value]=\"item.badge\"\n [color]=\"item.badgeColor || 'primary'\"\n size=\"sm\"\n />\n }\n\n <!-- Right Icon -->\n @if (item.icon && item.iconPosition === 'right') {\n <studio-icon\n class=\"studio-menu-item__icon studio-menu-item__icon--right\"\n [name]=\"item.icon\"\n [size]=\"iconSize()\"\n />\n }\n\n <!-- Expand Icon -->\n @if (hasChildren(item) && showExpandIcon() && !iconOnly()) {\n <studio-icon\n class=\"studio-menu-item__expand-icon\"\n [class.studio-menu-item__expand-icon--expanded]=\"isExpanded(item)\"\n [name]=\"expandIcon()\"\n [size]=\"16\"\n />\n }\n </div>\n</ng-template>\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n signal,\n inject,\n viewChild,\n ElementRef,\n effect,\n forwardRef,\n model\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, NG_VALIDATORS, Validator, AbstractControl, ValidationErrors } from '@angular/forms';\nimport { IconComponent } from '../icon';\nimport { StudioConfigService } from '../../config';\nimport { classNames, withConfigDefault } from '../../utils';\n\nexport type PhoneCountry = 'kz' | 'ru' | 'kg' | 'uz' | 'tr' | 'az';\n\nexport interface CountryOption {\n code: PhoneCountry;\n name: string;\n dialCode: string;\n flag: string;\n minLength: number;\n maxLength: number;\n placeholder: string;\n}\n\nexport const COUNTRY_OPTIONS: CountryOption[] = [\n { code: 'kz', name: 'Казахстан', dialCode: '+7', flag: '🇰🇿', minLength: 11, maxLength: 11, placeholder: '+7 XXX XXX XX XX' },\n { code: 'ru', name: 'Россия', dialCode: '+7', flag: '🇷🇺', minLength: 11, maxLength: 11, placeholder: '+7 XXX XXX XX XX' },\n { code: 'kg', name: 'Кыргызстан', dialCode: '+996', flag: '🇰🇬', minLength: 12, maxLength: 12, placeholder: '+996 XXX XXX XXX' },\n { code: 'uz', name: 'Узбекистан', dialCode: '+998', flag: '🇺🇿', minLength: 12, maxLength: 12, placeholder: '+998 XX XXX XX XX' },\n { code: 'tr', name: 'Турция', dialCode: '+90', flag: '🇹🇷', minLength: 12, maxLength: 12, placeholder: '+90 XXX XXX XX XX' },\n { code: 'az', name: 'Азербайджан', dialCode: '+994', flag: '🇦🇿', minLength: 12, maxLength: 12, placeholder: '+994 XX XXX XX XX' }\n];\n\n@Component({\n selector: 'studio-phone-input',\n imports: [IconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PhoneInputComponent),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => PhoneInputComponent),\n multi: true\n }\n ],\n host: {\n '[class]': 'hostClasses()',\n },\n templateUrl: './phone-input.component.html',\n styleUrl: './phone-input.component.scss'\n})\nexport class PhoneInputComponent implements ControlValueAccessor, Validator {\n private readonly configService = inject(StudioConfigService);\n private readonly inputDefaults = computed(() => this.configService.config().components?.input);\n\n protected readonly inputEl = viewChild<ElementRef<HTMLInputElement>>('inputElement');\n\n // Styling\n variantInput = input<'outline' | 'filled' | 'underline' | undefined>(undefined, { alias: 'variant' });\n sizeInput = input<'sm' | 'md' | 'lg' | undefined>(undefined, { alias: 'size' });\n radiusInput = input<'none' | 'sm' | 'md' | 'lg' | 'full' | undefined>(undefined, { alias: 'radius' });\n\n variant = withConfigDefault(this.variantInput, computed(() => this.inputDefaults()?.variant), 'outline');\n size = withConfigDefault(this.sizeInput, computed(() => this.inputDefaults()?.size), 'md');\n radius = withConfigDefault(this.radiusInput, computed(() => this.inputDefaults()?.radius), 'md');\n\n // Phone specific\n country = model<PhoneCountry>('kz');\n showCountrySelector = input<boolean>(false);\n showFlag = input<boolean>(true);\n showCountryCode = input<boolean>(true);\n\n // States\n disabled = input<boolean>(false);\n readonly = input<boolean>(false);\n loading = input<boolean>(false);\n\n // Label & hints\n label = input<string | undefined>(undefined);\n hint = input<string | undefined>(undefined);\n required = input<boolean>(false);\n error = input<boolean>(false);\n errorMessage = input<string | undefined>(undefined);\n\n // Layout\n fullWidth = input<boolean>(false);\n autoFocus = input<boolean>(false);\n name = input<string | undefined>(undefined);\n id = input<string | undefined>(undefined);\n ariaLabel = input<string | undefined>(undefined);\n\n // Events\n valueChange = output<string>();\n countryChange = output<PhoneCountry>();\n focused = output<FocusEvent>();\n blurred = output<FocusEvent>();\n\n // Internal state\n protected value = signal<string>('');\n protected displayValue = signal<string>('');\n protected isFocused = signal(false);\n protected isTouched = signal(false);\n protected isDropdownOpen = signal(false);\n protected generatedId = `studio-phone-input-${Math.random().toString(36).substr(2, 9)}`;\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n // Country options\n protected readonly countryOptions = COUNTRY_OPTIONS;\n\n // Computed\n protected currentCountry = computed(() => {\n return COUNTRY_OPTIONS.find(c => c.code === this.country()) || COUNTRY_OPTIONS[0];\n });\n protected currentFlag = computed(() => this.currentCountry().flag);\n protected currentCode = computed(() => this.currentCountry().dialCode);\n protected currentPlaceholder = computed(() => this.currentCountry().placeholder);\n\n protected isComplete = computed(() => {\n const digits = this.value().replace(/\\D/g, '');\n const config = this.currentCountry();\n return digits.length >= config.minLength;\n });\n\n protected hasValue = computed(() => {\n const val = this.value();\n return val !== '' && val !== null && val !== undefined;\n });\n\n protected hostClasses = computed(() => classNames(\n 'studio-phone-input',\n `studio-phone-input--${this.variant()}`,\n `studio-phone-input--${this.size()}`,\n `studio-phone-input--radius-${this.radius()}`,\n this.error() && 'studio-phone-input--error',\n this.disabled() && 'studio-phone-input--disabled',\n this.readonly() && 'studio-phone-input--readonly',\n this.loading() && 'studio-phone-input--loading',\n this.fullWidth() && 'studio-phone-input--full-width',\n this.isFocused() && 'studio-phone-input--focused',\n this.isTouched() && 'studio-phone-input--touched',\n this.hasValue() && 'studio-phone-input--has-value',\n this.showCountrySelector() && 'studio-phone-input--with-selector'\n ));\n\n protected ariaDescribedByValue = computed(() => {\n const ids: string[] = [];\n if (this.hint()) ids.push(this.hintId);\n if (this.error() && this.errorMessage()) ids.push(this.errorId);\n return ids.length > 0 ? ids.join(' ') : null;\n });\n\n protected hintId = `${this.generatedId}-hint`;\n protected errorId = `${this.generatedId}-error`;\n\n constructor() {\n effect(() => {\n if (this.autoFocus() && this.inputEl()) {\n setTimeout(() => this.inputEl()?.nativeElement.focus(), 0);\n }\n });\n\n // Re-format when country changes\n effect(() => {\n const country = this.country();\n const currentValue = this.value();\n if (currentValue) {\n const formatted = this.formatPhoneNumber(currentValue);\n this.displayValue.set(formatted);\n }\n });\n }\n\n // ControlValueAccessor\n writeValue(value: string): void {\n const formatted = this.formatPhoneNumber(value ?? '');\n this.value.set(value ?? '');\n this.displayValue.set(formatted);\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\n // Validator\n validate(control: AbstractControl): ValidationErrors | null {\n if (!control.value) return null;\n\n const digits = (control.value as string).replace(/\\D/g, '');\n const config = this.currentCountry();\n\n if (digits.length < config.minLength) {\n return { phoneIncomplete: { value: control.value, required: config.minLength, actual: digits.length } };\n }\n return null;\n }\n\n // Country selector\n protected toggleDropdown(): void {\n if (this.disabled() || this.readonly()) return;\n this.isDropdownOpen.update(v => !v);\n }\n\n protected selectCountry(country: CountryOption): void {\n this.country.set(country.code);\n this.isDropdownOpen.set(false);\n this.countryChange.emit(country.code);\n\n // Clear current value and set new country code\n const newCode = country.dialCode;\n this.value.set('');\n this.displayValue.set('');\n\n // Focus input after selecting\n setTimeout(() => {\n this.inputEl()?.nativeElement.focus();\n }, 0);\n }\n\n protected closeDropdown(): void {\n this.isDropdownOpen.set(false);\n }\n\n // Format phone number for display\n private formatPhoneNumber(value: string): string {\n let digits = value.replace(/\\D/g, '');\n\n if (!digits) return '';\n\n const config = this.currentCountry();\n digits = digits.slice(0, config.maxLength);\n\n return this.formatByCountry(digits, this.country());\n }\n\n private formatByCountry(digits: string, country: PhoneCountry): string {\n switch (country) {\n case 'kz':\n case 'ru':\n // +7 XXX XXX XX XX\n return this.formatPattern(digits, [1, 3, 3, 2, 2], '+');\n case 'kg':\n // +996 XXX XXX XXX\n return this.formatPattern(digits, [3, 3, 3, 3], '+');\n case 'uz':\n // +998 XX XXX XX XX\n return this.formatPattern(digits, [3, 2, 3, 2, 2], '+');\n case 'tr':\n // +90 XXX XXX XX XX\n return this.formatPattern(digits, [2, 3, 3, 2, 2], '+');\n case 'az':\n // +994 XX XXX XX XX\n return this.formatPattern(digits, [3, 2, 3, 2, 2], '+');\n default:\n return '+' + digits;\n }\n }\n\n private formatPattern(digits: string, groups: number[], prefix: string): string {\n let result = prefix;\n let index = 0;\n\n for (let i = 0; i < groups.length && index < digits.length; i++) {\n const groupSize = groups[i];\n const chunk = digits.slice(index, index + groupSize);\n\n if (i > 0 && chunk) {\n result += ' ';\n }\n result += chunk;\n index += groupSize;\n }\n\n return result;\n }\n\n // Event handlers\n protected handleInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n const cursorPos = target.selectionStart || 0;\n const oldValue = this.displayValue();\n\n let rawValue = target.value;\n const formatted = this.formatPhoneNumber(rawValue);\n const rawDigits = rawValue.replace(/\\D/g, '');\n\n this.value.set(rawDigits ? '+' + rawDigits : '');\n this.displayValue.set(formatted);\n\n target.value = formatted;\n\n const lengthDiff = formatted.length - oldValue.length;\n let newCursorPos = cursorPos + lengthDiff;\n newCursorPos = Math.max(0, Math.min(newCursorPos, formatted.length));\n\n setTimeout(() => {\n target.setSelectionRange(newCursorPos, newCursorPos);\n }, 0);\n\n const outputValue = rawDigits ? '+' + rawDigits : '';\n this.onChange(outputValue);\n this.valueChange.emit(outputValue);\n }\n\n protected handleFocus(event: FocusEvent): void {\n this.isFocused.set(true);\n\n if (!this.displayValue() && this.showCountryCode()) {\n const code = this.currentCountry().dialCode;\n this.displayValue.set(code + ' ');\n const target = event.target as HTMLInputElement;\n target.value = code + ' ';\n setTimeout(() => {\n target.setSelectionRange(target.value.length, target.value.length);\n }, 0);\n }\n\n this.focused.emit(event);\n }\n\n protected handleBlur(event: FocusEvent): void {\n this.isFocused.set(false);\n this.isTouched.set(true);\n\n const digits = this.value().replace(/\\D/g, '');\n const codeDigits = this.currentCountry().dialCode.replace(/\\D/g, '');\n\n if (digits === codeDigits || digits.length <= codeDigits.length) {\n this.value.set('');\n this.displayValue.set('');\n const target = event.target as HTMLInputElement;\n target.value = '';\n this.onChange('');\n }\n\n this.onTouched();\n this.blurred.emit(event);\n }\n\n protected handleKeyDown(event: KeyboardEvent): void {\n const target = event.target as HTMLInputElement;\n const cursorPos = target.selectionStart || 0;\n\n // Allow: backspace, delete, tab, escape, enter, arrows\n if ([8, 46, 9, 27, 13, 37, 38, 39, 40].includes(event.keyCode)) {\n return;\n }\n\n // Allow: Ctrl+A, Ctrl+C, Ctrl+V, Ctrl+X\n if ((event.ctrlKey || event.metaKey) && ['a', 'c', 'v', 'x'].includes(event.key.toLowerCase())) {\n return;\n }\n\n // Allow: + at the beginning\n if (event.key === '+' && cursorPos === 0) {\n return;\n }\n\n // Block non-numeric\n if (!/^\\d$/.test(event.key)) {\n event.preventDefault();\n }\n\n // Block if max length reached\n const digits = target.value.replace(/\\D/g, '');\n if (digits.length >= this.currentCountry().maxLength && target.selectionStart === target.selectionEnd) {\n event.preventDefault();\n }\n }\n\n protected handleContainerClick(event: Event): void {\n // Close dropdown when clicking outside selector\n const target = event.target as HTMLElement;\n if (!target.closest('.studio-phone-input__selector')) {\n this.isDropdownOpen.set(false);\n }\n }\n}\n","@if (label()) {\n <label [for]=\"id() || generatedId\" class=\"studio-phone-input__label\">\n {{ label() }}\n @if (required()) {\n <span class=\"studio-phone-input__required\">*</span>\n }\n </label>\n}\n\n<div class=\"studio-phone-input__container\" (click)=\"handleContainerClick($event)\">\n @if (showCountrySelector()) {\n <div class=\"studio-phone-input__selector\">\n <button\n type=\"button\"\n class=\"studio-phone-input__selector-btn\"\n [disabled]=\"disabled() || readonly()\"\n (click)=\"toggleDropdown()\"\n [attr.aria-expanded]=\"isDropdownOpen()\"\n aria-haspopup=\"listbox\">\n <span class=\"studio-phone-input__selector-flag\">{{ currentFlag() }}</span>\n <studio-icon name=\"chevron-down\" [size]=\"14\" class=\"studio-phone-input__selector-arrow\" />\n </button>\n\n @if (isDropdownOpen()) {\n <div class=\"studio-phone-input__dropdown\" role=\"listbox\">\n @for (option of countryOptions; track option.code) {\n <button\n type=\"button\"\n class=\"studio-phone-input__dropdown-item\"\n [class.studio-phone-input__dropdown-item--selected]=\"option.code === country()\"\n role=\"option\"\n [attr.aria-selected]=\"option.code === country()\"\n (click)=\"selectCountry(option)\">\n <span class=\"studio-phone-input__dropdown-flag\">{{ option.flag }}</span>\n <span class=\"studio-phone-input__dropdown-name\">{{ option.name }}</span>\n <span class=\"studio-phone-input__dropdown-code\">{{ option.dialCode }}</span>\n </button>\n }\n </div>\n }\n </div>\n } @else if (showFlag()) {\n <span class=\"studio-phone-input__flag\">\n {{ currentFlag() }}\n </span>\n }\n\n <input\n #inputElement\n type=\"tel\"\n inputmode=\"tel\"\n class=\"studio-phone-input__field\"\n [value]=\"displayValue()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly()\"\n [placeholder]=\"currentPlaceholder()\"\n [required]=\"required()\"\n [name]=\"name()\"\n [id]=\"id() || generatedId\"\n [attr.aria-label]=\"ariaLabel() || label() || 'Phone number'\"\n [attr.aria-invalid]=\"error() ? 'true' : null\"\n [attr.aria-describedby]=\"ariaDescribedByValue()\"\n [attr.aria-required]=\"required() ? 'true' : null\"\n (input)=\"handleInput($event)\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"\n (keydown)=\"handleKeyDown($event)\"\n />\n\n @if (loading()) {\n <span class=\"studio-phone-input__loading\">\n <studio-icon name=\"loader-2\" [size]=\"16\" class=\"studio-icon--spin\" />\n </span>\n }\n</div>\n\n@if (hint() && !error()) {\n <span class=\"studio-phone-input__hint\" [id]=\"hintId\">\n {{ hint() }}\n </span>\n}\n\n@if (error() && errorMessage()) {\n <span class=\"studio-phone-input__error\" [id]=\"errorId\" role=\"alert\">\n <studio-icon name=\"alert-circle\" [size]=\"14\" />\n {{ errorMessage() }}\n </span>\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n signal,\n effect,\n model,\n contentChild,\n TemplateRef,\n HostListener,\n afterNextRender,\n viewChild,\n ElementRef,\n DestroyRef,\n inject\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IconComponent } from '../icon';\nimport { classNames } from '../../utils';\nimport { ModalSize, ModalVariant, ModalAnimation, ModalPosition } from './modal.types';\n\n@Component({\n selector: 'studio-modal',\n standalone: true,\n imports: [CommonModule, IconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n },\n template: `\n @if (visible()) {\n <!-- Overlay -->\n <div\n class=\"studio-modal__overlay\"\n [class.studio-modal__overlay--visible]=\"visible()\"\n (click)=\"handleOverlayClick()\"\n ></div>\n\n <!-- Modal -->\n <div\n #modalPanel\n class=\"studio-modal__panel\"\n [class.studio-modal__panel--visible]=\"visible()\"\n role=\"dialog\"\n [attr.aria-modal]=\"true\"\n [attr.aria-labelledby]=\"showHeader() ? 'modal-title' : null\"\n >\n <!-- Header -->\n @if (showHeader()) {\n <div class=\"studio-modal__header\">\n @if (headerTemplate()) {\n <ng-container *ngTemplateOutlet=\"headerTemplate()!\" />\n } @else {\n <h3 id=\"modal-title\" class=\"studio-modal__title\">{{ title() }}</h3>\n }\n\n @if (showCloseButton()) {\n <button\n type=\"button\"\n class=\"studio-modal__close\"\n (click)=\"close()\"\n aria-label=\"Close\"\n >\n <studio-icon name=\"x\" [size]=\"20\" />\n </button>\n }\n </div>\n }\n\n <!-- Content -->\n <div class=\"studio-modal__content\">\n <ng-content />\n </div>\n\n <!-- Footer -->\n @if (showFooter() && footerTemplate()) {\n <div class=\"studio-modal__footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate()!\" />\n </div>\n }\n </div>\n }\n `,\n styles: `\n :host {\n display: contents;\n font-family: var(--studio-font-family);\n }\n\n .studio-modal__overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n width: 100vw;\n height: 100vh;\n background: rgba(0, 0, 0, 0.5);\n z-index: var(--studio-z-modal-backdrop, 1040);\n opacity: 0;\n transition: opacity var(--studio-transition-normal, 200ms ease);\n }\n\n .studio-modal__overlay--visible {\n opacity: 1;\n }\n\n .studio-modal__panel {\n position: fixed;\n z-index: var(--studio-z-modal, 1050);\n background: var(--studio-bg-primary, #ffffff);\n border-radius: var(--studio-radius-lg, 0.75rem);\n box-shadow: var(--studio-shadow-xl, 0 20px 25px -5px rgba(0, 0, 0, 0.1));\n display: flex;\n flex-direction: column;\n max-height: 90vh;\n opacity: 0;\n transform: scale(0.95);\n transition:\n opacity var(--studio-transition-normal, 200ms ease),\n transform var(--studio-transition-normal, 200ms ease);\n }\n\n .studio-modal__panel--visible {\n opacity: 1;\n transform: scale(1);\n }\n\n /* Position variants */\n :host(.modal--center) .studio-modal__panel {\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%) scale(0.95);\n }\n\n :host(.modal--center) .studio-modal__panel--visible {\n transform: translate(-50%, -50%) scale(1);\n }\n\n :host(.modal--top) .studio-modal__panel {\n top: 5vh;\n left: 50%;\n transform: translate(-50%, -20px) scale(0.95);\n }\n\n :host(.modal--top) .studio-modal__panel--visible {\n transform: translate(-50%, 0) scale(1);\n }\n\n :host(.modal--bottom) .studio-modal__panel {\n bottom: 5vh;\n left: 50%;\n transform: translate(-50%, 20px) scale(0.95);\n }\n\n :host(.modal--bottom) .studio-modal__panel--visible {\n transform: translate(-50%, 0) scale(1);\n }\n\n /* Size variants */\n :host(.modal--sm) .studio-modal__panel {\n width: 90%;\n max-width: 400px;\n }\n\n :host(.modal--md) .studio-modal__panel {\n width: 90%;\n max-width: 600px;\n }\n\n :host(.modal--lg) .studio-modal__panel {\n width: 90%;\n max-width: 800px;\n }\n\n :host(.modal--xl) .studio-modal__panel {\n width: 90%;\n max-width: 1200px;\n }\n\n :host(.modal--full) .studio-modal__panel {\n width: 95vw;\n height: 95vh;\n max-width: none;\n max-height: none;\n }\n\n /* Variant styles */\n :host(.modal--bordered) .studio-modal__panel {\n border: 1px solid var(--studio-border-primary);\n }\n\n :host(.modal--minimal) .studio-modal__panel {\n box-shadow: var(--studio-shadow-md);\n }\n\n /* Animation variants */\n :host(.modal--fade) .studio-modal__panel {\n transform: translate(-50%, -50%);\n }\n\n :host(.modal--fade) .studio-modal__panel--visible {\n transform: translate(-50%, -50%);\n }\n\n :host(.modal--slide-down) .studio-modal__panel {\n transform: translate(-50%, -60%);\n }\n\n :host(.modal--slide-down) .studio-modal__panel--visible {\n transform: translate(-50%, -50%);\n }\n\n :host(.modal--none) .studio-modal__panel {\n transition: none;\n }\n\n :host(.modal--none) .studio-modal__overlay {\n transition: none;\n }\n\n /* Header */\n .studio-modal__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 1.5rem;\n border-bottom: 1px solid var(--studio-border-primary);\n flex-shrink: 0;\n }\n\n .studio-modal__title {\n margin: 0;\n font-size: 1.25rem;\n font-weight: var(--studio-font-weight-semibold);\n color: var(--studio-text-primary);\n }\n\n .studio-modal__close {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 2rem;\n height: 2rem;\n padding: 0;\n background: none;\n border: none;\n border-radius: var(--studio-radius-sm);\n color: var(--studio-text-secondary);\n cursor: pointer;\n transition: all var(--studio-transition-fast);\n\n &:hover {\n background: var(--studio-bg-secondary);\n color: var(--studio-text-primary);\n }\n\n &:active {\n transform: scale(0.95);\n }\n }\n\n /* Content */\n .studio-modal__content {\n padding: 1.5rem;\n overflow-y: auto;\n flex: 1;\n }\n\n /* Footer */\n .studio-modal__footer {\n padding: 1.5rem;\n border-top: 1px solid var(--studio-border-primary);\n display: flex;\n gap: 0.75rem;\n justify-content: flex-end;\n flex-shrink: 0;\n }\n `\n})\nexport class ModalComponent {\n private destroyRef = inject(DestroyRef);\n\n // Inputs\n visible = model<boolean>(false);\n title = input<string>('');\n size = input<ModalSize>('md');\n variant = input<ModalVariant>('default');\n animation = input<ModalAnimation>('scale');\n position = input<ModalPosition>('center');\n\n showHeader = input<boolean>(true);\n showFooter = input<boolean>(true);\n showCloseButton = input<boolean>(true);\n closeOnOverlayClick = input<boolean>(true);\n closeOnEscape = input<boolean>(true);\n\n // Outputs (note: visibleChange is automatically created by model())\n opened = output<void>();\n closed = output<void>();\n\n // Template refs\n protected headerTemplate = contentChild<TemplateRef<any>>('modalHeader');\n protected footerTemplate = contentChild<TemplateRef<any>>('modalFooter');\n protected modalPanel = viewChild<ElementRef<HTMLDivElement>>('modalPanel');\n\n // Computed\n protected hostClasses = computed(() => classNames(\n 'studio-modal',\n 'modal--' + this.size(),\n 'modal--' + this.variant(),\n 'modal--' + this.animation(),\n 'modal--' + this.position()\n ));\n\n constructor() {\n afterNextRender(() => {\n this.setupFocusTrap();\n });\n\n effect(() => {\n if (this.visible()) {\n this.handleOpen();\n } else {\n this.handleClose();\n }\n });\n }\n\n @HostListener('document:keydown.escape', ['$event'])\n protected handleEscape(event: KeyboardEvent): void {\n if (this.closeOnEscape() && this.visible()) {\n event.preventDefault();\n this.close();\n }\n }\n\n protected handleOverlayClick(): void {\n if (this.closeOnOverlayClick()) {\n this.close();\n }\n }\n\n close(): void {\n this.visible.set(false);\n }\n\n open(): void {\n this.visible.set(true);\n }\n\n private handleOpen(): void {\n // Prevent body scroll\n document.body.style.overflow = 'hidden';\n this.opened.emit();\n\n // Focus first focusable element\n setTimeout(() => {\n const panel = this.modalPanel()?.nativeElement;\n if (panel) {\n const focusable = panel.querySelector<HTMLElement>(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n );\n focusable?.focus();\n }\n }, 100);\n }\n\n private handleClose(): void {\n // Restore body scroll\n document.body.style.overflow = '';\n this.closed.emit();\n }\n\n private setupFocusTrap(): void {\n // Simple focus trap: keep focus within modal when it's open\n const handleTab = (e: KeyboardEvent) => {\n if (!this.visible() || e.key !== 'Tab') return;\n\n const panel = this.modalPanel()?.nativeElement;\n if (!panel) return;\n\n const focusableElements = panel.querySelectorAll<HTMLElement>(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n );\n\n const firstElement = focusableElements[0];\n const lastElement = focusableElements[focusableElements.length - 1];\n\n if (e.shiftKey && document.activeElement === firstElement) {\n lastElement?.focus();\n e.preventDefault();\n } else if (!e.shiftKey && document.activeElement === lastElement) {\n firstElement?.focus();\n e.preventDefault();\n }\n };\n\n document.addEventListener('keydown', handleTab);\n this.destroyRef.onDestroy(() => {\n document.removeEventListener('keydown', handleTab);\n document.body.style.overflow = ''; // Cleanup on destroy\n });\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n computed,\n output\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n NavbarVariant,\n NavbarColor,\n NavbarSize,\n NavbarShadow\n} from './navbar.types';\n\n/**\n * Navbar component - Primitive component for navigation headers\n *\n * @example\n * <studio-navbar variant=\"filled\" [sticky]=\"true\">\n * <div navbarLeft>Logo</div>\n * <div navbarCenter>Search</div>\n * <div navbarRight>User menu</div>\n * </studio-navbar>\n */\n@Component({\n selector: 'studio-navbar',\n standalone: true,\n imports: [CommonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[attr.role]': '\"banner\"',\n '[style.height]': 'customHeight() ? customHeight() + \"px\" : null'\n },\n templateUrl: './navbar.component.html',\n styleUrl: './navbar.component.scss'\n})\nexport class NavbarComponent {\n // ========== Visual variants ==========\n variant = input<NavbarVariant>('default');\n color = input<NavbarColor>('inherit');\n shadow = input<NavbarShadow>('sm');\n\n // ========== Size ==========\n size = input<NavbarSize>('md');\n customHeight = input<number | null>(null);\n\n // ========== Behavior ==========\n sticky = input<boolean>(false);\n blurBg = input<boolean>(false);\n\n // ========== Borders ==========\n bordered = input<boolean>(true);\n\n // ========== Customization ==========\n class = input<string>('');\n\n // ========== Outputs ==========\n navbarClick = output<MouseEvent>();\n\n // ========== Computed classes ==========\n protected hostClasses = computed(() => {\n const classes = ['studio-navbar'];\n\n classes.push(`studio-navbar--${this.variant()}`);\n classes.push(`studio-navbar--${this.size()}`);\n classes.push(`studio-navbar--shadow-${this.shadow()}`);\n\n if (this.color() !== 'inherit') classes.push(`studio-navbar--${this.color()}`);\n if (this.sticky()) classes.push('studio-navbar--sticky');\n if (this.blurBg()) classes.push('studio-navbar--blur');\n if (this.bordered()) classes.push('studio-navbar--bordered');\n if (this.class()) classes.push(this.class());\n\n return classes.join(' ');\n });\n\n handleClick(event: MouseEvent) {\n this.navbarClick.emit(event);\n }\n}\n","<div class=\"studio-navbar__left\">\n <ng-content select=\"[navbarLeft]\" />\n</div>\n\n<div class=\"studio-navbar__center\">\n <ng-content select=\"[navbarCenter]\" />\n</div>\n\n<div class=\"studio-navbar__right\">\n <ng-content select=\"[navbarRight]\" />\n</div>\n\n<ng-content />\n","import { Component, input, output, computed, signal, forwardRef, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { StudioConfigService } from '../../config/studio.service';\n\nexport type RadioButtonSize = 'sm' | 'md' | 'lg';\nexport type RadioButtonColor = 'primary' | 'secondary' | 'success' | 'error';\nexport type RadioButtonVariant = 'default' | 'outlined' | 'filled';\nexport type RadioButtonRadius = 'none' | 'sm' | 'md' | 'lg' | 'full';\n\n/**\n * RadioButton component for selecting a single option from a group\n *\n * @example\n * <studio-radio-button\n * [(ngModel)]=\"selectedValue\"\n * [value]=\"'option1'\"\n * label=\"Option 1\"\n * name=\"options\"\n * />\n */\n@Component({\n selector: 'studio-radio-button',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './radio-button.component.html',\n styleUrl: './radio-button.component.scss',\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RadioButtonComponent),\n multi: true\n }],\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-size]': 'size()',\n '[attr.data-color]': 'color()',\n '[attr.data-disabled]': 'disabled()',\n '[attr.data-error]': 'error()'\n }\n})\nexport class RadioButtonComponent implements ControlValueAccessor {\n private readonly configService = inject(StudioConfigService);\n private readonly radioDefaults = computed(() => this.configService.config().components?.radioButton);\n\n size = input<RadioButtonSize>(this.radioDefaults()?.size ?? 'md');\n color = input<RadioButtonColor>(this.radioDefaults()?.color ?? 'primary');\n variant = input<RadioButtonVariant>(this.radioDefaults()?.variant ?? 'default');\n radius = input<RadioButtonRadius>(this.radioDefaults()?.radius ?? 'full');\n\n label = input<string>();\n labelPosition = input<'left' | 'right'>(this.radioDefaults()?.labelPosition ?? 'right');\n description = input<string>();\n hint = input<string>();\n\n required = input<boolean>(false);\n error = input<boolean>(false);\n errorMessage = input<string>();\n\n disabled = input<boolean>(false);\n readonly = input<boolean>(false);\n name = input<string>();\n tabIndex = input<number>(0);\n value = input<any>();\n\n changed = output<any>();\n\n protected internalValue = signal<any>(null);\n protected isFocused = signal(false);\n protected radioId = signal(`studio-radio-${Math.random().toString(36).substr(2, 9)}`);\n\n protected hostClasses = computed(() => ({\n 'studio-radio-wrapper': true,\n [`studio-radio-wrapper--${this.size()}`]: true,\n 'studio-radio-wrapper--disabled': this.disabled(),\n 'studio-radio-wrapper--error': this.error(),\n 'studio-radio-wrapper--focused': this.isFocused(),\n 'studio-radio-wrapper--label-left': this.labelPosition() === 'left'\n }));\n\n protected radioClasses = computed(() => ({\n 'studio-radio': true,\n [`studio-radio--${this.size()}`]: true,\n [`studio-radio--${this.color()}`]: true,\n [`studio-radio--${this.variant()}`]: true,\n [`studio-radio--radius-${this.radius()}`]: true,\n 'studio-radio--checked': this.isChecked(),\n 'studio-radio--disabled': this.disabled(),\n 'studio-radio--error': this.error()\n }));\n\n protected showError = computed(() => this.error() && this.errorMessage());\n protected showHint = computed(() => !this.error() && this.hint());\n protected isChecked = computed(() => this.internalValue() === this.value());\n\n private onChange: (value: any) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: any): void {\n this.internalValue.set(value);\n }\n\n registerOnChange(fn: (value: any) => 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\n protected handleChange(event: Event): void {\n if (this.disabled() || this.readonly()) {\n event.preventDefault();\n return;\n }\n\n const inputValue = this.value();\n this.internalValue.set(inputValue);\n this.onChange(inputValue);\n this.changed.emit(inputValue);\n }\n\n protected handleFocus(): void {\n this.isFocused.set(true);\n }\n\n protected handleBlur(): void {\n this.isFocused.set(false);\n this.onTouched();\n }\n\n protected handleLabelClick(event: Event): void {\n if (this.disabled() || this.readonly()) {\n event.preventDefault();\n }\n }\n}\n","<label\n [for]=\"radioId()\"\n [ngClass]=\"hostClasses()\"\n (click)=\"handleLabelClick($event)\"\n>\n <input\n type=\"radio\"\n [id]=\"radioId()\"\n [name]=\"name()\"\n [value]=\"value()\"\n [checked]=\"isChecked()\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n [tabIndex]=\"tabIndex()\"\n [attr.aria-checked]=\"isChecked() ? 'true' : 'false'\"\n [attr.aria-label]=\"label() || undefined\"\n [attr.aria-describedby]=\"showHint() || showError() ? radioId() + '-description' : undefined\"\n [attr.aria-invalid]=\"error()\"\n [attr.aria-required]=\"required()\"\n class=\"studio-radio__input\"\n (change)=\"handleChange($event)\"\n (focus)=\"handleFocus()\"\n (blur)=\"handleBlur()\"\n />\n\n <span [ngClass]=\"radioClasses()\">\n @if (isChecked()) {\n <span class=\"studio-radio__dot\"></span>\n }\n </span>\n\n @if (label() || description()) {\n <span class=\"studio-radio__label-wrapper\">\n @if (label()) {\n <span class=\"studio-radio__label\">\n {{ label() }}\n @if (required()) {\n <span class=\"studio-radio__required\" aria-hidden=\"true\">*</span>\n }\n </span>\n }\n\n @if (description()) {\n <span class=\"studio-radio__description\">\n {{ description() }}\n </span>\n }\n </span>\n }\n</label>\n\n@if (showHint() || showError()) {\n <div\n [id]=\"radioId() + '-description'\"\n class=\"studio-radio__info\"\n >\n @if (showError()) {\n <span class=\"studio-radio__error\">\n {{ errorMessage() }}\n </span>\n }\n\n @if (showHint()) {\n <span class=\"studio-radio__hint\">\n {{ hint() }}\n </span>\n }\n </div>\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n signal,\n inject,\n viewChild,\n ElementRef,\n effect,\n forwardRef,\n HostListener,\n Renderer2,\n OnDestroy\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { IconComponent } from '../icon';\nimport { StudioConfigService } from '../../config';\nimport { classNames, withConfigDefault } from '../../utils';\nimport { SelectOption, SelectOptionGroup, SelectVariant, SelectSize, SelectPosition } from './select.types';\n\n@Component({\n selector: 'studio-select',\n standalone: true,\n imports: [IconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectComponent),\n multi: true\n }\n ],\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-open]': 'isOpen()',\n },\n templateUrl: './select.component.html',\n styleUrl: './select.component.scss'\n})\nexport class SelectComponent<T = any> implements ControlValueAccessor, OnDestroy {\n private readonly configService = inject(StudioConfigService);\n private readonly selectDefaults = computed(() => this.configService.config().components?.select);\n private readonly document = inject(DOCUMENT);\n private readonly renderer = inject(Renderer2);\n private readonly hostEl = inject(ElementRef);\n\n protected readonly triggerEl = viewChild<ElementRef<HTMLButtonElement>>('triggerButton');\n protected readonly dropdownEl = viewChild<ElementRef<HTMLDivElement>>('dropdownPanel');\n\n variantInput = input<SelectVariant | undefined>(undefined, { alias: 'variant' });\n sizeInput = input<SelectSize | undefined>(undefined, { alias: 'size' });\n radiusInput = input<'none' | 'sm' | 'md' | 'lg' | 'full' | undefined>(undefined, { alias: 'radius' });\n\n variant = withConfigDefault(this.variantInput, computed(() => this.selectDefaults()?.variant), 'outline');\n size = withConfigDefault(this.sizeInput, computed(() => this.selectDefaults()?.size), 'md');\n radius = withConfigDefault(this.radiusInput, computed(() => this.selectDefaults()?.radius), 'md');\n\n options = input.required<SelectOption<T>[] | SelectOptionGroup<T>[]>();\n placeholder = input<string>('Select option...');\n\n multiple = input<boolean>(false);\n searchable = input<boolean>(false);\n clearable = input<boolean>(true);\n disabled = input<boolean>(false);\n loading = input<boolean>(false);\n\n label = input<string | undefined>(undefined);\n floatingLabel = input<boolean>(false);\n hint = input<string | undefined>(undefined);\n error = input<boolean>(false);\n errorMessage = input<string | undefined>(undefined);\n required = input<boolean>(false);\n\n prefixIcon = input<string | undefined>(undefined);\n suffixIcon = input<string>('chevron-down');\n\n fullWidth = input<boolean>(false);\n maxHeight = input<string>('300px');\n position = input<SelectPosition>('bottom');\n appendToBody = input<boolean>(false);\n\n searchPlaceholder = input<string>('Search...');\n\n valueChange = output<T | T[] | null>();\n searchChange = output<string>();\n opened = output<void>();\n closed = output<void>();\n optionSelected = output<SelectOption<T>>();\n\n protected isOpen = signal(false);\n protected searchQuery = signal('');\n protected selectedValue = signal<T | T[] | null>(null);\n protected highlightedIndex = signal(0);\n protected isFocused = signal(false);\n protected isTouched = signal(false);\n\n protected generatedId = `studio-select-${Math.random().toString(36).substr(2, 9)}`;\n\n private onChange: (value: any) => void = () => {};\n private onTouched: () => void = () => {};\n private portalContainer: HTMLElement | null = null;\n\n constructor() {\n effect(() => {\n if (this.isOpen()) {\n this.setupClickOutside();\n if (this.appendToBody()) {\n this.attachDropdownToBody();\n }\n } else {\n this.cleanupClickOutside();\n if (this.appendToBody()) {\n this.detachDropdownFromBody();\n }\n }\n });\n }\n\n ngOnDestroy(): void {\n this.cleanupClickOutside();\n this.detachDropdownFromBody();\n }\n\n protected flattenedOptions = computed(() => {\n const opts = this.options();\n if (!opts || opts.length === 0) return [];\n\n if (this.isOptionGroup(opts[0])) {\n return (opts as SelectOptionGroup<T>[]).flatMap(g => g.options);\n }\n return opts as SelectOption<T>[];\n });\n\n protected filteredOptions = computed(() => {\n const query = this.searchQuery().toLowerCase().trim();\n const opts = this.flattenedOptions();\n\n if (!query) return opts;\n\n return opts.filter(opt =>\n opt.label.toLowerCase().includes(query) ||\n opt.description?.toLowerCase().includes(query)\n );\n });\n\n protected selectedOptions = computed(() => {\n const value = this.selectedValue();\n const opts = this.flattenedOptions();\n\n if (this.multiple()) {\n const values = (value as T[]) || [];\n return opts.filter(opt => values.includes(opt.value));\n }\n\n return opts.find(opt => this.compareValues(opt.value, value as T)) || null;\n });\n\n protected displayValue = computed(() => {\n const selected = this.selectedOptions();\n\n if (this.multiple() && Array.isArray(selected)) {\n return selected.map(opt => opt.label).join(', ');\n }\n\n if (selected && !Array.isArray(selected)) {\n return selected.label;\n }\n\n return '';\n });\n\n protected hasValue = computed(() => {\n const val = this.selectedValue();\n return this.multiple()\n ? Array.isArray(val) && val.length > 0\n : val !== null && val !== undefined;\n });\n\n protected hostClasses = computed(() => classNames(\n 'studio-select',\n `studio-select--${this.variant()}`,\n `studio-select--${this.size()}`,\n `studio-select--radius-${this.radius()}`,\n this.isOpen() && 'studio-select--open',\n this.disabled() && 'studio-select--disabled',\n this.loading() && 'studio-select--loading',\n this.error() && 'studio-select--error',\n this.isFocused() && 'studio-select--focused',\n this.hasValue() && 'studio-select--has-value',\n this.fullWidth() && 'studio-select--full-width'\n ));\n\n protected toggle(): void {\n if (!this.disabled() && !this.loading()) {\n this.isOpen.update(v => !v);\n if (this.isOpen()) {\n this.opened.emit();\n setTimeout(() => this.focusSearchInput(), 0);\n } else {\n this.closed.emit();\n this.searchQuery.set('');\n }\n }\n }\n\n protected close(): void {\n if (this.isOpen()) {\n this.isOpen.set(false);\n this.closed.emit();\n this.searchQuery.set('');\n this.isTouched.set(true);\n this.onTouched();\n }\n }\n\n protected selectOption(option: SelectOption<T>): void {\n if (option.disabled) return;\n\n if (this.multiple()) {\n const current = ((this.selectedValue() as T[]) || []);\n const isSelected = current.includes(option.value);\n\n if (isSelected) {\n this.selectedValue.set(current.filter(v => v !== option.value));\n } else {\n this.selectedValue.set([...current, option.value]);\n }\n } else {\n this.selectedValue.set(option.value);\n this.close();\n }\n\n this.onChange(this.selectedValue());\n this.valueChange.emit(this.selectedValue());\n this.optionSelected.emit(option);\n }\n\n protected clear(event: Event): void {\n event.stopPropagation();\n this.selectedValue.set(this.multiple() ? [] : null);\n this.onChange(this.selectedValue());\n this.valueChange.emit(this.selectedValue());\n }\n\n protected isSelected(option: SelectOption<T>): boolean {\n if (this.multiple()) {\n const values = (this.selectedValue() as T[]) || [];\n return values.includes(option.value);\n }\n return this.compareValues(option.value, this.selectedValue() as T);\n }\n\n protected handleSearch(event: Event): void {\n const query = (event.target as HTMLInputElement).value;\n this.searchQuery.set(query);\n this.searchChange.emit(query);\n }\n\n protected handleKeydown(event: KeyboardEvent): void {\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n if (!this.isOpen()) {\n this.toggle();\n } else {\n this.highlightNext();\n }\n break;\n case 'ArrowUp':\n event.preventDefault();\n if (this.isOpen()) {\n this.highlightPrevious();\n }\n break;\n case 'Enter':\n case ' ':\n event.preventDefault();\n if (this.isOpen()) {\n this.selectHighlighted();\n } else {\n this.toggle();\n }\n break;\n case 'Escape':\n if (this.isOpen()) {\n event.preventDefault();\n this.close();\n }\n break;\n }\n }\n\n private highlightNext(): void {\n const opts = this.filteredOptions();\n const current = this.highlightedIndex();\n this.highlightedIndex.set(Math.min(current + 1, opts.length - 1));\n }\n\n private highlightPrevious(): void {\n const current = this.highlightedIndex();\n this.highlightedIndex.set(Math.max(current - 1, 0));\n }\n\n private selectHighlighted(): void {\n const opts = this.filteredOptions();\n const index = this.highlightedIndex();\n if (opts[index]) {\n this.selectOption(opts[index]);\n }\n }\n\n private compareValues(a: T, b: T): boolean {\n return a === b;\n }\n\n private isOptionGroup(item: any): item is SelectOptionGroup<T> {\n return item && 'options' in item && Array.isArray(item.options);\n }\n\n private focusSearchInput(): void {\n if (this.searchable()) {\n const searchInput = this.dropdownEl()?.nativeElement.querySelector('input');\n searchInput?.focus();\n }\n }\n\n private clickOutsideListener?: (event: Event) => void;\n\n private setupClickOutside(): void {\n this.clickOutsideListener = (event: Event) => {\n const target = event.target as HTMLElement;\n const trigger = this.triggerEl()?.nativeElement;\n const dropdown = this.dropdownEl()?.nativeElement;\n\n if (trigger && !trigger.contains(target) && dropdown && !dropdown.contains(target)) {\n this.close();\n }\n };\n\n setTimeout(() => {\n document.addEventListener('click', this.clickOutsideListener!);\n }, 0);\n }\n\n private cleanupClickOutside(): void {\n if (this.clickOutsideListener) {\n document.removeEventListener('click', this.clickOutsideListener);\n this.clickOutsideListener = undefined;\n }\n }\n\n writeValue(value: T | T[]): void {\n this.selectedValue.set(value);\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n }\n\n private attachDropdownToBody(): void {\n setTimeout(() => {\n const dropdown = this.dropdownEl()?.nativeElement;\n const trigger = this.triggerEl()?.nativeElement;\n\n if (!dropdown || !trigger) return;\n\n // Create container if not exists\n if (!this.portalContainer) {\n this.portalContainer = this.renderer.createElement('div');\n this.renderer.addClass(this.portalContainer, 'studio-select-portal');\n this.renderer.appendChild(this.document.body, this.portalContainer);\n }\n\n // Get trigger position\n const rect = trigger.getBoundingClientRect();\n const controlEl = this.hostEl.nativeElement.querySelector('.studio-select__control');\n const controlRect = controlEl?.getBoundingClientRect() || rect;\n\n // Move dropdown to portal\n this.renderer.appendChild(this.portalContainer, dropdown);\n\n // Position dropdown\n this.renderer.setStyle(dropdown, 'position', 'fixed');\n this.renderer.setStyle(dropdown, 'top', `${controlRect.bottom + 4}px`);\n this.renderer.setStyle(dropdown, 'left', `${controlRect.left}px`);\n this.renderer.setStyle(dropdown, 'width', `${controlRect.width}px`);\n this.renderer.setStyle(dropdown, 'zIndex', '9999');\n }, 0);\n }\n\n private detachDropdownFromBody(): void {\n if (this.portalContainer) {\n this.renderer.removeChild(this.document.body, this.portalContainer);\n this.portalContainer = null;\n }\n }\n}\n","@if (label() && !floatingLabel()) {\n <label [for]=\"generatedId\" class=\"studio-select__label\">\n {{ label() }}\n @if (required()) {\n <span class=\"studio-select__required\">*</span>\n }\n </label>\n}\n\n<div class=\"studio-select__control\">\n @if (prefixIcon()) {\n <span class=\"studio-select__prefix\">\n <studio-icon [name]=\"prefixIcon()!\" [size]=\"16\" />\n </span>\n }\n\n @if (label() && floatingLabel()) {\n <label [for]=\"generatedId\" class=\"studio-select__label--floating\">\n {{ label() }}\n @if (required()) {\n <span class=\"studio-select__required\">*</span>\n }\n </label>\n }\n\n <button\n #triggerButton\n type=\"button\"\n [id]=\"generatedId\"\n class=\"studio-select__trigger\"\n [disabled]=\"disabled() || loading()\"\n (click)=\"toggle()\"\n (keydown)=\"handleKeydown($event)\"\n (focus)=\"isFocused.set(true)\"\n (blur)=\"isFocused.set(false)\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-haspopup]=\"'listbox'\"\n >\n @if (hasValue()) {\n <span class=\"studio-select__value\">{{ displayValue() }}</span>\n } @else {\n <span class=\"studio-select__placeholder\">{{ placeholder() }}</span>\n }\n </button>\n\n @if (clearable() && hasValue() && !disabled() && !loading()) {\n <button\n type=\"button\"\n class=\"studio-select__clear\"\n (click)=\"clear($event)\"\n aria-label=\"Clear selection\"\n tabindex=\"-1\"\n >\n <studio-icon name=\"x\" [size]=\"14\" />\n </button>\n }\n\n @if (loading()) {\n <span class=\"studio-select__loading\">\n <studio-icon name=\"loader-2\" [size]=\"16\" class=\"studio-icon--spin\" />\n </span>\n } @else {\n <span class=\"studio-select__suffix\">\n <studio-icon\n [name]=\"suffixIcon()\"\n [size]=\"16\"\n />\n </span>\n }\n</div>\n\n@if (isOpen()) {\n <div\n #dropdownPanel\n class=\"studio-select__dropdown\"\n [attr.data-position]=\"position()\"\n [style.max-height]=\"maxHeight()\"\n >\n @if (searchable()) {\n <div class=\"studio-select__search\">\n <input\n type=\"text\"\n [placeholder]=\"searchPlaceholder()\"\n [value]=\"searchQuery()\"\n (input)=\"handleSearch($event)\"\n />\n </div>\n }\n\n <div class=\"studio-select__options\" role=\"listbox\">\n @if (filteredOptions().length === 0) {\n <div class=\"studio-select__empty\">\n No options found\n </div>\n }\n\n @for (option of filteredOptions(); track option.value; let idx = $index) {\n <div\n class=\"studio-select__option\"\n [class.studio-select__option--selected]=\"isSelected(option)\"\n [class.studio-select__option--disabled]=\"option.disabled\"\n [class.studio-select__option--highlighted]=\"highlightedIndex() === idx\"\n (click)=\"selectOption(option)\"\n role=\"option\"\n [attr.aria-selected]=\"isSelected(option)\"\n >\n @if (multiple()) {\n <input\n type=\"checkbox\"\n class=\"studio-select__checkbox\"\n [checked]=\"isSelected(option)\"\n [disabled]=\"option.disabled\"\n tabindex=\"-1\"\n />\n }\n\n @if (option.icon) {\n <studio-icon [name]=\"option.icon\" [size]=\"18\" class=\"studio-select__option-icon\" />\n }\n\n <div class=\"studio-select__option-content\">\n <div class=\"studio-select__option-label\">\n {{ option.label }}\n </div>\n @if (option.description) {\n <div class=\"studio-select__option-description\">\n {{ option.description }}\n </div>\n }\n </div>\n\n @if (!multiple() && isSelected(option)) {\n <studio-icon name=\"check\" [size]=\"16\" class=\"studio-select__check-icon\" />\n }\n </div>\n }\n </div>\n </div>\n}\n\n@if (hint() && !error()) {\n <div class=\"studio-select__hint\">{{ hint() }}</div>\n}\n\n@if (error() && errorMessage()) {\n <div class=\"studio-select__error\">{{ errorMessage() }}</div>\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n model,\n computed,\n inject,\n effect\n} from '@angular/core';\nimport { Router, NavigationEnd } from '@angular/router';\nimport { filter } from 'rxjs/operators';\nimport { DrawerComponent } from '../drawer';\nimport { StudioConfigService } from '../../config';\nimport { withConfigDefault } from '../../utils';\nimport { SidebarPosition, SidebarSize, SidebarVariant } from './sidebar.types';\n\n/**\n * Sidebar component - Navigation sidebar built on top of Drawer\n *\n * @example\n * <studio-sidebar [(visible)]=\"sidebarOpen\">\n * <nav sidebarHeader>\n * <h2>Navigation</h2>\n * </nav>\n *\n * <studio-menu>\n * <studio-menu-item>Home</studio-menu-item>\n * <studio-menu-item>About</studio-menu-item>\n * </studio-menu>\n *\n * <div sidebarFooter>\n * <studio-button>Logout</studio-button>\n * </div>\n * </studio-sidebar>\n */\n@Component({\n selector: 'studio-sidebar',\n standalone: true,\n imports: [DrawerComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n },\n templateUrl: './sidebar.component.html',\n styleUrl: './sidebar.component.scss'\n})\nexport class SidebarComponent {\n private readonly router = inject(Router, { optional: true });\n private readonly configService = inject(StudioConfigService);\n private readonly sidebarDefaults = computed(() => this.configService.config().components?.sidebar);\n\n // Core\n id = input<string>(`studio-sidebar-${Math.random().toString(36).substr(2, 9)}`);\n visible = model<boolean>(false);\n\n // Position & Size\n positionInput = input<SidebarPosition | undefined>(undefined, { alias: 'position' });\n sizeInput = input<SidebarSize | undefined>(undefined, { alias: 'size' });\n variantInput = input<SidebarVariant | undefined>(undefined, { alias: 'variant' });\n customWidth = input<string | undefined>(undefined);\n\n position = withConfigDefault(this.positionInput, computed(() => this.sidebarDefaults()?.position), 'left');\n size = withConfigDefault(this.sizeInput, computed(() => this.sidebarDefaults()?.size), 'md');\n variant = withConfigDefault(this.variantInput, computed(() => this.sidebarDefaults()?.variant), 'default');\n\n // Behavior\n modalInput = input<boolean | undefined>(undefined, { alias: 'modal' });\n collapsibleInput = input<boolean | undefined>(undefined, { alias: 'collapsible' });\n defaultCollapsedInput = input<boolean | undefined>(undefined, { alias: 'defaultCollapsed' });\n closeOnNavigateInput = input<boolean | undefined>(undefined, { alias: 'closeOnNavigate' });\n closeOnBackdropClickInput = input<boolean | undefined>(undefined, { alias: 'closeOnBackdropClick' });\n closeOnEscapeInput = input<boolean | undefined>(undefined, { alias: 'closeOnEscape' });\n blockScrollInput = input<boolean | undefined>(undefined, { alias: 'blockScroll' });\n swipeToCloseInput = input<boolean | undefined>(undefined, { alias: 'swipeToClose' });\n\n modal = withConfigDefault(this.modalInput, computed(() => this.sidebarDefaults()?.modal), true);\n collapsible = withConfigDefault(this.collapsibleInput, computed(() => this.sidebarDefaults()?.collapsible), false);\n defaultCollapsed = withConfigDefault(this.defaultCollapsedInput, computed(() => this.sidebarDefaults()?.defaultCollapsed), false);\n closeOnNavigate = withConfigDefault(this.closeOnNavigateInput, computed(() => this.sidebarDefaults()?.closeOnNavigate), true);\n closeOnBackdropClick = withConfigDefault(this.closeOnBackdropClickInput, computed(() => this.sidebarDefaults()?.closeOnBackdropClick), true);\n closeOnEscape = withConfigDefault(this.closeOnEscapeInput, computed(() => this.sidebarDefaults()?.closeOnEscape), true);\n blockScroll = withConfigDefault(this.blockScrollInput, computed(() => this.sidebarDefaults()?.blockScroll), true);\n swipeToClose = withConfigDefault(this.swipeToCloseInput, computed(() => this.sidebarDefaults()?.swipeToClose), true);\n\n // UI Elements\n header = input<string | undefined>(undefined);\n showHeaderInput = input<boolean | undefined>(undefined, { alias: 'showHeader' });\n showFooterInput = input<boolean | undefined>(undefined, { alias: 'showFooter' });\n showCloseButtonInput = input<boolean | undefined>(undefined, { alias: 'showCloseButton' });\n\n showHeader = withConfigDefault(this.showHeaderInput, computed(() => this.sidebarDefaults()?.showHeader), true);\n showFooter = withConfigDefault(this.showFooterInput, computed(() => this.sidebarDefaults()?.showFooter), true);\n showCloseButton = withConfigDefault(this.showCloseButtonInput, computed(() => this.sidebarDefaults()?.showCloseButton), true);\n\n // Content Customization\n contentPadding = input<string | undefined>(undefined);\n contentGap = input<string | undefined>(undefined);\n background = input<string | undefined>(undefined);\n\n // Customization\n class = input<string>('');\n\n // ========== Computed values ==========\n protected hostClasses = computed(() => {\n const classes = ['studio-sidebar'];\n classes.push(`studio-sidebar--${this.position()}`);\n classes.push(`studio-sidebar--${this.size()}`);\n classes.push(`studio-sidebar--${this.variant()}`);\n if (this.collapsible()) classes.push('studio-sidebar--collapsible');\n if (this.class()) classes.push(this.class());\n return classes.join(' ');\n });\n\n protected drawerSize = computed<'sm' | 'md' | 'lg' | 'xl' | 'full'>(() => {\n const currentSize = this.size();\n const sizeMap: Record<SidebarSize, 'sm' | 'md' | 'lg' | 'xl' | 'full'> = {\n 'sm': 'sm',\n 'md': 'md',\n 'lg': 'lg',\n 'full': 'full'\n };\n return sizeMap[currentSize];\n });\n\n constructor() {\n // Close sidebar on navigation if enabled\n if (this.router && this.closeOnNavigate()) {\n effect(() => {\n const subscription = this.router!.events\n .pipe(filter(event => event instanceof NavigationEnd))\n .subscribe(() => {\n if (this.closeOnNavigate() && this.visible()) {\n this.visible.set(false);\n }\n });\n\n return () => subscription.unsubscribe();\n });\n }\n }\n}\n","<studio-drawer\n [visible]=\"visible()\"\n (visibleChange)=\"visible.set($event)\"\n [position]=\"position()\"\n [size]=\"drawerSize()\"\n [modal]=\"modal()\"\n [closeOnBackdropClick]=\"closeOnBackdropClick()\"\n [closeOnEscape]=\"closeOnEscape()\"\n [blockScroll]=\"blockScroll()\"\n [showHeader]=\"showHeader()\"\n [header]=\"header()\"\n [showCloseButton]=\"showCloseButton()\"\n [showFooter]=\"showFooter()\"\n [swipeToClose]=\"swipeToClose()\"\n [customWidth]=\"customWidth()\"\n>\n <ng-content select=\"[sidebarHeader]\" drawerHeader />\n\n <div\n class=\"studio-sidebar__content\"\n [class]=\"'studio-sidebar__content--' + variant()\"\n [style.padding]=\"contentPadding()\"\n [style.gap]=\"contentGap()\"\n [style.background]=\"background()\">\n <ng-content />\n </div>\n\n <ng-content select=\"[sidebarFooter]\" drawerFooter />\n</studio-drawer>\n","/**\n * Sidebar component types\n */\n\nexport type SidebarPosition = 'left' | 'right';\nexport type SidebarSize = 'sm' | 'md' | 'lg' | 'full';\nexport type SidebarVariant = 'default' | 'minimal' | 'compact';\n\nexport interface SidebarConfig {\n position?: SidebarPosition;\n size?: SidebarSize;\n variant?: SidebarVariant;\n collapsible?: boolean;\n defaultCollapsed?: boolean;\n modal?: boolean;\n closeOnNavigate?: boolean;\n showOverlay?: boolean;\n}\n","/**\n * Sidebar component\n */\n\nexport * from './sidebar.component';\nexport * from './sidebar.types';\n","import { Component, ChangeDetectionStrategy, input, output, computed, model, inject, signal, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { IconComponent } from '../icon';\nimport { StudioConfigService } from '../../config';\nimport { classNames, withConfigDefault } from '../../utils';\n\n/**\n * Toggle switch component with customizable size and color\n *\n * @example\n * <studio-switch [(checked)]=\"isEnabled\" label=\"Enable feature\" />\n * <studio-switch [(ngModel)]=\"isEnabled\" label=\"Enable feature\" />\n */\n@Component({\n selector: 'studio-switch',\n standalone: true,\n imports: [IconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SwitchComponent),\n multi: true\n }\n ],\n host: {\n '[class]': 'hostClasses()',\n '[attr.role]': '\"switch\"',\n '[attr.aria-checked]': 'internalChecked()',\n '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\n '[attr.aria-label]': 'ariaLabel() || label()',\n '(click)': 'handleClick()',\n '(keydown.space)': 'handleKeydown($event)',\n '(keydown.enter)': 'handleKeydown($event)',\n '[tabindex]': 'disabled() ? -1 : 0'\n },\n template: `\n <span class=\"studio-switch__container\">\n @if (label() && labelPosition() === 'left') {\n <span class=\"studio-switch__label studio-switch__label--left\">\n {{ label() }}\n </span>\n }\n\n <span class=\"studio-switch__track\">\n <span class=\"studio-switch__thumb\">\n @if (showIcons()) {\n @if (internalChecked()) {\n <studio-icon name=\"check\" [size]=\"iconSize()\" color=\"inherit\" />\n } @else {\n <studio-icon name=\"x\" [size]=\"iconSize()\" color=\"inherit\" />\n }\n }\n </span>\n </span>\n\n @if (label() && labelPosition() === 'right') {\n <span class=\"studio-switch__label studio-switch__label--right\">\n {{ label() }}\n </span>\n }\n </span>\n `,\n styleUrl: './switch.component.scss'\n})\nexport class SwitchComponent implements ControlValueAccessor {\n private readonly configService = inject(StudioConfigService);\n private readonly switchDefaults = computed(() => this.configService.config().components?.switch);\n\n checked = model<boolean>(false);\n disabled = input<boolean>(false);\n label = input<string>();\n labelPosition = input<'left' | 'right'>('right');\n showIcons = input<boolean>(false);\n ariaLabel = input<string>();\n\n sizeInput = input<'sm' | 'md' | 'lg' | undefined>(undefined, { alias: 'size' });\n colorInput = input<'primary' | 'secondary' | 'success' | undefined>(undefined, { alias: 'color' });\n\n size = withConfigDefault(this.sizeInput, computed(() => this.switchDefaults()?.size), 'md');\n color = withConfigDefault(this.colorInput, computed(() => this.switchDefaults()?.color), 'primary');\n\n checkedChange = output<boolean>();\n\n protected internalChecked = signal<boolean>(false);\n\n private onChange: (value: boolean) => void = () => {};\n private onTouched: () => void = () => {};\n\n protected iconSize = computed(() => {\n const sizeMap = { sm: 10, md: 12, lg: 14 };\n return sizeMap[this.size()];\n });\n\n protected hostClasses = computed(() => classNames(\n 'studio-switch',\n `studio-switch--${this.size()}`,\n `studio-switch--${this.color()}`,\n this.internalChecked() && 'studio-switch--checked',\n this.disabled() && 'studio-switch--disabled'\n ));\n\n writeValue(value: boolean): void {\n this.internalChecked.set(value ?? false);\n this.checked.set(value ?? false);\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {}\n\n protected handleClick(): void {\n if (this.disabled()) return;\n this.toggle();\n }\n\n protected handleKeydown(event: KeyboardEvent): void {\n if (this.disabled()) return;\n event.preventDefault();\n this.toggle();\n }\n\n private toggle(): void {\n const newValue = !this.internalChecked();\n this.internalChecked.set(newValue);\n this.checked.set(newValue);\n this.onChange(newValue);\n this.onTouched();\n this.checkedChange.emit(newValue);\n }\n}\n","/**\n * Switch component\n */\n\nexport * from './switch.component';\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n computed,\n model,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { IconComponent } from '../icon';\nimport { classNames } from '../../utils';\nimport {\n PaginationSize,\n PaginationVariant,\n} from './pagination.types';\n\n/**\n * Pagination component for navigating through pages of data\n *\n * @example\n * <studio-pagination\n * [(page)]=\"currentPage\"\n * [(pageSize)]=\"pageSize\"\n * [totalItems]=\"100\"\n * [pageSizeOptions]=\"[10, 25, 50]\"\n * (pageChange)=\"onPageChange($event)\"\n * />\n */\n@Component({\n selector: 'studio-pagination',\n imports: [CommonModule, FormsModule, IconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n },\n template: `\n <div class=\"studio-pagination__container\">\n <!-- Page size selector -->\n @if (showPageSizeSelector()) {\n <div class=\"studio-pagination__page-size\">\n <span class=\"studio-pagination__label\">{{ pageSizeLabel() }}</span>\n <select\n class=\"studio-pagination__select\"\n [ngModel]=\"pageSize()\"\n (ngModelChange)=\"onPageSizeChange($event)\"\n >\n @for (option of pageSizeOptions(); track option) {\n <option [value]=\"option\">{{ option }}</option>\n }\n </select>\n </div>\n }\n\n <!-- Info text -->\n @if (showInfo()) {\n <div class=\"studio-pagination__info\">\n {{ infoText() }}\n </div>\n }\n\n <!-- Navigation -->\n <div class=\"studio-pagination__nav\">\n <!-- First page button -->\n @if (showFirstLast()) {\n <button\n type=\"button\"\n class=\"studio-pagination__btn studio-pagination__btn--nav\"\n [disabled]=\"isFirstPage()\"\n (click)=\"goToFirst()\"\n [attr.aria-label]=\"firstLabel()\"\n >\n <studio-icon name=\"chevrons-left\" [size]=\"iconSize()\" />\n </button>\n }\n\n <!-- Previous button -->\n <button\n type=\"button\"\n class=\"studio-pagination__btn studio-pagination__btn--nav\"\n [disabled]=\"isFirstPage()\"\n (click)=\"goToPrevious()\"\n [attr.aria-label]=\"previousLabel()\"\n >\n <studio-icon name=\"chevron-left\" [size]=\"iconSize()\" />\n </button>\n\n <!-- Page numbers -->\n @if (showPageNumbers()) {\n <div class=\"studio-pagination__pages\">\n @for (pageNum of visiblePages(); track pageNum) {\n @if (pageNum === -1) {\n <span class=\"studio-pagination__ellipsis\">...</span>\n } @else {\n <button\n type=\"button\"\n class=\"studio-pagination__btn studio-pagination__btn--page\"\n [class.studio-pagination__btn--active]=\"pageNum === page()\"\n (click)=\"goToPage(pageNum)\"\n [attr.aria-label]=\"'Page ' + pageNum\"\n [attr.aria-current]=\"pageNum === page() ? 'page' : null\"\n >\n {{ pageNum }}\n </button>\n }\n }\n </div>\n } @else {\n <!-- Simple page indicator -->\n <span class=\"studio-pagination__indicator\">\n {{ page() }} / {{ totalPages() }}\n </span>\n }\n\n <!-- Next button -->\n <button\n type=\"button\"\n class=\"studio-pagination__btn studio-pagination__btn--nav\"\n [disabled]=\"isLastPage()\"\n (click)=\"goToNext()\"\n [attr.aria-label]=\"nextLabel()\"\n >\n <studio-icon name=\"chevron-right\" [size]=\"iconSize()\" />\n </button>\n\n <!-- Last page button -->\n @if (showFirstLast()) {\n <button\n type=\"button\"\n class=\"studio-pagination__btn studio-pagination__btn--nav\"\n [disabled]=\"isLastPage()\"\n (click)=\"goToLast()\"\n [attr.aria-label]=\"lastLabel()\"\n >\n <studio-icon name=\"chevrons-right\" [size]=\"iconSize()\" />\n </button>\n }\n </div>\n </div>\n `,\n styles: `\n :host {\n display: block;\n font-family: var(--studio-font-family);\n }\n\n .studio-pagination__container {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 1rem;\n flex-wrap: wrap;\n }\n\n .studio-pagination__page-size {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n }\n\n .studio-pagination__label {\n font-size: 0.875rem;\n color: var(--studio-text-secondary);\n white-space: nowrap;\n }\n\n .studio-pagination__select {\n padding: 0.375rem 0.75rem;\n font-size: 0.875rem;\n border: 1px solid var(--studio-border-primary);\n border-radius: var(--studio-radius-md);\n background: var(--studio-bg-primary);\n color: var(--studio-text-primary);\n cursor: pointer;\n outline: none;\n transition: border-color var(--studio-transition-fast);\n\n &:hover {\n border-color: var(--studio-border-hover, var(--studio-border-primary));\n }\n\n &:focus {\n border-color: var(--studio-color-primary);\n box-shadow: 0 0 0 2px var(--studio-color-primary-alpha, rgba(59, 130, 246, 0.2));\n }\n }\n\n .studio-pagination__info {\n font-size: 0.875rem;\n color: var(--studio-text-secondary);\n white-space: nowrap;\n }\n\n .studio-pagination__nav {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n }\n\n .studio-pagination__btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border: 1px solid var(--studio-border-primary);\n border-radius: var(--studio-radius-md);\n background: var(--studio-bg-primary);\n color: var(--studio-text-primary);\n cursor: pointer;\n transition: all var(--studio-transition-fast);\n\n &:hover:not(:disabled) {\n background: var(--studio-bg-secondary);\n border-color: var(--studio-border-hover, var(--studio-border-primary));\n }\n\n &:active:not(:disabled) {\n transform: scale(0.95);\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n }\n\n .studio-pagination__btn--nav {\n padding: 0.375rem;\n }\n\n .studio-pagination__btn--page {\n min-width: 2rem;\n padding: 0.375rem 0.5rem;\n font-size: 0.875rem;\n }\n\n .studio-pagination__btn--active {\n background: var(--studio-color-primary);\n border-color: var(--studio-color-primary);\n color: white;\n\n &:hover:not(:disabled) {\n background: var(--studio-color-primary-hover, var(--studio-color-primary));\n border-color: var(--studio-color-primary-hover, var(--studio-color-primary));\n }\n }\n\n .studio-pagination__pages {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n }\n\n .studio-pagination__ellipsis {\n padding: 0 0.5rem;\n color: var(--studio-text-secondary);\n }\n\n .studio-pagination__indicator {\n padding: 0 0.75rem;\n font-size: 0.875rem;\n color: var(--studio-text-secondary);\n white-space: nowrap;\n }\n\n /* Size variants */\n :host(.pagination--sm) {\n .studio-pagination__label,\n .studio-pagination__info,\n .studio-pagination__indicator {\n font-size: 0.75rem;\n }\n\n .studio-pagination__select {\n padding: 0.25rem 0.5rem;\n font-size: 0.75rem;\n }\n\n .studio-pagination__btn--nav {\n padding: 0.25rem;\n }\n\n .studio-pagination__btn--page {\n min-width: 1.75rem;\n padding: 0.25rem 0.375rem;\n font-size: 0.75rem;\n }\n }\n\n :host(.pagination--lg) {\n .studio-pagination__label,\n .studio-pagination__info,\n .studio-pagination__indicator {\n font-size: 1rem;\n }\n\n .studio-pagination__select {\n padding: 0.5rem 1rem;\n font-size: 1rem;\n }\n\n .studio-pagination__btn--nav {\n padding: 0.5rem;\n }\n\n .studio-pagination__btn--page {\n min-width: 2.5rem;\n padding: 0.5rem 0.75rem;\n font-size: 1rem;\n }\n }\n\n /* Variant: minimal */\n :host(.pagination--minimal) {\n .studio-pagination__btn {\n border: none;\n background: transparent;\n\n &:hover:not(:disabled) {\n background: var(--studio-bg-secondary);\n }\n }\n\n .studio-pagination__btn--active {\n background: var(--studio-color-primary);\n color: white;\n }\n }\n\n /* Variant: compact */\n :host(.pagination--compact) {\n .studio-pagination__container {\n gap: 0.5rem;\n }\n\n .studio-pagination__nav {\n gap: 0.125rem;\n }\n\n .studio-pagination__pages {\n gap: 0.125rem;\n }\n }\n `,\n})\nexport class PaginationComponent {\n // Two-way bindings\n page = model<number>(1);\n pageSize = model<number>(10);\n\n // Inputs\n totalItems = input<number>(0);\n pageSizeOptions = input<number[]>([10, 25, 50, 100]);\n size = input<PaginationSize>('md');\n variant = input<PaginationVariant>('default');\n maxVisiblePages = input<number>(5);\n\n // Display options\n showPageSizeSelector = input<boolean>(true);\n showPageNumbers = input<boolean>(true);\n showInfo = input<boolean>(true);\n showFirstLast = input<boolean>(false);\n\n // Labels\n pageSizeLabel = input<string>('Показать:');\n previousLabel = input<string>('Предыдущая');\n nextLabel = input<string>('Следующая');\n firstLabel = input<string>('Первая');\n lastLabel = input<string>('Последняя');\n infoTemplate = input<string>('Показано {from}-{to} из {total}');\n\n // Note: pageChange and pageSizeChange events are automatically created by model()\n // They emit the new value directly (number), not event objects\n\n // Computed values\n protected totalPages = computed(() => {\n const total = this.totalItems();\n const size = this.pageSize();\n return Math.max(1, Math.ceil(total / size));\n });\n\n protected isFirstPage = computed(() => this.page() <= 1);\n protected isLastPage = computed(() => this.page() >= this.totalPages());\n\n protected iconSize = computed(() => {\n const sizeMap: Record<PaginationSize, number> = { sm: 14, md: 16, lg: 20 };\n return sizeMap[this.size()];\n });\n\n protected hostClasses = computed(() =>\n classNames(\n 'studio-pagination',\n `pagination--${this.size()}`,\n `pagination--${this.variant()}`\n )\n );\n\n protected infoText = computed(() => {\n const currentPage = this.page();\n const size = this.pageSize();\n const total = this.totalItems();\n\n const from = total === 0 ? 0 : (currentPage - 1) * size + 1;\n const to = Math.min(currentPage * size, total);\n\n return this.infoTemplate()\n .replace('{from}', from.toString())\n .replace('{to}', to.toString())\n .replace('{total}', total.toString());\n });\n\n protected visiblePages = computed(() => {\n const totalPages = this.totalPages();\n const currentPage = this.page();\n const maxVisible = this.maxVisiblePages();\n\n if (totalPages <= maxVisible) {\n return Array.from({ length: totalPages }, (_, i) => i + 1);\n }\n\n const pages: number[] = [];\n const half = Math.floor(maxVisible / 2);\n\n let start = Math.max(1, currentPage - half);\n let end = Math.min(totalPages, start + maxVisible - 1);\n\n if (end - start < maxVisible - 1) {\n start = Math.max(1, end - maxVisible + 1);\n }\n\n // Always show first page\n if (start > 1) {\n pages.push(1);\n if (start > 2) {\n pages.push(-1); // Ellipsis\n }\n }\n\n // Middle pages\n for (let i = start; i <= end; i++) {\n if (!pages.includes(i)) {\n pages.push(i);\n }\n }\n\n // Always show last page\n if (end < totalPages) {\n if (end < totalPages - 1) {\n pages.push(-1); // Ellipsis\n }\n pages.push(totalPages);\n }\n\n return pages;\n });\n\n // Methods\n goToPage(pageNum: number): void {\n if (pageNum < 1 || pageNum > this.totalPages() || pageNum === this.page()) {\n return;\n }\n this.page.set(pageNum);\n // model() automatically emits pageChange with the new value\n }\n\n goToFirst(): void {\n this.goToPage(1);\n }\n\n goToLast(): void {\n this.goToPage(this.totalPages());\n }\n\n goToPrevious(): void {\n this.goToPage(this.page() - 1);\n }\n\n goToNext(): void {\n this.goToPage(this.page() + 1);\n }\n\n onPageSizeChange(newSize: number): void {\n const previousSize = this.pageSize();\n const newSizeNum = Number(newSize);\n\n if (newSizeNum === previousSize) return;\n\n // Calculate new page to keep similar position\n const currentFirstItem = (this.page() - 1) * previousSize + 1;\n const newPage = Math.ceil(currentFirstItem / newSizeNum);\n\n this.pageSize.set(newSizeNum);\n this.page.set(Math.max(1, Math.min(newPage, Math.ceil(this.totalItems() / newSizeNum))));\n // model() automatically emits pageSizeChange and pageChange with new values\n }\n}\n","/**\n * Pagination component types\n */\n\nexport type PaginationSize = 'sm' | 'md' | 'lg';\nexport type PaginationVariant = 'default' | 'minimal' | 'compact';\n\nexport interface PaginationPageChangeEvent {\n page: number;\n pageSize: number;\n totalItems: number;\n totalPages: number;\n}\n\nexport interface PaginationPageSizeChangeEvent {\n pageSize: number;\n previousPageSize: number;\n}\n","/**\n * Pagination component\n */\n\nexport * from './pagination.component';\nexport * from './pagination.types';\n","import { Directive, Input, TemplateRef, ContentChild } from '@angular/core';\nimport { TableColumn } from './table.types';\n\n/**\n * Directive for declarative column definition\n *\n * @example\n * <studio-table-column\n * key=\"name\"\n * label=\"Name\"\n * [sortable]=\"true\">\n * <ng-template let-row>{{ row.name }}</ng-template>\n * </studio-table-column>\n */\n@Directive({\n selector: 'studio-table-column',\n standalone: true\n})\nexport class TableColumnDirective<T = any> {\n @Input({ required: true }) key!: keyof T | string;\n @Input({ required: true }) label!: string;\n @Input() field?: keyof T | ((row: T) => any);\n @Input() width?: string;\n @Input() minWidth?: string;\n @Input() maxWidth?: string;\n @Input() sortable?: boolean;\n @Input() sortFn?: (a: T, b: T, direction: 'asc' | 'desc') => number;\n @Input() filterable?: boolean;\n @Input() align?: 'left' | 'center' | 'right';\n @Input() fixed?: 'left' | 'right' | false;\n @Input() hideOnMobile?: boolean;\n @Input() priority?: number;\n @Input() cellClass?: string | ((row: T) => string);\n @Input() headerClass?: string;\n @Input() formatter?: (value: any, row: T) => string;\n @Input() resizable?: boolean;\n\n @ContentChild(TemplateRef) template?: TemplateRef<any>;\n\n /**\n * Convert directive inputs to TableColumn config\n */\n toColumnConfig(): TableColumn<T> {\n return {\n key: this.key,\n label: this.label,\n field: this.field,\n width: this.width,\n minWidth: this.minWidth,\n maxWidth: this.maxWidth,\n sortable: this.sortable,\n sortFn: this.sortFn,\n filterable: this.filterable,\n align: this.align,\n fixed: this.fixed,\n hideOnMobile: this.hideOnMobile,\n priority: this.priority,\n cellTemplate: this.template,\n cellClass: this.cellClass,\n headerClass: this.headerClass,\n formatter: this.formatter,\n resizable: this.resizable\n };\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n signal,\n effect,\n contentChildren,\n contentChild,\n TemplateRef,\n inject,\n model\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IconComponent } from '../icon';\nimport { CheckboxComponent } from '../checkbox';\nimport { ButtonComponent } from '../button';\nimport { StudioConfigService } from '../../config';\nimport { classNames, withConfigDefault } from '../../utils';\nimport { TableColumnDirective } from './table-column.directive';\nimport {\n TableColumn,\n TableSort,\n SortDirection,\n SelectionMode,\n TableDensity,\n TableVariant,\n SortEvent,\n SelectionEvent,\n RowAction,\n EmptyStateConfig,\n TableCellContext,\n TableHeaderContext\n} from './table.types';\n\n/**\n * Enterprise-grade Table component with full feature set\n *\n * @example\n * <studio-table\n * [data]=\"users\"\n * [columns]=\"columns\"\n * selectionMode=\"multiple\"\n * [(selected)]=\"selectedUsers\">\n * </studio-table>\n */\n@Component({\n selector: 'studio-table',\n standalone: true,\n imports: [CommonModule, IconComponent, CheckboxComponent, ButtonComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n },\n templateUrl: './table.component.html',\n styleUrl: './table.component.scss'\n})\nexport class TableComponent<T = any> {\n private readonly configService = inject(StudioConfigService);\n private readonly tableDefaults = computed(() => this.configService.config().components?.table);\n\n // Config inputs with defaults\n variantInput = input<TableVariant | undefined>(undefined, { alias: 'variant' });\n densityInput = input<TableDensity | undefined>(undefined, { alias: 'density' });\n\n variant = withConfigDefault(this.variantInput, computed(() => this.tableDefaults()?.variant), 'default');\n density = withConfigDefault(this.densityInput, computed(() => this.tableDefaults()?.density), 'comfortable');\n\n // Data inputs\n data = input<T[]>([]);\n columns = input<TableColumn<T>[]>([]);\n rowKey = input<keyof T | ((row: T) => string | number)>('id' as keyof T);\n\n // Column directives (declarative mode)\n columnDirectives = contentChildren(TableColumnDirective);\n\n // Features\n selectionMode = input<SelectionMode>('none');\n sortable = input<boolean>(true);\n sortMode = input<'client' | 'server'>('client');\n hoverable = input<boolean>(true);\n stickyHeader = input<boolean>(false);\n showHeader = input<boolean>(true);\n\n // Row expansion\n expandable = input<boolean>(false);\n expandedRowTemplate = contentChild<TemplateRef<any>>('expandedRow');\n expandMultiple = input<boolean>(false);\n\n // Loading & Empty states\n loading = input<boolean>(false);\n loadingRows = input<number>(5);\n emptyState = input<EmptyStateConfig>({\n icon: 'inbox',\n title: 'No data',\n message: 'No data available to display'\n });\n\n // Row actions\n rowActions = input<RowAction<T>[]>([]);\n\n // Responsive\n responsive = input<boolean>(true);\n mobileBreakpoint = input<number>(768);\n\n // State models\n selected = model<T[]>([]);\n sort = model<TableSort<T> | null>(null);\n expanded = model<Set<string | number>>(new Set());\n\n // Outputs\n sortChange = output<SortEvent<T>>();\n selectionChange = output<SelectionEvent<T>>();\n rowClick = output<T>();\n rowDblClick = output<T>();\n\n // Internal state\n protected currentSort = signal<TableSort<T> | null>(null);\n protected selectedRows = signal<Set<string | number>>(new Set());\n protected expandedRows = signal<Set<string | number>>(new Set());\n\n // Computed columns (merge programmatic + declarative)\n protected finalColumns = computed(() => {\n const programmatic = this.columns();\n const declarative = this.columnDirectives().map(dir => dir.toColumnConfig());\n return declarative.length > 0 ? declarative : programmatic;\n });\n\n // Computed data (sorted, filtered)\n protected processedData = computed(() => {\n let result = [...this.data()];\n\n // Apply sorting (client-side only)\n if (this.sortMode() === 'client' && this.currentSort()) {\n result = this.applySorting(result);\n }\n\n return result;\n });\n\n // Selection helpers\n protected allSelected = computed(() => {\n const data = this.processedData();\n const selected = this.selectedRows();\n return data.length > 0 && data.every(row => selected.has(this.getRowKey(row)));\n });\n\n protected someSelected = computed(() => {\n const data = this.processedData();\n const selected = this.selectedRows();\n return data.some(row => selected.has(this.getRowKey(row))) && !this.allSelected();\n });\n\n protected hostClasses = computed(() => classNames(\n 'studio-table',\n `studio-table--${this.variant()}`,\n `studio-table--${this.density()}`,\n this.hoverable() && 'studio-table--hoverable',\n this.stickyHeader() && 'studio-table--sticky-header',\n this.loading() && 'studio-table--loading',\n this.responsive() && 'studio-table--responsive'\n ));\n\n constructor() {\n // Sync model signals\n effect(() => {\n const sortVal = this.sort();\n if (sortVal) this.currentSort.set(sortVal);\n });\n\n effect(() => {\n const current = this.currentSort();\n if (current) this.sort.set(current);\n });\n\n effect(() => {\n const selected = this.selected();\n const keys = new Set(selected.map(row => this.getRowKey(row)));\n this.selectedRows.set(keys);\n });\n\n effect(() => {\n const expanded = this.expanded();\n this.expandedRows.set(expanded);\n });\n }\n\n // Public API\n sortBy(column: TableColumn<T>, direction?: SortDirection): void {\n if (!column.sortable && !this.sortable()) return;\n\n const currentSort = this.currentSort();\n const prevDirection = currentSort?.column === column.key ? currentSort.direction : null;\n\n // Toggle: asc -> desc -> null\n let newDirection: SortDirection | null = direction || 'asc';\n if (!direction) {\n if (prevDirection === 'asc') newDirection = 'desc';\n else if (prevDirection === 'desc') newDirection = null;\n }\n\n if (newDirection) {\n this.currentSort.set({ column: column.key as string, direction: newDirection });\n this.sortChange.emit({\n column,\n direction: newDirection,\n previousDirection: prevDirection\n });\n } else {\n this.currentSort.set(null);\n }\n }\n\n selectRow(row: T): void {\n if (this.selectionMode() === 'none') return;\n\n const rowKey = this.getRowKey(row);\n const selected = new Set(this.selectedRows());\n\n if (this.selectionMode() === 'single') {\n selected.clear();\n selected.add(rowKey);\n } else {\n if (selected.has(rowKey)) {\n selected.delete(rowKey);\n } else {\n selected.add(rowKey);\n }\n }\n\n this.selectedRows.set(selected);\n this.updateSelectedModel();\n\n this.selectionChange.emit({\n selected: this.getSelectedRows(),\n row,\n isSelected: selected.has(rowKey)\n });\n }\n\n selectAll(select: boolean): void {\n if (this.selectionMode() !== 'multiple') return;\n\n const selected = new Set<string | number>();\n if (select) {\n this.processedData().forEach(row => {\n selected.add(this.getRowKey(row));\n });\n }\n\n this.selectedRows.set(selected);\n this.updateSelectedModel();\n\n this.selectionChange.emit({\n selected: this.getSelectedRows(),\n isSelected: select\n });\n }\n\n toggleRowExpansion(row: T): void {\n if (!this.expandable()) return;\n\n const rowKey = this.getRowKey(row);\n const expanded = new Set(this.expandedRows());\n\n if (!this.expandMultiple()) {\n expanded.clear();\n }\n\n if (expanded.has(rowKey)) {\n expanded.delete(rowKey);\n } else {\n expanded.add(rowKey);\n }\n\n this.expandedRows.set(expanded);\n this.expanded.set(expanded);\n }\n\n isRowExpanded(row: T): boolean {\n return this.expandedRows().has(this.getRowKey(row));\n }\n\n isRowSelected(row: T): boolean {\n return this.selectedRows().has(this.getRowKey(row));\n }\n\n getCellValue(row: T, column: TableColumn<T>): any {\n if (column.field) {\n if (typeof column.field === 'function') {\n return column.field(row);\n }\n return row[column.field as keyof T];\n }\n return row[column.key as keyof T];\n }\n\n getHeaderClass(column: TableColumn<T>): string {\n const classes = ['studio-table__th'];\n\n if (column.headerClass) classes.push(column.headerClass);\n if (column.sortable) classes.push('studio-table__th--sortable');\n if (this.currentSort()?.column === column.key) classes.push('studio-table__th--sorted');\n\n const align = column.align || 'left';\n classes.push(`studio-table__th--align-${align}`);\n\n if (column.fixed) classes.push(`studio-table__th--fixed-${column.fixed}`);\n if (column.hideOnMobile) classes.push('studio-table__th--hide-mobile');\n\n return classes.join(' ');\n }\n\n getCellClass(row: T, column: TableColumn<T>): string {\n if (typeof column.cellClass === 'function') {\n return column.cellClass(row);\n }\n return column.cellClass || '';\n }\n\n getFullCellClass(row: T, column: TableColumn<T>): string {\n const classes = ['studio-table__td'];\n\n const customClass = this.getCellClass(row, column);\n if (customClass) classes.push(customClass);\n\n const align = column.align || 'left';\n classes.push(`studio-table__td--align-${align}`);\n\n if (column.fixed) classes.push(`studio-table__td--fixed-${column.fixed}`);\n if (column.hideOnMobile) classes.push('studio-table__td--hide-mobile');\n\n return classes.join(' ');\n }\n\n getCellContext(row: T, column: TableColumn<T>, index: number): TableCellContext<T> {\n const value = this.getCellValue(row, column);\n return {\n $implicit: value,\n row,\n column,\n index\n };\n }\n\n getHeaderContext(column: TableColumn<T>): TableHeaderContext<T> {\n const currentSort = this.currentSort();\n return {\n column,\n sorted: currentSort?.column === column.key,\n direction: currentSort?.column === column.key ? currentSort.direction : null\n };\n }\n\n getSortIcon(column: TableColumn<T>): string {\n const currentSort = this.currentSort();\n if (currentSort?.column !== column.key) return 'arrow-up-down';\n return currentSort.direction === 'asc' ? 'arrow-up' : 'arrow-down';\n }\n\n handleRowClick(row: T, event: Event): void {\n if ((event.target as HTMLElement).closest('.studio-table__actions')) return;\n this.rowClick.emit(row);\n }\n\n handleRowDblClick(row: T): void {\n this.rowDblClick.emit(row);\n }\n\n executeRowAction(action: RowAction<T>, row: T, event: Event): void {\n event.stopPropagation();\n if (action.disabled && action.disabled(row)) return;\n action.handler(row);\n }\n\n isActionVisible(action: RowAction<T>, row: T): boolean {\n return !action.visible || action.visible(row);\n }\n\n isActionDisabled(action: RowAction<T>, row: T): boolean {\n return action.disabled ? action.disabled(row) : false;\n }\n\n // Public helpers for template\n getRowKey(row: T): string | number {\n const keyFn = this.rowKey();\n if (typeof keyFn === 'function') {\n const result = keyFn(row);\n return result ?? this.processedData().indexOf(row);\n }\n const value = row[keyFn] as string | number;\n // Fallback to index if key is empty/undefined\n return value ?? this.processedData().indexOf(row);\n }\n\n private getSelectedRows(): T[] {\n const selected = this.selectedRows();\n return this.processedData().filter(row => selected.has(this.getRowKey(row)));\n }\n\n private updateSelectedModel(): void {\n this.selected.set(this.getSelectedRows());\n }\n\n private applySorting(data: T[]): T[] {\n const sortConfig = this.currentSort();\n if (!sortConfig) return data;\n\n const column = this.finalColumns().find(col => col.key === sortConfig.column);\n if (!column) return data;\n\n return [...data].sort((a, b) => {\n if (column.sortFn) {\n return column.sortFn(a, b, sortConfig.direction);\n }\n\n const aVal = this.getCellValue(a, column);\n const bVal = this.getCellValue(b, column);\n\n if (aVal === bVal) return 0;\n if (aVal == null) return 1;\n if (bVal == null) return -1;\n\n const comparison = aVal < bVal ? -1 : 1;\n return sortConfig.direction === 'asc' ? comparison : -comparison;\n });\n }\n}\n","<div class=\"studio-table__wrapper\">\n <!-- Loading Overlay -->\n @if (loading()) {\n <div class=\"studio-table__loading-overlay\">\n <studio-icon name=\"loader-2\" [size]=\"32\" class=\"studio-table__spinner\" />\n </div>\n }\n\n <!-- Table Container -->\n <div class=\"studio-table__container\">\n <table class=\"studio-table__table\">\n <!-- Header -->\n @if (showHeader()) {\n <thead class=\"studio-table__thead\">\n <tr class=\"studio-table__header-row\">\n <!-- Selection Column -->\n @if (selectionMode() === 'multiple') {\n <th class=\"studio-table__th studio-table__th--selection\">\n <studio-checkbox\n [value]=\"allSelected()\"\n [indeterminate]=\"someSelected()\"\n (changed)=\"selectAll($event)\"\n />\n </th>\n }\n\n <!-- Expansion Column -->\n @if (expandable()) {\n <th class=\"studio-table__th studio-table__th--expand\"></th>\n }\n\n <!-- Data Columns -->\n @for (column of finalColumns(); track column.key) {\n <th\n [class]=\"getHeaderClass(column)\"\n [style.width]=\"column.width\"\n [style.min-width]=\"column.minWidth\"\n [style.max-width]=\"column.maxWidth\"\n (click)=\"column.sortable && sortBy(column)\">\n\n <div class=\"studio-table__header-content\">\n @if (column.headerTemplate) {\n <ng-container *ngTemplateOutlet=\"column.headerTemplate; context: getHeaderContext(column)\" />\n } @else {\n <span>{{ column.label }}</span>\n @if (column.sortable && sortable()) {\n <studio-icon\n [name]=\"getSortIcon(column)\"\n [size]=\"16\"\n class=\"studio-table__sort-icon\"\n />\n }\n }\n </div>\n </th>\n }\n\n <!-- Actions Column -->\n @if (rowActions().length > 0) {\n <th class=\"studio-table__th studio-table__th--actions\">Actions</th>\n }\n </tr>\n </thead>\n }\n\n <!-- Body -->\n <tbody class=\"studio-table__tbody\">\n <!-- Loading Skeleton -->\n @if (loading()) {\n @for (i of [].constructor(loadingRows()); track $index) {\n <tr class=\"studio-table__row studio-table__row--loading\">\n @if (selectionMode() === 'multiple') {\n <td class=\"studio-table__td\">\n <div class=\"studio-table__skeleton studio-table__skeleton--checkbox\"></div>\n </td>\n }\n @if (expandable()) {\n <td class=\"studio-table__td\">\n <div class=\"studio-table__skeleton studio-table__skeleton--icon\"></div>\n </td>\n }\n @for (column of finalColumns(); track column.key) {\n <td class=\"studio-table__td\" [class.studio-table__th--hide-mobile]=\"column.hideOnMobile\">\n <div class=\"studio-table__skeleton\"></div>\n </td>\n }\n @if (rowActions().length > 0) {\n <td class=\"studio-table__td\">\n <div class=\"studio-table__skeleton studio-table__skeleton--icon\"></div>\n </td>\n }\n </tr>\n }\n }\n\n <!-- Empty State -->\n @if (!loading() && processedData().length === 0) {\n <tr class=\"studio-table__row studio-table__row--empty\">\n <td [attr.colspan]=\"finalColumns().length + (selectionMode() === 'multiple' ? 1 : 0) + (expandable() ? 1 : 0) + (rowActions().length > 0 ? 1 : 0)\" class=\"studio-table__td\">\n <div class=\"studio-table__empty\">\n <studio-icon [name]=\"emptyState().icon || 'inbox'\" [size]=\"48\" class=\"studio-table__empty-icon\" />\n <h3 class=\"studio-table__empty-title\">{{ emptyState().title }}</h3>\n <p class=\"studio-table__empty-message\">{{ emptyState().message }}</p>\n @if (emptyState().action) {\n <studio-button\n size=\"sm\"\n (clicked)=\"emptyState().action!.handler()\">\n {{ emptyState().action!.label }}\n </studio-button>\n }\n </div>\n </td>\n </tr>\n }\n\n <!-- Data Rows -->\n @if (!loading()) {\n @for (row of processedData(); track getRowKey(row); let rowIndex = $index) {\n <!-- Main Row -->\n <tr\n class=\"studio-table__row\"\n [class.studio-table__row--selected]=\"isRowSelected(row)\"\n [class.studio-table__row--expanded]=\"isRowExpanded(row)\"\n [class.studio-table__row--clickable]=\"selectionMode() === 'single'\"\n (click)=\"selectionMode() === 'single' && selectRow(row); handleRowClick(row, $event)\"\n (dblclick)=\"handleRowDblClick(row)\">\n\n <!-- Selection Cell -->\n @if (selectionMode() === 'multiple') {\n <td class=\"studio-table__td studio-table__td--selection\">\n <studio-checkbox\n [value]=\"isRowSelected(row)\"\n (changed)=\"selectRow(row)\"\n (click)=\"$event.stopPropagation()\"\n />\n </td>\n }\n\n <!-- Expansion Cell -->\n @if (expandable()) {\n <td class=\"studio-table__td studio-table__td--expand\">\n <studio-button\n variant=\"ghost\"\n size=\"sm\"\n iconPosition=\"only\"\n [icon]=\"isRowExpanded(row) ? 'chevron-down' : 'chevron-right'\"\n (clicked)=\"toggleRowExpansion(row); $event.stopPropagation()\"\n />\n </td>\n }\n\n <!-- Data Cells -->\n @for (column of finalColumns(); track column.key) {\n <td\n [class]=\"getFullCellClass(row, column)\"\n [attr.data-label]=\"column.label\">\n\n @if (column.cellTemplate) {\n <ng-container *ngTemplateOutlet=\"column.cellTemplate; context: getCellContext(row, column, rowIndex)\" />\n } @else {\n <span>{{ column.formatter ? column.formatter(getCellValue(row, column), row) : getCellValue(row, column) }}</span>\n }\n </td>\n }\n\n <!-- Actions Cell -->\n @if (rowActions().length > 0) {\n <td class=\"studio-table__td studio-table__td--actions\">\n <div class=\"studio-table__actions\">\n @for (action of rowActions(); track action.label) {\n @if (isActionVisible(action, row)) {\n @if (action.divider) {\n <div class=\"studio-table__action-divider\"></div>\n }\n <studio-button\n variant=\"ghost\"\n size=\"sm\"\n [icon]=\"action.icon\"\n [disabled]=\"isActionDisabled(action, row)\"\n [color]=\"action.variant === 'danger' ? 'error' : 'primary'\"\n (clicked)=\"executeRowAction(action, row, $event)\">\n {{ action.label }}\n </studio-button>\n }\n }\n </div>\n </td>\n }\n </tr>\n\n <!-- Expanded Row -->\n @if (expandable() && isRowExpanded(row) && expandedRowTemplate()) {\n <tr class=\"studio-table__row studio-table__row--expansion\">\n <td [attr.colspan]=\"finalColumns().length + (selectionMode() === 'multiple' ? 1 : 0) + (expandable() ? 1 : 0) + (rowActions().length > 0 ? 1 : 0)\" class=\"studio-table__td\">\n <div class=\"studio-table__expansion-content\">\n <ng-container *ngTemplateOutlet=\"expandedRowTemplate(); context: { $implicit: row, index: rowIndex }\" />\n </div>\n </td>\n </tr>\n }\n }\n }\n </tbody>\n </table>\n </div>\n</div>\n","/**\n * Table component types and interfaces\n * Enterprise-grade type-safe table with full feature set\n */\n\nimport { Signal, TemplateRef } from '@angular/core';\n\n/**\n * Column definition with type safety\n */\nexport interface TableColumn<T = any> {\n /** Unique column identifier */\n key: keyof T | string;\n /** Column header label */\n label: string;\n /** Data accessor function or property path */\n field?: keyof T | ((row: T) => any);\n /** Column width (CSS value) */\n width?: string;\n /** Minimum column width */\n minWidth?: string;\n /** Maximum column width */\n maxWidth?: string;\n /** Enable sorting for this column */\n sortable?: boolean;\n /** Custom sort comparator */\n sortFn?: (a: T, b: T, direction: SortDirection) => number;\n /** Enable filtering */\n filterable?: boolean;\n /** Column alignment */\n align?: 'left' | 'center' | 'right';\n /** Fixed column (sticky) */\n fixed?: 'left' | 'right' | false;\n /** Hide column on mobile */\n hideOnMobile?: boolean;\n /** Column priority for responsive (higher = keep visible longer) */\n priority?: number;\n /** Custom cell template */\n cellTemplate?: TemplateRef<TableCellContext<T>>;\n /** Custom header template */\n headerTemplate?: TemplateRef<TableHeaderContext<T>>;\n /** Cell CSS class */\n cellClass?: string | ((row: T) => string);\n /** Header CSS class */\n headerClass?: string;\n /** Format cell value */\n formatter?: (value: any, row: T) => string;\n /** Column is resizable */\n resizable?: boolean;\n}\n\n/**\n * Table cell template context\n */\nexport interface TableCellContext<T> {\n $implicit: any;\n row: T;\n column: TableColumn<T>;\n index: number;\n}\n\n/**\n * Table header template context\n */\nexport interface TableHeaderContext<T> {\n column: TableColumn<T>;\n sorted: boolean;\n direction: SortDirection | null;\n}\n\n/**\n * Sort configuration\n */\nexport interface TableSort<T = any> {\n column: keyof T | string;\n direction: SortDirection;\n}\n\nexport type SortDirection = 'asc' | 'desc';\n\n/**\n * Selection mode\n */\nexport type SelectionMode = 'none' | 'single' | 'multiple';\n\n/**\n * Table density/size\n */\nexport type TableDensity = 'compact' | 'comfortable' | 'spacious';\n\n/**\n * Table variant styles\n */\nexport type TableVariant = 'default' | 'striped' | 'bordered' | 'minimal';\n\n/**\n * Row expansion state\n */\nexport interface RowExpansion<T> {\n row: T;\n expanded: boolean;\n}\n\n/**\n * Table state (for external control)\n */\nexport interface TableState<T = any> {\n /** Currently sorted column */\n sort?: TableSort<T>;\n /** Selected row indices or IDs */\n selection?: Set<number | string>;\n /** Expanded row indices or IDs */\n expanded?: Set<number | string>;\n /** Current page (if using pagination) */\n page?: number;\n /** Page size */\n pageSize?: number;\n /** Global filter/search value */\n filter?: string;\n}\n\n/**\n * Sort event payload\n */\nexport interface SortEvent<T = any> {\n column: TableColumn<T>;\n direction: SortDirection;\n previousDirection: SortDirection | null;\n}\n\n/**\n * Selection event payload\n */\nexport interface SelectionEvent<T = any> {\n selected: T[];\n row?: T;\n isSelected: boolean;\n}\n\n/**\n * Row action definition\n */\nexport interface RowAction<T = any> {\n label: string;\n icon?: string;\n handler: (row: T) => void;\n visible?: (row: T) => boolean;\n disabled?: (row: T) => boolean;\n variant?: 'default' | 'danger';\n divider?: boolean;\n}\n\n/**\n * Empty state configuration\n */\nexport interface EmptyStateConfig {\n icon?: string;\n title?: string;\n message?: string;\n action?: {\n label: string;\n handler: () => void;\n };\n}\n","import { Component, ChangeDetectionStrategy, input, output, computed, signal, effect, TemplateRef, contentChildren } from '@angular/core';\nimport { IconComponent } from '../icon';\nimport { classNames } from '../../utils';\nimport { TabsVariant, TabsSize, TabsOrientation } from './tabs.types';\n\nexport interface TabItem {\n id: string;\n label: string;\n icon?: string;\n disabled?: boolean;\n content?: TemplateRef<any>;\n}\n\n@Component({\n selector: 'studio-tabs',\n standalone: true,\n imports: [IconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n },\n template: `\n <div class=\"tabs__header\" [class.tabs__header--vertical]=\"orientation() === 'vertical'\">\n @for (tab of tabs(); track tab.id) {\n <button\n type=\"button\"\n class=\"tabs__tab\"\n [class.tabs__tab--active]=\"activeTab() === tab.id\"\n [class.tabs__tab--disabled]=\"tab.disabled\"\n [disabled]=\"tab.disabled\"\n (click)=\"selectTab(tab.id)\"\n >\n @if (tab.icon) {\n <studio-icon [name]=\"tab.icon\" [size]=\"iconSize()\" />\n }\n <span>{{ tab.label }}</span>\n </button>\n }\n </div>\n \n <div class=\"tabs__content\">\n <ng-content />\n </div>\n `,\n styles: `\n :host {\n display: flex;\n flex-direction: column;\n font-family: var(--studio-font-family);\n }\n\n :host(.tabs--vertical) {\n flex-direction: row;\n }\n\n .tabs__header {\n display: flex;\n gap: 0.25rem;\n border-bottom: 2px solid var(--studio-border-primary);\n\n &--vertical {\n flex-direction: column;\n border-bottom: none;\n border-right: 2px solid var(--studio-border-primary);\n padding-right: 1rem;\n }\n }\n\n .tabs__tab {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.75rem 1rem;\n background: none;\n border: none;\n border-bottom: 2px solid transparent;\n color: var(--studio-text-secondary);\n font-size: 0.875rem;\n font-weight: var(--studio-font-weight-medium);\n cursor: pointer;\n transition: all var(--studio-transition-fast);\n position: relative;\n margin-bottom: -2px;\n\n &:hover:not(:disabled) {\n color: var(--studio-text-primary);\n background: var(--studio-bg-secondary);\n }\n\n &--active {\n color: var(--studio-primary);\n border-bottom-color: var(--studio-primary);\n }\n\n &--disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n }\n\n :host(.tabs--pills) {\n .tabs__header {\n border-bottom: none;\n }\n\n .tabs__tab {\n border-radius: var(--studio-radius-md);\n border-bottom: none;\n margin-bottom: 0;\n\n &--active {\n background: var(--studio-primary);\n color: white;\n }\n }\n }\n\n :host(.tabs--enclosed) {\n .tabs__tab {\n border: 1px solid transparent;\n border-radius: var(--studio-radius-md) var(--studio-radius-md) 0 0;\n margin-bottom: -1px;\n\n &--active {\n border-color: var(--studio-border-primary);\n border-bottom-color: var(--studio-bg-primary);\n background: var(--studio-bg-primary);\n }\n }\n }\n\n :host(.tabs--sm) .tabs__tab {\n padding: 0.5rem 0.75rem;\n font-size: 0.8125rem;\n }\n\n :host(.tabs--lg) .tabs__tab {\n padding: 1rem 1.25rem;\n font-size: 1rem;\n }\n\n .tabs__content {\n padding: 1.5rem 0;\n }\n `\n})\nexport class TabsComponent {\n tabs = input.required<TabItem[]>();\n activeTab = signal<string>('');\n variant = input<TabsVariant>('line');\n size = input<TabsSize>('md');\n orientation = input<TabsOrientation>('horizontal');\n\n tabChange = output<string>();\n\n protected hostClasses = computed(() => classNames(\n 'tabs',\n 'tabs--' + this.variant(),\n 'tabs--' + this.size(),\n this.orientation() === 'vertical' && 'tabs--vertical'\n ));\n\n protected iconSize = computed(() => {\n const sizeMap = { sm: 14, md: 16, lg: 18 };\n return sizeMap[this.size()];\n });\n\n constructor() {\n effect(() => {\n // Set first tab as active by default when tabs change\n const tabsList = this.tabs();\n const firstTab = tabsList[0];\n if (firstTab && !this.activeTab()) {\n this.activeTab.set(firstTab.id);\n }\n });\n }\n\n protected selectTab(tabId: string): void {\n this.activeTab.set(tabId);\n this.tabChange.emit(tabId);\n }\n}\n","import { Component, input, output, computed, signal, forwardRef, inject, effect, ElementRef, viewChild } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { StudioConfigService } from '../../config/studio.service';\nimport { classNames } from '../../utils';\n\n/**\n * Textarea component for multi-line text input\n *\n * @example\n * <studio-textarea\n * [(ngModel)]=\"message\"\n * label=\"Your message\"\n * placeholder=\"Enter your message...\"\n * [rows]=\"4\"\n * />\n */\n@Component({\n selector: 'studio-textarea',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './textarea.component.html',\n styleUrl: './textarea.component.scss',\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextareaComponent),\n multi: true\n }],\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-size]': 'size()',\n '[attr.data-variant]': 'variant()',\n '[attr.data-disabled]': 'disabled()',\n '[attr.data-error]': 'error()',\n '[attr.data-full-width]': 'fullWidth()'\n }\n})\nexport class TextareaComponent implements ControlValueAccessor {\n private readonly configService = inject(StudioConfigService);\n private readonly textareaDefaults = computed(() => this.configService.config().components?.textarea);\n\n variant = input<TextareaVariant>(\n this.textareaDefaults()?.variant ?? 'outline'\n );\n\n size = input<TextareaSize>(\n this.textareaDefaults()?.size ?? 'md'\n );\n\n color = input<TextareaColor>(\n this.textareaDefaults()?.color ?? 'primary'\n );\n\n radius = input<TextareaRadius>(\n this.textareaDefaults()?.radius ?? 'md'\n );\n\n // ==========================================\n // INPUTS - Labels & Description\n // ==========================================\n\n /**\n * Label text\n */\n label = input<string>();\n\n /**\n * Floating label (moves up when focused/filled)\n */\n floatingLabel = input<boolean>(false);\n\n /**\n * Placeholder text\n */\n placeholder = input<string>();\n\n /**\n * Helper text\n */\n hint = input<string>();\n\n // ==========================================\n // INPUTS - Textarea Specific\n // ==========================================\n\n /**\n * Number of visible text rows\n */\n rows = input<number>(\n this.textareaDefaults()?.rows ?? 3\n );\n\n /**\n * Minimum rows for auto-resize\n */\n minRows = input<number>();\n\n /**\n * Maximum rows for auto-resize\n */\n maxRows = input<number>();\n\n /**\n * Enable auto-resize based on content\n */\n autoResize = input<boolean>(\n this.textareaDefaults()?.autoResize ?? false\n );\n\n /**\n * Resize behavior\n */\n resize = input<'none' | 'vertical' | 'horizontal' | 'both'>(\n this.textareaDefaults()?.resize ?? 'vertical'\n );\n\n // ==========================================\n // INPUTS - Character Count\n // ==========================================\n\n /**\n * Maximum character length\n */\n maxLength = input<number>();\n\n /**\n * Show character counter\n */\n showCharCount = input<boolean>(\n this.textareaDefaults()?.showCharCount ?? false\n );\n\n /**\n * Character counter position\n */\n charCountPosition = input<'bottom-right' | 'bottom-left'>('bottom-right');\n\n // ==========================================\n // INPUTS - Validation\n // ==========================================\n\n /**\n * Required field\n */\n required = input<boolean>(false);\n\n /**\n * Minimum character length\n */\n minLength = input<number>();\n\n /**\n * Error state\n */\n error = input<boolean>(false);\n\n /**\n * Error message\n */\n errorMessage = input<string>();\n\n // ==========================================\n // INPUTS - Behavior\n // ==========================================\n\n /**\n * Disabled state\n */\n disabled = input<boolean>(false);\n\n /**\n * Readonly state\n */\n readonly = input<boolean>(false);\n\n /**\n * Full width (100% of parent)\n */\n fullWidth = input<boolean>(false);\n\n /**\n * Name attribute for form control\n */\n name = input<string>();\n\n /**\n * Autocomplete attribute\n */\n autocomplete = input<string>();\n\n /**\n * Spellcheck attribute\n */\n spellcheck = input<boolean>(true);\n\n /**\n * Show clear button\n */\n clearable = input<boolean>(\n this.textareaDefaults()?.clearable ?? false\n );\n\n /**\n * Loading state\n */\n loading = input<boolean>(false);\n\n // ==========================================\n // OUTPUTS\n // ==========================================\n\n /**\n * Emitted when value changes\n */\n changed = output<string>();\n\n /**\n * Emitted on focus\n */\n focused = output<FocusEvent>();\n\n /**\n * Emitted on blur\n */\n blurred = output<FocusEvent>();\n\n /**\n * Emitted on key press\n */\n keyPressed = output<KeyboardEvent>();\n\n // ==========================================\n // STATE\n // ==========================================\n\n /**\n * Internal value\n */\n protected internalValue = signal('');\n\n /**\n * Internal focus state\n */\n protected isFocused = signal(false);\n\n /**\n * Unique ID for accessibility\n */\n protected textareaId = signal(`studio-textarea-${Math.random().toString(36).substr(2, 9)}`);\n\n /**\n * Textarea element reference\n */\n protected textareaEl = viewChild<ElementRef<HTMLTextAreaElement>>('textarea');\n\n // ==========================================\n // COMPUTED\n // ==========================================\n\n protected hostClasses = computed(() => classNames(\n 'studio-textarea-wrapper',\n `studio-textarea-wrapper--${this.size()}`,\n `studio-textarea-wrapper--${this.variant()}`,\n this.disabled() && 'studio-textarea-wrapper--disabled',\n this.error() && 'studio-textarea-wrapper--error',\n this.isFocused() && 'studio-textarea-wrapper--focused',\n this.fullWidth() && 'studio-textarea-wrapper--full-width',\n this.floatingLabel() && 'studio-textarea-wrapper--floating-label'\n ));\n\n /**\n * Textarea element CSS classes\n */\n protected textareaClasses = computed(() => classNames(\n 'studio-textarea',\n `studio-textarea--${this.size()}`,\n `studio-textarea--${this.variant()}`,\n `studio-textarea--${this.color()}`,\n `studio-textarea--radius-${this.radius()}`,\n `studio-textarea--resize-${this.resize()}`,\n this.disabled() && 'studio-textarea--disabled',\n this.readonly() && 'studio-textarea--readonly',\n this.error() && 'studio-textarea--error',\n this.internalValue().length > 0 && 'studio-textarea--has-value',\n this.autoResize() && 'studio-textarea--auto-resize'\n ));\n\n /**\n * Show error message\n */\n protected showError = computed(() => this.error() && this.errorMessage());\n\n /**\n * Show hint\n */\n protected showHint = computed(() => !this.error() && this.hint());\n\n /**\n * Character count text\n */\n protected charCountText = computed(() => {\n const length = this.internalValue().length;\n const max = this.maxLength();\n return max ? `${length}/${max}` : `${length}`;\n });\n\n /**\n * Is character limit exceeded\n */\n protected isCharLimitExceeded = computed(() => {\n const max = this.maxLength();\n return max ? this.internalValue().length > max : false;\n });\n\n /**\n * Computed placeholder (empty if floating label)\n */\n protected computedPlaceholder = computed(() => {\n if (this.floatingLabel()) {\n return '';\n }\n return this.placeholder();\n });\n\n /**\n * Show floating label in \"up\" position\n */\n protected showFloatingLabelUp = computed(() => {\n return this.floatingLabel() && (this.isFocused() || this.internalValue().length > 0);\n });\n\n // ==========================================\n // CONTROL VALUE ACCESSOR\n // ==========================================\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: string): void {\n this.internalValue.set(value ?? '');\n this.adjustHeightIfNeeded();\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 // Disabled state is controlled via input\n }\n\n // ==========================================\n // CONSTRUCTOR & EFFECTS\n // ==========================================\n\n constructor() {\n // Auto-resize effect\n effect(() => {\n if (this.autoResize()) {\n this.adjustHeightIfNeeded();\n }\n });\n }\n\n // ==========================================\n // METHODS\n // ==========================================\n\n /**\n * Handle textarea input\n */\n protected handleInput(event: Event): void {\n if (this.disabled() || this.readonly()) {\n return;\n }\n\n const newValue = (event.target as HTMLTextAreaElement).value;\n this.internalValue.set(newValue);\n this.onChange(newValue);\n this.changed.emit(newValue);\n\n if (this.autoResize()) {\n this.adjustHeight(event.target as HTMLTextAreaElement);\n }\n }\n\n /**\n * Handle focus\n */\n protected handleFocus(event: FocusEvent): void {\n this.isFocused.set(true);\n this.focused.emit(event);\n }\n\n /**\n * Handle blur\n */\n protected handleBlur(event: FocusEvent): void {\n this.isFocused.set(false);\n this.onTouched();\n this.blurred.emit(event);\n }\n\n /**\n * Handle key press\n */\n protected handleKeyPress(event: KeyboardEvent): void {\n this.keyPressed.emit(event);\n }\n\n /**\n * Clear textarea value\n */\n protected handleClear(): void {\n if (this.disabled() || this.readonly()) {\n return;\n }\n\n this.internalValue.set('');\n this.onChange('');\n this.changed.emit('');\n\n // Focus textarea after clearing\n this.textareaEl()?.nativeElement.focus();\n }\n\n /**\n * Adjust textarea height for auto-resize\n */\n private adjustHeightIfNeeded(): void {\n if (this.autoResize()) {\n setTimeout(() => {\n const textarea = this.textareaEl()?.nativeElement;\n if (textarea) {\n this.adjustHeight(textarea);\n }\n });\n }\n }\n\n /**\n * Adjust textarea height based on content\n */\n private adjustHeight(textarea: HTMLTextAreaElement): void {\n // Reset height to auto to get proper scrollHeight\n textarea.style.height = 'auto';\n\n const minRows = this.minRows() ?? this.rows();\n const maxRows = this.maxRows();\n\n // Calculate line height\n const lineHeight = parseInt(getComputedStyle(textarea).lineHeight);\n const padding = parseInt(getComputedStyle(textarea).paddingTop) +\n parseInt(getComputedStyle(textarea).paddingBottom);\n\n // Calculate min and max heights\n const minHeight = minRows * lineHeight + padding;\n const maxHeight = maxRows ? maxRows * lineHeight + padding : Infinity;\n\n // Set new height within bounds\n const newHeight = Math.max(minHeight, Math.min(textarea.scrollHeight, maxHeight));\n textarea.style.height = `${newHeight}px`;\n }\n}\n\n// ==========================================\n// TYPES\n// ==========================================\n\nexport type TextareaVariant = 'outline' | 'filled' | 'underline';\nexport type TextareaSize = 'sm' | 'md' | 'lg';\nexport type TextareaColor = 'primary' | 'secondary' | 'success' | 'error';\nexport type TextareaRadius = 'none' | 'sm' | 'md' | 'lg' | 'full';\n","<div class=\"studio-textarea-container\">\n <!-- Label (static or floating) -->\n @if (label() && !floatingLabel()) {\n <label\n [for]=\"textareaId()\"\n class=\"studio-textarea-label\"\n [class.studio-textarea-label--required]=\"required()\"\n >\n {{ label() }}\n @if (required()) {\n <span class=\"studio-textarea-label__required\">*</span>\n }\n </label>\n }\n\n <!-- Textarea wrapper -->\n <div class=\"studio-textarea-input-wrapper\">\n <!-- Floating label -->\n @if (floatingLabel() && label()) {\n <label\n [for]=\"textareaId()\"\n class=\"studio-textarea-label studio-textarea-label--floating\"\n [class.studio-textarea-label--floating-up]=\"showFloatingLabelUp()\"\n [class.studio-textarea-label--required]=\"required()\"\n >\n {{ label() }}\n @if (required()) {\n <span class=\"studio-textarea-label__required\">*</span>\n }\n </label>\n }\n\n <!-- Textarea element -->\n <textarea\n #textarea\n [id]=\"textareaId()\"\n [class]=\"textareaClasses()\"\n [value]=\"internalValue()\"\n [placeholder]=\"computedPlaceholder()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly()\"\n [rows]=\"rows()\"\n [attr.maxlength]=\"maxLength()\"\n [attr.minlength]=\"minLength()\"\n [required]=\"required()\"\n [name]=\"name()\"\n [autocomplete]=\"autocomplete()\"\n [spellcheck]=\"spellcheck()\"\n [attr.aria-label]=\"label()\"\n [attr.aria-required]=\"required()\"\n [attr.aria-invalid]=\"error()\"\n [attr.aria-describedby]=\"showHint() || showError() ? textareaId() + '-description' : undefined\"\n (input)=\"handleInput($event)\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"\n (keypress)=\"handleKeyPress($event)\"\n ></textarea>\n\n <!-- Clear button -->\n @if (clearable() && internalValue().length > 0 && !disabled() && !readonly()) {\n <button\n type=\"button\"\n class=\"studio-textarea-clear\"\n [attr.aria-label]=\"'Clear textarea'\"\n (click)=\"handleClear()\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\n </svg>\n </button>\n }\n\n <!-- Loading indicator -->\n @if (loading()) {\n <div class=\"studio-textarea-loading\">\n <svg\n class=\"studio-textarea-spinner\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n class=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n stroke-width=\"4\"\n ></circle>\n <path\n class=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n ></path>\n </svg>\n </div>\n }\n\n <!-- Character counter -->\n @if (showCharCount()) {\n <div\n class=\"studio-textarea-char-count\"\n [class.studio-textarea-char-count--exceeded]=\"isCharLimitExceeded()\"\n [attr.data-position]=\"charCountPosition()\"\n >\n {{ charCountText() }}\n </div>\n }\n </div>\n\n <!-- Helper text / Error message -->\n @if (showError()) {\n <div\n class=\"studio-textarea-message studio-textarea-message--error\"\n [id]=\"textareaId() + '-description'\"\n role=\"alert\"\n >\n {{ errorMessage() }}\n </div>\n } @else if (showHint()) {\n <div\n class=\"studio-textarea-message studio-textarea-message--hint\"\n [id]=\"textareaId() + '-description'\"\n >\n {{ hint() }}\n </div>\n }\n</div>\n","import { Injectable, signal } from '@angular/core';\nimport { ToastMessage, ToastSeverity, ToastConfig } from './toast.types';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ToastService {\n private _messages = signal<ToastMessage[]>([]);\n readonly messages = this._messages.asReadonly();\n\n private defaultLife = 5000;\n private counter = 0;\n\n private generateId(): string {\n return `toast-${++this.counter}-${Date.now()}`;\n }\n\n show(severity: ToastSeverity, summary: string, detail?: string, config?: Partial<ToastConfig>): void {\n const message: ToastMessage = {\n id: this.generateId(),\n severity,\n summary,\n detail,\n life: config?.life ?? this.defaultLife,\n sticky: false,\n closable: config?.closable ?? true\n };\n\n this._messages.update(msgs => [...msgs, message]);\n\n if (!message.sticky && message.life) {\n setTimeout(() => {\n this.remove(message.id);\n }, message.life);\n }\n }\n\n success(summary: string, detail?: string, config?: Partial<ToastConfig>): void {\n this.show('success', summary, detail, config);\n }\n\n info(summary: string, detail?: string, config?: Partial<ToastConfig>): void {\n this.show('info', summary, detail, config);\n }\n\n warning(summary: string, detail?: string, config?: Partial<ToastConfig>): void {\n this.show('warning', summary, detail, config);\n }\n\n error(summary: string, detail?: string, config?: Partial<ToastConfig>): void {\n this.show('error', summary, detail, config);\n }\n\n remove(id: string): void {\n this._messages.update(msgs => msgs.filter(m => m.id !== id));\n }\n\n clear(): void {\n this._messages.set([]);\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n inject,\n input,\n computed\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IconComponent } from '../icon';\nimport { ToastService } from './toast.service';\nimport { ToastPosition, ToastSeverity } from './toast.types';\nimport { classNames } from '../../utils';\n\n@Component({\n selector: 'studio-toast',\n standalone: true,\n imports: [CommonModule, IconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()'\n },\n template: `\n <div class=\"studio-toast__container\">\n @for (message of toastService.messages(); track message.id) {\n <div\n class=\"studio-toast__item\"\n [class.studio-toast__item--success]=\"message.severity === 'success'\"\n [class.studio-toast__item--info]=\"message.severity === 'info'\"\n [class.studio-toast__item--warning]=\"message.severity === 'warning'\"\n [class.studio-toast__item--error]=\"message.severity === 'error'\"\n role=\"alert\"\n >\n <div class=\"studio-toast__icon\">\n <studio-icon [name]=\"getIcon(message.severity)\" [size]=\"20\" />\n </div>\n <div class=\"studio-toast__content\">\n <div class=\"studio-toast__summary\">{{ message.summary }}</div>\n @if (message.detail) {\n <div class=\"studio-toast__detail\">{{ message.detail }}</div>\n }\n </div>\n @if (message.closable) {\n <button\n type=\"button\"\n class=\"studio-toast__close\"\n (click)=\"toastService.remove(message.id)\"\n aria-label=\"Close\"\n >\n <studio-icon name=\"x\" [size]=\"16\" />\n </button>\n }\n </div>\n }\n </div>\n `,\n styles: `\n :host {\n position: fixed;\n z-index: var(--studio-z-toast, 9999);\n pointer-events: none;\n }\n\n :host(.toast--top-right) {\n top: 1rem;\n right: 1rem;\n }\n\n :host(.toast--top-left) {\n top: 1rem;\n left: 1rem;\n }\n\n :host(.toast--bottom-right) {\n bottom: 1rem;\n right: 1rem;\n }\n\n :host(.toast--bottom-left) {\n bottom: 1rem;\n left: 1rem;\n }\n\n :host(.toast--top-center) {\n top: 1rem;\n left: 50%;\n transform: translateX(-50%);\n }\n\n :host(.toast--bottom-center) {\n bottom: 1rem;\n left: 50%;\n transform: translateX(-50%);\n }\n\n .studio-toast__container {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n min-width: 320px;\n max-width: 420px;\n }\n\n .studio-toast__item {\n display: flex;\n align-items: flex-start;\n gap: 0.75rem;\n padding: 1rem;\n border-radius: var(--studio-radius-lg, 0.75rem);\n background: var(--studio-bg-primary, #ffffff);\n box-shadow: var(--studio-shadow-lg, 0 10px 15px -3px rgba(0, 0, 0, 0.1));\n border: 1px solid var(--studio-border-primary, #e5e7eb);\n pointer-events: auto;\n animation: slideIn 0.2s ease-out;\n }\n\n @keyframes slideIn {\n from {\n opacity: 0;\n transform: translateX(100%);\n }\n to {\n opacity: 1;\n transform: translateX(0);\n }\n }\n\n .studio-toast__icon {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 2rem;\n height: 2rem;\n border-radius: var(--studio-radius-full, 9999px);\n }\n\n .studio-toast__item--success .studio-toast__icon {\n background: #dcfce7;\n color: #16a34a;\n }\n\n .studio-toast__item--info .studio-toast__icon {\n background: #dbeafe;\n color: #2563eb;\n }\n\n .studio-toast__item--warning .studio-toast__icon {\n background: #fef3c7;\n color: #d97706;\n }\n\n .studio-toast__item--error .studio-toast__icon {\n background: #fee2e2;\n color: #dc2626;\n }\n\n .studio-toast__content {\n flex: 1;\n min-width: 0;\n }\n\n .studio-toast__summary {\n font-weight: var(--studio-font-weight-semibold, 600);\n font-size: 0.875rem;\n color: var(--studio-text-primary, #111827);\n }\n\n .studio-toast__detail {\n margin-top: 0.25rem;\n font-size: 0.875rem;\n color: var(--studio-text-secondary, #6b7280);\n }\n\n .studio-toast__close {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 1.5rem;\n height: 1.5rem;\n padding: 0;\n background: none;\n border: none;\n border-radius: var(--studio-radius-sm, 0.25rem);\n color: var(--studio-text-tertiary, #9ca3af);\n cursor: pointer;\n transition: all var(--studio-transition-fast, 150ms);\n\n &:hover {\n background: var(--studio-bg-secondary, #f3f4f6);\n color: var(--studio-text-secondary, #6b7280);\n }\n }\n `\n})\nexport class ToastComponent {\n protected toastService = inject(ToastService);\n\n position = input<ToastPosition>('top-right');\n\n protected hostClasses = computed(() => classNames(\n 'studio-toast',\n 'toast--' + this.position()\n ));\n\n getIcon(severity: ToastSeverity): string {\n const icons: Record<ToastSeverity, string> = {\n success: 'check-circle',\n info: 'info',\n warning: 'alert-triangle',\n error: 'alert-circle'\n };\n return icons[severity];\n }\n}\n","import { Component, ChangeDetectionStrategy, input, output, computed } from '@angular/core';\nimport { PopoverComponent } from '../popover';\nimport { classNames } from '../../utils';\n\n@Component({\n selector: 'studio-tooltip',\n standalone: true,\n imports: [PopoverComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n },\n template: `\n <studio-popover\n [trigger]=\"trigger()\"\n [position]=\"position()\"\n [openDelay]=\"openDelay()\"\n [closeDelay]=\"closeDelay()\"\n [arrow]=\"arrow()\"\n [arrowSize]=\"arrowSize()\"\n [variant]=\"'minimal'\"\n [size]=\"'sm'\"\n [animation]=\"'fade'\"\n [animationDuration]=\"150\"\n [showHeader]=\"false\"\n [showFooter]=\"false\"\n [closeOnClickOutside]=\"false\"\n [closeOnEscape]=\"false\"\n [disabled]=\"disabled()\"\n [maxWidth]=\"maxWidth()\"\n [padding]=\"'0.5rem 0.75rem'\"\n >\n <ng-content />\n <div popoverContent [innerHTML]=\"content() || ''\"></div>\n </studio-popover>\n `,\n styles: `\n :host {\n display: inline-block;\n }\n `\n})\nexport class TooltipComponent {\n content = input.required<string>();\n trigger = input<'hover' | 'focus' | 'click'>('hover');\n position = input<'top' | 'bottom' | 'left' | 'right' | 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end'>('top');\n openDelay = input<number>(200);\n closeDelay = input<number>(100);\n arrow = input<boolean>(true);\n arrowSize = input<number>(6);\n maxWidth = input<string>('300px');\n disabled = input<boolean>(false);\n\n protected hostClasses = computed(() => classNames('studio-tooltip'));\n}\n","import { Injectable, signal } from '@angular/core';\nimport { ConfirmDialogConfig } from './confirm-dialog.types';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConfirmDialogService {\n private _config = signal<ConfirmDialogConfig | null>(null);\n private _visible = signal(false);\n\n readonly config = this._config.asReadonly();\n readonly visible = this._visible.asReadonly();\n\n confirm(config: ConfirmDialogConfig): void {\n this._config.set({\n confirmText: 'Подтвердить',\n cancelText: 'Отмена',\n variant: 'default',\n ...config\n });\n this._visible.set(true);\n }\n\n accept(): void {\n const config = this._config();\n if (config?.onConfirm) {\n config.onConfirm();\n }\n this.close();\n }\n\n reject(): void {\n const config = this._config();\n if (config?.onCancel) {\n config.onCancel();\n }\n this.close();\n }\n\n close(): void {\n this._visible.set(false);\n this._config.set(null);\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n inject,\n computed,\n HostListener\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IconComponent } from '../icon';\nimport { ButtonComponent } from '../button';\nimport { ConfirmDialogService } from './confirm-dialog.service';\nimport { classNames } from '../../utils';\n\n@Component({\n selector: 'studio-confirm-dialog',\n standalone: true,\n imports: [CommonModule, IconComponent, ButtonComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n @if (confirmService.visible()) {\n <!-- Overlay -->\n <div\n class=\"studio-confirm__overlay\"\n (click)=\"confirmService.reject()\"\n ></div>\n\n <!-- Dialog -->\n <div\n class=\"studio-confirm__dialog\"\n [class.studio-confirm__dialog--danger]=\"config()?.variant === 'danger'\"\n [class.studio-confirm__dialog--warning]=\"config()?.variant === 'warning'\"\n role=\"alertdialog\"\n aria-modal=\"true\"\n >\n <!-- Icon -->\n <div class=\"studio-confirm__icon\">\n <studio-icon [name]=\"getIcon()\" [size]=\"24\" />\n </div>\n\n <!-- Content -->\n <div class=\"studio-confirm__content\">\n <h3 class=\"studio-confirm__title\">{{ config()?.title }}</h3>\n <p class=\"studio-confirm__message\">{{ config()?.message }}</p>\n </div>\n\n <!-- Actions -->\n <div class=\"studio-confirm__actions\">\n <studio-button\n variant=\"outline\"\n (clicked)=\"confirmService.reject()\"\n >\n {{ config()?.cancelText }}\n </studio-button>\n <studio-button\n [color]=\"config()?.variant === 'danger' ? 'error' : 'primary'\"\n (clicked)=\"confirmService.accept()\"\n >\n {{ config()?.confirmText }}\n </studio-button>\n </div>\n </div>\n }\n `,\n styles: `\n :host {\n display: contents;\n }\n\n .studio-confirm__overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.5);\n z-index: var(--studio-z-modal-backdrop, 1040);\n animation: fadeIn 0.2s ease;\n }\n\n @keyframes fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n }\n\n .studio-confirm__dialog {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n z-index: var(--studio-z-modal, 1050);\n width: 90%;\n max-width: 400px;\n padding: 1.5rem;\n background: var(--studio-bg-primary, #ffffff);\n border-radius: var(--studio-radius-xl, 1rem);\n box-shadow: var(--studio-shadow-xl, 0 20px 25px -5px rgba(0, 0, 0, 0.1));\n animation: scaleIn 0.2s ease;\n }\n\n @keyframes scaleIn {\n from {\n opacity: 0;\n transform: translate(-50%, -50%) scale(0.95);\n }\n to {\n opacity: 1;\n transform: translate(-50%, -50%) scale(1);\n }\n }\n\n .studio-confirm__icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 3rem;\n height: 3rem;\n margin: 0 auto 1rem;\n border-radius: var(--studio-radius-full, 9999px);\n background: #dbeafe;\n color: #2563eb;\n }\n\n .studio-confirm__dialog--danger .studio-confirm__icon {\n background: #fee2e2;\n color: #dc2626;\n }\n\n .studio-confirm__dialog--warning .studio-confirm__icon {\n background: #fef3c7;\n color: #d97706;\n }\n\n .studio-confirm__content {\n text-align: center;\n margin-bottom: 1.5rem;\n }\n\n .studio-confirm__title {\n margin: 0 0 0.5rem;\n font-size: 1.125rem;\n font-weight: var(--studio-font-weight-semibold, 600);\n color: var(--studio-text-primary, #111827);\n }\n\n .studio-confirm__message {\n margin: 0;\n font-size: 0.875rem;\n color: var(--studio-text-secondary, #6b7280);\n line-height: 1.5;\n }\n\n .studio-confirm__actions {\n display: flex;\n gap: 0.75rem;\n justify-content: center;\n }\n `\n})\nexport class ConfirmDialogComponent {\n protected confirmService = inject(ConfirmDialogService);\n\n protected config = this.confirmService.config;\n\n @HostListener('document:keydown.escape')\n protected handleEscape(): void {\n if (this.confirmService.visible()) {\n this.confirmService.reject();\n }\n }\n\n getIcon(): string {\n const config = this.config();\n if (config?.icon) return config.icon;\n\n switch (config?.variant) {\n case 'danger':\n return 'alert-triangle';\n case 'warning':\n return 'alert-circle';\n default:\n return 'help-circle';\n }\n }\n}\n","/**\n * Primitives (Atoms)\n * Basic building blocks\n */\n\nexport * from './badge';\nexport * from './badge-wrapper';\nexport * from './bottom-navigation';\nexport * from './button';\nexport * from './button-group';\nexport * from './card';\nexport * from './chat';\nexport * from './checkbox';\nexport * from './color-picker';\nexport * from './color-picker-compact';\nexport * from './drawer';\nexport * from './dropdown';\nexport * from './icon';\nexport * from './input';\nexport * from './menu';\nexport * from './phone-input';\nexport * from './modal';\nexport * from './navbar';\nexport * from './popover';\nexport * from './radio-button';\nexport * from './select';\nexport * from './sidebar';\nexport * from './switch';\nexport * from './pagination';\nexport * from './table';\nexport * from './tabs';\nexport * from './textarea';\nexport * from './toast';\nexport * from './tooltip';\nexport * from './confirm-dialog';\n","import { Component, ChangeDetectionStrategy, input, output, computed, inject, forwardRef, model } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ButtonComponent } from '../../primitives/button';\nimport { ButtonGroupComponent } from '../../primitives/button-group';\nimport { StudioConfigService } from '../../config';\nimport { classNames, withConfigDefault } from '../../utils';\nimport { ButtonToggleGroupOption, ButtonToggleGroupValue } from './button-toggle-group.types';\n\n@Component({\n selector: 'studio-button-toggle-group',\n standalone: true,\n imports: [ButtonComponent, ButtonGroupComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ButtonToggleGroupComponent),\n multi: true\n }\n ],\n host: {\n '[class]': 'hostClasses()'\n },\n template: `\n <studio-button-group\n [orientation]=\"orientation()\"\n [attached]=\"attached()\"\n [fullWidth]=\"fullWidth()\"\n [spacing]=\"spacing()\"\n [align]=\"align()\"\n [ariaLabel]=\"ariaLabel()\">\n @for (option of options(); track option.value) {\n <studio-button\n [variant]=\"isSelected(option.value) ? 'solid' : variant()\"\n [size]=\"size()\"\n [color]=\"isSelected(option.value) ? color() : 'secondary'\"\n [radius]=\"radius()\"\n [shadow]=\"shadow()\"\n [disabled]=\"disabled() || option.disabled || false\"\n [icon]=\"showIcons() ? option.icon : undefined\"\n [iconPosition]=\"iconPosition()\"\n [ariaLabel]=\"option.ariaLabel\"\n (clicked)=\"handleToggle(option.value)\">\n @if (iconPosition() !== 'only') {\n {{ option.label }}\n }\n </studio-button>\n }\n </studio-button-group>\n `,\n styleUrl: './button-toggle-group.component.scss'\n})\nexport class ButtonToggleGroupComponent implements ControlValueAccessor {\n private readonly configService = inject(StudioConfigService);\n private readonly toggleGroupDefaults = computed(() => this.configService.config().components?.buttonToggleGroup);\n\n private onChange: (value: ButtonToggleGroupValue) => void = () => {};\n private onTouched: () => void = () => {};\n\n value = model<ButtonToggleGroupValue>('' as ButtonToggleGroupValue);\n\n options = input.required<ButtonToggleGroupOption[]>();\n multiple = input<boolean>(false);\n allowEmpty = input<boolean>(true);\n\n orientationInput = input<'horizontal' | 'vertical' | undefined>(undefined, { alias: 'orientation' });\n sizeInput = input<'sm' | 'md' | 'lg' | undefined>(undefined, { alias: 'size' });\n variantInput = input<'solid' | 'outline' | 'ghost' | undefined>(undefined, { alias: 'variant' });\n colorInput = input<'primary' | 'secondary' | 'success' | 'error' | 'warning' | undefined>(undefined, { alias: 'color' });\n radiusInput = input<'none' | 'sm' | 'md' | 'lg' | 'xl' | 'full' | undefined>(undefined, { alias: 'radius' });\n shadowInput = input<'none' | 'sm' | 'md' | 'lg' | undefined>(undefined, { alias: 'shadow' });\n\n orientation = withConfigDefault(this.orientationInput, computed(() => this.toggleGroupDefaults()?.orientation), 'horizontal');\n size = withConfigDefault(this.sizeInput, computed(() => this.toggleGroupDefaults()?.size), 'md');\n variant = withConfigDefault(this.variantInput, computed(() => this.toggleGroupDefaults()?.variant), 'outline');\n color = withConfigDefault(this.colorInput, computed(() => this.toggleGroupDefaults()?.color), 'primary');\n radius = withConfigDefault(this.radiusInput, computed(() => this.toggleGroupDefaults()?.radius), 'sm');\n shadow = withConfigDefault(this.shadowInput, computed(() => this.toggleGroupDefaults()?.shadow), 'none');\n\n attached = input<boolean>(true);\n fullWidth = input<boolean>(false);\n disabled = input<boolean>(false);\n spacing = input<'none' | 'xs' | 'sm' | 'md' | 'lg'>('sm');\n align = input<'start' | 'center' | 'end' | 'stretch'>('start');\n showIcons = input<boolean>(true);\n iconPosition = input<'left' | 'right' | 'only'>('left');\n ariaLabel = input<string>();\n\n valueChange = output<ButtonToggleGroupValue>();\n\n protected hostClasses = computed(() => classNames(\n 'studio-button-toggle-group',\n this.disabled() && 'studio-button-toggle-group--disabled'\n ));\n\n protected isSelected(optionValue: string | number): boolean {\n const currentValue = this.value();\n if (this.multiple()) {\n return Array.isArray(currentValue) && currentValue.includes(optionValue);\n }\n return currentValue === optionValue;\n }\n\n protected handleToggle(optionValue: string | number): void {\n if (this.disabled()) return;\n\n let newValue: ButtonToggleGroupValue;\n\n if (this.multiple()) {\n const currentArray = Array.isArray(this.value()) ? this.value() as (string | number)[] : [];\n const index = currentArray.indexOf(optionValue);\n\n if (index > -1) {\n if (!this.allowEmpty() && currentArray.length === 1) {\n return;\n }\n newValue = currentArray.filter(v => v !== optionValue);\n } else {\n newValue = [...currentArray, optionValue];\n }\n } else {\n const currentValue = this.value();\n if (currentValue === optionValue && !this.allowEmpty()) {\n return;\n }\n newValue = currentValue === optionValue ? (this.allowEmpty() ? '' : optionValue) : optionValue;\n }\n\n this.value.set(newValue);\n this.onChange(newValue);\n this.onTouched();\n this.valueChange.emit(newValue);\n }\n\n writeValue(val: ButtonToggleGroupValue): void {\n if (val !== undefined && val !== null) {\n this.value.set(val);\n } else {\n this.value.set(this.multiple() ? [] : '');\n }\n }\n\n registerOnChange(fn: (value: ButtonToggleGroupValue) => 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 // disabled handled via input signal\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n signal,\n inject,\n forwardRef,\n TemplateRef,\n effect\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { StudioConfigService } from '../../config';\nimport { classNames } from '../../utils';\nimport { ButtonComponent } from '../../primitives/button';\nimport { IconComponent } from '../../primitives/icon';\nimport { InputComponent } from '../../primitives/input';\nimport { CheckboxComponent } from '../../primitives/checkbox';\nimport { RadioButtonComponent } from '../../primitives/radio-button';\nimport { ColorPickerCompactComponent } from '../../primitives/color-picker-compact';\nimport { SelectComponent } from '../../primitives/select';\nimport { TextareaComponent } from '../../primitives/textarea';\nimport { SwitchComponent } from '../../primitives/switch';\nimport {\n InspectorData,\n InspectorSection,\n InspectorParameter,\n InspectorOption,\n InspectorGroupDivider,\n InspectorSpacing,\n InspectorComponentSize,\n InspectorComponentVariant\n} from './inspector.types';\n\n@Component({\n selector: 'studio-inspector',\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n ButtonComponent,\n IconComponent,\n InputComponent,\n CheckboxComponent,\n RadioButtonComponent,\n ColorPickerCompactComponent,\n SelectComponent,\n TextareaComponent,\n SwitchComponent\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InspectorComponent),\n multi: true\n }\n ],\n host: {\n '[class]': 'hostClasses()',\n '[attr.role]': '\"region\"',\n '[attr.aria-label]': 'ariaLabel()'\n },\n templateUrl: './inspector.component.html',\n styleUrl: './inspector.component.scss'\n})\nexport class InspectorComponent implements ControlValueAccessor {\n private readonly configService = inject(StudioConfigService);\n\n componentSize = input<InspectorComponentSize>('sm');\n componentVariant = input<InspectorComponentVariant>('outline');\n compact = input<boolean>(false);\n showIcons = input<boolean>(true);\n showDefaultIndicator = input<boolean>(true);\n\n collapsible = input<boolean>(true);\n expandedByDefault = input<boolean>(true);\n expandedSectionsInput = input<string[]>([], { alias: 'expandedSections' });\n\n showGroupLabels = input<boolean>(true);\n groupDivider = input<InspectorGroupDivider>('line');\n groupDividerSpacing = input<InspectorSpacing>('md');\n\n labelWidth = input<string>('auto');\n fullWidth = input<boolean>(true);\n spacing = input<InspectorSpacing>('md');\n\n sectionTemplate = input<TemplateRef<any> | undefined>(undefined);\n parameterTemplates = input<Record<string, TemplateRef<any>> | undefined>(undefined);\n\n ariaLabel = input<string>('Inspector panel');\n ariaDescribedBy = input<string | undefined>(undefined);\n\n sectionToggled = output<{ id: string; expanded: boolean }>();\n parameterFocused = output<{ componentId: string; parameterId: string }>();\n parameterBlurred = output<{ componentId: string; parameterId: string }>();\n\n protected values = signal<InspectorData | null>(null);\n protected expandedSections = signal<Set<string>>(new Set());\n\n private onChange: (value: InspectorData | null) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor() {\n effect(() => {\n const inputSections = this.expandedSectionsInput();\n if (inputSections.length > 0) {\n this.expandedSections.set(new Set(inputSections));\n }\n });\n }\n\n protected hostClasses = computed(() => classNames(\n 'studio-inspector',\n this.compact() && 'studio-inspector--compact',\n `studio-inspector--spacing-${this.spacing()}`\n ));\n\n protected isSectionExpanded(componentId: string): boolean {\n return this.expandedSections().has(componentId);\n }\n\n protected toggleSection(componentId: string): void {\n if (!this.collapsible()) return;\n\n const expanded = new Set(this.expandedSections());\n\n if (expanded.has(componentId)) {\n expanded.delete(componentId);\n } else {\n expanded.add(componentId);\n }\n\n this.expandedSections.set(expanded);\n\n this.sectionToggled.emit({\n id: componentId,\n expanded: expanded.has(componentId)\n });\n }\n\n protected onParameterChange(\n componentId: string,\n groupId: string | null,\n parameterId: string,\n newValue: any\n ): void {\n const updated = structuredClone(this.values());\n if (!updated) return;\n\n const section = updated.sections.find(c => c.id === componentId);\n if (!section) return;\n\n let parameter: InspectorParameter | undefined;\n\n if (groupId) {\n const group = section.groups?.find(g => g.id === groupId);\n parameter = group?.parameters.find(p => p.id === parameterId);\n } else {\n parameter = section.parameters?.find(p => p.id === parameterId);\n }\n\n if (parameter) {\n parameter.value = newValue;\n }\n\n this.values.set(updated);\n this.onChange(updated);\n this.onTouched();\n }\n\n protected onCheckboxChange(\n componentId: string,\n groupId: string | null,\n parameterId: string,\n optionValue: any,\n checked: boolean\n ): void {\n const updated = structuredClone(this.values());\n if (!updated) return;\n\n const section = updated.sections.find(c => c.id === componentId);\n if (!section) return;\n\n let parameter: InspectorParameter | undefined;\n\n if (groupId) {\n const group = section.groups?.find(g => g.id === groupId);\n parameter = group?.parameters.find(p => p.id === parameterId);\n } else {\n parameter = section.parameters?.find(p => p.id === parameterId);\n }\n\n if (parameter && parameter.type === 'checkbox') {\n const currentValues = Array.isArray(parameter.value) ? parameter.value : [];\n\n if (checked) {\n if (!currentValues.includes(optionValue)) {\n parameter.value = [...currentValues, optionValue];\n }\n } else {\n parameter.value = currentValues.filter(v => v !== optionValue);\n }\n }\n\n this.values.set(updated);\n this.onChange(updated);\n this.onTouched();\n }\n\n protected onRadioChange(\n componentId: string,\n groupId: string | null,\n parameterId: string,\n newValue: any\n ): void {\n this.onParameterChange(componentId, groupId, parameterId, newValue);\n }\n\n protected getRadioName(componentId: string, groupId: string | null, parameterId: string): string {\n return `${componentId}-${groupId || 'root'}-${parameterId}`;\n }\n\n protected isChecked(parameter: InspectorParameter, optionValue: any): boolean {\n if (parameter.type === 'checkbox') {\n return Array.isArray(parameter.value) && parameter.value.includes(optionValue);\n } else if (parameter.type === 'radio') {\n return parameter.value === optionValue;\n }\n return false;\n }\n\n protected isRadioChecked(parameter: InspectorParameter, optionValue: any): boolean {\n return parameter.value === optionValue;\n }\n\n protected isDefault(parameter: InspectorParameter, optionValue: any): boolean {\n return parameter.default !== undefined && parameter.default === optionValue;\n }\n\n protected trackBySectionId(_: number, section: InspectorSection): string {\n return section.id;\n }\n\n protected trackByGroupId(_: number, group: { id: string }): string {\n return group.id;\n }\n\n protected trackByParameterId(_: number, param: InspectorParameter): string {\n return param.id;\n }\n\n protected trackByOptionValue(_: number, option: InspectorOption): any {\n return option.value;\n }\n\n writeValue(value: InspectorData | null): void {\n this.values.set(value);\n this.initializeExpandedSections();\n }\n\n registerOnChange(fn: (value: InspectorData | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(_: boolean): void {}\n\n private initializeExpandedSections(): void {\n const expanded = new Set<string>();\n\n const inputSections = this.expandedSectionsInput();\n if (inputSections.length > 0) {\n inputSections.forEach(id => expanded.add(id));\n } else if (this.expandedByDefault()) {\n this.values()?.sections.forEach(c => {\n if (c.expanded !== false) {\n expanded.add(c.id);\n }\n });\n } else {\n this.values()?.sections.forEach(c => {\n if (c.expanded === true) {\n expanded.add(c.id);\n }\n });\n }\n\n this.expandedSections.set(expanded);\n }\n}\n","@if (values()) {\n <div class=\"studio-inspector__container\">\n @for (section of values()!.sections; track trackBySectionId($index, section)) {\n <div class=\"studio-inspector__section\"\n [class.studio-inspector__section--expanded]=\"isSectionExpanded(section.id)\"\n [class.studio-inspector__section--collapsed]=\"!isSectionExpanded(section.id)\">\n\n <studio-button\n variant=\"ghost\"\n [fullWidth]=\"true\"\n class=\"studio-inspector__section-header\"\n [class.studio-inspector__section-header--collapsible]=\"collapsible()\"\n [disabled]=\"!collapsible()\"\n [attr.aria-expanded]=\"isSectionExpanded(section.id)\"\n [attr.aria-controls]=\"'section-content-' + section.id\"\n (click)=\"toggleSection(section.id)\">\n\n @if (showIcons() && section.icon) {\n <studio-icon\n [name]=\"section.icon\"\n [size]=\"16\"\n class=\"studio-inspector__section-icon\"\n />\n }\n\n <span class=\"studio-inspector__section-title\">{{ section.title }}</span>\n\n @if (collapsible()) {\n <studio-icon\n [name]=\"'chevron-down'\"\n [size]=\"16\"\n class=\"studio-inspector__section-toggle\"\n />\n }\n </studio-button>\n\n @if (isSectionExpanded(section.id)) {\n <div\n class=\"studio-inspector__section-content\"\n [id]=\"'section-content-' + section.id\">\n\n @if (section.groups) {\n @for (group of section.groups; track trackByGroupId($index, group); let isLast = $last) {\n <div class=\"studio-inspector__group\">\n\n @if (showGroupLabels() && group.label) {\n <div class=\"studio-inspector__group-label\">{{ group.label }}</div>\n }\n\n @for (param of group.parameters; track trackByParameterId($index, param)) {\n <div class=\"studio-inspector__parameter\">\n @if (param.type !== 'boolean' && param.type !== 'checkbox' && param.type !== 'radio') {\n <div class=\"studio-inspector__parameter-label\">{{ param.label }}</div>\n }\n\n @if (param.type === 'text') {\n <studio-input\n [ngModel]=\"param.value\"\n [name]=\"section.id + '-' + group.id + '-' + param.id\"\n (ngModelChange)=\"onParameterChange(section.id, group.id, param.id, $event)\"\n [variant]=\"componentVariant()\"\n [size]=\"componentSize()\"\n [placeholder]=\"param.placeholder || ''\"\n [disabled]=\"param.disabled || false\"\n [readonly]=\"param.readonly || false\"\n [maxLength]=\"param.maxLength\"\n [fullWidth]=\"fullWidth()\"\n />\n }\n\n @if (param.type === 'number') {\n <div class=\"studio-inspector__number-input\">\n <studio-input\n type=\"number\"\n [ngModel]=\"param.value\"\n [name]=\"section.id + '-' + group.id + '-' + param.id\"\n (ngModelChange)=\"onParameterChange(section.id, group.id, param.id, $event)\"\n [variant]=\"componentVariant()\"\n [size]=\"componentSize()\"\n [min]=\"param.min\"\n [max]=\"param.max\"\n [step]=\"param.step\"\n [disabled]=\"param.disabled || false\"\n [readonly]=\"param.readonly || false\"\n [fullWidth]=\"fullWidth()\"\n />\n @if (param.suffix) {\n <span class=\"studio-inspector__suffix\">{{ param.suffix }}</span>\n }\n </div>\n }\n\n @if (param.type === 'textarea') {\n <studio-textarea\n [ngModel]=\"param.value\"\n [name]=\"section.id + '-' + group.id + '-' + param.id\"\n (ngModelChange)=\"onParameterChange(section.id, group.id, param.id, $event)\"\n [variant]=\"componentVariant()\"\n [size]=\"componentSize()\"\n [placeholder]=\"param.placeholder || ''\"\n [disabled]=\"param.disabled || false\"\n [readonly]=\"param.readonly || false\"\n [maxLength]=\"param.maxLength\"\n [fullWidth]=\"fullWidth()\"\n />\n }\n\n @if (param.type === 'color') {\n <studio-color-picker-compact\n [ngModel]=\"param.value\"\n [name]=\"section.id + '-' + group.id + '-' + param.id\"\n (ngModelChange)=\"onParameterChange(section.id, group.id, param.id, $event)\"\n [disabled]=\"param.disabled || false\"\n />\n }\n\n @if (param.type === 'select') {\n <studio-select\n [ngModel]=\"param.value\"\n [name]=\"section.id + '-' + group.id + '-' + param.id\"\n (ngModelChange)=\"onParameterChange(section.id, group.id, param.id, $event)\"\n [variant]=\"componentVariant()\"\n [size]=\"componentSize()\"\n [options]=\"param.options || []\"\n [placeholder]=\"param.placeholder || ''\"\n [disabled]=\"param.disabled || false\"\n [fullWidth]=\"fullWidth()\"\n />\n }\n\n @if (param.type === 'boolean') {\n <studio-switch\n [ngModel]=\"param.value\"\n [name]=\"section.id + '-' + group.id + '-' + param.id\"\n (ngModelChange)=\"onParameterChange(section.id, group.id, param.id, $event)\"\n [label]=\"param.label\"\n [size]=\"componentSize()\"\n [disabled]=\"param.disabled || false\"\n />\n }\n\n @if (param.type === 'checkbox') {\n <div class=\"studio-inspector__options\">\n @for (option of param.options; track trackByOptionValue($index, option)) {\n <studio-checkbox\n [ngModel]=\"isChecked(param, option.value)\"\n [name]=\"section.id + '-' + group.id + '-' + param.id + '-' + option.value\"\n (ngModelChange)=\"onCheckboxChange(section.id, group.id, param.id, option.value, $event)\"\n [label]=\"option.label\"\n [disabled]=\"param.disabled || option.disabled || false\"\n [size]=\"componentSize()\"\n />\n }\n </div>\n }\n\n @if (param.type === 'radio') {\n <div class=\"studio-inspector__options\">\n @for (option of param.options; track trackByOptionValue($index, option)) {\n <div class=\"studio-inspector__option\">\n <studio-radio-button\n [ngModel]=\"param.value\"\n (ngModelChange)=\"onRadioChange(section.id, group.id, param.id, $event)\"\n [value]=\"option.value\"\n [label]=\"option.label\"\n [name]=\"getRadioName(section.id, group.id, param.id)\"\n [disabled]=\"param.disabled || option.disabled || false\"\n [size]=\"componentSize()\"\n />\n @if (showDefaultIndicator() && isDefault(param, option.value)) {\n <span class=\"studio-inspector__default-indicator\">(default)</span>\n }\n </div>\n }\n </div>\n }\n\n @if (param.hint) {\n <div class=\"studio-inspector__parameter-hint\">{{ param.hint }}</div>\n }\n </div>\n }\n\n @if (!isLast && groupDivider() !== 'none') {\n <div class=\"studio-inspector__group-divider\"\n [class.studio-inspector__group-divider--line]=\"groupDivider() === 'line'\"\n [class.studio-inspector__group-divider--space]=\"groupDivider() === 'space'\">\n </div>\n }\n </div>\n }\n }\n\n @if (section.parameters) {\n @for (param of section.parameters; track trackByParameterId($index, param)) {\n <div class=\"studio-inspector__parameter\">\n @if (param.type !== 'boolean' && param.type !== 'checkbox' && param.type !== 'radio') {\n <div class=\"studio-inspector__parameter-label\">{{ param.label }}</div>\n }\n\n @if (param.type === 'text') {\n <studio-input\n [ngModel]=\"param.value\"\n [name]=\"section.id + '-' + param.id\"\n (ngModelChange)=\"onParameterChange(section.id, null, param.id, $event)\"\n [variant]=\"componentVariant()\"\n [size]=\"componentSize()\"\n [placeholder]=\"param.placeholder || ''\"\n [disabled]=\"param.disabled || false\"\n [readonly]=\"param.readonly || false\"\n [maxLength]=\"param.maxLength\"\n [fullWidth]=\"fullWidth()\"\n />\n }\n\n @if (param.type === 'number') {\n <div class=\"studio-inspector__number-input\">\n <studio-input\n type=\"number\"\n [ngModel]=\"param.value\"\n [name]=\"section.id + '-' + param.id\"\n (ngModelChange)=\"onParameterChange(section.id, null, param.id, $event)\"\n [variant]=\"componentVariant()\"\n [size]=\"componentSize()\"\n [min]=\"param.min\"\n [max]=\"param.max\"\n [step]=\"param.step\"\n [disabled]=\"param.disabled || false\"\n [readonly]=\"param.readonly || false\"\n [fullWidth]=\"fullWidth()\"\n />\n @if (param.suffix) {\n <span class=\"studio-inspector__suffix\">{{ param.suffix }}</span>\n }\n </div>\n }\n\n @if (param.type === 'textarea') {\n <studio-textarea\n [ngModel]=\"param.value\"\n [name]=\"section.id + '-' + param.id\"\n (ngModelChange)=\"onParameterChange(section.id, null, param.id, $event)\"\n [variant]=\"componentVariant()\"\n [size]=\"componentSize()\"\n [placeholder]=\"param.placeholder || ''\"\n [disabled]=\"param.disabled || false\"\n [readonly]=\"param.readonly || false\"\n [maxLength]=\"param.maxLength\"\n [fullWidth]=\"fullWidth()\"\n />\n }\n\n @if (param.type === 'color') {\n <studio-color-picker-compact\n [ngModel]=\"param.value\"\n [name]=\"section.id + '-' + param.id\"\n (ngModelChange)=\"onParameterChange(section.id, null, param.id, $event)\"\n [disabled]=\"param.disabled || false\"\n />\n }\n\n @if (param.type === 'select') {\n <studio-select\n [ngModel]=\"param.value\"\n [name]=\"section.id + '-' + param.id\"\n (ngModelChange)=\"onParameterChange(section.id, null, param.id, $event)\"\n [variant]=\"componentVariant()\"\n [size]=\"componentSize()\"\n [options]=\"param.options || []\"\n [placeholder]=\"param.placeholder || ''\"\n [disabled]=\"param.disabled || false\"\n [fullWidth]=\"fullWidth()\"\n />\n }\n\n @if (param.type === 'boolean') {\n <studio-switch\n [ngModel]=\"param.value\"\n [name]=\"section.id + '-' + param.id\"\n (ngModelChange)=\"onParameterChange(section.id, null, param.id, $event)\"\n [label]=\"param.label\"\n [size]=\"componentSize()\"\n [disabled]=\"param.disabled || false\"\n />\n }\n\n @if (param.type === 'checkbox') {\n <div class=\"studio-inspector__options\">\n @for (option of param.options; track trackByOptionValue($index, option)) {\n <studio-checkbox\n [ngModel]=\"isChecked(param, option.value)\"\n [name]=\"section.id + '-' + param.id + '-' + option.value\"\n (ngModelChange)=\"onCheckboxChange(section.id, null, param.id, option.value, $event)\"\n [label]=\"option.label\"\n [disabled]=\"param.disabled || option.disabled || false\"\n [size]=\"componentSize()\"\n />\n }\n </div>\n }\n\n @if (param.type === 'radio') {\n <div class=\"studio-inspector__options\">\n @for (option of param.options; track trackByOptionValue($index, option)) {\n <div class=\"studio-inspector__option\">\n <studio-radio-button\n [ngModel]=\"param.value\"\n (ngModelChange)=\"onRadioChange(section.id, null, param.id, $event)\"\n [value]=\"option.value\"\n [label]=\"option.label\"\n [name]=\"getRadioName(section.id, null, param.id)\"\n [disabled]=\"param.disabled || option.disabled || false\"\n [size]=\"componentSize()\"\n />\n @if (showDefaultIndicator() && isDefault(param, option.value)) {\n <span class=\"studio-inspector__default-indicator\">(default)</span>\n }\n </div>\n }\n </div>\n }\n\n @if (param.hint) {\n <div class=\"studio-inspector__parameter-hint\">{{ param.hint }}</div>\n }\n </div>\n }\n }\n </div>\n }\n </div>\n }\n </div>\n}\n","import { Component, ChangeDetectionStrategy, input, computed, inject } from '@angular/core';\nimport { SwitchComponent } from '../../primitives/switch';\nimport { IconComponent } from '../../primitives/icon';\nimport { StudioConfigService } from '../../config';\n\n/**\n * Theme toggle switch with sun/moon icons\n *\n * @example\n * <studio-theme-switch />\n * <studio-theme-switch [showLabel]=\"true\" />\n */\n@Component({\n selector: 'studio-theme-switch',\n standalone: true,\n imports: [SwitchComponent, IconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div class=\"studio-theme-switch\">\n @if (iconOnly()) {\n <button\n type=\"button\"\n class=\"studio-theme-switch__button studio-theme-switch__button--{{ size() }}\"\n [attr.aria-label]=\"isDark() ? 'Switch to light mode' : 'Switch to dark mode'\"\n (click)=\"toggleTheme()\">\n @if (isDark()) {\n <studio-icon name=\"moon\" [size]=\"iconSize()\" color=\"inherit\" />\n } @else {\n <studio-icon name=\"sun\" [size]=\"iconSize()\" color=\"inherit\" />\n }\n </button>\n } @else {\n <studio-switch\n [checked]=\"isDark()\"\n (checkedChange)=\"toggleTheme()\"\n [size]=\"size()\"\n [label]=\"showLabel() ? (isDark() ? 'Dark' : 'Light') : undefined\"\n labelPosition=\"left\">\n </studio-switch>\n }\n </div>\n `,\n styles: [`\n .studio-theme-switch {\n display: inline-flex;\n align-items: center;\n }\n\n .studio-theme-switch__button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border: none;\n background: transparent;\n color: var(--studio-text-secondary);\n cursor: pointer;\n border-radius: var(--studio-radius-md);\n transition: background-color var(--studio-transition-fast),\n color var(--studio-transition-fast);\n padding: var(--studio-spacing-xs);\n }\n\n .studio-theme-switch__button:hover {\n background: var(--studio-bg-secondary);\n color: var(--studio-text-primary);\n }\n\n .studio-theme-switch__button:focus-visible {\n outline: 2px solid var(--studio-primary);\n outline-offset: 2px;\n }\n\n .studio-theme-switch__button--sm {\n width: 2rem;\n height: 2rem;\n }\n\n .studio-theme-switch__button--md {\n width: 2.5rem;\n height: 2.5rem;\n }\n\n .studio-theme-switch__button--lg {\n width: 3rem;\n height: 3rem;\n }\n `]\n})\nexport class ThemeSwitchComponent {\n private readonly configService = inject(StudioConfigService);\n\n size = input<'sm' | 'md' | 'lg'>('md');\n showLabel = input<boolean>(false);\n iconOnly = input<boolean>(true);\n\n protected isDark = computed(() => this.configService.themeMode() === 'dark');\n\n protected iconSize = computed(() => {\n const sizeMap = { sm: 16, md: 20, lg: 24 };\n return sizeMap[this.size()];\n });\n\n protected toggleTheme(): void {\n this.configService.toggleTheme();\n }\n}\n","/**\n * Theme switch component\n */\n\nexport * from './theme-switch.component';\n","/**\n * Composites (Molecules + Organisms)\n * Complex components built from primitives\n */\n\nexport * from './button-toggle-group';\nexport * from './inspector';\nexport * from './theme-switch';\n","/**\n * Education components\n * Domain-specific components for educational platforms\n */\n\nexport {};\n","import { MaskConfig, MaskToken, MaskResult } from './mask.types';\n\nexport class MaskEngine {\n private readonly tokens: MaskToken[];\n private readonly patterns = {\n '9': /\\d/,\n 'A': /[a-zA-Zа-яА-Я]/,\n '*': /[a-zA-Z0-9]/,\n '#': /./,\n 'X': /[a-zA-Z0-9а-яА-Я]/,\n } as const;\n\n constructor(private readonly config: MaskConfig) {\n this.tokens = this.parsePattern(config.pattern);\n }\n\n process(value: string, cursorPos?: number): MaskResult {\n if (!value) {\n return {\n value: '',\n raw: '',\n cursor: 0,\n isComplete: false\n };\n }\n\n const cleaned = this.extractRaw(value);\n const formatted = this.applyMask(cleaned);\n const newCursor = cursorPos !== undefined\n ? this.calculateCursor(cursorPos, value, formatted)\n : formatted.length;\n\n const displayValue = this.config.guide && this.config.showOnFocus\n ? this.applyGuide(formatted)\n : formatted;\n\n return {\n value: displayValue,\n raw: cleaned,\n cursor: newCursor,\n isComplete: this.checkComplete(cleaned)\n };\n }\n\n getPlaceholder(): string {\n if (!this.tokens || this.tokens.length === 0) return '';\n\n return this.tokens\n .map(token => {\n if (token.type === 'static' && token.char) return token.char;\n return this.config.placeholder || '_';\n })\n .join('');\n }\n\n private parsePattern(pattern: string): MaskToken[] {\n const tokens: MaskToken[] = [];\n let i = 0;\n\n while (i < pattern.length) {\n const char = pattern[i];\n\n if (char === '\\\\' && i + 1 < pattern.length) {\n tokens.push({\n type: 'static',\n char: pattern[i + 1]\n });\n i += 2;\n continue;\n }\n\n if (char === '?' && tokens.length > 0) {\n tokens[tokens.length - 1].optional = true;\n i++;\n continue;\n }\n\n if (char in this.patterns) {\n tokens.push({\n type: this.getTokenType(char),\n pattern: this.patterns[char as keyof typeof this.patterns]\n });\n i++;\n } else {\n tokens.push({\n type: 'static',\n char\n });\n i++;\n }\n }\n\n return tokens;\n }\n\n private getTokenType(char: string): MaskToken['type'] {\n const typeMap: Record<string, MaskToken['type']> = {\n '9': 'digit',\n 'A': 'letter',\n '*': 'alphanumeric',\n '#': 'any',\n 'X': 'mixed'\n };\n return typeMap[char] || 'any';\n }\n\n private applyMask(raw: string): string {\n if (!raw || !this.tokens) return '';\n\n let result = '';\n let rawIndex = 0;\n\n for (const token of this.tokens) {\n if (rawIndex >= raw.length) {\n break;\n }\n\n if (token.type === 'static' && token.char) {\n result += token.char;\n if (raw[rawIndex] === token.char) {\n rawIndex++;\n }\n } else {\n const char = raw[rawIndex];\n if (token.pattern?.test(char)) {\n result += char;\n rawIndex++;\n } else if (!token.optional) {\n break;\n }\n }\n }\n\n return result;\n }\n\n private extractRaw(value: string): string {\n if (!value || !this.tokens) return '';\n\n const staticChars = this.tokens\n .filter(t => t.type === 'static' && t.char)\n .map(t => t.char!)\n .filter(Boolean);\n\n return value\n .split('')\n .filter(char => !staticChars.includes(char))\n .join('');\n }\n\n private applyGuide(value: string): string {\n if (!this.tokens || this.tokens.length === 0) return value;\n\n const placeholder = this.config.placeholder || '_';\n let result = value;\n const currentLength = value.replace(/[^a-zA-Z0-9а-яА-Я]/g, '').length;\n\n let addedCount = 0;\n for (let i = 0; i < this.tokens.length; i++) {\n const token = this.tokens[i];\n\n if (addedCount >= currentLength) {\n if (token.type === 'static' && token.char) {\n result += token.char;\n } else {\n result += placeholder;\n addedCount++;\n }\n }\n }\n\n return result;\n }\n\n private calculateCursor(\n oldCursor: number,\n oldValue: string,\n newValue: string\n ): number {\n const diff = newValue.length - oldValue.length;\n let newCursor = oldCursor + diff;\n\n while (newCursor < newValue.length) {\n const charAtCursor = newValue[newCursor];\n const isStatic = this.tokens.some(\n (t, i) => t.type === 'static' && t.char === charAtCursor && i === newCursor\n );\n\n if (!isStatic) break;\n newCursor++;\n }\n\n return Math.max(0, Math.min(newValue.length, newCursor));\n }\n\n private checkComplete(raw: string): boolean {\n const requiredTokens = this.tokens.filter(\n t => t.type !== 'static' && !t.optional\n );\n return raw.length >= requiredTokens.length;\n }\n}\n","import { MaskConfig, MaskPreset } from './mask.types';\n\nexport const MASK_PRESETS: Record<MaskPreset, MaskConfig> = {\n 'phone': {\n pattern: '+7 (999) 999-99-99',\n placeholder: '_',\n guide: true\n },\n 'phone-ru': {\n pattern: '+7 (999) 999-99-99',\n placeholder: '_',\n guide: true\n },\n 'phone-kz': {\n pattern: '+7 (999) 999-99-99',\n placeholder: '_',\n guide: true\n },\n 'date': {\n pattern: '99.99.9999',\n placeholder: '_',\n guide: true\n },\n 'datetime': {\n pattern: '99.99.9999 99:99',\n placeholder: '_',\n guide: true\n },\n 'time': {\n pattern: '99:99',\n placeholder: '_',\n guide: true\n },\n 'card': {\n pattern: '9999 9999 9999 9999',\n placeholder: 'X',\n guide: true\n },\n 'inn': {\n pattern: '999999999999',\n placeholder: '_',\n guide: false\n },\n 'snils': {\n pattern: '999-999-999 99',\n placeholder: '_',\n guide: true\n },\n 'passport-ru': {\n pattern: '99 99 999999',\n placeholder: '_',\n guide: true\n }\n};\n","import {\n Directive,\n input,\n effect,\n inject,\n DestroyRef,\n ElementRef,\n Renderer2,\n HostListener,\n forwardRef,\n computed,\n signal\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, NG_VALIDATORS, Validator, AbstractControl, ValidationErrors } from '@angular/forms';\nimport { MaskEngine } from './mask-engine';\nimport { MaskConfig, MaskPreset } from './mask.types';\nimport { MASK_PRESETS } from './mask-presets';\n\n@Directive({\n selector: 'input[studioMask]',\n standalone: true,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MaskDirective),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MaskDirective),\n multi: true\n }\n ],\n host: {\n '[attr.data-mask-complete]': 'isComplete()',\n '[attr.data-mask-active]': 'isActive()'\n }\n})\nexport class MaskDirective implements Validator {\n private readonly el = inject(ElementRef<HTMLInputElement | HTMLTextAreaElement>);\n private readonly renderer = inject(Renderer2);\n private readonly destroyRef = inject(DestroyRef);\n\n readonly mask = input<string | MaskPreset, string>('', {\n alias: 'studioMask',\n transform: (value: string | MaskPreset) => {\n if (!value) return '';\n if (value in MASK_PRESETS) {\n return MASK_PRESETS[value as MaskPreset].pattern;\n }\n return value;\n }\n });\n\n readonly maskPlaceholder = input<string>('_');\n readonly maskGuide = input<boolean>(true);\n readonly maskShowOnHover = input<boolean>(false);\n readonly maskShowOnFocus = input<boolean>(true);\n readonly maskClearIncomplete = input<boolean>(false);\n readonly maskAutoUnmask = input<boolean>(false);\n\n private readonly config = computed<MaskConfig>(() => ({\n pattern: this.mask(),\n placeholder: this.maskPlaceholder(),\n guide: this.maskGuide(),\n showOnHover: this.maskShowOnHover(),\n showOnFocus: this.maskShowOnFocus(),\n clearIncomplete: this.maskClearIncomplete(),\n autoUnmask: this.maskAutoUnmask()\n }));\n\n private readonly engine = signal<MaskEngine | null>(null);\n\n readonly isComplete = signal(false);\n readonly isActive = signal(false);\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor() {\n effect(() => {\n const maskPattern = this.mask();\n if (!maskPattern) return;\n\n const cfg = this.config();\n const newEngine = new MaskEngine(cfg);\n this.engine.set(newEngine);\n this.updatePlaceholder();\n });\n }\n\n @HostListener('input', ['$event'])\n onInput(event: InputEvent): void {\n const eng = this.engine();\n if (!eng) return;\n\n const element = this.el.nativeElement;\n const cursorPos = element.selectionStart ?? 0;\n\n const result = eng.process(element.value, cursorPos);\n\n if (element.value !== result.value) {\n this.renderer.setProperty(element, 'value', result.value);\n element.setSelectionRange(result.cursor, result.cursor);\n }\n\n this.isComplete.set(result.isComplete);\n\n const outputValue = this.config().autoUnmask ? result.raw : result.value;\n this.onChange(outputValue);\n }\n\n @HostListener('focus')\n onFocus(): void {\n this.isActive.set(true);\n\n if (this.maskShowOnFocus() && this.maskGuide()) {\n const eng = this.engine();\n if (!eng) return;\n\n const element = this.el.nativeElement;\n if (!element.value) {\n const result = eng.process('', 0);\n this.renderer.setProperty(element, 'value', result.value);\n element.setSelectionRange(0, 0);\n }\n }\n }\n\n @HostListener('blur')\n onBlur(): void {\n this.isActive.set(false);\n this.onTouched();\n\n if (this.maskClearIncomplete() && !this.isComplete()) {\n this.renderer.setProperty(this.el.nativeElement, 'value', '');\n this.onChange('');\n }\n }\n\n @HostListener('paste', ['$event'])\n onPaste(event: ClipboardEvent): void {\n event.preventDefault();\n const eng = this.engine();\n if (!eng) return;\n\n const pastedText = event.clipboardData?.getData('text') || '';\n const element = this.el.nativeElement;\n const cursorPos = element.selectionStart ?? 0;\n\n const currentValue = element.value;\n const before = currentValue.slice(0, cursorPos);\n const after = currentValue.slice(element.selectionEnd ?? cursorPos);\n const newValue = before + pastedText + after;\n\n const result = eng.process(newValue, cursorPos + pastedText.length);\n\n this.renderer.setProperty(element, 'value', result.value);\n element.setSelectionRange(result.cursor, result.cursor);\n\n const outputValue = this.config().autoUnmask ? result.raw : result.value;\n this.onChange(outputValue);\n }\n\n writeValue(value: string): void {\n const eng = this.engine();\n if (!eng) return;\n\n if (value) {\n const result = eng.process(value);\n this.renderer.setProperty(this.el.nativeElement, 'value', result.value);\n this.isComplete.set(result.isComplete);\n } else {\n this.renderer.setProperty(this.el.nativeElement, 'value', '');\n this.isComplete.set(false);\n }\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n if (!control.value) return null;\n\n const complete = this.isComplete();\n return complete ? null : { maskIncomplete: { value: control.value } };\n }\n\n private updatePlaceholder(): void {\n if (!this.maskShowOnFocus()) return;\n\n const eng = this.engine();\n if (!eng) return;\n\n try {\n const placeholderText = eng.getPlaceholder();\n if (placeholderText) {\n this.renderer.setAttribute(\n this.el.nativeElement,\n 'placeholder',\n placeholderText\n );\n }\n } catch (e) {\n console.warn('Failed to update placeholder:', e);\n }\n }\n}\n","/**\n * Public API Surface of @eduboxpro/studio\n */\n\n/* ========================================\n * Configuration\n * ======================================== */\nexport * from './lib/config';\n\n/* ========================================\n * Components\n * ======================================== */\nexport * from './lib/primitives';\nexport * from './lib/composites';\nexport * from './lib/education';\n\n/* ========================================\n * Directives\n * ======================================== */\nexport * from './lib/directives';\n\n/* ========================================\n * Utilities\n * ======================================== */\nexport * from './lib/utils';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","DOCUMENT","floatingOffset","floatingArrow"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"eduboxpro-studio.mjs","sources":["../../../projects/studio/src/lib/config/studio.config.ts","../../../projects/studio/src/lib/utils/font-loader.ts","../../../projects/studio/src/lib/config/studio.service.ts","../../../projects/studio/src/lib/config/provide-studio.ts","../../../projects/studio/src/lib/config/index.ts","../../../projects/studio/src/lib/primitives/icon/icon.component.ts","../../../projects/studio/src/lib/primitives/icon/icon.provider.ts","../../../projects/studio/src/lib/utils/url-validator.ts","../../../projects/studio/src/lib/utils/class-names.ts","../../../projects/studio/src/lib/utils/config-helpers.ts","../../../projects/studio/src/lib/utils/index.ts","../../../projects/studio/src/lib/primitives/badge/badge.component.ts","../../../projects/studio/src/lib/primitives/badge/badge.types.ts","../../../projects/studio/src/lib/primitives/badge/index.ts","../../../projects/studio/src/lib/primitives/badge-wrapper/badge-wrapper.component.ts","../../../projects/studio/src/lib/primitives/badge-wrapper/badge-wrapper.component.html","../../../projects/studio/src/lib/primitives/bottom-navigation/bottom-navigation.component.ts","../../../projects/studio/src/lib/primitives/bottom-navigation/bottom-navigation.component.html","../../../projects/studio/src/lib/primitives/button/button.component.ts","../../../projects/studio/src/lib/primitives/button/index.ts","../../../projects/studio/src/lib/primitives/button-group/button-group.component.ts","../../../projects/studio/src/lib/primitives/card/card.component.ts","../../../projects/studio/src/lib/primitives/card/card.types.ts","../../../projects/studio/src/lib/primitives/chat/chat-message.component.ts","../../../projects/studio/src/lib/primitives/chat/chat-input.component.ts","../../../projects/studio/src/lib/primitives/chat/chat.component.ts","../../../projects/studio/src/lib/primitives/chat/chat.component.html","../../../projects/studio/src/lib/primitives/checkbox/checkbox.component.ts","../../../projects/studio/src/lib/primitives/checkbox/checkbox.component.html","../../../projects/studio/src/lib/utils/color-converter.ts","../../../projects/studio/src/lib/primitives/color-picker/default-presets.ts","../../../projects/studio/src/lib/primitives/color-picker/color-picker.component.ts","../../../projects/studio/src/lib/primitives/color-picker/color-picker.component.html","../../../projects/studio/src/lib/primitives/popover/popover.component.ts","../../../projects/studio/src/lib/primitives/popover/popover.component.html","../../../projects/studio/src/lib/primitives/color-picker-compact/color-picker-compact.component.ts","../../../projects/studio/src/lib/primitives/drawer/drawer.service.ts","../../../projects/studio/src/lib/primitives/drawer/drawer.component.ts","../../../projects/studio/src/lib/primitives/drawer/drawer.component.html","../../../projects/studio/src/lib/primitives/dropdown/dropdown.component.ts","../../../projects/studio/src/lib/primitives/input/input.component.ts","../../../projects/studio/src/lib/primitives/input/input.component.html","../../../projects/studio/src/lib/primitives/menu/menu.component.ts","../../../projects/studio/src/lib/primitives/menu/menu.component.html","../../../projects/studio/src/lib/primitives/phone-input/phone-input.component.ts","../../../projects/studio/src/lib/primitives/phone-input/phone-input.component.html","../../../projects/studio/src/lib/primitives/modal/modal.component.ts","../../../projects/studio/src/lib/primitives/navbar/navbar.component.ts","../../../projects/studio/src/lib/primitives/navbar/navbar.component.html","../../../projects/studio/src/lib/primitives/radio-button/radio-button.component.ts","../../../projects/studio/src/lib/primitives/radio-button/radio-button.component.html","../../../projects/studio/src/lib/primitives/select/select.component.ts","../../../projects/studio/src/lib/primitives/select/select.component.html","../../../projects/studio/src/lib/primitives/sidebar/sidebar.component.ts","../../../projects/studio/src/lib/primitives/sidebar/sidebar.component.html","../../../projects/studio/src/lib/primitives/sidebar/sidebar.types.ts","../../../projects/studio/src/lib/primitives/sidebar/index.ts","../../../projects/studio/src/lib/primitives/switch/switch.component.ts","../../../projects/studio/src/lib/primitives/switch/index.ts","../../../projects/studio/src/lib/primitives/pagination/pagination.component.ts","../../../projects/studio/src/lib/primitives/pagination/pagination.types.ts","../../../projects/studio/src/lib/primitives/pagination/index.ts","../../../projects/studio/src/lib/primitives/table/table-column.directive.ts","../../../projects/studio/src/lib/primitives/table/table.component.ts","../../../projects/studio/src/lib/primitives/table/table.component.html","../../../projects/studio/src/lib/primitives/table/table.types.ts","../../../projects/studio/src/lib/primitives/tabs/tabs.component.ts","../../../projects/studio/src/lib/primitives/textarea/textarea.component.ts","../../../projects/studio/src/lib/primitives/textarea/textarea.component.html","../../../projects/studio/src/lib/primitives/toast/toast.service.ts","../../../projects/studio/src/lib/primitives/toast/toast.component.ts","../../../projects/studio/src/lib/primitives/tooltip/tooltip.component.ts","../../../projects/studio/src/lib/primitives/confirm-dialog/confirm-dialog.service.ts","../../../projects/studio/src/lib/primitives/confirm-dialog/confirm-dialog.component.ts","../../../projects/studio/src/lib/primitives/index.ts","../../../projects/studio/src/lib/composites/button-toggle-group/button-toggle-group.component.ts","../../../projects/studio/src/lib/composites/inspector/inspector.component.ts","../../../projects/studio/src/lib/composites/inspector/inspector.component.html","../../../projects/studio/src/lib/composites/theme-switch/theme-switch.component.ts","../../../projects/studio/src/lib/composites/theme-switch/index.ts","../../../projects/studio/src/lib/composites/index.ts","../../../projects/studio/src/lib/education/index.ts","../../../projects/studio/src/lib/directives/mask/mask-engine.ts","../../../projects/studio/src/lib/directives/mask/mask-presets.ts","../../../projects/studio/src/lib/directives/mask/mask.directive.ts","../../../projects/studio/src/public-api.ts","../../../projects/studio/src/eduboxpro-studio.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\n/**\n * Theme mode: light or dark\n */\nexport type ThemeMode = 'light' | 'dark';\n\n/**\n * Color configuration with hover and active states\n */\nexport interface ColorConfig {\n base?: string;\n hover?: string;\n active?: string;\n bg?: string;\n}\n\n/**\n * Theme configuration interface\n */\nexport interface StudioThemeConfig {\n /**\n * Theme mode (default: 'light')\n */\n mode?: ThemeMode;\n\n /**\n * Color tokens override with hover/active states\n */\n colors?: {\n primary?: ColorConfig | string;\n secondary?: ColorConfig | string;\n success?: ColorConfig | string;\n error?: ColorConfig | string;\n warning?: ColorConfig | string;\n info?: ColorConfig | string;\n bg?: {\n primary?: string;\n secondary?: string;\n tertiary?: string;\n };\n text?: {\n primary?: string;\n secondary?: string;\n tertiary?: string;\n inverse?: string;\n };\n border?: {\n primary?: string;\n secondary?: string;\n };\n };\n\n /**\n * Typography tokens override\n */\n typography?: {\n fontFamily?: string;\n fontMono?: string;\n /**\n * Google Fonts configuration\n * Automatically loads fonts from Google Fonts\n */\n googleFonts?: Array<{\n family: string;\n weights?: number[];\n display?: 'auto' | 'block' | 'swap' | 'fallback' | 'optional';\n }>;\n fontSize?: {\n xs?: string;\n sm?: string;\n base?: string;\n lg?: string;\n xl?: string;\n '2xl'?: string;\n };\n fontWeight?: {\n normal?: number;\n medium?: number;\n semibold?: number;\n bold?: number;\n };\n lineHeight?: {\n tight?: number;\n normal?: number;\n relaxed?: number;\n };\n };\n\n /**\n * Spacing tokens override\n */\n spacing?: {\n xs?: string;\n sm?: string;\n md?: string;\n lg?: string;\n xl?: string;\n '2xl'?: string;\n };\n\n /**\n * Border radius tokens override\n */\n borderRadius?: {\n none?: string;\n sm?: string;\n md?: string;\n lg?: string;\n xl?: string;\n full?: string;\n };\n\n /**\n * Shadow tokens override\n */\n shadows?: {\n sm?: string;\n md?: string;\n lg?: string;\n xl?: string;\n };\n\n /**\n * Transition tokens override\n */\n transitions?: {\n fast?: string;\n base?: string;\n slow?: string;\n };\n\n /**\n * Z-index tokens override\n */\n zIndex?: {\n dropdown?: number;\n sticky?: number;\n fixed?: number;\n modalBackdrop?: number;\n modal?: number;\n popover?: number;\n tooltip?: number;\n };\n}\n\n/**\n * Button component defaults configuration\n */\nexport interface ButtonDefaultsConfig {\n variant?: 'solid' | 'outline' | 'ghost';\n size?: 'sm' | 'md' | 'lg';\n color?: 'primary' | 'secondary' | 'success' | 'error' | 'warning';\n radius?: 'none' | 'sm' | 'md' | 'lg' | 'xl' | 'full';\n shadow?: 'none' | 'sm' | 'md' | 'lg';\n compact?: boolean;\n}\n\n/**\n * Badge component defaults configuration\n */\nexport interface BadgeDefaultsConfig {\n variant?: 'solid' | 'outline' | 'soft' | 'dot';\n size?: 'sm' | 'md' | 'lg';\n color?: 'primary' | 'secondary' | 'success' | 'error' | 'warning' | 'info' | 'neutral';\n radius?: 'sm' | 'md' | 'lg' | 'full';\n}\n\n/**\n * Switch component defaults configuration\n */\nexport interface SwitchDefaultsConfig {\n size?: 'sm' | 'md' | 'lg';\n color?: 'primary' | 'secondary' | 'success';\n}\n\n/**\n * Input component defaults configuration\n */\nexport interface InputDefaultsConfig {\n variant?: 'outline' | 'filled' | 'underline';\n size?: 'sm' | 'md' | 'lg';\n radius?: 'none' | 'sm' | 'md' | 'lg' | 'full';\n floatingLabel?: boolean;\n clearable?: boolean;\n}\n\n/**\n * Checkbox component defaults configuration\n */\nexport interface CheckboxDefaultsConfig {\n size?: 'sm' | 'md' | 'lg';\n color?: 'primary' | 'secondary' | 'success' | 'error';\n variant?: 'default' | 'outlined' | 'filled';\n radius?: 'none' | 'sm' | 'md' | 'lg' | 'full';\n labelPosition?: 'left' | 'right';\n}\n\n/**\n * RadioButton component defaults configuration\n */\nexport interface RadioButtonDefaultsConfig {\n size?: 'sm' | 'md' | 'lg';\n color?: 'primary' | 'secondary' | 'success' | 'error';\n variant?: 'default' | 'outlined' | 'filled';\n radius?: 'none' | 'sm' | 'md' | 'lg' | 'full';\n labelPosition?: 'left' | 'right';\n}\n\n/**\n * Textarea component defaults configuration\n */\nexport interface TextareaDefaultsConfig {\n variant?: 'outline' | 'filled' | 'underline';\n size?: 'sm' | 'md' | 'lg';\n color?: 'primary' | 'secondary' | 'success' | 'error';\n radius?: 'none' | 'sm' | 'md' | 'lg' | 'full';\n rows?: number;\n autoResize?: boolean;\n resize?: 'none' | 'vertical' | 'horizontal' | 'both';\n showCharCount?: boolean;\n clearable?: boolean;\n}\n\n/**\n * ButtonGroup component defaults configuration\n */\nexport interface ButtonGroupDefaultsConfig {\n orientation?: 'horizontal' | 'vertical';\n size?: 'sm' | 'md' | 'lg';\n variant?: 'solid' | 'outline' | 'ghost';\n color?: 'primary' | 'secondary' | 'success' | 'error' | 'warning';\n radius?: 'none' | 'sm' | 'md' | 'lg' | 'xl' | 'full';\n}\n\n/**\n * ButtonToggleGroup component defaults configuration\n */\nexport interface ButtonToggleGroupDefaultsConfig {\n orientation?: 'horizontal' | 'vertical';\n size?: 'sm' | 'md' | 'lg';\n variant?: 'solid' | 'outline' | 'ghost';\n color?: 'primary' | 'secondary' | 'success' | 'error' | 'warning';\n radius?: 'none' | 'sm' | 'md' | 'lg' | 'xl' | 'full';\n shadow?: 'none' | 'sm' | 'md' | 'lg';\n}\n\n/**\n * Select component defaults configuration\n */\nexport interface SelectDefaultsConfig {\n variant?: 'outline' | 'filled' | 'underline';\n size?: 'sm' | 'md' | 'lg';\n radius?: 'none' | 'sm' | 'md' | 'lg' | 'full';\n searchable?: boolean;\n clearable?: boolean;\n maxHeight?: string;\n position?: 'auto' | 'top' | 'bottom';\n}\n\n/**\n * Drawer component defaults configuration\n */\nexport interface DrawerDefaultsConfig {\n position?: 'left' | 'right' | 'top' | 'bottom';\n size?: 'sm' | 'md' | 'lg' | 'xl' | 'full';\n modal?: boolean;\n closeOnEscape?: boolean;\n closeOnBackdropClick?: boolean;\n showHeader?: boolean;\n showCloseButton?: boolean;\n closeButtonPosition?: 'left' | 'right';\n swipeToClose?: boolean;\n swipeThreshold?: number;\n animationDuration?: number;\n animationEasing?: 'ease' | 'ease-in' | 'ease-out' | 'ease-in-out';\n disableAnimation?: boolean;\n shadow?: boolean;\n shadowSize?: 'sm' | 'md' | 'lg' | 'xl';\n radius?: 'none' | 'sm' | 'md' | 'lg';\n autoFocus?: boolean;\n restoreFocus?: boolean;\n blockScroll?: boolean;\n role?: 'dialog' | 'alertdialog';\n}\n\n/**\n * Sidebar component defaults configuration\n */\nexport interface SidebarDefaultsConfig {\n position?: 'left' | 'right';\n size?: 'sm' | 'md' | 'lg' | 'full';\n variant?: 'default' | 'minimal' | 'compact';\n modal?: boolean;\n collapsible?: boolean;\n defaultCollapsed?: boolean;\n closeOnNavigate?: boolean;\n closeOnBackdropClick?: boolean;\n closeOnEscape?: boolean;\n blockScroll?: boolean;\n swipeToClose?: boolean;\n showHeader?: boolean;\n showFooter?: boolean;\n showCloseButton?: boolean;\n}\n\n/**\n * ColorPicker component defaults configuration\n */\nexport interface ColorPickerDefaultsConfig {\n variant?: 'inline' | 'popover' | 'input';\n size?: 'sm' | 'md' | 'lg';\n format?: 'hex' | 'rgb' | 'hsl';\n showAlpha?: boolean;\n showPresets?: boolean;\n showFormatToggle?: boolean;\n showCopyButton?: boolean;\n}\n\n/**\n * Popover component defaults configuration\n */\nexport interface PopoverDefaultsConfig {\n position?: 'top' | 'bottom' | 'left' | 'right' | 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end' | 'left-start' | 'left-end' | 'right-start' | 'right-end';\n trigger?: 'click' | 'hover' | 'focus' | 'manual';\n variant?: 'default' | 'bordered' | 'shadow' | 'minimal';\n size?: 'sm' | 'md' | 'lg';\n animation?: 'fade' | 'scale' | 'slide' | 'none';\n}\n\n/**\n * Tooltip component defaults configuration\n */\nexport interface TooltipDefaultsConfig {\n position?: 'top' | 'bottom' | 'left' | 'right';\n trigger?: 'hover' | 'focus' | 'click';\n hoverDelay?: number;\n}\n\n/**\n * Dropdown component defaults configuration\n */\nexport interface DropdownDefaultsConfig {\n trigger?: 'click' | 'hover';\n position?: 'bottom-start' | 'bottom-end' | 'top-start' | 'top-end' | 'left-start' | 'right-start';\n width?: string;\n minWidth?: string;\n}\n\n/**\n * Tabs component defaults configuration\n */\nexport interface TabsDefaultsConfig {\n variant?: 'line' | 'pills' | 'enclosed';\n size?: 'sm' | 'md' | 'lg';\n orientation?: 'horizontal' | 'vertical';\n}\n\n/**\n * Modal component defaults configuration\n */\nexport interface ModalDefaultsConfig {\n size?: 'sm' | 'md' | 'lg' | 'xl' | 'full';\n variant?: 'default' | 'bordered' | 'minimal';\n animation?: 'fade' | 'scale' | 'slide-down' | 'none';\n position?: 'center' | 'top' | 'bottom';\n closeOnOverlayClick?: boolean;\n closeOnEscape?: boolean;\n showHeader?: boolean;\n showFooter?: boolean;\n showCloseButton?: boolean;\n}\n\n/**\n * BottomNavigation component defaults configuration\n */\nexport interface BottomNavigationDefaultsConfig {\n variant?: 'default' | 'filled' | 'minimal';\n showLabels?: 'always' | 'selected' | 'never';\n size?: 'sm' | 'md' | 'lg';\n elevation?: 'none' | 'sm' | 'md' | 'lg';\n blur?: boolean;\n hideOnDesktop?: boolean;\n}\n\n/**\n * Card component defaults configuration\n */\nexport interface CardDefaultsConfig {\n variant?: 'elevated' | 'filled' | 'outlined' | 'ghost';\n size?: 'sm' | 'md' | 'lg';\n color?: 'default' | 'primary' | 'secondary' | 'success' | 'error' | 'warning' | 'neutral';\n radius?: 'none' | 'sm' | 'md' | 'lg' | 'xl';\n shadow?: 'none' | 'sm' | 'md' | 'lg' | 'xl';\n padding?: 'none' | 'sm' | 'md' | 'lg';\n}\n\n/**\n * Table component defaults configuration\n */\nexport interface TableDefaultsConfig {\n variant?: 'default' | 'striped' | 'bordered' | 'minimal';\n density?: 'compact' | 'comfortable' | 'spacious';\n hoverable?: boolean;\n stickyHeader?: boolean;\n}\n\n/**\n * Components defaults configuration\n */\nexport interface ComponentsConfig {\n button?: ButtonDefaultsConfig;\n badge?: BadgeDefaultsConfig;\n switch?: SwitchDefaultsConfig;\n input?: InputDefaultsConfig;\n checkbox?: CheckboxDefaultsConfig;\n radioButton?: RadioButtonDefaultsConfig;\n textarea?: TextareaDefaultsConfig;\n buttonGroup?: ButtonGroupDefaultsConfig;\n buttonToggleGroup?: ButtonToggleGroupDefaultsConfig;\n select?: SelectDefaultsConfig;\n drawer?: DrawerDefaultsConfig;\n sidebar?: SidebarDefaultsConfig;\n colorPicker?: ColorPickerDefaultsConfig;\n popover?: PopoverDefaultsConfig;\n tooltip?: TooltipDefaultsConfig;\n dropdown?: DropdownDefaultsConfig;\n tabs?: TabsDefaultsConfig;\n modal?: ModalDefaultsConfig;\n bottomNavigation?: BottomNavigationDefaultsConfig;\n card?: CardDefaultsConfig;\n table?: TableDefaultsConfig;\n}\n\n/**\n * Main Studio configuration interface\n */\nexport interface StudioConfig {\n /**\n * Theme configuration\n */\n theme?: StudioThemeConfig;\n\n /**\n * Components default values configuration\n */\n components?: ComponentsConfig;\n}\n\n/**\n * Injection token for Studio configuration\n */\nexport const STUDIO_CONFIG = new InjectionToken<StudioConfig>('STUDIO_CONFIG', {\n providedIn: 'root',\n factory: () => ({})\n});\n","/**\n * Utility for loading Google Fonts dynamically\n */\n\n/**\n * Load a Google Font dynamically\n * @param fontFamily - Font family name (e.g., 'Inter', 'Poppins')\n * @param weights - Array of font weights to load (default: [400, 500, 600, 700])\n * @param display - Font display strategy (default: 'swap')\n *\n * @example\n * loadGoogleFont('Inter', [400, 500, 600, 700]);\n * loadGoogleFont('Poppins', [300, 400, 600]);\n */\nexport function loadGoogleFont(\n fontFamily: string,\n weights: number[] = [400, 500, 600, 700],\n display: 'auto' | 'block' | 'swap' | 'fallback' | 'optional' = 'swap'\n): void {\n if (typeof document === 'undefined') {\n return;\n }\n\n const fontId = `google-font-${fontFamily.toLowerCase().replace(/\\s+/g, '-')}`;\n if (document.getElementById(fontId)) {\n return;\n }\n\n const preconnect1 = document.createElement('link');\n preconnect1.rel = 'preconnect';\n preconnect1.href = 'https://fonts.googleapis.com';\n\n const preconnect2 = document.createElement('link');\n preconnect2.rel = 'preconnect';\n preconnect2.href = 'https://fonts.gstatic.com';\n preconnect2.crossOrigin = 'anonymous';\n\n const fontLink = document.createElement('link');\n fontLink.id = fontId;\n fontLink.rel = 'stylesheet';\n\n const weightsParam = weights.join(';');\n fontLink.href = `https://fonts.googleapis.com/css2?family=${fontFamily.replace(/\\s+/g, '+')}:wght@${weightsParam}&display=${display}`;\n\n const head = document.head || document.getElementsByTagName('head')[0];\n if (!head.querySelector('link[href*=\"fonts.googleapis.com\"]')) {\n head.appendChild(preconnect1);\n head.appendChild(preconnect2);\n }\n head.appendChild(fontLink);\n}\n\n/**\n * Load multiple Google Fonts at once\n * @param fonts - Array of font configurations\n *\n * @example\n * loadGoogleFonts([\n * { family: 'Inter', weights: [400, 500, 600, 700] },\n * { family: 'Roboto Mono', weights: [400, 500] }\n * ]);\n */\nexport function loadGoogleFonts(fonts: Array<{\n family: string;\n weights?: number[];\n display?: 'auto' | 'block' | 'swap' | 'fallback' | 'optional';\n}>): void {\n fonts.forEach(font => {\n loadGoogleFont(font.family, font.weights, font.display);\n });\n}\n","import { Injectable, inject, signal, effect } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { StudioConfig, StudioThemeConfig, ThemeMode, ColorConfig } from './studio.config';\nimport { loadGoogleFonts } from '../utils/font-loader';\n\nconst THEME_STORAGE_KEY = 'studio-theme-mode';\n\n@Injectable({ providedIn: 'root' })\nexport class StudioConfigService {\n private readonly document = inject(DOCUMENT);\n\n readonly config = signal<StudioConfig>({});\n readonly themeMode = signal<ThemeMode>('light');\n\n constructor() {\n // Load saved theme from localStorage\n this.loadSavedTheme();\n\n effect(() => {\n this.applyTheme(this.config().theme);\n });\n }\n\n configure(config: StudioConfig): void {\n this.config.set(config);\n // Only set theme mode from config if no saved preference exists\n if (config.theme?.mode && !this.hasSavedTheme()) {\n this.setThemeMode(config.theme.mode, false);\n }\n }\n\n setThemeMode(mode: ThemeMode, persist = true): void {\n this.themeMode.set(mode);\n this.document.documentElement.setAttribute('data-theme', mode);\n\n // Toggle .dark class for Tailwind CSS compatibility\n if (mode === 'dark') {\n this.document.documentElement.classList.add('dark');\n } else {\n this.document.documentElement.classList.remove('dark');\n }\n\n if (persist) {\n this.saveTheme(mode);\n }\n }\n\n toggleTheme(): void {\n const newMode = this.themeMode() === 'light' ? 'dark' : 'light';\n this.setThemeMode(newMode);\n }\n\n private loadSavedTheme(): void {\n try {\n const savedTheme = localStorage.getItem(THEME_STORAGE_KEY) as ThemeMode | null;\n if (savedTheme && (savedTheme === 'light' || savedTheme === 'dark')) {\n this.setThemeMode(savedTheme, false);\n }\n } catch {\n // localStorage not available (SSR or private browsing)\n }\n }\n\n private saveTheme(mode: ThemeMode): void {\n try {\n localStorage.setItem(THEME_STORAGE_KEY, mode);\n } catch {\n // localStorage not available\n }\n }\n\n private hasSavedTheme(): boolean {\n try {\n return localStorage.getItem(THEME_STORAGE_KEY) !== null;\n } catch {\n return false;\n }\n }\n\n updateTheme(theme: Partial<StudioThemeConfig>): void {\n this.config.update(cfg => ({\n ...cfg,\n theme: { ...cfg.theme, ...theme }\n }));\n }\n\n reset(): void {\n this.config.set({});\n this.setThemeMode('light');\n }\n\n private applyTheme(theme?: StudioThemeConfig): void {\n if (!theme) return;\n\n const root = this.document.documentElement;\n\n if (theme.colors) {\n this.applyColorTokens(root, theme.colors);\n }\n\n if (theme.typography) {\n // Load Google Fonts if configured\n if (theme.typography.googleFonts) {\n loadGoogleFonts(theme.typography.googleFonts);\n }\n\n if (theme.typography.fontFamily) {\n root.style.setProperty('--studio-font-family', theme.typography.fontFamily);\n }\n if (theme.typography.fontMono) {\n root.style.setProperty('--studio-font-mono', theme.typography.fontMono);\n }\n if (theme.typography.fontSize) {\n this.applyTokens(root, 'studio-font-size', theme.typography.fontSize);\n }\n if (theme.typography.fontWeight) {\n this.applyTokens(root, 'studio-font-weight', theme.typography.fontWeight);\n }\n if (theme.typography.lineHeight) {\n this.applyTokens(root, 'studio-line-height', theme.typography.lineHeight);\n }\n }\n\n if (theme.spacing) {\n this.applyTokens(root, 'studio-spacing', theme.spacing);\n }\n\n if (theme.borderRadius) {\n this.applyTokens(root, 'studio-radius', theme.borderRadius);\n }\n\n if (theme.shadows) {\n this.applyTokens(root, 'studio-shadow', theme.shadows);\n }\n\n if (theme.transitions) {\n this.applyTokens(root, 'studio-transition', theme.transitions);\n }\n\n if (theme.zIndex) {\n this.applyZIndexTokens(root, theme.zIndex);\n }\n }\n\n private applyColorTokens(\n root: HTMLElement,\n colors: NonNullable<StudioThemeConfig['colors']>\n ): void {\n const brandColors = ['primary', 'secondary', 'success', 'error', 'warning', 'info'] as const;\n\n brandColors.forEach(colorName => {\n const colorValue = colors[colorName];\n if (!colorValue) return;\n\n if (typeof colorValue === 'string') {\n root.style.setProperty(`--studio-${colorName}`, colorValue);\n } else {\n const config = colorValue as ColorConfig;\n if (config.base) {\n root.style.setProperty(`--studio-${colorName}`, config.base);\n }\n if (config.hover) {\n root.style.setProperty(`--studio-${colorName}-hover`, config.hover);\n }\n if (config.active) {\n root.style.setProperty(`--studio-${colorName}-active`, config.active);\n }\n if (config.bg) {\n root.style.setProperty(`--studio-${colorName}-bg`, config.bg);\n }\n }\n });\n\n if (colors.bg) {\n this.applyTokens(root, 'studio-bg', colors.bg);\n }\n\n if (colors.text) {\n this.applyTokens(root, 'studio-text', colors.text);\n }\n\n if (colors.border) {\n this.applyTokens(root, 'studio-border', colors.border);\n }\n }\n\n private applyZIndexTokens(\n root: HTMLElement,\n zIndex: NonNullable<StudioThemeConfig['zIndex']>\n ): void {\n const zIndexMap: Record<string, string> = {\n dropdown: 'dropdown',\n sticky: 'sticky',\n fixed: 'fixed',\n modalBackdrop: 'modal-backdrop',\n modal: 'modal',\n popover: 'popover',\n tooltip: 'tooltip'\n };\n\n Object.entries(zIndex).forEach(([key, value]) => {\n if (value !== undefined && value !== null) {\n const cssKey = zIndexMap[key] || key;\n root.style.setProperty(`--studio-z-${cssKey}`, String(value));\n }\n });\n }\n\n private applyTokens(\n root: HTMLElement,\n prefix: string,\n tokens: Record<string, string | number>\n ): void {\n Object.entries(tokens).forEach(([key, value]) => {\n if (value !== undefined && value !== null) {\n root.style.setProperty(`--${prefix}-${key}`, String(value));\n }\n });\n }\n}\n","import { EnvironmentProviders, makeEnvironmentProviders, ENVIRONMENT_INITIALIZER, inject } from '@angular/core';\nimport { STUDIO_CONFIG, StudioConfig } from './studio.config';\nimport { StudioConfigService } from './studio.service';\n\n/**\n * Provide Studio configuration for the application\n *\n * @example\n * ```typescript\n * // app.config.ts\n * import { provideStudioConfig } from '@eduboxpro/studio/config';\n *\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideStudioConfig({\n * theme: {\n * mode: 'light',\n * colors: {\n * primary: '#3b82f6'\n * }\n * }\n * })\n * ]\n * };\n * ```\n */\nexport function provideStudioConfig(config: StudioConfig = {}): EnvironmentProviders {\n return makeEnvironmentProviders([\n {\n provide: STUDIO_CONFIG,\n useValue: config\n },\n {\n provide: ENVIRONMENT_INITIALIZER,\n multi: true,\n useValue: () => {\n const studioConfig = inject(StudioConfigService);\n const initialConfig = inject(STUDIO_CONFIG);\n studioConfig.configure(initialConfig);\n }\n }\n ]);\n}\n","/**\n * Configuration module\n * @module config\n */\n\nexport * from './studio.config';\nexport * from './studio.service';\nexport * from './provide-studio';\n","import { Component, ChangeDetectionStrategy, input, computed } from '@angular/core';\nimport { LucideAngularModule, icons } from 'lucide-angular';\n\n/**\n * Icon component with Lucide icons support\n *\n * @example\n * <studio-icon name=\"check\" size=\"24\" color=\"primary\" />\n */\n@Component({\n selector: 'studio-icon',\n standalone: true,\n imports: [LucideAngularModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[style.width.px]': 'size()',\n '[style.height.px]': 'size()',\n },\n template: `\n @if (lucideIcon(); as iconName) {\n <lucide-icon\n [name]=\"iconName\"\n [size]=\"size()\"\n [color]=\"computedColor()\"\n [strokeWidth]=\"strokeWidth()\"\n [absoluteStrokeWidth]=\"absoluteStrokeWidth()\"\n />\n }\n `,\n styles: [`\n :host {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n }\n `]\n})\nexport class IconComponent {\n name = input.required<string>();\n size = input<number>(24);\n color = input<'primary' | 'secondary' | 'success' | 'error' | 'warning' | 'inherit' | string>('inherit');\n strokeWidth = input<number>(2);\n absoluteStrokeWidth = input<boolean>(false);\n showFallback = input<boolean>(true);\n fallbackIcon = input<string>('help-circle');\n\n protected readonly icons = icons;\n\n protected lucideIcon = computed(() => {\n const iconName = this.name();\n\n if (iconName && (icons as any)[iconName]) {\n return iconName;\n }\n\n const pascalCaseName = this.kebabToPascalCase(iconName);\n if (pascalCaseName && (icons as any)[pascalCaseName]) {\n return pascalCaseName;\n }\n\n if (this.showFallback()) {\n const fallback = this.fallbackIcon();\n if ((icons as any)[fallback]) {\n return fallback;\n }\n const pascalCaseFallback = this.kebabToPascalCase(fallback);\n if (pascalCaseFallback && (icons as any)[pascalCaseFallback]) {\n return pascalCaseFallback;\n }\n }\n\n return null;\n });\n\n private kebabToPascalCase(str: string): string {\n return str\n .split('-')\n .map(word => word.charAt(0).toUpperCase() + word.slice(1))\n .join('');\n }\n\n protected computedColor = computed(() => {\n const colorValue = this.color();\n\n const colorMap: Record<string, string> = {\n 'primary': 'var(--studio-primary)',\n 'secondary': 'var(--studio-secondary)',\n 'success': 'var(--studio-success)',\n 'error': 'var(--studio-error)',\n 'warning': 'var(--studio-warning)',\n 'inherit': 'currentColor'\n };\n\n return colorMap[colorValue] || colorValue;\n });\n\n protected hostClasses = computed(() => {\n return ['studio-icon'];\n });\n}\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { LUCIDE_ICONS, LucideIconProvider } from 'lucide-angular';\nimport * as LucideIcons from 'lucide-angular';\n\nexport type IconPreset = 'minimal' | 'common' | 'full';\n\nexport interface StudioIconConfig {\n preset?: IconPreset;\n customIcons?: Record<string, any>;\n}\n\n// Минимальный набор - только для внутренних компонентов библиотеки\nconst MINIMAL_ICONS = {\n X: LucideIcons.X,\n ChevronDown: LucideIcons.ChevronDown,\n ChevronUp: LucideIcons.ChevronUp,\n ChevronLeft: LucideIcons.ChevronLeft,\n ChevronRight: LucideIcons.ChevronRight,\n Check: LucideIcons.Check,\n Loader2: LucideIcons.Loader2,\n Search: LucideIcons.Search,\n};\n\n// Расширенный набор - частоиспользуемые иконки для UI\nconst COMMON_ICONS = {\n ...MINIMAL_ICONS,\n ArrowRight: LucideIcons.ArrowRight,\n ArrowLeft: LucideIcons.ArrowLeft,\n Download: LucideIcons.Download,\n Upload: LucideIcons.Upload,\n Mail: LucideIcons.Mail,\n Phone: LucideIcons.Phone,\n Heart: LucideIcons.Heart,\n Star: LucideIcons.Star,\n Settings: LucideIcons.Settings,\n User: LucideIcons.User,\n Users: LucideIcons.Users,\n Trash2: LucideIcons.Trash2,\n Pen: LucideIcons.Pen,\n Edit2: LucideIcons.Edit2,\n Plus: LucideIcons.Plus,\n Minus: LucideIcons.Minus,\n Filter: LucideIcons.Filter,\n ExternalLink: LucideIcons.ExternalLink,\n Link: LucideIcons.Link,\n Copy: LucideIcons.Copy,\n Share2: LucideIcons.Share2,\n House: LucideIcons.House,\n Menu: LucideIcons.Menu,\n MoreVertical: LucideIcons.MoreVertical,\n MoreHorizontal: LucideIcons.MoreHorizontal,\n Bell: LucideIcons.Bell,\n Calendar: LucideIcons.Calendar,\n Clock: LucideIcons.Clock,\n Eye: LucideIcons.Eye,\n EyeOff: LucideIcons.EyeOff,\n Lock: LucideIcons.Lock,\n LockOpen: LucideIcons.LockOpen,\n LogIn: LucideIcons.LogIn,\n LogOut: LucideIcons.LogOut,\n CircleAlert: LucideIcons.CircleAlert,\n TriangleAlert: LucideIcons.TriangleAlert,\n Info: LucideIcons.Info,\n CircleCheck: LucideIcons.CircleCheck,\n CircleX: LucideIcons.CircleX,\n CircleQuestionMark: LucideIcons.CircleQuestionMark,\n File: LucideIcons.File,\n FileText: LucideIcons.FileText,\n Folder: LucideIcons.Folder,\n FolderOpen: LucideIcons.FolderOpen,\n Image: LucideIcons.Image,\n Save: LucideIcons.Save,\n Printer: LucideIcons.Printer,\n RefreshCw: LucideIcons.RefreshCw,\n RotateCw: LucideIcons.RotateCw,\n Loader: LucideIcons.Loader,\n ShoppingCart: LucideIcons.ShoppingCart,\n Sun: LucideIcons.Sun,\n Moon: LucideIcons.Moon,\n TextAlignStart: LucideIcons.TextAlignStart,\n TextAlignCenter: LucideIcons.TextAlignCenter,\n TextAlignEnd: LucideIcons.TextAlignEnd,\n TextAlignJustify: LucideIcons.TextAlignJustify,\n Bold: LucideIcons.Bold,\n Italic: LucideIcons.Italic,\n Underline: LucideIcons.Underline,\n Strikethrough: LucideIcons.Strikethrough,\n Grid3x3: LucideIcons.Grid3x3,\n List: LucideIcons.List,\n MessageSquare: LucideIcons.MessageSquare,\n Laptop: LucideIcons.Laptop,\n Globe: LucideIcons.Globe,\n Apple: LucideIcons.Apple,\n Circle: LucideIcons.Circle,\n};\n\n/**\n * Studio icon provider с поддержкой preset'ов\n *\n * @example\n * ```typescript\n * // Минимальный набор (только для компонентов библиотеки)\n * provideStudioIcons({ preset: 'minimal' });\n *\n * // Расширенный набор (рекомендуется)\n * provideStudioIcons({ preset: 'common' });\n *\n * // Все иконки Lucide (~1400 штук)\n * provideStudioIcons({ preset: 'full' });\n *\n * // С кастомными иконками\n * import { Zap, Wifi } from 'lucide-angular';\n * provideStudioIcons({\n * preset: 'common',\n * customIcons: { Zap, Wifi }\n * });\n * ```\n */\nexport function provideStudioIcons(config: StudioIconConfig = { preset: 'common' }): EnvironmentProviders {\n let icons: Record<string, any>;\n\n switch (config.preset) {\n case 'minimal':\n icons = MINIMAL_ICONS;\n break;\n case 'full':\n // Все иконки из lucide-angular (кроме служебных)\n icons = Object.keys(LucideIcons)\n .filter(key => !key.startsWith('Lucide') && !key.startsWith('LUCIDE'))\n .reduce((acc, key) => {\n acc[key] = (LucideIcons as any)[key];\n return acc;\n }, {} as Record<string, any>);\n break;\n case 'common':\n default:\n icons = COMMON_ICONS;\n break;\n }\n\n // Добавляем кастомные иконки\n if (config.customIcons) {\n icons = { ...icons, ...config.customIcons };\n }\n\n return makeEnvironmentProviders([\n {\n provide: LUCIDE_ICONS,\n multi: true,\n useValue: new LucideIconProvider(icons)\n }\n ]);\n}\n","/**\n * Checks if URL is safe for navigation\n *\n * @param url - URL to check\n * @returns true if URL is safe (http/https or relative)\n *\n * @example\n * ```typescript\n * isSafeUrl('https://example.com') // true\n * isSafeUrl('javascript:alert(1)') // false\n * isSafeUrl('/relative/path') // true\n * ```\n */\nexport function isSafeUrl(url: string): boolean {\n if (!url || typeof url !== 'string') {\n return false;\n }\n\n try {\n const parsed = new URL(url, window.location.origin);\n return ['http:', 'https:', ''].includes(parsed.protocol);\n } catch {\n return false;\n }\n}\n\n/**\n * Sanitize URL before using in navigation\n *\n * @param url - URL to sanitize\n * @returns Safe URL or '#' if URL is unsafe\n *\n * @example\n * ```typescript\n * sanitizeUrl('https://example.com') // 'https://example.com'\n * sanitizeUrl('javascript:alert(1)') // '#' (with console warning)\n * ```\n */\nexport function sanitizeUrl(url: string): string {\n if (!isSafeUrl(url)) {\n console.warn(`[Studio] Unsafe URL blocked: ${url}`);\n return '#';\n }\n return url;\n}\n","/**\n * Combines CSS classes, ignoring falsy values\n *\n * @param classes - Array of classes (strings, undefined, null, false)\n * @returns String with combined classes\n *\n * @example\n * ```typescript\n * classNames('btn', 'btn-primary') // 'btn btn-primary'\n * classNames('btn', isActive && 'active') // 'btn active' if isActive=true, else 'btn'\n * classNames('btn', undefined, null, false, 'large') // 'btn large'\n * ```\n */\nexport function classNames(...classes: (string | false | undefined | null)[]): string {\n return classes.filter(Boolean).join(' ');\n}\n","import { computed, Signal } from '@angular/core';\n\n/**\n * Creates computed signal with fallback chain: input → config → default\n *\n * @param inputSignal - User input signal\n * @param configSignal - Config value (can be undefined)\n * @param defaultValue - Fallback value\n * @returns Computed signal with resolved value\n *\n * @example\n * ```typescript\n * export class ButtonComponent {\n * private defaults = computed(() => this.configService.config().components?.button);\n *\n * variantInput = input<Variant | undefined>(undefined, { alias: 'variant' });\n *\n * variant = withConfigDefault(\n * this.variantInput,\n * computed(() => this.defaults()?.variant),\n * 'solid'\n * );\n * }\n * ```\n */\nexport function withConfigDefault<T>(\n inputSignal: Signal<T | undefined>,\n configSignal: Signal<T | undefined>,\n defaultValue: T\n): Signal<T> {\n return computed(() => {\n const inputValue = inputSignal();\n if (inputValue !== undefined) return inputValue;\n\n const configValue = configSignal();\n if (configValue !== undefined) return configValue;\n\n return defaultValue;\n });\n}\n","/**\n * @eduboxpro/studio - Utilities\n *\n * Helper functions and utilities for the Studio library\n */\n\nexport * from './url-validator';\nexport * from './class-names';\nexport * from './config-helpers';\nexport * from './font-loader';\n","import { Component, input, output, computed, inject, ChangeDetectionStrategy } from '@angular/core';\nimport { IconComponent } from '../icon';\nimport { StudioConfigService } from '../../config';\nimport { sanitizeUrl, classNames, withConfigDefault } from '../../utils';\nimport { BadgeVariant, BadgeSize, BadgeColor, BadgeRadius, BadgeIconPosition } from './badge.types';\n\n@Component({\n selector: 'studio-badge',\n standalone: true,\n imports: [IconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[attr.disabled]': 'disabled() ? \"\" : null',\n '[attr.href]': 'href()',\n '[attr.target]': 'href() ? target() : null',\n '[attr.rel]': 'href() && target() === \"_blank\" ? \"noopener noreferrer\" : null',\n '[style.display]': 'isVisible() ? null : \"none\"',\n '(click)': 'handleClick($event)'\n },\n template: `\n <span class=\"studio-badge__content\">\n @if (dot()) {\n <span\n class=\"studio-badge__dot\"\n [class]=\"'studio-badge__dot--' + (dotColor() || color())\"\n ></span>\n }\n @if (icon() && iconPosition() === 'left') {\n <studio-icon [name]=\"icon()!\" [size]=\"iconSize()\" />\n }\n <span class=\"studio-badge__text\">\n @if (displayValue()) {\n {{ displayValue() }}\n } @else {\n <ng-content />\n }\n </span>\n @if (icon() && iconPosition() === 'right') {\n <studio-icon [name]=\"icon()!\" [size]=\"iconSize()\" />\n }\n @if (removable()) {\n <button\n type=\"button\"\n class=\"studio-badge__remove\"\n (click)=\"handleRemove($event)\"\n aria-label=\"Remove\"\n >\n <studio-icon name=\"x\" [size]=\"iconSize()\" />\n </button>\n }\n </span>\n `,\n styleUrl: './badge.component.scss'\n})\nexport class BadgeComponent {\n private readonly configService = inject(StudioConfigService);\n private readonly badgeDefaults = computed(() => this.configService.config().components?.badge);\n\n variantInput = input<BadgeVariant | undefined>(undefined, { alias: 'variant' });\n sizeInput = input<BadgeSize | undefined>(undefined, { alias: 'size' });\n colorInput = input<BadgeColor | undefined>(undefined, { alias: 'color' });\n radiusInput = input<BadgeRadius | undefined>(undefined, { alias: 'radius' });\n\n variant = withConfigDefault(this.variantInput, computed(() => this.badgeDefaults()?.variant), 'solid');\n size = withConfigDefault(this.sizeInput, computed(() => this.badgeDefaults()?.size), 'md');\n color = withConfigDefault(this.colorInput, computed(() => this.badgeDefaults()?.color), 'primary');\n radius = withConfigDefault(this.radiusInput, computed(() => this.badgeDefaults()?.radius), 'full');\n\n icon = input<string>();\n iconPosition = input<BadgeIconPosition>('left');\n\n dot = input<boolean>(false);\n dotColor = input<BadgeColor>();\n\n removable = input<boolean>(false);\n removed = output<void>();\n\n href = input<string>();\n target = input<'_blank' | '_self' | '_parent' | '_top'>('_self');\n disabled = input<boolean>(false);\n clicked = output<MouseEvent>();\n\n value = input<string | number>();\n max = input<number>();\n showZero = input<boolean>(true);\n\n uppercase = input<boolean>(false);\n bold = input<boolean>(false);\n\n pulse = input<boolean>(false);\n autoColor = input<boolean>(false);\n\n protected iconSize = computed(() => {\n const sizeMap = { sm: 12, md: 14, lg: 16 };\n return sizeMap[this.size()];\n });\n\n protected displayValue = computed(() => {\n const val = this.value();\n if (val === undefined || val === null) return '';\n\n const numVal = typeof val === 'number' ? val : parseInt(val, 10);\n\n if (!isNaN(numVal)) {\n if (numVal === 0 && !this.showZero()) return '';\n\n const maxVal = this.max();\n if (maxVal !== undefined && numVal > maxVal) {\n return `${maxVal}+`;\n }\n\n return numVal.toString();\n }\n\n return val.toString();\n });\n\n protected isVisible = computed(() => {\n const val = this.value();\n if (val !== undefined && val !== null) {\n const numVal = typeof val === 'number' ? val : parseInt(val, 10);\n if (!isNaN(numVal) && numVal === 0 && !this.showZero()) {\n return false;\n }\n }\n return true;\n });\n\n protected hostClasses = computed(() => classNames(\n 'studio-badge',\n `studio-badge--${this.variant()}`,\n `studio-badge--${this.size()}`,\n `studio-badge--${this.color()}`,\n `studio-badge--radius-${this.radius()}`,\n this.disabled() && 'studio-badge--disabled',\n this.uppercase() && 'studio-badge--uppercase',\n this.bold() && 'studio-badge--bold',\n this.pulse() && 'studio-badge--pulse',\n this.href() && 'studio-badge--clickable'\n ));\n\n protected handleClick(event: MouseEvent): void {\n if (this.disabled()) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n\n const url = this.href();\n if (url) {\n const safeUrl = sanitizeUrl(url);\n if (safeUrl === '#') {\n return;\n }\n\n const target = this.target();\n if (target === '_blank') {\n window.open(safeUrl, '_blank', 'noopener,noreferrer');\n } else {\n window.location.href = safeUrl;\n }\n }\n\n this.clicked.emit(event);\n }\n\n protected handleRemove(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n if (this.disabled()) return;\n\n this.removed.emit();\n }\n}\n","/**\n * Badge component types\n */\n\nexport type BadgeVariant = 'solid' | 'outline' | 'soft' | 'dot';\nexport type BadgeSize = 'sm' | 'md' | 'lg';\nexport type BadgeColor = 'primary' | 'secondary' | 'success' | 'error' | 'warning' | 'info' | 'neutral';\nexport type BadgeRadius = 'sm' | 'md' | 'lg' | 'full';\nexport type BadgeIconPosition = 'left' | 'right';\n","/**\n * Badge component\n */\n\nexport * from './badge.component';\nexport * from './badge.types';\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n computed\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BadgeComponent, BadgeColor, BadgeVariant } from '../badge';\nimport { BadgeWrapperPosition, BadgeWrapperSize } from './badge-wrapper.types';\n\n/**\n * BadgeWrapper component - Wraps content with a positioned badge\n *\n * @example\n * <studio-badge-wrapper [count]=\"5\" color=\"error\">\n * <studio-button variant=\"ghost\">\n * <studio-icon name=\"bell\" />\n * </studio-button>\n * </studio-badge-wrapper>\n */\n@Component({\n selector: 'studio-badge-wrapper',\n standalone: true,\n imports: [CommonModule, BadgeComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()'\n },\n templateUrl: './badge-wrapper.component.html',\n styleUrl: './badge-wrapper.component.scss'\n})\nexport class BadgeWrapperComponent {\n // ========== Content ==========\n count = input<number | string>();\n content = input<string>();\n\n // ========== Badge style ==========\n variant = input<BadgeVariant>('solid');\n color = input<BadgeColor>('error');\n size = input<BadgeWrapperSize>('sm');\n\n // ========== Position ==========\n position = input<BadgeWrapperPosition>('top-right');\n\n // ========== Behavior ==========\n showZero = input<boolean>(false);\n max = input<number>(99);\n dot = input<boolean>(false);\n overlap = input<boolean>(false);\n\n // ========== Customization ==========\n class = input<string>('');\n\n // ========== Computed values ==========\n protected hostClasses = computed(() => {\n const classes = ['studio-badge-wrapper'];\n\n classes.push(`studio-badge-wrapper--${this.position()}`);\n classes.push(`studio-badge-wrapper--${this.size()}`);\n\n if (this.overlap()) classes.push('studio-badge-wrapper--overlap');\n if (this.dot()) classes.push('studio-badge-wrapper--dot');\n if (this.class()) classes.push(this.class());\n\n return classes.join(' ');\n });\n\n protected badgeContent = computed(() => {\n if (this.content()) return this.content();\n\n const count = this.count();\n if (count === undefined || count === null) return undefined;\n\n const numCount = typeof count === 'number' ? count : parseInt(count, 10);\n\n if (numCount === 0 && !this.showZero()) return undefined;\n\n const max = this.max();\n if (numCount > max) return `${max}+`;\n\n return count.toString();\n });\n\n protected shouldShowBadge = computed(() => {\n if (this.dot()) return true;\n return this.badgeContent() !== undefined;\n });\n}\n","<div class=\"studio-badge-wrapper__content\">\n <ng-content />\n</div>\n\n@if (shouldShowBadge()) {\n <studio-badge\n class=\"studio-badge-wrapper__badge\"\n [variant]=\"dot() ? 'dot' : variant()\"\n [color]=\"color()\"\n [size]=\"size()\"\n >\n {{ badgeContent() }}\n </studio-badge>\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n signal,\n inject,\n effect,\n OnInit,\n OnDestroy,\n PLATFORM_ID\n} from '@angular/core';\nimport { isPlatformBrowser, CommonModule } from '@angular/common';\nimport { Router, RouterModule, NavigationEnd, IsActiveMatchOptions } from '@angular/router';\nimport { filter } from 'rxjs/operators';\nimport { Subscription } from 'rxjs';\nimport { IconComponent } from '../icon';\nimport { BadgeComponent } from '../badge';\nimport {\n BottomNavigationItem,\n BottomNavigationVariant,\n BottomNavigationLabelMode,\n BottomNavigationFabPosition,\n BottomNavigationSize\n} from './bottom-navigation.types';\n\n/**\n * Bottom Navigation component - Mobile-first navigation component\n *\n * @example\n * <studio-bottom-navigation\n * [items]=\"navItems\"\n * variant=\"default\"\n * showLabels=\"always\"\n * (itemClicked)=\"handleClick($event)\"\n * />\n */\n@Component({\n selector: 'studio-bottom-navigation',\n standalone: true,\n imports: [CommonModule, RouterModule, IconComponent, BadgeComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[attr.role]': '\"navigation\"',\n '[attr.aria-label]': 'ariaLabel()'\n },\n templateUrl: './bottom-navigation.component.html',\n styleUrl: './bottom-navigation.component.scss'\n})\nexport class BottomNavigationComponent implements OnInit, OnDestroy {\n private readonly router = inject(Router);\n private readonly platformId = inject(PLATFORM_ID);\n\n // ========== Items ==========\n items = input.required<BottomNavigationItem[]>();\n activeItem = input<string>();\n\n // ========== Visual ==========\n variant = input<BottomNavigationVariant>('default');\n showLabels = input<BottomNavigationLabelMode>('always');\n size = input<BottomNavigationSize>('md');\n elevation = input<'none' | 'sm' | 'md' | 'lg'>('sm');\n blur = input<boolean>(false);\n\n // ========== FAB ==========\n showFab = input<boolean>(false);\n fabIcon = input<string>('plus');\n fabPosition = input<BottomNavigationFabPosition>('center');\n fabAriaLabel = input<string>();\n\n // ========== Behavior ==========\n fixed = input<boolean>(false);\n hideOnScroll = input<boolean>(false);\n scrollThreshold = input<number>(10);\n hideOnDesktop = input<boolean>(false);\n\n // ========== Gestures ==========\n enableSwipeGestures = input<boolean>(false);\n swipeThreshold = input<number>(50);\n enableHapticFeedback = input<boolean>(false);\n\n // ========== Router ==========\n routerLinkActiveOptions = input<IsActiveMatchOptions>({\n paths: 'exact',\n queryParams: 'exact',\n fragment: 'ignored',\n matrixParams: 'ignored'\n });\n\n // ========== Accessibility ==========\n ariaLabel = input<string>('Bottom navigation');\n\n // ========== Customization ==========\n class = input<string>('');\n\n // ========== Outputs ==========\n activeItemChange = output<string>();\n itemClicked = output<BottomNavigationItem>();\n fabClicked = output<void>();\n swipedLeft = output<void>();\n swipedRight = output<void>();\n\n // ========== State ==========\n protected isHidden = signal<boolean>(false);\n\n private lastScrollY = 0;\n private routerSubscription?: Subscription;\n private touchStartX = 0;\n private touchStartY = 0;\n private isSwiping = false;\n\n protected hostClasses = computed(() => {\n const classes = ['studio-bottom-navigation'];\n\n classes.push(`studio-bottom-navigation--${this.variant()}`);\n classes.push(`studio-bottom-navigation--${this.size()}`);\n classes.push(`studio-bottom-navigation--labels-${this.showLabels()}`);\n\n if (this.elevation() !== 'none') {\n classes.push(`studio-bottom-navigation--elevation-${this.elevation()}`);\n }\n\n if (this.blur()) classes.push('studio-bottom-navigation--blur');\n if (this.showFab()) classes.push('studio-bottom-navigation--has-fab');\n if (this.hideOnDesktop()) classes.push('studio-bottom-navigation--hide-desktop');\n if (!this.fixed()) classes.push('studio-bottom-navigation--relative');\n if (this.isHidden()) classes.push('studio-bottom-navigation--hidden');\n if (this.class()) classes.push(this.class());\n\n return classes.join(' ');\n });\n\n protected visibleItems = computed(() =>\n this.items().filter(item => item.visible !== false)\n );\n\n protected centerIndex = computed(() =>\n Math.floor(this.visibleItems().length / 2)\n );\n\n protected iconSize = computed(() => {\n const sizes: Record<BottomNavigationSize, number> = {\n sm: 20,\n md: 24,\n lg: 28\n };\n return sizes[this.size()];\n });\n\n ngOnInit(): void {\n if (isPlatformBrowser(this.platformId)) {\n this.routerSubscription = this.router.events\n .pipe(filter(event => event instanceof NavigationEnd))\n .subscribe(() => {});\n\n if (this.hideOnScroll()) {\n window.addEventListener('scroll', this.handleScroll, { passive: true });\n }\n }\n }\n\n ngOnDestroy(): void {\n this.routerSubscription?.unsubscribe();\n\n if (isPlatformBrowser(this.platformId) && this.hideOnScroll()) {\n window.removeEventListener('scroll', this.handleScroll);\n }\n }\n\n private handleScroll = (): void => {\n const currentScrollY = window.scrollY;\n\n if (Math.abs(currentScrollY - this.lastScrollY) < this.scrollThreshold()) {\n return;\n }\n\n if (currentScrollY > this.lastScrollY && currentScrollY > 100) {\n this.isHidden.set(true);\n } else {\n this.isHidden.set(false);\n }\n\n this.lastScrollY = currentScrollY;\n };\n\n protected isItemActive(item: BottomNavigationItem): boolean {\n if (this.activeItem()) {\n return item.id === this.activeItem();\n }\n\n if (item.routerLink && isPlatformBrowser(this.platformId)) {\n const url = Array.isArray(item.routerLink)\n ? item.routerLink.join('/')\n : item.routerLink;\n return this.router.isActive(url, this.routerLinkActiveOptions());\n }\n\n return false;\n }\n\n protected shouldShowLabel(item: BottomNavigationItem): boolean {\n const mode = this.showLabels();\n if (mode === 'never') return false;\n if (mode === 'always') return true;\n if (mode === 'selected') return this.isItemActive(item);\n return true;\n }\n\n protected onItemClick(item: BottomNavigationItem, event: Event): void {\n if (item.disabled) {\n event.preventDefault();\n return;\n }\n\n this.triggerHapticFeedback('light');\n\n if (item.command) {\n item.command(item);\n }\n\n this.activeItemChange.emit(item.id);\n this.itemClicked.emit(item);\n }\n\n protected onFabClick(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n this.triggerHapticFeedback('medium');\n this.fabClicked.emit();\n }\n\n protected onTouchStart(event: TouchEvent): void {\n if (!this.enableSwipeGestures()) return;\n\n const touch = event.touches[0];\n this.touchStartX = touch.clientX;\n this.touchStartY = touch.clientY;\n this.isSwiping = false;\n }\n\n protected onTouchMove(event: TouchEvent): void {\n if (!this.enableSwipeGestures()) return;\n\n const touch = event.touches[0];\n const deltaX = Math.abs(touch.clientX - this.touchStartX);\n const deltaY = Math.abs(touch.clientY - this.touchStartY);\n\n if (deltaX > deltaY && deltaX > 10) {\n this.isSwiping = true;\n }\n }\n\n protected onTouchEnd(event: TouchEvent): void {\n if (!this.enableSwipeGestures() || !this.isSwiping) return;\n\n const touch = event.changedTouches[0];\n const deltaX = touch.clientX - this.touchStartX;\n\n if (Math.abs(deltaX) > this.swipeThreshold()) {\n if (deltaX > 0) {\n this.triggerHapticFeedback('light');\n this.swipedRight.emit();\n } else {\n this.triggerHapticFeedback('light');\n this.swipedLeft.emit();\n }\n }\n\n this.isSwiping = false;\n }\n\n private triggerHapticFeedback(style: 'light' | 'medium' | 'heavy' = 'light'): void {\n if (!this.enableHapticFeedback() || !isPlatformBrowser(this.platformId)) return;\n\n if ('vibrate' in navigator) {\n const patterns: Record<string, number | number[]> = {\n light: 10,\n medium: 20,\n heavy: [30, 10, 30]\n };\n navigator.vibrate(patterns[style]);\n }\n }\n}\n","<div\n class=\"bottom-navigation__container\"\n (touchstart)=\"onTouchStart($event)\"\n (touchmove)=\"onTouchMove($event)\"\n (touchend)=\"onTouchEnd($event)\"\n>\n <ng-content select=\"[bottomNavLeft]\" />\n\n <div class=\"bottom-navigation__items\">\n @for (item of visibleItems(); track item.id) {\n @if (!showFab() || fabPosition() !== 'center' || $index !== centerIndex()) {\n <a\n class=\"bottom-navigation__item\"\n [class.bottom-navigation__item--active]=\"isItemActive(item)\"\n [class.bottom-navigation__item--disabled]=\"item.disabled\"\n [routerLink]=\"item.routerLink || null\"\n [queryParams]=\"item.queryParams\"\n [attr.href]=\"item.href || null\"\n [attr.aria-current]=\"isItemActive(item) ? 'page' : null\"\n [attr.aria-disabled]=\"item.disabled || null\"\n (click)=\"onItemClick(item, $event)\"\n >\n <div class=\"bottom-navigation__icon-wrapper\">\n <studio-icon\n [name]=\"item.icon\"\n [size]=\"iconSize()\"\n class=\"bottom-navigation__icon\"\n />\n\n @if (item.badge) {\n <studio-badge\n [value]=\"item.badge\"\n [color]=\"item.badgeColor || 'primary'\"\n size=\"sm\"\n class=\"bottom-navigation__badge\"\n />\n }\n </div>\n\n @if (shouldShowLabel(item)) {\n <span class=\"bottom-navigation__label\">{{ item.label }}</span>\n }\n </a>\n } @else {\n <div class=\"bottom-navigation__fab-spacer\"></div>\n }\n }\n </div>\n\n <ng-content select=\"[bottomNavRight]\" />\n\n @if (showFab()) {\n <button\n class=\"bottom-navigation__fab\"\n [class.bottom-navigation__fab--center]=\"fabPosition() === 'center'\"\n [class.bottom-navigation__fab--end]=\"fabPosition() === 'end'\"\n [attr.aria-label]=\"fabAriaLabel() || 'Action button'\"\n (click)=\"onFabClick($event)\"\n >\n <studio-icon\n [name]=\"fabIcon()\"\n [size]=\"24\"\n />\n </button>\n }\n</div>\n","import { Component, input, output, computed, inject, ChangeDetectionStrategy } from '@angular/core';\nimport { IconComponent } from '../icon';\nimport { StudioConfigService } from '../../config';\nimport { sanitizeUrl, classNames, withConfigDefault } from '../../utils';\n\n/**\n * Button component with multiple variants, sizes, colors and states\n *\n * @example\n * <studio-button variant=\"solid\" color=\"primary\" (clicked)=\"onClick()\">\n * Click me\n * </studio-button>\n */\n@Component({\n selector: 'studio-button',\n standalone: true,\n imports: [IconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[attr.disabled]': 'disabled() || loading() ? \"\" : null',\n '[attr.type]': 'href() ? null : type()',\n '[attr.href]': 'href()',\n '[attr.target]': 'href() ? target() : null',\n '[attr.rel]': 'href() && target() === \"_blank\" ? \"noopener noreferrer\" : null',\n '[attr.aria-label]': 'ariaLabel()',\n '(click)': 'handleClick($event)'\n },\n template: `\n <span class=\"studio-button__content\">\n @if (loading()) {\n <studio-icon\n name=\"loader-2\"\n [size]=\"iconSize()\"\n class=\"studio-button__spinner\"\n />\n }\n @if (!loading() && icon() && iconPosition() === 'left') {\n <studio-icon [name]=\"icon()!\" [size]=\"iconSize()\" />\n }\n @if (iconPosition() !== 'only' && !loading()) {\n <ng-content />\n }\n @if (!loading() && icon() && iconPosition() === 'right') {\n <studio-icon [name]=\"icon()!\" [size]=\"iconSize()\" />\n }\n @if (!loading() && icon() && iconPosition() === 'only') {\n <studio-icon [name]=\"icon()!\" [size]=\"iconSize()\" />\n }\n @if (loading() && iconPosition() === 'only') {\n } @else if (loading()) {\n <span>{{ loadingText() }}</span>\n }\n @if (badge() !== undefined && badge() !== null && badge() !== '') {\n <span class=\"studio-button__badge studio-button__badge--{{ badgeColor() }}\">\n {{ badge() }}\n </span>\n }\n </span>\n `,\n styleUrl: './button.component.scss'\n})\nexport class ButtonComponent {\n private readonly configService = inject(StudioConfigService);\n private readonly buttonDefaults = computed(() => this.configService.config().components?.button);\n\n variantInput = input<'solid' | 'outline' | 'ghost' | undefined>(undefined, { alias: 'variant' });\n sizeInput = input<'sm' | 'md' | 'lg' | undefined>(undefined, { alias: 'size' });\n colorInput = input<'primary' | 'secondary' | 'success' | 'error' | 'warning' | undefined>(undefined, { alias: 'color' });\n radiusInput = input<'none' | 'sm' | 'md' | 'lg' | 'xl' | 'full' | undefined>(undefined, { alias: 'radius' });\n shadowInput = input<'none' | 'sm' | 'md' | 'lg' | undefined>(undefined, { alias: 'shadow' });\n compactInput = input<boolean | undefined>(undefined, { alias: 'compact' });\n\n variant = withConfigDefault(this.variantInput, computed(() => this.buttonDefaults()?.variant), 'solid');\n size = withConfigDefault(this.sizeInput, computed(() => this.buttonDefaults()?.size), 'md');\n color = withConfigDefault(this.colorInput, computed(() => this.buttonDefaults()?.color), 'primary');\n radius = withConfigDefault(this.radiusInput, computed(() => this.buttonDefaults()?.radius), 'sm');\n shadow = withConfigDefault(this.shadowInput, computed(() => this.buttonDefaults()?.shadow), 'none');\n compact = withConfigDefault(this.compactInput, computed(() => this.buttonDefaults()?.compact), false);\n\n disabled = input<boolean>(false);\n loading = input<boolean>(false);\n loadingText = input<string>('Loading...');\n fullWidth = input<boolean>(false);\n type = input<'button' | 'submit' | 'reset'>('button');\n icon = input<string>();\n iconPosition = input<'left' | 'right' | 'only'>('left');\n href = input<string>();\n target = input<'_blank' | '_self' | '_parent' | '_top'>('_self');\n badge = input<string | number>();\n badgeColor = input<'primary' | 'error' | 'warning'>('error');\n ariaLabel = input<string>();\n\n clicked = output<MouseEvent>();\n\n protected iconSize = computed(() => {\n const sizeMap = { sm: 16, md: 18, lg: 20 };\n return sizeMap[this.size()];\n });\n\n protected hostClasses = computed(() => classNames(\n 'studio-button',\n `studio-button--${this.variant()}`,\n `studio-button--${this.size()}`,\n `studio-button--${this.color()}`,\n `studio-button--radius-${this.radius()}`,\n `studio-button--shadow-${this.shadow()}`,\n this.compact() && 'studio-button--compact',\n this.fullWidth() && 'studio-button--full',\n this.loading() && 'studio-button--loading',\n this.iconPosition() === 'only' && 'studio-button--icon-only'\n ));\n\n protected handleClick(event: MouseEvent): void {\n if (this.disabled() || this.loading()) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n\n const url = this.href();\n if (url) {\n const safeUrl = sanitizeUrl(url);\n if (safeUrl === '#') return;\n\n const target = this.target();\n if (target === '_blank') {\n window.open(safeUrl, '_blank', 'noopener,noreferrer');\n } else {\n window.location.href = safeUrl;\n }\n }\n\n this.clicked.emit(event);\n }\n}\n","/**\n * Button component\n */\n\nexport * from './button.component';\n","import { Component, ChangeDetectionStrategy, input, computed, inject, contentChildren, effect, ElementRef } from '@angular/core';\nimport { ButtonComponent } from '../button';\nimport { StudioConfigService } from '../../config';\nimport { classNames, withConfigDefault } from '../../utils';\n\n@Component({\n selector: 'studio-button-group',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[attr.role]': 'role()',\n '[attr.aria-label]': 'ariaLabel()'\n },\n template: `<ng-content select=\"studio-button\" />`,\n styleUrl: './button-group.component.scss'\n})\nexport class ButtonGroupComponent {\n private readonly elementRef = inject(ElementRef);\n private readonly configService = inject(StudioConfigService);\n private readonly groupDefaults = computed(() => this.configService.config().components?.buttonGroup);\n\n orientationInput = input<'horizontal' | 'vertical' | undefined>(undefined, { alias: 'orientation' });\n sizeInput = input<'sm' | 'md' | 'lg' | undefined>(undefined, { alias: 'size' });\n variantInput = input<'solid' | 'outline' | 'ghost' | undefined>(undefined, { alias: 'variant' });\n colorInput = input<'primary' | 'secondary' | 'success' | 'error' | 'warning' | undefined>(undefined, { alias: 'color' });\n radiusInput = input<'none' | 'sm' | 'md' | 'lg' | 'xl' | 'full' | undefined>(undefined, { alias: 'radius' });\n\n orientation = withConfigDefault(this.orientationInput, computed(() => this.groupDefaults()?.orientation), 'horizontal');\n size = withConfigDefault(this.sizeInput, computed(() => this.groupDefaults()?.size), undefined);\n variant = withConfigDefault(this.variantInput, computed(() => this.groupDefaults()?.variant), undefined);\n color = withConfigDefault(this.colorInput, computed(() => this.groupDefaults()?.color), undefined);\n radius = withConfigDefault(this.radiusInput, computed(() => this.groupDefaults()?.radius), undefined);\n\n attached = input<boolean>(false);\n fullWidth = input<boolean>(false);\n disabled = input<boolean>(false);\n spacing = input<'none' | 'xs' | 'sm' | 'md' | 'lg'>('sm');\n align = input<'start' | 'center' | 'end' | 'stretch'>('start');\n ariaLabel = input<string>();\n role = input<string>('group');\n\n protected hostClasses = computed(() => classNames(\n 'studio-button-group',\n `studio-button-group--${this.orientation()}`,\n `studio-button-group--spacing-${this.spacing()}`,\n `studio-button-group--align-${this.align()}`,\n this.attached() && 'studio-button-group--attached',\n this.fullWidth() && 'studio-button-group--full',\n this.disabled() && 'studio-button-group--disabled'\n ));\n\n constructor() {\n effect(() => {\n const isAttached = this.attached();\n const hostElement = this.elementRef.nativeElement as HTMLElement;\n const buttonElements = hostElement.querySelectorAll('studio-button');\n\n buttonElements.forEach((buttonEl, index) => {\n const isFirst = index === 0;\n const isLast = index === buttonElements.length - 1;\n const isMiddle = !isFirst && !isLast;\n\n if (isAttached) {\n buttonEl.classList.add('studio-button-group__item--attached');\n if (isFirst) buttonEl.classList.add('studio-button-group__item--first');\n if (isLast) buttonEl.classList.add('studio-button-group__item--last');\n if (isMiddle) buttonEl.classList.add('studio-button-group__item--middle');\n } else {\n buttonEl.classList.remove('studio-button-group__item--attached');\n buttonEl.classList.remove('studio-button-group__item--first');\n buttonEl.classList.remove('studio-button-group__item--last');\n buttonEl.classList.remove('studio-button-group__item--middle');\n }\n });\n });\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n inject,\n contentChild,\n TemplateRef\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IconComponent } from '../icon';\nimport { StudioConfigService } from '../../config';\nimport { sanitizeUrl, classNames, withConfigDefault } from '../../utils';\nimport {\n CardVariant,\n CardSize,\n CardColor,\n CardRadius,\n CardShadow,\n CardPadding,\n CardOrientation,\n CardImagePosition\n} from './card.types';\n\n/**\n * Card component for displaying content in a container\n *\n * @example\n * <studio-card variant=\"elevated\" color=\"primary\">\n * <div card-header>Header</div>\n * <div card-body>Content</div>\n * <div card-footer>Footer</div>\n * </studio-card>\n */\n@Component({\n selector: 'studio-card',\n standalone: true,\n imports: [CommonModule, IconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[attr.href]': 'href()',\n '[attr.target]': 'href() ? target() : null',\n '[attr.rel]': 'href() && target() === \"_blank\" ? \"noopener noreferrer\" : null',\n '[attr.disabled]': 'disabled() ? \"\" : null',\n '(click)': 'handleClick($event)'\n },\n template: `\n <div class=\"studio-card__container\">\n <!-- Header -->\n @if (showHeader() && (headerTemplate() || title() || subtitle())) {\n <div class=\"studio-card__header\">\n @if (headerTemplate()) {\n <ng-container *ngTemplateOutlet=\"headerTemplate()!\" />\n } @else {\n <div class=\"studio-card__header-content\">\n @if (avatar()) {\n <img [src]=\"avatar()!\" alt=\"\" class=\"studio-card__avatar\" />\n }\n @if (icon() && !avatar()) {\n <div class=\"studio-card__icon-wrapper\">\n <studio-icon [name]=\"icon()!\" [size]=\"iconSize()\" />\n </div>\n }\n <div class=\"studio-card__header-text\">\n @if (title()) {\n <h3 class=\"studio-card__title\">{{ title() }}</h3>\n }\n @if (subtitle()) {\n <p class=\"studio-card__subtitle\">{{ subtitle() }}</p>\n }\n </div>\n </div>\n @if (headerActionsTemplate()) {\n <div class=\"studio-card__header-actions\">\n <ng-container *ngTemplateOutlet=\"headerActionsTemplate()!\" />\n </div>\n }\n }\n </div>\n }\n\n <!-- Media -->\n @if (showMedia() && (mediaTemplate() || image())) {\n <div class=\"studio-card__media\">\n @if (mediaTemplate()) {\n <ng-container *ngTemplateOutlet=\"mediaTemplate()!\" />\n } @else if (image()) {\n <img\n [src]=\"image()!\"\n [alt]=\"imageAlt()\"\n class=\"studio-card__image\"\n [class.studio-card__image--cover]=\"imageFit() === 'cover'\"\n [class.studio-card__image--contain]=\"imageFit() === 'contain'\"\n />\n }\n </div>\n }\n\n <!-- Body -->\n <div class=\"studio-card__body\">\n @if (bodyTemplate()) {\n <ng-container *ngTemplateOutlet=\"bodyTemplate()!\" />\n } @else {\n <ng-content />\n }\n </div>\n\n <!-- Footer -->\n @if (showFooter() && footerTemplate()) {\n <div class=\"studio-card__footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate()!\" />\n </div>\n }\n\n <!-- Loading overlay -->\n @if (loading()) {\n <div class=\"studio-card__loading\">\n <studio-icon name=\"loader-2\" [size]=\"24\" class=\"studio-card__spinner\" />\n </div>\n }\n </div>\n `,\n styleUrl: './card.component.scss'\n})\nexport class CardComponent {\n private readonly configService = inject(StudioConfigService);\n private readonly cardDefaults = computed(() => this.configService.config().components?.card);\n\n // Style inputs with config defaults\n variantInput = input<CardVariant | undefined>(undefined, { alias: 'variant' });\n sizeInput = input<CardSize | undefined>(undefined, { alias: 'size' });\n colorInput = input<CardColor | undefined>(undefined, { alias: 'color' });\n radiusInput = input<CardRadius | undefined>(undefined, { alias: 'radius' });\n shadowInput = input<CardShadow | undefined>(undefined, { alias: 'shadow' });\n paddingInput = input<CardPadding | undefined>(undefined, { alias: 'padding' });\n\n variant = withConfigDefault(this.variantInput, computed(() => this.cardDefaults()?.variant), 'elevated');\n size = withConfigDefault(this.sizeInput, computed(() => this.cardDefaults()?.size), 'md');\n color = withConfigDefault(this.colorInput, computed(() => this.cardDefaults()?.color), 'default');\n radius = withConfigDefault(this.radiusInput, computed(() => this.cardDefaults()?.radius), 'lg');\n shadow = withConfigDefault(this.shadowInput, computed(() => this.cardDefaults()?.shadow), 'md');\n padding = withConfigDefault(this.paddingInput, computed(() => this.cardDefaults()?.padding), 'md');\n\n // Layout inputs\n orientation = input<CardOrientation>('vertical');\n imagePosition = input<CardImagePosition>('top');\n fullWidth = input<boolean>(false);\n fullHeight = input<boolean>(false);\n\n // Content inputs\n title = input<string>();\n subtitle = input<string>();\n avatar = input<string>();\n icon = input<string>();\n image = input<string>();\n imageAlt = input<string>('');\n imageFit = input<'cover' | 'contain'>('cover');\n\n // Visibility inputs\n showHeader = input<boolean>(true);\n showMedia = input<boolean>(true);\n showFooter = input<boolean>(true);\n divider = input<boolean>(false);\n\n // Interaction inputs\n hoverable = input<boolean>(false);\n pressable = input<boolean>(false);\n disabled = input<boolean>(false);\n loading = input<boolean>(false);\n href = input<string>();\n target = input<'_blank' | '_self' | '_parent' | '_top'>('_self');\n\n // Effects\n blurred = input<boolean>(false);\n blurredFooter = input<boolean>(false);\n animated = input<boolean>(false);\n\n // Outputs\n clicked = output<MouseEvent>();\n headerAction = output<void>();\n\n // Template refs\n protected headerTemplate = contentChild<TemplateRef<any>>('cardHeader');\n protected headerActionsTemplate = contentChild<TemplateRef<any>>('cardHeaderActions');\n protected mediaTemplate = contentChild<TemplateRef<any>>('cardMedia');\n protected bodyTemplate = contentChild<TemplateRef<any>>('cardBody');\n protected footerTemplate = contentChild<TemplateRef<any>>('cardFooter');\n\n // Computed\n protected iconSize = computed(() => {\n const sizeMap: Record<CardSize, number> = { sm: 18, md: 20, lg: 24 };\n return sizeMap[this.size()];\n });\n\n protected hostClasses = computed(() => classNames(\n 'studio-card',\n `studio-card--${this.variant()}`,\n `studio-card--${this.size()}`,\n `studio-card--${this.color()}`,\n `studio-card--radius-${this.radius()}`,\n `studio-card--shadow-${this.shadow()}`,\n `studio-card--padding-${this.padding()}`,\n `studio-card--${this.orientation()}`,\n this.imagePosition() !== 'top' && `studio-card--image-${this.imagePosition()}`,\n this.fullWidth() && 'studio-card--full-width',\n this.fullHeight() && 'studio-card--full-height',\n this.hoverable() && 'studio-card--hoverable',\n this.pressable() && 'studio-card--pressable',\n this.disabled() && 'studio-card--disabled',\n this.loading() && 'studio-card--loading',\n this.blurred() && 'studio-card--blurred',\n this.blurredFooter() && 'studio-card--blurred-footer',\n this.animated() && 'studio-card--animated',\n this.divider() && 'studio-card--divider',\n this.href() && 'studio-card--clickable'\n ));\n\n protected handleClick(event: MouseEvent): void {\n if (this.disabled() || this.loading()) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n\n const url = this.href();\n if (url) {\n const safeUrl = sanitizeUrl(url);\n if (safeUrl === '#') {\n return;\n }\n\n const target = this.target();\n if (target === '_blank') {\n window.open(safeUrl, '_blank', 'noopener,noreferrer');\n } else {\n window.location.href = safeUrl;\n }\n }\n\n this.clicked.emit(event);\n }\n}\n","/**\n * Card component types\n */\n\nexport type CardVariant = 'elevated' | 'filled' | 'outlined' | 'ghost';\nexport type CardSize = 'sm' | 'md' | 'lg';\nexport type CardColor = 'default' | 'primary' | 'secondary' | 'success' | 'error' | 'warning' | 'neutral';\nexport type CardRadius = 'none' | 'sm' | 'md' | 'lg' | 'xl';\nexport type CardShadow = 'none' | 'sm' | 'md' | 'lg' | 'xl';\nexport type CardPadding = 'none' | 'sm' | 'md' | 'lg';\nexport type CardOrientation = 'vertical' | 'horizontal';\nexport type CardImagePosition = 'top' | 'left' | 'right' | 'bottom';\n","import { Component, ChangeDetectionStrategy, input, computed } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IconComponent } from '../icon';\nimport { ChatMessage } from './chat.types';\n\n@Component({\n selector: 'studio-chat-message',\n standalone: true,\n imports: [CommonModule, IconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()'\n },\n template: `\n <div class=\"chat-message__container\">\n @if (showAvatar() && !isOwn()) {\n <div class=\"chat-message__avatar\">\n @if (message().userAvatar) {\n <img [src]=\"message().userAvatar\" [alt]=\"message().userName\" />\n } @else {\n <div class=\"chat-message__avatar-fallback\">\n {{ getInitials(message().userName) }}\n </div>\n }\n </div>\n }\n\n <div class=\"chat-message__content-wrapper\">\n @if (!isOwn() && showUserName()) {\n <div class=\"chat-message__user-name\">{{ message().userName }}</div>\n }\n\n <div class=\"chat-message__bubble\">\n @if (message().type === 'system') {\n <div class=\"chat-message__system\">{{ message().content }}</div>\n } @else {\n <div class=\"chat-message__text\">{{ message().content }}</div>\n }\n\n @if (message().edited) {\n <span class=\"chat-message__edited\">(edited)</span>\n }\n </div>\n\n <div class=\"chat-message__meta\">\n @if (showTimestamp()) {\n <span class=\"chat-message__time\">{{ formatTime(message().timestamp) }}</span>\n }\n\n @if (isOwn() && message().status && message().status !== 'sending') {\n <span class=\"chat-message__status\">\n @if (message().status === 'sent') {\n <studio-icon name=\"check\" [size]=\"12\" />\n }\n @if (message().status === 'delivered' || message().status === 'read') {\n <studio-icon name=\"check-check\" [size]=\"12\" />\n }\n @if (message().status === 'error') {\n <studio-icon name=\"alert-circle\" [size]=\"12\" />\n }\n </span>\n }\n </div>\n </div>\n </div>\n `,\n styles: [`\n :host {\n display: block;\n margin-bottom: 0.75rem;\n }\n\n :host(.chat-message--own) {\n .chat-message__container {\n justify-content: flex-end;\n }\n\n .chat-message__bubble {\n background: var(--studio-primary);\n color: white;\n }\n\n .chat-message__meta {\n justify-content: flex-end;\n }\n }\n\n :host(.chat-message--system) {\n text-align: center;\n margin: 1rem 0;\n\n .chat-message__system {\n display: inline-block;\n padding: 0.25rem 0.75rem;\n background: var(--studio-bg-secondary);\n color: var(--studio-text-secondary);\n border-radius: var(--studio-radius-full);\n font-size: 0.75rem;\n }\n }\n\n :host(.chat-message--compact) {\n margin-bottom: 0.25rem;\n }\n\n .chat-message__container {\n display: flex;\n gap: 0.75rem;\n align-items: flex-end;\n }\n\n .chat-message__avatar {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n overflow: hidden;\n flex-shrink: 0;\n\n img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n }\n\n .chat-message__avatar-fallback {\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--studio-primary);\n color: white;\n font-size: 0.75rem;\n font-weight: 600;\n }\n\n .chat-message__content-wrapper {\n max-width: 70%;\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n }\n\n .chat-message__user-name {\n font-size: 0.75rem;\n font-weight: 500;\n color: var(--studio-text-secondary);\n padding-left: 0.75rem;\n }\n\n .chat-message__bubble {\n padding: 0.625rem 0.875rem;\n border-radius: var(--studio-radius-lg);\n background: var(--studio-bg-secondary);\n color: var(--studio-text-primary);\n word-wrap: break-word;\n position: relative;\n }\n\n .chat-message__text {\n white-space: pre-wrap;\n line-height: 1.5;\n }\n\n .chat-message__edited {\n font-size: 0.6875rem;\n color: var(--studio-text-tertiary);\n margin-left: 0.25rem;\n }\n\n .chat-message__meta {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0 0.75rem;\n }\n\n .chat-message__time {\n font-size: 0.6875rem;\n color: var(--studio-text-tertiary);\n }\n\n .chat-message__status {\n display: flex;\n align-items: center;\n color: var(--studio-text-tertiary);\n }\n\n :host(.chat-message--own) .chat-message__status {\n color: var(--studio-text-tertiary);\n }\n\n :host(.chat-message--status-read) .chat-message__status {\n color: var(--studio-primary);\n }\n\n :host(.chat-message--status-error) .chat-message__status {\n color: var(--studio-error);\n }\n\n :host(.chat-message--compact) {\n .chat-message__avatar {\n width: 24px;\n height: 24px;\n }\n\n .chat-message__bubble {\n padding: 0.5rem 0.75rem;\n font-size: 0.875rem;\n }\n }\n `]\n})\nexport class ChatMessageComponent {\n message = input.required<ChatMessage>();\n currentUserId = input.required<string>();\n showAvatar = input<boolean>(true);\n showTimestamp = input<boolean>(true);\n showUserName = input<boolean>(true);\n compact = input<boolean>(false);\n\n protected isOwn = computed(() =>\n this.message().userId === this.currentUserId()\n );\n\n protected hostClasses = computed(() => {\n const classes = ['studio-chat-message'];\n\n if (this.isOwn()) classes.push('chat-message--own');\n if (this.message().type === 'system') classes.push('chat-message--system');\n if (this.compact()) classes.push('chat-message--compact');\n if (this.message().status === 'read') classes.push('chat-message--status-read');\n if (this.message().status === 'error') classes.push('chat-message--status-error');\n\n return classes.join(' ');\n });\n\n protected getInitials(name: string): string {\n return name\n .split(' ')\n .map(n => n[0])\n .slice(0, 2)\n .join('')\n .toUpperCase();\n }\n\n protected formatTime(date: Date): string {\n const now = new Date();\n const messageDate = new Date(date);\n const diff = now.getTime() - messageDate.getTime();\n const minutes = Math.floor(diff / 60000);\n const hours = Math.floor(diff / 3600000);\n const days = Math.floor(diff / 86400000);\n\n if (minutes < 1) return 'Just now';\n if (minutes < 60) return `${minutes}m ago`;\n if (hours < 24) return `${hours}h ago`;\n if (days === 1) return 'Yesterday';\n if (days < 7) return `${days}d ago`;\n\n return messageDate.toLocaleDateString('en-US', {\n month: 'short',\n day: 'numeric'\n });\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n signal,\n computed,\n ElementRef,\n viewChild,\n effect\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { IconComponent } from '../icon';\nimport { ButtonComponent } from '../button';\n\n@Component({\n selector: 'studio-chat-input',\n standalone: true,\n imports: [CommonModule, FormsModule, IconComponent, ButtonComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()'\n },\n template: `\n <div class=\"chat-input__container\">\n <textarea\n #textareaRef\n class=\"chat-input__textarea\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [(ngModel)]=\"inputValue\"\n (keydown)=\"onKeyDown($event)\"\n (input)=\"onInput()\"\n rows=\"1\"\n ></textarea>\n\n <studio-button\n variant=\"ghost\"\n size=\"sm\"\n [disabled]=\"!canSend()\"\n (click)=\"handleSubmit()\"\n class=\"chat-input__send-button\"\n >\n <studio-icon name=\"send\" [size]=\"20\" />\n </studio-button>\n </div>\n `,\n styles: [`\n :host {\n display: block;\n }\n\n .chat-input__container {\n display: flex;\n align-items: flex-end;\n gap: 0.5rem;\n padding: 1rem;\n background: var(--studio-bg-primary);\n border-top: 1px solid var(--studio-border-primary);\n }\n\n .chat-input__textarea {\n flex: 1;\n min-height: 40px;\n max-height: 120px;\n padding: 0.625rem 0.875rem;\n border: 1px solid var(--studio-border-primary);\n border-radius: var(--studio-radius-md);\n background: var(--studio-bg-primary);\n color: var(--studio-text-primary);\n font-family: inherit;\n font-size: 0.875rem;\n line-height: 1.5;\n resize: none;\n overflow-y: auto;\n transition: border-color 150ms ease;\n\n &:focus {\n outline: none;\n border-color: var(--studio-primary);\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n &::placeholder {\n color: var(--studio-text-tertiary);\n }\n }\n\n .chat-input__send-button {\n flex-shrink: 0;\n }\n\n :host(.chat-input--compact) {\n .chat-input__container {\n padding: 0.75rem;\n }\n\n .chat-input__textarea {\n padding: 0.5rem 0.75rem;\n font-size: 0.8125rem;\n }\n }\n `]\n})\nexport class ChatInputComponent {\n placeholder = input<string>('Type a message...');\n disabled = input<boolean>(false);\n compact = input<boolean>(false);\n\n messageSubmit = output<{ content: string }>();\n typing = output<boolean>();\n\n protected inputValue = signal<string>('');\n protected textareaRef = viewChild<ElementRef<HTMLTextAreaElement>>('textareaRef');\n\n private typingTimeout?: ReturnType<typeof setTimeout>;\n\n protected canSend = computed(() =>\n this.inputValue().trim().length > 0 && !this.disabled()\n );\n\n protected hostClasses = computed(() => {\n const classes = ['studio-chat-input'];\n\n if (this.compact()) classes.push('chat-input--compact');\n\n return classes.join(' ');\n });\n\n constructor() {\n // Auto-resize textarea\n effect(() => {\n const textarea = this.textareaRef()?.nativeElement;\n if (textarea) {\n textarea.style.height = 'auto';\n textarea.style.height = textarea.scrollHeight + 'px';\n }\n });\n }\n\n protected onKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Enter' && !event.shiftKey) {\n event.preventDefault();\n this.handleSubmit();\n }\n }\n\n protected onInput(): void {\n // Emit typing indicator\n this.typing.emit(true);\n\n // Clear previous timeout\n if (this.typingTimeout) {\n clearTimeout(this.typingTimeout);\n }\n\n // Set new timeout to stop typing after 1 second\n this.typingTimeout = setTimeout(() => {\n this.typing.emit(false);\n }, 1000);\n\n // Auto-resize\n const textarea = this.textareaRef()?.nativeElement;\n if (textarea) {\n textarea.style.height = 'auto';\n textarea.style.height = textarea.scrollHeight + 'px';\n }\n }\n\n protected handleSubmit(): void {\n const content = this.inputValue().trim();\n if (content && !this.disabled()) {\n this.messageSubmit.emit({ content });\n this.inputValue.set('');\n\n // Reset textarea height\n const textarea = this.textareaRef()?.nativeElement;\n if (textarea) {\n textarea.style.height = 'auto';\n }\n\n // Stop typing indicator\n if (this.typingTimeout) {\n clearTimeout(this.typingTimeout);\n }\n this.typing.emit(false);\n }\n }\n\n public focus(): void {\n this.textareaRef()?.nativeElement.focus();\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n signal,\n effect,\n ElementRef,\n viewChild,\n AfterViewInit\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ChatMessageComponent } from './chat-message.component';\nimport { ChatInputComponent } from './chat-input.component';\nimport { IconComponent } from '../icon';\nimport { ChatMessage, ChatVariant, ChatSize } from './chat.types';\n\n/**\n * Chat component - Flexible chat/messaging component\n *\n * @example\n * <studio-chat\n * [messages]=\"messages\"\n * [currentUserId]=\"currentUser.id\"\n * variant=\"default\"\n * (messageSubmit)=\"handleMessage($event)\"\n * />\n */\n@Component({\n selector: 'studio-chat',\n standalone: true,\n imports: [\n CommonModule,\n ChatMessageComponent,\n ChatInputComponent,\n IconComponent\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[style.height]': 'height()'\n },\n templateUrl: './chat.component.html',\n styleUrl: './chat.component.scss'\n})\nexport class ChatComponent implements AfterViewInit {\n // ========== Required ==========\n messages = input.required<ChatMessage[]>();\n currentUserId = input.required<string>();\n\n // ========== Appearance ==========\n variant = input<ChatVariant>('default');\n size = input<ChatSize>('md');\n height = input<string>('600px');\n\n // ========== Behavior ==========\n placeholder = input<string>('Type a message...');\n showAvatars = input<boolean>(true);\n showTimestamps = input<boolean>(true);\n showUserNames = input<boolean>(true);\n enableAutoScroll = input<boolean>(true);\n disabled = input<boolean>(false);\n\n // ========== Customization ==========\n class = input<string>('');\n\n // ========== Outputs ==========\n messageSubmit = output<{ content: string }>();\n typing = output<boolean>();\n\n // ========== State ==========\n protected messagesContainerRef = viewChild<ElementRef<HTMLDivElement>>('messagesContainer');\n protected isScrolledUp = signal<boolean>(false);\n protected shouldAutoScroll = signal<boolean>(true);\n\n protected hostClasses = computed(() => {\n const classes = ['studio-chat'];\n\n classes.push(`studio-chat--${this.variant()}`);\n classes.push(`studio-chat--${this.size()}`);\n\n if (this.disabled()) classes.push('studio-chat--disabled');\n if (this.class()) classes.push(this.class());\n\n return classes.join(' ');\n });\n\n protected isCompact = computed(() =>\n this.variant() === 'compact' || this.variant() === 'minimal'\n );\n\n constructor() {\n // Auto-scroll when new messages arrive\n effect(() => {\n const messages = this.messages();\n if (messages.length > 0 && this.shouldAutoScroll() && this.enableAutoScroll()) {\n setTimeout(() => this.scrollToBottom(), 0);\n }\n });\n }\n\n ngAfterViewInit(): void {\n this.scrollToBottom();\n }\n\n protected onScroll(): void {\n const container = this.messagesContainerRef()?.nativeElement;\n if (!container) return;\n\n const isAtBottom =\n container.scrollHeight - container.scrollTop - container.clientHeight < 50;\n\n this.isScrolledUp.set(!isAtBottom);\n this.shouldAutoScroll.set(isAtBottom);\n }\n\n protected onMessageSubmit(event: { content: string }): void {\n this.messageSubmit.emit(event);\n this.shouldAutoScroll.set(true);\n }\n\n protected scrollToBottom(): void {\n const container = this.messagesContainerRef()?.nativeElement;\n if (container) {\n container.scrollTop = container.scrollHeight;\n this.isScrolledUp.set(false);\n this.shouldAutoScroll.set(true);\n }\n }\n\n protected onTyping(typing: boolean): void {\n this.typing.emit(typing);\n }\n}\n","<div class=\"chat__container\">\n <div\n #messagesContainer\n class=\"chat__messages\"\n (scroll)=\"onScroll()\"\n >\n @if (messages().length === 0) {\n <div class=\"chat__empty\">\n <studio-icon name=\"message-circle\" [size]=\"48\" />\n <p>No messages yet</p>\n <small>Start a conversation</small>\n </div>\n } @else {\n @for (message of messages(); track message.id || $index) {\n <studio-chat-message\n [message]=\"message\"\n [currentUserId]=\"currentUserId()\"\n [showAvatar]=\"showAvatars()\"\n [showTimestamp]=\"showTimestamps()\"\n [showUserName]=\"showUserNames()\"\n [compact]=\"isCompact()\"\n />\n }\n }\n </div>\n\n @if (isScrolledUp()) {\n <button\n class=\"chat__scroll-button\"\n (click)=\"scrollToBottom()\"\n type=\"button\"\n >\n <studio-icon name=\"arrow-down\" [size]=\"20\" />\n </button>\n }\n\n <studio-chat-input\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [compact]=\"isCompact()\"\n (messageSubmit)=\"onMessageSubmit($event)\"\n (typing)=\"onTyping($event)\"\n />\n</div>\n","import { Component, input, output, computed, signal, forwardRef, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { StudioConfigService } from '../../config/studio.service';\n\n/**\n * Checkbox component for selecting boolean values\n *\n * @example\n * <studio-checkbox\n * [(ngModel)]=\"accepted\"\n * label=\"I accept terms and conditions\"\n * (changed)=\"onAccept($event)\"\n * />\n */\n@Component({\n selector: 'studio-checkbox',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './checkbox.component.html',\n styleUrl: './checkbox.component.scss',\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxComponent),\n multi: true\n }],\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-size]': 'size()',\n '[attr.data-color]': 'color()',\n '[attr.data-disabled]': 'disabled()',\n '[attr.data-error]': 'error()'\n }\n})\nexport class CheckboxComponent implements ControlValueAccessor {\n private readonly configService = inject(StudioConfigService);\n private readonly checkboxDefaults = computed(() => this.configService.config().components?.checkbox);\n\n // ==========================================\n // INPUTS - Appearance\n // ==========================================\n\n /**\n * Size of the checkbox\n */\n size = input<CheckboxSize>(\n this.checkboxDefaults()?.size ?? 'md'\n );\n\n /**\n * Color scheme\n */\n color = input<CheckboxColor>(\n this.checkboxDefaults()?.color ?? 'primary'\n );\n\n /**\n * Visual variant\n */\n variant = input<CheckboxVariant>(\n this.checkboxDefaults()?.variant ?? 'default'\n );\n\n /**\n * Border radius\n */\n radius = input<CheckboxRadius>(\n this.checkboxDefaults()?.radius ?? 'sm'\n );\n\n // ==========================================\n // INPUTS - Labels & Description\n // ==========================================\n\n /**\n * Label text\n */\n label = input<string>();\n\n /**\n * Label position relative to checkbox\n */\n labelPosition = input<'left' | 'right'>(\n this.checkboxDefaults()?.labelPosition ?? 'right'\n );\n\n /**\n * Additional description text\n */\n description = input<string>();\n\n /**\n * Helper text\n */\n hint = input<string>();\n\n // ==========================================\n // INPUTS - Validation\n // ==========================================\n\n /**\n * Required field\n */\n required = input<boolean>(false);\n\n /**\n * Error state\n */\n error = input<boolean>(false);\n\n /**\n * Error message\n */\n errorMessage = input<string>();\n\n // ==========================================\n // INPUTS - Behavior\n // ==========================================\n\n /**\n * Disabled state\n */\n disabled = input<boolean>(false);\n\n /**\n * Readonly state\n */\n readonly = input<boolean>(false);\n\n /**\n * Indeterminate state (for \"select all\" checkboxes)\n */\n indeterminate = input<boolean>(false);\n\n /**\n * Name attribute for form control\n */\n name = input<string>();\n\n /**\n * Tab index\n */\n tabIndex = input<number>(0);\n\n /**\n * Value for checkbox groups\n */\n value = input<any>();\n\n // ==========================================\n // OUTPUTS\n // ==========================================\n\n /**\n * Emitted when checkbox state changes\n */\n changed = output<boolean>();\n\n // ==========================================\n // STATE\n // ==========================================\n\n /**\n * Internal checked state\n */\n protected internalChecked = signal(false);\n\n /**\n * Internal focus state\n */\n protected isFocused = signal(false);\n\n /**\n * Unique ID for accessibility\n */\n protected checkboxId = signal(`studio-checkbox-${Math.random().toString(36).substr(2, 9)}`);\n\n // ==========================================\n // COMPUTED\n // ==========================================\n\n /**\n * Host CSS classes\n */\n protected hostClasses = computed(() => ({\n 'studio-checkbox-wrapper': true,\n [`studio-checkbox-wrapper--${this.size()}`]: true,\n 'studio-checkbox-wrapper--disabled': this.disabled(),\n 'studio-checkbox-wrapper--error': this.error(),\n 'studio-checkbox-wrapper--focused': this.isFocused(),\n 'studio-checkbox-wrapper--label-left': this.labelPosition() === 'left'\n }));\n\n /**\n * Checkbox element CSS classes\n */\n protected checkboxClasses = computed(() => ({\n 'studio-checkbox': true,\n [`studio-checkbox--${this.size()}`]: true,\n [`studio-checkbox--${this.color()}`]: true,\n [`studio-checkbox--${this.variant()}`]: true,\n [`studio-checkbox--radius-${this.radius()}`]: true,\n 'studio-checkbox--checked': this.internalChecked(),\n 'studio-checkbox--indeterminate': this.indeterminate(),\n 'studio-checkbox--disabled': this.disabled(),\n 'studio-checkbox--error': this.error()\n }));\n\n /**\n * Show error message\n */\n protected showError = computed(() => this.error() && this.errorMessage());\n\n /**\n * Show hint\n */\n protected showHint = computed(() => !this.error() && this.hint());\n\n /**\n * ARIA checked state\n */\n protected ariaChecked = computed(() => {\n if (this.indeterminate()) return 'mixed';\n return this.internalChecked() ? 'true' : 'false';\n });\n\n // ==========================================\n // CONTROL VALUE ACCESSOR\n // ==========================================\n\n private onChange: (value: boolean) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: boolean): void {\n this.internalChecked.set(value ?? false);\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n // Disabled state is controlled via input\n }\n\n // ==========================================\n // METHODS\n // ==========================================\n\n /**\n * Handle checkbox toggle\n */\n protected handleChange(event: Event): void {\n if (this.disabled() || this.readonly()) {\n event.preventDefault();\n return;\n }\n\n const newValue = (event.target as HTMLInputElement).checked;\n this.internalChecked.set(newValue);\n this.onChange(newValue);\n this.changed.emit(newValue);\n }\n\n /**\n * Handle focus\n */\n protected handleFocus(): void {\n this.isFocused.set(true);\n }\n\n /**\n * Handle blur\n */\n protected handleBlur(): void {\n this.isFocused.set(false);\n this.onTouched();\n }\n\n /**\n * Handle label click\n */\n protected handleLabelClick(event: Event): void {\n if (this.disabled() || this.readonly()) {\n event.preventDefault();\n }\n }\n}\n\n// ==========================================\n// TYPES\n// ==========================================\n\nexport type CheckboxSize = 'sm' | 'md' | 'lg';\nexport type CheckboxColor = 'primary' | 'secondary' | 'success' | 'error';\nexport type CheckboxVariant = 'default' | 'outlined' | 'filled';\nexport type CheckboxRadius = 'none' | 'sm' | 'md' | 'lg' | 'full';\n","<label\n [for]=\"checkboxId()\"\n [ngClass]=\"hostClasses()\"\n (click)=\"handleLabelClick($event)\"\n>\n <!-- Checkbox input -->\n <input\n type=\"checkbox\"\n [id]=\"checkboxId()\"\n [name]=\"name()\"\n [checked]=\"internalChecked()\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n [tabIndex]=\"tabIndex()\"\n [attr.aria-checked]=\"ariaChecked()\"\n [attr.aria-label]=\"label() || undefined\"\n [attr.aria-describedby]=\"showHint() || showError() ? checkboxId() + '-description' : undefined\"\n [attr.aria-invalid]=\"error()\"\n [attr.aria-required]=\"required()\"\n class=\"studio-checkbox__input\"\n (change)=\"handleChange($event)\"\n (focus)=\"handleFocus()\"\n (blur)=\"handleBlur()\"\n />\n\n <!-- Custom checkbox -->\n <span [ngClass]=\"checkboxClasses()\">\n <!-- Checkmark icon -->\n @if (internalChecked() && !indeterminate()) {\n <svg\n class=\"studio-checkbox__icon\"\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.66666 8\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n }\n\n <!-- Indeterminate icon -->\n @if (indeterminate()) {\n <svg\n class=\"studio-checkbox__icon studio-checkbox__icon--indeterminate\"\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 }\n </span>\n\n <!-- Label content -->\n @if (label() || description()) {\n <span class=\"studio-checkbox__label-wrapper\">\n @if (label()) {\n <span class=\"studio-checkbox__label\">\n {{ label() }}\n @if (required()) {\n <span class=\"studio-checkbox__required\" aria-hidden=\"true\">*</span>\n }\n </span>\n }\n\n @if (description()) {\n <span class=\"studio-checkbox__description\">\n {{ description() }}\n </span>\n }\n </span>\n }\n</label>\n\n<!-- Helper text / Error message -->\n@if (showHint() || showError()) {\n <div\n [id]=\"checkboxId() + '-description'\"\n class=\"studio-checkbox__info\"\n >\n @if (showError()) {\n <span class=\"studio-checkbox__error\">\n {{ errorMessage() }}\n </span>\n }\n\n @if (showHint()) {\n <span class=\"studio-checkbox__hint\">\n {{ hint() }}\n </span>\n }\n </div>\n}\n","import { RGB, HSL, ColorValue, ColorFormat } from '../primitives/color-picker/color-picker.types';\n\nexport class ColorConverter {\n static hexToRgb(hex: string): RGB | null {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n } : null;\n }\n\n static rgbToHex(r: number, g: number, b: number): string {\n return \"#\" + [r, g, b]\n .map(x => {\n const hex = Math.round(x).toString(16);\n return hex.length === 1 ? \"0\" + hex : hex;\n })\n .join(\"\");\n }\n\n static rgbToHsl(r: number, g: number, b: number): HSL {\n r /= 255;\n g /= 255;\n b /= 255;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n let h = 0, s = 0;\n const l = (max + min) / 2;\n\n if (max !== min) {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\n switch (max) {\n case r: h = ((g - b) / d + (g < b ? 6 : 0)) / 6; break;\n case g: h = ((b - r) / d + 2) / 6; break;\n case b: h = ((r - g) / d + 4) / 6; break;\n }\n }\n\n return {\n h: Math.round(h * 360),\n s: Math.round(s * 100),\n l: Math.round(l * 100)\n };\n }\n\n static hslToRgb(h: number, s: number, l: number): RGB {\n h = h / 360;\n s = s / 100;\n l = l / 100;\n\n let r, g, b;\n\n if (s === 0) {\n r = g = b = l;\n } else {\n const hue2rgb = (p: number, q: number, t: number) => {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1/6) return p + (q - p) * 6 * t;\n if (t < 1/2) return q;\n if (t < 2/3) return p + (q - p) * (2/3 - t) * 6;\n return p;\n };\n\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const p = 2 * l - q;\n\n r = hue2rgb(p, q, h + 1/3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1/3);\n }\n\n return {\n r: Math.round(r * 255),\n g: Math.round(g * 255),\n b: Math.round(b * 255)\n };\n }\n\n static format(color: ColorValue, format: ColorFormat): string {\n switch (format) {\n case 'hex':\n return color.hex;\n case 'rgb':\n if (color.alpha < 1) {\n return `rgba(${color.rgb.r}, ${color.rgb.g}, ${color.rgb.b}, ${color.alpha})`;\n }\n return `rgb(${color.rgb.r}, ${color.rgb.g}, ${color.rgb.b})`;\n case 'hsl':\n if (color.alpha < 1) {\n return `hsla(${color.hsl.h}, ${color.hsl.s}%, ${color.hsl.l}%, ${color.alpha})`;\n }\n return `hsl(${color.hsl.h}, ${color.hsl.s}%, ${color.hsl.l}%)`;\n default:\n return color.hex;\n }\n }\n\n static parse(colorString: string): ColorValue | null {\n const trimmed = colorString.trim();\n\n const hexMatch = /^#?([a-f\\d]{6})$/i.exec(trimmed);\n if (hexMatch) {\n const hex = '#' + hexMatch[1];\n const rgb = this.hexToRgb(hex);\n if (!rgb) return null;\n\n return {\n hex,\n rgb,\n hsl: this.rgbToHsl(rgb.r, rgb.g, rgb.b),\n alpha: 1\n };\n }\n\n const rgbMatch = /^rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*([\\d.]+))?\\)$/i.exec(trimmed);\n if (rgbMatch) {\n const r = parseInt(rgbMatch[1]);\n const g = parseInt(rgbMatch[2]);\n const b = parseInt(rgbMatch[3]);\n const alpha = rgbMatch[4] ? parseFloat(rgbMatch[4]) : 1;\n\n return {\n hex: this.rgbToHex(r, g, b),\n rgb: { r, g, b },\n hsl: this.rgbToHsl(r, g, b),\n alpha\n };\n }\n\n const hslMatch = /^hsla?\\((\\d+),\\s*(\\d+)%?,\\s*(\\d+)%?(?:,\\s*([\\d.]+))?\\)$/i.exec(trimmed);\n if (hslMatch) {\n const h = parseInt(hslMatch[1]);\n const s = parseInt(hslMatch[2]);\n const l = parseInt(hslMatch[3]);\n const alpha = hslMatch[4] ? parseFloat(hslMatch[4]) : 1;\n\n const rgb = this.hslToRgb(h, s, l);\n\n return {\n hex: this.rgbToHex(rgb.r, rgb.g, rgb.b),\n rgb,\n hsl: { h, s, l },\n alpha\n };\n }\n\n return null;\n }\n\n static isValid(colorString: string): boolean {\n return this.parse(colorString) !== null;\n }\n}\n","import { ColorSwatchGroup } from './color-picker.types';\n\nexport const DEFAULT_COLOR_PRESETS: ColorSwatchGroup[] = [\n {\n label: 'Brand Colors',\n colors: [\n { label: 'Primary', value: '#7c3aed' },\n { label: 'Secondary', value: '#6366f1' },\n { label: 'Success', value: '#10b981' },\n { label: 'Error', value: '#ef4444' },\n { label: 'Warning', value: '#f59e0b' },\n { label: 'Info', value: '#3b82f6' }\n ]\n },\n {\n label: 'Grays',\n colors: [\n { value: '#ffffff' },\n { value: '#f3f4f6' },\n { value: '#d1d5db' },\n { value: '#9ca3af' },\n { value: '#6b7280' },\n { value: '#374151' },\n { value: '#1f2937' },\n { value: '#000000' }\n ]\n },\n {\n label: 'Common',\n colors: [\n { value: '#ff0000' },\n { value: '#ff7f00' },\n { value: '#ffff00' },\n { value: '#00ff00' },\n { value: '#0000ff' },\n { value: '#4b0082' },\n { value: '#9400d3' },\n { value: '#ff1493' }\n ]\n }\n];\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n signal,\n inject,\n viewChild,\n ElementRef,\n effect,\n forwardRef,\n AfterViewInit\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { StudioConfigService } from '../../config';\nimport { classNames, withConfigDefault } from '../../utils';\nimport { ColorConverter } from '../../utils/color-converter';\nimport {\n ColorFormat,\n ColorValue,\n ColorPreset,\n ColorSwatchGroup,\n ColorPickerVariant,\n ColorPickerSize\n} from './color-picker.types';\nimport { DEFAULT_COLOR_PRESETS } from './default-presets';\n\n@Component({\n selector: 'studio-color-picker',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ColorPickerComponent),\n multi: true\n }\n ],\n host: {\n '[class]': 'hostClasses()',\n },\n templateUrl: './color-picker.component.html',\n styleUrl: './color-picker.component.scss'\n})\nexport class ColorPickerComponent implements ControlValueAccessor, AfterViewInit {\n private readonly configService = inject(StudioConfigService);\n private readonly pickerDefaults = computed(() => this.configService.config().components?.colorPicker);\n\n protected readonly colorAreaCanvas = viewChild<ElementRef<HTMLCanvasElement>>('colorArea');\n\n variantInput = input<ColorPickerVariant | undefined>(undefined, { alias: 'variant' });\n sizeInput = input<ColorPickerSize | undefined>(undefined, { alias: 'size' });\n\n variant = withConfigDefault(this.variantInput, computed(() => this.pickerDefaults()?.variant), 'inline');\n size = withConfigDefault(this.sizeInput, computed(() => this.pickerDefaults()?.size), 'md');\n\n format = input<ColorFormat>('hex');\n showAlpha = input<boolean>(false);\n showPresets = input<boolean>(true);\n showFormatToggle = input<boolean>(true);\n showCopyButton = input<boolean>(true);\n\n presets = input<ColorPreset[] | ColorSwatchGroup[]>();\n\n label = input<string | undefined>(undefined);\n hint = input<string | undefined>(undefined);\n required = input<boolean>(false);\n error = input<boolean>(false);\n errorMessage = input<string | undefined>(undefined);\n disabled = input<boolean>(false);\n readonly = input<boolean>(false);\n\n colorChange = output<string>();\n colorValueChange = output<ColorValue>();\n copied = output<string>();\n\n protected currentColor = signal<ColorValue>(this.createColorValue('#000000'));\n protected hue = signal(0);\n protected saturation = signal(100);\n protected lightness = signal(50);\n protected alpha = signal(1);\n protected currentFormat = signal<ColorFormat>('hex');\n\n protected generatedId = `studio-color-picker-${Math.random().toString(36).substr(2, 9)}`;\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n private isDragging = false;\n\n constructor() {\n effect(() => {\n this.currentFormat.set(this.format());\n });\n\n effect(() => {\n this.renderColorArea();\n });\n }\n\n ngAfterViewInit(): void {\n this.renderColorArea();\n }\n\n protected displayColor = computed(() => {\n const color = this.currentColor();\n return ColorConverter.format(color, this.currentFormat());\n });\n\n protected effectivePresets = computed(() => {\n const custom = this.presets();\n return custom && custom.length > 0 ? custom : DEFAULT_COLOR_PRESETS;\n });\n\n protected hostClasses = computed(() => classNames(\n 'studio-color-picker',\n `studio-color-picker--${this.variant()}`,\n `studio-color-picker--${this.size()}`,\n this.error() && 'studio-color-picker--error',\n this.disabled() && 'studio-color-picker--disabled'\n ));\n\n writeValue(value: string): void {\n if (!value) return;\n\n const colorValue = ColorConverter.parse(value);\n if (colorValue) {\n this.currentColor.set(colorValue);\n this.hue.set(colorValue.hsl.h);\n this.saturation.set(colorValue.hsl.s);\n this.lightness.set(colorValue.hsl.l);\n this.alpha.set(colorValue.alpha);\n }\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {}\n\n protected onHueChange(event: Event): void {\n const value = +(event.target as HTMLInputElement).value;\n this.hue.set(value);\n this.updateColor();\n }\n\n protected onAlphaChange(event: Event): void {\n const value = +(event.target as HTMLInputElement).value;\n this.alpha.set(value / 100);\n this.updateColor();\n }\n\n protected onColorAreaMouseDown(event: MouseEvent): void {\n if (this.disabled() || this.readonly()) return;\n this.isDragging = true;\n this.updateColorArea(event);\n\n const onMouseMove = (e: MouseEvent) => {\n if (this.isDragging) {\n this.updateColorArea(e);\n }\n };\n\n const onMouseUp = () => {\n this.isDragging = false;\n document.removeEventListener('mousemove', onMouseMove);\n document.removeEventListener('mouseup', onMouseUp);\n };\n\n document.addEventListener('mousemove', onMouseMove);\n document.addEventListener('mouseup', onMouseUp);\n }\n\n private updateColorArea(event: MouseEvent): void {\n const canvas = this.colorAreaCanvas()?.nativeElement;\n if (!canvas) return;\n\n const rect = canvas.getBoundingClientRect();\n const x = Math.max(0, Math.min(event.clientX - rect.left, rect.width));\n const y = Math.max(0, Math.min(event.clientY - rect.top, rect.height));\n\n this.saturation.set((x / rect.width) * 100);\n this.lightness.set(100 - (y / rect.height) * 100);\n this.updateColor();\n }\n\n private updateColor(): void {\n const h = this.hue();\n const s = this.saturation();\n const l = this.lightness();\n\n const rgb = ColorConverter.hslToRgb(h, s, l);\n const hex = ColorConverter.rgbToHex(rgb.r, rgb.g, rgb.b);\n\n const colorValue: ColorValue = {\n hex,\n rgb,\n hsl: { h, s, l },\n alpha: this.alpha()\n };\n\n this.currentColor.set(colorValue);\n\n const formatted = ColorConverter.format(colorValue, this.currentFormat());\n this.onChange(formatted);\n this.colorChange.emit(formatted);\n this.colorValueChange.emit(colorValue);\n }\n\n private renderColorArea(): void {\n const canvas = this.colorAreaCanvas()?.nativeElement;\n if (!canvas) return;\n\n const ctx = canvas.getContext('2d');\n if (!ctx) return;\n\n const width = canvas.width;\n const height = canvas.height;\n const hue = this.hue();\n\n const horizGradient = ctx.createLinearGradient(0, 0, width, 0);\n horizGradient.addColorStop(0, 'white');\n horizGradient.addColorStop(1, `hsl(${hue}, 100%, 50%)`);\n ctx.fillStyle = horizGradient;\n ctx.fillRect(0, 0, width, height);\n\n const vertGradient = ctx.createLinearGradient(0, 0, 0, height);\n vertGradient.addColorStop(0, 'transparent');\n vertGradient.addColorStop(1, 'black');\n ctx.fillStyle = vertGradient;\n ctx.fillRect(0, 0, width, height);\n }\n\n protected toggleFormat(): void {\n const formats: ColorFormat[] = ['hex', 'rgb', 'hsl'];\n const current = this.currentFormat();\n const index = formats.indexOf(current);\n const next = formats[(index + 1) % formats.length];\n this.currentFormat.set(next);\n }\n\n protected async copyColor(): Promise<void> {\n const color = this.displayColor();\n\n try {\n await navigator.clipboard.writeText(color);\n this.copied.emit(color);\n } catch (error) {\n console.error('Copy failed:', error);\n }\n }\n\n protected selectPreset(preset: ColorPreset): void {\n this.writeValue(preset.value);\n this.updateColor();\n }\n\n protected isPresetGroup(item: any): item is ColorSwatchGroup {\n return item && 'colors' in item && Array.isArray(item.colors);\n }\n\n private createColorValue(hex: string): ColorValue {\n const rgb = ColorConverter.hexToRgb(hex) || { r: 0, g: 0, b: 0 };\n const hsl = ColorConverter.rgbToHsl(rgb.r, rgb.g, rgb.b);\n\n return {\n hex,\n rgb,\n hsl,\n alpha: 1\n };\n }\n}\n","@if (label()) {\n <label [for]=\"generatedId\" class=\"studio-color-picker__label\">\n {{ label() }}\n @if (required()) {\n <span class=\"studio-color-picker__required\">*</span>\n }\n </label>\n}\n\n<div class=\"studio-color-picker__picker\">\n <div class=\"studio-color-picker__preview\">\n <div\n class=\"studio-color-picker__preview-color\"\n [style.background-color]=\"displayColor()\"\n ></div>\n <div class=\"studio-color-picker__preview-info\">\n <span class=\"studio-color-picker__preview-value\">{{ displayColor() }}</span>\n @if (showFormatToggle()) {\n <button\n type=\"button\"\n class=\"studio-color-picker__format-btn\"\n (click)=\"toggleFormat()\"\n [disabled]=\"disabled() || readonly()\"\n >\n {{ currentFormat().toUpperCase() }}\n </button>\n }\n </div>\n @if (showCopyButton()) {\n <button\n type=\"button\"\n class=\"studio-color-picker__copy-btn\"\n (click)=\"copyColor()\"\n [disabled]=\"disabled() || readonly()\"\n aria-label=\"Copy color\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" ry=\"2\"></rect>\n <path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"></path>\n </svg>\n </button>\n }\n </div>\n\n <div class=\"studio-color-picker__area\">\n <canvas\n #colorArea\n class=\"studio-color-picker__canvas\"\n width=\"280\"\n height=\"180\"\n (mousedown)=\"onColorAreaMouseDown($event)\"\n ></canvas>\n <div\n class=\"studio-color-picker__cursor\"\n [style.left.%]=\"saturation()\"\n [style.top.%]=\"100 - lightness()\"\n ></div>\n </div>\n\n <div class=\"studio-color-picker__sliders\">\n <div class=\"studio-color-picker__slider\">\n <div class=\"studio-color-picker__slider-label\">Hue</div>\n <input\n type=\"range\"\n class=\"studio-color-picker__hue-slider\"\n min=\"0\"\n max=\"360\"\n [value]=\"hue()\"\n (input)=\"onHueChange($event)\"\n [disabled]=\"disabled() || readonly()\"\n aria-label=\"Hue\"\n />\n </div>\n\n @if (showAlpha()) {\n <div class=\"studio-color-picker__slider\">\n <div class=\"studio-color-picker__slider-label\">Opacity</div>\n <input\n type=\"range\"\n class=\"studio-color-picker__alpha-slider\"\n min=\"0\"\n max=\"100\"\n [value]=\"alpha() * 100\"\n (input)=\"onAlphaChange($event)\"\n [disabled]=\"disabled() || readonly()\"\n aria-label=\"Opacity\"\n />\n <span class=\"studio-color-picker__alpha-value\">{{ (alpha() * 100).toFixed(0) }}%</span>\n </div>\n }\n </div>\n\n @if (showPresets() && effectivePresets().length > 0) {\n <div class=\"studio-color-picker__presets\">\n @for (preset of effectivePresets(); track $index) {\n @if (isPresetGroup(preset)) {\n <div class=\"studio-color-picker__preset-group\">\n <div class=\"studio-color-picker__preset-group-label\">{{ preset.label }}</div>\n <div class=\"studio-color-picker__preset-swatches\">\n @for (color of preset.colors; track color.value) {\n <button\n type=\"button\"\n class=\"studio-color-picker__preset-swatch\"\n [style.background-color]=\"color.value\"\n [title]=\"color.label || color.value\"\n (click)=\"selectPreset(color)\"\n [disabled]=\"disabled() || readonly()\"\n ></button>\n }\n </div>\n </div>\n } @else {\n <button\n type=\"button\"\n class=\"studio-color-picker__preset-swatch\"\n [style.background-color]=\"preset.value\"\n [title]=\"preset.label || preset.value\"\n (click)=\"selectPreset(preset)\"\n [disabled]=\"disabled() || readonly()\"\n ></button>\n }\n }\n </div>\n }\n</div>\n\n@if (hint() && !error()) {\n <span class=\"studio-color-picker__hint\">\n {{ hint() }}\n </span>\n}\n\n@if (error() && errorMessage()) {\n <span class=\"studio-color-picker__error\" role=\"alert\">\n {{ errorMessage() }}\n </span>\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n signal,\n inject,\n model,\n effect,\n contentChild,\n viewChild,\n ElementRef,\n TemplateRef,\n HostListener,\n DestroyRef,\n DOCUMENT,\n afterNextRender,\n Injector\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n computePosition,\n flip,\n shift,\n offset as floatingOffset,\n arrow as floatingArrow,\n autoUpdate,\n Placement\n} from '@floating-ui/dom';\nimport { IconComponent } from '../icon';\nimport { StudioConfigService } from '../../config';\nimport { classNames, withConfigDefault } from '../../utils';\nimport {\n PopoverPosition,\n PopoverTrigger,\n PopoverVariant,\n PopoverSize,\n PopoverAnimation,\n PopoverWidth\n} from './popover.types';\n\n@Component({\n selector: 'studio-popover',\n standalone: true,\n imports: [NgTemplateOutlet, IconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-visible]': 'visible()',\n },\n templateUrl: './popover.component.html',\n styleUrl: './popover.component.scss'\n})\nexport class PopoverComponent {\n private readonly document = inject(DOCUMENT);\n private readonly destroyRef = inject(DestroyRef);\n private readonly injector = inject(Injector);\n private readonly configService = inject(StudioConfigService);\n private readonly popoverDefaults = computed(() => this.configService.config().components?.popover);\n\n protected readonly headerTemplate = contentChild<TemplateRef<any>>('popoverHeader');\n protected readonly footerTemplate = contentChild<TemplateRef<any>>('popoverFooter');\n protected readonly contentTemplate = contentChild<TemplateRef<any>>('popoverContent');\n protected readonly triggerEl = viewChild<ElementRef<HTMLElement>>('popoverTrigger');\n protected readonly panelEl = viewChild<ElementRef<HTMLDivElement>>('popoverPanel');\n protected readonly arrowEl = viewChild<ElementRef<HTMLDivElement>>('popoverArrow');\n\n id = input<string>('studio-popover-' + Math.random().toString(36).substring(2, 11));\n visible = model<boolean>(false);\n disabled = input<boolean>(false);\n\n triggerInput = input<PopoverTrigger | undefined>(undefined, { alias: 'trigger' });\n openDelay = input<number>(0);\n closeDelay = input<number>(200);\n trigger = withConfigDefault(this.triggerInput, computed(() => this.popoverDefaults()?.trigger), 'click');\n\n positionInput = input<PopoverPosition | undefined>(undefined, { alias: 'position' });\n offset = input<number>(8);\n preventOverflow = input<boolean>(true);\n flipValue = input<boolean>(true);\n position = withConfigDefault(this.positionInput, computed(() => this.popoverDefaults()?.position), 'bottom');\n\n variantInput = input<PopoverVariant | undefined>(undefined, { alias: 'variant' });\n sizeInput = input<PopoverSize | undefined>(undefined, { alias: 'size' });\n width = input<PopoverWidth>('auto');\n minWidth = input<string | number | undefined>(undefined);\n maxWidth = input<string | number | undefined>(undefined);\n maxHeight = input<string | number | undefined>(undefined);\n padding = input<string | undefined>(undefined);\n variant = withConfigDefault(this.variantInput, computed(() => this.popoverDefaults()?.variant), 'default');\n size = withConfigDefault(this.sizeInput, computed(() => this.popoverDefaults()?.size), 'md');\n\n arrow = input<boolean>(true);\n arrowSize = input<number>(8);\n\n closeOnClickOutside = input<boolean>(true);\n closeOnEscape = input<boolean>(true);\n closeOnScroll = input<boolean>(false);\n\n showOverlay = input<boolean>(false);\n overlayOpacity = input<number>(0.5);\n\n animationInput = input<PopoverAnimation | undefined>(undefined, { alias: 'animation' });\n animationDuration = input<number>(200);\n animation = withConfigDefault(this.animationInput, computed(() => this.popoverDefaults()?.animation), 'fade');\n\n showHeader = input<boolean>(true);\n showFooter = input<boolean>(true);\n showCloseButton = input<boolean>(false);\n content = input<string | undefined>(undefined);\n\n zIndex = input<number>(1000);\n\n ariaLabel = input<string | undefined>(undefined);\n role = input<string>('dialog');\n\n visibleChange = output<boolean>();\n opened = output<void>();\n closed = output<void>();\n positionChanged = output<Placement>();\n\n private cleanup?: () => void;\n private openTimeout?: number;\n private closeTimeout?: number;\n private isHovered = signal(false);\n private isFocused = signal(false);\n\n protected hostClasses = computed(() => classNames(\n 'studio-popover',\n 'studio-popover--' + this.variant(),\n 'studio-popover--' + this.size(),\n 'studio-popover--' + this.animation(),\n this.visible() && 'studio-popover--visible',\n this.showOverlay() && 'studio-popover--with-overlay'\n ));\n\n constructor() {\n effect(() => {\n if (this.visible()) {\n this.handleOpen();\n } else {\n this.handleClose();\n }\n });\n\n afterNextRender(() => {\n this.setupPositioning();\n }, { injector: this.injector });\n\n this.destroyRef.onDestroy(() => {\n this.cleanup?.();\n this.clearTimeouts();\n });\n }\n\n private setupPositioning(): void {\n const triggerElement = this.triggerEl()?.nativeElement;\n const panelElement = this.panelEl()?.nativeElement;\n\n if (!triggerElement || !panelElement) return;\n\n this.cleanup?.();\n this.cleanup = autoUpdate(triggerElement, panelElement, () => {\n this.updatePosition();\n });\n }\n\n private async updatePosition(): Promise<void> {\n const triggerElement = this.triggerEl()?.nativeElement;\n const panelElement = this.panelEl()?.nativeElement;\n const arrowElement = this.arrowEl()?.nativeElement;\n\n if (!triggerElement || !panelElement || !this.visible()) return;\n\n const middleware = [\n floatingOffset(this.offset()),\n this.flipValue() && flip(),\n this.preventOverflow() && shift({ padding: 8 }),\n arrowElement && this.arrow() && floatingArrow({ element: arrowElement })\n ].filter(Boolean) as any[];\n\n const { x, y, placement, middlewareData } = await computePosition(\n triggerElement,\n panelElement,\n {\n placement: this.position() as Placement,\n middleware\n }\n );\n\n Object.assign(panelElement.style, {\n left: x + 'px',\n top: y + 'px',\n });\n\n if (arrowElement && middlewareData.arrow && this.arrow()) {\n const { x: arrowX, y: arrowY } = middlewareData.arrow;\n const staticSide = {\n top: 'bottom',\n right: 'left',\n bottom: 'top',\n left: 'right',\n }[placement.split('-')[0]];\n\n Object.assign(arrowElement.style, {\n left: arrowX != null ? arrowX + 'px' : '',\n top: arrowY != null ? arrowY + 'px' : '',\n right: '',\n bottom: '',\n [staticSide as string]: '-' + (this.arrowSize() / 2) + 'px',\n });\n }\n\n this.positionChanged.emit(placement);\n }\n\n protected handleOpen(): void {\n if (this.closeOnScroll()) {\n this.document.addEventListener('scroll', this.handleScrollBind, true);\n }\n this.opened.emit();\n setTimeout(() => this.updatePosition(), 0);\n }\n\n protected handleClose(): void {\n if (this.closeOnScroll()) {\n this.document.removeEventListener('scroll', this.handleScrollBind, true);\n }\n this.closed.emit();\n }\n\n private handleScrollBind = this.handleScroll.bind(this);\n\n private handleScroll(): void {\n if (this.visible()) {\n this.close();\n }\n }\n\n public open(): void {\n if (this.disabled()) return;\n this.visible.set(true);\n this.visibleChange.emit(true);\n }\n\n public close(): void {\n this.visible.set(false);\n this.visibleChange.emit(false);\n }\n\n public toggle(): void {\n if (this.visible()) {\n this.close();\n } else {\n this.open();\n }\n }\n\n protected handleTriggerClick(): void {\n if (this.trigger() === 'click' || this.trigger() === 'manual') {\n this.toggle();\n }\n }\n\n protected handleTriggerMouseEnter(): void {\n if (this.trigger() === 'hover') {\n this.clearTimeouts();\n this.isHovered.set(true);\n this.openTimeout = window.setTimeout(() => {\n this.open();\n }, this.openDelay());\n }\n }\n\n protected handleTriggerMouseLeave(): void {\n if (this.trigger() === 'hover') {\n this.clearTimeouts();\n this.isHovered.set(false);\n this.closeTimeout = window.setTimeout(() => {\n if (!this.isHovered()) {\n this.close();\n }\n }, this.closeDelay());\n }\n }\n\n protected handlePanelMouseEnter(): void {\n if (this.trigger() === 'hover') {\n this.clearTimeouts();\n this.isHovered.set(true);\n }\n }\n\n protected handlePanelMouseLeave(): void {\n if (this.trigger() === 'hover') {\n this.isHovered.set(false);\n this.closeTimeout = window.setTimeout(() => {\n if (!this.isHovered()) {\n this.close();\n }\n }, this.closeDelay());\n }\n }\n\n protected handleTriggerFocus(): void {\n if (this.trigger() === 'focus') {\n this.isFocused.set(true);\n this.open();\n }\n }\n\n protected handleTriggerBlur(): void {\n if (this.trigger() === 'focus') {\n this.isFocused.set(false);\n setTimeout(() => {\n if (!this.isFocused()) {\n this.close();\n }\n }, 100);\n }\n }\n\n protected handleBackdropClick(): void {\n if (this.closeOnClickOutside()) {\n this.close();\n }\n }\n\n @HostListener('document:click', ['$event'])\n protected handleDocumentClick(event: MouseEvent): void {\n if (!this.visible() || !this.closeOnClickOutside()) return;\n\n const target = event.target as HTMLElement;\n const panel = this.panelEl()?.nativeElement;\n const trigger = this.triggerEl()?.nativeElement;\n\n if (panel && !panel.contains(target) && trigger && !trigger.contains(target)) {\n this.close();\n }\n }\n\n @HostListener('document:keydown.escape', ['$event'])\n protected handleEscapeKey(event: KeyboardEvent): void {\n if (this.visible() && this.closeOnEscape()) {\n event.preventDefault();\n this.close();\n }\n }\n\n private clearTimeouts(): void {\n if (this.openTimeout) {\n window.clearTimeout(this.openTimeout);\n this.openTimeout = undefined;\n }\n if (this.closeTimeout) {\n window.clearTimeout(this.closeTimeout);\n this.closeTimeout = undefined;\n }\n }\n}\n","@if (showOverlay() && visible()) {\n <div\n class=\"studio-popover__overlay\"\n [style.opacity]=\"overlayOpacity()\"\n [style.z-index]=\"zIndex()\"\n (click)=\"handleBackdropClick()\"\n ></div>\n}\n\n<div\n #popoverTrigger\n class=\"studio-popover__trigger\"\n (click)=\"handleTriggerClick()\"\n (mouseenter)=\"handleTriggerMouseEnter()\"\n (mouseleave)=\"handleTriggerMouseLeave()\"\n (focus)=\"handleTriggerFocus()\"\n (blur)=\"handleTriggerBlur()\"\n>\n <ng-content />\n</div>\n\n@if (visible()) {\n <div\n #popoverPanel\n class=\"studio-popover__panel\"\n [style.z-index]=\"zIndex() + 1\"\n [style.width]=\"width() === 'auto' ? 'auto' : width() === 'trigger' && triggerEl()?.nativeElement ? triggerEl()!.nativeElement.offsetWidth + 'px' : width()\"\n [style.min-width]=\"minWidth() ? (typeof minWidth() === 'number' ? minWidth() + 'px' : minWidth()) : undefined\"\n [style.max-width]=\"maxWidth() ? (typeof maxWidth() === 'number' ? maxWidth() + 'px' : maxWidth()) : undefined\"\n [style.max-height]=\"maxHeight() ? (typeof maxHeight() === 'number' ? maxHeight() + 'px' : maxHeight()) : undefined\"\n [style.padding]=\"padding()\"\n [attr.role]=\"role()\"\n [attr.aria-label]=\"ariaLabel()\"\n (mouseenter)=\"handlePanelMouseEnter()\"\n (mouseleave)=\"handlePanelMouseLeave()\"\n >\n @if (arrow()) {\n <div #popoverArrow class=\"studio-popover__arrow\" [style.width.px]=\"arrowSize()\" [style.height.px]=\"arrowSize()\"></div>\n }\n\n @if (showHeader() && (headerTemplate() || showCloseButton())) {\n <div class=\"studio-popover__header\">\n @if (headerTemplate()) {\n <ng-container *ngTemplateOutlet=\"headerTemplate()!\" />\n }\n \n @if (showCloseButton()) {\n <button\n type=\"button\"\n class=\"studio-popover__close\"\n (click)=\"close()\"\n aria-label=\"Close\"\n >\n <studio-icon name=\"x\" [size]=\"18\" />\n </button>\n }\n </div>\n }\n\n <div class=\"studio-popover__content\">\n @if (contentTemplate()) {\n <ng-container *ngTemplateOutlet=\"contentTemplate()!\" />\n } @else if (content()) {\n {{ content() }}\n } @else {\n <ng-content select=\"[popoverContent]\" />\n }\n </div>\n\n @if (showFooter() && footerTemplate()) {\n <div class=\"studio-popover__footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate()!\" />\n </div>\n }\n </div>\n}\n","import { Component, ChangeDetectionStrategy, input, output, computed, signal, inject, forwardRef, effect } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { PopoverComponent } from '../popover';\nimport { ColorPickerComponent } from '../color-picker';\nimport { ButtonComponent } from '../button';\nimport { StudioConfigService } from '../../config';\nimport { classNames } from '../../utils';\n\n@Component({\n selector: 'studio-color-picker-compact',\n standalone: true,\n imports: [FormsModule, PopoverComponent, ColorPickerComponent, ButtonComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ColorPickerCompactComponent),\n multi: true\n }\n ],\n host: {\n '[class]': 'hostClasses()',\n },\n template: `\n <studio-popover\n [trigger]=\"trigger()\"\n [position]=\"position()\"\n [width]=\"popoverWidth()\"\n [arrow]=\"showArrow()\"\n [closeOnClickOutside]=\"false\"\n [(visible)]=\"isOpen\"\n [showFooter]=\"showFooter()\"\n >\n <div\n class=\"color-picker-compact__trigger\"\n [class.color-picker-compact__trigger--disabled]=\"disabled()\"\n [style.width]=\"triggerSize()\"\n [style.height]=\"triggerSize()\"\n [style.border-radius]=\"triggerRadius()\"\n [style.background]=\"currentValue()\"\n [attr.aria-label]=\"ariaLabel() || 'Select color'\"\n [attr.role]=\"'button'\"\n [attr.tabindex]=\"disabled() ? -1 : 0\"\n >\n @if (showCurrentColor()) {\n <span class=\"color-picker-compact__color-text\">{{ currentValue() }}</span>\n }\n </div>\n\n <div popoverContent>\n <studio-color-picker\n [(ngModel)]=\"tempValue\"\n [format]=\"format()\"\n [showAlpha]=\"showAlpha()\"\n [showPresets]=\"showPresets()\"\n [showFormatToggle]=\"showFormatToggle()\"\n [showCopyButton]=\"showCopyButton()\"\n [presets]=\"presets()\"\n [disabled]=\"disabled()\"\n />\n </div>\n\n @if (showFooter()) {\n <ng-template #popoverFooter>\n <div class=\"color-picker-compact__footer\">\n <studio-button\n variant=\"outline\"\n size=\"sm\"\n (click)=\"handleCancel()\"\n [fullWidth]=\"true\"\n >\n {{ cancelLabel() }}\n </studio-button>\n <studio-button\n size=\"sm\"\n (click)=\"handleApply()\"\n [fullWidth]=\"true\"\n >\n {{ applyLabel() }}\n </studio-button>\n </div>\n </ng-template>\n }\n </studio-popover>\n `,\n styles: `\n :host {\n display: inline-block;\n }\n\n .color-picker-compact__trigger {\n position: relative;\n cursor: pointer;\n border: 2px solid var(--studio-border-primary);\n transition: all var(--studio-transition-fast);\n overflow: hidden;\n\n &:hover:not(.color-picker-compact__trigger--disabled) {\n border-color: var(--studio-border-secondary);\n transform: scale(1.05);\n }\n\n &:active:not(.color-picker-compact__trigger--disabled) {\n transform: scale(0.95);\n }\n\n &:focus-visible {\n outline: 2px solid var(--studio-primary);\n outline-offset: 2px;\n }\n\n &--disabled {\n cursor: not-allowed;\n opacity: 0.5;\n }\n }\n\n .color-picker-compact__color-text {\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n padding: 0.125rem 0.25rem;\n background: rgba(0, 0, 0, 0.6);\n color: white;\n font-size: 0.625rem;\n text-align: center;\n font-family: var(--studio-font-family-mono, monospace);\n }\n\n .color-picker-compact__footer {\n display: flex;\n gap: 0.75rem;\n padding: 1rem;\n }\n `\n})\nexport class ColorPickerCompactComponent implements ControlValueAccessor {\n private readonly configService = inject(StudioConfigService);\n\n trigger = input<'click' | 'hover'>('click');\n position = input<'top' | 'bottom' | 'left' | 'right' | 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end'>('bottom-start');\n popoverWidth = input<string>('280px');\n showArrow = input<boolean>(false);\n closeOnClickOutside = input<boolean>(true);\n\n triggerSize = input<string>('32px');\n triggerRadius = input<string>('var(--studio-radius-sm)');\n showCurrentColor = input<boolean>(false);\n\n format = input<'hex' | 'rgb' | 'hsl'>('hex');\n showAlpha = input<boolean>(false);\n showPresets = input<boolean>(true);\n showFormatToggle = input<boolean>(false);\n showCopyButton = input<boolean>(false);\n presets = input<any[] | undefined>(undefined);\n\n showFooter = input<boolean>(true);\n applyLabel = input<string>('OK');\n cancelLabel = input<string>('Отмена');\n\n disabled = input<boolean>(false);\n ariaLabel = input<string | undefined>(undefined);\n\n colorChange = output<string>();\n\n protected currentValue = signal<string>('#000000');\n protected tempValue = signal<string>('#000000');\n protected isOpen = signal<boolean>(false);\n\n protected hostClasses = computed(() => classNames(\n 'color-picker-compact',\n this.disabled() && 'color-picker-compact--disabled'\n ));\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor() {\n effect(() => {\n // Sync temp value when popover opens\n if (this.isOpen()) {\n this.tempValue.set(this.currentValue());\n }\n });\n }\n\n protected handleApply(): void {\n this.currentValue.set(this.tempValue());\n this.onChange(this.tempValue());\n this.colorChange.emit(this.tempValue());\n this.onTouched();\n this.isOpen.set(false);\n }\n\n protected handleCancel(): void {\n this.tempValue.set(this.currentValue());\n this.isOpen.set(false);\n }\n\n writeValue(value: string): void {\n if (value) {\n this.currentValue.set(value);\n this.tempValue.set(value);\n }\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {}\n}\n","import { Injectable, WritableSignal } from '@angular/core';\n\n/**\n * Service for programmatic control of Drawer components\n *\n * @example\n * ```typescript\n * // In component\n * private drawerService = inject(DrawerService);\n *\n * openSettings() {\n * this.drawerService.open('settings-drawer');\n * }\n * ```\n */\n@Injectable({ providedIn: 'root' })\nexport class DrawerService {\n private drawers = new Map<string, WritableSignal<boolean>>();\n\n /**\n * Register a drawer with the service\n * Called automatically by DrawerComponent\n */\n register(id: string, signal: WritableSignal<boolean>): void {\n this.drawers.set(id, signal);\n }\n\n /**\n * Unregister a drawer from the service\n * Called automatically on component destroy\n */\n unregister(id: string): void {\n this.drawers.delete(id);\n }\n\n /**\n * Open a drawer by ID\n */\n open(id: string): void {\n const drawer = this.drawers.get(id);\n if (drawer) {\n drawer.set(true);\n } else {\n console.warn(`[DrawerService] Drawer with id=\"${id}\" not found`);\n }\n }\n\n /**\n * Close a drawer by ID\n */\n close(id: string): void {\n const drawer = this.drawers.get(id);\n if (drawer) {\n drawer.set(false);\n } else {\n console.warn(`[DrawerService] Drawer with id=\"${id}\" not found`);\n }\n }\n\n /**\n * Toggle a drawer by ID\n */\n toggle(id: string): void {\n const drawer = this.drawers.get(id);\n if (drawer) {\n drawer.update(v => !v);\n } else {\n console.warn(`[DrawerService] Drawer with id=\"${id}\" not found`);\n }\n }\n\n /**\n * Close all registered drawers\n */\n closeAll(): void {\n this.drawers.forEach(signal => signal.set(false));\n }\n\n /**\n * Check if a drawer is open\n */\n isOpen(id: string): boolean {\n const drawer = this.drawers.get(id);\n return drawer ? drawer() : false;\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n signal,\n inject,\n model,\n effect,\n contentChild,\n viewChild,\n ElementRef,\n TemplateRef,\n HostListener,\n DestroyRef,\n DOCUMENT,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { IconComponent } from '../icon';\nimport { StudioConfigService } from '../../config';\nimport { classNames, withConfigDefault } from '../../utils';\nimport { DrawerService } from './drawer.service';\nimport {\n DrawerPosition,\n DrawerSize,\n DrawerRadius,\n DrawerShadowSize,\n DrawerRole,\n DrawerAnimationEasing,\n DrawerCloseButtonPosition\n} from './drawer.types';\n\n@Component({\n selector: 'studio-drawer',\n standalone: true,\n imports: [NgTemplateOutlet, IconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-visible]': 'visible()',\n },\n templateUrl: './drawer.component.html',\n styleUrl: './drawer.component.scss'\n})\nexport class DrawerComponent {\n private readonly document = inject(DOCUMENT);\n private readonly destroyRef = inject(DestroyRef);\n private readonly configService = inject(StudioConfigService);\n private readonly drawerService = inject(DrawerService);\n private readonly drawerDefaults = computed(() => this.configService.config().components?.drawer);\n\n // Template references\n protected readonly headerTemplate = contentChild<TemplateRef<any>>('headerTemplate');\n protected readonly footerTemplate = contentChild<TemplateRef<any>>('footerTemplate');\n protected readonly panelEl = viewChild<ElementRef<HTMLDivElement>>('drawerPanel');\n\n // Core\n id = input<string>(`studio-drawer-${Math.random().toString(36).substr(2, 9)}`);\n visible = model<boolean>(false);\n\n // Position & Size\n positionInput = input<DrawerPosition | undefined>(undefined, { alias: 'position' });\n sizeInput = input<DrawerSize | undefined>(undefined, { alias: 'size' });\n customWidth = input<string | undefined>(undefined);\n customHeight = input<string | undefined>(undefined);\n\n position = withConfigDefault(this.positionInput, computed(() => this.drawerDefaults()?.position), 'right');\n size = withConfigDefault(this.sizeInput, computed(() => this.drawerDefaults()?.size), 'md');\n\n // Behavior\n modalInput = input<boolean | undefined>(undefined, { alias: 'modal' });\n closeOnEscapeInput = input<boolean | undefined>(undefined, { alias: 'closeOnEscape' });\n closeOnBackdropClickInput = input<boolean | undefined>(undefined, { alias: 'closeOnBackdropClick' });\n blockScrollInput = input<boolean | undefined>(undefined, { alias: 'blockScroll' });\n\n modal = withConfigDefault(this.modalInput, computed(() => this.drawerDefaults()?.modal), true);\n closeOnEscape = withConfigDefault(this.closeOnEscapeInput, computed(() => this.drawerDefaults()?.closeOnEscape), true);\n closeOnBackdropClick = withConfigDefault(this.closeOnBackdropClickInput, computed(() => this.drawerDefaults()?.closeOnBackdropClick), true);\n blockScroll = withConfigDefault(this.blockScrollInput, computed(() => this.drawerDefaults()?.blockScroll), true);\n\n // UI Elements\n header = input<string | undefined>(undefined);\n showHeaderInput = input<boolean | undefined>(undefined, { alias: 'showHeader' });\n showCloseButtonInput = input<boolean | undefined>(undefined, { alias: 'showCloseButton' });\n closeButtonPositionInput = input<DrawerCloseButtonPosition | undefined>(undefined, { alias: 'closeButtonPosition' });\n showFooter = input<boolean>(true);\n\n showHeader = withConfigDefault(this.showHeaderInput, computed(() => this.drawerDefaults()?.showHeader ?? true), true);\n showCloseButton = withConfigDefault(this.showCloseButtonInput, computed(() => this.drawerDefaults()?.showCloseButton), true);\n closeButtonPosition = withConfigDefault(this.closeButtonPositionInput, computed(() => this.drawerDefaults()?.closeButtonPosition), 'right');\n\n // Swipe Gestures\n swipeToCloseInput = input<boolean | undefined>(undefined, { alias: 'swipeToClose' });\n swipeThresholdInput = input<number | undefined>(undefined, { alias: 'swipeThreshold' });\n\n swipeToClose = withConfigDefault(this.swipeToCloseInput, computed(() => this.drawerDefaults()?.swipeToClose), true);\n swipeThreshold = withConfigDefault(this.swipeThresholdInput, computed(() => this.drawerDefaults()?.swipeThreshold), 50);\n\n // Animation\n animationDurationInput = input<number | undefined>(undefined, { alias: 'animationDuration' });\n animationEasingInput = input<DrawerAnimationEasing | undefined>(undefined, { alias: 'animationEasing' });\n disableAnimationInput = input<boolean | undefined>(undefined, { alias: 'disableAnimation' });\n\n animationDuration = withConfigDefault(this.animationDurationInput, computed(() => this.drawerDefaults()?.animationDuration), 300);\n animationEasing = withConfigDefault(this.animationEasingInput, computed(() => this.drawerDefaults()?.animationEasing), 'ease-out');\n disableAnimation = withConfigDefault(this.disableAnimationInput, computed(() => this.drawerDefaults()?.disableAnimation), false);\n\n // Styling\n radiusInput = input<DrawerRadius | undefined>(undefined, { alias: 'radius' });\n shadowInput = input<boolean | undefined>(undefined, { alias: 'shadow' });\n shadowSizeInput = input<DrawerShadowSize | undefined>(undefined, { alias: 'shadowSize' });\n\n radius = withConfigDefault(this.radiusInput, computed(() => this.drawerDefaults()?.radius), 'none');\n shadow = withConfigDefault(this.shadowInput, computed(() => this.drawerDefaults()?.shadow), true);\n shadowSize = withConfigDefault(this.shadowSizeInput, computed(() => this.drawerDefaults()?.shadowSize), 'lg');\n\n // Accessibility\n ariaLabel = input<string | undefined>(undefined);\n ariaLabelledBy = input<string | undefined>(undefined);\n ariaDescribedBy = input<string | undefined>(undefined);\n autoFocusInput = input<boolean | undefined>(undefined, { alias: 'autoFocus' });\n restoreFocusInput = input<boolean | undefined>(undefined, { alias: 'restoreFocus' });\n roleInput = input<DrawerRole | undefined>(undefined, { alias: 'role' });\n\n autoFocus = withConfigDefault(this.autoFocusInput, computed(() => this.drawerDefaults()?.autoFocus), true);\n restoreFocus = withConfigDefault(this.restoreFocusInput, computed(() => this.drawerDefaults()?.restoreFocus), true);\n role = withConfigDefault(this.roleInput, computed(() => this.drawerDefaults()?.role), 'dialog');\n\n // Outputs\n visibleChange = output<boolean>();\n opened = output<void>();\n closed = output<void>();\n backdropClick = output<void>();\n\n // Internal state\n private previousActiveElement?: HTMLElement;\n private touchStartX = 0;\n private touchStartY = 0;\n private isDragging = signal(false);\n private scrollbarWidth = 0;\n\n protected hostClasses = computed(() => classNames(\n 'studio-drawer',\n `studio-drawer--${this.position()}`,\n `studio-drawer--${this.size()}`,\n this.visible() && 'studio-drawer--visible',\n this.modal() && 'studio-drawer--modal',\n this.shadow() && `studio-drawer--shadow-${this.shadowSize()}`,\n this.isDragging() && 'studio-drawer--dragging',\n (this.position() === 'left' || this.position() === 'right') && `studio-drawer--radius-${this.radius()}`\n ));\n\n constructor() {\n // Register with DrawerService\n effect(() => {\n this.drawerService.register(this.id(), this.visible);\n });\n\n // Handle visibility changes\n effect(() => {\n if (this.visible()) {\n this.handleOpen();\n } else {\n this.handleClose();\n }\n });\n\n // Cleanup on destroy\n this.destroyRef.onDestroy(() => {\n this.drawerService.unregister(this.id());\n this.unlockBodyScroll();\n });\n }\n\n protected handleOpen(): void {\n if (this.blockScroll() && this.modal()) {\n this.lockBodyScroll();\n }\n\n if (this.autoFocus()) {\n this.setupFocusTrap();\n }\n\n this.opened.emit();\n }\n\n protected handleClose(): void {\n if (this.blockScroll() && this.modal()) {\n this.unlockBodyScroll();\n }\n\n if (this.restoreFocus()) {\n this.restorePreviousFocus();\n }\n\n this.closed.emit();\n }\n\n public open(): void {\n this.visible.set(true);\n this.visibleChange.emit(true);\n }\n\n public close(): void {\n this.visible.set(false);\n this.visibleChange.emit(false);\n }\n\n public toggle(): void {\n this.visible.update(v => !v);\n this.visibleChange.emit(this.visible());\n }\n\n protected handleBackdropClick(): void {\n this.backdropClick.emit();\n if (this.closeOnBackdropClick()) {\n this.close();\n }\n }\n\n @HostListener('document:keydown.escape', ['$event'])\n protected handleEscapeKey(event: KeyboardEvent): void {\n if (this.visible() && this.closeOnEscape()) {\n event.preventDefault();\n this.close();\n }\n }\n\n // Touch gesture handling\n @HostListener('touchstart', ['$event'])\n protected onTouchStart(event: TouchEvent): void {\n if (!this.swipeToClose() || !this.visible()) return;\n\n const target = event.target as HTMLElement;\n const panel = this.panelEl()?.nativeElement;\n\n // Only start drag if touching the panel\n if (!panel?.contains(target)) return;\n\n this.touchStartX = event.touches[0].clientX;\n this.touchStartY = event.touches[0].clientY;\n this.isDragging.set(true);\n }\n\n @HostListener('touchmove', ['$event'])\n protected onTouchMove(event: TouchEvent): void {\n if (!this.isDragging()) return;\n\n const deltaX = event.touches[0].clientX - this.touchStartX;\n const deltaY = event.touches[0].clientY - this.touchStartY;\n const pos = this.position();\n\n // Apply drag transform based on position\n let shouldAllowDrag = false;\n\n if (pos === 'right' && deltaX > 0) {\n shouldAllowDrag = true;\n this.applyDragTransform(deltaX, 0);\n } else if (pos === 'left' && deltaX < 0) {\n shouldAllowDrag = true;\n this.applyDragTransform(deltaX, 0);\n } else if (pos === 'bottom' && deltaY > 0) {\n shouldAllowDrag = true;\n this.applyDragTransform(0, deltaY);\n } else if (pos === 'top' && deltaY < 0) {\n shouldAllowDrag = true;\n this.applyDragTransform(0, deltaY);\n }\n\n // Prevent scroll while dragging\n if (shouldAllowDrag && (Math.abs(deltaX) > 10 || Math.abs(deltaY) > 10)) {\n event.preventDefault();\n }\n }\n\n @HostListener('touchend', ['$event'])\n protected onTouchEnd(event: TouchEvent): void {\n if (!this.isDragging()) return;\n\n const deltaX = event.changedTouches[0].clientX - this.touchStartX;\n const deltaY = event.changedTouches[0].clientY - this.touchStartY;\n const threshold = this.swipeThreshold();\n const pos = this.position();\n\n let shouldClose = false;\n\n if (pos === 'right' && deltaX > threshold) shouldClose = true;\n if (pos === 'left' && deltaX < -threshold) shouldClose = true;\n if (pos === 'bottom' && deltaY > threshold) shouldClose = true;\n if (pos === 'top' && deltaY < -threshold) shouldClose = true;\n\n if (shouldClose) {\n this.close();\n } else {\n this.resetTransform();\n }\n\n this.isDragging.set(false);\n }\n\n private applyDragTransform(deltaX: number, deltaY: number): void {\n const panel = this.panelEl()?.nativeElement;\n if (!panel) return;\n\n const pos = this.position();\n\n if (pos === 'right') {\n const translateX = Math.max(0, deltaX);\n panel.style.transform = `translateX(${translateX}px)`;\n panel.style.transition = 'none';\n } else if (pos === 'left') {\n const translateX = Math.min(0, deltaX);\n panel.style.transform = `translateX(${translateX}px)`;\n panel.style.transition = 'none';\n } else if (pos === 'bottom') {\n const translateY = Math.max(0, deltaY);\n panel.style.transform = `translateY(${translateY}px)`;\n panel.style.transition = 'none';\n } else if (pos === 'top') {\n const translateY = Math.min(0, deltaY);\n panel.style.transform = `translateY(${translateY}px)`;\n panel.style.transition = 'none';\n }\n }\n\n private resetTransform(): void {\n const panel = this.panelEl()?.nativeElement;\n if (!panel) return;\n\n panel.style.transition = '';\n panel.style.transform = '';\n }\n\n // Body scroll lock\n private lockBodyScroll(): void {\n this.scrollbarWidth = window.innerWidth - this.document.documentElement.clientWidth;\n this.document.body.style.overflow = 'hidden';\n this.document.body.style.paddingRight = `${this.scrollbarWidth}px`;\n }\n\n private unlockBodyScroll(): void {\n this.document.body.style.overflow = '';\n this.document.body.style.paddingRight = '';\n }\n\n // Focus management\n private setupFocusTrap(): void {\n this.previousActiveElement = this.document.activeElement as HTMLElement;\n\n // Move focus to drawer after render\n setTimeout(() => {\n const panel = this.panelEl()?.nativeElement;\n if (!panel) return;\n\n const firstFocusable = this.getFirstFocusableElement(panel);\n if (firstFocusable) {\n firstFocusable.focus();\n } else {\n panel.focus();\n }\n }, 0);\n }\n\n private restorePreviousFocus(): void {\n if (this.previousActiveElement) {\n this.previousActiveElement.focus();\n this.previousActiveElement = undefined;\n }\n }\n\n private getFirstFocusableElement(container: HTMLElement): HTMLElement | null {\n const focusableSelectors = [\n 'a[href]',\n 'button:not([disabled])',\n 'textarea:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])'\n ].join(', ');\n\n return container.querySelector<HTMLElement>(focusableSelectors);\n }\n\n @HostListener('keydown', ['$event'])\n protected handleKeydown(event: KeyboardEvent): void {\n if (!this.visible()) return;\n\n if (event.key === 'Tab') {\n this.trapFocus(event);\n }\n }\n\n private trapFocus(event: KeyboardEvent): void {\n const panel = this.panelEl()?.nativeElement;\n if (!panel) return;\n\n const focusableElements = panel.querySelectorAll<HTMLElement>([\n 'a[href]',\n 'button:not([disabled])',\n 'textarea:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])'\n ].join(', '));\n\n const firstElement = focusableElements[0];\n const lastElement = focusableElements[focusableElements.length - 1];\n\n if (event.shiftKey) {\n if (this.document.activeElement === firstElement) {\n event.preventDefault();\n lastElement?.focus();\n }\n } else {\n if (this.document.activeElement === lastElement) {\n event.preventDefault();\n firstElement?.focus();\n }\n }\n }\n}\n","@if (visible()) {\n <!-- Backdrop -->\n @if (modal()) {\n <div\n class=\"studio-drawer__backdrop\"\n (click)=\"handleBackdropClick()\">\n </div>\n }\n\n <!-- Drawer Panel -->\n <div\n #drawerPanel\n class=\"studio-drawer__panel\"\n [attr.role]=\"role()\"\n [attr.aria-modal]=\"modal()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-labelledby]=\"ariaLabelledBy()\"\n [attr.aria-describedby]=\"ariaDescribedBy()\"\n [attr.tabindex]=\"-1\"\n [style.width]=\"customWidth()\"\n [style.height]=\"customHeight()\"\n [style.--drawer-animation-duration]=\"animationDuration() + 'ms'\"\n [style.--drawer-animation-timing]=\"animationEasing()\">\n\n <!-- Header -->\n @if (showHeader() && (headerTemplate() || header() || showCloseButton())) {\n <div class=\"studio-drawer__header\">\n @if (headerTemplate(); as tmpl) {\n <!-- Custom template -->\n <ng-container *ngTemplateOutlet=\"tmpl\" />\n } @else if (header()) {\n <!-- Simple string header -->\n <div class=\"studio-drawer__header-content\">\n @if (showCloseButton() && closeButtonPosition() === 'left') {\n <button\n type=\"button\"\n class=\"studio-drawer__close\"\n (click)=\"close()\"\n aria-label=\"Close drawer\">\n <studio-icon name=\"x\" [size]=\"20\" />\n </button>\n }\n\n <h2 class=\"studio-drawer__title\">{{ header() }}</h2>\n\n @if (showCloseButton() && closeButtonPosition() === 'right') {\n <button\n type=\"button\"\n class=\"studio-drawer__close\"\n (click)=\"close()\"\n aria-label=\"Close drawer\">\n <studio-icon name=\"x\" [size]=\"20\" />\n </button>\n }\n </div>\n } @else {\n <!-- Named slot fallback -->\n <div class=\"studio-drawer__header-content\">\n @if (showCloseButton() && closeButtonPosition() === 'left') {\n <button\n type=\"button\"\n class=\"studio-drawer__close\"\n (click)=\"close()\"\n aria-label=\"Close drawer\">\n <studio-icon name=\"x\" [size]=\"20\" />\n </button>\n }\n\n <ng-content select=\"[drawerHeader]\" />\n\n @if (showCloseButton() && closeButtonPosition() === 'right') {\n <button\n type=\"button\"\n class=\"studio-drawer__close\"\n (click)=\"close()\"\n aria-label=\"Close drawer\">\n <studio-icon name=\"x\" [size]=\"20\" />\n </button>\n }\n </div>\n }\n </div>\n }\n\n <!-- Content -->\n <div class=\"studio-drawer__content\">\n <ng-content />\n </div>\n\n <!-- Footer -->\n @if (showFooter() && footerTemplate()) {\n <div class=\"studio-drawer__footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate()!\" />\n </div>\n } @else if (showFooter()) {\n <div class=\"studio-drawer__footer\">\n <ng-content select=\"[drawerFooter]\" />\n </div>\n }\n </div>\n}\n","import { Component, ChangeDetectionStrategy, input, output, computed, signal } from '@angular/core';\nimport { PopoverComponent } from '../popover';\nimport { IconComponent } from '../icon';\nimport { classNames } from '../../utils';\nimport { DropdownItem, DropdownPosition } from './dropdown.types';\n\n@Component({\n selector: 'studio-dropdown',\n standalone: true,\n imports: [PopoverComponent, IconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n },\n template: `\n <studio-popover\n [trigger]=\"trigger()\"\n [position]=\"position()\"\n [width]=\"width()\"\n [minWidth]=\"minWidth()\"\n [arrow]=\"false\"\n [closeOnClickOutside]=\"true\"\n [(visible)]=\"isOpen\"\n >\n <ng-content />\n \n <div popoverContent style=\"padding: 0.25rem;\">\n @for (item of items(); track item.id) {\n @if (item.divider) {\n <div class=\"dropdown__divider\"></div>\n } @else {\n <button\n type=\"button\"\n class=\"dropdown__item\"\n [class.dropdown__item--disabled]=\"item.disabled\"\n [class.dropdown__item--danger]=\"item.danger\"\n [disabled]=\"item.disabled\"\n (click)=\"handleItemClick(item)\"\n >\n @if (item.icon) {\n <studio-icon [name]=\"item.icon\" [size]=\"16\" class=\"dropdown__icon\" />\n }\n <span class=\"dropdown__label\">{{ item.label }}</span>\n @if (item.shortcut) {\n <span class=\"dropdown__shortcut\">{{ item.shortcut }}</span>\n }\n </button>\n }\n }\n </div>\n </studio-popover>\n `,\n styles: `\n :host {\n display: inline-block;\n }\n\n .dropdown__item {\n width: 100%;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.5rem 0.75rem;\n background: none;\n border: none;\n border-radius: var(--studio-radius-sm);\n color: var(--studio-text-primary);\n font-size: 0.875rem;\n cursor: pointer;\n transition: all var(--studio-transition-fast);\n text-align: left;\n\n &:hover:not(:disabled) {\n background: var(--studio-bg-secondary);\n }\n\n &:active:not(:disabled) {\n transform: scale(0.98);\n }\n\n &--disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n &--danger {\n color: var(--studio-error);\n }\n }\n\n .dropdown__icon {\n flex-shrink: 0;\n color: var(--studio-text-secondary);\n }\n\n .dropdown__label {\n flex: 1;\n }\n\n .dropdown__shortcut {\n font-size: 0.75rem;\n color: var(--studio-text-tertiary);\n font-family: var(--studio-font-family-mono, monospace);\n }\n\n .dropdown__divider {\n height: 1px;\n background: var(--studio-border-primary);\n margin: 0.25rem 0;\n }\n `\n})\nexport class DropdownComponent {\n items = input.required<DropdownItem[]>();\n trigger = input<'click' | 'hover'>('click');\n position = input<DropdownPosition>('bottom-start');\n width = input<string>('auto');\n minWidth = input<string>('200px');\n\n itemClick = output<DropdownItem>();\n\n protected isOpen = signal<boolean>(false);\n protected hostClasses = computed(() => classNames('studio-dropdown'));\n\n protected handleItemClick(item: DropdownItem): void {\n if (item.disabled) return;\n \n item.onClick?.();\n this.itemClick.emit(item);\n this.isOpen.set(false);\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n signal,\n inject,\n viewChild,\n ElementRef,\n effect,\n forwardRef\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { IconComponent } from '../icon';\nimport { StudioConfigService } from '../../config';\nimport { classNames, withConfigDefault } from '../../utils';\n\nexport type InputType = 'text' | 'email' | 'tel' | 'url' | 'password' | 'number' | 'search' | 'date' | 'time';\nexport type InputMode = 'none' | 'text' | 'decimal' | 'numeric' | 'tel' | 'search' | 'email' | 'url';\n\n/**\n * Input component with form control support, variants, and accessibility\n *\n * @example\n * <studio-input [(ngModel)]=\"email\" label=\"Email\" type=\"email\" />\n * <studio-input [formControl]=\"passwordControl\" type=\"password\" [showPasswordToggle]=\"true\" />\n */\n@Component({\n selector: 'studio-input',\n standalone: true,\n imports: [IconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InputComponent),\n multi: true\n }\n ],\n host: {\n '[class]': 'hostClasses()',\n },\n templateUrl: './input.component.html',\n styleUrl: './input.component.scss'\n})\nexport class InputComponent implements ControlValueAccessor {\n private readonly configService = inject(StudioConfigService);\n private readonly inputDefaults = computed(() => this.configService.config().components?.input);\n\n protected readonly inputEl = viewChild<ElementRef<HTMLInputElement>>('inputElement');\n\n variantInput = input<'outline' | 'filled' | 'underline' | undefined>(undefined, { alias: 'variant' });\n sizeInput = input<'sm' | 'md' | 'lg' | undefined>(undefined, { alias: 'size' });\n radiusInput = input<'none' | 'sm' | 'md' | 'lg' | 'full' | undefined>(undefined, { alias: 'radius' });\n\n variant = withConfigDefault(this.variantInput, computed(() => this.inputDefaults()?.variant), 'outline');\n size = withConfigDefault(this.sizeInput, computed(() => this.inputDefaults()?.size), 'md');\n radius = withConfigDefault(this.radiusInput, computed(() => this.inputDefaults()?.radius), 'md');\n\n disabled = input<boolean>(false);\n readonly = input<boolean>(false);\n loading = input<boolean>(false);\n\n type = input<InputType>('text');\n inputmode = input<InputMode | undefined>(undefined);\n autocomplete = input<string | undefined>(undefined);\n placeholder = input<string | undefined>(undefined);\n maxLength = input<number | undefined>(undefined);\n minLength = input<number | undefined>(undefined);\n min = input<number | string | undefined>(undefined);\n max = input<number | string | undefined>(undefined);\n step = input<number | undefined>(undefined);\n pattern = input<string | undefined>(undefined);\n\n label = input<string | undefined>(undefined);\n floatingLabel = input<boolean>(false);\n hint = input<string | undefined>(undefined);\n\n required = input<boolean>(false);\n error = input<boolean>(false);\n errorMessage = input<string | undefined>(undefined);\n\n prefixIcon = input<string | undefined>(undefined);\n suffixIcon = input<string | undefined>(undefined);\n clearable = input<boolean>(false);\n showPasswordToggle = input<boolean>(false);\n\n fullWidth = input<boolean>(false);\n autoFocus = input<boolean>(false);\n name = input<string | undefined>(undefined);\n id = input<string | undefined>(undefined);\n ariaLabel = input<string | undefined>(undefined);\n\n valueChange = output<string | number>();\n focused = output<FocusEvent>();\n blurred = output<FocusEvent>();\n cleared = output<void>();\n entered = output<KeyboardEvent>();\n\n protected value = signal<string | number>('');\n protected isPasswordVisible = signal(false);\n protected isFocused = signal(false);\n protected isTouched = signal(false);\n protected generatedId = `studio-input-${Math.random().toString(36).substr(2, 9)}`;\n\n private onChange: (value: string | number) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor() {\n effect(() => {\n if (this.autoFocus() && this.inputEl()) {\n setTimeout(() => this.inputEl()?.nativeElement.focus(), 0);\n }\n });\n }\n\n writeValue(value: string | number): void {\n this.value.set(value ?? '');\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 }\n\n protected computedType = computed(() => {\n if (this.type() === 'password' && this.isPasswordVisible()) {\n return 'text';\n }\n return this.type();\n });\n\n protected computedPlaceholder = computed(() => {\n // Don't show placeholder when using floating label\n if (this.floatingLabel()) {\n return '';\n }\n return this.placeholder();\n });\n\n protected hasValue = computed(() => {\n const val = this.value();\n return val !== '' && val !== null && val !== undefined;\n });\n\n protected hostClasses = computed(() => classNames(\n 'studio-input',\n `studio-input--${this.variant()}`,\n `studio-input--${this.size()}`,\n `studio-input--radius-${this.radius()}`,\n this.error() && 'studio-input--error',\n this.disabled() && 'studio-input--disabled',\n this.readonly() && 'studio-input--readonly',\n this.loading() && 'studio-input--loading',\n this.fullWidth() && 'studio-input--full-width',\n this.isFocused() && 'studio-input--focused',\n this.isTouched() && 'studio-input--touched',\n this.hasValue() && 'studio-input--has-value'\n ));\n\n protected ariaDescribedByValue = computed(() => {\n const ids: string[] = [];\n if (this.hint()) ids.push(this.hintId);\n if (this.error() && this.errorMessage()) ids.push(this.errorId);\n return ids.length > 0 ? ids.join(' ') : null;\n });\n\n protected hintId = `${this.generatedId}-hint`;\n protected errorId = `${this.generatedId}-error`;\n\n protected handleInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n const newValue = this.type() === 'number' ? +target.value : target.value;\n this.value.set(newValue);\n this.onChange(newValue);\n this.valueChange.emit(newValue);\n }\n\n protected handleFocus(event: FocusEvent): void {\n this.isFocused.set(true);\n this.focused.emit(event);\n }\n\n protected handleBlur(event: FocusEvent): void {\n this.isFocused.set(false);\n this.isTouched.set(true);\n this.onTouched();\n this.blurred.emit(event);\n }\n\n protected handleClear(): void {\n this.value.set('');\n this.onChange('');\n this.valueChange.emit('');\n this.cleared.emit();\n this.inputEl()?.nativeElement.focus();\n }\n\n protected handleEnter(event: Event): void {\n this.entered.emit(event as KeyboardEvent);\n }\n\n protected togglePasswordVisibility(): void {\n this.isPasswordVisible.update(v => !v);\n }\n}\n","@if (label() && !floatingLabel()) {\n <label [for]=\"id() || generatedId\" class=\"studio-input__label\">\n {{ label() }}\n @if (required()) {\n <span class=\"studio-input__required\">*</span>\n }\n </label>\n}\n\n<div class=\"studio-input__container\">\n @if (prefixIcon()) {\n <span class=\"studio-input__prefix\">\n <studio-icon [name]=\"prefixIcon()!\" [size]=\"16\" />\n </span>\n }\n\n @if (label() && floatingLabel()) {\n <label [for]=\"id() || generatedId\" class=\"studio-input__label--floating\">\n {{ label() }}\n @if (required()) {\n <span>*</span>\n }\n </label>\n }\n\n <input\n #inputElement\n class=\"studio-input__field\"\n [type]=\"computedType()\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly()\"\n [placeholder]=\"computedPlaceholder()\"\n [required]=\"required()\"\n [attr.maxlength]=\"maxLength()\"\n [attr.minlength]=\"minLength()\"\n [min]=\"min()\"\n [max]=\"max()\"\n [step]=\"step()\"\n [pattern]=\"pattern()\"\n [attr.inputmode]=\"inputmode()\"\n [attr.autocomplete]=\"autocomplete()\"\n [name]=\"name()\"\n [id]=\"id() || generatedId\"\n [attr.aria-label]=\"ariaLabel() || (!label() ? placeholder() : null)\"\n [attr.aria-invalid]=\"error() ? 'true' : null\"\n [attr.aria-describedby]=\"ariaDescribedByValue()\"\n [attr.aria-required]=\"required() ? 'true' : null\"\n (input)=\"handleInput($event)\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"\n (keydown.enter)=\"handleEnter($event)\"\n />\n\n @if (loading()) {\n <span class=\"studio-input__loading\">\n <studio-icon name=\"loader-2\" [size]=\"16\" class=\"studio-icon--spin\" />\n </span>\n }\n\n @if (clearable() && value() && !disabled() && !loading()) {\n <button\n type=\"button\"\n class=\"studio-input__clear\"\n (click)=\"handleClear()\"\n [attr.aria-label]=\"'Clear input'\"\n tabindex=\"-1\"\n >\n <studio-icon name=\"x\" [size]=\"14\" />\n </button>\n }\n\n @if (type() === 'password' && showPasswordToggle() && !loading()) {\n <button\n type=\"button\"\n class=\"studio-input__toggle-password\"\n (click)=\"togglePasswordVisibility()\"\n [attr.aria-label]=\"isPasswordVisible() ? 'Hide password' : 'Show password'\"\n tabindex=\"-1\"\n >\n <studio-icon [name]=\"isPasswordVisible() ? 'eye-off' : 'eye'\" [size]=\"16\" />\n </button>\n }\n\n @if (suffixIcon() && !loading() && !clearable() && !(type() === 'password' && showPasswordToggle())) {\n <span class=\"studio-input__suffix\">\n <studio-icon [name]=\"suffixIcon()!\" [size]=\"16\" />\n </span>\n }\n </div>\n\n@if (hint() && !error()) {\n <span class=\"studio-input__hint\" [id]=\"hintId\">\n {{ hint() }}\n </span>\n}\n\n@if (error() && errorMessage()) {\n <span class=\"studio-input__error\" [id]=\"errorId\" role=\"alert\">\n <studio-icon name=\"alert-circle\" [size]=\"14\" />\n {{ errorMessage() }}\n </span>\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n signal,\n effect,\n HostListener,\n inject,\n PLATFORM_ID,\n OnInit\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { Router, RouterLink, RouterLinkActive, IsActiveMatchOptions } from '@angular/router';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport { IconComponent } from '../icon/icon.component';\nimport { BadgeComponent } from '../badge/badge.component';\nimport {\n MenuItem,\n MenuItemClickEvent,\n MenuItemCommandEvent,\n MenuExpandEvent\n} from './menu.types';\n\nexport type MenuOrientation = 'vertical' | 'horizontal';\nexport type MenuMode = 'static' | 'accordion' | 'overlay';\nexport type MenuSize = 'sm' | 'md' | 'lg';\nexport type MenuVariant = 'default' | 'filled' | 'outlined' | 'ghost';\nexport type MenuColor = 'primary' | 'secondary' | 'inherit';\nexport type MenuRadius = 'none' | 'sm' | 'md' | 'lg';\nexport type MenuSpacing = 'none' | 'sm' | 'md' | 'lg';\nexport type MenuExpandIconPosition = 'left' | 'right';\n\n/**\n * Menu component - Primitive component for navigation menus\n *\n * @example\n * <studio-menu\n * [items]=\"menuItems\"\n * size=\"md\"\n * variant=\"default\"\n * (itemClick)=\"handleClick($event)\"\n * />\n */\n@Component({\n selector: 'studio-menu',\n standalone: true,\n imports: [\n CommonModule,\n RouterLink,\n RouterLinkActive,\n IconComponent,\n BadgeComponent\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[attr.role]': 'role()',\n '[attr.aria-label]': 'ariaLabel()',\n '[attr.aria-orientation]': 'orientation()'\n },\n animations: [\n trigger('expandCollapse', [\n state('collapsed', style({\n height: '0',\n opacity: '0',\n overflow: 'hidden'\n })),\n state('expanded', style({\n height: '*',\n opacity: '1',\n overflow: 'visible'\n })),\n transition('collapsed <=> expanded', [\n animate('200ms ease-in-out')\n ])\n ])\n ],\n templateUrl: './menu.component.html',\n styleUrl: './menu.component.scss'\n})\nexport class MenuComponent implements OnInit {\n private router = inject(Router, { optional: true });\n private platformId = inject(PLATFORM_ID);\n\n // ========== Основные параметры ==========\n items = input.required<MenuItem[]>();\n orientation = input<MenuOrientation>('vertical');\n\n // ========== Поведение ==========\n mode = input<MenuMode>('static');\n collapsible = input<boolean>(true);\n defaultExpanded = input<string[]>([]);\n expandOnHover = input<boolean>(false);\n\n // ========== Навигация ==========\n activeItem = input<string>();\n routerLinkActive = input<boolean>(true);\n selectOnNavigate = input<boolean>(true);\n routerLinkActiveOptions = input<IsActiveMatchOptions>({\n paths: 'subset',\n queryParams: 'subset',\n fragment: 'ignored',\n matrixParams: 'ignored'\n });\n\n // ========== Клавиатурная навигация ==========\n keyboardNavigation = input<boolean>(true);\n arrowNavigation = input<boolean>(true);\n homeEndNavigation = input<boolean>(true);\n\n // ========== Анимации ==========\n animated = input<boolean>(true);\n animationDuration = input<number>(200);\n\n // ========== Доступность ==========\n ariaLabel = input<string>();\n role = input<'navigation' | 'menu'>('navigation');\n\n // ========== Стилевые параметры ==========\n size = input<MenuSize>('md');\n compact = input<boolean>(false);\n fullWidth = input<boolean>(false);\n variant = input<MenuVariant>('default');\n color = input<MenuColor>('inherit');\n radius = input<MenuRadius>('md');\n spacing = input<MenuSpacing>('sm');\n showDividers = input<boolean>(false);\n\n // ========== Иконки ==========\n iconSize = input<number>(20);\n iconOnly = input<boolean>(false);\n\n // ========== Подменю ==========\n indentLevel = input<number>(16);\n showExpandIcon = input<boolean>(true);\n expandIconPosition = input<MenuExpandIconPosition>('right');\n expandIcon = input<string>('chevron-down');\n\n // ========== Кастомизация ==========\n class = input<string>('');\n itemClass = input<string>('');\n\n // ========== Internal state (for nested menus) ==========\n level = input<number>(0);\n parentExpanded = input<boolean>(true);\n\n // ========== Outputs ==========\n itemClick = output<MenuItemClickEvent>();\n itemSelect = output<MenuItem>();\n expandChange = output<MenuExpandEvent>();\n activeChange = output<string>();\n\n // ========== Signals for state management ==========\n private expandedItems = signal<Set<string>>(new Set());\n private activeItemId = signal<string | undefined>(undefined);\n private focusedIndex = signal<number>(-1);\n private flattenedItems = computed(() => this.flattenMenuItems(this.items()));\n\n // ========== Computed values ==========\n protected hostClasses = computed(() => {\n const classes = ['studio-menu'];\n\n classes.push(`studio-menu--${this.orientation()}`);\n classes.push(`studio-menu--${this.size()}`);\n classes.push(`studio-menu--${this.variant()}`);\n classes.push(`studio-menu--${this.mode()}`);\n\n if (this.compact()) classes.push('studio-menu--compact');\n if (this.fullWidth()) classes.push('studio-menu--full-width');\n if (this.iconOnly()) classes.push('studio-menu--icon-only');\n if (this.color() !== 'inherit') classes.push(`studio-menu--${this.color()}`);\n if (this.class()) classes.push(this.class());\n\n return classes.join(' ');\n });\n\n constructor() {\n // Initialize expanded items from defaultExpanded\n effect(() => {\n const defaultExp = this.defaultExpanded();\n if (defaultExp.length > 0) {\n this.expandedItems.set(new Set(defaultExp));\n }\n });\n\n // Track active item\n effect(() => {\n const active = this.activeItem();\n if (active) {\n this.activeItemId.set(active);\n }\n });\n }\n\n ngOnInit() {\n if (this.routerLinkActive() && this.router && isPlatformBrowser(this.platformId)) {\n this.updateActiveFromRouter();\n }\n }\n\n // ========== Item state methods ==========\n\n isExpanded(item: MenuItem): boolean {\n if (!item.id) return false;\n return this.expandedItems().has(item.id);\n }\n\n isActive(item: MenuItem): boolean {\n // Check explicit active item\n if (item.id && item.id === this.activeItemId()) {\n return true;\n }\n\n // Router-based active state is handled by RouterLinkActive directive\n return false;\n }\n\n isDisabled(item: MenuItem): boolean {\n return item.disabled === true;\n }\n\n isVisible(item: MenuItem): boolean {\n return item.visible !== false;\n }\n\n hasChildren(item: MenuItem): boolean {\n return !!(item.items && item.items.length > 0);\n }\n\n getItemId(item: MenuItem, index: number): string {\n return item.id || `menu-item-${this.level()}-${index}`;\n }\n\n // ========== Interaction methods ==========\n\n handleItemClick(event: Event, item: MenuItem) {\n if (this.isDisabled(item) || item.separator) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n\n // Emit click event\n this.itemClick.emit({ originalEvent: event, item });\n\n // Execute command if provided\n if (item.command) {\n item.command({ originalEvent: event, item });\n }\n\n // Handle expansion for items with children\n if (this.hasChildren(item) && this.collapsible()) {\n event.preventDefault();\n this.toggleExpand(item);\n }\n\n // Handle selection\n if (this.selectOnNavigate() && item.id) {\n this.activeItemId.set(item.id);\n this.itemSelect.emit(item);\n this.activeChange.emit(item.id);\n }\n\n // Navigation is handled by RouterLink directive if routerLink is set\n }\n\n handleItemMouseEnter(item: MenuItem) {\n if (this.expandOnHover() && this.hasChildren(item) && !this.isDisabled(item)) {\n this.expand(item);\n }\n }\n\n handleItemMouseLeave(item: MenuItem) {\n if (this.expandOnHover() && this.hasChildren(item)) {\n this.collapse(item);\n }\n }\n\n toggleExpand(item: MenuItem) {\n if (!item.id) return;\n\n const expanded = this.expandedItems();\n const newExpanded = new Set(expanded);\n\n if (newExpanded.has(item.id)) {\n newExpanded.delete(item.id);\n this.expandChange.emit({ itemId: item.id, expanded: false });\n } else {\n // In accordion mode, collapse others at the same level\n if (this.mode() === 'accordion') {\n this.items().forEach(i => {\n if (i.id && i.id !== item.id) {\n newExpanded.delete(i.id);\n }\n });\n }\n newExpanded.add(item.id);\n this.expandChange.emit({ itemId: item.id, expanded: true });\n }\n\n this.expandedItems.set(newExpanded);\n }\n\n expand(item: MenuItem) {\n if (!item.id || this.isExpanded(item)) return;\n\n const newExpanded = new Set(this.expandedItems());\n newExpanded.add(item.id);\n this.expandedItems.set(newExpanded);\n this.expandChange.emit({ itemId: item.id, expanded: true });\n }\n\n collapse(item: MenuItem) {\n if (!item.id || !this.isExpanded(item)) return;\n\n const newExpanded = new Set(this.expandedItems());\n newExpanded.delete(item.id);\n this.expandedItems.set(newExpanded);\n this.expandChange.emit({ itemId: item.id, expanded: false });\n }\n\n // ========== Keyboard navigation ==========\n\n @HostListener('keydown', ['$event'])\n handleKeyDown(event: KeyboardEvent) {\n if (!this.keyboardNavigation()) return;\n\n const items = this.flattenedItems();\n const currentIndex = this.focusedIndex();\n\n switch (event.key) {\n case 'ArrowDown':\n if (this.arrowNavigation() && this.orientation() === 'vertical') {\n event.preventDefault();\n this.focusNextItem(items, currentIndex);\n }\n break;\n\n case 'ArrowUp':\n if (this.arrowNavigation() && this.orientation() === 'vertical') {\n event.preventDefault();\n this.focusPreviousItem(items, currentIndex);\n }\n break;\n\n case 'ArrowRight':\n if (this.arrowNavigation()) {\n event.preventDefault();\n if (this.orientation() === 'horizontal') {\n this.focusNextItem(items, currentIndex);\n } else {\n this.expandFocusedItem(items, currentIndex);\n }\n }\n break;\n\n case 'ArrowLeft':\n if (this.arrowNavigation()) {\n event.preventDefault();\n if (this.orientation() === 'horizontal') {\n this.focusPreviousItem(items, currentIndex);\n } else {\n this.collapseFocusedItem(items, currentIndex);\n }\n }\n break;\n\n case 'Home':\n if (this.homeEndNavigation()) {\n event.preventDefault();\n this.focusedIndex.set(0);\n }\n break;\n\n case 'End':\n if (this.homeEndNavigation()) {\n event.preventDefault();\n this.focusedIndex.set(items.length - 1);\n }\n break;\n\n case 'Enter':\n case ' ':\n event.preventDefault();\n this.activateFocusedItem(items, currentIndex);\n break;\n\n case 'Escape':\n event.preventDefault();\n this.collapseAll();\n break;\n }\n }\n\n private focusNextItem(items: MenuItem[], currentIndex: number) {\n const nextIndex = (currentIndex + 1) % items.length;\n this.focusedIndex.set(nextIndex);\n }\n\n private focusPreviousItem(items: MenuItem[], currentIndex: number) {\n const prevIndex = currentIndex <= 0 ? items.length - 1 : currentIndex - 1;\n this.focusedIndex.set(prevIndex);\n }\n\n private expandFocusedItem(items: MenuItem[], currentIndex: number) {\n if (currentIndex >= 0 && currentIndex < items.length) {\n const item = items[currentIndex];\n if (this.hasChildren(item)) {\n this.expand(item);\n }\n }\n }\n\n private collapseFocusedItem(items: MenuItem[], currentIndex: number) {\n if (currentIndex >= 0 && currentIndex < items.length) {\n const item = items[currentIndex];\n if (this.hasChildren(item) && this.isExpanded(item)) {\n this.collapse(item);\n }\n }\n }\n\n private activateFocusedItem(items: MenuItem[], currentIndex: number) {\n if (currentIndex >= 0 && currentIndex < items.length) {\n const item = items[currentIndex];\n const fakeEvent = new Event('click');\n this.handleItemClick(fakeEvent, item);\n }\n }\n\n private collapseAll() {\n this.expandedItems.set(new Set());\n }\n\n // ========== Helper methods ==========\n\n private flattenMenuItems(items: MenuItem[]): MenuItem[] {\n const result: MenuItem[] = [];\n\n const flatten = (itemList: MenuItem[]) => {\n itemList.forEach(item => {\n if (this.isVisible(item) && !item.separator) {\n result.push(item);\n if (item.items && this.isExpanded(item)) {\n flatten(item.items);\n }\n }\n });\n };\n\n flatten(items);\n return result;\n }\n\n private updateActiveFromRouter() {\n if (!this.router) return;\n\n // This would require checking current route against menu items\n // Implementation depends on routing setup\n // For now, RouterLinkActive directive handles this\n }\n\n getIndentStyle(itemLevel: number = 0): Record<string, string> {\n const indent = this.level() + itemLevel;\n if (indent === 0) return {};\n\n return {\n 'padding-left': `calc(var(--menu-padding) + ${indent * this.indentLevel()}px)`\n };\n }\n}\n","<div class=\"studio-menu__list\">\n @for (item of items(); track getItemId(item, $index)) {\n @if (isVisible(item)) {\n @if (item.separator) {\n <!-- Separator -->\n <div class=\"studio-menu__separator\"></div>\n } @else {\n <!-- Menu Item -->\n <div\n class=\"studio-menu-item\"\n [class.studio-menu-item--disabled]=\"isDisabled(item)\"\n [class.studio-menu-item--active]=\"isActive(item)\"\n [class.studio-menu-item--has-children]=\"hasChildren(item)\"\n [class.studio-menu-item--expanded]=\"isExpanded(item)\"\n [class]=\"itemClass() + ' ' + (item.class || '')\"\n [style]=\"getIndentStyle()\"\n [attr.role]=\"role() === 'menu' ? 'menuitem' : undefined\"\n [attr.aria-disabled]=\"isDisabled(item)\"\n [attr.aria-expanded]=\"hasChildren(item) ? isExpanded(item) : undefined\"\n [attr.title]=\"item.tooltip\"\n (click)=\"handleItemClick($event, item)\"\n (mouseenter)=\"handleItemMouseEnter(item)\"\n (mouseleave)=\"handleItemMouseLeave(item)\"\n >\n <!-- Router Link -->\n @if (item.routerLink && !isDisabled(item)) {\n <a\n class=\"studio-menu-item__link\"\n [routerLink]=\"item.routerLink\"\n [queryParams]=\"item.queryParams\"\n [fragment]=\"item.fragment\"\n [target]=\"item.target\"\n routerLinkActive=\"studio-menu-item__link--active\"\n [attr.aria-current]=\"isActive(item) ? 'page' : undefined\"\n >\n <ng-container *ngTemplateOutlet=\"itemContent; context: { $implicit: item }\" />\n </a>\n }\n <!-- External Link -->\n @else if (item.href && !isDisabled(item)) {\n <a\n class=\"studio-menu-item__link\"\n [href]=\"item.href\"\n [target]=\"item.target\"\n >\n <ng-container *ngTemplateOutlet=\"itemContent; context: { $implicit: item }\" />\n </a>\n }\n <!-- Button (no navigation) -->\n @else {\n <div class=\"studio-menu-item__content\">\n <ng-container *ngTemplateOutlet=\"itemContent; context: { $implicit: item }\" />\n </div>\n }\n </div>\n\n <!-- Submenu (recursive) -->\n @if (hasChildren(item) && isExpanded(item)) {\n <div\n class=\"studio-menu__submenu\"\n [@expandCollapse]=\"animated() ? 'expanded' : undefined\"\n >\n <studio-menu\n [items]=\"item.items!\"\n [orientation]=\"orientation()\"\n [mode]=\"mode()\"\n [collapsible]=\"collapsible()\"\n [expandOnHover]=\"expandOnHover()\"\n [selectOnNavigate]=\"selectOnNavigate()\"\n [keyboardNavigation]=\"keyboardNavigation()\"\n [arrowNavigation]=\"arrowNavigation()\"\n [homeEndNavigation]=\"homeEndNavigation()\"\n [animated]=\"animated()\"\n [animationDuration]=\"animationDuration()\"\n [size]=\"size()\"\n [compact]=\"compact()\"\n [fullWidth]=\"fullWidth()\"\n [variant]=\"variant()\"\n [color]=\"color()\"\n [radius]=\"radius()\"\n [spacing]=\"spacing()\"\n [showDividers]=\"showDividers()\"\n [iconSize]=\"iconSize()\"\n [iconOnly]=\"iconOnly()\"\n [indentLevel]=\"indentLevel()\"\n [showExpandIcon]=\"showExpandIcon()\"\n [expandIconPosition]=\"expandIconPosition()\"\n [expandIcon]=\"expandIcon()\"\n [itemClass]=\"itemClass()\"\n [level]=\"level() + 1\"\n [parentExpanded]=\"isExpanded(item)\"\n (itemClick)=\"itemClick.emit($event)\"\n (itemSelect)=\"itemSelect.emit($event)\"\n (expandChange)=\"expandChange.emit($event)\"\n (activeChange)=\"activeChange.emit($event)\"\n />\n </div>\n }\n\n <!-- Divider (if enabled) -->\n @if (showDividers() && $index < items().length - 1) {\n <div class=\"studio-menu__divider\"></div>\n }\n }\n }\n }\n</div>\n\n<!-- Item Content Template -->\n<ng-template #itemContent let-item>\n <div class=\"studio-menu-item__inner\">\n <!-- Left Icon -->\n @if (item.icon && (!item.iconPosition || item.iconPosition === 'left')) {\n <studio-icon\n class=\"studio-menu-item__icon studio-menu-item__icon--left\"\n [name]=\"item.icon\"\n [size]=\"iconSize()\"\n />\n }\n\n <!-- Label -->\n @if (!iconOnly()) {\n <span class=\"studio-menu-item__label\">{{ item.label }}</span>\n }\n\n <!-- Badge -->\n @if (item.badge && !iconOnly()) {\n <studio-badge\n class=\"studio-menu-item__badge\"\n [value]=\"item.badge\"\n [color]=\"item.badgeColor || 'primary'\"\n size=\"sm\"\n />\n }\n\n <!-- Right Icon -->\n @if (item.icon && item.iconPosition === 'right') {\n <studio-icon\n class=\"studio-menu-item__icon studio-menu-item__icon--right\"\n [name]=\"item.icon\"\n [size]=\"iconSize()\"\n />\n }\n\n <!-- Expand Icon -->\n @if (hasChildren(item) && showExpandIcon() && !iconOnly()) {\n <studio-icon\n class=\"studio-menu-item__expand-icon\"\n [class.studio-menu-item__expand-icon--expanded]=\"isExpanded(item)\"\n [name]=\"expandIcon()\"\n [size]=\"16\"\n />\n }\n </div>\n</ng-template>\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n signal,\n inject,\n viewChild,\n ElementRef,\n effect,\n forwardRef,\n model\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, NG_VALIDATORS, Validator, AbstractControl, ValidationErrors } from '@angular/forms';\nimport { IconComponent } from '../icon';\nimport { StudioConfigService } from '../../config';\nimport { classNames, withConfigDefault } from '../../utils';\n\nexport type PhoneCountry = 'kz' | 'ru' | 'kg' | 'uz' | 'tr' | 'az';\n\nexport interface CountryOption {\n code: PhoneCountry;\n name: string;\n dialCode: string;\n flag: string;\n minLength: number;\n maxLength: number;\n placeholder: string;\n}\n\nexport const COUNTRY_OPTIONS: CountryOption[] = [\n { code: 'kz', name: 'Казахстан', dialCode: '+7', flag: '🇰🇿', minLength: 11, maxLength: 11, placeholder: '+7 XXX XXX XX XX' },\n { code: 'ru', name: 'Россия', dialCode: '+7', flag: '🇷🇺', minLength: 11, maxLength: 11, placeholder: '+7 XXX XXX XX XX' },\n { code: 'kg', name: 'Кыргызстан', dialCode: '+996', flag: '🇰🇬', minLength: 12, maxLength: 12, placeholder: '+996 XXX XXX XXX' },\n { code: 'uz', name: 'Узбекистан', dialCode: '+998', flag: '🇺🇿', minLength: 12, maxLength: 12, placeholder: '+998 XX XXX XX XX' },\n { code: 'tr', name: 'Турция', dialCode: '+90', flag: '🇹🇷', minLength: 12, maxLength: 12, placeholder: '+90 XXX XXX XX XX' },\n { code: 'az', name: 'Азербайджан', dialCode: '+994', flag: '🇦🇿', minLength: 12, maxLength: 12, placeholder: '+994 XX XXX XX XX' }\n];\n\n@Component({\n selector: 'studio-phone-input',\n imports: [IconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PhoneInputComponent),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => PhoneInputComponent),\n multi: true\n }\n ],\n host: {\n '[class]': 'hostClasses()',\n },\n templateUrl: './phone-input.component.html',\n styleUrl: './phone-input.component.scss'\n})\nexport class PhoneInputComponent implements ControlValueAccessor, Validator {\n private readonly configService = inject(StudioConfigService);\n private readonly inputDefaults = computed(() => this.configService.config().components?.input);\n\n protected readonly inputEl = viewChild<ElementRef<HTMLInputElement>>('inputElement');\n\n // Styling\n variantInput = input<'outline' | 'filled' | 'underline' | undefined>(undefined, { alias: 'variant' });\n sizeInput = input<'sm' | 'md' | 'lg' | undefined>(undefined, { alias: 'size' });\n radiusInput = input<'none' | 'sm' | 'md' | 'lg' | 'full' | undefined>(undefined, { alias: 'radius' });\n\n variant = withConfigDefault(this.variantInput, computed(() => this.inputDefaults()?.variant), 'outline');\n size = withConfigDefault(this.sizeInput, computed(() => this.inputDefaults()?.size), 'md');\n radius = withConfigDefault(this.radiusInput, computed(() => this.inputDefaults()?.radius), 'md');\n\n // Phone specific\n country = model<PhoneCountry>('kz');\n showCountrySelector = input<boolean>(false);\n showFlag = input<boolean>(true);\n showCountryCode = input<boolean>(true);\n\n // States\n disabled = input<boolean>(false);\n readonly = input<boolean>(false);\n loading = input<boolean>(false);\n\n // Label & hints\n label = input<string | undefined>(undefined);\n hint = input<string | undefined>(undefined);\n required = input<boolean>(false);\n error = input<boolean>(false);\n errorMessage = input<string | undefined>(undefined);\n\n // Layout\n fullWidth = input<boolean>(false);\n autoFocus = input<boolean>(false);\n name = input<string | undefined>(undefined);\n id = input<string | undefined>(undefined);\n ariaLabel = input<string | undefined>(undefined);\n\n // Events\n valueChange = output<string>();\n countryChange = output<PhoneCountry>();\n focused = output<FocusEvent>();\n blurred = output<FocusEvent>();\n\n // Internal state\n protected value = signal<string>('');\n protected displayValue = signal<string>('');\n protected isFocused = signal(false);\n protected isTouched = signal(false);\n protected isDropdownOpen = signal(false);\n protected generatedId = `studio-phone-input-${Math.random().toString(36).substr(2, 9)}`;\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n // Country options\n protected readonly countryOptions = COUNTRY_OPTIONS;\n\n // Computed\n protected currentCountry = computed(() => {\n return COUNTRY_OPTIONS.find(c => c.code === this.country()) || COUNTRY_OPTIONS[0];\n });\n protected currentFlag = computed(() => this.currentCountry().flag);\n protected currentCode = computed(() => this.currentCountry().dialCode);\n protected currentPlaceholder = computed(() => this.currentCountry().placeholder);\n\n protected isComplete = computed(() => {\n const digits = this.value().replace(/\\D/g, '');\n const config = this.currentCountry();\n return digits.length >= config.minLength;\n });\n\n protected hasValue = computed(() => {\n const val = this.value();\n return val !== '' && val !== null && val !== undefined;\n });\n\n protected hostClasses = computed(() => classNames(\n 'studio-phone-input',\n `studio-phone-input--${this.variant()}`,\n `studio-phone-input--${this.size()}`,\n `studio-phone-input--radius-${this.radius()}`,\n this.error() && 'studio-phone-input--error',\n this.disabled() && 'studio-phone-input--disabled',\n this.readonly() && 'studio-phone-input--readonly',\n this.loading() && 'studio-phone-input--loading',\n this.fullWidth() && 'studio-phone-input--full-width',\n this.isFocused() && 'studio-phone-input--focused',\n this.isTouched() && 'studio-phone-input--touched',\n this.hasValue() && 'studio-phone-input--has-value',\n this.showCountrySelector() && 'studio-phone-input--with-selector'\n ));\n\n protected ariaDescribedByValue = computed(() => {\n const ids: string[] = [];\n if (this.hint()) ids.push(this.hintId);\n if (this.error() && this.errorMessage()) ids.push(this.errorId);\n return ids.length > 0 ? ids.join(' ') : null;\n });\n\n protected hintId = `${this.generatedId}-hint`;\n protected errorId = `${this.generatedId}-error`;\n\n constructor() {\n effect(() => {\n if (this.autoFocus() && this.inputEl()) {\n setTimeout(() => this.inputEl()?.nativeElement.focus(), 0);\n }\n });\n\n // Re-format when country changes\n effect(() => {\n const country = this.country();\n const currentValue = this.value();\n if (currentValue) {\n const formatted = this.formatPhoneNumber(currentValue);\n this.displayValue.set(formatted);\n }\n });\n }\n\n // ControlValueAccessor\n writeValue(value: string): void {\n const formatted = this.formatPhoneNumber(value ?? '');\n this.value.set(value ?? '');\n this.displayValue.set(formatted);\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\n // Validator\n validate(control: AbstractControl): ValidationErrors | null {\n if (!control.value) return null;\n\n const digits = (control.value as string).replace(/\\D/g, '');\n const config = this.currentCountry();\n\n if (digits.length < config.minLength) {\n return { phoneIncomplete: { value: control.value, required: config.minLength, actual: digits.length } };\n }\n return null;\n }\n\n // Country selector\n protected toggleDropdown(): void {\n if (this.disabled() || this.readonly()) return;\n this.isDropdownOpen.update(v => !v);\n }\n\n protected selectCountry(country: CountryOption): void {\n this.country.set(country.code);\n this.isDropdownOpen.set(false);\n this.countryChange.emit(country.code);\n\n // Clear current value and set new country code\n const newCode = country.dialCode;\n this.value.set('');\n this.displayValue.set('');\n\n // Focus input after selecting\n setTimeout(() => {\n this.inputEl()?.nativeElement.focus();\n }, 0);\n }\n\n protected closeDropdown(): void {\n this.isDropdownOpen.set(false);\n }\n\n // Format phone number for display\n private formatPhoneNumber(value: string): string {\n let digits = value.replace(/\\D/g, '');\n\n if (!digits) return '';\n\n const config = this.currentCountry();\n digits = digits.slice(0, config.maxLength);\n\n return this.formatByCountry(digits, this.country());\n }\n\n private formatByCountry(digits: string, country: PhoneCountry): string {\n switch (country) {\n case 'kz':\n case 'ru':\n // +7 XXX XXX XX XX\n return this.formatPattern(digits, [1, 3, 3, 2, 2], '+');\n case 'kg':\n // +996 XXX XXX XXX\n return this.formatPattern(digits, [3, 3, 3, 3], '+');\n case 'uz':\n // +998 XX XXX XX XX\n return this.formatPattern(digits, [3, 2, 3, 2, 2], '+');\n case 'tr':\n // +90 XXX XXX XX XX\n return this.formatPattern(digits, [2, 3, 3, 2, 2], '+');\n case 'az':\n // +994 XX XXX XX XX\n return this.formatPattern(digits, [3, 2, 3, 2, 2], '+');\n default:\n return '+' + digits;\n }\n }\n\n private formatPattern(digits: string, groups: number[], prefix: string): string {\n let result = prefix;\n let index = 0;\n\n for (let i = 0; i < groups.length && index < digits.length; i++) {\n const groupSize = groups[i];\n const chunk = digits.slice(index, index + groupSize);\n\n if (i > 0 && chunk) {\n result += ' ';\n }\n result += chunk;\n index += groupSize;\n }\n\n return result;\n }\n\n // Event handlers\n protected handleInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n const cursorPos = target.selectionStart || 0;\n const oldValue = this.displayValue();\n\n let rawValue = target.value;\n const formatted = this.formatPhoneNumber(rawValue);\n const rawDigits = rawValue.replace(/\\D/g, '');\n\n this.value.set(rawDigits ? '+' + rawDigits : '');\n this.displayValue.set(formatted);\n\n target.value = formatted;\n\n const lengthDiff = formatted.length - oldValue.length;\n let newCursorPos = cursorPos + lengthDiff;\n newCursorPos = Math.max(0, Math.min(newCursorPos, formatted.length));\n\n setTimeout(() => {\n target.setSelectionRange(newCursorPos, newCursorPos);\n }, 0);\n\n const outputValue = rawDigits ? '+' + rawDigits : '';\n this.onChange(outputValue);\n this.valueChange.emit(outputValue);\n }\n\n protected handleFocus(event: FocusEvent): void {\n this.isFocused.set(true);\n\n if (!this.displayValue() && this.showCountryCode()) {\n const code = this.currentCountry().dialCode;\n this.displayValue.set(code + ' ');\n const target = event.target as HTMLInputElement;\n target.value = code + ' ';\n setTimeout(() => {\n target.setSelectionRange(target.value.length, target.value.length);\n }, 0);\n }\n\n this.focused.emit(event);\n }\n\n protected handleBlur(event: FocusEvent): void {\n this.isFocused.set(false);\n this.isTouched.set(true);\n\n const digits = this.value().replace(/\\D/g, '');\n const codeDigits = this.currentCountry().dialCode.replace(/\\D/g, '');\n\n if (digits === codeDigits || digits.length <= codeDigits.length) {\n this.value.set('');\n this.displayValue.set('');\n const target = event.target as HTMLInputElement;\n target.value = '';\n this.onChange('');\n }\n\n this.onTouched();\n this.blurred.emit(event);\n }\n\n protected handleKeyDown(event: KeyboardEvent): void {\n const target = event.target as HTMLInputElement;\n const cursorPos = target.selectionStart || 0;\n\n // Allow: backspace, delete, tab, escape, enter, arrows\n if ([8, 46, 9, 27, 13, 37, 38, 39, 40].includes(event.keyCode)) {\n return;\n }\n\n // Allow: Ctrl+A, Ctrl+C, Ctrl+V, Ctrl+X\n if ((event.ctrlKey || event.metaKey) && ['a', 'c', 'v', 'x'].includes(event.key.toLowerCase())) {\n return;\n }\n\n // Allow: + at the beginning\n if (event.key === '+' && cursorPos === 0) {\n return;\n }\n\n // Block non-numeric\n if (!/^\\d$/.test(event.key)) {\n event.preventDefault();\n }\n\n // Block if max length reached\n const digits = target.value.replace(/\\D/g, '');\n if (digits.length >= this.currentCountry().maxLength && target.selectionStart === target.selectionEnd) {\n event.preventDefault();\n }\n }\n\n protected handleContainerClick(event: Event): void {\n // Close dropdown when clicking outside selector\n const target = event.target as HTMLElement;\n if (!target.closest('.studio-phone-input__selector')) {\n this.isDropdownOpen.set(false);\n }\n }\n}\n","@if (label()) {\n <label [for]=\"id() || generatedId\" class=\"studio-phone-input__label\">\n {{ label() }}\n @if (required()) {\n <span class=\"studio-phone-input__required\">*</span>\n }\n </label>\n}\n\n<div class=\"studio-phone-input__container\" (click)=\"handleContainerClick($event)\">\n @if (showCountrySelector()) {\n <div class=\"studio-phone-input__selector\">\n <button\n type=\"button\"\n class=\"studio-phone-input__selector-btn\"\n [disabled]=\"disabled() || readonly()\"\n (click)=\"toggleDropdown()\"\n [attr.aria-expanded]=\"isDropdownOpen()\"\n aria-haspopup=\"listbox\">\n <span class=\"studio-phone-input__selector-flag\">{{ currentFlag() }}</span>\n <studio-icon name=\"chevron-down\" [size]=\"14\" class=\"studio-phone-input__selector-arrow\" />\n </button>\n\n @if (isDropdownOpen()) {\n <div class=\"studio-phone-input__dropdown\" role=\"listbox\">\n @for (option of countryOptions; track option.code) {\n <button\n type=\"button\"\n class=\"studio-phone-input__dropdown-item\"\n [class.studio-phone-input__dropdown-item--selected]=\"option.code === country()\"\n role=\"option\"\n [attr.aria-selected]=\"option.code === country()\"\n (click)=\"selectCountry(option)\">\n <span class=\"studio-phone-input__dropdown-flag\">{{ option.flag }}</span>\n <span class=\"studio-phone-input__dropdown-name\">{{ option.name }}</span>\n <span class=\"studio-phone-input__dropdown-code\">{{ option.dialCode }}</span>\n </button>\n }\n </div>\n }\n </div>\n } @else if (showFlag()) {\n <span class=\"studio-phone-input__flag\">\n {{ currentFlag() }}\n </span>\n }\n\n <input\n #inputElement\n type=\"tel\"\n inputmode=\"tel\"\n class=\"studio-phone-input__field\"\n [value]=\"displayValue()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly()\"\n [placeholder]=\"currentPlaceholder()\"\n [required]=\"required()\"\n [name]=\"name()\"\n [id]=\"id() || generatedId\"\n [attr.aria-label]=\"ariaLabel() || label() || 'Phone number'\"\n [attr.aria-invalid]=\"error() ? 'true' : null\"\n [attr.aria-describedby]=\"ariaDescribedByValue()\"\n [attr.aria-required]=\"required() ? 'true' : null\"\n (input)=\"handleInput($event)\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"\n (keydown)=\"handleKeyDown($event)\"\n />\n\n @if (loading()) {\n <span class=\"studio-phone-input__loading\">\n <studio-icon name=\"loader-2\" [size]=\"16\" class=\"studio-icon--spin\" />\n </span>\n }\n</div>\n\n@if (hint() && !error()) {\n <span class=\"studio-phone-input__hint\" [id]=\"hintId\">\n {{ hint() }}\n </span>\n}\n\n@if (error() && errorMessage()) {\n <span class=\"studio-phone-input__error\" [id]=\"errorId\" role=\"alert\">\n <studio-icon name=\"alert-circle\" [size]=\"14\" />\n {{ errorMessage() }}\n </span>\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n signal,\n effect,\n model,\n contentChild,\n TemplateRef,\n HostListener,\n afterNextRender,\n viewChild,\n ElementRef,\n DestroyRef,\n inject\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IconComponent } from '../icon';\nimport { classNames } from '../../utils';\nimport { ModalSize, ModalVariant, ModalAnimation, ModalPosition } from './modal.types';\n\n@Component({\n selector: 'studio-modal',\n standalone: true,\n imports: [CommonModule, IconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n },\n template: `\n @if (visible()) {\n <!-- Overlay -->\n <div\n class=\"studio-modal__overlay\"\n [class.studio-modal__overlay--visible]=\"visible()\"\n (click)=\"handleOverlayClick()\"\n ></div>\n\n <!-- Modal -->\n <div\n #modalPanel\n class=\"studio-modal__panel\"\n [class.studio-modal__panel--visible]=\"visible()\"\n role=\"dialog\"\n [attr.aria-modal]=\"true\"\n [attr.aria-labelledby]=\"showHeader() ? 'modal-title' : null\"\n >\n <!-- Header -->\n @if (showHeader()) {\n <div class=\"studio-modal__header\">\n @if (headerTemplate()) {\n <ng-container *ngTemplateOutlet=\"headerTemplate()!\" />\n } @else {\n <h3 id=\"modal-title\" class=\"studio-modal__title\">{{ title() }}</h3>\n }\n\n @if (showCloseButton()) {\n <button\n type=\"button\"\n class=\"studio-modal__close\"\n (click)=\"close()\"\n aria-label=\"Close\"\n >\n <studio-icon name=\"x\" [size]=\"20\" />\n </button>\n }\n </div>\n }\n\n <!-- Content -->\n <div class=\"studio-modal__content\">\n <ng-content />\n </div>\n\n <!-- Footer -->\n @if (showFooter() && footerTemplate()) {\n <div class=\"studio-modal__footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate()!\" />\n </div>\n }\n </div>\n }\n `,\n styles: `\n :host {\n display: contents;\n font-family: var(--studio-font-family);\n }\n\n .studio-modal__overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n width: 100vw;\n height: 100vh;\n background: rgba(0, 0, 0, 0.5);\n z-index: var(--studio-z-modal-backdrop, 1040);\n opacity: 0;\n transition: opacity var(--studio-transition-normal, 200ms ease);\n }\n\n .studio-modal__overlay--visible {\n opacity: 1;\n }\n\n .studio-modal__panel {\n position: fixed;\n z-index: var(--studio-z-modal, 1050);\n background: var(--studio-bg-primary, #ffffff);\n border-radius: var(--studio-radius-lg, 0.75rem);\n box-shadow: var(--studio-shadow-xl, 0 20px 25px -5px rgba(0, 0, 0, 0.1));\n display: flex;\n flex-direction: column;\n max-height: 90vh;\n opacity: 0;\n transform: scale(0.95);\n transition:\n opacity var(--studio-transition-normal, 200ms ease),\n transform var(--studio-transition-normal, 200ms ease);\n }\n\n .studio-modal__panel--visible {\n opacity: 1;\n transform: scale(1);\n }\n\n /* Position variants */\n :host(.modal--center) .studio-modal__panel {\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%) scale(0.95);\n }\n\n :host(.modal--center) .studio-modal__panel--visible {\n transform: translate(-50%, -50%) scale(1);\n }\n\n :host(.modal--top) .studio-modal__panel {\n top: 5vh;\n left: 50%;\n transform: translate(-50%, -20px) scale(0.95);\n }\n\n :host(.modal--top) .studio-modal__panel--visible {\n transform: translate(-50%, 0) scale(1);\n }\n\n :host(.modal--bottom) .studio-modal__panel {\n bottom: 5vh;\n left: 50%;\n transform: translate(-50%, 20px) scale(0.95);\n }\n\n :host(.modal--bottom) .studio-modal__panel--visible {\n transform: translate(-50%, 0) scale(1);\n }\n\n /* Size variants */\n :host(.modal--sm) .studio-modal__panel {\n width: 90%;\n max-width: 400px;\n }\n\n :host(.modal--md) .studio-modal__panel {\n width: 90%;\n max-width: 600px;\n }\n\n :host(.modal--lg) .studio-modal__panel {\n width: 90%;\n max-width: 800px;\n }\n\n :host(.modal--xl) .studio-modal__panel {\n width: 90%;\n max-width: 1200px;\n }\n\n :host(.modal--full) .studio-modal__panel {\n width: 95vw;\n height: 95vh;\n max-width: none;\n max-height: none;\n }\n\n /* Variant styles */\n :host(.modal--bordered) .studio-modal__panel {\n border: 1px solid var(--studio-border-primary);\n }\n\n :host(.modal--minimal) .studio-modal__panel {\n box-shadow: var(--studio-shadow-md);\n }\n\n /* Animation variants */\n :host(.modal--fade) .studio-modal__panel {\n transform: translate(-50%, -50%);\n }\n\n :host(.modal--fade) .studio-modal__panel--visible {\n transform: translate(-50%, -50%);\n }\n\n :host(.modal--slide-down) .studio-modal__panel {\n transform: translate(-50%, -60%);\n }\n\n :host(.modal--slide-down) .studio-modal__panel--visible {\n transform: translate(-50%, -50%);\n }\n\n :host(.modal--none) .studio-modal__panel {\n transition: none;\n }\n\n :host(.modal--none) .studio-modal__overlay {\n transition: none;\n }\n\n /* Header */\n .studio-modal__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 1.5rem;\n border-bottom: 1px solid var(--studio-border-primary);\n flex-shrink: 0;\n }\n\n .studio-modal__title {\n margin: 0;\n font-size: 1.25rem;\n font-weight: var(--studio-font-weight-semibold);\n color: var(--studio-text-primary);\n }\n\n .studio-modal__close {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 2rem;\n height: 2rem;\n padding: 0;\n background: none;\n border: none;\n border-radius: var(--studio-radius-sm);\n color: var(--studio-text-secondary);\n cursor: pointer;\n transition: all var(--studio-transition-fast);\n\n &:hover {\n background: var(--studio-bg-secondary);\n color: var(--studio-text-primary);\n }\n\n &:active {\n transform: scale(0.95);\n }\n }\n\n /* Content */\n .studio-modal__content {\n padding: 1.5rem;\n overflow-y: auto;\n flex: 1;\n }\n\n /* Footer */\n .studio-modal__footer {\n padding: 1.5rem;\n border-top: 1px solid var(--studio-border-primary);\n display: flex;\n gap: 0.75rem;\n justify-content: flex-end;\n flex-shrink: 0;\n }\n `\n})\nexport class ModalComponent {\n private destroyRef = inject(DestroyRef);\n\n // Inputs\n visible = model<boolean>(false);\n title = input<string>('');\n size = input<ModalSize>('md');\n variant = input<ModalVariant>('default');\n animation = input<ModalAnimation>('scale');\n position = input<ModalPosition>('center');\n\n showHeader = input<boolean>(true);\n showFooter = input<boolean>(true);\n showCloseButton = input<boolean>(true);\n closeOnOverlayClick = input<boolean>(true);\n closeOnEscape = input<boolean>(true);\n\n // Outputs (note: visibleChange is automatically created by model())\n opened = output<void>();\n closed = output<void>();\n\n // Template refs\n protected headerTemplate = contentChild<TemplateRef<any>>('modalHeader');\n protected footerTemplate = contentChild<TemplateRef<any>>('modalFooter');\n protected modalPanel = viewChild<ElementRef<HTMLDivElement>>('modalPanel');\n\n // Computed\n protected hostClasses = computed(() => classNames(\n 'studio-modal',\n 'modal--' + this.size(),\n 'modal--' + this.variant(),\n 'modal--' + this.animation(),\n 'modal--' + this.position()\n ));\n\n constructor() {\n afterNextRender(() => {\n this.setupFocusTrap();\n });\n\n effect(() => {\n if (this.visible()) {\n this.handleOpen();\n } else {\n this.handleClose();\n }\n });\n }\n\n @HostListener('document:keydown.escape', ['$event'])\n protected handleEscape(event: KeyboardEvent): void {\n if (this.closeOnEscape() && this.visible()) {\n event.preventDefault();\n this.close();\n }\n }\n\n protected handleOverlayClick(): void {\n if (this.closeOnOverlayClick()) {\n this.close();\n }\n }\n\n close(): void {\n this.visible.set(false);\n }\n\n open(): void {\n this.visible.set(true);\n }\n\n private handleOpen(): void {\n // Prevent body scroll\n document.body.style.overflow = 'hidden';\n this.opened.emit();\n\n // Focus first focusable element\n setTimeout(() => {\n const panel = this.modalPanel()?.nativeElement;\n if (panel) {\n const focusable = panel.querySelector<HTMLElement>(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n );\n focusable?.focus();\n }\n }, 100);\n }\n\n private handleClose(): void {\n // Restore body scroll\n document.body.style.overflow = '';\n this.closed.emit();\n }\n\n private setupFocusTrap(): void {\n // Simple focus trap: keep focus within modal when it's open\n const handleTab = (e: KeyboardEvent) => {\n if (!this.visible() || e.key !== 'Tab') return;\n\n const panel = this.modalPanel()?.nativeElement;\n if (!panel) return;\n\n const focusableElements = panel.querySelectorAll<HTMLElement>(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n );\n\n const firstElement = focusableElements[0];\n const lastElement = focusableElements[focusableElements.length - 1];\n\n if (e.shiftKey && document.activeElement === firstElement) {\n lastElement?.focus();\n e.preventDefault();\n } else if (!e.shiftKey && document.activeElement === lastElement) {\n firstElement?.focus();\n e.preventDefault();\n }\n };\n\n document.addEventListener('keydown', handleTab);\n this.destroyRef.onDestroy(() => {\n document.removeEventListener('keydown', handleTab);\n document.body.style.overflow = ''; // Cleanup on destroy\n });\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n computed,\n output\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n NavbarVariant,\n NavbarColor,\n NavbarSize,\n NavbarShadow\n} from './navbar.types';\n\n/**\n * Navbar component - Primitive component for navigation headers\n *\n * @example\n * <studio-navbar variant=\"filled\" [sticky]=\"true\">\n * <div navbarLeft>Logo</div>\n * <div navbarCenter>Search</div>\n * <div navbarRight>User menu</div>\n * </studio-navbar>\n */\n@Component({\n selector: 'studio-navbar',\n standalone: true,\n imports: [CommonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[attr.role]': '\"banner\"',\n '[style.height]': 'customHeight() ? customHeight() + \"px\" : null'\n },\n templateUrl: './navbar.component.html',\n styleUrl: './navbar.component.scss'\n})\nexport class NavbarComponent {\n // ========== Visual variants ==========\n variant = input<NavbarVariant>('default');\n color = input<NavbarColor>('inherit');\n shadow = input<NavbarShadow>('sm');\n\n // ========== Size ==========\n size = input<NavbarSize>('md');\n customHeight = input<number | null>(null);\n\n // ========== Behavior ==========\n sticky = input<boolean>(false);\n blurBg = input<boolean>(false);\n\n // ========== Borders ==========\n bordered = input<boolean>(true);\n\n // ========== Customization ==========\n class = input<string>('');\n\n // ========== Outputs ==========\n navbarClick = output<MouseEvent>();\n\n // ========== Computed classes ==========\n protected hostClasses = computed(() => {\n const classes = ['studio-navbar'];\n\n classes.push(`studio-navbar--${this.variant()}`);\n classes.push(`studio-navbar--${this.size()}`);\n classes.push(`studio-navbar--shadow-${this.shadow()}`);\n\n if (this.color() !== 'inherit') classes.push(`studio-navbar--${this.color()}`);\n if (this.sticky()) classes.push('studio-navbar--sticky');\n if (this.blurBg()) classes.push('studio-navbar--blur');\n if (this.bordered()) classes.push('studio-navbar--bordered');\n if (this.class()) classes.push(this.class());\n\n return classes.join(' ');\n });\n\n handleClick(event: MouseEvent) {\n this.navbarClick.emit(event);\n }\n}\n","<div class=\"studio-navbar__left\">\n <ng-content select=\"[navbarLeft]\" />\n</div>\n\n<div class=\"studio-navbar__center\">\n <ng-content select=\"[navbarCenter]\" />\n</div>\n\n<div class=\"studio-navbar__right\">\n <ng-content select=\"[navbarRight]\" />\n</div>\n\n<ng-content />\n","import { Component, input, output, computed, signal, forwardRef, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { StudioConfigService } from '../../config/studio.service';\n\nexport type RadioButtonSize = 'sm' | 'md' | 'lg';\nexport type RadioButtonColor = 'primary' | 'secondary' | 'success' | 'error';\nexport type RadioButtonVariant = 'default' | 'outlined' | 'filled';\nexport type RadioButtonRadius = 'none' | 'sm' | 'md' | 'lg' | 'full';\n\n/**\n * RadioButton component for selecting a single option from a group\n *\n * @example\n * <studio-radio-button\n * [(ngModel)]=\"selectedValue\"\n * [value]=\"'option1'\"\n * label=\"Option 1\"\n * name=\"options\"\n * />\n */\n@Component({\n selector: 'studio-radio-button',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './radio-button.component.html',\n styleUrl: './radio-button.component.scss',\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RadioButtonComponent),\n multi: true\n }],\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-size]': 'size()',\n '[attr.data-color]': 'color()',\n '[attr.data-disabled]': 'disabled()',\n '[attr.data-error]': 'error()'\n }\n})\nexport class RadioButtonComponent implements ControlValueAccessor {\n private readonly configService = inject(StudioConfigService);\n private readonly radioDefaults = computed(() => this.configService.config().components?.radioButton);\n\n size = input<RadioButtonSize>(this.radioDefaults()?.size ?? 'md');\n color = input<RadioButtonColor>(this.radioDefaults()?.color ?? 'primary');\n variant = input<RadioButtonVariant>(this.radioDefaults()?.variant ?? 'default');\n radius = input<RadioButtonRadius>(this.radioDefaults()?.radius ?? 'full');\n\n label = input<string>();\n labelPosition = input<'left' | 'right'>(this.radioDefaults()?.labelPosition ?? 'right');\n description = input<string>();\n hint = input<string>();\n\n required = input<boolean>(false);\n error = input<boolean>(false);\n errorMessage = input<string>();\n\n disabled = input<boolean>(false);\n readonly = input<boolean>(false);\n name = input<string>();\n tabIndex = input<number>(0);\n value = input<any>();\n\n changed = output<any>();\n\n protected internalValue = signal<any>(null);\n protected isFocused = signal(false);\n protected radioId = signal(`studio-radio-${Math.random().toString(36).substr(2, 9)}`);\n\n protected hostClasses = computed(() => ({\n 'studio-radio-wrapper': true,\n [`studio-radio-wrapper--${this.size()}`]: true,\n 'studio-radio-wrapper--disabled': this.disabled(),\n 'studio-radio-wrapper--error': this.error(),\n 'studio-radio-wrapper--focused': this.isFocused(),\n 'studio-radio-wrapper--label-left': this.labelPosition() === 'left'\n }));\n\n protected radioClasses = computed(() => ({\n 'studio-radio': true,\n [`studio-radio--${this.size()}`]: true,\n [`studio-radio--${this.color()}`]: true,\n [`studio-radio--${this.variant()}`]: true,\n [`studio-radio--radius-${this.radius()}`]: true,\n 'studio-radio--checked': this.isChecked(),\n 'studio-radio--disabled': this.disabled(),\n 'studio-radio--error': this.error()\n }));\n\n protected showError = computed(() => this.error() && this.errorMessage());\n protected showHint = computed(() => !this.error() && this.hint());\n protected isChecked = computed(() => this.internalValue() === this.value());\n\n private onChange: (value: any) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: any): void {\n this.internalValue.set(value);\n }\n\n registerOnChange(fn: (value: any) => 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\n protected handleChange(event: Event): void {\n if (this.disabled() || this.readonly()) {\n event.preventDefault();\n return;\n }\n\n const inputValue = this.value();\n this.internalValue.set(inputValue);\n this.onChange(inputValue);\n this.changed.emit(inputValue);\n }\n\n protected handleFocus(): void {\n this.isFocused.set(true);\n }\n\n protected handleBlur(): void {\n this.isFocused.set(false);\n this.onTouched();\n }\n\n protected handleLabelClick(event: Event): void {\n if (this.disabled() || this.readonly()) {\n event.preventDefault();\n }\n }\n}\n","<label\n [for]=\"radioId()\"\n [ngClass]=\"hostClasses()\"\n (click)=\"handleLabelClick($event)\"\n>\n <input\n type=\"radio\"\n [id]=\"radioId()\"\n [name]=\"name()\"\n [value]=\"value()\"\n [checked]=\"isChecked()\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n [tabIndex]=\"tabIndex()\"\n [attr.aria-checked]=\"isChecked() ? 'true' : 'false'\"\n [attr.aria-label]=\"label() || undefined\"\n [attr.aria-describedby]=\"showHint() || showError() ? radioId() + '-description' : undefined\"\n [attr.aria-invalid]=\"error()\"\n [attr.aria-required]=\"required()\"\n class=\"studio-radio__input\"\n (change)=\"handleChange($event)\"\n (focus)=\"handleFocus()\"\n (blur)=\"handleBlur()\"\n />\n\n <span [ngClass]=\"radioClasses()\">\n @if (isChecked()) {\n <span class=\"studio-radio__dot\"></span>\n }\n </span>\n\n @if (label() || description()) {\n <span class=\"studio-radio__label-wrapper\">\n @if (label()) {\n <span class=\"studio-radio__label\">\n {{ label() }}\n @if (required()) {\n <span class=\"studio-radio__required\" aria-hidden=\"true\">*</span>\n }\n </span>\n }\n\n @if (description()) {\n <span class=\"studio-radio__description\">\n {{ description() }}\n </span>\n }\n </span>\n }\n</label>\n\n@if (showHint() || showError()) {\n <div\n [id]=\"radioId() + '-description'\"\n class=\"studio-radio__info\"\n >\n @if (showError()) {\n <span class=\"studio-radio__error\">\n {{ errorMessage() }}\n </span>\n }\n\n @if (showHint()) {\n <span class=\"studio-radio__hint\">\n {{ hint() }}\n </span>\n }\n </div>\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n signal,\n inject,\n viewChild,\n ElementRef,\n effect,\n forwardRef,\n HostListener,\n Renderer2,\n OnDestroy\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { IconComponent } from '../icon';\nimport { StudioConfigService } from '../../config';\nimport { classNames, withConfigDefault } from '../../utils';\nimport { SelectOption, SelectOptionGroup, SelectVariant, SelectSize, SelectPosition } from './select.types';\n\n@Component({\n selector: 'studio-select',\n standalone: true,\n imports: [IconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectComponent),\n multi: true\n }\n ],\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-open]': 'isOpen()',\n },\n templateUrl: './select.component.html',\n styleUrl: './select.component.scss'\n})\nexport class SelectComponent<T = any> implements ControlValueAccessor, OnDestroy {\n private readonly configService = inject(StudioConfigService);\n private readonly selectDefaults = computed(() => this.configService.config().components?.select);\n private readonly document = inject(DOCUMENT);\n private readonly renderer = inject(Renderer2);\n private readonly hostEl = inject(ElementRef);\n\n protected readonly triggerEl = viewChild<ElementRef<HTMLButtonElement>>('triggerButton');\n protected readonly dropdownEl = viewChild<ElementRef<HTMLDivElement>>('dropdownPanel');\n\n variantInput = input<SelectVariant | undefined>(undefined, { alias: 'variant' });\n sizeInput = input<SelectSize | undefined>(undefined, { alias: 'size' });\n radiusInput = input<'none' | 'sm' | 'md' | 'lg' | 'full' | undefined>(undefined, { alias: 'radius' });\n\n variant = withConfigDefault(this.variantInput, computed(() => this.selectDefaults()?.variant), 'outline');\n size = withConfigDefault(this.sizeInput, computed(() => this.selectDefaults()?.size), 'md');\n radius = withConfigDefault(this.radiusInput, computed(() => this.selectDefaults()?.radius), 'md');\n\n options = input.required<SelectOption<T>[] | SelectOptionGroup<T>[]>();\n placeholder = input<string>('Select option...');\n\n multiple = input<boolean>(false);\n searchable = input<boolean>(false);\n clearable = input<boolean>(true);\n disabled = input<boolean>(false);\n loading = input<boolean>(false);\n\n label = input<string | undefined>(undefined);\n floatingLabel = input<boolean>(false);\n hint = input<string | undefined>(undefined);\n error = input<boolean>(false);\n errorMessage = input<string | undefined>(undefined);\n required = input<boolean>(false);\n\n prefixIcon = input<string | undefined>(undefined);\n suffixIcon = input<string>('chevron-down');\n\n fullWidth = input<boolean>(false);\n maxHeight = input<string>('300px');\n position = input<SelectPosition>('bottom');\n appendToBody = input<boolean>(false);\n\n searchPlaceholder = input<string>('Search...');\n\n valueChange = output<T | T[] | null>();\n searchChange = output<string>();\n opened = output<void>();\n closed = output<void>();\n optionSelected = output<SelectOption<T>>();\n\n protected isOpen = signal(false);\n protected searchQuery = signal('');\n protected selectedValue = signal<T | T[] | null>(null);\n protected highlightedIndex = signal(0);\n protected isFocused = signal(false);\n protected isTouched = signal(false);\n\n protected generatedId = `studio-select-${Math.random().toString(36).substr(2, 9)}`;\n\n private onChange: (value: any) => void = () => {};\n private onTouched: () => void = () => {};\n private portalContainer: HTMLElement | null = null;\n\n constructor() {\n effect(() => {\n if (this.isOpen()) {\n this.setupClickOutside();\n if (this.appendToBody()) {\n this.attachDropdownToBody();\n }\n } else {\n this.cleanupClickOutside();\n if (this.appendToBody()) {\n this.detachDropdownFromBody();\n }\n }\n });\n }\n\n ngOnDestroy(): void {\n this.cleanupClickOutside();\n this.detachDropdownFromBody();\n }\n\n protected flattenedOptions = computed(() => {\n const opts = this.options();\n if (!opts || opts.length === 0) return [];\n\n if (this.isOptionGroup(opts[0])) {\n return (opts as SelectOptionGroup<T>[]).flatMap(g => g.options);\n }\n return opts as SelectOption<T>[];\n });\n\n protected filteredOptions = computed(() => {\n const query = this.searchQuery().toLowerCase().trim();\n const opts = this.flattenedOptions();\n\n if (!query) return opts;\n\n return opts.filter(opt =>\n opt.label.toLowerCase().includes(query) ||\n opt.description?.toLowerCase().includes(query)\n );\n });\n\n protected selectedOptions = computed(() => {\n const value = this.selectedValue();\n const opts = this.flattenedOptions();\n\n if (this.multiple()) {\n const values = (value as T[]) || [];\n return opts.filter(opt => values.includes(opt.value));\n }\n\n return opts.find(opt => this.compareValues(opt.value, value as T)) || null;\n });\n\n protected displayValue = computed(() => {\n const selected = this.selectedOptions();\n\n if (this.multiple() && Array.isArray(selected)) {\n return selected.map(opt => opt.label).join(', ');\n }\n\n if (selected && !Array.isArray(selected)) {\n return selected.label;\n }\n\n return '';\n });\n\n protected hasValue = computed(() => {\n const val = this.selectedValue();\n return this.multiple()\n ? Array.isArray(val) && val.length > 0\n : val !== null && val !== undefined;\n });\n\n protected hostClasses = computed(() => classNames(\n 'studio-select',\n `studio-select--${this.variant()}`,\n `studio-select--${this.size()}`,\n `studio-select--radius-${this.radius()}`,\n this.isOpen() && 'studio-select--open',\n this.disabled() && 'studio-select--disabled',\n this.loading() && 'studio-select--loading',\n this.error() && 'studio-select--error',\n this.isFocused() && 'studio-select--focused',\n this.hasValue() && 'studio-select--has-value',\n this.fullWidth() && 'studio-select--full-width'\n ));\n\n protected toggle(): void {\n if (!this.disabled() && !this.loading()) {\n this.isOpen.update(v => !v);\n if (this.isOpen()) {\n this.opened.emit();\n setTimeout(() => this.focusSearchInput(), 0);\n } else {\n this.closed.emit();\n this.searchQuery.set('');\n }\n }\n }\n\n protected close(): void {\n if (this.isOpen()) {\n this.isOpen.set(false);\n this.closed.emit();\n this.searchQuery.set('');\n this.isTouched.set(true);\n this.onTouched();\n }\n }\n\n protected selectOption(option: SelectOption<T>): void {\n if (option.disabled) return;\n\n if (this.multiple()) {\n const current = ((this.selectedValue() as T[]) || []);\n const isSelected = current.includes(option.value);\n\n if (isSelected) {\n this.selectedValue.set(current.filter(v => v !== option.value));\n } else {\n this.selectedValue.set([...current, option.value]);\n }\n } else {\n this.selectedValue.set(option.value);\n this.close();\n }\n\n this.onChange(this.selectedValue());\n this.valueChange.emit(this.selectedValue());\n this.optionSelected.emit(option);\n }\n\n protected clear(event: Event): void {\n event.stopPropagation();\n this.selectedValue.set(this.multiple() ? [] : null);\n this.onChange(this.selectedValue());\n this.valueChange.emit(this.selectedValue());\n }\n\n protected isSelected(option: SelectOption<T>): boolean {\n if (this.multiple()) {\n const values = (this.selectedValue() as T[]) || [];\n return values.includes(option.value);\n }\n return this.compareValues(option.value, this.selectedValue() as T);\n }\n\n protected handleSearch(event: Event): void {\n const query = (event.target as HTMLInputElement).value;\n this.searchQuery.set(query);\n this.searchChange.emit(query);\n }\n\n protected handleKeydown(event: KeyboardEvent): void {\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n if (!this.isOpen()) {\n this.toggle();\n } else {\n this.highlightNext();\n }\n break;\n case 'ArrowUp':\n event.preventDefault();\n if (this.isOpen()) {\n this.highlightPrevious();\n }\n break;\n case 'Enter':\n case ' ':\n event.preventDefault();\n if (this.isOpen()) {\n this.selectHighlighted();\n } else {\n this.toggle();\n }\n break;\n case 'Escape':\n if (this.isOpen()) {\n event.preventDefault();\n this.close();\n }\n break;\n }\n }\n\n private highlightNext(): void {\n const opts = this.filteredOptions();\n const current = this.highlightedIndex();\n this.highlightedIndex.set(Math.min(current + 1, opts.length - 1));\n }\n\n private highlightPrevious(): void {\n const current = this.highlightedIndex();\n this.highlightedIndex.set(Math.max(current - 1, 0));\n }\n\n private selectHighlighted(): void {\n const opts = this.filteredOptions();\n const index = this.highlightedIndex();\n if (opts[index]) {\n this.selectOption(opts[index]);\n }\n }\n\n private compareValues(a: T, b: T): boolean {\n return a === b;\n }\n\n private isOptionGroup(item: any): item is SelectOptionGroup<T> {\n return item && 'options' in item && Array.isArray(item.options);\n }\n\n private focusSearchInput(): void {\n if (this.searchable()) {\n const searchInput = this.dropdownEl()?.nativeElement.querySelector('input');\n searchInput?.focus();\n }\n }\n\n private clickOutsideListener?: (event: Event) => void;\n\n private setupClickOutside(): void {\n this.clickOutsideListener = (event: Event) => {\n const target = event.target as HTMLElement;\n const trigger = this.triggerEl()?.nativeElement;\n const dropdown = this.dropdownEl()?.nativeElement;\n\n if (trigger && !trigger.contains(target) && dropdown && !dropdown.contains(target)) {\n this.close();\n }\n };\n\n setTimeout(() => {\n document.addEventListener('click', this.clickOutsideListener!);\n }, 0);\n }\n\n private cleanupClickOutside(): void {\n if (this.clickOutsideListener) {\n document.removeEventListener('click', this.clickOutsideListener);\n this.clickOutsideListener = undefined;\n }\n }\n\n writeValue(value: T | T[]): void {\n this.selectedValue.set(value);\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n }\n\n private attachDropdownToBody(): void {\n setTimeout(() => {\n const dropdown = this.dropdownEl()?.nativeElement;\n const trigger = this.triggerEl()?.nativeElement;\n\n if (!dropdown || !trigger) return;\n\n // Create container if not exists\n if (!this.portalContainer) {\n this.portalContainer = this.renderer.createElement('div');\n this.renderer.addClass(this.portalContainer, 'studio-select-portal');\n this.renderer.appendChild(this.document.body, this.portalContainer);\n }\n\n // Get trigger position\n const rect = trigger.getBoundingClientRect();\n const controlEl = this.hostEl.nativeElement.querySelector('.studio-select__control');\n const controlRect = controlEl?.getBoundingClientRect() || rect;\n\n // Move dropdown to portal\n this.renderer.appendChild(this.portalContainer, dropdown);\n\n // Position dropdown\n this.renderer.setStyle(dropdown, 'position', 'fixed');\n this.renderer.setStyle(dropdown, 'top', `${controlRect.bottom + 4}px`);\n this.renderer.setStyle(dropdown, 'left', `${controlRect.left}px`);\n this.renderer.setStyle(dropdown, 'width', `${controlRect.width}px`);\n this.renderer.setStyle(dropdown, 'zIndex', '9999');\n }, 0);\n }\n\n private detachDropdownFromBody(): void {\n if (this.portalContainer) {\n this.renderer.removeChild(this.document.body, this.portalContainer);\n this.portalContainer = null;\n }\n }\n}\n","@if (label() && !floatingLabel()) {\n <label [for]=\"generatedId\" class=\"studio-select__label\">\n {{ label() }}\n @if (required()) {\n <span class=\"studio-select__required\">*</span>\n }\n </label>\n}\n\n<div class=\"studio-select__control\">\n @if (prefixIcon()) {\n <span class=\"studio-select__prefix\">\n <studio-icon [name]=\"prefixIcon()!\" [size]=\"16\" />\n </span>\n }\n\n @if (label() && floatingLabel()) {\n <label [for]=\"generatedId\" class=\"studio-select__label--floating\">\n {{ label() }}\n @if (required()) {\n <span class=\"studio-select__required\">*</span>\n }\n </label>\n }\n\n <button\n #triggerButton\n type=\"button\"\n [id]=\"generatedId\"\n class=\"studio-select__trigger\"\n [disabled]=\"disabled() || loading()\"\n (click)=\"toggle()\"\n (keydown)=\"handleKeydown($event)\"\n (focus)=\"isFocused.set(true)\"\n (blur)=\"isFocused.set(false)\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-haspopup]=\"'listbox'\"\n >\n @if (hasValue()) {\n <span class=\"studio-select__value\">{{ displayValue() }}</span>\n } @else {\n <span class=\"studio-select__placeholder\">{{ placeholder() }}</span>\n }\n </button>\n\n @if (clearable() && hasValue() && !disabled() && !loading()) {\n <button\n type=\"button\"\n class=\"studio-select__clear\"\n (click)=\"clear($event)\"\n aria-label=\"Clear selection\"\n tabindex=\"-1\"\n >\n <studio-icon name=\"x\" [size]=\"14\" />\n </button>\n }\n\n @if (loading()) {\n <span class=\"studio-select__loading\">\n <studio-icon name=\"loader-2\" [size]=\"16\" class=\"studio-icon--spin\" />\n </span>\n } @else {\n <span class=\"studio-select__suffix\">\n <studio-icon\n [name]=\"suffixIcon()\"\n [size]=\"16\"\n />\n </span>\n }\n</div>\n\n@if (isOpen()) {\n <div\n #dropdownPanel\n class=\"studio-select__dropdown\"\n [attr.data-position]=\"position()\"\n [style.max-height]=\"maxHeight()\"\n >\n @if (searchable()) {\n <div class=\"studio-select__search\">\n <input\n type=\"text\"\n [placeholder]=\"searchPlaceholder()\"\n [value]=\"searchQuery()\"\n (input)=\"handleSearch($event)\"\n />\n </div>\n }\n\n <div class=\"studio-select__options\" role=\"listbox\">\n @if (filteredOptions().length === 0) {\n <div class=\"studio-select__empty\">\n No options found\n </div>\n }\n\n @for (option of filteredOptions(); track option.value; let idx = $index) {\n <div\n class=\"studio-select__option\"\n [class.studio-select__option--selected]=\"isSelected(option)\"\n [class.studio-select__option--disabled]=\"option.disabled\"\n [class.studio-select__option--highlighted]=\"highlightedIndex() === idx\"\n (click)=\"selectOption(option)\"\n role=\"option\"\n [attr.aria-selected]=\"isSelected(option)\"\n >\n @if (multiple()) {\n <input\n type=\"checkbox\"\n class=\"studio-select__checkbox\"\n [checked]=\"isSelected(option)\"\n [disabled]=\"option.disabled\"\n tabindex=\"-1\"\n />\n }\n\n @if (option.icon) {\n <studio-icon [name]=\"option.icon\" [size]=\"18\" class=\"studio-select__option-icon\" />\n }\n\n <div class=\"studio-select__option-content\">\n <div class=\"studio-select__option-label\">\n {{ option.label }}\n </div>\n @if (option.description) {\n <div class=\"studio-select__option-description\">\n {{ option.description }}\n </div>\n }\n </div>\n\n @if (!multiple() && isSelected(option)) {\n <studio-icon name=\"check\" [size]=\"16\" class=\"studio-select__check-icon\" />\n }\n </div>\n }\n </div>\n </div>\n}\n\n@if (hint() && !error()) {\n <div class=\"studio-select__hint\">{{ hint() }}</div>\n}\n\n@if (error() && errorMessage()) {\n <div class=\"studio-select__error\">{{ errorMessage() }}</div>\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n model,\n computed,\n inject,\n effect\n} from '@angular/core';\nimport { Router, NavigationEnd } from '@angular/router';\nimport { filter } from 'rxjs/operators';\nimport { DrawerComponent } from '../drawer';\nimport { StudioConfigService } from '../../config';\nimport { withConfigDefault } from '../../utils';\nimport { SidebarPosition, SidebarSize, SidebarVariant } from './sidebar.types';\n\n/**\n * Sidebar component - Navigation sidebar built on top of Drawer\n *\n * @example\n * <studio-sidebar [(visible)]=\"sidebarOpen\">\n * <nav sidebarHeader>\n * <h2>Navigation</h2>\n * </nav>\n *\n * <studio-menu>\n * <studio-menu-item>Home</studio-menu-item>\n * <studio-menu-item>About</studio-menu-item>\n * </studio-menu>\n *\n * <div sidebarFooter>\n * <studio-button>Logout</studio-button>\n * </div>\n * </studio-sidebar>\n */\n@Component({\n selector: 'studio-sidebar',\n standalone: true,\n imports: [DrawerComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n },\n templateUrl: './sidebar.component.html',\n styleUrl: './sidebar.component.scss'\n})\nexport class SidebarComponent {\n private readonly router = inject(Router, { optional: true });\n private readonly configService = inject(StudioConfigService);\n private readonly sidebarDefaults = computed(() => this.configService.config().components?.sidebar);\n\n // Core\n id = input<string>(`studio-sidebar-${Math.random().toString(36).substr(2, 9)}`);\n visible = model<boolean>(false);\n\n // Position & Size\n positionInput = input<SidebarPosition | undefined>(undefined, { alias: 'position' });\n sizeInput = input<SidebarSize | undefined>(undefined, { alias: 'size' });\n variantInput = input<SidebarVariant | undefined>(undefined, { alias: 'variant' });\n customWidth = input<string | undefined>(undefined);\n\n position = withConfigDefault(this.positionInput, computed(() => this.sidebarDefaults()?.position), 'left');\n size = withConfigDefault(this.sizeInput, computed(() => this.sidebarDefaults()?.size), 'md');\n variant = withConfigDefault(this.variantInput, computed(() => this.sidebarDefaults()?.variant), 'default');\n\n // Behavior\n modalInput = input<boolean | undefined>(undefined, { alias: 'modal' });\n collapsibleInput = input<boolean | undefined>(undefined, { alias: 'collapsible' });\n defaultCollapsedInput = input<boolean | undefined>(undefined, { alias: 'defaultCollapsed' });\n closeOnNavigateInput = input<boolean | undefined>(undefined, { alias: 'closeOnNavigate' });\n closeOnBackdropClickInput = input<boolean | undefined>(undefined, { alias: 'closeOnBackdropClick' });\n closeOnEscapeInput = input<boolean | undefined>(undefined, { alias: 'closeOnEscape' });\n blockScrollInput = input<boolean | undefined>(undefined, { alias: 'blockScroll' });\n swipeToCloseInput = input<boolean | undefined>(undefined, { alias: 'swipeToClose' });\n\n modal = withConfigDefault(this.modalInput, computed(() => this.sidebarDefaults()?.modal), true);\n collapsible = withConfigDefault(this.collapsibleInput, computed(() => this.sidebarDefaults()?.collapsible), false);\n defaultCollapsed = withConfigDefault(this.defaultCollapsedInput, computed(() => this.sidebarDefaults()?.defaultCollapsed), false);\n closeOnNavigate = withConfigDefault(this.closeOnNavigateInput, computed(() => this.sidebarDefaults()?.closeOnNavigate), true);\n closeOnBackdropClick = withConfigDefault(this.closeOnBackdropClickInput, computed(() => this.sidebarDefaults()?.closeOnBackdropClick), true);\n closeOnEscape = withConfigDefault(this.closeOnEscapeInput, computed(() => this.sidebarDefaults()?.closeOnEscape), true);\n blockScroll = withConfigDefault(this.blockScrollInput, computed(() => this.sidebarDefaults()?.blockScroll), true);\n swipeToClose = withConfigDefault(this.swipeToCloseInput, computed(() => this.sidebarDefaults()?.swipeToClose), true);\n\n // UI Elements\n header = input<string | undefined>(undefined);\n showHeaderInput = input<boolean | undefined>(undefined, { alias: 'showHeader' });\n showFooterInput = input<boolean | undefined>(undefined, { alias: 'showFooter' });\n showCloseButtonInput = input<boolean | undefined>(undefined, { alias: 'showCloseButton' });\n\n showHeader = withConfigDefault(this.showHeaderInput, computed(() => this.sidebarDefaults()?.showHeader), true);\n showFooter = withConfigDefault(this.showFooterInput, computed(() => this.sidebarDefaults()?.showFooter), true);\n showCloseButton = withConfigDefault(this.showCloseButtonInput, computed(() => this.sidebarDefaults()?.showCloseButton), true);\n\n // Content Customization\n contentPadding = input<string | undefined>(undefined);\n contentGap = input<string | undefined>(undefined);\n background = input<string | undefined>(undefined);\n\n // Customization\n class = input<string>('');\n\n // ========== Computed values ==========\n protected hostClasses = computed(() => {\n const classes = ['studio-sidebar'];\n classes.push(`studio-sidebar--${this.position()}`);\n classes.push(`studio-sidebar--${this.size()}`);\n classes.push(`studio-sidebar--${this.variant()}`);\n if (this.collapsible()) classes.push('studio-sidebar--collapsible');\n if (this.class()) classes.push(this.class());\n return classes.join(' ');\n });\n\n protected drawerSize = computed<'sm' | 'md' | 'lg' | 'xl' | 'full'>(() => {\n const currentSize = this.size();\n const sizeMap: Record<SidebarSize, 'sm' | 'md' | 'lg' | 'xl' | 'full'> = {\n 'sm': 'sm',\n 'md': 'md',\n 'lg': 'lg',\n 'full': 'full'\n };\n return sizeMap[currentSize];\n });\n\n constructor() {\n // Close sidebar on navigation if enabled\n if (this.router && this.closeOnNavigate()) {\n effect(() => {\n const subscription = this.router!.events\n .pipe(filter(event => event instanceof NavigationEnd))\n .subscribe(() => {\n if (this.closeOnNavigate() && this.visible()) {\n this.visible.set(false);\n }\n });\n\n return () => subscription.unsubscribe();\n });\n }\n }\n}\n","<studio-drawer\n [visible]=\"visible()\"\n (visibleChange)=\"visible.set($event)\"\n [position]=\"position()\"\n [size]=\"drawerSize()\"\n [modal]=\"modal()\"\n [closeOnBackdropClick]=\"closeOnBackdropClick()\"\n [closeOnEscape]=\"closeOnEscape()\"\n [blockScroll]=\"blockScroll()\"\n [showHeader]=\"showHeader()\"\n [header]=\"header()\"\n [showCloseButton]=\"showCloseButton()\"\n [showFooter]=\"showFooter()\"\n [swipeToClose]=\"swipeToClose()\"\n [customWidth]=\"customWidth()\"\n>\n <ng-content select=\"[sidebarHeader]\" drawerHeader />\n\n <div\n class=\"studio-sidebar__content\"\n [class]=\"'studio-sidebar__content--' + variant()\"\n [style.padding]=\"contentPadding()\"\n [style.gap]=\"contentGap()\"\n [style.background]=\"background()\">\n <ng-content />\n </div>\n\n <ng-content select=\"[sidebarFooter]\" drawerFooter />\n</studio-drawer>\n","/**\n * Sidebar component types\n */\n\nexport type SidebarPosition = 'left' | 'right';\nexport type SidebarSize = 'sm' | 'md' | 'lg' | 'full';\nexport type SidebarVariant = 'default' | 'minimal' | 'compact';\n\nexport interface SidebarConfig {\n position?: SidebarPosition;\n size?: SidebarSize;\n variant?: SidebarVariant;\n collapsible?: boolean;\n defaultCollapsed?: boolean;\n modal?: boolean;\n closeOnNavigate?: boolean;\n showOverlay?: boolean;\n}\n","/**\n * Sidebar component\n */\n\nexport * from './sidebar.component';\nexport * from './sidebar.types';\n","import { Component, ChangeDetectionStrategy, input, output, computed, model, inject, signal, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { IconComponent } from '../icon';\nimport { StudioConfigService } from '../../config';\nimport { classNames, withConfigDefault } from '../../utils';\n\n/**\n * Toggle switch component with customizable size and color\n *\n * @example\n * <studio-switch [(checked)]=\"isEnabled\" label=\"Enable feature\" />\n * <studio-switch [(ngModel)]=\"isEnabled\" label=\"Enable feature\" />\n */\n@Component({\n selector: 'studio-switch',\n standalone: true,\n imports: [IconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SwitchComponent),\n multi: true\n }\n ],\n host: {\n '[class]': 'hostClasses()',\n '[attr.role]': '\"switch\"',\n '[attr.aria-checked]': 'internalChecked()',\n '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\n '[attr.aria-label]': 'ariaLabel() || label()',\n '(click)': 'handleClick()',\n '(keydown.space)': 'handleKeydown($event)',\n '(keydown.enter)': 'handleKeydown($event)',\n '[tabindex]': 'disabled() ? -1 : 0'\n },\n template: `\n <span class=\"studio-switch__container\">\n @if (label() && labelPosition() === 'left') {\n <span class=\"studio-switch__label studio-switch__label--left\">\n {{ label() }}\n </span>\n }\n\n <span class=\"studio-switch__track\">\n <span class=\"studio-switch__thumb\">\n @if (showIcons()) {\n @if (internalChecked()) {\n <studio-icon name=\"check\" [size]=\"iconSize()\" color=\"inherit\" />\n } @else {\n <studio-icon name=\"x\" [size]=\"iconSize()\" color=\"inherit\" />\n }\n }\n </span>\n </span>\n\n @if (label() && labelPosition() === 'right') {\n <span class=\"studio-switch__label studio-switch__label--right\">\n {{ label() }}\n </span>\n }\n </span>\n `,\n styleUrl: './switch.component.scss'\n})\nexport class SwitchComponent implements ControlValueAccessor {\n private readonly configService = inject(StudioConfigService);\n private readonly switchDefaults = computed(() => this.configService.config().components?.switch);\n\n checked = model<boolean>(false);\n disabled = input<boolean>(false);\n label = input<string>();\n labelPosition = input<'left' | 'right'>('right');\n showIcons = input<boolean>(false);\n ariaLabel = input<string>();\n\n sizeInput = input<'sm' | 'md' | 'lg' | undefined>(undefined, { alias: 'size' });\n colorInput = input<'primary' | 'secondary' | 'success' | undefined>(undefined, { alias: 'color' });\n\n size = withConfigDefault(this.sizeInput, computed(() => this.switchDefaults()?.size), 'md');\n color = withConfigDefault(this.colorInput, computed(() => this.switchDefaults()?.color), 'primary');\n\n checkedChange = output<boolean>();\n\n protected internalChecked = signal<boolean>(false);\n\n private onChange: (value: boolean) => void = () => {};\n private onTouched: () => void = () => {};\n\n protected iconSize = computed(() => {\n const sizeMap = { sm: 10, md: 12, lg: 14 };\n return sizeMap[this.size()];\n });\n\n protected hostClasses = computed(() => classNames(\n 'studio-switch',\n `studio-switch--${this.size()}`,\n `studio-switch--${this.color()}`,\n this.internalChecked() && 'studio-switch--checked',\n this.disabled() && 'studio-switch--disabled'\n ));\n\n writeValue(value: boolean): void {\n this.internalChecked.set(value ?? false);\n this.checked.set(value ?? false);\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {}\n\n protected handleClick(): void {\n if (this.disabled()) return;\n this.toggle();\n }\n\n protected handleKeydown(event: KeyboardEvent): void {\n if (this.disabled()) return;\n event.preventDefault();\n this.toggle();\n }\n\n private toggle(): void {\n const newValue = !this.internalChecked();\n this.internalChecked.set(newValue);\n this.checked.set(newValue);\n this.onChange(newValue);\n this.onTouched();\n this.checkedChange.emit(newValue);\n }\n}\n","/**\n * Switch component\n */\n\nexport * from './switch.component';\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n computed,\n model,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { IconComponent } from '../icon';\nimport { classNames } from '../../utils';\nimport {\n PaginationSize,\n PaginationVariant,\n} from './pagination.types';\n\n/**\n * Pagination component for navigating through pages of data\n *\n * @example\n * <studio-pagination\n * [(page)]=\"currentPage\"\n * [(pageSize)]=\"pageSize\"\n * [totalItems]=\"100\"\n * [pageSizeOptions]=\"[10, 25, 50]\"\n * (pageChange)=\"onPageChange($event)\"\n * />\n */\n@Component({\n selector: 'studio-pagination',\n imports: [CommonModule, FormsModule, IconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n },\n template: `\n <div class=\"studio-pagination__container\">\n <!-- Page size selector -->\n @if (showPageSizeSelector()) {\n <div class=\"studio-pagination__page-size\">\n <span class=\"studio-pagination__label\">{{ pageSizeLabel() }}</span>\n <select\n class=\"studio-pagination__select\"\n [ngModel]=\"pageSize()\"\n (ngModelChange)=\"onPageSizeChange($event)\"\n >\n @for (option of pageSizeOptions(); track option) {\n <option [value]=\"option\">{{ option }}</option>\n }\n </select>\n </div>\n }\n\n <!-- Info text -->\n @if (showInfo()) {\n <div class=\"studio-pagination__info\">\n {{ infoText() }}\n </div>\n }\n\n <!-- Navigation -->\n <div class=\"studio-pagination__nav\">\n <!-- First page button -->\n @if (showFirstLast()) {\n <button\n type=\"button\"\n class=\"studio-pagination__btn studio-pagination__btn--nav\"\n [disabled]=\"isFirstPage()\"\n (click)=\"goToFirst()\"\n [attr.aria-label]=\"firstLabel()\"\n >\n <studio-icon name=\"chevrons-left\" [size]=\"iconSize()\" />\n </button>\n }\n\n <!-- Previous button -->\n <button\n type=\"button\"\n class=\"studio-pagination__btn studio-pagination__btn--nav\"\n [disabled]=\"isFirstPage()\"\n (click)=\"goToPrevious()\"\n [attr.aria-label]=\"previousLabel()\"\n >\n <studio-icon name=\"chevron-left\" [size]=\"iconSize()\" />\n </button>\n\n <!-- Page numbers -->\n @if (showPageNumbers()) {\n <div class=\"studio-pagination__pages\">\n @for (pageNum of visiblePages(); track pageNum) {\n @if (pageNum === -1) {\n <span class=\"studio-pagination__ellipsis\">...</span>\n } @else {\n <button\n type=\"button\"\n class=\"studio-pagination__btn studio-pagination__btn--page\"\n [class.studio-pagination__btn--active]=\"pageNum === page()\"\n (click)=\"goToPage(pageNum)\"\n [attr.aria-label]=\"'Page ' + pageNum\"\n [attr.aria-current]=\"pageNum === page() ? 'page' : null\"\n >\n {{ pageNum }}\n </button>\n }\n }\n </div>\n } @else {\n <!-- Simple page indicator -->\n <span class=\"studio-pagination__indicator\">\n {{ page() }} / {{ totalPages() }}\n </span>\n }\n\n <!-- Next button -->\n <button\n type=\"button\"\n class=\"studio-pagination__btn studio-pagination__btn--nav\"\n [disabled]=\"isLastPage()\"\n (click)=\"goToNext()\"\n [attr.aria-label]=\"nextLabel()\"\n >\n <studio-icon name=\"chevron-right\" [size]=\"iconSize()\" />\n </button>\n\n <!-- Last page button -->\n @if (showFirstLast()) {\n <button\n type=\"button\"\n class=\"studio-pagination__btn studio-pagination__btn--nav\"\n [disabled]=\"isLastPage()\"\n (click)=\"goToLast()\"\n [attr.aria-label]=\"lastLabel()\"\n >\n <studio-icon name=\"chevrons-right\" [size]=\"iconSize()\" />\n </button>\n }\n </div>\n </div>\n `,\n styles: `\n :host {\n display: block;\n font-family: var(--studio-font-family);\n }\n\n .studio-pagination__container {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 1rem;\n flex-wrap: wrap;\n }\n\n .studio-pagination__page-size {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n }\n\n .studio-pagination__label {\n font-size: 0.875rem;\n color: var(--studio-text-secondary);\n white-space: nowrap;\n }\n\n .studio-pagination__select {\n padding: 0.375rem 0.75rem;\n font-size: 0.875rem;\n border: 1px solid var(--studio-border-primary);\n border-radius: var(--studio-radius-md);\n background: var(--studio-bg-primary);\n color: var(--studio-text-primary);\n cursor: pointer;\n outline: none;\n transition: border-color var(--studio-transition-fast);\n\n &:hover {\n border-color: var(--studio-border-hover, var(--studio-border-primary));\n }\n\n &:focus {\n border-color: var(--studio-color-primary);\n box-shadow: 0 0 0 2px var(--studio-color-primary-alpha, rgba(59, 130, 246, 0.2));\n }\n }\n\n .studio-pagination__info {\n font-size: 0.875rem;\n color: var(--studio-text-secondary);\n white-space: nowrap;\n }\n\n .studio-pagination__nav {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n }\n\n .studio-pagination__btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border: 1px solid var(--studio-border-primary);\n border-radius: var(--studio-radius-md);\n background: var(--studio-bg-primary);\n color: var(--studio-text-primary);\n cursor: pointer;\n transition: all var(--studio-transition-fast);\n\n &:hover:not(:disabled) {\n background: var(--studio-bg-secondary);\n border-color: var(--studio-border-hover, var(--studio-border-primary));\n }\n\n &:active:not(:disabled) {\n transform: scale(0.95);\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n }\n\n .studio-pagination__btn--nav {\n padding: 0.375rem;\n }\n\n .studio-pagination__btn--page {\n min-width: 2rem;\n padding: 0.375rem 0.5rem;\n font-size: 0.875rem;\n }\n\n .studio-pagination__btn--active {\n background: var(--studio-color-primary);\n border-color: var(--studio-color-primary);\n color: white;\n\n &:hover:not(:disabled) {\n background: var(--studio-color-primary-hover, var(--studio-color-primary));\n border-color: var(--studio-color-primary-hover, var(--studio-color-primary));\n }\n }\n\n .studio-pagination__pages {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n }\n\n .studio-pagination__ellipsis {\n padding: 0 0.5rem;\n color: var(--studio-text-secondary);\n }\n\n .studio-pagination__indicator {\n padding: 0 0.75rem;\n font-size: 0.875rem;\n color: var(--studio-text-secondary);\n white-space: nowrap;\n }\n\n /* Size variants */\n :host(.pagination--sm) {\n .studio-pagination__label,\n .studio-pagination__info,\n .studio-pagination__indicator {\n font-size: 0.75rem;\n }\n\n .studio-pagination__select {\n padding: 0.25rem 0.5rem;\n font-size: 0.75rem;\n }\n\n .studio-pagination__btn--nav {\n padding: 0.25rem;\n }\n\n .studio-pagination__btn--page {\n min-width: 1.75rem;\n padding: 0.25rem 0.375rem;\n font-size: 0.75rem;\n }\n }\n\n :host(.pagination--lg) {\n .studio-pagination__label,\n .studio-pagination__info,\n .studio-pagination__indicator {\n font-size: 1rem;\n }\n\n .studio-pagination__select {\n padding: 0.5rem 1rem;\n font-size: 1rem;\n }\n\n .studio-pagination__btn--nav {\n padding: 0.5rem;\n }\n\n .studio-pagination__btn--page {\n min-width: 2.5rem;\n padding: 0.5rem 0.75rem;\n font-size: 1rem;\n }\n }\n\n /* Variant: minimal */\n :host(.pagination--minimal) {\n .studio-pagination__btn {\n border: none;\n background: transparent;\n\n &:hover:not(:disabled) {\n background: var(--studio-bg-secondary);\n }\n }\n\n .studio-pagination__btn--active {\n background: var(--studio-color-primary);\n color: white;\n }\n }\n\n /* Variant: compact */\n :host(.pagination--compact) {\n .studio-pagination__container {\n gap: 0.5rem;\n }\n\n .studio-pagination__nav {\n gap: 0.125rem;\n }\n\n .studio-pagination__pages {\n gap: 0.125rem;\n }\n }\n `,\n})\nexport class PaginationComponent {\n // Two-way bindings\n page = model<number>(1);\n pageSize = model<number>(10);\n\n // Inputs\n totalItems = input<number>(0);\n pageSizeOptions = input<number[]>([10, 25, 50, 100]);\n size = input<PaginationSize>('md');\n variant = input<PaginationVariant>('default');\n maxVisiblePages = input<number>(5);\n\n // Display options\n showPageSizeSelector = input<boolean>(true);\n showPageNumbers = input<boolean>(true);\n showInfo = input<boolean>(true);\n showFirstLast = input<boolean>(false);\n\n // Labels\n pageSizeLabel = input<string>('Показать:');\n previousLabel = input<string>('Предыдущая');\n nextLabel = input<string>('Следующая');\n firstLabel = input<string>('Первая');\n lastLabel = input<string>('Последняя');\n infoTemplate = input<string>('Показано {from}-{to} из {total}');\n\n // Note: pageChange and pageSizeChange events are automatically created by model()\n // They emit the new value directly (number), not event objects\n\n // Computed values\n protected totalPages = computed(() => {\n const total = this.totalItems();\n const size = this.pageSize();\n return Math.max(1, Math.ceil(total / size));\n });\n\n protected isFirstPage = computed(() => this.page() <= 1);\n protected isLastPage = computed(() => this.page() >= this.totalPages());\n\n protected iconSize = computed(() => {\n const sizeMap: Record<PaginationSize, number> = { sm: 14, md: 16, lg: 20 };\n return sizeMap[this.size()];\n });\n\n protected hostClasses = computed(() =>\n classNames(\n 'studio-pagination',\n `pagination--${this.size()}`,\n `pagination--${this.variant()}`\n )\n );\n\n protected infoText = computed(() => {\n const currentPage = this.page();\n const size = this.pageSize();\n const total = this.totalItems();\n\n const from = total === 0 ? 0 : (currentPage - 1) * size + 1;\n const to = Math.min(currentPage * size, total);\n\n return this.infoTemplate()\n .replace('{from}', from.toString())\n .replace('{to}', to.toString())\n .replace('{total}', total.toString());\n });\n\n protected visiblePages = computed(() => {\n const totalPages = this.totalPages();\n const currentPage = this.page();\n const maxVisible = this.maxVisiblePages();\n\n if (totalPages <= maxVisible) {\n return Array.from({ length: totalPages }, (_, i) => i + 1);\n }\n\n const pages: number[] = [];\n const half = Math.floor(maxVisible / 2);\n\n let start = Math.max(1, currentPage - half);\n let end = Math.min(totalPages, start + maxVisible - 1);\n\n if (end - start < maxVisible - 1) {\n start = Math.max(1, end - maxVisible + 1);\n }\n\n // Always show first page\n if (start > 1) {\n pages.push(1);\n if (start > 2) {\n pages.push(-1); // Ellipsis\n }\n }\n\n // Middle pages\n for (let i = start; i <= end; i++) {\n if (!pages.includes(i)) {\n pages.push(i);\n }\n }\n\n // Always show last page\n if (end < totalPages) {\n if (end < totalPages - 1) {\n pages.push(-1); // Ellipsis\n }\n pages.push(totalPages);\n }\n\n return pages;\n });\n\n // Methods\n goToPage(pageNum: number): void {\n if (pageNum < 1 || pageNum > this.totalPages() || pageNum === this.page()) {\n return;\n }\n this.page.set(pageNum);\n // model() automatically emits pageChange with the new value\n }\n\n goToFirst(): void {\n this.goToPage(1);\n }\n\n goToLast(): void {\n this.goToPage(this.totalPages());\n }\n\n goToPrevious(): void {\n this.goToPage(this.page() - 1);\n }\n\n goToNext(): void {\n this.goToPage(this.page() + 1);\n }\n\n onPageSizeChange(newSize: number): void {\n const previousSize = this.pageSize();\n const newSizeNum = Number(newSize);\n\n if (newSizeNum === previousSize) return;\n\n // Calculate new page to keep similar position\n const currentFirstItem = (this.page() - 1) * previousSize + 1;\n const newPage = Math.ceil(currentFirstItem / newSizeNum);\n\n this.pageSize.set(newSizeNum);\n this.page.set(Math.max(1, Math.min(newPage, Math.ceil(this.totalItems() / newSizeNum))));\n // model() automatically emits pageSizeChange and pageChange with new values\n }\n}\n","/**\n * Pagination component types\n */\n\nexport type PaginationSize = 'sm' | 'md' | 'lg';\nexport type PaginationVariant = 'default' | 'minimal' | 'compact';\n\nexport interface PaginationPageChangeEvent {\n page: number;\n pageSize: number;\n totalItems: number;\n totalPages: number;\n}\n\nexport interface PaginationPageSizeChangeEvent {\n pageSize: number;\n previousPageSize: number;\n}\n","/**\n * Pagination component\n */\n\nexport * from './pagination.component';\nexport * from './pagination.types';\n","import { Directive, Input, TemplateRef, ContentChild } from '@angular/core';\nimport { TableColumn } from './table.types';\n\n/**\n * Directive for declarative column definition\n *\n * @example\n * <studio-table-column\n * key=\"name\"\n * label=\"Name\"\n * [sortable]=\"true\">\n * <ng-template let-row>{{ row.name }}</ng-template>\n * </studio-table-column>\n */\n@Directive({\n selector: 'studio-table-column',\n standalone: true\n})\nexport class TableColumnDirective<T = any> {\n @Input({ required: true }) key!: keyof T | string;\n @Input({ required: true }) label!: string;\n @Input() field?: keyof T | ((row: T) => any);\n @Input() width?: string;\n @Input() minWidth?: string;\n @Input() maxWidth?: string;\n @Input() sortable?: boolean;\n @Input() sortFn?: (a: T, b: T, direction: 'asc' | 'desc') => number;\n @Input() filterable?: boolean;\n @Input() align?: 'left' | 'center' | 'right';\n @Input() fixed?: 'left' | 'right' | false;\n @Input() hideOnMobile?: boolean;\n @Input() priority?: number;\n @Input() cellClass?: string | ((row: T) => string);\n @Input() headerClass?: string;\n @Input() formatter?: (value: any, row: T) => string;\n @Input() resizable?: boolean;\n\n @ContentChild(TemplateRef) template?: TemplateRef<any>;\n\n /**\n * Convert directive inputs to TableColumn config\n */\n toColumnConfig(): TableColumn<T> {\n return {\n key: this.key,\n label: this.label,\n field: this.field,\n width: this.width,\n minWidth: this.minWidth,\n maxWidth: this.maxWidth,\n sortable: this.sortable,\n sortFn: this.sortFn,\n filterable: this.filterable,\n align: this.align,\n fixed: this.fixed,\n hideOnMobile: this.hideOnMobile,\n priority: this.priority,\n cellTemplate: this.template,\n cellClass: this.cellClass,\n headerClass: this.headerClass,\n formatter: this.formatter,\n resizable: this.resizable\n };\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n signal,\n effect,\n contentChildren,\n contentChild,\n TemplateRef,\n inject,\n model\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IconComponent } from '../icon';\nimport { CheckboxComponent } from '../checkbox';\nimport { ButtonComponent } from '../button';\nimport { StudioConfigService } from '../../config';\nimport { classNames, withConfigDefault } from '../../utils';\nimport { TableColumnDirective } from './table-column.directive';\nimport {\n TableColumn,\n TableSort,\n SortDirection,\n SelectionMode,\n TableDensity,\n TableVariant,\n SortEvent,\n SelectionEvent,\n RowAction,\n EmptyStateConfig,\n TableCellContext,\n TableHeaderContext\n} from './table.types';\n\n/**\n * Enterprise-grade Table component with full feature set\n *\n * @example\n * <studio-table\n * [data]=\"users\"\n * [columns]=\"columns\"\n * selectionMode=\"multiple\"\n * [(selected)]=\"selectedUsers\">\n * </studio-table>\n */\n@Component({\n selector: 'studio-table',\n standalone: true,\n imports: [CommonModule, IconComponent, CheckboxComponent, ButtonComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n },\n templateUrl: './table.component.html',\n styleUrl: './table.component.scss'\n})\nexport class TableComponent<T = any> {\n private readonly configService = inject(StudioConfigService);\n private readonly tableDefaults = computed(() => this.configService.config().components?.table);\n\n // Config inputs with defaults\n variantInput = input<TableVariant | undefined>(undefined, { alias: 'variant' });\n densityInput = input<TableDensity | undefined>(undefined, { alias: 'density' });\n\n variant = withConfigDefault(this.variantInput, computed(() => this.tableDefaults()?.variant), 'default');\n density = withConfigDefault(this.densityInput, computed(() => this.tableDefaults()?.density), 'comfortable');\n\n // Data inputs\n data = input<T[]>([]);\n columns = input<TableColumn<T>[]>([]);\n rowKey = input<keyof T | ((row: T) => string | number)>('id' as keyof T);\n\n // Column directives (declarative mode)\n columnDirectives = contentChildren(TableColumnDirective);\n\n // Features\n selectionMode = input<SelectionMode>('none');\n sortable = input<boolean>(true);\n sortMode = input<'client' | 'server'>('client');\n hoverable = input<boolean>(true);\n stickyHeader = input<boolean>(false);\n showHeader = input<boolean>(true);\n\n // Row expansion\n expandable = input<boolean>(false);\n expandedRowTemplate = contentChild<TemplateRef<any>>('expandedRow');\n expandMultiple = input<boolean>(false);\n\n // Loading & Empty states\n loading = input<boolean>(false);\n loadingRows = input<number>(5);\n emptyState = input<EmptyStateConfig>({\n icon: 'inbox',\n title: 'No data',\n message: 'No data available to display'\n });\n\n // Row actions\n rowActions = input<RowAction<T>[]>([]);\n compactActions = input<boolean>(false);\n\n // Responsive\n responsive = input<boolean>(true);\n mobileBreakpoint = input<number>(768);\n\n // State models\n selected = model<T[]>([]);\n sort = model<TableSort<T> | null>(null);\n expanded = model<Set<string | number>>(new Set());\n\n // Outputs\n sortChange = output<SortEvent<T>>();\n selectionChange = output<SelectionEvent<T>>();\n rowClick = output<T>();\n rowDblClick = output<T>();\n\n // Internal state\n protected currentSort = signal<TableSort<T> | null>(null);\n protected selectedRows = signal<Set<string | number>>(new Set());\n protected expandedRows = signal<Set<string | number>>(new Set());\n\n // Computed columns (merge programmatic + declarative)\n protected finalColumns = computed(() => {\n const programmatic = this.columns();\n const declarative = this.columnDirectives().map(dir => dir.toColumnConfig());\n return declarative.length > 0 ? declarative : programmatic;\n });\n\n // Computed data (sorted, filtered)\n protected processedData = computed(() => {\n let result = [...this.data()];\n\n // Apply sorting (client-side only)\n if (this.sortMode() === 'client' && this.currentSort()) {\n result = this.applySorting(result);\n }\n\n return result;\n });\n\n // Selection helpers\n protected allSelected = computed(() => {\n const data = this.processedData();\n const selected = this.selectedRows();\n return data.length > 0 && data.every(row => selected.has(this.getRowKey(row)));\n });\n\n protected someSelected = computed(() => {\n const data = this.processedData();\n const selected = this.selectedRows();\n return data.some(row => selected.has(this.getRowKey(row))) && !this.allSelected();\n });\n\n protected hostClasses = computed(() => classNames(\n 'studio-table',\n `studio-table--${this.variant()}`,\n `studio-table--${this.density()}`,\n this.hoverable() && 'studio-table--hoverable',\n this.stickyHeader() && 'studio-table--sticky-header',\n this.loading() && 'studio-table--loading',\n this.responsive() && 'studio-table--responsive',\n this.compactActions() && 'studio-table--compact-actions'\n ));\n\n constructor() {\n // Sync model signals\n effect(() => {\n const sortVal = this.sort();\n if (sortVal) this.currentSort.set(sortVal);\n });\n\n effect(() => {\n const current = this.currentSort();\n if (current) this.sort.set(current);\n });\n\n effect(() => {\n const selected = this.selected();\n const keys = new Set(selected.map(row => this.getRowKey(row)));\n this.selectedRows.set(keys);\n });\n\n effect(() => {\n const expanded = this.expanded();\n this.expandedRows.set(expanded);\n });\n }\n\n // Public API\n sortBy(column: TableColumn<T>, direction?: SortDirection): void {\n if (!column.sortable && !this.sortable()) return;\n\n const currentSort = this.currentSort();\n const prevDirection = currentSort?.column === column.key ? currentSort.direction : null;\n\n // Toggle: asc -> desc -> null\n let newDirection: SortDirection | null = direction || 'asc';\n if (!direction) {\n if (prevDirection === 'asc') newDirection = 'desc';\n else if (prevDirection === 'desc') newDirection = null;\n }\n\n if (newDirection) {\n this.currentSort.set({ column: column.key as string, direction: newDirection });\n this.sortChange.emit({\n column,\n direction: newDirection,\n previousDirection: prevDirection\n });\n } else {\n this.currentSort.set(null);\n }\n }\n\n selectRow(row: T): void {\n if (this.selectionMode() === 'none') return;\n\n const rowKey = this.getRowKey(row);\n const selected = new Set(this.selectedRows());\n\n if (this.selectionMode() === 'single') {\n selected.clear();\n selected.add(rowKey);\n } else {\n if (selected.has(rowKey)) {\n selected.delete(rowKey);\n } else {\n selected.add(rowKey);\n }\n }\n\n this.selectedRows.set(selected);\n this.updateSelectedModel();\n\n this.selectionChange.emit({\n selected: this.getSelectedRows(),\n row,\n isSelected: selected.has(rowKey)\n });\n }\n\n selectAll(select: boolean): void {\n if (this.selectionMode() !== 'multiple') return;\n\n const selected = new Set<string | number>();\n if (select) {\n this.processedData().forEach(row => {\n selected.add(this.getRowKey(row));\n });\n }\n\n this.selectedRows.set(selected);\n this.updateSelectedModel();\n\n this.selectionChange.emit({\n selected: this.getSelectedRows(),\n isSelected: select\n });\n }\n\n toggleRowExpansion(row: T): void {\n if (!this.expandable()) return;\n\n const rowKey = this.getRowKey(row);\n const expanded = new Set(this.expandedRows());\n\n if (!this.expandMultiple()) {\n expanded.clear();\n }\n\n if (expanded.has(rowKey)) {\n expanded.delete(rowKey);\n } else {\n expanded.add(rowKey);\n }\n\n this.expandedRows.set(expanded);\n this.expanded.set(expanded);\n }\n\n isRowExpanded(row: T): boolean {\n return this.expandedRows().has(this.getRowKey(row));\n }\n\n isRowSelected(row: T): boolean {\n return this.selectedRows().has(this.getRowKey(row));\n }\n\n getCellValue(row: T, column: TableColumn<T>): any {\n if (column.field) {\n if (typeof column.field === 'function') {\n return column.field(row);\n }\n return row[column.field as keyof T];\n }\n return row[column.key as keyof T];\n }\n\n getHeaderClass(column: TableColumn<T>): string {\n const classes = ['studio-table__th'];\n\n if (column.headerClass) classes.push(column.headerClass);\n if (column.sortable) classes.push('studio-table__th--sortable');\n if (this.currentSort()?.column === column.key) classes.push('studio-table__th--sorted');\n\n const align = column.align || 'left';\n classes.push(`studio-table__th--align-${align}`);\n\n if (column.fixed) classes.push(`studio-table__th--fixed-${column.fixed}`);\n if (column.hideOnMobile) classes.push('studio-table__th--hide-mobile');\n\n return classes.join(' ');\n }\n\n getCellClass(row: T, column: TableColumn<T>): string {\n if (typeof column.cellClass === 'function') {\n return column.cellClass(row);\n }\n return column.cellClass || '';\n }\n\n getFullCellClass(row: T, column: TableColumn<T>): string {\n const classes = ['studio-table__td'];\n\n const customClass = this.getCellClass(row, column);\n if (customClass) classes.push(customClass);\n\n const align = column.align || 'left';\n classes.push(`studio-table__td--align-${align}`);\n\n if (column.fixed) classes.push(`studio-table__td--fixed-${column.fixed}`);\n if (column.hideOnMobile) classes.push('studio-table__td--hide-mobile');\n\n return classes.join(' ');\n }\n\n getCellContext(row: T, column: TableColumn<T>, index: number): TableCellContext<T> {\n const value = this.getCellValue(row, column);\n return {\n $implicit: value,\n row,\n column,\n index\n };\n }\n\n getHeaderContext(column: TableColumn<T>): TableHeaderContext<T> {\n const currentSort = this.currentSort();\n return {\n column,\n sorted: currentSort?.column === column.key,\n direction: currentSort?.column === column.key ? currentSort.direction : null\n };\n }\n\n getSortIcon(column: TableColumn<T>): string {\n const currentSort = this.currentSort();\n if (currentSort?.column !== column.key) return 'arrow-up-down';\n return currentSort.direction === 'asc' ? 'arrow-up' : 'arrow-down';\n }\n\n handleRowClick(row: T, event: Event): void {\n if ((event.target as HTMLElement).closest('.studio-table__actions')) return;\n this.rowClick.emit(row);\n }\n\n handleRowDblClick(row: T): void {\n this.rowDblClick.emit(row);\n }\n\n executeRowAction(action: RowAction<T>, row: T, event: Event): void {\n event.stopPropagation();\n if (action.disabled && action.disabled(row)) return;\n action.handler(row);\n }\n\n isActionVisible(action: RowAction<T>, row: T): boolean {\n return !action.visible || action.visible(row);\n }\n\n isActionDisabled(action: RowAction<T>, row: T): boolean {\n return action.disabled ? action.disabled(row) : false;\n }\n\n // Public helpers for template\n getRowKey(row: T): string | number {\n const keyFn = this.rowKey();\n if (typeof keyFn === 'function') {\n const result = keyFn(row);\n return result ?? this.processedData().indexOf(row);\n }\n const value = row[keyFn] as string | number;\n // Fallback to index if key is empty/undefined\n return value ?? this.processedData().indexOf(row);\n }\n\n private getSelectedRows(): T[] {\n const selected = this.selectedRows();\n return this.processedData().filter(row => selected.has(this.getRowKey(row)));\n }\n\n private updateSelectedModel(): void {\n this.selected.set(this.getSelectedRows());\n }\n\n private applySorting(data: T[]): T[] {\n const sortConfig = this.currentSort();\n if (!sortConfig) return data;\n\n const column = this.finalColumns().find(col => col.key === sortConfig.column);\n if (!column) return data;\n\n return [...data].sort((a, b) => {\n if (column.sortFn) {\n return column.sortFn(a, b, sortConfig.direction);\n }\n\n const aVal = this.getCellValue(a, column);\n const bVal = this.getCellValue(b, column);\n\n if (aVal === bVal) return 0;\n if (aVal == null) return 1;\n if (bVal == null) return -1;\n\n const comparison = aVal < bVal ? -1 : 1;\n return sortConfig.direction === 'asc' ? comparison : -comparison;\n });\n }\n}\n","<div class=\"studio-table__wrapper\">\n <!-- Loading Overlay -->\n @if (loading()) {\n <div class=\"studio-table__loading-overlay\">\n <studio-icon name=\"loader-2\" [size]=\"32\" class=\"studio-table__spinner\" />\n </div>\n }\n\n <!-- Table Container -->\n <div class=\"studio-table__container\">\n <table class=\"studio-table__table\">\n <!-- Header -->\n @if (showHeader()) {\n <thead class=\"studio-table__thead\">\n <tr class=\"studio-table__header-row\">\n <!-- Selection Column -->\n @if (selectionMode() === 'multiple') {\n <th class=\"studio-table__th studio-table__th--selection\">\n <studio-checkbox\n [value]=\"allSelected()\"\n [indeterminate]=\"someSelected()\"\n (changed)=\"selectAll($event)\"\n />\n </th>\n }\n\n <!-- Expansion Column -->\n @if (expandable()) {\n <th class=\"studio-table__th studio-table__th--expand\"></th>\n }\n\n <!-- Data Columns -->\n @for (column of finalColumns(); track column.key) {\n <th\n [class]=\"getHeaderClass(column)\"\n [style.width]=\"column.width\"\n [style.min-width]=\"column.minWidth\"\n [style.max-width]=\"column.maxWidth\"\n (click)=\"column.sortable && sortBy(column)\">\n\n <div class=\"studio-table__header-content\">\n @if (column.headerTemplate) {\n <ng-container *ngTemplateOutlet=\"column.headerTemplate; context: getHeaderContext(column)\" />\n } @else {\n <span>{{ column.label }}</span>\n @if (column.sortable && sortable()) {\n <studio-icon\n [name]=\"getSortIcon(column)\"\n [size]=\"16\"\n class=\"studio-table__sort-icon\"\n />\n }\n }\n </div>\n </th>\n }\n\n <!-- Actions Column -->\n @if (rowActions().length > 0) {\n <th class=\"studio-table__th studio-table__th--actions\">Actions</th>\n }\n </tr>\n </thead>\n }\n\n <!-- Body -->\n <tbody class=\"studio-table__tbody\">\n <!-- Loading Skeleton -->\n @if (loading()) {\n @for (i of [].constructor(loadingRows()); track $index) {\n <tr class=\"studio-table__row studio-table__row--loading\">\n @if (selectionMode() === 'multiple') {\n <td class=\"studio-table__td\">\n <div class=\"studio-table__skeleton studio-table__skeleton--checkbox\"></div>\n </td>\n }\n @if (expandable()) {\n <td class=\"studio-table__td\">\n <div class=\"studio-table__skeleton studio-table__skeleton--icon\"></div>\n </td>\n }\n @for (column of finalColumns(); track column.key) {\n <td class=\"studio-table__td\" [class.studio-table__th--hide-mobile]=\"column.hideOnMobile\">\n <div class=\"studio-table__skeleton\"></div>\n </td>\n }\n @if (rowActions().length > 0) {\n <td class=\"studio-table__td\">\n <div class=\"studio-table__skeleton studio-table__skeleton--icon\"></div>\n </td>\n }\n </tr>\n }\n }\n\n <!-- Empty State -->\n @if (!loading() && processedData().length === 0) {\n <tr class=\"studio-table__row studio-table__row--empty\">\n <td [attr.colspan]=\"finalColumns().length + (selectionMode() === 'multiple' ? 1 : 0) + (expandable() ? 1 : 0) + (rowActions().length > 0 ? 1 : 0)\" class=\"studio-table__td\">\n <div class=\"studio-table__empty\">\n <studio-icon [name]=\"emptyState().icon || 'inbox'\" [size]=\"48\" class=\"studio-table__empty-icon\" />\n <h3 class=\"studio-table__empty-title\">{{ emptyState().title }}</h3>\n <p class=\"studio-table__empty-message\">{{ emptyState().message }}</p>\n @if (emptyState().action) {\n <studio-button\n size=\"sm\"\n (clicked)=\"emptyState().action!.handler()\">\n {{ emptyState().action!.label }}\n </studio-button>\n }\n </div>\n </td>\n </tr>\n }\n\n <!-- Data Rows -->\n @if (!loading()) {\n @for (row of processedData(); track getRowKey(row); let rowIndex = $index) {\n <!-- Main Row -->\n <tr\n class=\"studio-table__row\"\n [class.studio-table__row--selected]=\"isRowSelected(row)\"\n [class.studio-table__row--expanded]=\"isRowExpanded(row)\"\n [class.studio-table__row--clickable]=\"selectionMode() === 'single'\"\n (click)=\"selectionMode() === 'single' && selectRow(row); handleRowClick(row, $event)\"\n (dblclick)=\"handleRowDblClick(row)\">\n\n <!-- Selection Cell -->\n @if (selectionMode() === 'multiple') {\n <td class=\"studio-table__td studio-table__td--selection\">\n <studio-checkbox\n [value]=\"isRowSelected(row)\"\n (changed)=\"selectRow(row)\"\n (click)=\"$event.stopPropagation()\"\n />\n </td>\n }\n\n <!-- Expansion Cell -->\n @if (expandable()) {\n <td class=\"studio-table__td studio-table__td--expand\">\n <studio-button\n variant=\"ghost\"\n size=\"sm\"\n iconPosition=\"only\"\n [icon]=\"isRowExpanded(row) ? 'chevron-down' : 'chevron-right'\"\n (clicked)=\"toggleRowExpansion(row); $event.stopPropagation()\"\n />\n </td>\n }\n\n <!-- Data Cells -->\n @for (column of finalColumns(); track column.key) {\n <td\n [class]=\"getFullCellClass(row, column)\"\n [attr.data-label]=\"column.label\">\n\n @if (column.cellTemplate) {\n <ng-container *ngTemplateOutlet=\"column.cellTemplate; context: getCellContext(row, column, rowIndex)\" />\n } @else {\n <span>{{ column.formatter ? column.formatter(getCellValue(row, column), row) : getCellValue(row, column) }}</span>\n }\n </td>\n }\n\n <!-- Actions Cell -->\n @if (rowActions().length > 0) {\n <td class=\"studio-table__td studio-table__td--actions\">\n <div class=\"studio-table__actions\">\n @for (action of rowActions(); track action.label) {\n @if (isActionVisible(action, row)) {\n @if (action.divider) {\n <div class=\"studio-table__action-divider\"></div>\n }\n <studio-button\n variant=\"ghost\"\n size=\"sm\"\n [icon]=\"action.icon\"\n [iconPosition]=\"compactActions() ? 'only' : 'left'\"\n [disabled]=\"isActionDisabled(action, row)\"\n [color]=\"action.variant === 'danger' ? 'error' : 'primary'\"\n [attr.title]=\"compactActions() ? action.label : null\"\n (clicked)=\"executeRowAction(action, row, $event)\">\n @if (!compactActions()) {\n {{ action.label }}\n }\n </studio-button>\n }\n }\n </div>\n </td>\n }\n </tr>\n\n <!-- Expanded Row -->\n @if (expandable() && isRowExpanded(row) && expandedRowTemplate()) {\n <tr class=\"studio-table__row studio-table__row--expansion\">\n <td [attr.colspan]=\"finalColumns().length + (selectionMode() === 'multiple' ? 1 : 0) + (expandable() ? 1 : 0) + (rowActions().length > 0 ? 1 : 0)\" class=\"studio-table__td\">\n <div class=\"studio-table__expansion-content\">\n <ng-container *ngTemplateOutlet=\"expandedRowTemplate(); context: { $implicit: row, index: rowIndex }\" />\n </div>\n </td>\n </tr>\n }\n }\n }\n </tbody>\n </table>\n </div>\n</div>\n","/**\n * Table component types and interfaces\n * Enterprise-grade type-safe table with full feature set\n */\n\nimport { Signal, TemplateRef } from '@angular/core';\n\n/**\n * Column definition with type safety\n */\nexport interface TableColumn<T = any> {\n /** Unique column identifier */\n key: keyof T | string;\n /** Column header label */\n label: string;\n /** Data accessor function or property path */\n field?: keyof T | ((row: T) => any);\n /** Column width (CSS value) */\n width?: string;\n /** Minimum column width */\n minWidth?: string;\n /** Maximum column width */\n maxWidth?: string;\n /** Enable sorting for this column */\n sortable?: boolean;\n /** Custom sort comparator */\n sortFn?: (a: T, b: T, direction: SortDirection) => number;\n /** Enable filtering */\n filterable?: boolean;\n /** Column alignment */\n align?: 'left' | 'center' | 'right';\n /** Fixed column (sticky) */\n fixed?: 'left' | 'right' | false;\n /** Hide column on mobile */\n hideOnMobile?: boolean;\n /** Column priority for responsive (higher = keep visible longer) */\n priority?: number;\n /** Custom cell template */\n cellTemplate?: TemplateRef<TableCellContext<T>>;\n /** Custom header template */\n headerTemplate?: TemplateRef<TableHeaderContext<T>>;\n /** Cell CSS class */\n cellClass?: string | ((row: T) => string);\n /** Header CSS class */\n headerClass?: string;\n /** Format cell value */\n formatter?: (value: any, row: T) => string;\n /** Column is resizable */\n resizable?: boolean;\n}\n\n/**\n * Table cell template context\n */\nexport interface TableCellContext<T> {\n $implicit: any;\n row: T;\n column: TableColumn<T>;\n index: number;\n}\n\n/**\n * Table header template context\n */\nexport interface TableHeaderContext<T> {\n column: TableColumn<T>;\n sorted: boolean;\n direction: SortDirection | null;\n}\n\n/**\n * Sort configuration\n */\nexport interface TableSort<T = any> {\n column: keyof T | string;\n direction: SortDirection;\n}\n\nexport type SortDirection = 'asc' | 'desc';\n\n/**\n * Selection mode\n */\nexport type SelectionMode = 'none' | 'single' | 'multiple';\n\n/**\n * Table density/size\n */\nexport type TableDensity = 'compact' | 'comfortable' | 'spacious';\n\n/**\n * Table variant styles\n */\nexport type TableVariant = 'default' | 'striped' | 'bordered' | 'minimal';\n\n/**\n * Row expansion state\n */\nexport interface RowExpansion<T> {\n row: T;\n expanded: boolean;\n}\n\n/**\n * Table state (for external control)\n */\nexport interface TableState<T = any> {\n /** Currently sorted column */\n sort?: TableSort<T>;\n /** Selected row indices or IDs */\n selection?: Set<number | string>;\n /** Expanded row indices or IDs */\n expanded?: Set<number | string>;\n /** Current page (if using pagination) */\n page?: number;\n /** Page size */\n pageSize?: number;\n /** Global filter/search value */\n filter?: string;\n}\n\n/**\n * Sort event payload\n */\nexport interface SortEvent<T = any> {\n column: TableColumn<T>;\n direction: SortDirection;\n previousDirection: SortDirection | null;\n}\n\n/**\n * Selection event payload\n */\nexport interface SelectionEvent<T = any> {\n selected: T[];\n row?: T;\n isSelected: boolean;\n}\n\n/**\n * Row action definition\n */\nexport interface RowAction<T = any> {\n label: string;\n icon?: string;\n handler: (row: T) => void;\n visible?: (row: T) => boolean;\n disabled?: (row: T) => boolean;\n variant?: 'default' | 'danger';\n divider?: boolean;\n}\n\n/**\n * Empty state configuration\n */\nexport interface EmptyStateConfig {\n icon?: string;\n title?: string;\n message?: string;\n action?: {\n label: string;\n handler: () => void;\n };\n}\n","import { Component, ChangeDetectionStrategy, input, output, computed, signal, effect, TemplateRef, contentChildren } from '@angular/core';\nimport { IconComponent } from '../icon';\nimport { classNames } from '../../utils';\nimport { TabsVariant, TabsSize, TabsOrientation } from './tabs.types';\n\nexport interface TabItem {\n id: string;\n label: string;\n icon?: string;\n disabled?: boolean;\n content?: TemplateRef<any>;\n}\n\n@Component({\n selector: 'studio-tabs',\n standalone: true,\n imports: [IconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n },\n template: `\n <div class=\"tabs__header\" [class.tabs__header--vertical]=\"orientation() === 'vertical'\">\n @for (tab of tabs(); track tab.id) {\n <button\n type=\"button\"\n class=\"tabs__tab\"\n [class.tabs__tab--active]=\"activeTab() === tab.id\"\n [class.tabs__tab--disabled]=\"tab.disabled\"\n [disabled]=\"tab.disabled\"\n (click)=\"selectTab(tab.id)\"\n >\n @if (tab.icon) {\n <studio-icon [name]=\"tab.icon\" [size]=\"iconSize()\" />\n }\n <span>{{ tab.label }}</span>\n </button>\n }\n </div>\n \n <div class=\"tabs__content\">\n <ng-content />\n </div>\n `,\n styles: `\n :host {\n display: flex;\n flex-direction: column;\n font-family: var(--studio-font-family);\n }\n\n :host(.tabs--vertical) {\n flex-direction: row;\n }\n\n .tabs__header {\n display: flex;\n gap: 0.25rem;\n border-bottom: 2px solid var(--studio-border-primary);\n\n &--vertical {\n flex-direction: column;\n border-bottom: none;\n border-right: 2px solid var(--studio-border-primary);\n padding-right: 1rem;\n }\n }\n\n .tabs__tab {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.75rem 1rem;\n background: none;\n border: none;\n border-bottom: 2px solid transparent;\n color: var(--studio-text-secondary);\n font-size: 0.875rem;\n font-weight: var(--studio-font-weight-medium);\n cursor: pointer;\n transition: all var(--studio-transition-fast);\n position: relative;\n margin-bottom: -2px;\n\n &:hover:not(:disabled) {\n color: var(--studio-text-primary);\n background: var(--studio-bg-secondary);\n }\n\n &--active {\n color: var(--studio-primary);\n border-bottom-color: var(--studio-primary);\n }\n\n &--disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n }\n\n :host(.tabs--pills) {\n .tabs__header {\n border-bottom: none;\n }\n\n .tabs__tab {\n border-radius: var(--studio-radius-md);\n border-bottom: none;\n margin-bottom: 0;\n\n &--active {\n background: var(--studio-primary);\n color: white;\n }\n }\n }\n\n :host(.tabs--enclosed) {\n .tabs__tab {\n border: 1px solid transparent;\n border-radius: var(--studio-radius-md) var(--studio-radius-md) 0 0;\n margin-bottom: -1px;\n\n &--active {\n border-color: var(--studio-border-primary);\n border-bottom-color: var(--studio-bg-primary);\n background: var(--studio-bg-primary);\n }\n }\n }\n\n :host(.tabs--sm) .tabs__tab {\n padding: 0.5rem 0.75rem;\n font-size: 0.8125rem;\n }\n\n :host(.tabs--lg) .tabs__tab {\n padding: 1rem 1.25rem;\n font-size: 1rem;\n }\n\n .tabs__content {\n padding: 1.5rem 0;\n }\n `\n})\nexport class TabsComponent {\n tabs = input.required<TabItem[]>();\n activeTab = signal<string>('');\n variant = input<TabsVariant>('line');\n size = input<TabsSize>('md');\n orientation = input<TabsOrientation>('horizontal');\n\n tabChange = output<string>();\n\n protected hostClasses = computed(() => classNames(\n 'tabs',\n 'tabs--' + this.variant(),\n 'tabs--' + this.size(),\n this.orientation() === 'vertical' && 'tabs--vertical'\n ));\n\n protected iconSize = computed(() => {\n const sizeMap = { sm: 14, md: 16, lg: 18 };\n return sizeMap[this.size()];\n });\n\n constructor() {\n effect(() => {\n // Set first tab as active by default when tabs change\n const tabsList = this.tabs();\n const firstTab = tabsList[0];\n if (firstTab && !this.activeTab()) {\n this.activeTab.set(firstTab.id);\n }\n });\n }\n\n protected selectTab(tabId: string): void {\n this.activeTab.set(tabId);\n this.tabChange.emit(tabId);\n }\n}\n","import { Component, input, output, computed, signal, forwardRef, inject, effect, ElementRef, viewChild } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { StudioConfigService } from '../../config/studio.service';\nimport { classNames } from '../../utils';\n\n/**\n * Textarea component for multi-line text input\n *\n * @example\n * <studio-textarea\n * [(ngModel)]=\"message\"\n * label=\"Your message\"\n * placeholder=\"Enter your message...\"\n * [rows]=\"4\"\n * />\n */\n@Component({\n selector: 'studio-textarea',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './textarea.component.html',\n styleUrl: './textarea.component.scss',\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextareaComponent),\n multi: true\n }],\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-size]': 'size()',\n '[attr.data-variant]': 'variant()',\n '[attr.data-disabled]': 'disabled()',\n '[attr.data-error]': 'error()',\n '[attr.data-full-width]': 'fullWidth()'\n }\n})\nexport class TextareaComponent implements ControlValueAccessor {\n private readonly configService = inject(StudioConfigService);\n private readonly textareaDefaults = computed(() => this.configService.config().components?.textarea);\n\n variant = input<TextareaVariant>(\n this.textareaDefaults()?.variant ?? 'outline'\n );\n\n size = input<TextareaSize>(\n this.textareaDefaults()?.size ?? 'md'\n );\n\n color = input<TextareaColor>(\n this.textareaDefaults()?.color ?? 'primary'\n );\n\n radius = input<TextareaRadius>(\n this.textareaDefaults()?.radius ?? 'md'\n );\n\n // ==========================================\n // INPUTS - Labels & Description\n // ==========================================\n\n /**\n * Label text\n */\n label = input<string>();\n\n /**\n * Floating label (moves up when focused/filled)\n */\n floatingLabel = input<boolean>(false);\n\n /**\n * Placeholder text\n */\n placeholder = input<string>();\n\n /**\n * Helper text\n */\n hint = input<string>();\n\n // ==========================================\n // INPUTS - Textarea Specific\n // ==========================================\n\n /**\n * Number of visible text rows\n */\n rows = input<number>(\n this.textareaDefaults()?.rows ?? 3\n );\n\n /**\n * Minimum rows for auto-resize\n */\n minRows = input<number>();\n\n /**\n * Maximum rows for auto-resize\n */\n maxRows = input<number>();\n\n /**\n * Enable auto-resize based on content\n */\n autoResize = input<boolean>(\n this.textareaDefaults()?.autoResize ?? false\n );\n\n /**\n * Resize behavior\n */\n resize = input<'none' | 'vertical' | 'horizontal' | 'both'>(\n this.textareaDefaults()?.resize ?? 'vertical'\n );\n\n // ==========================================\n // INPUTS - Character Count\n // ==========================================\n\n /**\n * Maximum character length\n */\n maxLength = input<number>();\n\n /**\n * Show character counter\n */\n showCharCount = input<boolean>(\n this.textareaDefaults()?.showCharCount ?? false\n );\n\n /**\n * Character counter position\n */\n charCountPosition = input<'bottom-right' | 'bottom-left'>('bottom-right');\n\n // ==========================================\n // INPUTS - Validation\n // ==========================================\n\n /**\n * Required field\n */\n required = input<boolean>(false);\n\n /**\n * Minimum character length\n */\n minLength = input<number>();\n\n /**\n * Error state\n */\n error = input<boolean>(false);\n\n /**\n * Error message\n */\n errorMessage = input<string>();\n\n // ==========================================\n // INPUTS - Behavior\n // ==========================================\n\n /**\n * Disabled state\n */\n disabled = input<boolean>(false);\n\n /**\n * Readonly state\n */\n readonly = input<boolean>(false);\n\n /**\n * Full width (100% of parent)\n */\n fullWidth = input<boolean>(false);\n\n /**\n * Name attribute for form control\n */\n name = input<string>();\n\n /**\n * Autocomplete attribute\n */\n autocomplete = input<string>();\n\n /**\n * Spellcheck attribute\n */\n spellcheck = input<boolean>(true);\n\n /**\n * Show clear button\n */\n clearable = input<boolean>(\n this.textareaDefaults()?.clearable ?? false\n );\n\n /**\n * Loading state\n */\n loading = input<boolean>(false);\n\n // ==========================================\n // OUTPUTS\n // ==========================================\n\n /**\n * Emitted when value changes\n */\n changed = output<string>();\n\n /**\n * Emitted on focus\n */\n focused = output<FocusEvent>();\n\n /**\n * Emitted on blur\n */\n blurred = output<FocusEvent>();\n\n /**\n * Emitted on key press\n */\n keyPressed = output<KeyboardEvent>();\n\n // ==========================================\n // STATE\n // ==========================================\n\n /**\n * Internal value\n */\n protected internalValue = signal('');\n\n /**\n * Internal focus state\n */\n protected isFocused = signal(false);\n\n /**\n * Unique ID for accessibility\n */\n protected textareaId = signal(`studio-textarea-${Math.random().toString(36).substr(2, 9)}`);\n\n /**\n * Textarea element reference\n */\n protected textareaEl = viewChild<ElementRef<HTMLTextAreaElement>>('textarea');\n\n // ==========================================\n // COMPUTED\n // ==========================================\n\n protected hostClasses = computed(() => classNames(\n 'studio-textarea-wrapper',\n `studio-textarea-wrapper--${this.size()}`,\n `studio-textarea-wrapper--${this.variant()}`,\n this.disabled() && 'studio-textarea-wrapper--disabled',\n this.error() && 'studio-textarea-wrapper--error',\n this.isFocused() && 'studio-textarea-wrapper--focused',\n this.fullWidth() && 'studio-textarea-wrapper--full-width',\n this.floatingLabel() && 'studio-textarea-wrapper--floating-label'\n ));\n\n /**\n * Textarea element CSS classes\n */\n protected textareaClasses = computed(() => classNames(\n 'studio-textarea',\n `studio-textarea--${this.size()}`,\n `studio-textarea--${this.variant()}`,\n `studio-textarea--${this.color()}`,\n `studio-textarea--radius-${this.radius()}`,\n `studio-textarea--resize-${this.resize()}`,\n this.disabled() && 'studio-textarea--disabled',\n this.readonly() && 'studio-textarea--readonly',\n this.error() && 'studio-textarea--error',\n this.internalValue().length > 0 && 'studio-textarea--has-value',\n this.autoResize() && 'studio-textarea--auto-resize'\n ));\n\n /**\n * Show error message\n */\n protected showError = computed(() => this.error() && this.errorMessage());\n\n /**\n * Show hint\n */\n protected showHint = computed(() => !this.error() && this.hint());\n\n /**\n * Character count text\n */\n protected charCountText = computed(() => {\n const length = this.internalValue().length;\n const max = this.maxLength();\n return max ? `${length}/${max}` : `${length}`;\n });\n\n /**\n * Is character limit exceeded\n */\n protected isCharLimitExceeded = computed(() => {\n const max = this.maxLength();\n return max ? this.internalValue().length > max : false;\n });\n\n /**\n * Computed placeholder (empty if floating label)\n */\n protected computedPlaceholder = computed(() => {\n if (this.floatingLabel()) {\n return '';\n }\n return this.placeholder();\n });\n\n /**\n * Show floating label in \"up\" position\n */\n protected showFloatingLabelUp = computed(() => {\n return this.floatingLabel() && (this.isFocused() || this.internalValue().length > 0);\n });\n\n // ==========================================\n // CONTROL VALUE ACCESSOR\n // ==========================================\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: string): void {\n this.internalValue.set(value ?? '');\n this.adjustHeightIfNeeded();\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 // Disabled state is controlled via input\n }\n\n // ==========================================\n // CONSTRUCTOR & EFFECTS\n // ==========================================\n\n constructor() {\n // Auto-resize effect\n effect(() => {\n if (this.autoResize()) {\n this.adjustHeightIfNeeded();\n }\n });\n }\n\n // ==========================================\n // METHODS\n // ==========================================\n\n /**\n * Handle textarea input\n */\n protected handleInput(event: Event): void {\n if (this.disabled() || this.readonly()) {\n return;\n }\n\n const newValue = (event.target as HTMLTextAreaElement).value;\n this.internalValue.set(newValue);\n this.onChange(newValue);\n this.changed.emit(newValue);\n\n if (this.autoResize()) {\n this.adjustHeight(event.target as HTMLTextAreaElement);\n }\n }\n\n /**\n * Handle focus\n */\n protected handleFocus(event: FocusEvent): void {\n this.isFocused.set(true);\n this.focused.emit(event);\n }\n\n /**\n * Handle blur\n */\n protected handleBlur(event: FocusEvent): void {\n this.isFocused.set(false);\n this.onTouched();\n this.blurred.emit(event);\n }\n\n /**\n * Handle key press\n */\n protected handleKeyPress(event: KeyboardEvent): void {\n this.keyPressed.emit(event);\n }\n\n /**\n * Clear textarea value\n */\n protected handleClear(): void {\n if (this.disabled() || this.readonly()) {\n return;\n }\n\n this.internalValue.set('');\n this.onChange('');\n this.changed.emit('');\n\n // Focus textarea after clearing\n this.textareaEl()?.nativeElement.focus();\n }\n\n /**\n * Adjust textarea height for auto-resize\n */\n private adjustHeightIfNeeded(): void {\n if (this.autoResize()) {\n setTimeout(() => {\n const textarea = this.textareaEl()?.nativeElement;\n if (textarea) {\n this.adjustHeight(textarea);\n }\n });\n }\n }\n\n /**\n * Adjust textarea height based on content\n */\n private adjustHeight(textarea: HTMLTextAreaElement): void {\n // Reset height to auto to get proper scrollHeight\n textarea.style.height = 'auto';\n\n const minRows = this.minRows() ?? this.rows();\n const maxRows = this.maxRows();\n\n // Calculate line height\n const lineHeight = parseInt(getComputedStyle(textarea).lineHeight);\n const padding = parseInt(getComputedStyle(textarea).paddingTop) +\n parseInt(getComputedStyle(textarea).paddingBottom);\n\n // Calculate min and max heights\n const minHeight = minRows * lineHeight + padding;\n const maxHeight = maxRows ? maxRows * lineHeight + padding : Infinity;\n\n // Set new height within bounds\n const newHeight = Math.max(minHeight, Math.min(textarea.scrollHeight, maxHeight));\n textarea.style.height = `${newHeight}px`;\n }\n}\n\n// ==========================================\n// TYPES\n// ==========================================\n\nexport type TextareaVariant = 'outline' | 'filled' | 'underline';\nexport type TextareaSize = 'sm' | 'md' | 'lg';\nexport type TextareaColor = 'primary' | 'secondary' | 'success' | 'error';\nexport type TextareaRadius = 'none' | 'sm' | 'md' | 'lg' | 'full';\n","<div class=\"studio-textarea-container\">\n <!-- Label (static or floating) -->\n @if (label() && !floatingLabel()) {\n <label\n [for]=\"textareaId()\"\n class=\"studio-textarea-label\"\n [class.studio-textarea-label--required]=\"required()\"\n >\n {{ label() }}\n @if (required()) {\n <span class=\"studio-textarea-label__required\">*</span>\n }\n </label>\n }\n\n <!-- Textarea wrapper -->\n <div class=\"studio-textarea-input-wrapper\">\n <!-- Floating label -->\n @if (floatingLabel() && label()) {\n <label\n [for]=\"textareaId()\"\n class=\"studio-textarea-label studio-textarea-label--floating\"\n [class.studio-textarea-label--floating-up]=\"showFloatingLabelUp()\"\n [class.studio-textarea-label--required]=\"required()\"\n >\n {{ label() }}\n @if (required()) {\n <span class=\"studio-textarea-label__required\">*</span>\n }\n </label>\n }\n\n <!-- Textarea element -->\n <textarea\n #textarea\n [id]=\"textareaId()\"\n [class]=\"textareaClasses()\"\n [value]=\"internalValue()\"\n [placeholder]=\"computedPlaceholder()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly()\"\n [rows]=\"rows()\"\n [attr.maxlength]=\"maxLength()\"\n [attr.minlength]=\"minLength()\"\n [required]=\"required()\"\n [name]=\"name()\"\n [autocomplete]=\"autocomplete()\"\n [spellcheck]=\"spellcheck()\"\n [attr.aria-label]=\"label()\"\n [attr.aria-required]=\"required()\"\n [attr.aria-invalid]=\"error()\"\n [attr.aria-describedby]=\"showHint() || showError() ? textareaId() + '-description' : undefined\"\n (input)=\"handleInput($event)\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"\n (keypress)=\"handleKeyPress($event)\"\n ></textarea>\n\n <!-- Clear button -->\n @if (clearable() && internalValue().length > 0 && !disabled() && !readonly()) {\n <button\n type=\"button\"\n class=\"studio-textarea-clear\"\n [attr.aria-label]=\"'Clear textarea'\"\n (click)=\"handleClear()\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\n </svg>\n </button>\n }\n\n <!-- Loading indicator -->\n @if (loading()) {\n <div class=\"studio-textarea-loading\">\n <svg\n class=\"studio-textarea-spinner\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n class=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n stroke-width=\"4\"\n ></circle>\n <path\n class=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n ></path>\n </svg>\n </div>\n }\n\n <!-- Character counter -->\n @if (showCharCount()) {\n <div\n class=\"studio-textarea-char-count\"\n [class.studio-textarea-char-count--exceeded]=\"isCharLimitExceeded()\"\n [attr.data-position]=\"charCountPosition()\"\n >\n {{ charCountText() }}\n </div>\n }\n </div>\n\n <!-- Helper text / Error message -->\n @if (showError()) {\n <div\n class=\"studio-textarea-message studio-textarea-message--error\"\n [id]=\"textareaId() + '-description'\"\n role=\"alert\"\n >\n {{ errorMessage() }}\n </div>\n } @else if (showHint()) {\n <div\n class=\"studio-textarea-message studio-textarea-message--hint\"\n [id]=\"textareaId() + '-description'\"\n >\n {{ hint() }}\n </div>\n }\n</div>\n","import { Injectable, signal } from '@angular/core';\nimport { ToastMessage, ToastSeverity, ToastConfig } from './toast.types';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ToastService {\n private _messages = signal<ToastMessage[]>([]);\n readonly messages = this._messages.asReadonly();\n\n private defaultLife = 5000;\n private counter = 0;\n\n private generateId(): string {\n return `toast-${++this.counter}-${Date.now()}`;\n }\n\n show(severity: ToastSeverity, summary: string, detail?: string, config?: Partial<ToastConfig>): void {\n const message: ToastMessage = {\n id: this.generateId(),\n severity,\n summary,\n detail,\n life: config?.life ?? this.defaultLife,\n sticky: false,\n closable: config?.closable ?? true\n };\n\n this._messages.update(msgs => [...msgs, message]);\n\n if (!message.sticky && message.life) {\n setTimeout(() => {\n this.remove(message.id);\n }, message.life);\n }\n }\n\n success(summary: string, detail?: string, config?: Partial<ToastConfig>): void {\n this.show('success', summary, detail, config);\n }\n\n info(summary: string, detail?: string, config?: Partial<ToastConfig>): void {\n this.show('info', summary, detail, config);\n }\n\n warning(summary: string, detail?: string, config?: Partial<ToastConfig>): void {\n this.show('warning', summary, detail, config);\n }\n\n error(summary: string, detail?: string, config?: Partial<ToastConfig>): void {\n this.show('error', summary, detail, config);\n }\n\n remove(id: string): void {\n this._messages.update(msgs => msgs.filter(m => m.id !== id));\n }\n\n clear(): void {\n this._messages.set([]);\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n inject,\n input,\n computed\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IconComponent } from '../icon';\nimport { ToastService } from './toast.service';\nimport { ToastPosition, ToastSeverity } from './toast.types';\nimport { classNames } from '../../utils';\n\n@Component({\n selector: 'studio-toast',\n standalone: true,\n imports: [CommonModule, IconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()'\n },\n template: `\n <div class=\"studio-toast__container\">\n @for (message of toastService.messages(); track message.id) {\n <div\n class=\"studio-toast__item\"\n [class.studio-toast__item--success]=\"message.severity === 'success'\"\n [class.studio-toast__item--info]=\"message.severity === 'info'\"\n [class.studio-toast__item--warning]=\"message.severity === 'warning'\"\n [class.studio-toast__item--error]=\"message.severity === 'error'\"\n role=\"alert\"\n >\n <div class=\"studio-toast__icon\">\n <studio-icon [name]=\"getIcon(message.severity)\" [size]=\"20\" />\n </div>\n <div class=\"studio-toast__content\">\n <div class=\"studio-toast__summary\">{{ message.summary }}</div>\n @if (message.detail) {\n <div class=\"studio-toast__detail\">{{ message.detail }}</div>\n }\n </div>\n @if (message.closable) {\n <button\n type=\"button\"\n class=\"studio-toast__close\"\n (click)=\"toastService.remove(message.id)\"\n aria-label=\"Close\"\n >\n <studio-icon name=\"x\" [size]=\"16\" />\n </button>\n }\n </div>\n }\n </div>\n `,\n styles: `\n :host {\n position: fixed;\n z-index: var(--studio-z-toast, 9999);\n pointer-events: none;\n }\n\n :host(.toast--top-right) {\n top: 1rem;\n right: 1rem;\n }\n\n :host(.toast--top-left) {\n top: 1rem;\n left: 1rem;\n }\n\n :host(.toast--bottom-right) {\n bottom: 1rem;\n right: 1rem;\n }\n\n :host(.toast--bottom-left) {\n bottom: 1rem;\n left: 1rem;\n }\n\n :host(.toast--top-center) {\n top: 1rem;\n left: 50%;\n transform: translateX(-50%);\n }\n\n :host(.toast--bottom-center) {\n bottom: 1rem;\n left: 50%;\n transform: translateX(-50%);\n }\n\n .studio-toast__container {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n min-width: 320px;\n max-width: 420px;\n }\n\n .studio-toast__item {\n display: flex;\n align-items: flex-start;\n gap: 0.75rem;\n padding: 1rem;\n border-radius: var(--studio-radius-lg, 0.75rem);\n background: var(--studio-bg-primary, #ffffff);\n box-shadow: var(--studio-shadow-lg, 0 10px 15px -3px rgba(0, 0, 0, 0.1));\n border: 1px solid var(--studio-border-primary, #e5e7eb);\n pointer-events: auto;\n animation: slideIn 0.2s ease-out;\n }\n\n @keyframes slideIn {\n from {\n opacity: 0;\n transform: translateX(100%);\n }\n to {\n opacity: 1;\n transform: translateX(0);\n }\n }\n\n .studio-toast__icon {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 2rem;\n height: 2rem;\n border-radius: var(--studio-radius-full, 9999px);\n }\n\n .studio-toast__item--success .studio-toast__icon {\n background: #dcfce7;\n color: #16a34a;\n }\n\n .studio-toast__item--info .studio-toast__icon {\n background: #dbeafe;\n color: #2563eb;\n }\n\n .studio-toast__item--warning .studio-toast__icon {\n background: #fef3c7;\n color: #d97706;\n }\n\n .studio-toast__item--error .studio-toast__icon {\n background: #fee2e2;\n color: #dc2626;\n }\n\n .studio-toast__content {\n flex: 1;\n min-width: 0;\n }\n\n .studio-toast__summary {\n font-weight: var(--studio-font-weight-semibold, 600);\n font-size: 0.875rem;\n color: var(--studio-text-primary, #111827);\n }\n\n .studio-toast__detail {\n margin-top: 0.25rem;\n font-size: 0.875rem;\n color: var(--studio-text-secondary, #6b7280);\n }\n\n .studio-toast__close {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 1.5rem;\n height: 1.5rem;\n padding: 0;\n background: none;\n border: none;\n border-radius: var(--studio-radius-sm, 0.25rem);\n color: var(--studio-text-tertiary, #9ca3af);\n cursor: pointer;\n transition: all var(--studio-transition-fast, 150ms);\n\n &:hover {\n background: var(--studio-bg-secondary, #f3f4f6);\n color: var(--studio-text-secondary, #6b7280);\n }\n }\n `\n})\nexport class ToastComponent {\n protected toastService = inject(ToastService);\n\n position = input<ToastPosition>('top-right');\n\n protected hostClasses = computed(() => classNames(\n 'studio-toast',\n 'toast--' + this.position()\n ));\n\n getIcon(severity: ToastSeverity): string {\n const icons: Record<ToastSeverity, string> = {\n success: 'check-circle',\n info: 'info',\n warning: 'alert-triangle',\n error: 'alert-circle'\n };\n return icons[severity];\n }\n}\n","import { Component, ChangeDetectionStrategy, input, output, computed } from '@angular/core';\nimport { PopoverComponent } from '../popover';\nimport { classNames } from '../../utils';\n\n@Component({\n selector: 'studio-tooltip',\n standalone: true,\n imports: [PopoverComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n },\n template: `\n <studio-popover\n [trigger]=\"trigger()\"\n [position]=\"position()\"\n [openDelay]=\"openDelay()\"\n [closeDelay]=\"closeDelay()\"\n [arrow]=\"arrow()\"\n [arrowSize]=\"arrowSize()\"\n [variant]=\"'minimal'\"\n [size]=\"'sm'\"\n [animation]=\"'fade'\"\n [animationDuration]=\"150\"\n [showHeader]=\"false\"\n [showFooter]=\"false\"\n [closeOnClickOutside]=\"false\"\n [closeOnEscape]=\"false\"\n [disabled]=\"disabled()\"\n [maxWidth]=\"maxWidth()\"\n [padding]=\"'0.5rem 0.75rem'\"\n >\n <ng-content />\n <div popoverContent [innerHTML]=\"content() || ''\"></div>\n </studio-popover>\n `,\n styles: `\n :host {\n display: inline-block;\n }\n `\n})\nexport class TooltipComponent {\n content = input.required<string>();\n trigger = input<'hover' | 'focus' | 'click'>('hover');\n position = input<'top' | 'bottom' | 'left' | 'right' | 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end'>('top');\n openDelay = input<number>(200);\n closeDelay = input<number>(100);\n arrow = input<boolean>(true);\n arrowSize = input<number>(6);\n maxWidth = input<string>('300px');\n disabled = input<boolean>(false);\n\n protected hostClasses = computed(() => classNames('studio-tooltip'));\n}\n","import { Injectable, signal } from '@angular/core';\nimport { ConfirmDialogConfig } from './confirm-dialog.types';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConfirmDialogService {\n private _config = signal<ConfirmDialogConfig | null>(null);\n private _visible = signal(false);\n\n readonly config = this._config.asReadonly();\n readonly visible = this._visible.asReadonly();\n\n confirm(config: ConfirmDialogConfig): void {\n this._config.set({\n confirmText: 'Подтвердить',\n cancelText: 'Отмена',\n variant: 'default',\n ...config\n });\n this._visible.set(true);\n }\n\n accept(): void {\n const config = this._config();\n if (config?.onConfirm) {\n config.onConfirm();\n }\n this.close();\n }\n\n reject(): void {\n const config = this._config();\n if (config?.onCancel) {\n config.onCancel();\n }\n this.close();\n }\n\n close(): void {\n this._visible.set(false);\n this._config.set(null);\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n inject,\n computed,\n HostListener\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IconComponent } from '../icon';\nimport { ButtonComponent } from '../button';\nimport { ConfirmDialogService } from './confirm-dialog.service';\nimport { classNames } from '../../utils';\n\n@Component({\n selector: 'studio-confirm-dialog',\n standalone: true,\n imports: [CommonModule, IconComponent, ButtonComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n @if (confirmService.visible()) {\n <!-- Overlay -->\n <div\n class=\"studio-confirm__overlay\"\n (click)=\"confirmService.reject()\"\n ></div>\n\n <!-- Dialog -->\n <div\n class=\"studio-confirm__dialog\"\n [class.studio-confirm__dialog--danger]=\"config()?.variant === 'danger'\"\n [class.studio-confirm__dialog--warning]=\"config()?.variant === 'warning'\"\n role=\"alertdialog\"\n aria-modal=\"true\"\n >\n <!-- Icon -->\n <div class=\"studio-confirm__icon\">\n <studio-icon [name]=\"getIcon()\" [size]=\"24\" />\n </div>\n\n <!-- Content -->\n <div class=\"studio-confirm__content\">\n <h3 class=\"studio-confirm__title\">{{ config()?.title }}</h3>\n <p class=\"studio-confirm__message\">{{ config()?.message }}</p>\n </div>\n\n <!-- Actions -->\n <div class=\"studio-confirm__actions\">\n <studio-button\n variant=\"outline\"\n (clicked)=\"confirmService.reject()\"\n >\n {{ config()?.cancelText }}\n </studio-button>\n <studio-button\n [color]=\"config()?.variant === 'danger' ? 'error' : 'primary'\"\n (clicked)=\"confirmService.accept()\"\n >\n {{ config()?.confirmText }}\n </studio-button>\n </div>\n </div>\n }\n `,\n styles: `\n :host {\n display: contents;\n }\n\n .studio-confirm__overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.5);\n z-index: var(--studio-z-modal-backdrop, 1040);\n animation: fadeIn 0.2s ease;\n }\n\n @keyframes fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n }\n\n .studio-confirm__dialog {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n z-index: var(--studio-z-modal, 1050);\n width: 90%;\n max-width: 400px;\n padding: 1.5rem;\n background: var(--studio-bg-primary, #ffffff);\n border-radius: var(--studio-radius-xl, 1rem);\n box-shadow: var(--studio-shadow-xl, 0 20px 25px -5px rgba(0, 0, 0, 0.1));\n animation: scaleIn 0.2s ease;\n }\n\n @keyframes scaleIn {\n from {\n opacity: 0;\n transform: translate(-50%, -50%) scale(0.95);\n }\n to {\n opacity: 1;\n transform: translate(-50%, -50%) scale(1);\n }\n }\n\n .studio-confirm__icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 3rem;\n height: 3rem;\n margin: 0 auto 1rem;\n border-radius: var(--studio-radius-full, 9999px);\n background: #dbeafe;\n color: #2563eb;\n }\n\n .studio-confirm__dialog--danger .studio-confirm__icon {\n background: #fee2e2;\n color: #dc2626;\n }\n\n .studio-confirm__dialog--warning .studio-confirm__icon {\n background: #fef3c7;\n color: #d97706;\n }\n\n .studio-confirm__content {\n text-align: center;\n margin-bottom: 1.5rem;\n }\n\n .studio-confirm__title {\n margin: 0 0 0.5rem;\n font-size: 1.125rem;\n font-weight: var(--studio-font-weight-semibold, 600);\n color: var(--studio-text-primary, #111827);\n }\n\n .studio-confirm__message {\n margin: 0;\n font-size: 0.875rem;\n color: var(--studio-text-secondary, #6b7280);\n line-height: 1.5;\n }\n\n .studio-confirm__actions {\n display: flex;\n gap: 0.75rem;\n justify-content: center;\n }\n `\n})\nexport class ConfirmDialogComponent {\n protected confirmService = inject(ConfirmDialogService);\n\n protected config = this.confirmService.config;\n\n @HostListener('document:keydown.escape')\n protected handleEscape(): void {\n if (this.confirmService.visible()) {\n this.confirmService.reject();\n }\n }\n\n getIcon(): string {\n const config = this.config();\n if (config?.icon) return config.icon;\n\n switch (config?.variant) {\n case 'danger':\n return 'alert-triangle';\n case 'warning':\n return 'alert-circle';\n default:\n return 'help-circle';\n }\n }\n}\n","/**\n * Primitives (Atoms)\n * Basic building blocks\n */\n\nexport * from './badge';\nexport * from './badge-wrapper';\nexport * from './bottom-navigation';\nexport * from './button';\nexport * from './button-group';\nexport * from './card';\nexport * from './chat';\nexport * from './checkbox';\nexport * from './color-picker';\nexport * from './color-picker-compact';\nexport * from './drawer';\nexport * from './dropdown';\nexport * from './icon';\nexport * from './input';\nexport * from './menu';\nexport * from './phone-input';\nexport * from './modal';\nexport * from './navbar';\nexport * from './popover';\nexport * from './radio-button';\nexport * from './select';\nexport * from './sidebar';\nexport * from './switch';\nexport * from './pagination';\nexport * from './table';\nexport * from './tabs';\nexport * from './textarea';\nexport * from './toast';\nexport * from './tooltip';\nexport * from './confirm-dialog';\n","import { Component, ChangeDetectionStrategy, input, output, computed, inject, forwardRef, model } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ButtonComponent } from '../../primitives/button';\nimport { ButtonGroupComponent } from '../../primitives/button-group';\nimport { StudioConfigService } from '../../config';\nimport { classNames, withConfigDefault } from '../../utils';\nimport { ButtonToggleGroupOption, ButtonToggleGroupValue } from './button-toggle-group.types';\n\n@Component({\n selector: 'studio-button-toggle-group',\n standalone: true,\n imports: [ButtonComponent, ButtonGroupComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ButtonToggleGroupComponent),\n multi: true\n }\n ],\n host: {\n '[class]': 'hostClasses()'\n },\n template: `\n <studio-button-group\n [orientation]=\"orientation()\"\n [attached]=\"attached()\"\n [fullWidth]=\"fullWidth()\"\n [spacing]=\"spacing()\"\n [align]=\"align()\"\n [ariaLabel]=\"ariaLabel()\">\n @for (option of options(); track option.value) {\n <studio-button\n [variant]=\"isSelected(option.value) ? 'solid' : variant()\"\n [size]=\"size()\"\n [color]=\"isSelected(option.value) ? color() : 'secondary'\"\n [radius]=\"radius()\"\n [shadow]=\"shadow()\"\n [disabled]=\"disabled() || option.disabled || false\"\n [icon]=\"showIcons() ? option.icon : undefined\"\n [iconPosition]=\"iconPosition()\"\n [ariaLabel]=\"option.ariaLabel\"\n (clicked)=\"handleToggle(option.value)\">\n @if (iconPosition() !== 'only') {\n {{ option.label }}\n }\n </studio-button>\n }\n </studio-button-group>\n `,\n styleUrl: './button-toggle-group.component.scss'\n})\nexport class ButtonToggleGroupComponent implements ControlValueAccessor {\n private readonly configService = inject(StudioConfigService);\n private readonly toggleGroupDefaults = computed(() => this.configService.config().components?.buttonToggleGroup);\n\n private onChange: (value: ButtonToggleGroupValue) => void = () => {};\n private onTouched: () => void = () => {};\n\n value = model<ButtonToggleGroupValue>('' as ButtonToggleGroupValue);\n\n options = input.required<ButtonToggleGroupOption[]>();\n multiple = input<boolean>(false);\n allowEmpty = input<boolean>(true);\n\n orientationInput = input<'horizontal' | 'vertical' | undefined>(undefined, { alias: 'orientation' });\n sizeInput = input<'sm' | 'md' | 'lg' | undefined>(undefined, { alias: 'size' });\n variantInput = input<'solid' | 'outline' | 'ghost' | undefined>(undefined, { alias: 'variant' });\n colorInput = input<'primary' | 'secondary' | 'success' | 'error' | 'warning' | undefined>(undefined, { alias: 'color' });\n radiusInput = input<'none' | 'sm' | 'md' | 'lg' | 'xl' | 'full' | undefined>(undefined, { alias: 'radius' });\n shadowInput = input<'none' | 'sm' | 'md' | 'lg' | undefined>(undefined, { alias: 'shadow' });\n\n orientation = withConfigDefault(this.orientationInput, computed(() => this.toggleGroupDefaults()?.orientation), 'horizontal');\n size = withConfigDefault(this.sizeInput, computed(() => this.toggleGroupDefaults()?.size), 'md');\n variant = withConfigDefault(this.variantInput, computed(() => this.toggleGroupDefaults()?.variant), 'outline');\n color = withConfigDefault(this.colorInput, computed(() => this.toggleGroupDefaults()?.color), 'primary');\n radius = withConfigDefault(this.radiusInput, computed(() => this.toggleGroupDefaults()?.radius), 'sm');\n shadow = withConfigDefault(this.shadowInput, computed(() => this.toggleGroupDefaults()?.shadow), 'none');\n\n attached = input<boolean>(true);\n fullWidth = input<boolean>(false);\n disabled = input<boolean>(false);\n spacing = input<'none' | 'xs' | 'sm' | 'md' | 'lg'>('sm');\n align = input<'start' | 'center' | 'end' | 'stretch'>('start');\n showIcons = input<boolean>(true);\n iconPosition = input<'left' | 'right' | 'only'>('left');\n ariaLabel = input<string>();\n\n valueChange = output<ButtonToggleGroupValue>();\n\n protected hostClasses = computed(() => classNames(\n 'studio-button-toggle-group',\n this.disabled() && 'studio-button-toggle-group--disabled'\n ));\n\n protected isSelected(optionValue: string | number): boolean {\n const currentValue = this.value();\n if (this.multiple()) {\n return Array.isArray(currentValue) && currentValue.includes(optionValue);\n }\n return currentValue === optionValue;\n }\n\n protected handleToggle(optionValue: string | number): void {\n if (this.disabled()) return;\n\n let newValue: ButtonToggleGroupValue;\n\n if (this.multiple()) {\n const currentArray = Array.isArray(this.value()) ? this.value() as (string | number)[] : [];\n const index = currentArray.indexOf(optionValue);\n\n if (index > -1) {\n if (!this.allowEmpty() && currentArray.length === 1) {\n return;\n }\n newValue = currentArray.filter(v => v !== optionValue);\n } else {\n newValue = [...currentArray, optionValue];\n }\n } else {\n const currentValue = this.value();\n if (currentValue === optionValue && !this.allowEmpty()) {\n return;\n }\n newValue = currentValue === optionValue ? (this.allowEmpty() ? '' : optionValue) : optionValue;\n }\n\n this.value.set(newValue);\n this.onChange(newValue);\n this.onTouched();\n this.valueChange.emit(newValue);\n }\n\n writeValue(val: ButtonToggleGroupValue): void {\n if (val !== undefined && val !== null) {\n this.value.set(val);\n } else {\n this.value.set(this.multiple() ? [] : '');\n }\n }\n\n registerOnChange(fn: (value: ButtonToggleGroupValue) => 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 // disabled handled via input signal\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n input,\n output,\n computed,\n signal,\n inject,\n forwardRef,\n TemplateRef,\n effect\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { StudioConfigService } from '../../config';\nimport { classNames } from '../../utils';\nimport { ButtonComponent } from '../../primitives/button';\nimport { IconComponent } from '../../primitives/icon';\nimport { InputComponent } from '../../primitives/input';\nimport { CheckboxComponent } from '../../primitives/checkbox';\nimport { RadioButtonComponent } from '../../primitives/radio-button';\nimport { ColorPickerCompactComponent } from '../../primitives/color-picker-compact';\nimport { SelectComponent } from '../../primitives/select';\nimport { TextareaComponent } from '../../primitives/textarea';\nimport { SwitchComponent } from '../../primitives/switch';\nimport {\n InspectorData,\n InspectorSection,\n InspectorParameter,\n InspectorOption,\n InspectorGroupDivider,\n InspectorSpacing,\n InspectorComponentSize,\n InspectorComponentVariant\n} from './inspector.types';\n\n@Component({\n selector: 'studio-inspector',\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n ButtonComponent,\n IconComponent,\n InputComponent,\n CheckboxComponent,\n RadioButtonComponent,\n ColorPickerCompactComponent,\n SelectComponent,\n TextareaComponent,\n SwitchComponent\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InspectorComponent),\n multi: true\n }\n ],\n host: {\n '[class]': 'hostClasses()',\n '[attr.role]': '\"region\"',\n '[attr.aria-label]': 'ariaLabel()'\n },\n templateUrl: './inspector.component.html',\n styleUrl: './inspector.component.scss'\n})\nexport class InspectorComponent implements ControlValueAccessor {\n private readonly configService = inject(StudioConfigService);\n\n componentSize = input<InspectorComponentSize>('sm');\n componentVariant = input<InspectorComponentVariant>('outline');\n compact = input<boolean>(false);\n showIcons = input<boolean>(true);\n showDefaultIndicator = input<boolean>(true);\n\n collapsible = input<boolean>(true);\n expandedByDefault = input<boolean>(true);\n expandedSectionsInput = input<string[]>([], { alias: 'expandedSections' });\n\n showGroupLabels = input<boolean>(true);\n groupDivider = input<InspectorGroupDivider>('line');\n groupDividerSpacing = input<InspectorSpacing>('md');\n\n labelWidth = input<string>('auto');\n fullWidth = input<boolean>(true);\n spacing = input<InspectorSpacing>('md');\n\n sectionTemplate = input<TemplateRef<any> | undefined>(undefined);\n parameterTemplates = input<Record<string, TemplateRef<any>> | undefined>(undefined);\n\n ariaLabel = input<string>('Inspector panel');\n ariaDescribedBy = input<string | undefined>(undefined);\n\n sectionToggled = output<{ id: string; expanded: boolean }>();\n parameterFocused = output<{ componentId: string; parameterId: string }>();\n parameterBlurred = output<{ componentId: string; parameterId: string }>();\n\n protected values = signal<InspectorData | null>(null);\n protected expandedSections = signal<Set<string>>(new Set());\n\n private onChange: (value: InspectorData | null) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor() {\n effect(() => {\n const inputSections = this.expandedSectionsInput();\n if (inputSections.length > 0) {\n this.expandedSections.set(new Set(inputSections));\n }\n });\n }\n\n protected hostClasses = computed(() => classNames(\n 'studio-inspector',\n this.compact() && 'studio-inspector--compact',\n `studio-inspector--spacing-${this.spacing()}`\n ));\n\n protected isSectionExpanded(componentId: string): boolean {\n return this.expandedSections().has(componentId);\n }\n\n protected toggleSection(componentId: string): void {\n if (!this.collapsible()) return;\n\n const expanded = new Set(this.expandedSections());\n\n if (expanded.has(componentId)) {\n expanded.delete(componentId);\n } else {\n expanded.add(componentId);\n }\n\n this.expandedSections.set(expanded);\n\n this.sectionToggled.emit({\n id: componentId,\n expanded: expanded.has(componentId)\n });\n }\n\n protected onParameterChange(\n componentId: string,\n groupId: string | null,\n parameterId: string,\n newValue: any\n ): void {\n const updated = structuredClone(this.values());\n if (!updated) return;\n\n const section = updated.sections.find(c => c.id === componentId);\n if (!section) return;\n\n let parameter: InspectorParameter | undefined;\n\n if (groupId) {\n const group = section.groups?.find(g => g.id === groupId);\n parameter = group?.parameters.find(p => p.id === parameterId);\n } else {\n parameter = section.parameters?.find(p => p.id === parameterId);\n }\n\n if (parameter) {\n parameter.value = newValue;\n }\n\n this.values.set(updated);\n this.onChange(updated);\n this.onTouched();\n }\n\n protected onCheckboxChange(\n componentId: string,\n groupId: string | null,\n parameterId: string,\n optionValue: any,\n checked: boolean\n ): void {\n const updated = structuredClone(this.values());\n if (!updated) return;\n\n const section = updated.sections.find(c => c.id === componentId);\n if (!section) return;\n\n let parameter: InspectorParameter | undefined;\n\n if (groupId) {\n const group = section.groups?.find(g => g.id === groupId);\n parameter = group?.parameters.find(p => p.id === parameterId);\n } else {\n parameter = section.parameters?.find(p => p.id === parameterId);\n }\n\n if (parameter && parameter.type === 'checkbox') {\n const currentValues = Array.isArray(parameter.value) ? parameter.value : [];\n\n if (checked) {\n if (!currentValues.includes(optionValue)) {\n parameter.value = [...currentValues, optionValue];\n }\n } else {\n parameter.value = currentValues.filter(v => v !== optionValue);\n }\n }\n\n this.values.set(updated);\n this.onChange(updated);\n this.onTouched();\n }\n\n protected onRadioChange(\n componentId: string,\n groupId: string | null,\n parameterId: string,\n newValue: any\n ): void {\n this.onParameterChange(componentId, groupId, parameterId, newValue);\n }\n\n protected getRadioName(componentId: string, groupId: string | null, parameterId: string): string {\n return `${componentId}-${groupId || 'root'}-${parameterId}`;\n }\n\n protected isChecked(parameter: InspectorParameter, optionValue: any): boolean {\n if (parameter.type === 'checkbox') {\n return Array.isArray(parameter.value) && parameter.value.includes(optionValue);\n } else if (parameter.type === 'radio') {\n return parameter.value === optionValue;\n }\n return false;\n }\n\n protected isRadioChecked(parameter: InspectorParameter, optionValue: any): boolean {\n return parameter.value === optionValue;\n }\n\n protected isDefault(parameter: InspectorParameter, optionValue: any): boolean {\n return parameter.default !== undefined && parameter.default === optionValue;\n }\n\n protected trackBySectionId(_: number, section: InspectorSection): string {\n return section.id;\n }\n\n protected trackByGroupId(_: number, group: { id: string }): string {\n return group.id;\n }\n\n protected trackByParameterId(_: number, param: InspectorParameter): string {\n return param.id;\n }\n\n protected trackByOptionValue(_: number, option: InspectorOption): any {\n return option.value;\n }\n\n writeValue(value: InspectorData | null): void {\n this.values.set(value);\n this.initializeExpandedSections();\n }\n\n registerOnChange(fn: (value: InspectorData | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(_: boolean): void {}\n\n private initializeExpandedSections(): void {\n const expanded = new Set<string>();\n\n const inputSections = this.expandedSectionsInput();\n if (inputSections.length > 0) {\n inputSections.forEach(id => expanded.add(id));\n } else if (this.expandedByDefault()) {\n this.values()?.sections.forEach(c => {\n if (c.expanded !== false) {\n expanded.add(c.id);\n }\n });\n } else {\n this.values()?.sections.forEach(c => {\n if (c.expanded === true) {\n expanded.add(c.id);\n }\n });\n }\n\n this.expandedSections.set(expanded);\n }\n}\n","@if (values()) {\n <div class=\"studio-inspector__container\">\n @for (section of values()!.sections; track trackBySectionId($index, section)) {\n <div class=\"studio-inspector__section\"\n [class.studio-inspector__section--expanded]=\"isSectionExpanded(section.id)\"\n [class.studio-inspector__section--collapsed]=\"!isSectionExpanded(section.id)\">\n\n <studio-button\n variant=\"ghost\"\n [fullWidth]=\"true\"\n class=\"studio-inspector__section-header\"\n [class.studio-inspector__section-header--collapsible]=\"collapsible()\"\n [disabled]=\"!collapsible()\"\n [attr.aria-expanded]=\"isSectionExpanded(section.id)\"\n [attr.aria-controls]=\"'section-content-' + section.id\"\n (click)=\"toggleSection(section.id)\">\n\n @if (showIcons() && section.icon) {\n <studio-icon\n [name]=\"section.icon\"\n [size]=\"16\"\n class=\"studio-inspector__section-icon\"\n />\n }\n\n <span class=\"studio-inspector__section-title\">{{ section.title }}</span>\n\n @if (collapsible()) {\n <studio-icon\n [name]=\"'chevron-down'\"\n [size]=\"16\"\n class=\"studio-inspector__section-toggle\"\n />\n }\n </studio-button>\n\n @if (isSectionExpanded(section.id)) {\n <div\n class=\"studio-inspector__section-content\"\n [id]=\"'section-content-' + section.id\">\n\n @if (section.groups) {\n @for (group of section.groups; track trackByGroupId($index, group); let isLast = $last) {\n <div class=\"studio-inspector__group\">\n\n @if (showGroupLabels() && group.label) {\n <div class=\"studio-inspector__group-label\">{{ group.label }}</div>\n }\n\n @for (param of group.parameters; track trackByParameterId($index, param)) {\n <div class=\"studio-inspector__parameter\">\n @if (param.type !== 'boolean' && param.type !== 'checkbox' && param.type !== 'radio') {\n <div class=\"studio-inspector__parameter-label\">{{ param.label }}</div>\n }\n\n @if (param.type === 'text') {\n <studio-input\n [ngModel]=\"param.value\"\n [name]=\"section.id + '-' + group.id + '-' + param.id\"\n (ngModelChange)=\"onParameterChange(section.id, group.id, param.id, $event)\"\n [variant]=\"componentVariant()\"\n [size]=\"componentSize()\"\n [placeholder]=\"param.placeholder || ''\"\n [disabled]=\"param.disabled || false\"\n [readonly]=\"param.readonly || false\"\n [maxLength]=\"param.maxLength\"\n [fullWidth]=\"fullWidth()\"\n />\n }\n\n @if (param.type === 'number') {\n <div class=\"studio-inspector__number-input\">\n <studio-input\n type=\"number\"\n [ngModel]=\"param.value\"\n [name]=\"section.id + '-' + group.id + '-' + param.id\"\n (ngModelChange)=\"onParameterChange(section.id, group.id, param.id, $event)\"\n [variant]=\"componentVariant()\"\n [size]=\"componentSize()\"\n [min]=\"param.min\"\n [max]=\"param.max\"\n [step]=\"param.step\"\n [disabled]=\"param.disabled || false\"\n [readonly]=\"param.readonly || false\"\n [fullWidth]=\"fullWidth()\"\n />\n @if (param.suffix) {\n <span class=\"studio-inspector__suffix\">{{ param.suffix }}</span>\n }\n </div>\n }\n\n @if (param.type === 'textarea') {\n <studio-textarea\n [ngModel]=\"param.value\"\n [name]=\"section.id + '-' + group.id + '-' + param.id\"\n (ngModelChange)=\"onParameterChange(section.id, group.id, param.id, $event)\"\n [variant]=\"componentVariant()\"\n [size]=\"componentSize()\"\n [placeholder]=\"param.placeholder || ''\"\n [disabled]=\"param.disabled || false\"\n [readonly]=\"param.readonly || false\"\n [maxLength]=\"param.maxLength\"\n [fullWidth]=\"fullWidth()\"\n />\n }\n\n @if (param.type === 'color') {\n <studio-color-picker-compact\n [ngModel]=\"param.value\"\n [name]=\"section.id + '-' + group.id + '-' + param.id\"\n (ngModelChange)=\"onParameterChange(section.id, group.id, param.id, $event)\"\n [disabled]=\"param.disabled || false\"\n />\n }\n\n @if (param.type === 'select') {\n <studio-select\n [ngModel]=\"param.value\"\n [name]=\"section.id + '-' + group.id + '-' + param.id\"\n (ngModelChange)=\"onParameterChange(section.id, group.id, param.id, $event)\"\n [variant]=\"componentVariant()\"\n [size]=\"componentSize()\"\n [options]=\"param.options || []\"\n [placeholder]=\"param.placeholder || ''\"\n [disabled]=\"param.disabled || false\"\n [fullWidth]=\"fullWidth()\"\n />\n }\n\n @if (param.type === 'boolean') {\n <studio-switch\n [ngModel]=\"param.value\"\n [name]=\"section.id + '-' + group.id + '-' + param.id\"\n (ngModelChange)=\"onParameterChange(section.id, group.id, param.id, $event)\"\n [label]=\"param.label\"\n [size]=\"componentSize()\"\n [disabled]=\"param.disabled || false\"\n />\n }\n\n @if (param.type === 'checkbox') {\n <div class=\"studio-inspector__options\">\n @for (option of param.options; track trackByOptionValue($index, option)) {\n <studio-checkbox\n [ngModel]=\"isChecked(param, option.value)\"\n [name]=\"section.id + '-' + group.id + '-' + param.id + '-' + option.value\"\n (ngModelChange)=\"onCheckboxChange(section.id, group.id, param.id, option.value, $event)\"\n [label]=\"option.label\"\n [disabled]=\"param.disabled || option.disabled || false\"\n [size]=\"componentSize()\"\n />\n }\n </div>\n }\n\n @if (param.type === 'radio') {\n <div class=\"studio-inspector__options\">\n @for (option of param.options; track trackByOptionValue($index, option)) {\n <div class=\"studio-inspector__option\">\n <studio-radio-button\n [ngModel]=\"param.value\"\n (ngModelChange)=\"onRadioChange(section.id, group.id, param.id, $event)\"\n [value]=\"option.value\"\n [label]=\"option.label\"\n [name]=\"getRadioName(section.id, group.id, param.id)\"\n [disabled]=\"param.disabled || option.disabled || false\"\n [size]=\"componentSize()\"\n />\n @if (showDefaultIndicator() && isDefault(param, option.value)) {\n <span class=\"studio-inspector__default-indicator\">(default)</span>\n }\n </div>\n }\n </div>\n }\n\n @if (param.hint) {\n <div class=\"studio-inspector__parameter-hint\">{{ param.hint }}</div>\n }\n </div>\n }\n\n @if (!isLast && groupDivider() !== 'none') {\n <div class=\"studio-inspector__group-divider\"\n [class.studio-inspector__group-divider--line]=\"groupDivider() === 'line'\"\n [class.studio-inspector__group-divider--space]=\"groupDivider() === 'space'\">\n </div>\n }\n </div>\n }\n }\n\n @if (section.parameters) {\n @for (param of section.parameters; track trackByParameterId($index, param)) {\n <div class=\"studio-inspector__parameter\">\n @if (param.type !== 'boolean' && param.type !== 'checkbox' && param.type !== 'radio') {\n <div class=\"studio-inspector__parameter-label\">{{ param.label }}</div>\n }\n\n @if (param.type === 'text') {\n <studio-input\n [ngModel]=\"param.value\"\n [name]=\"section.id + '-' + param.id\"\n (ngModelChange)=\"onParameterChange(section.id, null, param.id, $event)\"\n [variant]=\"componentVariant()\"\n [size]=\"componentSize()\"\n [placeholder]=\"param.placeholder || ''\"\n [disabled]=\"param.disabled || false\"\n [readonly]=\"param.readonly || false\"\n [maxLength]=\"param.maxLength\"\n [fullWidth]=\"fullWidth()\"\n />\n }\n\n @if (param.type === 'number') {\n <div class=\"studio-inspector__number-input\">\n <studio-input\n type=\"number\"\n [ngModel]=\"param.value\"\n [name]=\"section.id + '-' + param.id\"\n (ngModelChange)=\"onParameterChange(section.id, null, param.id, $event)\"\n [variant]=\"componentVariant()\"\n [size]=\"componentSize()\"\n [min]=\"param.min\"\n [max]=\"param.max\"\n [step]=\"param.step\"\n [disabled]=\"param.disabled || false\"\n [readonly]=\"param.readonly || false\"\n [fullWidth]=\"fullWidth()\"\n />\n @if (param.suffix) {\n <span class=\"studio-inspector__suffix\">{{ param.suffix }}</span>\n }\n </div>\n }\n\n @if (param.type === 'textarea') {\n <studio-textarea\n [ngModel]=\"param.value\"\n [name]=\"section.id + '-' + param.id\"\n (ngModelChange)=\"onParameterChange(section.id, null, param.id, $event)\"\n [variant]=\"componentVariant()\"\n [size]=\"componentSize()\"\n [placeholder]=\"param.placeholder || ''\"\n [disabled]=\"param.disabled || false\"\n [readonly]=\"param.readonly || false\"\n [maxLength]=\"param.maxLength\"\n [fullWidth]=\"fullWidth()\"\n />\n }\n\n @if (param.type === 'color') {\n <studio-color-picker-compact\n [ngModel]=\"param.value\"\n [name]=\"section.id + '-' + param.id\"\n (ngModelChange)=\"onParameterChange(section.id, null, param.id, $event)\"\n [disabled]=\"param.disabled || false\"\n />\n }\n\n @if (param.type === 'select') {\n <studio-select\n [ngModel]=\"param.value\"\n [name]=\"section.id + '-' + param.id\"\n (ngModelChange)=\"onParameterChange(section.id, null, param.id, $event)\"\n [variant]=\"componentVariant()\"\n [size]=\"componentSize()\"\n [options]=\"param.options || []\"\n [placeholder]=\"param.placeholder || ''\"\n [disabled]=\"param.disabled || false\"\n [fullWidth]=\"fullWidth()\"\n />\n }\n\n @if (param.type === 'boolean') {\n <studio-switch\n [ngModel]=\"param.value\"\n [name]=\"section.id + '-' + param.id\"\n (ngModelChange)=\"onParameterChange(section.id, null, param.id, $event)\"\n [label]=\"param.label\"\n [size]=\"componentSize()\"\n [disabled]=\"param.disabled || false\"\n />\n }\n\n @if (param.type === 'checkbox') {\n <div class=\"studio-inspector__options\">\n @for (option of param.options; track trackByOptionValue($index, option)) {\n <studio-checkbox\n [ngModel]=\"isChecked(param, option.value)\"\n [name]=\"section.id + '-' + param.id + '-' + option.value\"\n (ngModelChange)=\"onCheckboxChange(section.id, null, param.id, option.value, $event)\"\n [label]=\"option.label\"\n [disabled]=\"param.disabled || option.disabled || false\"\n [size]=\"componentSize()\"\n />\n }\n </div>\n }\n\n @if (param.type === 'radio') {\n <div class=\"studio-inspector__options\">\n @for (option of param.options; track trackByOptionValue($index, option)) {\n <div class=\"studio-inspector__option\">\n <studio-radio-button\n [ngModel]=\"param.value\"\n (ngModelChange)=\"onRadioChange(section.id, null, param.id, $event)\"\n [value]=\"option.value\"\n [label]=\"option.label\"\n [name]=\"getRadioName(section.id, null, param.id)\"\n [disabled]=\"param.disabled || option.disabled || false\"\n [size]=\"componentSize()\"\n />\n @if (showDefaultIndicator() && isDefault(param, option.value)) {\n <span class=\"studio-inspector__default-indicator\">(default)</span>\n }\n </div>\n }\n </div>\n }\n\n @if (param.hint) {\n <div class=\"studio-inspector__parameter-hint\">{{ param.hint }}</div>\n }\n </div>\n }\n }\n </div>\n }\n </div>\n }\n </div>\n}\n","import { Component, ChangeDetectionStrategy, input, computed, inject } from '@angular/core';\nimport { SwitchComponent } from '../../primitives/switch';\nimport { IconComponent } from '../../primitives/icon';\nimport { StudioConfigService } from '../../config';\n\n/**\n * Theme toggle switch with sun/moon icons\n *\n * @example\n * <studio-theme-switch />\n * <studio-theme-switch [showLabel]=\"true\" />\n */\n@Component({\n selector: 'studio-theme-switch',\n standalone: true,\n imports: [SwitchComponent, IconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div class=\"studio-theme-switch\">\n @if (iconOnly()) {\n <button\n type=\"button\"\n class=\"studio-theme-switch__button studio-theme-switch__button--{{ size() }}\"\n [attr.aria-label]=\"isDark() ? 'Switch to light mode' : 'Switch to dark mode'\"\n (click)=\"toggleTheme()\">\n @if (isDark()) {\n <studio-icon name=\"moon\" [size]=\"iconSize()\" color=\"inherit\" />\n } @else {\n <studio-icon name=\"sun\" [size]=\"iconSize()\" color=\"inherit\" />\n }\n </button>\n } @else {\n <studio-switch\n [checked]=\"isDark()\"\n (checkedChange)=\"toggleTheme()\"\n [size]=\"size()\"\n [label]=\"showLabel() ? (isDark() ? 'Dark' : 'Light') : undefined\"\n labelPosition=\"left\">\n </studio-switch>\n }\n </div>\n `,\n styles: [`\n .studio-theme-switch {\n display: inline-flex;\n align-items: center;\n }\n\n .studio-theme-switch__button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border: none;\n background: transparent;\n color: var(--studio-text-secondary);\n cursor: pointer;\n border-radius: var(--studio-radius-md);\n transition: background-color var(--studio-transition-fast),\n color var(--studio-transition-fast);\n padding: var(--studio-spacing-xs);\n }\n\n .studio-theme-switch__button:hover {\n background: var(--studio-bg-secondary);\n color: var(--studio-text-primary);\n }\n\n .studio-theme-switch__button:focus-visible {\n outline: 2px solid var(--studio-primary);\n outline-offset: 2px;\n }\n\n .studio-theme-switch__button--sm {\n width: 2rem;\n height: 2rem;\n }\n\n .studio-theme-switch__button--md {\n width: 2.5rem;\n height: 2.5rem;\n }\n\n .studio-theme-switch__button--lg {\n width: 3rem;\n height: 3rem;\n }\n `]\n})\nexport class ThemeSwitchComponent {\n private readonly configService = inject(StudioConfigService);\n\n size = input<'sm' | 'md' | 'lg'>('md');\n showLabel = input<boolean>(false);\n iconOnly = input<boolean>(true);\n\n protected isDark = computed(() => this.configService.themeMode() === 'dark');\n\n protected iconSize = computed(() => {\n const sizeMap = { sm: 16, md: 20, lg: 24 };\n return sizeMap[this.size()];\n });\n\n protected toggleTheme(): void {\n this.configService.toggleTheme();\n }\n}\n","/**\n * Theme switch component\n */\n\nexport * from './theme-switch.component';\n","/**\n * Composites (Molecules + Organisms)\n * Complex components built from primitives\n */\n\nexport * from './button-toggle-group';\nexport * from './inspector';\nexport * from './theme-switch';\n","/**\n * Education components\n * Domain-specific components for educational platforms\n */\n\nexport {};\n","import { MaskConfig, MaskToken, MaskResult } from './mask.types';\n\nexport class MaskEngine {\n private readonly tokens: MaskToken[];\n private readonly patterns = {\n '9': /\\d/,\n 'A': /[a-zA-Zа-яА-Я]/,\n '*': /[a-zA-Z0-9]/,\n '#': /./,\n 'X': /[a-zA-Z0-9а-яА-Я]/,\n } as const;\n\n constructor(private readonly config: MaskConfig) {\n this.tokens = this.parsePattern(config.pattern);\n }\n\n process(value: string, cursorPos?: number): MaskResult {\n if (!value) {\n return {\n value: '',\n raw: '',\n cursor: 0,\n isComplete: false\n };\n }\n\n const cleaned = this.extractRaw(value);\n const formatted = this.applyMask(cleaned);\n const newCursor = cursorPos !== undefined\n ? this.calculateCursor(cursorPos, value, formatted)\n : formatted.length;\n\n const displayValue = this.config.guide && this.config.showOnFocus\n ? this.applyGuide(formatted)\n : formatted;\n\n return {\n value: displayValue,\n raw: cleaned,\n cursor: newCursor,\n isComplete: this.checkComplete(cleaned)\n };\n }\n\n getPlaceholder(): string {\n if (!this.tokens || this.tokens.length === 0) return '';\n\n return this.tokens\n .map(token => {\n if (token.type === 'static' && token.char) return token.char;\n return this.config.placeholder || '_';\n })\n .join('');\n }\n\n private parsePattern(pattern: string): MaskToken[] {\n const tokens: MaskToken[] = [];\n let i = 0;\n\n while (i < pattern.length) {\n const char = pattern[i];\n\n if (char === '\\\\' && i + 1 < pattern.length) {\n tokens.push({\n type: 'static',\n char: pattern[i + 1]\n });\n i += 2;\n continue;\n }\n\n if (char === '?' && tokens.length > 0) {\n tokens[tokens.length - 1].optional = true;\n i++;\n continue;\n }\n\n if (char in this.patterns) {\n tokens.push({\n type: this.getTokenType(char),\n pattern: this.patterns[char as keyof typeof this.patterns]\n });\n i++;\n } else {\n tokens.push({\n type: 'static',\n char\n });\n i++;\n }\n }\n\n return tokens;\n }\n\n private getTokenType(char: string): MaskToken['type'] {\n const typeMap: Record<string, MaskToken['type']> = {\n '9': 'digit',\n 'A': 'letter',\n '*': 'alphanumeric',\n '#': 'any',\n 'X': 'mixed'\n };\n return typeMap[char] || 'any';\n }\n\n private applyMask(raw: string): string {\n if (!raw || !this.tokens) return '';\n\n let result = '';\n let rawIndex = 0;\n\n for (const token of this.tokens) {\n if (rawIndex >= raw.length) {\n break;\n }\n\n if (token.type === 'static' && token.char) {\n result += token.char;\n if (raw[rawIndex] === token.char) {\n rawIndex++;\n }\n } else {\n const char = raw[rawIndex];\n if (token.pattern?.test(char)) {\n result += char;\n rawIndex++;\n } else if (!token.optional) {\n break;\n }\n }\n }\n\n return result;\n }\n\n private extractRaw(value: string): string {\n if (!value || !this.tokens) return '';\n\n const staticChars = this.tokens\n .filter(t => t.type === 'static' && t.char)\n .map(t => t.char!)\n .filter(Boolean);\n\n return value\n .split('')\n .filter(char => !staticChars.includes(char))\n .join('');\n }\n\n private applyGuide(value: string): string {\n if (!this.tokens || this.tokens.length === 0) return value;\n\n const placeholder = this.config.placeholder || '_';\n let result = value;\n const currentLength = value.replace(/[^a-zA-Z0-9а-яА-Я]/g, '').length;\n\n let addedCount = 0;\n for (let i = 0; i < this.tokens.length; i++) {\n const token = this.tokens[i];\n\n if (addedCount >= currentLength) {\n if (token.type === 'static' && token.char) {\n result += token.char;\n } else {\n result += placeholder;\n addedCount++;\n }\n }\n }\n\n return result;\n }\n\n private calculateCursor(\n oldCursor: number,\n oldValue: string,\n newValue: string\n ): number {\n const diff = newValue.length - oldValue.length;\n let newCursor = oldCursor + diff;\n\n while (newCursor < newValue.length) {\n const charAtCursor = newValue[newCursor];\n const isStatic = this.tokens.some(\n (t, i) => t.type === 'static' && t.char === charAtCursor && i === newCursor\n );\n\n if (!isStatic) break;\n newCursor++;\n }\n\n return Math.max(0, Math.min(newValue.length, newCursor));\n }\n\n private checkComplete(raw: string): boolean {\n const requiredTokens = this.tokens.filter(\n t => t.type !== 'static' && !t.optional\n );\n return raw.length >= requiredTokens.length;\n }\n}\n","import { MaskConfig, MaskPreset } from './mask.types';\n\nexport const MASK_PRESETS: Record<MaskPreset, MaskConfig> = {\n 'phone': {\n pattern: '+7 (999) 999-99-99',\n placeholder: '_',\n guide: true\n },\n 'phone-ru': {\n pattern: '+7 (999) 999-99-99',\n placeholder: '_',\n guide: true\n },\n 'phone-kz': {\n pattern: '+7 (999) 999-99-99',\n placeholder: '_',\n guide: true\n },\n 'date': {\n pattern: '99.99.9999',\n placeholder: '_',\n guide: true\n },\n 'datetime': {\n pattern: '99.99.9999 99:99',\n placeholder: '_',\n guide: true\n },\n 'time': {\n pattern: '99:99',\n placeholder: '_',\n guide: true\n },\n 'card': {\n pattern: '9999 9999 9999 9999',\n placeholder: 'X',\n guide: true\n },\n 'inn': {\n pattern: '999999999999',\n placeholder: '_',\n guide: false\n },\n 'snils': {\n pattern: '999-999-999 99',\n placeholder: '_',\n guide: true\n },\n 'passport-ru': {\n pattern: '99 99 999999',\n placeholder: '_',\n guide: true\n }\n};\n","import {\n Directive,\n input,\n effect,\n inject,\n DestroyRef,\n ElementRef,\n Renderer2,\n HostListener,\n forwardRef,\n computed,\n signal\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, NG_VALIDATORS, Validator, AbstractControl, ValidationErrors } from '@angular/forms';\nimport { MaskEngine } from './mask-engine';\nimport { MaskConfig, MaskPreset } from './mask.types';\nimport { MASK_PRESETS } from './mask-presets';\n\n@Directive({\n selector: 'input[studioMask]',\n standalone: true,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MaskDirective),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MaskDirective),\n multi: true\n }\n ],\n host: {\n '[attr.data-mask-complete]': 'isComplete()',\n '[attr.data-mask-active]': 'isActive()'\n }\n})\nexport class MaskDirective implements Validator {\n private readonly el = inject(ElementRef<HTMLInputElement | HTMLTextAreaElement>);\n private readonly renderer = inject(Renderer2);\n private readonly destroyRef = inject(DestroyRef);\n\n readonly mask = input<string | MaskPreset, string>('', {\n alias: 'studioMask',\n transform: (value: string | MaskPreset) => {\n if (!value) return '';\n if (value in MASK_PRESETS) {\n return MASK_PRESETS[value as MaskPreset].pattern;\n }\n return value;\n }\n });\n\n readonly maskPlaceholder = input<string>('_');\n readonly maskGuide = input<boolean>(true);\n readonly maskShowOnHover = input<boolean>(false);\n readonly maskShowOnFocus = input<boolean>(true);\n readonly maskClearIncomplete = input<boolean>(false);\n readonly maskAutoUnmask = input<boolean>(false);\n\n private readonly config = computed<MaskConfig>(() => ({\n pattern: this.mask(),\n placeholder: this.maskPlaceholder(),\n guide: this.maskGuide(),\n showOnHover: this.maskShowOnHover(),\n showOnFocus: this.maskShowOnFocus(),\n clearIncomplete: this.maskClearIncomplete(),\n autoUnmask: this.maskAutoUnmask()\n }));\n\n private readonly engine = signal<MaskEngine | null>(null);\n\n readonly isComplete = signal(false);\n readonly isActive = signal(false);\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor() {\n effect(() => {\n const maskPattern = this.mask();\n if (!maskPattern) return;\n\n const cfg = this.config();\n const newEngine = new MaskEngine(cfg);\n this.engine.set(newEngine);\n this.updatePlaceholder();\n });\n }\n\n @HostListener('input', ['$event'])\n onInput(event: InputEvent): void {\n const eng = this.engine();\n if (!eng) return;\n\n const element = this.el.nativeElement;\n const cursorPos = element.selectionStart ?? 0;\n\n const result = eng.process(element.value, cursorPos);\n\n if (element.value !== result.value) {\n this.renderer.setProperty(element, 'value', result.value);\n element.setSelectionRange(result.cursor, result.cursor);\n }\n\n this.isComplete.set(result.isComplete);\n\n const outputValue = this.config().autoUnmask ? result.raw : result.value;\n this.onChange(outputValue);\n }\n\n @HostListener('focus')\n onFocus(): void {\n this.isActive.set(true);\n\n if (this.maskShowOnFocus() && this.maskGuide()) {\n const eng = this.engine();\n if (!eng) return;\n\n const element = this.el.nativeElement;\n if (!element.value) {\n const result = eng.process('', 0);\n this.renderer.setProperty(element, 'value', result.value);\n element.setSelectionRange(0, 0);\n }\n }\n }\n\n @HostListener('blur')\n onBlur(): void {\n this.isActive.set(false);\n this.onTouched();\n\n if (this.maskClearIncomplete() && !this.isComplete()) {\n this.renderer.setProperty(this.el.nativeElement, 'value', '');\n this.onChange('');\n }\n }\n\n @HostListener('paste', ['$event'])\n onPaste(event: ClipboardEvent): void {\n event.preventDefault();\n const eng = this.engine();\n if (!eng) return;\n\n const pastedText = event.clipboardData?.getData('text') || '';\n const element = this.el.nativeElement;\n const cursorPos = element.selectionStart ?? 0;\n\n const currentValue = element.value;\n const before = currentValue.slice(0, cursorPos);\n const after = currentValue.slice(element.selectionEnd ?? cursorPos);\n const newValue = before + pastedText + after;\n\n const result = eng.process(newValue, cursorPos + pastedText.length);\n\n this.renderer.setProperty(element, 'value', result.value);\n element.setSelectionRange(result.cursor, result.cursor);\n\n const outputValue = this.config().autoUnmask ? result.raw : result.value;\n this.onChange(outputValue);\n }\n\n writeValue(value: string): void {\n const eng = this.engine();\n if (!eng) return;\n\n if (value) {\n const result = eng.process(value);\n this.renderer.setProperty(this.el.nativeElement, 'value', result.value);\n this.isComplete.set(result.isComplete);\n } else {\n this.renderer.setProperty(this.el.nativeElement, 'value', '');\n this.isComplete.set(false);\n }\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n if (!control.value) return null;\n\n const complete = this.isComplete();\n return complete ? null : { maskIncomplete: { value: control.value } };\n }\n\n private updatePlaceholder(): void {\n if (!this.maskShowOnFocus()) return;\n\n const eng = this.engine();\n if (!eng) return;\n\n try {\n const placeholderText = eng.getPlaceholder();\n if (placeholderText) {\n this.renderer.setAttribute(\n this.el.nativeElement,\n 'placeholder',\n placeholderText\n );\n }\n } catch (e) {\n console.warn('Failed to update placeholder:', e);\n }\n }\n}\n","/**\n * Public API Surface of @eduboxpro/studio\n */\n\n/* ========================================\n * Configuration\n * ======================================== */\nexport * from './lib/config';\n\n/* ========================================\n * Components\n * ======================================== */\nexport * from './lib/primitives';\nexport * from './lib/composites';\nexport * from './lib/education';\n\n/* ========================================\n * Directives\n * ======================================== */\nexport * from './lib/directives';\n\n/* ========================================\n * Utilities\n * ======================================== */\nexport * from './lib/utils';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","DOCUMENT","floatingOffset","floatingArrow"],"mappings":"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"}
|