@eduboxpro/studio 0.1.2 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +47 -0
- package/fesm2022/eduboxpro-studio.mjs +425 -91
- package/fesm2022/eduboxpro-studio.mjs.map +1 -1
- package/index.d.ts +191 -35
- package/package.json +3 -2
- package/src/styles/_tokens.scss +4 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eduboxpro-studio.mjs","sources":["../../../projects/studio/src/lib/config/studio.config.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/index.ts","../../../projects/studio/src/lib/primitives/button/button.component.ts","../../../projects/studio/src/lib/primitives/button/index.ts","../../../projects/studio/src/lib/primitives/index.ts","../../../projects/studio/src/lib/composites/index.ts","../../../projects/studio/src/lib/education/index.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 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 * Components defaults configuration\n */\nexport interface ComponentsConfig {\n /**\n * Button component defaults\n */\n button?: ButtonDefaultsConfig;\n\n /**\n * Badge component defaults\n */\n badge?: BadgeDefaultsConfig;\n\n // Future components\n // input?: InputDefaultsConfig;\n // card?: CardDefaultsConfig;\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","import { Injectable, inject, signal, effect } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { StudioConfig, StudioThemeConfig, ThemeMode, ColorConfig } from './studio.config';\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 effect(() => {\n this.applyTheme(this.config().theme);\n }, { allowSignalWrites: false });\n }\n\n configure(config: StudioConfig): void {\n this.config.set(config);\n if (config.theme?.mode) {\n this.setThemeMode(config.theme.mode);\n }\n }\n\n setThemeMode(mode: ThemeMode): void {\n this.themeMode.set(mode);\n this.document.documentElement.setAttribute('data-theme', mode);\n }\n\n toggleTheme(): void {\n const newMode = this.themeMode() === 'light' ? 'dark' : 'light';\n this.setThemeMode(newMode);\n }\n\n async loadFromBackend(organizationSlug: string): Promise<void> {\n try {\n const response = await fetch(`/api/organizations/${organizationSlug}/design-config`);\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n const config = await response.json();\n this.configure(config);\n } catch (error) {\n console.error('[Studio] Failed to load config from backend:', error);\n throw error;\n }\n }\n\n private applyTheme(theme?: StudioThemeConfig): void {\n if (!theme) return;\n\n const root = this.document.documentElement;\n\n // Apply colors\n if (theme.colors) {\n this.applyColorTokens(root, theme.colors);\n }\n\n // Apply typography\n if (theme.typography) {\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 // Apply spacing\n if (theme.spacing) {\n this.applyTokens(root, 'studio-spacing', theme.spacing);\n }\n\n // Apply border radius\n if (theme.borderRadius) {\n this.applyTokens(root, 'studio-radius', theme.borderRadius);\n }\n\n // Apply shadows\n if (theme.shadows) {\n this.applyTokens(root, 'studio-shadow', theme.shadows);\n }\n\n // Apply transitions\n if (theme.transitions) {\n this.applyTokens(root, 'studio-transition', theme.transitions);\n }\n\n // Apply z-index\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 // Brand colors with hover/active states\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 // Background colors\n if (colors.bg) {\n this.applyTokens(root, 'studio-bg', colors.bg);\n }\n\n // Text colors\n if (colors.text) {\n this.applyTokens(root, 'studio-text', colors.text);\n }\n\n // Border colors\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@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\n protected readonly icons = icons;\n\n protected lucideIcon = computed(() => {\n const iconName = this.name();\n return iconName;\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 {\n ArrowRight,\n ArrowLeft,\n ChevronDown,\n ChevronUp,\n ChevronLeft,\n ChevronRight,\n Download,\n Upload,\n Mail,\n Phone,\n Heart,\n Star,\n Settings,\n User,\n Trash2,\n Edit,\n Plus,\n Minus,\n Check,\n X,\n Search,\n Filter,\n ExternalLink,\n Link,\n Copy,\n Share2,\n Home,\n Menu,\n MoreVertical,\n MoreHorizontal,\n Bell,\n Calendar,\n Clock,\n Eye,\n EyeOff,\n Lock,\n Unlock,\n LogIn,\n LogOut,\n AlertCircle,\n AlertTriangle,\n Info,\n CheckCircle,\n XCircle,\n HelpCircle,\n File,\n FileText,\n Folder,\n Image,\n Save,\n Printer,\n RefreshCw,\n RotateCw,\n Loader,\n Loader2,\n ShoppingCart\n} from 'lucide-angular';\n\n/**\n * Провайдер иконок для Studio\n * Регистрирует базовый набор часто используемых иконок\n *\n * @example\n * ```typescript\n * // app.config.ts\n * import { provideStudioIcons } from '@eduboxpro/studio';\n *\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideStudioIcons()\n * ]\n * };\n * ```\n *\n * Для добавления дополнительных иконок:\n * @example\n * ```typescript\n * import { LUCIDE_ICONS, LucideIconProvider } from 'lucide-angular';\n * import { Zap, Wifi } from 'lucide-angular';\n *\n * providers: [\n * provideStudioIcons(),\n * {\n * provide: LUCIDE_ICONS,\n * multi: true,\n * useValue: new LucideIconProvider({ Zap, Wifi })\n * }\n * ]\n * ```\n */\nexport function provideStudioIcons(): EnvironmentProviders {\n return makeEnvironmentProviders([\n {\n provide: LUCIDE_ICONS,\n multi: true,\n useValue: new LucideIconProvider({\n ArrowRight,\n ArrowLeft,\n ChevronDown,\n ChevronUp,\n ChevronLeft,\n ChevronRight,\n Download,\n Upload,\n Mail,\n Phone,\n Heart,\n Star,\n Settings,\n User,\n Trash2,\n Edit,\n Plus,\n Minus,\n Check,\n X,\n Search,\n Filter,\n ExternalLink,\n Link,\n Copy,\n Share2,\n Home,\n Menu,\n MoreVertical,\n MoreHorizontal,\n Bell,\n Calendar,\n Clock,\n Eye,\n EyeOff,\n Lock,\n Unlock,\n LogIn,\n LogOut,\n AlertCircle,\n AlertTriangle,\n Info,\n CheckCircle,\n XCircle,\n HelpCircle,\n File,\n FileText,\n Folder,\n Image,\n Save,\n Printer,\n RefreshCw,\n RotateCw,\n Loader,\n Loader2,\n ShoppingCart\n })\n }\n ]);\n}\n","/**\n * Проверяет безопасность URL для навигации\n *\n * @param url - URL для проверки\n * @returns true если URL безопасен (http/https или относительный)\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 // Разрешаем только http(s) и относительные URL (пустой protocol)\n return ['http:', 'https:', ''].includes(parsed.protocol);\n } catch {\n // Невалидный URL\n return false;\n }\n}\n\n/**\n * Sanitize URL перед использованием в навигации\n *\n * @param url - URL для sanitization\n * @returns Безопасный URL или '#' если URL небезопасен\n *\n * @example\n * ```typescript\n * sanitizeUrl('https://example.com') // 'https://example.com'\n * sanitizeUrl('javascript:alert(1)') // '#' (с предупреждением в консоли)\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 * Объединяет CSS классы, игнорируя falsy значения\n *\n * @param classes - Массив классов (строки, undefined, null, false)\n * @returns Строка с объединенными классами\n *\n * @example\n * ```typescript\n * classNames('btn', 'btn-primary') // 'btn btn-primary'\n * classNames('btn', isActive && 'active') // 'btn active' если isActive=true, иначе '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 * Создает computed signal с fallback chain: input → config → default\n *\n * Упрощает паттерн configurable inputs, убирая boilerplate код.\n *\n * @param inputSignal - Input signal от пользователя\n * @param configSignal - Config значение (может быть undefined)\n * @param defaultValue - Fallback значение\n * @returns Computed signal с resolved значением\n *\n * @example\n * ```typescript\n * export class ButtonComponent {\n * private defaults = computed(() => this.configService.config().components?.button);\n *\n * // Input\n * variantInput = input<Variant | undefined>(undefined, { alias: 'variant' });\n *\n * // Resolved value с config fallback\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';\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@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 // Appearance - inputs\n variantInput = input<'solid' | 'outline' | 'soft' | 'dot' | undefined>(undefined, { alias: 'variant' });\n sizeInput = input<'sm' | 'md' | 'lg' | undefined>(undefined, { alias: 'size' });\n colorInput = input<'primary' | 'secondary' | 'success' | 'error' | 'warning' | 'info' | 'neutral' | undefined>(undefined, { alias: 'color' });\n radiusInput = input<'sm' | 'md' | 'lg' | 'full' | undefined>(undefined, { alias: 'radius' });\n\n // Values with config defaults\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\n icon = input<string>();\n iconPosition = input<'left' | 'right'>('left');\n\n // Dot indicator\n dot = input<boolean>(false);\n dotColor = input<'primary' | 'secondary' | 'success' | 'error' | 'warning' | 'info' | 'neutral'>();\n\n // Removable\n removable = input<boolean>(false);\n removed = output<void>();\n\n // Clickable & Navigation\n href = input<string>();\n target = input<'_blank' | '_self' | '_parent' | '_top'>('_self');\n disabled = input<boolean>(false);\n clicked = output<MouseEvent>();\n\n // Number badge\n value = input<string | number>();\n max = input<number>();\n showZero = input<boolean>(true);\n\n // Typography\n uppercase = input<boolean>(false);\n bold = input<boolean>(false);\n\n // Animation\n pulse = input<boolean>(false);\n\n // Auto color (будет реализовано позже если нужно)\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 // Если это число\n if (!isNaN(numVal)) {\n // Не показывать 0 если showZero = false\n if (numVal === 0 && !this.showZero()) return '';\n\n // Показать max+ если превышает максимум\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 // Скрыть если значение 0 и showZero = false\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 // Handle link navigation\n const url = this.href();\n if (url) {\n const safeUrl = sanitizeUrl(url);\n if (safeUrl === '#') {\n // URL was blocked - don't navigate\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\n */\n\nexport * from './badge.component';\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@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 <!-- Empty, spinner already shown -->\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 // Appearance - inputs\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 // Values with config defaults\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 // State\n disabled = input<boolean>(false);\n loading = input<boolean>(false);\n loadingText = input<string>('Loading...');\n\n // Layout\n fullWidth = input<boolean>(false);\n\n // Button props\n type = input<'button' | 'submit' | 'reset'>('button');\n\n // Icon\n icon = input<string>();\n iconPosition = input<'left' | 'right' | 'only'>('left');\n\n // Link mode\n href = input<string>();\n target = input<'_blank' | '_self' | '_parent' | '_top'>('_self');\n\n // Badge\n badge = input<string | number>();\n badgeColor = input<'primary' | 'error' | 'warning'>('error');\n\n // Accessibility\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 // Handle link navigation\n const url = this.href();\n if (url) {\n const safeUrl = sanitizeUrl(url);\n if (safeUrl === '#') {\n // URL was blocked - don't navigate\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 * Button component\n */\n\nexport * from './button.component';\n","/**\n * Primitives (Atoms)\n * Basic building blocks\n */\n\nexport * from './badge';\nexport * from './button';\nexport * from './icon';\n","/**\n * Composites (Molecules + Organisms)\n * Complex components built from primitives\n */\n\n// Export composite components here\n// Example: export * from './form-field';\n\n// Empty export to make this a valid module\nexport {};\n","/**\n * Education components\n * Domain-specific components for educational platforms\n */\n\n// Export education components here\n// Example: export * from './course-card';\n// Example: export * from './lesson-viewer';\n// Example: export * from './quiz-builder';\n\n// Empty export to make this a valid module\nexport {};\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 * Utilities\n * ======================================== */\nexport * from './lib/utils';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"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/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/index.ts","../../../projects/studio/src/lib/primitives/button/button.component.ts","../../../projects/studio/src/lib/primitives/button/index.ts","../../../projects/studio/src/lib/primitives/input/input.component.ts","../../../projects/studio/src/lib/primitives/input/input.component.html","../../../projects/studio/src/lib/primitives/switch/switch.component.ts","../../../projects/studio/src/lib/primitives/switch/index.ts","../../../projects/studio/src/lib/primitives/index.ts","../../../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/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 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 * Components defaults configuration\n */\nexport interface ComponentsConfig {\n button?: ButtonDefaultsConfig;\n badge?: BadgeDefaultsConfig;\n switch?: SwitchDefaultsConfig;\n input?: InputDefaultsConfig;\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","import { Injectable, inject, signal, effect } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { StudioConfig, StudioThemeConfig, ThemeMode, ColorConfig } from './studio.config';\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 effect(() => {\n this.applyTheme(this.config().theme);\n });\n }\n\n configure(config: StudioConfig): void {\n this.config.set(config);\n if (config.theme?.mode) {\n this.setThemeMode(config.theme.mode);\n }\n }\n\n setThemeMode(mode: ThemeMode): void {\n this.themeMode.set(mode);\n this.document.documentElement.setAttribute('data-theme', mode);\n }\n\n toggleTheme(): void {\n const newMode = this.themeMode() === 'light' ? 'dark' : 'light';\n this.setThemeMode(newMode);\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 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 {\n ArrowRight,\n ArrowLeft,\n ChevronDown,\n ChevronUp,\n ChevronLeft,\n ChevronRight,\n Download,\n Upload,\n Mail,\n Phone,\n Heart,\n Star,\n Settings,\n User,\n Trash2,\n Edit,\n Plus,\n Minus,\n Check,\n X,\n Search,\n Filter,\n ExternalLink,\n Link,\n Copy,\n Share2,\n Home,\n Menu,\n MoreVertical,\n MoreHorizontal,\n Bell,\n Calendar,\n Clock,\n Eye,\n EyeOff,\n Lock,\n Unlock,\n LogIn,\n LogOut,\n AlertCircle,\n AlertTriangle,\n Info,\n CheckCircle,\n XCircle,\n HelpCircle,\n File,\n FileText,\n Folder,\n Image,\n Save,\n Printer,\n RefreshCw,\n RotateCw,\n Loader,\n Loader2,\n ShoppingCart,\n Sun,\n Moon\n} from 'lucide-angular';\n\n/**\n * Studio icon provider\n * Registers commonly used Lucide icons\n *\n * @example\n * ```typescript\n * // app.config.ts\n * import { provideStudioIcons } from '@eduboxpro/studio';\n *\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideStudioIcons()\n * ]\n * };\n * ```\n *\n * To add additional icons:\n * @example\n * ```typescript\n * import { LUCIDE_ICONS, LucideIconProvider } from 'lucide-angular';\n * import { Zap, Wifi } from 'lucide-angular';\n *\n * providers: [\n * provideStudioIcons(),\n * {\n * provide: LUCIDE_ICONS,\n * multi: true,\n * useValue: new LucideIconProvider({ Zap, Wifi })\n * }\n * ]\n * ```\n */\nexport function provideStudioIcons(): EnvironmentProviders {\n return makeEnvironmentProviders([\n {\n provide: LUCIDE_ICONS,\n multi: true,\n useValue: new LucideIconProvider({\n ArrowRight,\n ArrowLeft,\n ChevronDown,\n ChevronUp,\n ChevronLeft,\n ChevronRight,\n Download,\n Upload,\n Mail,\n Phone,\n Heart,\n Star,\n Settings,\n User,\n Trash2,\n Edit,\n Plus,\n Minus,\n Check,\n X,\n Search,\n Filter,\n ExternalLink,\n Link,\n Copy,\n Share2,\n Home,\n Menu,\n MoreVertical,\n MoreHorizontal,\n Bell,\n Calendar,\n Clock,\n Eye,\n EyeOff,\n Lock,\n Unlock,\n LogIn,\n LogOut,\n AlertCircle,\n AlertTriangle,\n Info,\n CheckCircle,\n XCircle,\n HelpCircle,\n File,\n FileText,\n Folder,\n Image,\n Save,\n Printer,\n RefreshCw,\n RotateCw,\n Loader,\n Loader2,\n ShoppingCart,\n Sun,\n Moon\n })\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';\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@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<'solid' | 'outline' | 'soft' | 'dot' | undefined>(undefined, { alias: 'variant' });\n sizeInput = input<'sm' | 'md' | 'lg' | undefined>(undefined, { alias: 'size' });\n colorInput = input<'primary' | 'secondary' | 'success' | 'error' | 'warning' | 'info' | 'neutral' | undefined>(undefined, { alias: 'color' });\n radiusInput = input<'sm' | 'md' | 'lg' | 'full' | 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<'left' | 'right'>('left');\n\n dot = input<boolean>(false);\n dotColor = input<'primary' | 'secondary' | 'success' | 'error' | 'warning' | 'info' | 'neutral'>();\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\n */\n\nexport * from './badge.component';\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 {\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 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]=\"placeholder()\"\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 { Component, ChangeDetectionStrategy, input, output, computed, model, inject } from '@angular/core';\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 */\n@Component({\n selector: 'studio-switch',\n standalone: true,\n imports: [IconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[attr.role]': '\"switch\"',\n '[attr.aria-checked]': 'checked()',\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 (checked()) {\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 {\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 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.checked() && 'studio-switch--checked',\n this.disabled() && 'studio-switch--disabled'\n ));\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.checked();\n this.checked.set(newValue);\n this.checkedChange.emit(newValue);\n }\n}\n","/**\n * Switch component\n */\n\nexport * from './switch.component';\n","/**\n * Primitives (Atoms)\n * Basic building blocks\n */\n\nexport * from './badge';\nexport * from './button';\nexport * from './icon';\nexport * from './input';\nexport * from './switch';\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 './theme-switch';\n","/**\n * Education components\n * Domain-specific components for educational platforms\n */\n\nexport {};\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 * Utilities\n * ======================================== */\nexport * from './lib/utils';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|