@doku-com/tala 1.0.0-alpha.2 → 1.0.0-alpha.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.
@@ -1 +1 @@
1
- {"version":3,"file":"doku-com-tala.mjs","sources":["../../../projects/doku-tala/src/lib/components/avatar/avatar.ts","../../../projects/doku-tala/src/lib/components/avatar/avatar.html","../../../projects/doku-tala/src/lib/components/avatar/avatar-group.ts","../../../projects/doku-tala/src/lib/components/button/button.ts","../../../projects/doku-tala/src/lib/components/button/button.html","../../../projects/doku-tala/src/public-api.ts","../../../projects/doku-tala/src/doku-com-tala.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n computed,\n input,\n} from '@angular/core';\n\nexport type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\nexport type AvatarShape = 'circle' | 'square';\nexport type AvatarStatus = 'none' | 'online' | 'busy' | 'away' | 'offline';\n\n@Component({\n selector: 'tala-avatar',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n templateUrl: './avatar.html',\n styleUrl: './avatar.scss',\n host: {\n '[class]': 'hostClasses()',\n '[style.background-color]': 'bgColor()',\n '[attr.role]': '\"img\"',\n '[attr.aria-label]': 'ariaLabel()',\n },\n})\nexport class TalaAvatar {\n readonly name = input<string>('');\n readonly size = input<AvatarSize>('md');\n readonly shape = input<AvatarShape>('circle');\n readonly status = input<AvatarStatus>('none');\n readonly badgeCount = input<number>(0);\n readonly src = input<string>('');\n\n protected readonly initials = computed(() => this.getInitials(this.name()));\n\n protected readonly bgColor = computed(() =>\n this.src()\n ? 'transparent'\n : this.palette[this.hashName(this.name() || 'default') % this.palette.length],\n );\n\n protected readonly hasStatus = computed(() => this.status() !== 'none');\n protected readonly hasBadge = computed(() => !!this.badgeCount());\n\n protected readonly displayBadge = computed(() => {\n const count = this.badgeCount();\n return count > 99 ? '99+' : String(count);\n });\n\n protected readonly ariaLabel = computed(() => {\n const parts = [this.name() || 'Avatar'];\n if (this.hasStatus()) parts.push(`Status: ${this.status()}`);\n const count = this.badgeCount();\n if (count !== 0) parts.push(`${count} notification${count !== 1 ? 's' : ''}`);\n return parts.join(', ');\n });\n\n protected readonly hostClasses = computed(() =>\n [\n 'tala-avatar',\n `tala-avatar--${this.size()}`,\n `tala-avatar--${this.shape()}`,\n this.src() ? 'tala-avatar--image' : '',\n ]\n .filter(Boolean)\n .join(' '),\n );\n\n private readonly palette = [\n 'var(--color-blue-60)',\n 'var(--color-green-60)',\n 'var(--color-red-60)',\n 'var(--color-amber-60)',\n 'var(--color-blue-70)',\n 'var(--color-green-70)',\n 'var(--color-red-70)',\n 'var(--color-amber-70)',\n ];\n\n private hashName(name: string): number {\n let hash = 0;\n for (let i = 0; i < name.length; i++) {\n hash = (name.charCodeAt(i) + ((hash << 5) - hash)) | 0;\n }\n return Math.abs(hash);\n }\n\n private getInitials(name: string): string {\n const words = name.trim().split(/\\s+/).filter(Boolean);\n if (words.length === 0) return '?';\n if (words.length === 1) return words[0].slice(0, 2).toUpperCase();\n return (words[0][0] + words[words.length - 1][0]).toUpperCase();\n }\n}\n","@if (src()) {\n <img class=\"tala-avatar__image\" [src]=\"src()\" [alt]=\"name()\" />\n} @else {\n <span class=\"tala-avatar__initials\">{{ initials() }}</span>\n}\n\n@if (hasStatus()) {\n <span [class]=\"'tala-avatar__status tala-avatar__status--' + status()\" role=\"presentation\"></span>\n}\n\n@if (hasBadge()) {\n <span class=\"tala-avatar__badge\" aria-hidden=\"true\">\n {{ displayBadge() }}\n </span>\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, input } from '@angular/core';\nimport type { AvatarSize } from './avatar';\n\n@Component({\n selector: 'tala-avatar-group',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `<ng-content />`,\n styleUrl: './avatar-group.scss',\n host: {\n '[class]': '\"tala-avatar-group--\" + size()',\n role: 'group',\n },\n})\nexport class TalaAvatarGroup {\n readonly size = input<AvatarSize>('md');\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n computed,\n input,\n} from '@angular/core';\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'ghost' | 'accent' | 'danger' | 'link';\nexport type ButtonSize = 'xs' | 'sm' | 'md' | 'lg';\n\n@Component({\n selector: 'tala-button',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n templateUrl: './button.html',\n styleUrl: './button.scss',\n host: {\n '[class]': 'hostClasses()',\n '[attr.role]': '\"button\"',\n '[attr.tabindex]': 'disabled() ? \"-1\" : \"0\"',\n '[attr.aria-disabled]': 'disabled() || null',\n '[attr.aria-busy]': 'loading() || null',\n '(click)': '_onClick($event)',\n '(keydown.enter)': '_onKeydown($event)',\n '(keydown.space)': '_onKeydown($event)',\n },\n})\nexport class TalaButton {\n readonly variant = input<ButtonVariant>('primary');\n readonly size = input<ButtonSize>('md');\n readonly disabled = input<boolean>(false);\n readonly loading = input<boolean>(false);\n readonly iconOnly = input<boolean>(false);\n\n protected readonly hostClasses = computed(() =>\n [\n 'tala-button',\n `tala-button--${this.variant()}`,\n `tala-button--${this.size()}`,\n this.disabled() ? 'tala-button--disabled' : '',\n this.loading() ? 'tala-button--loading' : '',\n this.iconOnly() ? 'tala-button--icon-only' : '',\n ]\n .filter(Boolean)\n .join(' '),\n );\n\n protected _onClick(event: MouseEvent): void {\n if (this.disabled() || this.loading()) {\n event.stopImmediatePropagation();\n }\n }\n\n protected _onKeydown(event: Event): void {\n if (this.disabled() || this.loading()) return;\n event.preventDefault();\n (event.currentTarget as HTMLElement).click();\n }\n}\n","@if (loading()) {\n <span class=\"tala-button__spinner\" aria-hidden=\"true\"></span>\n}\n\n<ng-content select=\"[slot=prefix]\"></ng-content>\n<ng-content></ng-content>\n<ng-content select=\"[slot=suffix]\"></ng-content>\n","/*\n * Public API Surface of doku-tala\n */\n\nexport * from './lib/components/avatar';\nexport * from './lib/components/button';\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":"doku-com-tala.mjs","sources":["../../../projects/doku-tala/src/lib/components/avatar/avatar.ts","../../../projects/doku-tala/src/lib/components/avatar/avatar.html","../../../projects/doku-tala/src/lib/components/avatar/avatar-group.ts","../../../projects/doku-tala/src/lib/components/button/button.ts","../../../projects/doku-tala/src/lib/components/button/button.html","../../../projects/doku-tala/src/lib/components/input/input.ts","../../../projects/doku-tala/src/lib/components/input/input.html","../../../projects/doku-tala/src/lib/components/select/select.ts","../../../projects/doku-tala/src/lib/components/select/select.html","../../../projects/doku-tala/src/public-api.ts","../../../projects/doku-tala/src/doku-com-tala.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n computed,\n input,\n} from '@angular/core';\n\nexport type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\nexport type AvatarShape = 'circle' | 'square';\nexport type AvatarStatus = 'none' | 'online' | 'busy' | 'away' | 'offline';\n\n@Component({\n selector: 'tala-avatar',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n templateUrl: './avatar.html',\n styleUrl: './avatar.scss',\n host: {\n '[class]': 'hostClasses()',\n '[style.background-color]': 'bgColor()',\n '[attr.role]': '\"img\"',\n '[attr.aria-label]': 'ariaLabel()',\n },\n})\nexport class TalaAvatar {\n readonly name = input<string>('');\n readonly size = input<AvatarSize>('md');\n readonly shape = input<AvatarShape>('circle');\n readonly status = input<AvatarStatus>('none');\n readonly badgeCount = input<number>(0);\n readonly src = input<string>('');\n\n protected readonly initials = computed(() => this.getInitials(this.name()));\n\n protected readonly bgColor = computed(() =>\n this.src()\n ? 'transparent'\n : this.palette[this.hashName(this.name() || 'default') % this.palette.length],\n );\n\n protected readonly hasStatus = computed(() => this.status() !== 'none');\n protected readonly hasBadge = computed(() => !!this.badgeCount());\n\n protected readonly displayBadge = computed(() => {\n const count = this.badgeCount();\n return count > 99 ? '99+' : String(count);\n });\n\n protected readonly ariaLabel = computed(() => {\n const parts = [this.name() || 'Avatar'];\n if (this.hasStatus()) parts.push(`Status: ${this.status()}`);\n const count = this.badgeCount();\n if (count !== 0) parts.push(`${count} notification${count !== 1 ? 's' : ''}`);\n return parts.join(', ');\n });\n\n protected readonly hostClasses = computed(() =>\n [\n 'tala-avatar',\n `tala-avatar--${this.size()}`,\n `tala-avatar--${this.shape()}`,\n this.src() ? 'tala-avatar--image' : '',\n ]\n .filter(Boolean)\n .join(' '),\n );\n\n private readonly palette = [\n 'var(--tala-ref-color-blue-60)',\n 'var(--tala-ref-color-green-60)',\n 'var(--tala-ref-color-red-60)',\n 'var(--tala-ref-color-amber-60)',\n 'var(--tala-ref-color-blue-70)',\n 'var(--tala-ref-color-green-70)',\n 'var(--tala-ref-color-red-70)',\n 'var(--tala-ref-color-amber-70)',\n ];\n\n private hashName(name: string): number {\n let hash = 0;\n for (let i = 0; i < name.length; i++) {\n hash = (name.charCodeAt(i) + ((hash << 5) - hash)) | 0;\n }\n return Math.abs(hash);\n }\n\n private getInitials(name: string): string {\n const words = name.trim().split(/\\s+/).filter(Boolean);\n if (words.length === 0) return '?';\n if (words.length === 1) return words[0].slice(0, 2).toUpperCase();\n return (words[0][0] + words[words.length - 1][0]).toUpperCase();\n }\n}\n","@if (src()) {\n <img class=\"tala-avatar__image\" [src]=\"src()\" [alt]=\"name()\" />\n} @else {\n <span class=\"tala-avatar__initials\">{{ initials() }}</span>\n}\n\n@if (hasStatus()) {\n <span [class]=\"'tala-avatar__status tala-avatar__status--' + status()\" role=\"presentation\"></span>\n}\n\n@if (hasBadge()) {\n <span class=\"tala-avatar__badge\" aria-hidden=\"true\">\n {{ displayBadge() }}\n </span>\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, input } from '@angular/core';\nimport type { AvatarSize } from './avatar';\n\n@Component({\n selector: 'tala-avatar-group',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `<ng-content />`,\n styleUrl: './avatar-group.scss',\n host: {\n '[class]': '\"tala-avatar-group--\" + size()',\n role: 'group',\n },\n})\nexport class TalaAvatarGroup {\n readonly size = input<AvatarSize>('md');\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n computed,\n input,\n} from '@angular/core';\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'ghost' | 'accent' | 'danger' | 'link';\nexport type ButtonSize = 'xs' | 'sm' | 'md' | 'lg';\n\n@Component({\n selector: 'tala-button',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n templateUrl: './button.html',\n styleUrl: './button.scss',\n host: {\n '[class]': 'hostClasses()',\n '[attr.role]': '\"button\"',\n '[attr.tabindex]': 'disabled() ? \"-1\" : \"0\"',\n '[attr.aria-disabled]': 'disabled() || null',\n '[attr.aria-busy]': 'loading() || null',\n '(click)': '_onClick($event)',\n '(keydown.enter)': '_onKeydown($event)',\n '(keydown.space)': '_onKeydown($event)',\n },\n})\nexport class TalaButton {\n readonly variant = input<ButtonVariant>('primary');\n readonly size = input<ButtonSize>('md');\n readonly disabled = input<boolean>(false);\n readonly loading = input<boolean>(false);\n readonly iconOnly = input<boolean>(false);\n\n protected readonly hostClasses = computed(() =>\n [\n 'tala-button',\n `tala-button--${this.variant()}`,\n `tala-button--${this.size()}`,\n this.disabled() ? 'tala-button--disabled' : '',\n this.loading() ? 'tala-button--loading' : '',\n this.iconOnly() ? 'tala-button--icon-only' : '',\n ]\n .filter(Boolean)\n .join(' '),\n );\n\n protected _onClick(event: MouseEvent): void {\n if (this.disabled() || this.loading()) {\n event.stopImmediatePropagation();\n }\n }\n\n protected _onKeydown(event: Event): void {\n if (this.disabled() || this.loading()) return;\n event.preventDefault();\n (event.currentTarget as HTMLElement).click();\n }\n}\n","@if (loading()) {\n <span class=\"tala-button__spinner\" aria-hidden=\"true\"></span>\n}\n\n<ng-content select=\"[slot=prefix]\"></ng-content>\n<ng-content></ng-content>\n<ng-content select=\"[slot=suffix]\"></ng-content>\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n computed,\n forwardRef,\n input,\n signal,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport type InputSize = 'sm' | 'md' | 'lg';\nexport type InputStatus = 'default' | 'error' | 'success' | 'warning';\n\n@Component({\n selector: 'tala-input',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n templateUrl: './input.html',\n styleUrl: './input.scss',\n host: {\n '[class]': 'hostClasses()',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TalaInput),\n multi: true,\n },\n ],\n})\nexport class TalaInput implements ControlValueAccessor {\n private static _nextId = 0;\n\n readonly size = input<InputSize>('md');\n readonly status = input<InputStatus>('default');\n readonly label = input<string>('');\n readonly placeholder = input<string>('');\n readonly helperText = input<string>('');\n readonly required = input<boolean>(false);\n readonly disabled = input<boolean>(false);\n readonly readonly = input<boolean>(false);\n readonly prefix = input<string>('');\n readonly suffix = input<string>('');\n readonly type = input<string>('text');\n readonly name = input<string>('');\n\n protected readonly _id = `tala-input-${++TalaInput._nextId}`;\n protected readonly _helperId = `${this._id}-helper`;\n\n protected readonly _value = signal<string>('');\n protected readonly _disabledByForm = signal<boolean>(false);\n protected readonly _isDisabled = computed(() => this.disabled() || this._disabledByForm());\n\n protected readonly hostClasses = computed(() =>\n [\n 'tala-input',\n `tala-input--${this.size()}`,\n `tala-input--${this.status()}`,\n this._isDisabled() ? 'tala-input--disabled' : '',\n this.readonly() ? 'tala-input--readonly' : '',\n ]\n .filter(Boolean)\n .join(' '),\n );\n\n private _onChange: (value: string) => void = () => {};\n private _onTouched: () => void = () => {};\n\n writeValue(value: string): void {\n this._value.set(value ?? '');\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this._onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this._disabledByForm.set(isDisabled);\n }\n\n protected _onInput(event: Event): void {\n const value = (event.target as HTMLInputElement).value;\n this._value.set(value);\n this._onChange(value);\n }\n\n protected _onBlur(): void {\n this._onTouched();\n }\n}\n","@if (label()) {\n <div class=\"tala-input__label-row\">\n <label class=\"tala-input__label\" [attr.for]=\"_id\">{{ label() }}</label>\n @if (required()) {\n <span class=\"tala-input__required\" aria-hidden=\"true\">*</span>\n }\n </div>\n}\n\n<div\n class=\"tala-input__container\"\n [class.tala-input__container--has-prefix]=\"prefix()\"\n [class.tala-input__container--has-suffix]=\"suffix()\"\n>\n @if (prefix()) {\n <div class=\"tala-input__prefix\">{{ prefix() }}</div>\n }\n <ng-content select=\"[slot=leading-icon]\"></ng-content>\n <input\n class=\"tala-input__field\"\n [id]=\"_id\"\n [type]=\"type()\"\n [name]=\"name()\"\n [placeholder]=\"placeholder()\"\n [value]=\"_value()\"\n [disabled]=\"_isDisabled()\"\n [attr.readonly]=\"readonly() || null\"\n [required]=\"required()\"\n [attr.aria-invalid]=\"status() === 'error' || null\"\n [attr.aria-describedby]=\"helperText() && !_isDisabled() ? _helperId : null\"\n (input)=\"_onInput($event)\"\n (blur)=\"_onBlur()\"\n />\n <ng-content select=\"[slot=trailing-icon]\"></ng-content>\n @if (suffix()) {\n <div class=\"tala-input__suffix\">{{ suffix() }}</div>\n }\n</div>\n\n@if (helperText() && !_isDisabled()) {\n <div class=\"tala-input__helper-row\" [id]=\"_helperId\">\n <span class=\"tala-input__helper\">{{ helperText() }}</span>\n </div>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n ViewEncapsulation,\n computed,\n forwardRef,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport type SelectType = 'single' | 'searchable' | 'multi';\nexport type SelectSize = 'sm' | 'md' | 'lg';\nexport type SelectStatus = 'default' | 'error' | 'success';\nexport interface SelectOption {\n value: string;\n label: string;\n disabled?: boolean;\n}\n\n@Component({\n selector: 'tala-select',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n templateUrl: './select.html',\n styleUrl: './select.scss',\n host: {\n '[class]': 'hostClasses()',\n '[style.width]': '_hostWidth()',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TalaSelect),\n multi: true,\n },\n ],\n})\nexport class TalaSelect implements ControlValueAccessor {\n private static _nextId = 0;\n private readonly _elementRef = inject(ElementRef);\n\n readonly type = input<SelectType>('single');\n readonly size = input<SelectSize>('md');\n readonly status = input<SelectStatus>('default');\n readonly options = input<SelectOption[]>([]);\n readonly placeholder = input<string>('');\n readonly label = input<string>('');\n readonly helperText = input<string>('');\n readonly required = input<boolean>(false);\n readonly disabled = input<boolean>(false);\n readonly loading = input<boolean>(false);\n readonly width = input<'auto' | 'full' | string>('full');\n\n protected readonly _id = `tala-select-${++TalaSelect._nextId}`;\n protected readonly _helperId = `${this._id}-helper`;\n protected readonly _listboxId = `${this._id}-listbox`;\n\n protected readonly _isOpen = signal(false);\n protected readonly _value = signal<string | string[]>('');\n protected readonly _searchQuery = signal('');\n protected readonly _focusedIndex = signal(-1);\n protected readonly _disabledByForm = signal(false);\n\n protected readonly _isDisabled = computed(() => this.disabled() || this._disabledByForm());\n\n protected readonly _hostWidth = computed(() => {\n const w = this.width();\n if (w === 'full') return '100%';\n if (w === 'auto') return 'fit-content';\n return w;\n });\n\n protected readonly _filteredOptions = computed(() => {\n const opts = this.options();\n if (this.type() !== 'searchable') return opts;\n const q = this._searchQuery().toLowerCase().trim();\n if (!q) return opts;\n return opts.filter((o) => o.label.toLowerCase().includes(q));\n });\n\n protected readonly _hasValue = computed(() => {\n const v = this._value();\n return Array.isArray(v) ? v.length > 0 : v !== '';\n });\n\n protected readonly _displayValue = computed(() => {\n const v = this._value();\n const opts = this.options();\n if (this.type() === 'multi') {\n return (v as string[]).map((val) => opts.find((o) => o.value === val)?.label ?? val).join(', ');\n }\n return opts.find((o) => o.value === (v as string))?.label ?? '';\n });\n\n protected readonly _selectedLabels = computed(() => {\n const v = this._value();\n const opts = this.options();\n if (!Array.isArray(v)) return [];\n return v.map((val) => ({ value: val, label: opts.find((o) => o.value === val)?.label ?? val }));\n });\n\n protected readonly hostClasses = computed(() =>\n [\n 'tala-select',\n `tala-select--${this.size()}`,\n `tala-select--${this.status()}`,\n this._isOpen() ? 'tala-select--open' : '',\n this._isDisabled() ? 'tala-select--disabled' : '',\n this.loading() ? 'tala-select--loading' : '',\n ]\n .filter(Boolean)\n .join(' '),\n );\n\n private _onChange: (value: string | string[]) => void = () => {};\n private _onTouched: () => void = () => {};\n\n @HostListener('document:click', ['$event.target'])\n _onDocumentClick(target: EventTarget | null): void {\n if (!this._elementRef.nativeElement.contains(target)) {\n this._isOpen.set(false);\n this._searchQuery.set('');\n this._focusedIndex.set(-1);\n }\n }\n\n writeValue(value: string | string[]): void {\n if (this.type() === 'multi') {\n this._value.set(Array.isArray(value) ? value : value ? [value] : []);\n } else {\n this._value.set(typeof value === 'string' ? value : '');\n }\n }\n\n registerOnChange(fn: (value: string | string[]) => void): void {\n this._onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this._disabledByForm.set(isDisabled);\n }\n\n protected _onTriggerClick(event: MouseEvent): void {\n event.stopPropagation();\n if (this._isDisabled() || this.loading()) return;\n if (this._isOpen()) {\n this._isOpen.set(false);\n this._searchQuery.set('');\n this._focusedIndex.set(-1);\n } else {\n this._isOpen.set(true);\n }\n }\n\n protected _onTriggerKeydown(event: KeyboardEvent): void {\n if (this._isDisabled() || this.loading()) return;\n\n switch (event.key) {\n case ' ':\n case 'Enter':\n event.preventDefault();\n if (!this._isOpen()) {\n this._isOpen.set(true);\n } else if (this._focusedIndex() >= 0) {\n const opt = this._filteredOptions()[this._focusedIndex()];\n if (opt && !opt.disabled) this._selectOption(opt, event);\n }\n break;\n case 'Escape':\n event.preventDefault();\n this._isOpen.set(false);\n this._searchQuery.set('');\n this._focusedIndex.set(-1);\n break;\n case 'ArrowDown':\n event.preventDefault();\n if (!this._isOpen()) {\n this._isOpen.set(true);\n } else {\n const max = this._filteredOptions().length - 1;\n this._focusedIndex.update((i) => Math.min(i + 1, max));\n }\n break;\n case 'ArrowUp':\n event.preventDefault();\n if (this._isOpen()) {\n this._focusedIndex.update((i) => Math.max(i - 1, 0));\n }\n break;\n }\n }\n\n protected _selectOption(opt: SelectOption, event: Event): void {\n event.stopPropagation();\n if (opt.disabled) return;\n\n if (this.type() === 'multi') {\n const current = this._value() as string[];\n const idx = current.indexOf(opt.value);\n const next = idx >= 0 ? current.filter((v) => v !== opt.value) : [...current, opt.value];\n this._value.set(next);\n this._onChange(next);\n } else {\n this._value.set(opt.value);\n this._onChange(opt.value);\n this._isOpen.set(false);\n this._searchQuery.set('');\n this._focusedIndex.set(-1);\n }\n this._onTouched();\n }\n\n protected _removeChip(value: string, event: MouseEvent): void {\n event.stopPropagation();\n const current = this._value() as string[];\n const next = current.filter((v) => v !== value);\n this._value.set(next);\n this._onChange(next);\n this._onTouched();\n }\n\n protected _isSelected(value: string): boolean {\n const v = this._value();\n return Array.isArray(v) ? v.includes(value) : v === value;\n }\n\n protected _onSearchInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n this._searchQuery.set(input.value);\n this._focusedIndex.set(-1);\n }\n\n protected _onDropdownClick(event: MouseEvent): void {\n event.stopPropagation();\n }\n\n protected _onSearchKeydown(event: KeyboardEvent): void {\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this._focusedIndex.update((i) => Math.min(i + 1, this._filteredOptions().length - 1));\n break;\n case 'ArrowUp':\n event.preventDefault();\n this._focusedIndex.update((i) => Math.max(i - 1, 0));\n break;\n case 'Enter':\n event.preventDefault();\n if (this._focusedIndex() >= 0) {\n const opt = this._filteredOptions()[this._focusedIndex()];\n if (opt && !opt.disabled) this._selectOption(opt, event);\n }\n break;\n case 'Escape':\n event.preventDefault();\n this._isOpen.set(false);\n this._searchQuery.set('');\n this._focusedIndex.set(-1);\n break;\n }\n }\n}\n","@if (label()) {\n <div class=\"tala-select__label-row\">\n <label class=\"tala-select__label\" [attr.for]=\"_id\">{{ label() }}</label>\n @if (required()) {\n <span class=\"tala-select__required\" aria-hidden=\"true\">*</span>\n }\n </div>\n}\n\n<div\n class=\"tala-select__trigger\"\n [id]=\"_id\"\n role=\"combobox\"\n tabindex=\"0\"\n [attr.aria-expanded]=\"_isOpen()\"\n aria-haspopup=\"listbox\"\n [attr.aria-controls]=\"_listboxId\"\n [attr.aria-required]=\"required() || null\"\n [attr.aria-disabled]=\"_isDisabled() || null\"\n [attr.aria-invalid]=\"status() === 'error' || null\"\n [attr.aria-describedby]=\"helperText() && !_isDisabled() ? _helperId : null\"\n (click)=\"_onTriggerClick($event)\"\n (keydown)=\"_onTriggerKeydown($event)\"\n>\n <div class=\"tala-select__trigger-content\">\n @if (type() === 'multi' && _hasValue()) {\n <div class=\"tala-select__chips\">\n @for (chip of _selectedLabels(); track chip.value) {\n <span class=\"tala-select__chip\">\n {{ chip.label }}\n <button\n class=\"tala-select__chip-remove\"\n type=\"button\"\n aria-label=\"Remove {{ chip.label }}\"\n (click)=\"_removeChip(chip.value, $event)\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n >\n <line x1=\"4\" y1=\"4\" x2=\"12\" y2=\"12\" />\n <line x1=\"12\" y1=\"4\" x2=\"4\" y2=\"12\" />\n </svg>\n </button>\n </span>\n }\n </div>\n } @else if (type() === 'searchable' && _isOpen()) {\n <input\n class=\"tala-select__search\"\n type=\"text\"\n autocomplete=\"off\"\n [placeholder]=\"placeholder() || 'Search...'\"\n [value]=\"_searchQuery()\"\n (input)=\"_onSearchInput($event)\"\n (keydown)=\"_onSearchKeydown($event)\"\n (click)=\"$event.stopPropagation()\"\n />\n } @else {\n <span class=\"tala-select__value\" [class.tala-select__value--placeholder]=\"!_hasValue()\">\n {{ _hasValue() ? _displayValue() : placeholder() }}\n </span>\n }\n </div>\n\n <span class=\"tala-select__trailing\">\n @if (loading()) {\n <svg\n class=\"tala-select__spinner\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M21 12a9 9 0 1 1-6.219-8.56\" />\n </svg>\n } @else {\n <svg\n class=\"tala-select__chevron\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M4 6l4 4 4-4\" />\n </svg>\n }\n </span>\n</div>\n\n@if (_isOpen() && !_isDisabled() && !loading()) {\n <div\n class=\"tala-select__dropdown\"\n role=\"listbox\"\n [id]=\"_listboxId\"\n [attr.aria-multiselectable]=\"type() === 'multi' || null\"\n (click)=\"_onDropdownClick($event)\"\n >\n @for (opt of _filteredOptions(); track opt.value; let i = $index) {\n <div\n class=\"tala-select__option\"\n [class.tala-select__option--selected]=\"_isSelected(opt.value)\"\n [class.tala-select__option--disabled]=\"opt.disabled\"\n [class.tala-select__option--focused]=\"_focusedIndex() === i\"\n role=\"option\"\n [attr.aria-selected]=\"_isSelected(opt.value)\"\n [attr.aria-disabled]=\"opt.disabled || null\"\n (click)=\"_selectOption(opt, $event)\"\n >\n @if (type() === 'multi') {\n <span class=\"tala-select__checkbox\" aria-hidden=\"true\">\n @if (_isSelected(opt.value)) {\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\n <path d=\"M3 8.5L6.5 12 13 5\" />\n </svg>\n }\n </span>\n }\n <span class=\"tala-select__option-label\">{{ opt.label }}</span>\n @if (type() === 'single' && _isSelected(opt.value)) {\n <svg\n class=\"tala-select__option-check\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M3 8.5L6.5 12 13 5\" />\n </svg>\n }\n </div>\n } @empty {\n <div class=\"tala-select__empty\">No options found</div>\n }\n </div>\n}\n\n@if (helperText() && !_isDisabled()) {\n <div class=\"tala-select__helper-row\" [id]=\"_helperId\">\n <span class=\"tala-select__helper\">{{ helperText() }}</span>\n </div>\n}\n","/*\n * Public API Surface of doku-tala\n */\n\nexport * from './lib/components/avatar';\nexport * from './lib/components/button';\nexport * from './lib/components/input';\nexport * from './lib/components/select';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;MA0Ba,UAAU,CAAA;AACZ,IAAA,IAAI,GAAG,KAAK,CAAS,EAAE,2EAAC;AACxB,IAAA,IAAI,GAAG,KAAK,CAAa,IAAI,2EAAC;AAC9B,IAAA,KAAK,GAAG,KAAK,CAAc,QAAQ,4EAAC;AACpC,IAAA,MAAM,GAAG,KAAK,CAAe,MAAM,6EAAC;AACpC,IAAA,UAAU,GAAG,KAAK,CAAS,CAAC,iFAAC;AAC7B,IAAA,GAAG,GAAG,KAAK,CAAS,EAAE,0EAAC;AAEb,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,+EAAC;IAExD,OAAO,GAAG,QAAQ,CAAC,MACpC,IAAI,CAAC,GAAG;AACN,UAAE;UACA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAChF;AAEkB,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,KAAK,MAAM,gFAAC;AACpD,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,+EAAC;AAE9C,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AAC9C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE;AAC/B,QAAA,OAAO,KAAK,GAAG,EAAE,GAAG,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AAC3C,IAAA,CAAC,mFAAC;AAEiB,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;QAC3C,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,QAAQ,CAAC;QACvC,IAAI,IAAI,CAAC,SAAS,EAAE;YAAE,KAAK,CAAC,IAAI,CAAC,CAAA,QAAA,EAAW,IAAI,CAAC,MAAM,EAAE,CAAA,CAAE,CAAC;AAC5D,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE;QAC/B,IAAI,KAAK,KAAK,CAAC;AAAE,YAAA,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAA,aAAA,EAAgB,KAAK,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,CAAA,CAAE,CAAC;AAC7E,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AACzB,IAAA,CAAC,gFAAC;AAEiB,IAAA,WAAW,GAAG,QAAQ,CAAC,MACxC;QACE,aAAa;AACb,QAAA,CAAA,aAAA,EAAgB,IAAI,CAAC,IAAI,EAAE,CAAA,CAAE;AAC7B,QAAA,CAAA,aAAA,EAAgB,IAAI,CAAC,KAAK,EAAE,CAAA,CAAE;QAC9B,IAAI,CAAC,GAAG,EAAE,GAAG,oBAAoB,GAAG,EAAE;AACvC;SACE,MAAM,CAAC,OAAO;AACd,SAAA,IAAI,CAAC,GAAG,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CACb;AAEgB,IAAA,OAAO,GAAG;QACzB,+BAA+B;QAC/B,gCAAgC;QAChC,8BAA8B;QAC9B,gCAAgC;QAChC,+BAA+B;QAC/B,gCAAgC;QAChC,8BAA8B;QAC9B,gCAAgC;KACjC;AAEO,IAAA,QAAQ,CAAC,IAAY,EAAA;QAC3B,IAAI,IAAI,GAAG,CAAC;AACZ,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACpC,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC;QACxD;AACA,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;IACvB;AAEQ,IAAA,WAAW,CAAC,IAAY,EAAA;AAC9B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;AACtD,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,GAAG;AAClC,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE;QACjE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE;IACjE;wGAnEW,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,UAAU,87BC1BvB,uaAeA,EAAA,MAAA,EAAA,CAAA,g9IAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FDWa,UAAU,EAAA,UAAA,EAAA,CAAA;kBAdtB,SAAS;+BACE,aAAa,EAAA,UAAA,EACX,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAG/B;AACJ,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,0BAA0B,EAAE,WAAW;AACvC,wBAAA,aAAa,EAAE,OAAO;AACtB,wBAAA,mBAAmB,EAAE,aAAa;AACnC,qBAAA,EAAA,QAAA,EAAA,uaAAA,EAAA,MAAA,EAAA,CAAA,g9IAAA,CAAA,EAAA;;;METU,eAAe,CAAA;AACjB,IAAA,IAAI,GAAG,KAAK,CAAa,IAAI,2EAAC;wGAD5B,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,sTAPhB,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,woBAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAOf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAZ3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAAA,UAAA,EACjB,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAC3B,CAAA,cAAA,CAAgB,EAAA,IAAA,EAEpB;AACJ,wBAAA,SAAS,EAAE,gCAAgC;AAC3C,wBAAA,IAAI,EAAE,OAAO;AACd,qBAAA,EAAA,MAAA,EAAA,CAAA,woBAAA,CAAA,EAAA;;;MCgBU,UAAU,CAAA;AACZ,IAAA,OAAO,GAAG,KAAK,CAAgB,SAAS,8EAAC;AACzC,IAAA,IAAI,GAAG,KAAK,CAAa,IAAI,2EAAC;AAC9B,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC;AAChC,IAAA,OAAO,GAAG,KAAK,CAAU,KAAK,8EAAC;AAC/B,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC;AAEtB,IAAA,WAAW,GAAG,QAAQ,CAAC,MACxC;QACE,aAAa;AACb,QAAA,CAAA,aAAA,EAAgB,IAAI,CAAC,OAAO,EAAE,CAAA,CAAE;AAChC,QAAA,CAAA,aAAA,EAAgB,IAAI,CAAC,IAAI,EAAE,CAAA,CAAE;QAC7B,IAAI,CAAC,QAAQ,EAAE,GAAG,uBAAuB,GAAG,EAAE;QAC9C,IAAI,CAAC,OAAO,EAAE,GAAG,sBAAsB,GAAG,EAAE;QAC5C,IAAI,CAAC,QAAQ,EAAE,GAAG,wBAAwB,GAAG,EAAE;AAChD;SACE,MAAM,CAAC,OAAO;AACd,SAAA,IAAI,CAAC,GAAG,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CACb;AAES,IAAA,QAAQ,CAAC,KAAiB,EAAA;QAClC,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;YACrC,KAAK,CAAC,wBAAwB,EAAE;QAClC;IACF;AAEU,IAAA,UAAU,CAAC,KAAY,EAAA;QAC/B,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE;YAAE;QACvC,KAAK,CAAC,cAAc,EAAE;AACrB,QAAA,KAAK,CAAC,aAA6B,CAAC,KAAK,EAAE;IAC9C;wGA9BW,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,UAAU,khCC7BvB,kOAOA,EAAA,MAAA,EAAA,CAAA,2iIAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FDsBa,UAAU,EAAA,UAAA,EAAA,CAAA;kBAlBtB,SAAS;+BACE,aAAa,EAAA,UAAA,EACX,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAG/B;AACJ,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,aAAa,EAAE,UAAU;AACzB,wBAAA,iBAAiB,EAAE,yBAAyB;AAC5C,wBAAA,sBAAsB,EAAE,oBAAoB;AAC5C,wBAAA,kBAAkB,EAAE,mBAAmB;AACvC,wBAAA,SAAS,EAAE,kBAAkB;AAC7B,wBAAA,iBAAiB,EAAE,oBAAoB;AACvC,wBAAA,iBAAiB,EAAE,oBAAoB;AACxC,qBAAA,EAAA,QAAA,EAAA,kOAAA,EAAA,MAAA,EAAA,CAAA,2iIAAA,CAAA,EAAA;;;MEKU,SAAS,CAAA;AACZ,IAAA,OAAO,OAAO,GAAG,CAAC;AAEjB,IAAA,IAAI,GAAG,KAAK,CAAY,IAAI,2EAAC;AAC7B,IAAA,MAAM,GAAG,KAAK,CAAc,SAAS,6EAAC;AACtC,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;AACzB,IAAA,WAAW,GAAG,KAAK,CAAS,EAAE,kFAAC;AAC/B,IAAA,UAAU,GAAG,KAAK,CAAS,EAAE,iFAAC;AAC9B,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC;AAChC,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC;AAChC,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC;AAChC,IAAA,MAAM,GAAG,KAAK,CAAS,EAAE,6EAAC;AAC1B,IAAA,MAAM,GAAG,KAAK,CAAS,EAAE,6EAAC;AAC1B,IAAA,IAAI,GAAG,KAAK,CAAS,MAAM,2EAAC;AAC5B,IAAA,IAAI,GAAG,KAAK,CAAS,EAAE,2EAAC;AAEd,IAAA,GAAG,GAAG,CAAA,WAAA,EAAc,EAAE,SAAS,CAAC,OAAO,EAAE;AACzC,IAAA,SAAS,GAAG,CAAA,EAAG,IAAI,CAAC,GAAG,SAAS;AAEhC,IAAA,MAAM,GAAG,MAAM,CAAS,EAAE,6EAAC;AAC3B,IAAA,eAAe,GAAG,MAAM,CAAU,KAAK,sFAAC;AACxC,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,eAAe,EAAE,kFAAC;AAEvE,IAAA,WAAW,GAAG,QAAQ,CAAC,MACxC;QACE,YAAY;AACZ,QAAA,CAAA,YAAA,EAAe,IAAI,CAAC,IAAI,EAAE,CAAA,CAAE;AAC5B,QAAA,CAAA,YAAA,EAAe,IAAI,CAAC,MAAM,EAAE,CAAA,CAAE;QAC9B,IAAI,CAAC,WAAW,EAAE,GAAG,sBAAsB,GAAG,EAAE;QAChD,IAAI,CAAC,QAAQ,EAAE,GAAG,sBAAsB,GAAG,EAAE;AAC9C;SACE,MAAM,CAAC,OAAO;AACd,SAAA,IAAI,CAAC,GAAG,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CACb;AAEO,IAAA,SAAS,GAA4B,MAAK,EAAE,CAAC;AAC7C,IAAA,UAAU,GAAe,MAAK,EAAE,CAAC;AAEzC,IAAA,UAAU,CAAC,KAAa,EAAA;QACtB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;IAC9B;AAEA,IAAA,gBAAgB,CAAC,EAA2B,EAAA;AAC1C,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;IACtB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC;IACtC;AAEU,IAAA,QAAQ,CAAC,KAAY,EAAA;AAC7B,QAAA,MAAM,KAAK,GAAI,KAAK,CAAC,MAA2B,CAAC,KAAK;AACtD,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;IACvB;IAEU,OAAO,GAAA;QACf,IAAI,CAAC,UAAU,EAAE;IACnB;wGA9DW,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAT,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,EAAA,SAAA,EART;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,SAAS,CAAC;AACxC,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9BH,42CA4CA,EAAA,MAAA,EAAA,CAAA,07JAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FDZa,SAAS,EAAA,UAAA,EAAA,CAAA;kBAlBrB,SAAS;+BACE,YAAY,EAAA,UAAA,EACV,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAG/B;AACJ,wBAAA,SAAS,EAAE,eAAe;qBAC3B,EAAA,SAAA,EACU;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,eAAe,CAAC;AACxC,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,42CAAA,EAAA,MAAA,EAAA,CAAA,07JAAA,CAAA,EAAA;;;MEYU,UAAU,CAAA;AACb,IAAA,OAAO,OAAO,GAAG,CAAC;AACT,IAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAExC,IAAA,IAAI,GAAG,KAAK,CAAa,QAAQ,2EAAC;AAClC,IAAA,IAAI,GAAG,KAAK,CAAa,IAAI,2EAAC;AAC9B,IAAA,MAAM,GAAG,KAAK,CAAe,SAAS,6EAAC;AACvC,IAAA,OAAO,GAAG,KAAK,CAAiB,EAAE,8EAAC;AACnC,IAAA,WAAW,GAAG,KAAK,CAAS,EAAE,kFAAC;AAC/B,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;AACzB,IAAA,UAAU,GAAG,KAAK,CAAS,EAAE,iFAAC;AAC9B,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC;AAChC,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC;AAChC,IAAA,OAAO,GAAG,KAAK,CAAU,KAAK,8EAAC;AAC/B,IAAA,KAAK,GAAG,KAAK,CAA2B,MAAM,4EAAC;AAErC,IAAA,GAAG,GAAG,CAAA,YAAA,EAAe,EAAE,UAAU,CAAC,OAAO,EAAE;AAC3C,IAAA,SAAS,GAAG,CAAA,EAAG,IAAI,CAAC,GAAG,SAAS;AAChC,IAAA,UAAU,GAAG,CAAA,EAAG,IAAI,CAAC,GAAG,UAAU;AAElC,IAAA,OAAO,GAAG,MAAM,CAAC,KAAK,8EAAC;AACvB,IAAA,MAAM,GAAG,MAAM,CAAoB,EAAE,6EAAC;AACtC,IAAA,YAAY,GAAG,MAAM,CAAC,EAAE,mFAAC;AACzB,IAAA,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC,oFAAC;AAC1B,IAAA,eAAe,GAAG,MAAM,CAAC,KAAK,sFAAC;AAE/B,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,eAAe,EAAE,kFAAC;AAEvE,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AAC5C,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;QACtB,IAAI,CAAC,KAAK,MAAM;AAAE,YAAA,OAAO,MAAM;QAC/B,IAAI,CAAC,KAAK,MAAM;AAAE,YAAA,OAAO,aAAa;AACtC,QAAA,OAAO,CAAC;AACV,IAAA,CAAC,iFAAC;AAEiB,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AAClD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE;AAC3B,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,YAAY;AAAE,YAAA,OAAO,IAAI;AAC7C,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE;AAClD,QAAA,IAAI,CAAC,CAAC;AAAE,YAAA,OAAO,IAAI;QACnB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC9D,IAAA,CAAC,uFAAC;AAEiB,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AAC3C,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE;QACvB,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE;AACnD,IAAA,CAAC,gFAAC;AAEiB,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AAC/C,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE;AACvB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE;AAC3B,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,OAAO,EAAE;AAC3B,YAAA,OAAQ,CAAc,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QACjG;AACA,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAM,CAAY,CAAC,EAAE,KAAK,IAAI,EAAE;AACjE,IAAA,CAAC,oFAAC;AAEiB,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AACjD,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE;AACvB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE;AAC3B,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAAE,YAAA,OAAO,EAAE;AAChC,QAAA,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC;AACjG,IAAA,CAAC,sFAAC;AAEiB,IAAA,WAAW,GAAG,QAAQ,CAAC,MACxC;QACE,aAAa;AACb,QAAA,CAAA,aAAA,EAAgB,IAAI,CAAC,IAAI,EAAE,CAAA,CAAE;AAC7B,QAAA,CAAA,aAAA,EAAgB,IAAI,CAAC,MAAM,EAAE,CAAA,CAAE;QAC/B,IAAI,CAAC,OAAO,EAAE,GAAG,mBAAmB,GAAG,EAAE;QACzC,IAAI,CAAC,WAAW,EAAE,GAAG,uBAAuB,GAAG,EAAE;QACjD,IAAI,CAAC,OAAO,EAAE,GAAG,sBAAsB,GAAG,EAAE;AAC7C;SACE,MAAM,CAAC,OAAO;AACd,SAAA,IAAI,CAAC,GAAG,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CACb;AAEO,IAAA,SAAS,GAAuC,MAAK,EAAE,CAAC;AACxD,IAAA,UAAU,GAAe,MAAK,EAAE,CAAC;AAGzC,IAAA,gBAAgB,CAAC,MAA0B,EAAA;AACzC,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACpD,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AACvB,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC5B;IACF;AAEA,IAAA,UAAU,CAAC,KAAwB,EAAA;AACjC,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,OAAO,EAAE;AAC3B,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QACtE;aAAO;AACL,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,EAAE,CAAC;QACzD;IACF;AAEA,IAAA,gBAAgB,CAAC,EAAsC,EAAA;AACrD,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;IACtB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC;IACtC;AAEU,IAAA,eAAe,CAAC,KAAiB,EAAA;QACzC,KAAK,CAAC,eAAe,EAAE;QACvB,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE;YAAE;AAC1C,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AAClB,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AACvB,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC5B;aAAO;AACL,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QACxB;IACF;AAEU,IAAA,iBAAiB,CAAC,KAAoB,EAAA;QAC9C,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE;YAAE;AAE1C,QAAA,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,GAAG;AACR,YAAA,KAAK,OAAO;gBACV,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;AACnB,oBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;gBACxB;AAAO,qBAAA,IAAI,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,EAAE;AACpC,oBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;AACzD,oBAAA,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ;AAAE,wBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC;gBAC1D;gBACA;AACF,YAAA,KAAK,QAAQ;gBACX,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AACvB,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC1B;AACF,YAAA,KAAK,WAAW;gBACd,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;AACnB,oBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;gBACxB;qBAAO;oBACL,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,MAAM,GAAG,CAAC;oBAC9C,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;gBACxD;gBACA;AACF,YAAA,KAAK,SAAS;gBACZ,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;oBAClB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;gBACtD;gBACA;;IAEN;IAEU,aAAa,CAAC,GAAiB,EAAE,KAAY,EAAA;QACrD,KAAK,CAAC,eAAe,EAAE;QACvB,IAAI,GAAG,CAAC,QAAQ;YAAE;AAElB,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,OAAO,EAAE;AAC3B,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAc;YACzC,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AACtC,YAAA,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC;AACxF,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACrB,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QACtB;aAAO;YACL,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;AAC1B,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AACvB,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC5B;QACA,IAAI,CAAC,UAAU,EAAE;IACnB;IAEU,WAAW,CAAC,KAAa,EAAE,KAAiB,EAAA;QACpD,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAc;AACzC,QAAA,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC;AAC/C,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACrB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QACpB,IAAI,CAAC,UAAU,EAAE;IACnB;AAEU,IAAA,WAAW,CAAC,KAAa,EAAA;AACjC,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE;QACvB,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,KAAK;IAC3D;AAEU,IAAA,cAAc,CAAC,KAAY,EAAA;AACnC,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B;QAC9C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;QAClC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC5B;AAEU,IAAA,gBAAgB,CAAC,KAAiB,EAAA;QAC1C,KAAK,CAAC,eAAe,EAAE;IACzB;AAEU,IAAA,gBAAgB,CAAC,KAAoB,EAAA;AAC7C,QAAA,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,WAAW;gBACd,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACrF;AACF,YAAA,KAAK,SAAS;gBACZ,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;gBACpD;AACF,YAAA,KAAK,OAAO;gBACV,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,EAAE;AAC7B,oBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;AACzD,oBAAA,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ;AAAE,wBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC;gBAC1D;gBACA;AACF,YAAA,KAAK,QAAQ;gBACX,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AACvB,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC1B;;IAEN;wGAnOW,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,gBAAA,EAAA,iCAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,aAAA,EAAA,cAAA,EAAA,EAAA,EAAA,SAAA,EARV;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,UAAU,CAAC;AACzC,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECxCH,mpKA6JA,EAAA,MAAA,EAAA,CAAA,guPAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FDnHa,UAAU,EAAA,UAAA,EAAA,CAAA;kBAnBtB,SAAS;+BACE,aAAa,EAAA,UAAA,EACX,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAG/B;AACJ,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,eAAe,EAAE,cAAc;qBAChC,EAAA,SAAA,EACU;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,gBAAgB,CAAC;AACzC,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,mpKAAA,EAAA,MAAA,EAAA,CAAA,guPAAA,CAAA,EAAA;;sBAkFA,YAAY;uBAAC,gBAAgB,EAAE,CAAC,eAAe,CAAC;;;AE1HnD;;AAEG;;ACFH;;AAEG;;;;"}
package/llms.txt CHANGED
@@ -28,40 +28,43 @@ All tokens are CSS custom properties. Apply via `var(--token-name)`.
28
28
 
29
29
  ### Colors
30
30
 
31
- Background:
32
- - `--color-background-base` — main page background
33
- - `--color-background-subtle` — slightly elevated background
34
- - `--color-background-muted` — muted background
35
- - `--color-background-inverse` — inverse/dark background
36
-
37
31
  Surface:
38
- - `--color-surface-default` — default surface (cards, panels)
39
- - `--color-surface-raised` — elevated surface
40
- - `--color-surface-overlay` — overlay/modal surface
41
- - `--color-surface-sunken` — recessed/inset surface
32
+ - `--tala-sys-color-surface-sunken` — recessed areas like inputs or code blocks
33
+ - `--tala-sys-color-surface-default` — base page and standard cards
34
+ - `--tala-sys-color-surface-raised` — cards or panels that sit above the page
35
+ - `--tala-sys-color-surface-overlay` — modals, drawers, and popovers
36
+ - `--tala-sys-color-surface-inverse` — dark/inverted sections
42
37
 
43
- Border:
44
- - `--color-border-default`
45
- - `--color-border-strong`
46
- - `--color-border-focus`
47
- - `--color-border-danger`
38
+ Outline:
39
+ - `--tala-sys-color-outline-default` — subtle dividers and input borders at rest
40
+ - `--tala-sys-color-outline-strong` — more prominent borders needing higher contrast
41
+ - `--tala-sys-color-outline-focus` — keyboard focus ring on interactive elements
48
42
 
49
43
  Text:
50
- - `--color-text-primary`
51
- - `--color-text-secondary`
52
- - `--color-text-tertiary`
53
- - `--color-text-disabled`
54
- - `--color-text-inverse`
55
- - `--color-text-accent`
56
- - `--color-text-link`
57
- - `--color-text-placeholder`
58
-
59
- Status:
60
- - `--color-status-success-{bg|text|border}`
61
- - `--color-status-warning-{bg|text|border}`
62
- - `--color-status-danger-{bg|text|border}`
63
- - `--color-status-info-{bg|text|border}`
64
- - `--color-status-neutral-{bg|text|border}`
44
+ - `--tala-sys-color-text-primary` — main body copy and headings
45
+ - `--tala-sys-color-text-secondary` — supporting labels, captions, and metadata
46
+ - `--tala-sys-color-text-tertiary` — de-emphasized hints or supplemental info
47
+ - `--tala-sys-color-text-disabled` — non-interactive / unavailable text
48
+ - `--tala-sys-color-text-inverse` — text on dark or inverse surfaces
49
+ - `--tala-sys-color-text-placeholder` — input placeholder copy
50
+ - `--tala-sys-color-text-link` — interactive inline links
51
+
52
+ Brand:
53
+ - `--tala-sys-color-brand` — primary CTA and key accent color
54
+ - `--tala-sys-color-on-brand` — content placed on top of a brand-colored surface
55
+ - `--tala-sys-color-brand-hover` — brand color on pointer hover
56
+ - `--tala-sys-color-brand-subtle` — light tinted surface for brand-adjacent areas
57
+
58
+ Error (destructive interactive):
59
+ - `--tala-sys-color-error` — destructive buttons, icons, and controls
60
+ - `--tala-sys-color-on-error` — content placed on top of an error-colored surface
61
+ - `--tala-sys-color-error-hover` — error color on pointer hover
62
+
63
+ Feedback (read-only status):
64
+ - `--tala-sys-color-success-surface`, `--tala-sys-color-success-text`, `--tala-sys-color-success-outline`
65
+ - `--tala-sys-color-warning-surface`, `--tala-sys-color-warning-text`, `--tala-sys-color-warning-outline`
66
+ - `--tala-sys-color-error-surface`, `--tala-sys-color-error-text`, `--tala-sys-color-error-outline`
67
+ - `--tala-sys-color-info-surface`, `--tala-sys-color-info-text`, `--tala-sys-color-info-outline`
65
68
 
66
69
  ### Spacing
67
70
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@doku-com/tala",
3
- "version": "1.0.0-alpha.2",
3
+ "version": "1.0.0-alpha.4",
4
4
  "description": "The next generation of Angular UI library",
5
5
  "keywords": [
6
6
  "doku",
@@ -1,131 +1,178 @@
1
1
  :root {
2
- /* ─── Primitive ─── */
2
+ /* ═══════════════════════════════════════════════
3
+ REFERENCE
4
+ Raw palette values. Never use directly in
5
+ components — use system tokens instead.
6
+ ═══════════════════════════════════════════════ */
3
7
 
4
8
  /* Red */
5
- --color-red-5: #fff0f0;
6
- --color-red-10: #ffd6d5;
7
- --color-red-20: #ff9b99;
8
- --color-red-30: #f76b68;
9
- --color-red-40: #ef4340;
10
- --color-red-50: #e1251b;
11
- --color-red-60: #c41e15;
12
- --color-red-70: #a0170f;
13
- --color-red-80: #7d110a;
14
- --color-red-90: #5c0b06;
15
- --color-red-100: #3a0603;
9
+ --tala-ref-color-red-5: #fff0f0;
10
+ --tala-ref-color-red-10: #ffd6d5;
11
+ --tala-ref-color-red-20: #ff9b99;
12
+ --tala-ref-color-red-30: #f76b68;
13
+ --tala-ref-color-red-40: #ef4340;
14
+ --tala-ref-color-red-50: #e1251b;
15
+ --tala-ref-color-red-60: #c41e15;
16
+ --tala-ref-color-red-65: #b91c1c;
17
+ --tala-ref-color-red-70: #a0170f;
18
+ --tala-ref-color-red-80: #7d110a;
19
+ --tala-ref-color-red-90: #5c0b06;
20
+ --tala-ref-color-red-100: #3a0603;
16
21
 
17
22
  /* Neutral */
18
- --color-neutral-0: #ffffff;
19
- --color-neutral-5: #f7f7f8;
20
- --color-neutral-10: #f0f0f2;
21
- --color-neutral-20: #e2e2e6;
22
- --color-neutral-30: #c8c8cf;
23
- --color-neutral-40: #ababb5;
24
- --color-neutral-50: #8e8e9a;
25
- --color-neutral-60: #6e6e7c;
26
- --color-neutral-70: #52525e;
27
- --color-neutral-80: #363640;
28
- --color-neutral-90: #1e1e26;
29
- --color-neutral-100: #09090d;
23
+ --tala-ref-color-neutral-0: #ffffff;
24
+ --tala-ref-color-neutral-5: #f7f7f8;
25
+ --tala-ref-color-neutral-10: #f0f0f2;
26
+ --tala-ref-color-neutral-20: #e2e2e6;
27
+ --tala-ref-color-neutral-30: #c8c8cf;
28
+ --tala-ref-color-neutral-40: #ababb5;
29
+ --tala-ref-color-neutral-50: #8e8e9a;
30
+ --tala-ref-color-neutral-60: #6e6e7c;
31
+ --tala-ref-color-neutral-70: #52525e;
32
+ --tala-ref-color-neutral-80: #363640;
33
+ --tala-ref-color-neutral-90: #1e1e26;
34
+ --tala-ref-color-neutral-100: #09090d;
30
35
 
31
36
  /* Green */
32
- --color-green-5: #f0fbf6;
33
- --color-green-10: #d1f0e3;
34
- --color-green-20: #a3dbca;
35
- --color-green-30: #4ab98a;
36
- --color-green-40: #22a470;
37
- --color-green-50: #008856;
38
- --color-green-60: #006b44;
39
- --color-green-70: #005436;
40
- --color-green-80: #003d28;
41
- --color-green-90: #00261a;
42
- --color-green-100: #00100c;
37
+ --tala-ref-color-green-5: #f0fbf6;
38
+ --tala-ref-color-green-10: #d1f0e3;
39
+ --tala-ref-color-green-20: #a3dbca;
40
+ --tala-ref-color-green-30: #4ab98a;
41
+ --tala-ref-color-green-40: #22a470;
42
+ --tala-ref-color-green-50: #008856;
43
+ --tala-ref-color-green-60: #006b44;
44
+ --tala-ref-color-green-65: #005535;
45
+ --tala-ref-color-green-70: #005436;
46
+ --tala-ref-color-green-80: #003d28;
47
+ --tala-ref-color-green-90: #00261a;
48
+ --tala-ref-color-green-100: #00100c;
43
49
 
44
50
  /* Amber */
45
- --color-amber-5: #fffbf0;
46
- --color-amber-10: #fef3c7;
47
- --color-amber-20: #fde68a;
48
- --color-amber-30: #ffd24a;
49
- --color-amber-40: #d97706;
50
- --color-amber-50: #b45309;
51
- --color-amber-60: #92400e;
52
- --color-amber-70: #78350f;
53
- --color-amber-80: #5e2a0c;
54
- --color-amber-90: #451e08;
55
- --color-amber-100: #2d1206;
51
+ --tala-ref-color-amber-5: #fffbf0;
52
+ --tala-ref-color-amber-10: #fef3c7;
53
+ --tala-ref-color-amber-20: #fde68a;
54
+ --tala-ref-color-amber-30: #ffd24a;
55
+ --tala-ref-color-amber-40: #d97706;
56
+ --tala-ref-color-amber-50: #b45309;
57
+ --tala-ref-color-amber-60: #92400e;
58
+ --tala-ref-color-amber-65: #734a00;
59
+ --tala-ref-color-amber-70: #78350f;
60
+ --tala-ref-color-amber-80: #5e2a0c;
61
+ --tala-ref-color-amber-90: #451e08;
62
+ --tala-ref-color-amber-100: #2d1206;
56
63
 
57
64
  /* Blue */
58
- --color-blue-5: #f0f6ff;
59
- --color-blue-10: #dbeafe;
60
- --color-blue-20: #bfdbfe;
61
- --color-blue-30: #6aabfd;
62
- --color-blue-40: #3b82f6;
63
- --color-blue-50: #1d4ed8;
64
- --color-blue-60: #1e40af;
65
- --color-blue-70: #1e3a8a;
66
- --color-blue-80: #1a3070;
67
- --color-blue-90: #142558;
68
- --color-blue-100: #0c1840;
65
+ --tala-ref-color-blue-5: #f0f6ff;
66
+ --tala-ref-color-blue-10: #dbeafe;
67
+ --tala-ref-color-blue-20: #bfdbfe;
68
+ --tala-ref-color-blue-30: #6aabfd;
69
+ --tala-ref-color-blue-40: #3b82f6;
70
+ --tala-ref-color-blue-50: #1d4ed8;
71
+ --tala-ref-color-blue-60: #1e40af;
72
+ --tala-ref-color-blue-65: #07469e;
73
+ --tala-ref-color-blue-70: #1e3a8a;
74
+ --tala-ref-color-blue-80: #1a3070;
75
+ --tala-ref-color-blue-90: #142558;
76
+ --tala-ref-color-blue-100: #0c1840;
69
77
 
70
- /* ─── Semantic ─── */
78
+ /* ═══════════════════════════════════════════════
79
+ SYSTEM
80
+ Role-based tokens. Use these in components.
81
+ Never reference primitives directly.
82
+ ═══════════════════════════════════════════════ */
71
83
 
72
- /* Background */
73
- --color-background-base: var(--color-neutral-0);
74
- --color-background-subtle: var(--color-neutral-5);
75
- --color-background-muted: var(--color-neutral-10);
76
- --color-background-inverse: var(--color-neutral-100);
84
+ /* ── Surface ──────────────────────────────────────────────────────────────
85
+ Background layers that establish visual depth.
86
+ Use to differentiate page regions — not for interactive or status color.
87
+ sunken recessed areas like inputs or code blocks
88
+ default → base page and standard cards
89
+ raised → cards or panels that sit above the page
90
+ overlay → modals, drawers, and popovers
91
+ inverse → dark/inverted sections
92
+ ──────────────────────────────────────────────────────────────────────── */
93
+ --tala-sys-color-surface-sunken: var(--tala-ref-color-neutral-5);
94
+ --tala-sys-color-surface-default: var(--tala-ref-color-neutral-0);
95
+ --tala-sys-color-surface-raised: var(--tala-ref-color-neutral-0);
96
+ --tala-sys-color-surface-overlay: var(--tala-ref-color-neutral-0);
97
+ --tala-sys-color-surface-inverse: var(--tala-ref-color-neutral-100);
77
98
 
78
- /* Surface */
79
- --color-surface-default: var(--color-neutral-0);
80
- --color-surface-raised: var(--color-neutral-0);
81
- --color-surface-overlay: var(--color-neutral-0);
82
- --color-surface-sunken: var(--color-neutral-5);
99
+ /* ── Text ──────────────────────────────────────────────────────────────────
100
+ Controls text legibility and visual hierarchy.
101
+ Use the hierarchy variants (primary → tertiary) to guide reading order,
102
+ not to convey status or meaning.
103
+ primary → main body copy and headings
104
+ secondary → supporting labels, captions, and metadata
105
+ tertiary → de-emphasized hints or supplemental info
106
+ disabled → non-interactive / unavailable text
107
+ inverse → text on dark or inverse surfaces
108
+ placeholder → input placeholder copy
109
+ link → interactive inline links
110
+ ──────────────────────────────────────────────────────────────────────── */
111
+ --tala-sys-color-text-primary: var(--tala-ref-color-neutral-100);
112
+ --tala-sys-color-text-secondary: var(--tala-ref-color-neutral-70);
113
+ --tala-sys-color-text-tertiary: var(--tala-ref-color-neutral-50);
114
+ --tala-sys-color-text-disabled: var(--tala-ref-color-neutral-30);
115
+ --tala-sys-color-text-inverse: var(--tala-ref-color-neutral-0);
116
+ --tala-sys-color-text-placeholder: var(--tala-ref-color-neutral-40);
117
+ --tala-sys-color-text-link: var(--tala-ref-color-red-50);
83
118
 
84
- /* Border */
85
- --color-border-default: var(--color-neutral-20);
86
- --color-border-strong: var(--color-neutral-30);
87
- --color-border-focus: var(--color-neutral-100);
88
- --color-border-danger: var(--color-red-50);
119
+ /* ── Outline ───────────────────────────────────────────────────────────────
120
+ Borders and dividers that separate or define elements.
121
+ Do not use for status — use feedback tokens for that.
122
+ default → subtle dividers and input borders at rest
123
+ strong more prominent borders needing higher contrast
124
+ focus → keyboard focus ring on interactive elements
125
+ ──────────────────────────────────────────────────────────────────────── */
126
+ --tala-sys-color-outline-default: var(--tala-ref-color-neutral-20);
127
+ --tala-sys-color-outline-strong: var(--tala-ref-color-neutral-30);
128
+ --tala-sys-color-outline-focus: var(--tala-ref-color-neutral-100);
89
129
 
90
- /* Text */
91
- --color-text-primary: var(--color-neutral-100);
92
- --color-text-secondary: var(--color-neutral-60);
93
- --color-text-tertiary: var(--color-neutral-50);
94
- --color-text-disabled: var(--color-neutral-30);
95
- --color-text-inverse: var(--color-neutral-0);
96
- --color-text-accent: var(--color-red-50);
97
- --color-text-link: var(--color-red-50);
98
- --color-text-placeholder: var(--color-neutral-40);
130
+ /* ── Brand ─────────────────────────────────────────────────────────────────
131
+ Primary brand identity color for interactive elements.
132
+ Use for CTAs, primary buttons, and key accents.
133
+ on-brand → content (icon/text) placed on top of a brand-colored surface
134
+ hover → brand color on pointer hover
135
+ subtle → light tinted surface for brand-adjacent areas
136
+ ──────────────────────────────────────────────────────────────────────── */
137
+ --tala-sys-color-brand: var(--tala-ref-color-red-50);
138
+ --tala-sys-color-on-brand: var(--tala-ref-color-neutral-0);
139
+ --tala-sys-color-brand-hover: var(--tala-ref-color-red-60);
140
+ --tala-sys-color-brand-subtle: var(--tala-ref-color-red-5);
99
141
 
100
- /* Action */
101
- --color-action-primary-bg: var(--color-neutral-100);
102
- --color-action-primary-text: var(--color-neutral-0);
103
- --color-action-primary-hover: var(--color-neutral-90);
104
- --color-action-secondary-bg: var(--color-neutral-0);
105
- --color-action-secondary-border: var(--color-neutral-20);
106
- --color-action-secondary-text: var(--color-neutral-100);
107
- --color-action-secondary-hover: var(--color-neutral-20);
108
- --color-action-ghost-text: var(--color-neutral-100);
109
- --color-action-ghost-hover: var(--color-neutral-10);
110
- --color-action-danger-bg: var(--color-red-60);
111
- --color-action-danger-text: var(--color-neutral-0);
112
- --color-action-accent-bg: var(--color-red-50);
113
- --color-action-accent-text: var(--color-neutral-0);
142
+ /* ── Error ─────────────────────────────────────────────────────────────────
143
+ Destructive interactive states for clickable elements.
144
+ Use on buttons, icons, or controls that perform a destructive action.
145
+ Do NOT use for read-only status — use error feedback tokens instead.
146
+ on-error → content (icon/text) placed on top of an error-colored surface
147
+ hover → error color on pointer hover
148
+ ──────────────────────────────────────────────────────────────────────── */
149
+ --tala-sys-color-error: var(--tala-ref-color-red-65);
150
+ --tala-sys-color-on-error: var(--tala-ref-color-neutral-0);
151
+ --tala-sys-color-error-hover: var(--tala-ref-color-red-70);
114
152
 
115
- /* Status */
116
- --color-status-success-bg: var(--color-green-5);
117
- --color-status-success-text: var(--color-green-70);
118
- --color-status-success-border: var(--color-green-30);
119
- --color-status-warning-bg: var(--color-amber-5);
120
- --color-status-warning-text: var(--color-amber-70);
121
- --color-status-warning-border: var(--color-amber-30);
122
- --color-status-danger-bg: var(--color-red-5);
123
- --color-status-danger-text: var(--color-red-70);
124
- --color-status-danger-border: var(--color-red-30);
125
- --color-status-info-bg: var(--color-blue-5);
126
- --color-status-info-text: var(--color-blue-70);
127
- --color-status-info-border: var(--color-blue-30);
128
- --color-status-neutral-bg: var(--color-neutral-5);
129
- --color-status-neutral-text: var(--color-neutral-60);
130
- --color-status-neutral-border: var(--color-neutral-20);
153
+ /* ── Feedback ──────────────────────────────────────────────────────────────
154
+ Read-only status communication for non-interactive display components
155
+ such as alerts, banners, badges, and toasts.
156
+ Each status provides a surface/text/outline triad for composing these
157
+ components — do NOT use for interactive or clickable elements.
158
+ success → positive outcome or completion
159
+ warning → potential issue requiring attention
160
+ error → failure or blocking problem
161
+ info → neutral informational message
162
+ ──────────────────────────────────────────────────────────────────────── */
163
+ --tala-sys-color-success-surface: var(--tala-ref-color-green-5);
164
+ --tala-sys-color-success-text: var(--tala-ref-color-green-65);
165
+ --tala-sys-color-success-outline: var(--tala-ref-color-green-30);
166
+
167
+ --tala-sys-color-warning-surface: var(--tala-ref-color-amber-5);
168
+ --tala-sys-color-warning-text: var(--tala-ref-color-amber-65);
169
+ --tala-sys-color-warning-outline: var(--tala-ref-color-amber-30);
170
+
171
+ --tala-sys-color-error-surface: var(--tala-ref-color-red-5);
172
+ --tala-sys-color-error-text: var(--tala-ref-color-red-70);
173
+ --tala-sys-color-error-outline: var(--tala-ref-color-red-30);
174
+
175
+ --tala-sys-color-info-surface: var(--tala-ref-color-blue-5);
176
+ --tala-sys-color-info-text: var(--tala-ref-color-blue-65);
177
+ --tala-sys-color-info-outline: var(--tala-ref-color-blue-30);
131
178
  }
@@ -1,7 +1,7 @@
1
1
  :root {
2
- --shadow-xs: 0 1px 2px color-mix(in srgb, var(--color-neutral-100) 5%, transparent);
3
- --shadow-sm: 0 1px 3px color-mix(in srgb, var(--color-neutral-100) 8%, transparent);
4
- --shadow-md: 0 4px 6px color-mix(in srgb, var(--color-neutral-100) 7%, transparent);
5
- --shadow-lg: 0 10px 15px color-mix(in srgb, var(--color-neutral-100) 8%, transparent);
6
- --shadow-xl: 0 20px 25px color-mix(in srgb, var(--color-neutral-100) 10%, transparent);
2
+ --shadow-xs: 0 1px 2px color-mix(in srgb, var(--tala-ref-color-neutral-100) 5%, transparent);
3
+ --shadow-sm: 0 1px 3px color-mix(in srgb, var(--tala-ref-color-neutral-100) 8%, transparent);
4
+ --shadow-md: 0 4px 6px color-mix(in srgb, var(--tala-ref-color-neutral-100) 7%, transparent);
5
+ --shadow-lg: 0 10px 15px color-mix(in srgb, var(--tala-ref-color-neutral-100) 8%, transparent);
6
+ --shadow-xl: 0 20px 25px color-mix(in srgb, var(--tala-ref-color-neutral-100) 10%, transparent);
7
7
  }