@flusys/ng-ui 6.0.0-beta.1 → 6.0.0-beta.2
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/fesm2022/flusys-ng-ui.mjs +523 -145
- package/fesm2022/flusys-ng-ui.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flusys-ng-ui.mjs","sources":["../../../projects/ng-ui/components/icon/ui-icon.component.ts","../../../projects/ng-ui/services/confirmation.service.ts","../../../projects/ng-ui/components/confirm-dialog/confirm-dialog.component.ts","../../../projects/ng-ui/services/message.service.ts","../../../projects/ng-ui/components/toast/toast.component.ts","../../../projects/ng-ui/components/avatar/avatar.component.ts","../../../projects/ng-ui/components/avatar/avatar-group.component.ts","../../../projects/ng-ui/components/button/button.component.ts","../../../projects/ng-ui/components/button/f-button.directive.ts","../../../projects/ng-ui/components/chip/chip.component.ts","../../../projects/ng-ui/components/divider/divider.component.ts","../../../projects/ng-ui/components/image/image.component.ts","../../../projects/ng-ui/components/message/message.component.ts","../../../projects/ng-ui/components/progressbar/progressbar.component.ts","../../../projects/ng-ui/components/progressspinner/progressspinner.component.ts","../../../projects/ng-ui/components/skeleton/skeleton.component.ts","../../../projects/ng-ui/components/tag/tag.component.ts","../../../projects/ng-ui/components/checkbox/checkbox.component.ts","../../../projects/ng-ui/components/datepicker/datepicker.component.ts","../../../projects/ng-ui/components/fileupload/fileupload.component.ts","../../../projects/ng-ui/components/iconfield/iconfield.component.ts","../../../projects/ng-ui/components/inputicon/inputicon.component.ts","../../../projects/ng-ui/components/inputnumber/inputnumber.component.ts","../../../projects/ng-ui/components/input-text/input-text.directive.ts","../../../projects/ng-ui/components/input-text/input-password.directive.ts","../../../projects/ng-ui/components/select/multiselect.component.ts","../../../projects/ng-ui/components/password/password.component.ts","../../../projects/ng-ui/components/radiobutton/radiobutton.component.ts","../../../projects/ng-ui/components/rating/rating.component.ts","../../../projects/ng-ui/components/shared/ftemplate.directive.ts","../../../projects/ng-ui/components/select/select.component.ts","../../../projects/ng-ui/components/selectbutton/selectbutton.component.ts","../../../projects/ng-ui/components/textarea/textarea.directive.ts","../../../projects/ng-ui/components/togglebutton/togglebutton.component.ts","../../../projects/ng-ui/components/toggleswitch/toggleswitch.component.ts","../../../projects/ng-ui/components/dialog/dialog.component.ts","../../../projects/ng-ui/components/drawer/drawer.component.ts","../../../projects/ng-ui/components/popover/popover.component.ts","../../../projects/ng-ui/components/card/card.component.ts","../../../projects/ng-ui/components/panel/panel.component.ts","../../../projects/ng-ui/components/steps/steps.component.ts","../../../projects/ng-ui/components/splitter/splitter.component.ts","../../../projects/ng-ui/components/toolbar/toolbar.component.ts","../../../projects/ng-ui/components/tabs/tabs.context.ts","../../../projects/ng-ui/components/tabs/tabs.component.ts","../../../projects/ng-ui/components/accordion/accordion.context.ts","../../../projects/ng-ui/components/accordion/accordion.component.ts","../../../projects/ng-ui/components/chart/chart.component.ts","../../../projects/ng-ui/components/paginator/paginator.component.ts","../../../projects/ng-ui/components/table/table.component.ts","../../../projects/ng-ui/components/table/sort-icon.component.ts","../../../projects/ng-ui/components/styleclass/styleclass.directive.ts","../../../projects/ng-ui/components/tooltip/tooltip.directive.ts","../../../projects/ng-ui/components/autocomplete/autocomplete.component.ts","../../../projects/ng-ui/components/colorpicker/colorpicker.component.ts","../../../projects/ng-ui/components/listbox/listbox.component.ts","../../../projects/ng-ui/components/splitbutton/splitbutton.component.ts","../../../projects/ng-ui/components/treetable/treetable.component.ts","../../../projects/ng-ui/components/treeselect/treeselect.component.ts","../../../projects/ng-ui/components/badge/badge.component.ts","../../../projects/ng-ui/components/overlaybadge/overlaybadge.component.ts","../../../projects/ng-ui/components/fieldset/fieldset.component.ts","../../../projects/ng-ui/components/floatlabel/floatlabel.component.ts","../../../projects/ng-ui/components/iftalabel/iftalabel.component.ts","../../../projects/ng-ui/components/buttongroup/buttongroup.component.ts","../../../projects/ng-ui/components/inputgroup/inputgroup.component.ts","../../../projects/ng-ui/components/scrolltop/scrolltop.component.ts","../../../projects/ng-ui/components/metergroup/metergroup.component.ts","../../../projects/ng-ui/components/fluid/fluid.component.ts","../../../projects/ng-ui/components/blockui/blockui.component.ts","../../../projects/ng-ui/components/menu/menu.component.ts","../../../projects/ng-ui/components/menubar/menubar.component.ts","../../../projects/ng-ui/components/tieredmenu/tieredmenu.component.ts","../../../projects/ng-ui/components/contextmenu/contextmenu.component.ts","../../../projects/ng-ui/components/megamenu/megamenu.component.ts","../../../projects/ng-ui/components/panelmenu/panelmenu.component.ts","../../../projects/ng-ui/components/breadcrumb/breadcrumb.component.ts","../../../projects/ng-ui/components/speeddial/speeddial.component.ts","../../../projects/ng-ui/components/dock/dock.component.ts","../../../projects/ng-ui/components/inputmask/inputmask.directive.ts","../../../projects/ng-ui/components/inputotp/inputotp.component.ts","../../../projects/ng-ui/components/slider/slider.component.ts","../../../projects/ng-ui/components/knob/knob.component.ts","../../../projects/ng-ui/components/cascadeselect/cascadeselect.component.ts","../../../projects/ng-ui/components/keyfilter/keyfilter.directive.ts","../../../projects/ng-ui/components/confirmpopup/confirmpopup.component.ts","../../../projects/ng-ui/components/dynamicdialog/dynamicdialog.service.ts","../../../projects/ng-ui/components/dynamicdialog/dynamicdialog.component.ts","../../../projects/ng-ui/components/inplace/inplace.component.ts","../../../projects/ng-ui/components/tree/tree.component.ts","../../../projects/ng-ui/components/timeline/timeline.component.ts","../../../projects/ng-ui/components/dataview/dataview.component.ts","../../../projects/ng-ui/components/carousel/carousel.component.ts","../../../projects/ng-ui/components/scrollpanel/scrollpanel.component.ts","../../../projects/ng-ui/components/scroller/scroller.component.ts","../../../projects/ng-ui/components/organizationchart/organizationchart.component.ts","../../../projects/ng-ui/components/picklist/picklist.component.ts","../../../projects/ng-ui/components/orderlist/orderlist.component.ts","../../../projects/ng-ui/components/galleria/galleria.component.ts","../../../projects/ng-ui/components/editor/editor.component.ts","../../../projects/ng-ui/components/terminal/terminal.component.ts","../../../projects/ng-ui/components/imagecompare/imagecompare.component.ts","../../../projects/ng-ui/components/animateonscroll/animateonscroll.directive.ts","../../../projects/ng-ui/components/autofocus/autofocus.directive.ts","../../../projects/ng-ui/components/ripple/ripple.directive.ts","../../../projects/ng-ui/modules/ui.module.ts","../../../projects/ng-ui/services/ng-ui-config.service.ts","../../../projects/ng-ui/themes/palettes.ts","../../../projects/ng-ui/themes/presets.ts","../../../projects/ng-ui/themes/applier.ts","../../../projects/ng-ui/provide-ng-ui.ts","../../../projects/ng-ui/public-api.ts","../../../projects/ng-ui/flusys-ng-ui.ts"],"sourcesContent":["import {\n booleanAttribute,\n Component,\n computed,\n input,\n} from '@angular/core';\nimport {\n LucideDynamicIcon,\n LucideIcon,\n provideLucideIcons,\n isLucideIconComponent,\n} from '@lucide/angular';\n// Namespace import so every published icon (plus its legacy pre-rename\n// aliases, e.g. Home, CheckSquare) is registered for name-based lookup —\n// `provideLucideIcons` indexes each icon by its own name/aliases regardless\n// of which components are passed in.\nimport * as lucideNamespace from '@lucide/angular';\n\n// `filter`'s type-guard overload can't narrow a ~1700-member union of exact\n// icon-class types against the broader `LucideIcon` interface, so the guard\n// still runs at runtime but the result needs an explicit cast.\nconst allLucideIcons = Object.values(lucideNamespace).filter(isLucideIconComponent) as unknown as LucideIcon[];\n\nconst PI_TO_LUCIDE: Record<string, string> = {\n 'align-left': 'align-left',\n 'angle-double-left': 'chevrons-left',\n 'angle-double-right': 'chevrons-right',\n 'angle-down': 'chevron-down',\n 'angle-left': 'chevron-left',\n 'angle-right': 'chevron-right',\n 'angle-up': 'chevron-up',\n 'arrow-down': 'arrow-down',\n 'arrow-down-right': 'arrow-down-right',\n 'arrow-left': 'arrow-left',\n 'arrow-right': 'arrow-right',\n 'arrow-up': 'arrow-up',\n 'arrow-up-right': 'arrow-up-right',\n 'bars': 'menu',\n 'bell': 'bell',\n 'bell-slash': 'bell-off',\n 'bolt': 'zap',\n 'book': 'book',\n 'briefcase': 'briefcase',\n 'building': 'building-2',\n 'calculator': 'calculator',\n 'calendar': 'calendar',\n 'caret-down': 'chevron-down',\n 'caret-up': 'chevron-up',\n 'chart-bar': 'chart-column',\n 'chart-line': 'chart-line',\n 'check': 'check',\n 'check-circle': 'check-circle',\n 'check-square': 'check-square',\n 'chevron-down': 'chevron-down',\n 'chevron-left': 'chevron-left',\n 'chevron-right': 'chevron-right',\n 'circle': 'circle',\n 'clock': 'clock',\n 'cloud': 'cloud',\n 'cloud-upload': 'cloud-upload',\n 'code': 'code',\n 'cog': 'settings',\n 'copy': 'copy',\n 'database': 'database',\n 'desktop': 'monitor',\n 'dollar': 'dollar-sign',\n 'download': 'download',\n 'ellipsis-v': 'ellipsis-vertical',\n 'envelope': 'mail',\n 'exclamation-circle': 'alert-circle',\n 'exclamation-triangle':'alert-triangle',\n 'external-link': 'external-link',\n 'eye': 'eye',\n 'eye-slash': 'eye-off',\n 'file': 'file',\n 'file-edit': 'file-pen',\n 'file-excel': 'file-spreadsheet',\n 'file-pdf': 'file-type',\n 'file-word': 'file-type',\n 'filter': 'filter',\n 'folder': 'folder',\n 'fw': '',\n 'globe': 'globe',\n 'home': 'home',\n 'image': 'image',\n 'inbox': 'inbox',\n 'info-circle': 'info',\n 'key': 'key',\n 'link': 'link',\n 'list': 'list',\n 'list-check': 'list-checks',\n 'lock': 'lock',\n 'map-marker': 'map-pin',\n 'minus': 'minus',\n 'minus-circle': 'minus-circle',\n 'mobile': 'smartphone',\n 'moon': 'moon',\n 'palette': 'palette',\n 'pencil': 'pencil',\n 'percentage': 'percent',\n 'play': 'play',\n 'plus': 'plus',\n 'plus-circle': 'plus-circle',\n 'question': 'help-circle',\n 'question-circle': 'help-circle',\n 'refresh': 'refresh-cw',\n 'reply': 'reply',\n 'save': 'save',\n 'search': 'search',\n 'send': 'send',\n 'server': 'server',\n 'shield': 'shield',\n 'sign-in': 'log-in',\n 'sign-out': 'log-out',\n 'sitemap': 'network',\n 'sliders-h': 'sliders-horizontal',\n 'spin': '',\n 'spinner': 'loader-circle',\n 'star': 'star',\n 'star-fill': 'star',\n 'sun': 'sun',\n 'sync': 'refresh-cw',\n 'table': 'table-2',\n 'tablet': 'tablet',\n 'tag': 'tag',\n 'th-large': 'layout-grid',\n 'times': 'x',\n 'times-circle': 'x-circle',\n 'trash': 'trash-2',\n 'upload': 'upload',\n 'user': 'user',\n 'users': 'users',\n 'verified': 'badge-check',\n 'video': 'video',\n 'volume-up': 'volume-2',\n 'window-maximize': 'maximize-2',\n};\n\n@Component({\n selector: 'ui-icon',\n imports: [LucideDynamicIcon],\n providers: [provideLucideIcons(...allLucideIcons)],\n host: {\n class: 'inline-flex items-center leading-none',\n '[style.--ui-icon-size]': \"size() + 'px'\",\n },\n styles: [`\n :host ::ng-deep svg[lucideIcon] { width: var(--ui-icon-size); height: var(--ui-icon-size); display: block; }\n `],\n template: `\n @if (lucideName()) {\n <svg\n [lucideIcon]=\"lucideName()\"\n [size]=\"size()\"\n [class]=\"iconClass()\"\n ></svg>\n }\n `,\n})\nexport class UiIconComponent {\n readonly name = input<string>('');\n readonly size = input<number>(16);\n readonly spin = input(false, { transform: booleanAttribute });\n readonly fill = input(false, { transform: booleanAttribute });\n\n readonly lucideName = computed(() => {\n const n = this.name();\n return PI_TO_LUCIDE[n] ?? n;\n });\n\n readonly iconClass = computed(() => {\n const parts: string[] = [];\n if (this.spin()) parts.push('animate-spin');\n if (this.fill() || this.name() === 'star-fill') parts.push('[&_svg]:fill-current');\n return parts.join(' ');\n });\n}\n","import { Injectable, signal } from '@angular/core';\n\nexport interface UiConfirmation {\n message?: string;\n header?: string;\n icon?: string;\n acceptLabel?: string;\n rejectLabel?: string;\n acceptIcon?: string;\n rejectIcon?: string;\n acceptButtonStyleClass?: string;\n rejectButtonStyleClass?: string;\n closeOnEscape?: boolean;\n closable?: boolean;\n acceptVisible?: boolean;\n rejectVisible?: boolean;\n accept?: () => void;\n reject?: () => void;\n key?: string;\n target?: EventTarget | null;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ConfirmationService {\n private readonly _confirmation = signal<UiConfirmation | null>(null);\n readonly confirmation = this._confirmation.asReadonly();\n\n confirm(options: UiConfirmation): void {\n this._confirmation.set(options);\n }\n\n close(): void {\n this._confirmation.set(null);\n }\n}\n","import { Component, computed, inject, input } from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { ConfirmationService } from '../../services/confirmation.service';\n\n@Component({\n selector: 'f-confirmdialog',\n imports: [UiIconComponent],\n host: { '(document:keydown.escape)': 'onEscape()' },\n styles: [`\n @keyframes confirm-in { from { opacity: 0; transform: scale(0.95) translateY(-8px); } to { opacity: 1; transform: scale(1) translateY(0); } }\n .confirm-panel { animation: confirm-in 0.22s cubic-bezier(0.16, 1, 0.3, 1); }\n @keyframes confirm-backdrop-in { from { opacity: 0; } to { opacity: 1; } }\n .confirm-backdrop { animation: confirm-backdrop-in 0.15s ease-out; }\n `],\n template: `\n @if (activeConfirmation(); as c) {\n @if (!c.target && (c.acceptVisible !== false || c.rejectVisible !== false)) {\n <div class=\"fixed inset-0 z-50 flex items-center justify-center p-4\">\n <div class=\"confirm-backdrop absolute inset-0 bg-black/50 backdrop-blur-[2px]\" (click)=\"reject(c.reject)\"></div>\n <div class=\"confirm-panel relative bg-(--f-overlay-popover-background) rounded-2xl shadow-2xl w-full max-w-sm mx-auto overflow-hidden\">\n <div class=\"p-6\">\n <div class=\"flex items-start gap-4\">\n @if (c.icon) {\n <div\n class=\"w-10 h-10 rounded-full flex items-center justify-center shrink-0\"\n [style.background-color]=\"'color-mix(in srgb, var(--f-yellow-500, #f59e0b) 12%, transparent)'\"\n >\n <ui-icon [name]=\"c.icon\" class=\"text-lg\" [style.color]=\"'var(--f-yellow-500, #f59e0b)'\"></ui-icon>\n </div>\n }\n <div class=\"flex-1 min-w-0\">\n @if (c.header) {\n <h3 class=\"text-base font-semibold text-(--f-text-color) tracking-tight\">{{ c.header }}</h3>\n }\n @if (c.message) {\n <p class=\"text-sm text-(--f-text-muted-color) mt-1 leading-relaxed\">{{ c.message }}</p>\n }\n </div>\n </div>\n </div>\n <div class=\"flex justify-end gap-2 px-6 py-4 bg-(--f-content-hover-background)/60 border-t border-(--f-content-border-color)\">\n @if (c.rejectVisible !== false) {\n <button\n class=\"px-4 py-2 text-sm rounded-lg border border-(--f-content-border-color) text-(--f-text-color) hover:bg-(--f-content-hover-background) active:bg-(--f-content-hover-background) transition-all duration-[var(--f-transition-duration)] font-medium cursor-pointer\"\n [class]=\"c.rejectButtonStyleClass ?? ''\"\n (click)=\"reject(c.reject)\"\n >\n {{ c.rejectLabel ?? 'No' }}\n </button>\n }\n @if (c.acceptVisible !== false) {\n <button\n class=\"px-4 py-2 text-sm rounded-lg bg-primary text-primary-contrast hover:bg-primary-emphasis active:scale-[0.97] transition-all duration-[var(--f-transition-duration)] font-medium shadow-sm cursor-pointer\"\n [class]=\"c.acceptButtonStyleClass ?? ''\"\n (click)=\"accept(c.accept)\"\n >\n {{ c.acceptLabel ?? 'Yes' }}\n </button>\n }\n </div>\n </div>\n </div>\n }\n }\n `,\n})\nexport class ConfirmDialog {\n readonly confirmationService = inject(ConfirmationService);\n readonly key = input<string | undefined>(undefined);\n\n readonly activeConfirmation = computed(() => {\n const c = this.confirmationService.confirmation();\n if (!c) return null;\n return (c.key ?? undefined) === this.key() ? c : null;\n });\n\n onEscape(): void {\n const c = this.activeConfirmation();\n if (c && c.closeOnEscape !== false) this.reject(c.reject);\n }\n\n accept(fn?: () => void): void {\n fn?.();\n this.confirmationService.close();\n }\n\n reject(fn?: () => void): void {\n fn?.();\n this.confirmationService.close();\n }\n}\n","import { Injectable, signal } from '@angular/core';\n\nexport type UiMessageSeverity = 'success' | 'info' | 'warn' | 'error' | 'secondary' | 'contrast';\n\nexport interface UiMessage {\n id: string;\n severity: UiMessageSeverity;\n summary?: string;\n detail?: string;\n life?: number;\n sticky?: boolean;\n key?: string;\n closing?: boolean;\n}\n\nconst REMOVE_ANIMATION_MS = 200;\n\nexport interface UiAddMessage {\n severity?: UiMessageSeverity;\n summary?: string;\n detail?: string;\n life?: number;\n sticky?: boolean;\n key?: string;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class MessageService {\n private readonly _messages = signal<UiMessage[]>([]);\n readonly messages = this._messages.asReadonly();\n\n add(message: UiAddMessage): void {\n const id = crypto.randomUUID();\n const entry: UiMessage = {\n id,\n severity: message.severity ?? 'info',\n summary: message.summary,\n detail: message.detail,\n life: message.life ?? 3000,\n sticky: message.sticky ?? false,\n key: message.key,\n };\n this._messages.update(list => [...list, entry]);\n\n if (!entry.sticky) {\n setTimeout(() => this.remove(id), entry.life);\n }\n }\n\n remove(id: string): void {\n const target = this._messages().find(m => m.id === id);\n if (!target || target.closing) return;\n this._messages.update(list => list.map(m => (m.id === id ? { ...m, closing: true } : m)));\n setTimeout(() => {\n this._messages.update(list => list.filter(m => m.id !== id));\n }, REMOVE_ANIMATION_MS);\n }\n\n clear(): void {\n this._messages.set([]);\n }\n}\n","import { Component, computed, inject, input } from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { MessageService, UiMessageSeverity } from '../../services/message.service';\n\nconst POSITION_CLASSES: Record<string, string> = {\n 'top-right': 'top-5 right-5 items-end',\n 'top-left': 'top-5 left-5 items-start',\n 'top-center': 'top-5 left-1/2 -translate-x-1/2 items-center',\n 'bottom-right': 'bottom-5 right-5 items-end',\n 'bottom-left': 'bottom-5 left-5 items-start',\n 'bottom-center': 'bottom-5 left-1/2 -translate-x-1/2 items-center',\n 'center': 'top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 items-center',\n};\n\n@Component({\n selector: 'f-toast',\n imports: [UiIconComponent],\n host: {\n '[class]': 'hostClass()',\n },\n styles: [`\n @keyframes toast-in { from { opacity: 0; transform: translateX(calc(100% + 1.25rem)) scale(0.95); } to { opacity: 1; transform: translateX(0) scale(1); } }\n @keyframes toast-out { from { opacity: 1; transform: scale(1); } to { opacity: 0; transform: scale(0.9); } }\n .toast-item { animation: toast-in 0.25s cubic-bezier(0.16, 1, 0.3, 1); }\n .toast-item.leaving { animation: toast-out 0.18s ease-in forwards; }\n `],\n template: `\n @for (msg of visibleMessages(); track msg.id) {\n <div\n class=\"toast-item w-full flex items-start gap-3 px-3.5 py-3 rounded-lg shadow-lg border pointer-events-auto\"\n [class.leaving]=\"msg.closing\"\n [style.background]=\"severityBg(msg.severity)\"\n [style.color]=\"severityColor(msg.severity)\"\n [style.border-color]=\"severityBorder(msg.severity)\"\n role=\"alert\"\n aria-live=\"assertive\"\n (click)=\"messageService.remove(msg.id)\"\n >\n <ui-icon [name]=\"iconName(msg.severity)\" class=\"mt-0.5 shrink-0 text-base\" [style.color]=\"severityColor(msg.severity)\"></ui-icon>\n <div class=\"flex-1 min-w-0\">\n @if (msg.summary) {\n <div class=\"font-semibold text-sm leading-snug\">{{ msg.summary }}</div>\n }\n @if (msg.detail) {\n <div class=\"text-xs opacity-75 mt-1 leading-snug\">{{ msg.detail }}</div>\n }\n </div>\n <button\n type=\"button\"\n class=\"inline-flex items-center justify-center shrink-0 opacity-40 hover:opacity-80 transition-opacity p-1 rounded-md hover:bg-black/5 -mr-0.5 cursor-pointer\"\n (click)=\"$event.stopPropagation(); messageService.remove(msg.id)\"\n aria-label=\"Dismiss\"\n >\n <ui-icon name=\"times\" class=\"text-xs\"></ui-icon>\n </button>\n </div>\n }\n `,\n})\nexport class ToastComponent {\n readonly messageService = inject(MessageService);\n readonly key = input<string | undefined>(undefined);\n readonly position = input<\n 'top-right' | 'top-left' | 'top-center' | 'bottom-right' | 'bottom-left' | 'bottom-center' | 'center'\n >('top-right');\n\n readonly hostClass = computed(\n () =>\n `fixed z-[9999] flex flex-col gap-2.5 pointer-events-none max-w-[22rem] w-[calc(100vw-2.5rem)] ${\n POSITION_CLASSES[this.position()] ?? POSITION_CLASSES['top-right']\n }`,\n );\n\n readonly visibleMessages = computed(() =>\n this.messageService.messages().filter((m) => (m.key ?? undefined) === this.key()),\n );\n\n severityBg(severity: UiMessageSeverity): string {\n const map: Record<UiMessageSeverity, string> = {\n success: 'var(--f-green-50, #f0fdf4)',\n info: 'var(--f-sky-50, #f0f9ff)',\n warn: 'var(--f-amber-50, #fffbeb)',\n error: 'var(--f-red-50, #fef2f2)',\n secondary: 'var(--f-content-hover-background, #f4f4f5)',\n contrast: 'var(--f-text-color, #18181b)',\n };\n return map[severity] ?? map.info;\n }\n\n severityColor(severity: UiMessageSeverity): string {\n const map: Record<UiMessageSeverity, string> = {\n success: 'var(--f-green-600, #16a34a)',\n info: 'var(--f-sky-600, #0284c7)',\n warn: 'var(--f-amber-600, #d97706)',\n error: 'var(--f-red-600, #dc2626)',\n secondary: 'var(--f-text-muted-color, #71717a)',\n contrast: 'var(--f-content-background, #ffffff)',\n };\n return map[severity] ?? map.info;\n }\n\n severityBorder(severity: UiMessageSeverity): string {\n const map: Record<UiMessageSeverity, string> = {\n success: 'var(--f-green-200, #bbf7d0)',\n info: 'var(--f-sky-200, #bae6fd)',\n warn: 'var(--f-amber-200, #fde68a)',\n error: 'var(--f-red-200, #fecaca)',\n secondary: 'var(--f-content-border-color, #e4e4e7)',\n contrast: 'var(--f-text-color, #18181b)',\n };\n return map[severity] ?? map.info;\n }\n\n iconName(severity: UiMessageSeverity): string {\n const map: Record<UiMessageSeverity, string> = {\n success: 'check-circle',\n info: 'info',\n warn: 'alert-triangle',\n error: 'x-circle',\n secondary: 'info',\n contrast: 'info',\n };\n return map[severity] ?? map.info;\n }\n}\n","import { Component, computed, input } from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\nexport type AvatarSize = 'small' | 'normal' | 'large' | 'xlarge';\nexport type AvatarShape = 'square' | 'circle';\n\n@Component({\n selector: 'f-avatar',\n imports: [UiIconComponent],\n template: `\n <div [class]=\"classes()\" [style.background-color]=\"!image() && color() ? color() : null\">\n @if (image()) {\n <img [src]=\"image()\" [alt]=\"label()\" class=\"w-full h-full object-cover\" />\n } @else if (icon()) {\n <ui-icon [name]=\"icon()\"></ui-icon>\n } @else {\n <span>{{ label() }}</span>\n }\n </div>\n `,\n})\nexport class AvatarComponent {\n readonly label = input<string>('');\n readonly icon = input<string>('');\n readonly image = input<string>('');\n readonly shape = input<AvatarShape>('square');\n readonly size = input<AvatarSize>('normal');\n /** Overrides the default gradient with a solid background color (e.g. a per-user deterministic color). Ignored when `image` is set. */\n readonly color = input<string>('');\n readonly styleClass = input<string>('');\n\n readonly classes = computed(() => {\n const sizeMap: Record<AvatarSize, string> = {\n small: 'w-6 h-6 text-[10px]',\n normal: 'w-8 h-8 text-sm',\n large: 'w-12 h-12 text-base',\n xlarge: 'w-16 h-16 text-xl',\n };\n const shapeClass = this.shape() === 'circle' ? 'rounded-full' : 'rounded-lg';\n const hasImage = !!this.image();\n const hasColor = !hasImage && !!this.color();\n const base = hasImage\n ? `inline-flex items-center justify-center overflow-hidden ring-2 ring-(--f-content-border-color) font-semibold`\n : hasColor\n ? `inline-flex items-center justify-center overflow-hidden text-white font-semibold ring-2 ring-primary/10`\n : `inline-flex items-center justify-center overflow-hidden bg-gradient-to-br from-primary to-primary-emphasis text-primary-contrast font-semibold ring-2 ring-primary/10`;\n return `${base} ${sizeMap[this.size()]} ${shapeClass} ${this.styleClass()}`;\n });\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'f-avatar-group',\n template: `<div class=\"flex -space-x-2\"><ng-content /></div>`,\n})\nexport class AvatarGroupComponent {}\n","import {\n booleanAttribute,\n Component,\n computed,\n input,\n output,\n} from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\nexport type ButtonSeverity =\n | 'primary'\n | 'secondary'\n | 'success'\n | 'info'\n | 'warn'\n | 'danger'\n | 'contrast'\n | 'help';\n\n@Component({\n selector: 'f-button',\n imports: [UiIconComponent],\n template: `\n <button\n [type]=\"type()\"\n [disabled]=\"disabled() || loading()\"\n [class]=\"hostClass()\"\n style=\"font-weight: var(--f-button-font-weight, 500)\"\n (click)=\"onClick.emit($event)\"\n >\n @if (loading()) {\n <ui-icon name=\"loader-circle\" [spin]=\"true\" class=\"shrink-0\"></ui-icon>\n } @else if (icon() && iconPos() === 'left') {\n <ui-icon [name]=\"icon()\" class=\"shrink-0\"></ui-icon>\n }\n @if (label()) {\n <span class=\"leading-none\">{{ label() }}</span>\n }\n <ng-content />\n @if (icon() && iconPos() === 'right') {\n <ui-icon [name]=\"icon()\" class=\"shrink-0\"></ui-icon>\n }\n </button>\n `,\n})\nexport class ButtonComponent {\n readonly label = input<string>('');\n readonly icon = input<string>('');\n readonly iconPos = input<'left' | 'right'>('left');\n readonly severity = input<ButtonSeverity>('primary');\n readonly type = input<string>('button');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly loading = input(false, { transform: booleanAttribute });\n readonly text = input(false, { transform: booleanAttribute });\n readonly link = input(false, { transform: booleanAttribute });\n readonly outlined = input(false, { transform: booleanAttribute });\n readonly raised = input(false, { transform: booleanAttribute });\n readonly rounded = input(false, { transform: booleanAttribute });\n readonly fluid = input(false, { transform: booleanAttribute });\n readonly size = input<'small' | 'large' | null>(null);\n\n readonly onClick = output<MouseEvent>();\n\n readonly hostClass = computed(() => computeButtonClasses({\n severity: this.severity(),\n text: this.text(),\n link: this.link(),\n outlined: this.outlined(),\n rounded: this.rounded(),\n raised: this.raised(),\n fluid: this.fluid(),\n size: this.size(),\n iconOnly: !!this.icon() && !this.label(),\n }));\n}\n\nexport interface ButtonClassOptions {\n severity: ButtonSeverity;\n text: boolean;\n link: boolean;\n outlined: boolean;\n rounded: boolean;\n raised: boolean;\n fluid: boolean;\n size: 'small' | 'large' | null;\n iconOnly: boolean;\n}\n\nexport function computeButtonClasses(opts: ButtonClassOptions): string {\n const { severity: sev, text: isText, link: isLink, outlined: isOutlined, rounded: isRounded, raised, fluid: isFluid, size: sz, iconOnly } = opts;\n\n const parts = [\n 'inline-flex items-center justify-center gap-2 cursor-pointer select-none transition-all duration-[var(--f-transition-duration)]',\n 'focus:outline-none focus-visible:ring-focus',\n 'disabled:opacity-60 disabled:pointer-events-none',\n 'active:scale-[0.97]',\n isFluid ? 'w-full' : '',\n isRounded ? 'rounded-full' : 'rounded-lg',\n raised ? 'shadow-md hover:shadow-lg active:shadow-sm' : '',\n ];\n\n const sizing = sz === 'small'\n ? (iconOnly ? 'p-1.5 text-xs' : 'px-3 py-1.5 text-xs')\n : sz === 'large'\n ? (iconOnly ? 'p-3 text-base' : 'px-5 py-3 text-base')\n : (iconOnly ? 'p-2 text-sm' : 'px-4 py-2 text-sm');\n\n let variant = '';\n if (isLink) {\n variant = 'text-primary hover:underline bg-transparent border-none p-0';\n } else if (isText) {\n variant = textVariant(sev);\n } else if (isOutlined) {\n variant = outlinedVariant(sev);\n } else {\n variant = solidVariant(sev);\n }\n\n return [...parts, sizing, variant].filter(Boolean).join(' ');\n}\n\nexport function severitySolidBackground(sev: ButtonSeverity): string {\n const map: Record<ButtonSeverity, string> = {\n primary: 'bg-primary text-primary-contrast hover:bg-primary-emphasis',\n secondary: 'bg-(--f-content-hover-background) text-(--f-text-color) hover:bg-(--f-content-hover-background)',\n success: 'bg-green-500 text-white hover:bg-green-600',\n info: 'bg-sky-500 text-white hover:bg-sky-600',\n warn: 'bg-yellow-500 text-white hover:bg-yellow-600',\n danger: 'bg-red-500 text-white hover:bg-red-600',\n contrast: 'bg-surface-900 text-surface-0 hover:bg-surface-800',\n help: 'bg-purple-500 text-white hover:bg-purple-600',\n };\n return map[sev] ?? map.primary;\n}\n\nfunction solidVariant(sev: ButtonSeverity): string {\n const activeMap: Partial<Record<ButtonSeverity, string>> = {\n primary: 'active:bg-primary-emphasis',\n secondary: 'active:bg-(--f-content-hover-background)',\n success: 'active:bg-green-700',\n info: 'active:bg-sky-700',\n warn: 'active:bg-yellow-700',\n danger: 'active:bg-red-700',\n contrast: 'active:bg-surface-700',\n help: 'active:bg-purple-700',\n };\n const border = sev === 'secondary' ? 'border border-(--f-content-border-color) shadow-sm' : 'border border-transparent';\n return `${severitySolidBackground(sev)} ${activeMap[sev]} ${border}`;\n}\n\nfunction outlinedVariant(sev: ButtonSeverity): string {\n const map: Record<ButtonSeverity, string> = {\n primary: 'bg-transparent text-primary border border-primary hover:bg-primary/10 active:bg-primary/20',\n secondary: 'bg-transparent text-(--f-text-muted-color) border border-(--f-content-border-color) hover:bg-(--f-content-hover-background) active:bg-(--f-content-hover-background)',\n success: 'bg-transparent text-green-600 border border-green-500 hover:bg-green-50 active:bg-green-100',\n info: 'bg-transparent text-sky-600 border border-sky-500 hover:bg-sky-50 active:bg-sky-100',\n warn: 'bg-transparent text-yellow-600 border border-yellow-500 hover:bg-yellow-50 active:bg-yellow-100',\n danger: 'bg-transparent text-red-600 border border-red-500 hover:bg-red-50 active:bg-red-100',\n contrast: 'bg-transparent text-(--f-text-color) border border-(--f-content-border-color) hover:bg-(--f-content-hover-background) active:bg-(--f-content-hover-background)',\n help: 'bg-transparent text-purple-600 border border-purple-500 hover:bg-purple-50 active:bg-purple-100',\n };\n return map[sev] ?? map.primary;\n}\n\nfunction textVariant(sev: ButtonSeverity): string {\n const map: Record<ButtonSeverity, string> = {\n primary: 'bg-transparent text-primary hover:bg-primary/10 active:bg-primary/20 border border-transparent',\n secondary: 'bg-transparent text-(--f-text-muted-color) hover:bg-(--f-content-hover-background) active:bg-(--f-content-hover-background) border border-transparent',\n success: 'bg-transparent text-green-600 hover:bg-green-50 active:bg-green-100 border border-transparent',\n info: 'bg-transparent text-sky-600 hover:bg-sky-50 active:bg-sky-100 border border-transparent',\n warn: 'bg-transparent text-yellow-600 hover:bg-yellow-50 active:bg-yellow-100 border border-transparent',\n danger: 'bg-transparent text-red-600 hover:bg-red-50 active:bg-red-100 border border-transparent',\n contrast: 'bg-transparent text-(--f-text-color) hover:bg-(--f-content-hover-background) active:bg-(--f-content-hover-background) border border-transparent',\n help: 'bg-transparent text-purple-600 hover:bg-purple-50 active:bg-purple-100 border border-transparent',\n };\n return map[sev] ?? map.primary;\n}\n","import { DOCUMENT } from '@angular/common';\nimport { booleanAttribute, Directive, ElementRef, input, computed, effect, inject } from '@angular/core';\nimport { computeButtonClasses, type ButtonSeverity } from './button.component';\n\n@Directive({\n selector: '[fButton]',\n host: {\n '[class]': 'hostClass()',\n '[style.font-weight]': \"'var(--f-button-font-weight, 500)'\",\n '[attr.disabled]': \"disabled() || loading() ? '' : null\",\n '[attr.aria-busy]': 'loading() ? \\'true\\' : null',\n },\n})\nexport class FButtonDirective {\n private readonly _el = inject(ElementRef<HTMLElement>);\n private readonly _doc = inject(DOCUMENT);\n private _appliedContentNodes: HTMLElement[] = [];\n\n readonly severity = input<ButtonSeverity>('primary');\n readonly text = input(false, { transform: booleanAttribute });\n readonly outlined = input(false, { transform: booleanAttribute });\n readonly link = input(false, { transform: booleanAttribute });\n readonly rounded = input(false, { transform: booleanAttribute });\n readonly raised = input(false, { transform: booleanAttribute });\n readonly fluid = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly loading = input(false, { transform: booleanAttribute });\n readonly size = input<'small' | 'large' | null>(null);\n readonly label = input<string>('');\n readonly icon = input<string>('');\n readonly iconPos = input<'left' | 'right'>('left');\n readonly ariaLabel = input<string>('');\n readonly plain = input(false, { transform: booleanAttribute });\n\n readonly hostClass = computed(() => computeButtonClasses({\n severity: this.severity(),\n text: this.text(),\n link: this.link(),\n outlined: this.outlined(),\n rounded: this.rounded(),\n raised: this.raised(),\n fluid: this.fluid(),\n size: this.size(),\n iconOnly: !!this.icon() && !this.label(),\n }));\n\n constructor() {\n effect(() => {\n const el = this._el.nativeElement;\n const iconClass = this.loading() ? 'loader-circle' : this.icon();\n const label = this.label();\n const pos = this.iconPos();\n const loading = this.loading();\n\n for (const n of this._appliedContentNodes) n.remove();\n this._appliedContentNodes = [];\n\n const nodes: HTMLElement[] = [];\n\n if (iconClass && pos === 'left') {\n const i = this._doc.createElement('i');\n i.className = `${iconClass} shrink-0${loading ? ' animate-spin' : ''}`;\n nodes.push(i);\n }\n\n if (label) {\n const span = this._doc.createElement('span');\n span.className = 'leading-none';\n span.textContent = label;\n nodes.push(span);\n }\n\n if (iconClass && pos === 'right' && !loading) {\n const i = this._doc.createElement('i');\n i.className = `${iconClass} shrink-0`;\n nodes.push(i);\n }\n\n nodes.reverse().forEach(n => el.insertBefore(n, el.firstChild));\n this._appliedContentNodes = nodes;\n });\n\n effect(() => {\n const label = this.ariaLabel();\n if (label) this._el.nativeElement.setAttribute('aria-label', label);\n else if (!this.label() && this.icon()) {\n this._el.nativeElement.setAttribute('aria-label', this.icon());\n }\n });\n }\n}\n","import { booleanAttribute, Component, input, output } from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\n@Component({\n selector: 'f-chip',\n imports: [UiIconComponent],\n template: `\n <div class=\"inline-flex items-center gap-2 px-3 py-2 rounded-full bg-(--f-content-hover-background) text-(--f-text-color) text-sm transition-colors duration-[var(--f-transition-duration)]\">\n @if (icon()) { <ui-icon [name]=\"icon()\" class=\"text-xs text-(--f-text-muted-color)\"></ui-icon> }\n @if (label()) { <span class=\"font-medium text-xs\">{{ label() }}</span> }\n @if (removable()) {\n <button\n aria-label=\"Remove\"\n class=\"ml-0.5 -mr-0.5 w-4 h-4 flex items-center justify-center rounded-full hover:bg-(--f-content-border-color) text-(--f-text-muted-color) hover:text-(--f-text-hover-color) transition-all duration-[var(--f-transition-duration)] cursor-pointer\"\n (click)=\"onRemove.emit($event)\"\n >\n <ui-icon name=\"times\" class=\"text-[9px]\"></ui-icon>\n </button>\n }\n </div>\n `,\n})\nexport class ChipComponent {\n readonly label = input<string>('');\n readonly icon = input<string>('');\n readonly removable = input(false, { transform: booleanAttribute });\n readonly onRemove = output<MouseEvent>();\n}\n","import { Component, computed, input } from '@angular/core';\n\n@Component({\n selector: 'f-divider',\n template: `\n @if (layout() === 'vertical') {\n <div class=\"inline-flex flex-col items-center self-stretch mx-3\" role=\"separator\">\n <div [class]=\"segmentClass() + ' flex-1'\"></div>\n <span class=\"empty:hidden py-1 text-xs text-(--f-text-muted-color) whitespace-nowrap\"><ng-content /></span>\n <div [class]=\"segmentClass() + ' flex-1'\"></div>\n </div>\n } @else {\n <div class=\"flex items-center w-full my-4\" role=\"separator\">\n <div [class]=\"segmentClass() + ' ' + beforeClass()\"></div>\n <span class=\"empty:hidden px-3 text-xs text-(--f-text-muted-color) whitespace-nowrap\"><ng-content /></span>\n <div [class]=\"segmentClass() + ' ' + afterClass()\"></div>\n </div>\n }\n `,\n})\nexport class DividerComponent {\n readonly layout = input<'horizontal' | 'vertical'>('horizontal');\n readonly type = input<'solid' | 'dashed' | 'dotted'>('solid');\n readonly align = input<'left' | 'center' | 'right'>('center');\n\n readonly segmentClass = computed(() => {\n const typeMap = { solid: 'border-solid', dashed: 'border-dashed', dotted: 'border-dotted' };\n const borderSide = this.layout() === 'vertical' ? 'border-l' : 'border-t';\n return `${borderSide} ${typeMap[this.type()] ?? 'border-solid'} border-(--f-content-border-color)`;\n });\n\n readonly beforeClass = computed(() => (this.align() === 'left' ? 'flex-none w-8' : 'flex-1'));\n readonly afterClass = computed(() => (this.align() === 'right' ? 'flex-none w-8' : 'flex-1'));\n}\n","import { booleanAttribute, Component, input, output, signal } from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\n@Component({\n selector: 'f-image',\n imports: [UiIconComponent],\n host: { '(document:keydown.escape)': 'onEscape()' },\n styles: [`\n @keyframes image-preview-in { from { opacity: 0; } to { opacity: 1; } }\n .image-preview-overlay { animation: image-preview-in 0.15s ease-out; }\n `],\n template: `\n <img\n [src]=\"src()\"\n [alt]=\"alt()\"\n [style.width]=\"width()\"\n [style.height]=\"height()\"\n class=\"object-cover\"\n [class.cursor-pointer]=\"preview()\"\n (click)=\"preview() && open()\"\n />\n @if (previewVisible()) {\n <div\n class=\"image-preview-overlay fixed inset-0 z-50 flex items-center justify-center bg-black/80 p-6\"\n (click)=\"close()\"\n >\n <button\n type=\"button\"\n aria-label=\"Close\"\n class=\"absolute top-4 right-4 w-9 h-9 rounded-full bg-white/10 hover:bg-white/20 text-white flex items-center justify-center cursor-pointer transition-colors\"\n (click)=\"close()\"\n >\n <ui-icon name=\"times\" class=\"text-base\"></ui-icon>\n </button>\n <img [src]=\"src()\" [alt]=\"alt()\" class=\"max-w-full max-h-full object-contain\" (click)=\"$event.stopPropagation()\" />\n </div>\n }\n `,\n})\nexport class ImageComponent {\n readonly src = input<string>('');\n readonly alt = input<string>('');\n readonly width = input<string>('');\n readonly height = input<string>('');\n readonly preview = input(false, { transform: booleanAttribute });\n\n readonly onShow = output<void>();\n readonly onHide = output<void>();\n\n private readonly _previewVisible = signal(false);\n readonly previewVisible = this._previewVisible.asReadonly();\n\n open(): void {\n this._previewVisible.set(true);\n this.onShow.emit();\n }\n\n close(): void {\n this._previewVisible.set(false);\n this.onHide.emit();\n }\n\n onEscape(): void {\n if (this.previewVisible()) this.close();\n }\n}\n","import { Component, computed, input } from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\n@Component({\n selector: 'f-message',\n imports: [UiIconComponent],\n template: `\n <div [class]=\"classes()\" role=\"alert\">\n <ui-icon [name]=\"iconName()\" [class]=\"'mt-0.5 shrink-0 ' + iconColor()\"></ui-icon>\n <div class=\"flex-1 min-w-0\">\n @if (text()) { <span class=\"text-sm leading-snug\">{{ text() }}</span> }\n <ng-content />\n </div>\n </div>\n `,\n})\nexport class MessageComponent {\n readonly severity = input<'success' | 'info' | 'warn' | 'error'>('info');\n readonly text = input<string>('');\n readonly icon = input<string>('');\n\n readonly classes = computed(() => {\n const map: Record<string, string> = {\n success: 'flex items-start gap-2 px-3 py-2 rounded-lg bg-green-50 text-green-600 border border-green-200',\n info: 'flex items-start gap-2 px-3 py-2 rounded-lg bg-sky-50 text-sky-600 border border-sky-200',\n warn: 'flex items-start gap-2 px-3 py-2 rounded-lg bg-amber-50 text-amber-600 border border-amber-200',\n error: 'flex items-start gap-2 px-3 py-2 rounded-lg bg-red-50 text-red-600 border border-red-200',\n };\n return map[this.severity()] ?? map['info'];\n });\n\n readonly iconName = computed(() => {\n if (this.icon()) return this.icon();\n const map: Record<string, string> = {\n success: 'check-circle',\n info: 'info',\n warn: 'alert-triangle',\n error: 'x-circle',\n };\n return map[this.severity()] ?? map['info'];\n });\n\n readonly iconColor = computed(() => {\n const map: Record<string, string> = {\n success: 'text-green-600',\n info: 'text-sky-600',\n warn: 'text-amber-600',\n error: 'text-red-600',\n };\n return map[this.severity()] ?? map['info'];\n });\n}\n","import { booleanAttribute, Component, input } from '@angular/core';\n\n@Component({\n selector: 'f-progressbar',\n styles: [`\n @keyframes indeterminate-slide {\n 0% { transform: translateX(-100%); }\n 100% { transform: translateX(500%); }\n }\n .indeterminate-bar { animation: indeterminate-slide 1.4s ease-in-out infinite; }\n `],\n template: `\n <div class=\"relative w-full h-5 bg-(--f-content-border-color) rounded-lg overflow-hidden\" role=\"progressbar\" [attr.aria-valuenow]=\"value()\">\n @if (mode() === 'indeterminate') {\n <div class=\"absolute inset-y-0 bg-primary rounded-lg w-1/3 indeterminate-bar\"></div>\n } @else {\n <div\n class=\"h-full bg-primary rounded-lg transition-all duration-500 ease-out flex items-center justify-center overflow-hidden\"\n [style.width]=\"value() + '%'\"\n >\n @if (showValue()) {\n <span class=\"text-xs font-semibold text-primary-contrast whitespace-nowrap px-1\">{{ value() }}%</span>\n }\n </div>\n }\n </div>\n `,\n})\nexport class ProgressbarComponent {\n readonly value = input<number>(0);\n readonly mode = input<'determinate' | 'indeterminate'>('determinate');\n readonly showValue = input(true, { transform: booleanAttribute });\n}\n","import { Component, input, numberAttribute } from '@angular/core';\n\n@Component({\n selector: 'f-progressspinner',\n styles: [`\n @keyframes spinner-rotate { 100% { transform: rotate(360deg); } }\n @keyframes spinner-dash {\n 0% { stroke-dasharray: 1, 150; stroke-dashoffset: 0; }\n 50% { stroke-dasharray: 90, 150; stroke-dashoffset: -35; }\n 100% { stroke-dasharray: 90, 150; stroke-dashoffset: -124; }\n }\n .spinner-svg { animation: spinner-rotate 2s linear infinite; }\n .spinner-arc { animation: spinner-dash 1.5s ease-in-out infinite; }\n `],\n template: `\n <div class=\"inline-flex items-center justify-center\" [style.width]=\"size() + 'px'\" [style.height]=\"size() + 'px'\">\n <svg class=\"spinner-svg\" [attr.width]=\"size()\" [attr.height]=\"size()\" viewBox=\"0 0 50 50\">\n <circle cx=\"25\" cy=\"25\" r=\"20\" fill=\"none\" stroke=\"currentColor\"\n class=\"text-(--f-content-border-color)\" [attr.stroke-width]=\"strokeWidth()\" />\n <circle cx=\"25\" cy=\"25\" r=\"20\" fill=\"none\" stroke=\"currentColor\"\n class=\"text-primary spinner-arc\" [attr.stroke-width]=\"strokeWidth()\"\n stroke-linecap=\"round\" />\n </svg>\n </div>\n `,\n})\nexport class ProgressSpinnerComponent {\n readonly size = input(40, { transform: numberAttribute });\n readonly strokeWidth = input(4, { transform: numberAttribute });\n}\n","import { Component, computed, input } from '@angular/core';\n\n@Component({\n selector: 'f-skeleton',\n styles: [`\n @keyframes shimmer { 0% { background-position: -200% 0; } 100% { background-position: 200% 0; } }\n .skeleton-shimmer {\n background: linear-gradient(90deg, var(--f-content-border-color) 25%, var(--f-content-hover-background) 50%, var(--f-content-border-color) 75%);\n background-size: 200% 100%;\n animation: shimmer 1.6s ease-in-out infinite;\n }\n `],\n template: `<div [style]=\"hostStyle()\" class=\"skeleton-shimmer\"></div>`,\n})\nexport class SkeletonComponent {\n readonly width = input<string>('100%');\n readonly height = input<string>('1rem');\n readonly borderRadius = input<string>('');\n readonly shape = input<'rectangle' | 'circle'>('rectangle');\n\n readonly hostStyle = computed(() => {\n const s = this.shape();\n const w = this.width();\n const h = this.height();\n const br = this.borderRadius() || (s === 'circle' ? '50%' : 'var(--f-border-radius-md)');\n return { width: w, height: h, borderRadius: br, display: 'block' };\n });\n}\n","import { booleanAttribute, Component, computed, input } from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\nexport type TagSeverity = 'success' | 'info' | 'warn' | 'danger' | 'secondary' | 'contrast' | null;\n\n@Component({\n selector: 'f-tag',\n imports: [UiIconComponent],\n template: `\n <span [class]=\"classes()\" [style]=\"inlineStyle()\" role=\"status\">\n @if (icon()) { <ui-icon [name]=\"icon()\" class=\"text-xs\"></ui-icon> }\n @if (value()) { <span>{{ value() }}</span> }\n <ng-content></ng-content>\n </span>\n `,\n})\nexport class TagComponent {\n readonly value = input<string>('');\n readonly severity = input<TagSeverity>(null);\n readonly icon = input<string>('');\n readonly rounded = input(false, { transform: booleanAttribute });\n /** Overrides severity with a custom background/text color (e.g. a per-entity color). */\n readonly color = input<string>('');\n\n readonly classes = computed(() => {\n const r = this.rounded();\n const base = `inline-flex items-center justify-center gap-1 px-2 py-1 text-sm font-bold leading-none ${r ? 'rounded-full' : 'rounded-lg'}`;\n if (this.color()) return base;\n const colorMap: Record<string, string> = {\n success: 'bg-green-100 text-green-700',\n info: 'bg-sky-100 text-sky-700',\n warn: 'bg-amber-100 text-amber-700',\n danger: 'bg-red-100 text-red-700',\n secondary: 'bg-surface-100 text-surface-600',\n contrast: 'bg-surface-950 text-surface-0',\n };\n const sev = this.severity();\n return `${base} ${sev ? (colorMap[sev] ?? colorMap['secondary']) : colorMap['secondary']}`;\n });\n\n readonly inlineStyle = computed(() => {\n const c = this.color();\n return c ? `background-color: ${c}22; color: ${c}` : '';\n });\n}\n","import {\n booleanAttribute,\n Component,\n forwardRef,\n input,\n model,\n output,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\nexport interface CheckboxChangeEvent {\n checked: boolean;\n originalEvent: Event;\n}\n\n@Component({\n selector: 'f-checkbox',\n imports: [UiIconComponent],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => CheckboxComponent), multi: true }],\n host: { '[class]': 'styleClass()' },\n template: `\n <label class=\"inline-flex items-center gap-2 cursor-pointer select-none\" [class.opacity-60]=\"disabled()\" [class.pointer-events-none]=\"disabled()\">\n <div class=\"relative shrink-0\">\n <input\n type=\"checkbox\"\n class=\"sr-only peer\"\n [id]=\"inputId()\"\n [checked]=\"checked()\"\n [disabled]=\"disabled()\"\n (change)=\"onChange($event)\"\n (blur)=\"handleBlur()\"\n />\n <div class=\"w-5 h-5 rounded-sm border-2 border-(--f-form-field-border-color) bg-(--f-form-field-background)\n peer-checked:bg-primary peer-checked:border-primary\n peer-focus-visible:ring-focus\n flex items-center justify-center transition-all duration-[var(--f-transition-duration)] shadow-sm\"\n [class.bg-primary]=\"indeterminate()\" [class.border-primary]=\"indeterminate()\"\n [class.border-red-400]=\"invalid() && touched()\">\n @if (indeterminate()) {\n <ui-icon name=\"minus\" class=\"text-primary-contrast text-sm\"></ui-icon>\n } @else if (checked()) {\n <ui-icon name=\"check\" class=\"text-primary-contrast text-sm\"></ui-icon>\n }\n </div>\n </div>\n @if (label()) {\n <span class=\"text-sm text-(--f-text-color) leading-none\">{{ label() }}</span>\n }\n </label>\n `,\n})\nexport class CheckboxComponent implements ControlValueAccessor {\n readonly label = input<string>('');\n readonly binary = input(true, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly inputId = input<string>('');\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly indeterminate = input(false, { transform: booleanAttribute });\n // Overwritten with the field's touch state when bound via signal forms [formField]\n readonly touched = input(true);\n readonly styleClass = input<string>('');\n readonly onChangeEvent = output<CheckboxChangeEvent>({ alias: 'onChange' });\n readonly onBlur = output<void>();\n // Satisfies Angular Signal Forms' `touch` output so the `Field` directive\n // can mark the bound field touched on blur when used via [formField].\n readonly touch = output<void>();\n\n // Must be a ModelSignal (not a private-writable/public-readonly pair) to\n // satisfy Angular Signal Forms' FormCheckboxControl contract for [formField].\n readonly checked = model(false);\n\n private _onChange: (v: boolean) => void = () => {};\n private _onTouched: () => void = () => {};\n\n onChange(event: Event): void {\n const v = (event.target as HTMLInputElement).checked;\n this.checked.set(v);\n this._onChange(v);\n this._onTouched();\n this.onChangeEvent.emit({ checked: v, originalEvent: event });\n }\n\n handleBlur(): void { this._onTouched(); this.onBlur.emit(); this.touch.emit(); }\n\n writeValue(val: boolean): void { this.checked.set(!!val); }\n registerOnChange(fn: (v: boolean) => void): void { this._onChange = fn; }\n registerOnTouched(fn: () => void): void { this._onTouched = fn; }\n setDisabledState(): void {}\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n ElementRef,\n forwardRef,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\nconst MONTH_NAMES = ['January','February','March','April','May','June','July','August','September','October','November','December'];\nconst DAY_NAMES = ['Su','Mo','Tu','We','Th','Fr','Sa'];\n\n@Component({\n selector: 'f-datepicker',\n imports: [UiIconComponent],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DatePickerComponent), multi: true }],\n host: {\n '[class]': 'styleClass()',\n '(document:click)': 'onDocumentClick($event)',\n },\n template: `\n <div class=\"relative\">\n <div [class]=\"wrapperClass()\">\n <input\n readonly\n type=\"text\"\n [class]=\"'block w-full px-3 py-2 text-sm bg-(--f-form-field-background) text-(--f-form-field-color) placeholder:text-(--f-form-field-placeholder-color) focus:outline-none cursor-pointer ' + inputStyleClass()\"\n [id]=\"inputId()\"\n [value]=\"displayValue()\"\n [placeholder]=\"placeholder()\"\n (click)=\"toggleCalendar()\"\n />\n @if (showClear() && value()) {\n <button type=\"button\" class=\"inline-flex items-center justify-center px-1 text-(--f-form-field-placeholder-color) hover:text-(--f-text-color)\" (click)=\"clear($event)\">\n <ui-icon name=\"times\" class=\"text-xs\"></ui-icon>\n </button>\n }\n @if (showIcon()) {\n <button type=\"button\" class=\"inline-flex items-center justify-center px-2 text-(--f-form-field-placeholder-color)\" (click)=\"toggleCalendar()\">\n <ui-icon name=\"calendar\" class=\"text-sm\"></ui-icon>\n </button>\n }\n </div>\n\n @if (open()) {\n <div class=\"absolute z-50 mt-1 bg-(--f-overlay-popover-background) border border-(--f-content-border-color) rounded-lg shadow-[0_8px_30px_rgb(0,0,0,0.1)] p-3 min-w-64\">\n <div class=\"flex items-center justify-between mb-3\">\n <button type=\"button\" class=\"inline-flex items-center justify-center p-1 hover:bg-(--f-content-hover-background) rounded-md\" (click)=\"prevMonth()\">\n <ui-icon name=\"chevron-left\" class=\"text-xs\"></ui-icon>\n </button>\n <span class=\"text-sm font-semibold\">{{ MONTHS[viewMonth()] }} {{ viewYear() }}</span>\n <button type=\"button\" class=\"inline-flex items-center justify-center p-1 hover:bg-(--f-content-hover-background) rounded-md\" (click)=\"nextMonth()\">\n <ui-icon name=\"chevron-right\" class=\"text-xs\"></ui-icon>\n </button>\n </div>\n <div class=\"grid grid-cols-7 gap-0.5 mb-1\">\n @for (d of DAYS; track d) {\n <div class=\"text-center text-xs text-(--f-text-muted-color) py-1\">{{ d }}</div>\n }\n </div>\n <div class=\"grid grid-cols-7 gap-0.5\">\n @for (day of calendarDays(); track day.date?.getTime() ?? day.pad) {\n <button\n type=\"button\"\n [class]=\"dayClass(day)\"\n [disabled]=\"day.disabled\"\n (click)=\"!day.pad && !day.disabled && selectDate(day.date!)\"\n >{{ day.day }}</button>\n }\n </div>\n @if (showButtonBar()) {\n <div class=\"flex items-center justify-between mt-3 pt-2 border-t border-(--f-content-border-color)\">\n <button type=\"button\" class=\"text-xs font-medium text-primary hover:underline\" (click)=\"onTodayClick()\">Today</button>\n <button type=\"button\" class=\"text-xs font-medium text-(--f-text-muted-color) hover:underline\" (click)=\"onClearClick()\">Clear</button>\n </div>\n }\n </div>\n }\n </div>\n `,\n})\nexport class DatePickerComponent implements ControlValueAccessor {\n readonly MONTHS = MONTH_NAMES;\n readonly DAYS = DAY_NAMES;\n\n readonly placeholder = input<string>('Select date');\n readonly dateFormat = input<string>('mm/dd/yy');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly showTime = input(false, { transform: booleanAttribute });\n readonly selectionMode = input<'single' | 'range' | 'multiple'>('single');\n readonly minDate = input<Date | null | undefined>(null);\n readonly maxDate = input<Date | null | undefined>(null);\n readonly inputId = input<string>('');\n readonly invalid = input(false, { transform: booleanAttribute });\n // Overwritten with the field's touch state when bound via signal forms [formField]\n readonly touched = input(true);\n readonly showClear = input(false, { transform: booleanAttribute });\n readonly inputStyleClass = input<string>('');\n // Defaults to true: the icon button was always rendered before this input\n // was wired up, so keeping it on by default preserves existing pages that\n // never explicitly set [showIcon].\n readonly showIcon = input(true, { transform: booleanAttribute });\n readonly showButtonBar = input(false, { transform: booleanAttribute });\n readonly appendTo = input<string>('');\n readonly styleClass = input<string>('');\n\n readonly onBlur = output<void>();\n\n private readonly _value = signal<Date | null>(null);\n readonly value = this._value.asReadonly();\n private readonly _open = signal(false);\n readonly open = this._open.asReadonly();\n private readonly _viewMonth = signal(new Date().getMonth());\n readonly viewMonth = this._viewMonth.asReadonly();\n private readonly _viewYear = signal(new Date().getFullYear());\n readonly viewYear = this._viewYear.asReadonly();\n\n readonly wrapperClass = computed(() => {\n const showInvalid = this.invalid() && this.touched();\n const stateClass = this.open()\n ? (showInvalid ? 'border-red-400' : 'border-primary')\n : (showInvalid ? 'border-red-400 hover:border-red-300' : 'border-(--f-form-field-border-color) hover:border-(--f-form-field-hover-border-color)');\n return `flex items-center border rounded-lg overflow-hidden bg-(--f-form-field-background) focus-within:ring-focus transition-all duration-[var(--f-transition-duration)] ${stateClass}`;\n });\n\n private readonly _el = inject(ElementRef);\n private _onChange: (v: Date | null) => void = () => {};\n private _onTouched: () => void = () => {};\n\n readonly displayValue = computed(() => {\n const v = this.value();\n if (!v) return '';\n return this.formatDate(v, this.dateFormat());\n });\n\n readonly calendarDays = computed(() => {\n const m = this.viewMonth();\n const y = this.viewYear();\n const firstDay = new Date(y, m, 1).getDay();\n const daysInMonth = new Date(y, m + 1, 0).getDate();\n const selected = this.value();\n\n const days: { day: number; date?: Date; selected: boolean; pad: boolean; disabled: boolean }[] = [];\n for (let i = 0; i < firstDay; i++) days.push({ day: 0, selected: false, pad: true, disabled: false });\n for (let d = 1; d <= daysInMonth; d++) {\n const date = new Date(y, m, d);\n days.push({\n day: d,\n date,\n selected: selected ? selected.toDateString() === date.toDateString() : false,\n pad: false,\n disabled: this.isOutOfRange(date),\n });\n }\n return days;\n });\n\n dayClass(day: { selected: boolean; pad: boolean; disabled: boolean }): string {\n if (day.pad) return 'text-center text-sm py-1 rounded-md invisible';\n if (day.disabled) return 'text-center text-sm py-1 rounded-md opacity-40 cursor-not-allowed pointer-events-none';\n if (day.selected) return 'text-center text-sm py-1 rounded-md bg-primary text-primary-contrast';\n return 'text-center text-sm py-1 rounded-md transition-colors hover:bg-(--f-content-hover-background)';\n }\n\n private isOutOfRange(date: Date): boolean {\n const min = this.minDate();\n const max = this.maxDate();\n if (min) {\n const minDay = new Date(min.getFullYear(), min.getMonth(), min.getDate());\n if (date < minDay) return true;\n }\n if (max) {\n const maxDay = new Date(max.getFullYear(), max.getMonth(), max.getDate());\n if (date > maxDay) return true;\n }\n return false;\n }\n\n private formatDate(date: Date, format: string): string {\n const yyyy = String(date.getFullYear());\n const yy = yyyy.slice(-2);\n const month = date.getMonth() + 1;\n const mm = String(month).padStart(2, '0');\n const day = date.getDate();\n const dd = String(day).padStart(2, '0');\n return format\n .replace(/yyyy/g, yyyy)\n .replace(/yy/g, yy)\n .replace(/mm/g, mm)\n .replace(/m/g, String(month))\n .replace(/dd/g, dd)\n .replace(/d/g, String(day));\n }\n\n onDocumentClick(e: MouseEvent): void {\n if (this.open() && !this._el.nativeElement.contains(e.target)) {\n this._open.set(false);\n this._onTouched();\n this.onBlur.emit();\n }\n }\n\n toggleCalendar(): void {\n if (this.disabled()) return;\n this._open.update(v => !v);\n if (!this.open()) {\n this._onTouched();\n this.onBlur.emit();\n }\n }\n\n clear(event: Event): void {\n event.stopPropagation();\n this._value.set(null);\n this._onChange(null);\n this._onTouched();\n }\n\n selectDate(date: Date): void {\n if (this.isOutOfRange(date)) return;\n this._value.set(date);\n this._onChange(date);\n this._onTouched();\n this._open.set(false);\n this.onBlur.emit();\n }\n\n onTodayClick(): void {\n this.selectDate(new Date());\n }\n\n onClearClick(): void {\n this._value.set(null);\n this._onChange(null);\n this._onTouched();\n this._open.set(false);\n this.onBlur.emit();\n }\n\n prevMonth(): void {\n if (this.viewMonth() === 0) { this._viewMonth.set(11); this._viewYear.update(y => y - 1); }\n else this._viewMonth.update(m => m - 1);\n }\n\n nextMonth(): void {\n if (this.viewMonth() === 11) { this._viewMonth.set(0); this._viewYear.update(y => y + 1); }\n else this._viewMonth.update(m => m + 1);\n }\n\n writeValue(v: Date | null): void { this._value.set(v ?? null); }\n registerOnChange(fn: (v: Date | null) => void): void { this._onChange = fn; }\n registerOnTouched(fn: () => void): void { this._onTouched = fn; }\n setDisabledState(): void {}\n}\n","import { booleanAttribute, Component, input, output, signal } from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\nexport interface FileSelectEvent { files: File[]; currentFiles: File[]; }\nexport interface FileRemoveEvent { file: File; }\nexport interface FileErrorEvent { file: File; reason: 'size' | 'count'; }\n\n@Component({\n selector: 'f-fileupload',\n imports: [UiIconComponent],\n host: { '[class]': 'styleClass()' },\n template: `\n <div\n class=\"border-2 border-dashed rounded-lg p-8 text-center transition-colors\"\n [class]=\"isDragging() ? 'border-primary bg-primary/5' : 'border-(--f-content-border-color) hover:border-primary/60 hover:bg-(--f-content-hover-background)'\"\n [class.opacity-50]=\"disabled()\"\n [class.pointer-events-none]=\"disabled()\"\n [attr.aria-disabled]=\"disabled() ? 'true' : null\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave()\"\n (drop)=\"onDrop($event)\"\n >\n <input #fileInput type=\"file\"\n class=\"hidden\"\n [accept]=\"accept()\"\n [multiple]=\"multiple()\"\n [disabled]=\"disabled()\"\n (change)=\"onFileChange($event)\"\n />\n <div class=\"flex flex-col items-center gap-2\">\n <div class=\"w-12 h-12 rounded-full bg-primary/10 flex items-center justify-center\">\n <ui-icon [name]=\"chooseIcon()\" class=\"text-primary text-xl\"></ui-icon>\n </div>\n <div>\n <p class=\"text-sm font-medium text-(--f-text-color)\">Drag & drop files here</p>\n <p class=\"text-xs text-(--f-text-muted-color) mt-0.5\">or</p>\n </div>\n <button type=\"button\"\n class=\"px-4 py-2 bg-primary text-primary-contrast text-sm rounded-lg hover:bg-primary-emphasis transition-colors font-medium cursor-pointer disabled:cursor-default\"\n [disabled]=\"disabled()\"\n (click)=\"fileInput.click()\">\n {{ chooseLabel() }}\n </button>\n </div>\n\n @if (files().length) {\n <div class=\"mt-5 space-y-1.5 text-left\">\n @for (f of files(); track f.name) {\n <div class=\"flex items-center gap-2 py-2 px-3 bg-(--f-content-hover-background) border border-(--f-content-border-color) rounded-lg\">\n <ui-icon name=\"file\" class=\"text-(--f-text-muted-color) shrink-0 text-sm\"></ui-icon>\n <span class=\"flex-1 truncate text-sm text-(--f-text-color)\">{{ f.name }}</span>\n <span class=\"text-xs text-(--f-text-muted-color) shrink-0\">{{ formatSize(f.size) }}</span>\n <button type=\"button\" class=\"inline-flex items-center justify-center text-(--f-text-muted-color) hover:text-red-500 transition-colors shrink-0 cursor-pointer\" (click)=\"removeFile(f)\">\n <ui-icon name=\"times\" class=\"text-xs\"></ui-icon>\n </button>\n </div>\n }\n </div>\n }\n </div>\n `,\n})\nexport class FileUploadComponent {\n readonly name = input<string>('');\n readonly accept = input<string>('');\n readonly multiple = input(false, { transform: booleanAttribute });\n readonly auto = input(false, { transform: booleanAttribute });\n readonly maxFileSize = input<number | null>(null);\n readonly fileLimit = input<number | null>(null);\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly url = input<string>('');\n readonly customUpload = input(false, { transform: booleanAttribute });\n readonly showUploadButton = input(true, { transform: booleanAttribute });\n readonly showCancelButton = input(true, { transform: booleanAttribute });\n readonly chooseLabel = input<string>('Choose Files');\n readonly chooseIcon = input<string>('upload');\n readonly styleClass = input<string>('');\n readonly mode = input<string>('advanced');\n\n readonly onSelect = output<FileSelectEvent>();\n readonly onRemove = output<FileRemoveEvent>();\n readonly onClear = output<void>();\n readonly onError = output<FileErrorEvent[]>();\n\n private readonly _files = signal<File[]>([]);\n readonly files = this._files.asReadonly();\n private readonly _isDragging = signal(false);\n readonly isDragging = this._isDragging.asReadonly();\n\n onDragOver(e: DragEvent): void {\n e.preventDefault();\n if (!this.disabled()) this._isDragging.set(true);\n }\n\n onDragLeave(): void {\n this._isDragging.set(false);\n }\n\n onFileChange(e: Event): void {\n if (this.disabled()) return;\n const input = e.target as HTMLInputElement;\n this.acceptIncoming(Array.from(input.files ?? []));\n input.value = '';\n }\n\n onDrop(e: DragEvent): void {\n e.preventDefault();\n this._isDragging.set(false);\n if (this.disabled()) return;\n this.acceptIncoming(Array.from(e.dataTransfer?.files ?? []));\n }\n\n private acceptIncoming(incoming: File[]): void {\n const maxSize = this.maxFileSize();\n const limit = this.fileLimit();\n const errors: FileErrorEvent[] = [];\n\n let candidates = incoming;\n if (maxSize != null) {\n candidates = candidates.filter((f) => {\n const ok = f.size <= maxSize;\n if (!ok) errors.push({ file: f, reason: 'size' });\n return ok;\n });\n }\n\n const existingCount = this.multiple() ? this.files().length : 0;\n if (limit != null && existingCount + candidates.length > limit) {\n const room = Math.max(0, limit - existingCount);\n const rejected = candidates.slice(room);\n candidates = candidates.slice(0, room);\n for (const f of rejected) errors.push({ file: f, reason: 'count' });\n }\n\n if (errors.length) this.onError.emit(errors);\n if (!candidates.length) return;\n\n const current = this.multiple() ? [...this.files(), ...candidates] : candidates;\n this._files.set(current);\n this.onSelect.emit({ files: candidates, currentFiles: current });\n }\n\n removeFile(file: File): void {\n this._files.update(f => f.filter(x => x !== file));\n this.onRemove.emit({ file });\n }\n\n clear(): void {\n this._files.set([]);\n this.onClear.emit();\n }\n\n formatSize(bytes: number): string {\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'f-iconfield',\n host: { class: 'relative flex items-center' },\n template: `<ng-content />`,\n})\nexport class IconFieldComponent {}\n","import { Component, computed, input } from '@angular/core';\n\n@Component({\n selector: 'f-inputicon',\n host: { '[class]': 'hostClass()' },\n template: `<ng-content />`,\n})\nexport class InputIconComponent {\n readonly styleClass = input<string>('');\n\n readonly hostClass = computed(\n () => `absolute left-3 top-1/2 -translate-y-1/2 text-(--f-form-field-placeholder-color) pointer-events-none ${this.styleClass()}`,\n );\n}\n","import { booleanAttribute, Component, computed, forwardRef, input, output, signal } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\n@Component({\n selector: 'f-inputnumber',\n imports: [UiIconComponent],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => InputNumberComponent), multi: true }],\n host: { class: 'block w-full' },\n template: `\n <div [class]=\"wrapperClass()\">\n @if (showButtons() && buttonLayout() === 'horizontal') {\n <button type=\"button\" class=\"inline-flex items-center justify-center px-2.5 py-2 bg-(--f-content-hover-background) hover:bg-(--f-content-border-color) text-(--f-text-muted-color) border-r border-(--f-form-field-border-color) transition-colors duration-[var(--f-transition-duration)] focus:outline-none focus-visible:ring-focus cursor-pointer\" (click)=\"decrement()\">\n <ui-icon name=\"minus\" class=\"text-xs\"></ui-icon>\n </button>\n }\n @if (prefix()) {\n <span class=\"px-2 py-2 text-sm text-(--f-text-muted-color) border-r border-(--f-content-border-color) bg-(--f-content-hover-background)\">{{ prefix() }}</span>\n }\n <input\n type=\"number\"\n [class]=\"'block px-3 py-2 text-sm bg-(--f-form-field-background) text-(--f-form-field-color) focus:outline-none w-full disabled:opacity-60 ' + inputStyleClass()\"\n [id]=\"inputId()\"\n [value]=\"value()\"\n [min]=\"min() ?? null\"\n [max]=\"max() ?? null\"\n [step]=\"step()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"isDisabled()\"\n (input)=\"onInputChange($event)\"\n (blur)=\"handleBlur()\"\n />\n @if (suffix()) {\n <span class=\"px-2 py-2 text-sm text-(--f-text-muted-color) border-l border-(--f-content-border-color) bg-(--f-content-hover-background)\">{{ suffix() }}</span>\n }\n @if (showButtons() && buttonLayout() === 'horizontal') {\n <button type=\"button\" class=\"inline-flex items-center justify-center px-2.5 py-2 bg-(--f-content-hover-background) hover:bg-(--f-content-border-color) text-(--f-text-muted-color) border-l border-(--f-form-field-border-color) transition-colors duration-[var(--f-transition-duration)] focus:outline-none focus-visible:ring-focus cursor-pointer\" (click)=\"increment()\">\n <ui-icon name=\"plus\" class=\"text-xs\"></ui-icon>\n </button>\n }\n @if (showButtons() && buttonLayout() === 'stacked') {\n <div class=\"flex flex-col border-l border-(--f-form-field-border-color)\">\n <button type=\"button\" class=\"flex-1 inline-flex items-center justify-center px-2 bg-(--f-content-hover-background) hover:bg-(--f-content-border-color) text-(--f-text-muted-color) border-b border-(--f-form-field-border-color) transition-colors duration-[var(--f-transition-duration)] focus:outline-none focus-visible:ring-focus cursor-pointer\" (click)=\"increment()\">\n <ui-icon name=\"chevron-up\" class=\"text-[10px]\"></ui-icon>\n </button>\n <button type=\"button\" class=\"flex-1 inline-flex items-center justify-center px-2 bg-(--f-content-hover-background) hover:bg-(--f-content-border-color) text-(--f-text-muted-color) transition-colors duration-[var(--f-transition-duration)] focus:outline-none focus-visible:ring-focus cursor-pointer\" (click)=\"decrement()\">\n <ui-icon name=\"chevron-down\" class=\"text-[10px]\"></ui-icon>\n </button>\n </div>\n }\n </div>\n `,\n})\nexport class InputNumberComponent implements ControlValueAccessor {\n readonly min = input<number | null>(null);\n readonly max = input<number | null>(null);\n readonly step = input<number>(1);\n readonly showButtons = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly inputId = input<string>('');\n readonly invalid = input(false, { transform: booleanAttribute });\n // Overwritten with the field's touch state when bound via signal forms [formField]\n readonly touched = input(true);\n readonly placeholder = input<string>('');\n readonly prefix = input<string>('');\n readonly suffix = input<string>('');\n readonly useGrouping = input(true, { transform: booleanAttribute });\n readonly buttonLayout = input<'stacked' | 'horizontal'>('stacked');\n readonly inputStyleClass = input<string>('');\n\n readonly onBlur = output<void>();\n\n private readonly _value = signal<number | null>(null);\n readonly value = this._value.asReadonly();\n\n private readonly _formDisabled = signal(false);\n readonly isDisabled = computed(() => this.disabled() || this._formDisabled());\n\n readonly wrapperClass = computed(() => {\n const stateClass = this.invalid() && this.touched()\n ? 'border-red-400 focus-within:border-red-400'\n : 'border-(--f-form-field-border-color) focus-within:border-primary';\n return `flex w-full items-stretch border rounded-lg overflow-hidden focus-within:ring-focus transition-colors duration-[var(--f-transition-duration)] ${stateClass}`;\n });\n\n private _onChange: (v: number | null) => void = () => {};\n private _onTouched: () => void = () => {};\n\n onInputChange(e: Event): void {\n const v = +(e.target as HTMLInputElement).value;\n this._value.set(isNaN(v) ? null : v);\n this._onChange(this.value());\n }\n\n increment(): void {\n const v = (this.value() ?? 0) + this.step();\n this._value.set(this.max() != null ? Math.min(v, this.max()!) : v);\n this._onChange(this.value());\n }\n\n decrement(): void {\n const v = (this.value() ?? 0) - this.step();\n this._value.set(this.min() != null ? Math.max(v, this.min()!) : v);\n this._onChange(this.value());\n }\n\n handleBlur(): void {\n this._onTouched();\n this.onBlur.emit();\n }\n\n writeValue(v: number): void { this._value.set(v ?? null); }\n registerOnChange(fn: (v: number | null) => void): void { this._onChange = fn; }\n registerOnTouched(fn: () => void): void { this._onTouched = fn; }\n setDisabledState(isDisabled: boolean): void { this._formDisabled.set(isDisabled); }\n}\n","import {\n booleanAttribute,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n OnInit,\n signal,\n} from '@angular/core';\n\n@Directive({\n selector: '[fInputText]',\n host: { '[class]': 'classes()' },\n})\nexport class InputTextDirective implements OnInit {\n readonly invalid = input(false, { transform: booleanAttribute });\n // Overwritten with the field's touch state when bound via signal forms [formField]\n readonly touched = input(true);\n private readonly _el = inject(ElementRef<HTMLElement>);\n private readonly _iconLeft = signal(false);\n\n ngOnInit(): void {\n this._iconLeft.set(!!this._el.nativeElement.closest('f-iconfield'));\n }\n\n readonly classes = computed(() => {\n const stateClass = this.invalid() && this.touched()\n ? 'border-red-400 focus:border-red-400'\n : 'border-(--f-form-field-border-color) focus:border-primary';\n return [\n 'block w-full',\n this._iconLeft() ? 'pl-9 pr-3' : 'px-3',\n 'py-2 text-sm rounded-lg border',\n 'bg-(--f-form-field-background) text-(--f-form-field-color) placeholder:text-(--f-form-field-placeholder-color)',\n 'focus:outline-none focus:ring-focus',\n 'disabled:opacity-60 disabled:cursor-not-allowed',\n 'transition-colors duration-[var(--f-transition-duration)]',\n stateClass,\n ].join(' ');\n });\n}\n","import { booleanAttribute, Directive, effect, ElementRef, inject, input } from '@angular/core';\n\n@Directive({ selector: '[fInputPassword]' })\nexport class InputPasswordDirective {\n private readonly _el = inject(ElementRef<HTMLInputElement>);\n\n readonly mask = input(true, { transform: booleanAttribute });\n\n constructor() {\n effect(() => {\n this._el.nativeElement.type = this.mask() ? 'password' : 'text';\n });\n }\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n ElementRef,\n forwardRef,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\n@Component({\n selector: 'f-multiselect',\n imports: [UiIconComponent],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => MultiSelectComponent), multi: true }],\n host: { '[class]': 'styleClass()', '(document:click)': 'onDocumentClick($event)' },\n template: `\n <div class=\"relative w-full\">\n <div [id]=\"inputId()\" [class]=\"triggerClass()\" (click)=\"toggleOpen()\">\n @if (selectedLabels().length) {\n @if (display() === 'comma') {\n <span class=\"flex-1 min-w-0 truncate text-sm text-(--f-form-field-color)\">{{ commaLabel() }}</span>\n } @else if (selectedLabels().length > maxSelectedLabels()) {\n <span class=\"flex-1 min-w-0 truncate text-sm text-(--f-form-field-color)\">{{ selectedLabels().length }} items selected</span>\n } @else {\n <div class=\"flex flex-wrap items-center gap-1 flex-1 min-w-0\">\n @for (lbl of selectedLabels(); track $index) {\n <span class=\"inline-flex items-center gap-1 px-2 py-0.5 bg-primary/10 text-primary rounded-md text-xs font-medium shrink-0\">\n {{ lbl }}\n <button type=\"button\" aria-label=\"Remove\" class=\"inline-flex items-center justify-center hover:opacity-70 cursor-pointer\" (click)=\"removeByLabel($event, lbl)\">\n <ui-icon name=\"times\" class=\"text-[10px]\"></ui-icon>\n </button>\n </span>\n }\n </div>\n }\n } @else {\n <span class=\"text-(--f-form-field-placeholder-color) text-sm\">{{ placeholder() }}</span>\n }\n @if (showClear() && values().length && !disabled()) {\n <ui-icon name=\"x\" class=\"text-xs text-(--f-form-field-placeholder-color) hover:text-(--f-text-color) shrink-0\" (click)=\"clearAll($event)\"></ui-icon>\n }\n <ui-icon name=\"chevron-down\" class=\"ml-auto text-xs text-(--f-form-field-placeholder-color) shrink-0 transition-transform duration-[var(--f-transition-duration)]\" [class.rotate-180]=\"open()\"></ui-icon>\n </div>\n\n @if (open()) {\n <div class=\"absolute z-50 w-full mt-1 bg-(--f-overlay-popover-background) border border-(--f-content-border-color) rounded-lg shadow-lg overflow-hidden\">\n @if (filter()) {\n <div class=\"p-2 border-b border-(--f-content-border-color)\">\n <div class=\"flex items-center gap-2 px-2 py-1.5 bg-(--f-content-hover-background) rounded-lg border border-(--f-content-border-color)\">\n <ui-icon name=\"search\" class=\"text-xs text-(--f-text-muted-color) shrink-0\"></ui-icon>\n <input type=\"text\" class=\"flex-1 text-sm bg-transparent focus:outline-none text-(--f-text-color) placeholder:text-(--f-form-field-placeholder-color)\"\n placeholder=\"Search...\" [value]=\"filterText()\" (input)=\"onFilterInput($any($event.target).value)\" (click)=\"$event.stopPropagation()\" />\n </div>\n </div>\n }\n @if (showToggleAll() && filteredOptions().length) {\n <button type=\"button\"\n class=\"w-full text-left px-3 py-2 text-sm flex items-center gap-2.5 border-b border-(--f-content-border-color) text-(--f-text-color) hover:bg-(--f-content-hover-background) transition-colors cursor-pointer\"\n (click)=\"toggleAll($event)\">\n <div class=\"w-4 h-4 rounded-sm border flex items-center justify-center shrink-0 transition-colors\"\n [class]=\"allFilteredSelected() ? 'bg-primary border-primary' : 'border-(--f-form-field-border-color) bg-(--f-form-field-background)'\">\n @if (allFilteredSelected()) {\n <ui-icon name=\"check\" class=\"text-[9px] text-primary-contrast\"></ui-icon>\n }\n </div>\n <span class=\"flex-1 truncate font-medium\">Select All</span>\n </button>\n }\n <div class=\"max-h-56 overflow-auto py-1\">\n @for (opt of filteredOptions(); track getOptionValue(opt)) {\n <button type=\"button\"\n class=\"w-full text-left px-3 py-2 text-sm flex items-center gap-2.5 transition-colors\"\n [class]=\"isOptionDisabled(opt) ? 'opacity-50 cursor-not-allowed' : (isSelected(opt) ? 'bg-(--f-highlight-background) text-(--f-highlight-color) cursor-pointer' : 'text-(--f-text-color) hover:bg-(--f-content-hover-background) cursor-pointer')\"\n [disabled]=\"isOptionDisabled(opt)\"\n (click)=\"toggleOption($event, opt)\">\n <div class=\"w-4 h-4 rounded-sm border flex items-center justify-center shrink-0 transition-colors\"\n [class]=\"isSelected(opt) ? 'bg-primary border-primary' : 'border-(--f-form-field-border-color) bg-(--f-form-field-background)'\">\n @if (isSelected(opt)) {\n <ui-icon name=\"check\" class=\"text-[9px] text-primary-contrast\"></ui-icon>\n }\n </div>\n <span class=\"flex-1 truncate\">{{ getOptionLabel(opt) }}</span>\n </button>\n }\n @empty {\n <div class=\"py-6 flex flex-col items-center gap-2\">\n <ui-icon name=\"inbox\" class=\"text-2xl text-(--f-text-muted-color)\"></ui-icon>\n <span class=\"text-sm text-(--f-text-muted-color)\">No options</span>\n </div>\n }\n </div>\n </div>\n }\n </div>\n `,\n})\nexport class MultiSelectComponent implements ControlValueAccessor {\n private readonly _el = inject(ElementRef);\n\n onDocumentClick(e: MouseEvent): void {\n if (this.open() && !this._el.nativeElement.contains(e.target)) {\n this._open.set(false);\n this._onTouched();\n this.onBlur.emit();\n }\n }\n\n readonly triggerClass = computed(() => {\n const base = 'w-full min-h-[38px] flex items-center gap-2 px-3 py-1.5 text-sm rounded-lg border bg-(--f-form-field-background) focus:outline-none focus-visible:ring-focus transition-all duration-[var(--f-transition-duration)]';\n const showInvalid = this.invalid() && this.touched();\n const stateClass = this.open()\n ? (showInvalid ? 'border-red-400' : 'border-primary')\n : (showInvalid ? 'border-red-400' : 'border-(--f-form-field-border-color) hover:border-(--f-form-field-hover-border-color)');\n const disabledClass = this.disabled() ? 'opacity-60 cursor-not-allowed' : 'cursor-pointer';\n return `${base} ${stateClass} ${disabledClass}`;\n });\n readonly options = input<unknown[]>([]);\n readonly optionLabel = input<string>('label');\n readonly optionValue = input<string>('value');\n readonly placeholder = input<string>('Select');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly filter = input(false, { transform: booleanAttribute });\n readonly inputId = input<string>('');\n readonly invalid = input(false, { transform: booleanAttribute });\n // Overwritten with the field's touch state when bound via signal forms [formField]\n readonly touched = input(true);\n readonly showClear = input(false, { transform: booleanAttribute });\n readonly optionDisabled = input<string>('');\n readonly display = input<string>('comma');\n readonly maxSelectedLabels = input<number>(3);\n readonly selectionLimit = input<number | null>(null);\n readonly showToggleAll = input(true, { transform: booleanAttribute });\n readonly styleClass = input<string>('');\n\n readonly onBlur = output<void>();\n\n private readonly _values = signal<unknown[]>([]);\n readonly values = this._values.asReadonly();\n private readonly _open = signal(false);\n readonly open = this._open.asReadonly();\n private readonly _filterText = signal('');\n readonly filterText = this._filterText.asReadonly();\n\n private _onChange: (v: unknown[]) => void = () => {};\n private _onTouched: () => void = () => {};\n\n readonly filteredOptions = computed(() => {\n const opts = this.options() as Record<string, unknown>[];\n const q = this.filterText().toLowerCase();\n if (!q) return opts;\n return opts.filter(o => String(o[this.optionLabel()] ?? '').toLowerCase().includes(q));\n });\n\n readonly selectedLabels = computed(() => {\n const vals = this.values();\n const opts = this.options() as Record<string, unknown>[];\n return vals.map(v => {\n const found = opts.find(o => o[this.optionValue()] === v);\n return found ? String(found[this.optionLabel()] ?? v) : String(v);\n });\n });\n\n getOptionLabel(opt: unknown): string {\n if (opt === null || opt === undefined) return '';\n if (typeof opt !== 'object') return String(opt);\n return String((opt as Record<string, unknown>)[this.optionLabel()] ?? '');\n }\n\n getOptionValue(opt: unknown): unknown {\n if (opt === null || opt === undefined) return opt;\n if (typeof opt !== 'object') return opt;\n return (opt as Record<string, unknown>)[this.optionValue()];\n }\n isSelected(opt: unknown): boolean { return this.values().includes(this.getOptionValue(opt)); }\n\n isOptionDisabled(opt: unknown): boolean {\n const field = this.optionDisabled();\n if (!field || opt === null || typeof opt !== 'object') return false;\n return !!(opt as Record<string, unknown>)[field];\n }\n\n readonly commaLabel = computed(() => this.selectedLabels().join(', '));\n\n onFilterInput(v: string): void { this._filterText.set(v); }\n\n toggleOpen(): void {\n if (this.disabled()) return;\n this._open.update(v => !v);\n if (!this.open()) { this._onTouched(); this.onBlur.emit(); }\n }\n\n toggleOption(e: Event, opt: unknown): void {\n e.stopPropagation();\n if (this.isOptionDisabled(opt)) return;\n const v = this.getOptionValue(opt);\n const cur = this.values();\n const selecting = !cur.includes(v);\n const limit = this.selectionLimit();\n if (selecting && limit != null && cur.length >= limit) return;\n const next = selecting ? [...cur, v] : cur.filter(x => x !== v);\n this._values.set(next);\n this._onChange(next);\n }\n\n clearAll(e: Event): void {\n e.stopPropagation();\n this._values.set([]);\n this._onChange([]);\n }\n\n readonly allFilteredSelected = computed(() => {\n const selectable = this.filteredOptions().filter(o => !this.isOptionDisabled(o));\n return selectable.length > 0 && selectable.every(o => this.isSelected(o));\n });\n\n toggleAll(e: Event): void {\n e.stopPropagation();\n const selectable = this.filteredOptions().filter(o => !this.isOptionDisabled(o));\n const selectableValues = selectable.map(o => this.getOptionValue(o));\n const cur = this.values();\n const next = this.allFilteredSelected()\n ? cur.filter(v => !selectableValues.includes(v))\n : [...cur, ...selectableValues.filter(v => !cur.includes(v))];\n const limited = this.selectionLimit() != null ? next.slice(0, this.selectionLimit()!) : next;\n this._values.set(limited);\n this._onChange(limited);\n }\n\n removeByLabel(e: Event, lbl: string): void {\n e.stopPropagation();\n const opts = this.options() as Record<string, unknown>[];\n const found = opts.find(o => String(o[this.optionLabel()] ?? '') === lbl);\n if (found) this.toggleOption(e, found);\n }\n\n writeValue(v: unknown[]): void { this._values.set(Array.isArray(v) ? v : []); }\n registerOnChange(fn: (v: unknown[]) => void): void { this._onChange = fn; }\n registerOnTouched(fn: () => void): void { this._onTouched = fn; }\n setDisabledState(): void {}\n}\n","import { booleanAttribute, Component, computed, forwardRef, input, output, signal } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\n@Component({\n selector: 'f-password',\n imports: [UiIconComponent],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => PasswordComponent), multi: true }],\n template: `\n <div class=\"relative\">\n <input\n [type]=\"show() ? 'text' : 'password'\"\n [class]=\"inputClass()\"\n [id]=\"inputId()\"\n [placeholder]=\"placeholder()\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n (input)=\"onInput($event)\"\n (blur)=\"handleBlur()\"\n />\n @if (toggleMask()) {\n <button\n type=\"button\"\n class=\"inline-flex items-center absolute right-3 top-1/2 -translate-y-1/2 text-(--f-form-field-placeholder-color) hover:text-(--f-text-hover-color) cursor-pointer\"\n (click)=\"toggleShow()\"\n >\n <ui-icon [name]=\"show() ? 'eye-off' : 'eye'\" class=\"text-sm\"></ui-icon>\n </button>\n }\n </div>\n @if (feedback() && value()) {\n <div class=\"mt-1.5\">\n <div class=\"flex gap-1\">\n @for (seg of [0, 1, 2]; track seg) {\n <div class=\"h-1 flex-1 rounded-full transition-colors\" [style.background-color]=\"seg < strength().segments ? strength().color : 'var(--f-content-border-color)'\"></div>\n }\n </div>\n <div class=\"text-xs mt-1\" [style.color]=\"strength().color\">{{ strength().label }}</div>\n </div>\n }\n `,\n})\nexport class PasswordComponent implements ControlValueAccessor {\n readonly toggleMask = input(true, { transform: booleanAttribute });\n readonly feedback = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly placeholder = input<string>('');\n readonly inputId = input<string>('');\n readonly invalid = input(false, { transform: booleanAttribute });\n // Overwritten with the field's touch state when bound via signal forms [formField]\n readonly touched = input(true);\n readonly inputStyleClass = input<string>('');\n\n readonly onBlur = output<void>();\n\n private readonly _value = signal('');\n readonly value = this._value.asReadonly();\n private readonly _show = signal(false);\n readonly show = this._show.asReadonly();\n\n readonly strength = computed(() => {\n const v = this.value();\n let score = 0;\n if (v.length >= 8) score++;\n if (v.length >= 12) score++;\n if (/[a-z]/.test(v) && /[A-Z]/.test(v)) score++;\n if (/\\d/.test(v)) score++;\n if (/[^a-zA-Z0-9]/.test(v)) score++;\n\n if (score <= 1) return { segments: 1, label: 'Weak', color: 'var(--f-red-500, #ef4444)' };\n if (score <= 3) return { segments: 2, label: 'Medium', color: 'var(--f-amber-500, #f59e0b)' };\n return { segments: 3, label: 'Strong', color: 'var(--f-green-500, #22c55e)' };\n });\n\n readonly inputClass = computed(() => {\n const stateClass = this.invalid() && this.touched()\n ? 'border-red-400 focus:border-red-400'\n : 'border-(--f-form-field-border-color) focus:border-primary';\n return `block w-full px-3 py-2 pr-10 text-sm rounded-lg border bg-(--f-form-field-background) text-(--f-form-field-color) placeholder:text-(--f-form-field-placeholder-color) focus:outline-none focus:ring-focus disabled:opacity-60 transition-colors duration-[var(--f-transition-duration)] ${stateClass} ${this.inputStyleClass()}`;\n });\n\n private _onChange: (v: string) => void = () => {};\n private _onTouched: () => void = () => {};\n\n onInput(e: Event): void {\n const v = (e.target as HTMLInputElement).value;\n this._value.set(v);\n this._onChange(v);\n }\n\n handleBlur(): void {\n this._onTouched();\n this.onBlur.emit();\n }\n\n toggleShow(): void { this._show.update(v => !v); }\n\n writeValue(v: string): void { this._value.set(v ?? ''); }\n registerOnChange(fn: (v: string) => void): void { this._onChange = fn; }\n registerOnTouched(fn: () => void): void { this._onTouched = fn; }\n setDisabledState(): void {}\n}\n","import { booleanAttribute, Component, forwardRef, input, output, signal } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\nexport interface RadioButtonClickEvent {\n originalEvent: Event;\n value: unknown;\n}\n\n@Component({\n selector: 'f-radiobutton',\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => RadioButtonComponent), multi: true }],\n host: { '[class]': 'styleClass()' },\n template: `\n <label class=\"inline-flex items-center gap-2 cursor-pointer select-none\" [class.opacity-60]=\"disabled()\" [class.pointer-events-none]=\"disabled()\">\n <div class=\"relative\">\n <input type=\"radio\"\n class=\"sr-only peer\"\n [id]=\"inputId()\"\n [name]=\"name()\"\n [value]=\"value()\"\n [checked]=\"isChecked()\"\n [disabled]=\"disabled()\"\n (change)=\"onChange($event)\"\n (blur)=\"handleBlur()\"\n />\n <div class=\"w-5 h-5 rounded-full border-2 border-(--f-form-field-border-color) bg-(--f-form-field-background) flex items-center justify-center\n peer-checked:border-primary\n peer-focus-visible:ring-focus\n transition-all duration-[var(--f-transition-duration)] shadow-sm\"\n [class.border-red-400]=\"invalid()\">\n @if (isChecked()) {\n <div class=\"w-2.5 h-2.5 rounded-full bg-primary transition-transform duration-[var(--f-transition-duration)] scale-100\"></div>\n }\n </div>\n </div>\n @if (label()) { <span class=\"text-sm text-(--f-text-color)\">{{ label() }}</span> }\n </label>\n `,\n})\nexport class RadioButtonComponent implements ControlValueAccessor {\n readonly name = input<string>('');\n readonly value = input<unknown>(null);\n readonly label = input<string>('');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly inputId = input<string>('');\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly styleClass = input<string>('');\n readonly onClick = output<RadioButtonClickEvent>();\n readonly onBlur = output<void>();\n\n private readonly _modelValue = signal<unknown>(null);\n readonly modelValue = this._modelValue.asReadonly();\n private _onChange: (v: unknown) => void = () => {};\n private _onTouched: () => void = () => {};\n\n isChecked(): boolean { return this.modelValue() === this.value(); }\n\n onChange(e: Event): void {\n this._modelValue.set(this.value());\n this._onChange(this.modelValue());\n this._onTouched();\n this.onClick.emit({ originalEvent: e, value: this.modelValue() });\n }\n\n handleBlur(): void { this._onTouched(); this.onBlur.emit(); }\n\n writeValue(v: unknown): void { this._modelValue.set(v); }\n registerOnChange(fn: (v: unknown) => void): void { this._onChange = fn; }\n registerOnTouched(fn: () => void): void { this._onTouched = fn; }\n setDisabledState(): void {}\n}\n","import { booleanAttribute, Component, computed, forwardRef, input, output, signal } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\n@Component({\n selector: 'f-rating',\n imports: [UiIconComponent],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => RatingComponent), multi: true }],\n template: `\n <div class=\"inline-flex items-center gap-1\">\n @if (cancel()) {\n <button type=\"button\" class=\"text-(--f-text-muted-color) hover:text-red-500 cursor-pointer\" (click)=\"setValue(0)\">\n <ui-icon name=\"times\"></ui-icon>\n </button>\n }\n @for (star of starsArray(); track star) {\n <button\n type=\"button\"\n class=\"text-xl transition-all duration-[var(--f-transition-duration)] hover:scale-110 focus:outline-none focus-visible:ring-focus rounded-sm cursor-pointer disabled:cursor-default disabled:pointer-events-none disabled:opacity-50\"\n [class.text-yellow-400]=\"star <= (hovered() || value())\"\n [class.text-(--f-content-border-color)]=\"star > (hovered() || value())\"\n [class.drop-shadow-sm]=\"star <= (hovered() || value())\"\n [disabled]=\"disabled()\"\n [attr.aria-invalid]=\"invalid() ? 'true' : null\"\n (mouseenter)=\"onHover(star)\"\n (mouseleave)=\"onHover(0)\"\n (click)=\"setValue(star)\"\n ><ui-icon [name]=\"star <= (hovered() || value()) ? iconOn() : iconOff()\"></ui-icon></button>\n }\n </div>\n `,\n})\nexport class RatingComponent implements ControlValueAccessor {\n readonly stars = input<number>(5);\n readonly cancel = input(true, { transform: booleanAttribute });\n readonly readonly = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly iconOn = input<string>('star-fill');\n readonly iconOff = input<string>('star');\n readonly onRate = output<{ value: number }>();\n readonly onBlur = output<void>();\n\n private readonly _value = signal(0);\n readonly value = this._value.asReadonly();\n private readonly _hovered = signal(0);\n readonly hovered = this._hovered.asReadonly();\n\n readonly starsArray = computed(() => Array.from({ length: this.stars() }, (_, i) => i + 1));\n\n private _onChange: (v: number) => void = () => {};\n private _onTouched: () => void = () => {};\n\n onHover(v: number): void {\n if (this.readonly() || this.disabled()) return;\n this._hovered.set(v);\n }\n\n setValue(v: number): void {\n if (this.readonly() || this.disabled()) return;\n this._value.set(v);\n this._onChange(v);\n this._onTouched();\n this.onRate.emit({ value: v });\n }\n\n writeValue(v: number): void { this._value.set(v ?? 0); }\n registerOnChange(fn: (v: number) => void): void { this._onChange = fn; }\n registerOnTouched(fn: () => void): void { this._onTouched = fn; }\n setDisabledState(): void {}\n}\n","import { Directive, inject, input, TemplateRef } from '@angular/core';\n\n@Directive({ selector: 'ng-template[fTemplate]' })\nexport class FTemplateDirective {\n readonly fTemplate = input<string>('');\n readonly templateRef = inject(TemplateRef);\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n contentChild,\n contentChildren,\n ElementRef,\n forwardRef,\n inject,\n input,\n output,\n signal,\n TemplateRef,\n} from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { FTemplateDirective } from '../shared/ftemplate.directive';\n\n@Component({\n selector: 'f-select',\n imports: [UiIconComponent, NgTemplateOutlet],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SelectComponent), multi: true }],\n host: {\n '[class]': 'hostClass()',\n '(document:click)': 'onDocumentClick($event)',\n },\n template: `\n <div class=\"relative w-full\">\n <button\n type=\"button\"\n data-select-trigger\n [id]=\"editable() ? null : inputId()\"\n [disabled]=\"disabled() || loading()\"\n (click)=\"toggleOpen()\"\n [class]=\"triggerClass()\"\n [attr.aria-haspopup]=\"'listbox'\"\n [attr.aria-expanded]=\"open()\"\n >\n @if (editable()) {\n <input\n type=\"text\"\n [id]=\"inputId()\"\n class=\"flex-1 min-w-0 bg-transparent focus:outline-none truncate\"\n [placeholder]=\"placeholder()\"\n [value]=\"editableText()\"\n (input)=\"onEditableInput($any($event.target).value)\"\n (click)=\"$event.stopPropagation()\"\n />\n } @else if (selectedItemTpl() && selectedOption() != null) {\n <span class=\"flex-1 min-w-0 truncate text-left\">\n <ng-container [ngTemplateOutlet]=\"selectedItemTpl()\" [ngTemplateOutletContext]=\"{ $implicit: selectedOption() }\" />\n </span>\n } @else {\n <span data-select-label class=\"flex-1 min-w-0 truncate text-left\" [class.text-(--f-form-field-placeholder-color)]=\"!selectedLabel()\">{{ selectedLabel() || placeholder() }}</span>\n }\n <span class=\"flex items-center gap-1 shrink-0\">\n @if (showClear() && value() != null && !disabled()) {\n <ui-icon name=\"x\" class=\"text-xs text-(--f-form-field-placeholder-color) hover:text-(--f-text-color) shrink-0\" (click)=\"clear($event)\"></ui-icon>\n }\n @if (loading()) {\n <ui-icon name=\"loader-circle\" [spin]=\"true\" class=\"text-xs text-(--f-form-field-placeholder-color) shrink-0\"></ui-icon>\n } @else {\n <ui-icon name=\"chevron-down\" class=\"text-xs text-(--f-form-field-placeholder-color) transition-transform duration-[var(--f-transition-duration)] shrink-0\" [class.rotate-180]=\"open()\"></ui-icon>\n }\n </span>\n </button>\n\n @if (open()) {\n <div class=\"absolute z-50 w-full mt-1 bg-(--f-overlay-popover-background) border border-(--f-content-border-color) rounded-lg shadow-lg overflow-hidden\">\n @if (filter()) {\n <div class=\"p-2 border-b border-(--f-content-border-color)\">\n <div class=\"flex items-center gap-2 px-2 py-1.5 bg-(--f-content-hover-background) rounded-lg border border-(--f-content-border-color)\">\n <ui-icon name=\"search\" class=\"text-xs text-(--f-text-muted-color) shrink-0\"></ui-icon>\n <input\n type=\"text\"\n class=\"flex-1 text-sm bg-transparent focus:outline-none text-(--f-text-color) placeholder:text-(--f-form-field-placeholder-color)\"\n placeholder=\"Search...\"\n [value]=\"filterText()\"\n (input)=\"setFilter($any($event.target).value)\"\n (click)=\"$event.stopPropagation()\"\n />\n </div>\n </div>\n }\n <div data-select-list class=\"max-h-56 overflow-auto py-1\">\n @for (opt of filteredOptions(); track getOptionValue(opt)) {\n <button\n type=\"button\"\n class=\"w-full text-left px-3 py-2 text-sm flex items-center gap-2 transition-colors cursor-pointer\"\n [class]=\"getOptionValue(opt) === value() ? 'bg-(--f-highlight-background) text-(--f-highlight-color)' : 'text-(--f-text-color) hover:bg-(--f-content-hover-background)'\"\n (click)=\"selectOption(opt)\"\n >\n <span class=\"flex-1 truncate\">\n @if (itemTpl()) {\n <ng-container [ngTemplateOutlet]=\"itemTpl()\" [ngTemplateOutletContext]=\"{ $implicit: opt }\" />\n } @else {\n {{ getOptionLabel(opt) }}\n }\n </span>\n @if (getOptionValue(opt) === value()) {\n <ui-icon name=\"check\" class=\"text-xs shrink-0\"></ui-icon>\n }\n </button>\n }\n @empty {\n <div class=\"py-6 flex flex-col items-center gap-2\">\n <ui-icon name=\"inbox\" class=\"text-2xl text-(--f-text-muted-color)\"></ui-icon>\n <span class=\"text-sm text-(--f-text-muted-color)\">No options</span>\n </div>\n }\n </div>\n </div>\n }\n </div>\n `,\n})\nexport class SelectComponent implements ControlValueAccessor {\n private readonly _el = inject(ElementRef);\n\n onDocumentClick(e: MouseEvent): void {\n if (this.open() && !this._el.nativeElement.contains(e.target)) {\n this._open.set(false);\n this._onTouched();\n this.onHide.emit();\n this.onBlur.emit();\n }\n }\n readonly options = input<unknown[]>([]);\n readonly optionLabel = input<string>('label');\n readonly optionValue = input<string>('value');\n readonly placeholder = input<string>('Select');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly filter = input(false, { transform: booleanAttribute });\n readonly showClear = input(false, { transform: booleanAttribute });\n readonly loading = input(false, { transform: booleanAttribute });\n readonly inputId = input<string>('');\n readonly invalid = input(false, { transform: booleanAttribute });\n // Overwritten with the field's touch state when bound via signal forms [formField]\n readonly touched = input(true);\n readonly styleClass = input<string>('');\n readonly editable = input(false, { transform: booleanAttribute });\n\n readonly hostClass = computed(() => `block w-full ${this.styleClass()}`);\n\n readonly onFilter = output<{ filter: string }>();\n readonly onChange = output<unknown>();\n readonly onShow = output<void>();\n readonly onHide = output<void>();\n readonly onBlur = output<void>();\n\n private readonly _value = signal<unknown>(null);\n readonly value = this._value.asReadonly();\n private readonly _open = signal(false);\n readonly open = this._open.asReadonly();\n private readonly _filterText = signal('');\n readonly filterText = this._filterText.asReadonly();\n\n readonly selectedItemRef = contentChild<TemplateRef<unknown>>('selectedItem');\n readonly itemRef = contentChild<TemplateRef<unknown>>('item');\n readonly fTemplates = contentChildren(FTemplateDirective);\n\n readonly selectedItemTpl = computed<TemplateRef<unknown> | null>(() =>\n this.selectedItemRef()\n ?? this.fTemplates().find(t => t.fTemplate() === 'selectedItem')?.templateRef\n ?? null,\n );\n readonly itemTpl = computed<TemplateRef<unknown> | null>(() =>\n this.itemRef()\n ?? this.fTemplates().find(t => t.fTemplate() === 'item')?.templateRef\n ?? null,\n );\n\n private _onChange: (v: unknown) => void = () => {};\n private _onTouched: () => void = () => {};\n\n setFilter(v: string): void {\n this._filterText.set(v);\n this.onFilter.emit({ filter: v });\n }\n\n readonly filteredOptions = computed(() => {\n const opts = this.options() as Record<string, unknown>[];\n const q = this.filterText().toLowerCase();\n if (!q) return opts;\n return opts.filter(o => String(o[this.optionLabel()] ?? '').toLowerCase().includes(q));\n });\n\n readonly selectedLabel = computed(() => {\n const v = this.value();\n if (v == null) return '';\n const opts = this.options() as Record<string, unknown>[];\n const found = opts.find(o => o[this.optionValue()] === v);\n return found ? String(found[this.optionLabel()] ?? '') : String(v);\n });\n\n readonly triggerClass = computed(() => {\n const base = 'w-full flex items-center justify-between px-3 py-2 text-sm rounded-lg border bg-(--f-form-field-background) text-(--f-form-field-color) focus:outline-none focus-visible:ring-focus transition-all duration-[var(--f-transition-duration)]';\n const showInvalid = this.invalid() && this.touched();\n const stateClass = this.open()\n ? (showInvalid ? 'border-red-400' : 'border-primary')\n : (showInvalid ? 'border-red-400 hover:border-red-300' : 'border-(--f-form-field-border-color) hover:border-(--f-form-field-hover-border-color)');\n const disabledClass = this.disabled() ? 'opacity-60 cursor-not-allowed' : 'cursor-pointer';\n return `${base} ${stateClass} ${disabledClass}`;\n });\n\n readonly selectedOption = computed(() => {\n const v = this.value();\n if (v == null) return null;\n return (this.options() as Record<string, unknown>[]).find(o => o[this.optionValue()] === v) ?? null;\n });\n\n getOptionLabel(opt: unknown): string {\n if (opt === null || opt === undefined) return '';\n if (typeof opt !== 'object') return String(opt);\n return String((opt as Record<string, unknown>)[this.optionLabel()] ?? '');\n }\n\n getOptionValue(opt: unknown): unknown {\n if (opt === null || opt === undefined) return opt;\n if (typeof opt !== 'object') return opt;\n return (opt as Record<string, unknown>)[this.optionValue()];\n }\n\n private readonly _editableOverride = signal<string | null>(null);\n readonly editableText = computed(() => this._editableOverride() ?? this.selectedLabel());\n\n onEditableInput(text: string): void {\n this._editableOverride.set(text);\n const opts = this.options() as Record<string, unknown>[];\n const match = opts.find(o => String(o[this.optionLabel()] ?? '') === text);\n const v = match ? match[this.optionValue()] : text;\n this._value.set(v);\n this._onChange(v);\n this.onChange.emit(v);\n }\n\n clear(event: Event): void {\n event.stopPropagation();\n this._editableOverride.set(null);\n this._value.set(null);\n this._onChange(null);\n this._onTouched();\n this.onChange.emit(null);\n }\n\n toggleOpen(): void {\n if (this.disabled() || this.loading()) return;\n this._open.update(v => !v);\n if (this.open()) {\n this.onShow.emit();\n } else {\n this._onTouched();\n this.onHide.emit();\n this.onBlur.emit();\n }\n }\n\n selectOption(opt: unknown): void {\n const v = this.getOptionValue(opt);\n this._editableOverride.set(null);\n this._value.set(v);\n this._onChange(v);\n this._onTouched();\n this._open.set(false);\n this.onChange.emit(v);\n }\n\n writeValue(val: unknown): void { this._value.set(val); }\n registerOnChange(fn: (v: unknown) => void): void { this._onChange = fn; }\n registerOnTouched(fn: () => void): void { this._onTouched = fn; }\n setDisabledState(): void {}\n}\n","import { booleanAttribute, Component, forwardRef, input, output, signal } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\n@Component({\n selector: 'f-selectbutton',\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SelectButtonComponent), multi: true }],\n template: `\n <div class=\"f-selectbutton\" [class.f-selectbutton-sm]=\"size() === 'small'\">\n @for (opt of options(); track getOptionValue(opt)) {\n <button\n type=\"button\"\n class=\"f-selectbutton-item\"\n [class.f-selectbutton-item-checked]=\"isSelected(opt)\"\n [disabled]=\"disabled()\"\n (click)=\"select(opt)\"\n >{{ getOptionLabel(opt) }}</button>\n }\n </div>\n `,\n styles: [`\n .f-selectbutton {\n display: inline-flex;\n align-items: stretch;\n background: var(--f-selectbutton-background);\n border: 1px solid var(--f-selectbutton-border-color);\n border-radius: var(--f-border-radius-md);\n padding: var(--f-selectbutton-padding);\n overflow: hidden;\n }\n .f-selectbutton-item {\n border: 0;\n border-inline-start: 1px solid var(--f-selectbutton-divider-color);\n border-radius: var(--f-selectbutton-item-border-radius);\n background: transparent;\n color: var(--f-selectbutton-item-color);\n font-weight: var(--f-selectbutton-font-weight);\n font-size: 0.875rem;\n padding: 0.45rem 0.875rem;\n cursor: pointer;\n transition:\n background-color var(--f-transition-duration),\n color var(--f-transition-duration),\n box-shadow var(--f-transition-duration);\n }\n .f-selectbutton-item:first-child {\n border-inline-start: 0;\n }\n .f-selectbutton-item:not(.f-selectbutton-item-checked):hover:not(:disabled) {\n color: var(--f-text-color);\n background: var(--f-selectbutton-item-hover-background);\n }\n .f-selectbutton-item-checked {\n background: var(--f-selectbutton-checked-background);\n color: var(--f-selectbutton-checked-color);\n box-shadow: var(--f-selectbutton-checked-shadow);\n }\n .f-selectbutton-item:disabled {\n opacity: 0.6;\n cursor: default;\n }\n .f-selectbutton-sm .f-selectbutton-item {\n font-size: 0.8125rem;\n padding: 0.3rem 0.7rem;\n }\n `],\n})\nexport class SelectButtonComponent implements ControlValueAccessor {\n readonly options = input<unknown[]>([]);\n readonly optionLabel = input<string>('label');\n readonly optionValue = input<string>('value');\n readonly multiple = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly allowEmpty = input(true, { transform: booleanAttribute });\n readonly size = input<string>('');\n\n readonly onChange = output<{ value: unknown }>();\n\n private _value = signal<unknown>(null);\n private _values = signal<unknown[]>([]);\n private _onChange: (v: unknown) => void = () => {};\n private _onTouched: () => void = () => {};\n\n getOptionLabel(opt: unknown): string {\n if (opt === null || opt === undefined) return '';\n if (typeof opt !== 'object') return String(opt);\n return String((opt as Record<string, unknown>)[this.optionLabel()] ?? '');\n }\n\n getOptionValue(opt: unknown): unknown {\n if (opt === null || opt === undefined) return opt;\n if (typeof opt !== 'object') return opt;\n return (opt as Record<string, unknown>)[this.optionValue()];\n }\n\n isSelected(opt: unknown): boolean {\n const v = this.getOptionValue(opt);\n return this.multiple() ? this._values().includes(v) : this._value() === v;\n }\n\n select(opt: unknown): void {\n if (this.disabled()) return;\n const v = this.getOptionValue(opt);\n if (this.multiple()) {\n const cur = this._values();\n const deselecting = cur.includes(v);\n if (deselecting && !this.allowEmpty() && cur.length <= 1) return;\n const next = deselecting ? cur.filter(x => x !== v) : [...cur, v];\n this._values.set(next);\n this._onChange(next);\n } else {\n const deselecting = this._value() === v;\n if (deselecting && !this.allowEmpty()) return;\n this._value.set(deselecting ? null : v);\n this._onChange(deselecting ? null : v);\n }\n this._onTouched();\n this.onChange.emit({ value: this.multiple() ? this._values() : this._value() });\n }\n\n writeValue(v: unknown): void {\n if (this.multiple()) this._values.set(Array.isArray(v) ? v : []);\n else this._value.set(v);\n }\n registerOnChange(fn: (v: unknown) => void): void { this._onChange = fn; }\n registerOnTouched(fn: () => void): void { this._onTouched = fn; }\n setDisabledState(): void {}\n}\n","import { booleanAttribute, computed, Directive, input } from '@angular/core';\n\n@Directive({\n selector: '[fTextarea]',\n host: { '[class]': 'classes()' },\n})\nexport class TextareaDirective {\n readonly invalid = input(false, { transform: booleanAttribute });\n // Overwritten with the field's touch state when bound via signal forms [formField]\n readonly touched = input(true);\n\n readonly classes = computed(() => {\n const stateClass = this.invalid() && this.touched()\n ? 'border-red-400 focus:border-red-400'\n : 'border-(--f-form-field-border-color) focus:border-primary';\n return [\n 'block w-full px-3 py-2 text-sm rounded-lg border',\n 'bg-(--f-form-field-background) text-(--f-form-field-color) placeholder:text-(--f-form-field-placeholder-color)',\n 'focus:outline-none focus:ring-focus',\n 'disabled:opacity-60 disabled:cursor-not-allowed resize-y min-h-20',\n 'transition-colors duration-[var(--f-transition-duration)]',\n stateClass,\n ].join(' ');\n });\n}\n","import { booleanAttribute, Component, computed, forwardRef, input, signal } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\n@Component({\n selector: 'f-togglebutton',\n imports: [UiIconComponent],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => ToggleButtonComponent), multi: true }],\n template: `\n <button\n type=\"button\"\n [class]=\"buttonClass()\"\n [disabled]=\"disabled()\"\n [attr.aria-pressed]=\"checked()\"\n role=\"switch\"\n (click)=\"toggle()\"\n >\n @if (checked() && onIcon()) { <ui-icon [name]=\"onIcon()\" class=\"text-sm\"></ui-icon> }\n @if (!checked() && offIcon()) { <ui-icon [name]=\"offIcon()\" class=\"text-sm\"></ui-icon> }\n <span class=\"leading-none\">{{ checked() ? onLabel() : offLabel() }}</span>\n </button>\n `,\n})\nexport class ToggleButtonComponent implements ControlValueAccessor {\n readonly onLabel = input<string>('Yes');\n readonly offLabel = input<string>('No');\n readonly onIcon = input<string>('');\n readonly offIcon = input<string>('');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n\n private readonly _checked = signal(false);\n readonly checked = this._checked.asReadonly();\n private _onChange: (v: boolean) => void = () => {};\n private _onTouched: () => void = () => {};\n\n readonly buttonClass = computed(() => {\n const base = 'inline-flex items-center gap-2 px-3 py-2 text-sm rounded-lg border transition-colors duration-[var(--f-transition-duration)] focus:outline-none focus-visible:ring-focus cursor-pointer disabled:opacity-60 disabled:cursor-not-allowed';\n if (this.checked()) return `${base} bg-primary text-primary-contrast border-primary`;\n const borderClass = this.invalid() ? 'border-red-400' : 'border-(--f-form-field-border-color)';\n return `${base} bg-(--f-form-field-background) text-(--f-text-color) ${borderClass} hover:bg-(--f-content-hover-background)`;\n });\n\n toggle(): void {\n if (this.disabled()) return;\n const v = !this.checked();\n this._checked.set(v);\n this._onChange(v);\n this._onTouched();\n }\n\n writeValue(v: boolean): void { this._checked.set(!!v); }\n registerOnChange(fn: (v: boolean) => void): void { this._onChange = fn; }\n registerOnTouched(fn: () => void): void { this._onTouched = fn; }\n setDisabledState(): void {}\n}\n","import { booleanAttribute, Component, computed, forwardRef, input, signal } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\n@Component({\n selector: 'f-toggleswitch',\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => ToggleSwitchComponent), multi: true }],\n template: `\n <button\n type=\"button\"\n role=\"switch\"\n [id]=\"inputId()\"\n [attr.aria-checked]=\"checked()\"\n [disabled]=\"isDisabled() || readonly()\"\n [attr.aria-label]=\"ariaLabel() || null\"\n (click)=\"toggle()\"\n [class]=\"trackClass()\"\n >\n <span [class]=\"thumbClass()\"></span>\n </button>\n `,\n})\nexport class ToggleSwitchComponent implements ControlValueAccessor {\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly readonly = input(false, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly ariaLabel = input<string>('');\n readonly trueValue = input<unknown>(true);\n readonly falseValue = input<unknown>(false);\n readonly inputId = input<string>('');\n private readonly _checked = signal(false);\n readonly checked = this._checked.asReadonly();\n\n private readonly _formDisabled = signal(false);\n readonly isDisabled = computed(() => this.disabled() || this._formDisabled());\n\n private _onChange: (v: unknown) => void = () => {};\n private _onTouched: () => void = () => {};\n\n readonly trackClass = computed(() => {\n const base = 'relative inline-flex items-center cursor-pointer h-6 w-11 shrink-0 rounded-full border-2 transition-colors duration-[var(--f-transition-duration)] ease-in-out focus:outline-none focus-visible:ring-focus disabled:opacity-60 disabled:cursor-not-allowed';\n const borderClass = this.invalid() ? 'border-red-400' : 'border-transparent';\n return `${base} ${borderClass} ${this.checked() ? 'bg-primary' : 'bg-(--f-form-field-border-color)'}`;\n });\n\n readonly thumbClass = computed(() => {\n const base = 'pointer-events-none block h-4 w-4 rounded-full bg-white shadow transform transition duration-200 ease-in-out ring-0';\n return `${base} ${this.checked() ? 'translate-x-6' : 'translate-x-0.5'}`;\n });\n\n toggle(): void {\n if (this.isDisabled() || this.readonly()) return;\n const v = !this.checked();\n this._checked.set(v);\n this._onChange(v ? this.trueValue() : this.falseValue());\n this._onTouched();\n }\n\n writeValue(val: unknown): void { this._checked.set(val === this.trueValue()); }\n registerOnChange(fn: (v: unknown) => void): void { this._onChange = fn; }\n registerOnTouched(fn: () => void): void { this._onTouched = fn; }\n setDisabledState(isDisabled: boolean): void { this._formDisabled.set(isDisabled); }\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n contentChild,\n contentChildren,\n effect,\n inject,\n input,\n model,\n output,\n signal,\n TemplateRef,\n} from '@angular/core';\nimport { DOCUMENT, NgTemplateOutlet } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { fromEvent } from 'rxjs';\nimport { FTemplateDirective } from '../shared/ftemplate.directive';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\nconst CLOSE_ANIMATION_MS = 180;\n\n@Component({\n selector: 'f-dialog',\n imports: [NgTemplateOutlet, UiIconComponent],\n styles: [`\n @keyframes dialog-backdrop-in { from { opacity: 0; } to { opacity: 1; } }\n @keyframes dialog-backdrop-out { from { opacity: 1; } to { opacity: 0; } }\n @keyframes dialog-panel-in { from { opacity: 0; transform: scale(0.95) translateY(-8px); } to { opacity: 1; transform: scale(1) translateY(0); } }\n @keyframes dialog-panel-out { from { opacity: 1; transform: scale(1) translateY(0); } to { opacity: 0; transform: scale(0.95) translateY(-8px); } }\n .dialog-backdrop { animation: dialog-backdrop-in 0.15s ease-out; }\n .dialog-backdrop.closing { animation: dialog-backdrop-out ${CLOSE_ANIMATION_MS}ms ease-in forwards; }\n .dialog-panel { animation: dialog-panel-in 0.22s cubic-bezier(0.16, 1, 0.3, 1); }\n .dialog-panel.closing { animation: dialog-panel-out ${CLOSE_ANIMATION_MS}ms cubic-bezier(0.4, 0, 1, 1) forwards; }\n .dialog-resize-handle { position: absolute; right: 0; bottom: 0; width: 1rem; height: 1rem; cursor: nwse-resize; }\n `],\n template: `\n @if (rendered()) {\n <div class=\"fixed inset-0 z-40 flex items-center justify-center p-4\" [class.pointer-events-none]=\"!modal()\">\n @if (modal()) {\n <div\n class=\"dialog-backdrop absolute inset-0 bg-black/50 backdrop-blur-[2px]\"\n [class.closing]=\"closing()\"\n (click)=\"dismissableMask() && close()\"\n ></div>\n }\n <div\n class=\"dialog-panel relative bg-(--f-overlay-popover-background) rounded-2xl shadow-2xl flex flex-col max-h-[90vh] overflow-hidden max-w-[calc(100vw-2rem)] pointer-events-auto\"\n [class.closing]=\"closing()\"\n [style]=\"panelStyle()\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-labelledby]=\"header() ? headerId : null\"\n >\n @if (header() || closable()) {\n <div class=\"flex items-center justify-between px-6 py-4 border-b border-(--f-content-border-color) shrink-0\">\n <h2 [id]=\"headerId\" class=\"text-base font-semibold text-(--f-text-color) tracking-tight\">{{ header() }}</h2>\n @if (closable()) {\n <button\n type=\"button\"\n aria-label=\"Close\"\n class=\"w-7 h-7 flex items-center justify-center rounded-lg cursor-pointer text-(--f-text-muted-color) hover:text-(--f-text-hover-color) hover:bg-(--f-content-hover-background) transition-all duration-[var(--f-transition-duration)] focus-visible:outline-none focus-visible:ring-focus\"\n (click)=\"close()\"\n >\n <ui-icon name=\"times\" class=\"text-xs\"></ui-icon>\n </button>\n }\n </div>\n }\n <div class=\"px-6 py-5 overflow-y-auto flex-1\">\n <ng-content />\n </div>\n @if (resolvedFooter()) {\n <div class=\"px-6 py-4 border-t border-(--f-content-border-color) shrink-0 flex items-center justify-end gap-2 bg-(--f-content-hover-background)/50\">\n <ng-container [ngTemplateOutlet]=\"resolvedFooter()\" />\n </div>\n }\n @if (resizable()) {\n <div class=\"dialog-resize-handle\" (pointerdown)=\"onResizeStart($event)\"></div>\n }\n </div>\n </div>\n }\n `,\n})\nexport class DialogComponent {\n private static idCounter = 0;\n private readonly _doc = inject(DOCUMENT);\n protected readonly headerId = `f-dialog-header-${++DialogComponent.idCounter}`;\n\n readonly header = input<string>('');\n readonly visible = model<boolean>(false);\n readonly modal = input(true, { transform: booleanAttribute });\n readonly closable = input(true, { transform: booleanAttribute });\n readonly dismissableMask = input(false, { transform: booleanAttribute });\n readonly resizable = input(true, { transform: booleanAttribute });\n readonly style = input<Record<string, string> | null>(null);\n readonly breakpoints = input<Record<string, string> | null>(null);\n\n private readonly _resizedSize = signal<{ width: string; height: string } | null>(null);\n private readonly _windowWidth = signal(\n typeof window !== 'undefined' ? window.innerWidth : Number.POSITIVE_INFINITY,\n );\n\n private readonly breakpointWidth = computed<string | null>(() => {\n const bp = this.breakpoints();\n if (!bp) return null;\n const width = this._windowWidth();\n const match = Object.entries(bp)\n .map(([key, value]) => [parseInt(key, 10), value] as const)\n .filter(([px]) => !Number.isNaN(px))\n .sort((a, b) => a[0] - b[0])\n .find(([px]) => width <= px);\n return match ? match[1] : null;\n });\n\n readonly panelStyle = computed<Record<string, string>>(() => ({\n width: '32rem',\n ...this.style(),\n ...(this.breakpointWidth() ? { width: this.breakpointWidth()! } : {}),\n ...(this._resizedSize() ?? {}),\n }));\n\n readonly onShow = output<void>();\n readonly onHide = output<void>();\n\n readonly footerRef = contentChild<TemplateRef<unknown>>('footer');\n readonly fTemplates = contentChildren(FTemplateDirective);\n\n readonly resolvedFooter = computed<TemplateRef<unknown> | null>(() => {\n if (this.footerRef()) {\n return this.footerRef() ?? null;\n }\n const tpl = this.fTemplates().find(t => t.fTemplate() === 'footer');\n return tpl?.templateRef ?? null;\n });\n\n private readonly _rendered = signal(false);\n readonly rendered = this._rendered.asReadonly();\n private readonly _closing = signal(false);\n readonly closing = this._closing.asReadonly();\n\n constructor() {\n if (typeof window !== 'undefined') {\n fromEvent(window, 'resize')\n .pipe(takeUntilDestroyed())\n .subscribe(() => this._windowWidth.set(window.innerWidth));\n }\n\n effect(() => {\n const visible = this.visible();\n if (visible) {\n this._closing.set(false);\n this._rendered.set(true);\n if (this.modal()) this._doc.body.style.overflow = 'hidden';\n this.onShow.emit();\n } else if (this._rendered()) {\n this._closing.set(true);\n if (this.modal()) this._doc.body.style.overflow = '';\n setTimeout(() => {\n this._rendered.set(false);\n this._closing.set(false);\n }, CLOSE_ANIMATION_MS);\n }\n });\n }\n\n close(): void {\n this.visible.set(false);\n this.onHide.emit();\n }\n\n onResizeStart(event: PointerEvent): void {\n event.preventDefault();\n const target = event.currentTarget as HTMLElement;\n const panel = target.parentElement as HTMLElement;\n const startWidth = panel.offsetWidth;\n const startHeight = panel.offsetHeight;\n const startX = event.clientX;\n const startY = event.clientY;\n\n const onMove = (e: PointerEvent): void => {\n const width = Math.max(240, startWidth + (e.clientX - startX));\n const height = Math.max(160, startHeight + (e.clientY - startY));\n this._resizedSize.set({\n width: `${Math.min(width, window.innerWidth - 32)}px`,\n height: `${Math.min(height, window.innerHeight - 32)}px`,\n });\n };\n const onUp = (): void => {\n document.removeEventListener('pointermove', onMove);\n document.removeEventListener('pointerup', onUp);\n };\n document.addEventListener('pointermove', onMove);\n document.addEventListener('pointerup', onUp);\n }\n}\n","import { booleanAttribute, Component, computed, effect, input, model, output, signal } from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\nconst CLOSE_ANIMATION_MS = 200;\n\n@Component({\n selector: 'f-drawer',\n imports: [UiIconComponent],\n host: { '(document:keydown.escape)': 'onEscape()' },\n styles: [`\n @keyframes slide-from-right { from { transform: translateX(100%); } to { transform: translateX(0); } }\n @keyframes slide-from-left { from { transform: translateX(-100%); } to { transform: translateX(0); } }\n @keyframes slide-from-top { from { transform: translateY(-100%); } to { transform: translateY(0); } }\n @keyframes slide-from-bottom { from { transform: translateY(100%); } to { transform: translateY(0); } }\n @keyframes backdrop-in { from { opacity: 0; } to { opacity: 1; } }\n @keyframes backdrop-out { from { opacity: 1; } to { opacity: 0; } }\n .drawer-right { animation: slide-from-right 0.25s cubic-bezier(0.16, 1, 0.3, 1); }\n .drawer-left { animation: slide-from-left 0.25s cubic-bezier(0.16, 1, 0.3, 1); }\n .drawer-top { animation: slide-from-top 0.25s cubic-bezier(0.16, 1, 0.3, 1); }\n .drawer-bottom { animation: slide-from-bottom 0.25s cubic-bezier(0.16, 1, 0.3, 1); }\n .drawer-right.closing { animation: slide-from-right ${CLOSE_ANIMATION_MS}ms cubic-bezier(0.4, 0, 1, 1) reverse forwards; }\n .drawer-left.closing { animation: slide-from-left ${CLOSE_ANIMATION_MS}ms cubic-bezier(0.4, 0, 1, 1) reverse forwards; }\n .drawer-top.closing { animation: slide-from-top ${CLOSE_ANIMATION_MS}ms cubic-bezier(0.4, 0, 1, 1) reverse forwards; }\n .drawer-bottom.closing { animation: slide-from-bottom ${CLOSE_ANIMATION_MS}ms cubic-bezier(0.4, 0, 1, 1) reverse forwards; }\n .drawer-backdrop { animation: backdrop-in 0.15s ease-out; }\n .drawer-backdrop.closing { animation: backdrop-out ${CLOSE_ANIMATION_MS}ms ease-in forwards; }\n `],\n template: `\n @if (rendered()) {\n <div class=\"fixed inset-0 z-40 flex\" [class.pointer-events-none]=\"!modal()\">\n @if (modal()) {\n <div class=\"drawer-backdrop absolute inset-0 bg-black/50 backdrop-blur-[2px]\" [class.closing]=\"closing()\" (click)=\"close()\"></div>\n }\n <div [class]=\"panelClass()\" [class.closing]=\"closing()\" role=\"complementary\" [attr.aria-modal]=\"modal() ? 'true' : null\">\n <div class=\"flex items-center justify-between px-6 py-4 border-b border-(--f-content-border-color) shrink-0\">\n <h2 class=\"text-base font-semibold text-(--f-text-color) tracking-tight\">{{ header() }}</h2>\n @if (closable()) {\n <button\n type=\"button\"\n aria-label=\"Close\"\n class=\"w-7 h-7 flex items-center justify-center rounded-lg text-(--f-text-muted-color) hover:text-(--f-text-hover-color) hover:bg-(--f-content-hover-background) transition-all duration-[var(--f-transition-duration)] cursor-pointer\"\n (click)=\"close()\"\n >\n <ui-icon name=\"times\" class=\"text-xs\"></ui-icon>\n </button>\n }\n </div>\n <div class=\"p-6 flex-1 overflow-y-auto pointer-events-auto\">\n <ng-content />\n </div>\n </div>\n </div>\n }\n `,\n})\nexport class DrawerComponent {\n readonly header = input<string>('');\n readonly visible = model<boolean>(false);\n readonly position = input<'left' | 'right' | 'top' | 'bottom'>('right');\n readonly fullScreen = input(false, { transform: booleanAttribute });\n readonly modal = input(true, { transform: booleanAttribute });\n readonly closable = input(true, { transform: booleanAttribute });\n readonly closeOnEscape = input(true, { transform: booleanAttribute });\n\n readonly onHide = output<void>();\n\n readonly panelClass = computed(() => {\n const pos = this.position();\n const full = this.fullScreen();\n const sizeClass = full ? 'w-full' : 'w-80';\n const base = 'relative bg-(--f-overlay-popover-background) shadow-lg flex flex-col h-full overflow-y-auto pointer-events-auto';\n const posMap: Record<string, string> = {\n right: `${base} ml-auto ${sizeClass} drawer-right`,\n left: `${base} mr-auto ${sizeClass} drawer-left`,\n top: `${base} w-full h-64 mb-auto drawer-top`,\n bottom: `${base} w-full h-64 mt-auto drawer-bottom`,\n };\n return posMap[pos] ?? posMap['right'];\n });\n\n private readonly _rendered = signal(false);\n readonly rendered = this._rendered.asReadonly();\n private readonly _closing = signal(false);\n readonly closing = this._closing.asReadonly();\n\n constructor() {\n effect(() => {\n if (this.visible()) {\n this._closing.set(false);\n this._rendered.set(true);\n } else if (this._rendered()) {\n this._closing.set(true);\n setTimeout(() => {\n this._rendered.set(false);\n this._closing.set(false);\n }, CLOSE_ANIMATION_MS);\n }\n });\n }\n\n onEscape(): void {\n if (this.visible() && this.closeOnEscape()) this.close();\n }\n\n close(): void {\n this.visible.set(false);\n this.onHide.emit();\n }\n}\n","import { booleanAttribute, Component, ElementRef, input, signal, viewChild } from '@angular/core';\n\n@Component({\n selector: 'f-popover',\n host: { '(document:click)': 'onDocumentClick($event)' },\n styles: [`\n @keyframes popover-in { from { opacity: 0; transform: scale(0.95) translateY(-4px); } to { opacity: 1; transform: scale(1) translateY(0); } }\n .popover-panel { animation: popover-in 0.15s cubic-bezier(0.16, 1, 0.3, 1); transform-origin: top; }\n `],\n template: `\n @if (visible()) {\n <div\n #panel\n class=\"popover-panel fixed z-50 bg-(--f-overlay-popover-background) border border-(--f-content-border-color) rounded-lg shadow-lg min-w-48 max-w-sm\"\n [style.top.px]=\"top()\"\n [style.left.px]=\"left()\"\n (click)=\"$event.stopPropagation()\"\n >\n <ng-content />\n </div>\n }\n `,\n})\nexport class PopoverComponent {\n readonly dismissable = input(true, { transform: booleanAttribute });\n\n private readonly _visible = signal(false);\n readonly visible = this._visible.asReadonly();\n private readonly _top = signal(0);\n readonly top = this._top.asReadonly();\n private readonly _left = signal(0);\n readonly left = this._left.asReadonly();\n\n private readonly panelRef = viewChild<ElementRef<HTMLElement>>('panel');\n\n private _anchor: HTMLElement | null = null;\n\n toggle(event: Event): void {\n this._anchor = event.target as HTMLElement;\n if (this.visible()) { this.hide(); return; }\n this.position();\n this._visible.set(true);\n setTimeout(() => this.adjustForViewport(), 0);\n }\n\n show(event: Event): void {\n this._anchor = event.target as HTMLElement;\n this.position();\n this._visible.set(true);\n setTimeout(() => this.adjustForViewport(), 0);\n }\n\n hide(): void { this._visible.set(false); }\n\n private position(): void {\n if (!this._anchor) return;\n const rect = this._anchor.getBoundingClientRect();\n const gap = 6;\n let top = rect.bottom + gap;\n let left = rect.left;\n if (typeof window !== 'undefined') {\n left = Math.min(left, window.innerWidth - 200 - 8);\n }\n this._top.set(top);\n this._left.set(Math.max(8, left));\n }\n\n private adjustForViewport(): void {\n const panelEl = this.panelRef()?.nativeElement;\n if (!panelEl || !this._anchor || typeof window === 'undefined') return;\n const anchorRect = this._anchor.getBoundingClientRect();\n const panelRect = panelEl.getBoundingClientRect();\n const gap = 6;\n if (anchorRect.bottom + panelRect.height + gap > window.innerHeight) {\n this._top.set(Math.max(8, anchorRect.top - panelRect.height - gap));\n }\n }\n\n onDocumentClick(e: Event): void {\n if (this.dismissable() && this.visible() && !this._anchor?.contains(e.target as Node)) {\n this.hide();\n }\n }\n}\n","import { Component, contentChild, input, TemplateRef } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'f-card',\n imports: [NgTemplateOutlet],\n host: { '[class]': 'styleClass()' },\n template: `\n <div class=\"bg-(--f-content-background) rounded-[var(--f-card-border-radius)] shadow-[var(--f-card-shadow)] border border-(--f-content-border-color) overflow-hidden\">\n @if (headerTemplate() || header()) {\n <div class=\"border-b border-(--f-content-border-color) bg-(--f-content-background)/80\">\n @if (headerTemplate()) {\n <ng-container [ngTemplateOutlet]=\"headerTemplate()\" />\n } @else {\n <div class=\"p-(--f-card-padding)\">\n <h3 class=\"text-sm font-semibold text-(--f-text-color) tracking-tight\">{{ header() }}</h3>\n @if (subheader()) {\n <p class=\"text-xs text-(--f-text-muted-color) mt-(--f-card-gap) leading-relaxed\">{{ subheader() }}</p>\n }\n </div>\n }\n </div>\n }\n <div class=\"p-(--f-card-padding) flex flex-col gap-(--f-card-gap)\">\n <ng-content />\n </div>\n @if (footerTemplate()) {\n <div class=\"p-(--f-card-padding) border-t border-(--f-content-border-color) bg-(--f-content-hover-background)/50\">\n <ng-container [ngTemplateOutlet]=\"footerTemplate()\" />\n </div>\n }\n </div>\n `,\n})\nexport class CardComponent {\n readonly header = input<string>('');\n readonly subheader = input<string>('');\n readonly styleClass = input<string>('');\n\n readonly headerTemplate = contentChild<TemplateRef<unknown>>('header');\n readonly footerTemplate = contentChild<TemplateRef<unknown>>('footer');\n}\n","import { booleanAttribute, Component, input, model } from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\n@Component({\n selector: 'f-panel',\n imports: [UiIconComponent],\n template: `\n <div class=\"border border-(--f-content-border-color) rounded-lg overflow-hidden shadow-sm\">\n <div class=\"flex items-center justify-between px-5 py-3.5 bg-(--f-content-hover-background)/80 border-b border-(--f-content-border-color)\">\n <span class=\"font-semibold text-(--f-text-color) text-sm tracking-tight\">{{ header() }}</span>\n @if (toggleable()) {\n <button\n type=\"button\"\n class=\"w-6 h-6 flex items-center justify-center rounded-md text-(--f-text-muted-color) hover:text-(--f-text-hover-color) hover:bg-(--f-content-border-color)/70 transition-all duration-[var(--f-transition-duration)] focus:outline-none focus-visible:ring-focus cursor-pointer\"\n (click)=\"toggleCollapsed()\"\n >\n <ui-icon [name]=\"collapsed() ? 'chevron-down' : 'chevron-up'\" class=\"text-xs transition-transform duration-[var(--f-transition-duration)]\"></ui-icon>\n </button>\n }\n </div>\n @if (!collapsed()) {\n <div class=\"p-5\">\n <ng-content />\n </div>\n }\n </div>\n `,\n})\nexport class PanelComponent {\n readonly header = input<string>('');\n readonly toggleable = input(false, { transform: booleanAttribute });\n readonly collapsed = model(false);\n\n toggleCollapsed(): void { this.collapsed.update(v => !v); }\n}\n","import { booleanAttribute, Component, input, output } from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { MenuItem } from '../../interfaces/menu-item';\n\nexport type StepsMenuItem = MenuItem;\n\n@Component({\n selector: 'f-steps',\n imports: [UiIconComponent],\n template: `\n <div class=\"flex items-start w-full\">\n @for (item of model(); track $index; let i = $index; let last = $last) {\n <div class=\"flex items-center\" [class.flex-1]=\"!last\">\n <div class=\"flex flex-col items-center gap-2\">\n <button\n type=\"button\"\n class=\"w-8 h-8 rounded-full flex items-center justify-center text-xs font-bold transition-all duration-[var(--f-transition-duration)] ring-2 ring-offset-2 focus:outline-none focus-visible:ring-focus shrink-0\"\n [class]=\"stepCircleClass(i)\"\n [disabled]=\"item.disabled\"\n (click)=\"!item.disabled && !readonly() && onActiveIndexChange.emit(i)\"\n >\n @if (i < activeIndex()) {\n <ui-icon name=\"check\" class=\"text-[10px]\"></ui-icon>\n } @else {\n {{ i + 1 }}\n }\n </button>\n @if (item.label) {\n <span class=\"text-xs whitespace-nowrap transition-all duration-[var(--f-transition-duration)] leading-tight text-center max-w-[80px]\"\n [class]=\"i === activeIndex() ? 'font-semibold text-primary' : i < activeIndex() ? 'font-medium text-(--f-text-muted-color)' : 'text-(--f-text-muted-color)'\">\n {{ item.label }}\n </span>\n }\n </div>\n @if (!last) {\n <div class=\"flex-1 h-[1.5px] mx-3 -mt-4 rounded-full transition-all duration-[var(--f-transition-duration)]\" [class]=\"i < activeIndex() ? 'bg-primary' : 'bg-(--f-content-border-color)'\"></div>\n }\n </div>\n }\n </div>\n `,\n})\nexport class StepsComponent {\n readonly model = input<MenuItem[]>([]);\n readonly activeIndex = input<number>(0);\n readonly readonly = input(false, { transform: booleanAttribute });\n readonly onActiveIndexChange = output<number>();\n\n stepCircleClass(i: number): string {\n const interactive = !this.readonly();\n if (i < this.activeIndex()) return `bg-primary text-primary-contrast ring-primary/20 ${interactive ? 'cursor-pointer hover:bg-primary-emphasis' : 'cursor-default'}`;\n if (i === this.activeIndex()) return 'bg-primary text-primary-contrast ring-primary/30 shadow-sm';\n return `bg-(--f-content-background) text-(--f-text-muted-color) border border-(--f-content-border-color) ring-transparent ${interactive ? 'cursor-pointer hover:border-primary/50' : 'cursor-default'}`;\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n Component,\n contentChildren,\n effect,\n input,\n signal,\n untracked,\n} from '@angular/core';\nimport { FTemplateDirective } from '../shared/ftemplate.directive';\n\n@Component({\n selector: 'f-splitter',\n imports: [NgTemplateOutlet],\n host: { class: 'block h-full w-full' },\n template: `\n <div\n class=\"f-splitter flex h-full w-full\"\n [class.flex-col]=\"layout() === 'vertical'\"\n [class]=\"styleClass()\"\n >\n @if (panelTemplates().length > 0) {\n @for (\n panel of panelTemplates();\n track $index;\n let i = $index;\n let last = $last\n ) {\n <div\n class=\"f-splitter-panel min-w-0 min-h-0 overflow-auto\"\n [style.flex]=\"panelFlex(i)\"\n >\n <ng-container [ngTemplateOutlet]=\"panel.templateRef\" />\n </div>\n @if (!last) {\n <div\n class=\"f-splitter-gutter\"\n [class.f-splitter-gutter--vertical]=\"layout() === 'vertical'\"\n (pointerdown)=\"onGutterPointerDown($event, i)\"\n ></div>\n }\n }\n } @else {\n <ng-content />\n }\n </div>\n `,\n styles: [\n `\n .f-splitter-gutter {\n flex: 0 0 4px;\n background: var(--f-content-border-color);\n cursor: col-resize;\n touch-action: none;\n transition: background-color var(--f-transition-duration);\n }\n .f-splitter-gutter:hover,\n .f-splitter-gutter:active {\n background: var(--f-primary-color);\n }\n .f-splitter-gutter--vertical {\n cursor: row-resize;\n }\n `,\n ],\n})\nexport class SplitterComponent {\n readonly layout = input<'horizontal' | 'vertical'>('horizontal');\n readonly panelSizes = input<number[]>([]);\n readonly minSizes = input<number[]>([]);\n readonly styleClass = input<string>('');\n\n readonly panelTemplates = contentChildren(FTemplateDirective);\n\n private readonly _sizes = signal<number[]>([]);\n readonly sizes = this._sizes.asReadonly();\n\n constructor() {\n effect(() => {\n const count = this.panelTemplates().length;\n if (count === 0) return;\n const provided = this.panelSizes();\n const initial =\n provided.length === count\n ? [...provided]\n : Array.from({ length: count }, () => 100 / count);\n const total = initial.reduce((sum, size) => sum + size, 0) || 1;\n untracked(() =>\n this._sizes.set(initial.map((size) => (size / total) * 100)),\n );\n });\n }\n\n panelFlex(index: number): string {\n const count = this.panelTemplates().length || 1;\n const size = this.sizes()[index] ?? 100 / count;\n return `${size} 1 0%`;\n }\n\n onGutterPointerDown(event: PointerEvent, index: number): void {\n event.preventDefault();\n const gutter = event.currentTarget as HTMLElement;\n const container = gutter.parentElement;\n if (!container) return;\n\n const horizontal = this.layout() !== 'vertical';\n const total = horizontal ? container.clientWidth : container.clientHeight;\n if (total <= 0) return;\n\n const startPos = horizontal ? event.clientX : event.clientY;\n const startSizes = this._sizes();\n if (startSizes.length < index + 2) return;\n\n const pairTotal = startSizes[index] + startSizes[index + 1];\n const min = Math.min(this.minSizes()[index] ?? 5, pairTotal);\n const max =\n pairTotal - Math.min(this.minSizes()[index + 1] ?? 5, pairTotal);\n\n const onMove = (e: PointerEvent) => {\n const delta =\n (((horizontal ? e.clientX : e.clientY) - startPos) / total) * 100;\n const next = Math.min(\n Math.max(startSizes[index] + delta, min),\n Math.max(max, min),\n );\n const updated = [...startSizes];\n updated[index] = next;\n updated[index + 1] = pairTotal - next;\n this._sizes.set(updated);\n };\n const stop = () => {\n gutter.removeEventListener('pointermove', onMove);\n gutter.removeEventListener('pointerup', stop);\n gutter.removeEventListener('pointercancel', stop);\n };\n\n gutter.setPointerCapture(event.pointerId);\n gutter.addEventListener('pointermove', onMove);\n gutter.addEventListener('pointerup', stop);\n gutter.addEventListener('pointercancel', stop);\n }\n}\n\n@Component({\n selector: 'f-splitter-panel',\n host: { class: 'block flex-1 min-w-0 min-h-0 overflow-auto' },\n template: `<ng-content />`,\n})\nexport class SplitterPanelComponent {}\n","import { Component, input } from '@angular/core';\n\n@Component({\n selector: 'f-toolbar',\n template: `\n <div\n class=\"flex items-center justify-between gap-3 py-2.5 px-4 bg-(--f-content-background) border border-(--f-content-border-color) rounded-lg shadow-sm\"\n [class]=\"styleClass()\"\n >\n <div class=\"flex items-center gap-2 flex-1\">\n <ng-content select=\"[start],[fStart]\" />\n </div>\n <div class=\"flex items-center gap-2 shrink-0\">\n <ng-content select=\"[center],[fCenter]\" />\n </div>\n <div class=\"flex items-center gap-2 flex-1 justify-end\">\n <ng-content select=\"[end],[fEnd]\" />\n </div>\n <ng-content />\n </div>\n `,\n})\nexport class ToolbarComponent {\n readonly styleClass = input<string>('');\n}\n","import { Injectable, signal } from '@angular/core';\n\n@Injectable()\nexport class TabsContext {\n private readonly _active = signal<string | number>(0);\n readonly active = this._active.asReadonly();\n private readonly _scrollable = signal(false);\n readonly scrollable = this._scrollable.asReadonly();\n\n setActive(v: string | number): void {\n this._active.set(v);\n }\n\n setScrollable(v: boolean): void {\n this._scrollable.set(v);\n }\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n contentChildren,\n effect,\n ElementRef,\n inject,\n input,\n model,\n output,\n untracked,\n viewChild,\n} from '@angular/core';\nimport { TabsContext } from './tabs.context';\n\n// ─── Tabs root — provides context ─────────────────────────────────────────────\n@Component({\n selector: 'f-tabs',\n providers: [TabsContext],\n template: `<div class=\"flex flex-col\"><ng-content /></div>`,\n})\nexport class TabsComponent {\n readonly value = model<string | number>(0);\n readonly scrollable = input(false, { transform: booleanAttribute });\n readonly onTabChange = output<{ value: string | number }>();\n private readonly ctx = inject(TabsContext);\n\n constructor() {\n // Set synchronously so f-tabpanel children read the right value on their\n // own first render — effect() below only fires after CD, which is too\n // late for content already being created in the same pass (e.g. tab\n // panels rendered via *ngTemplateOutlet inside an @if).\n this.ctx.setActive(this.value());\n this.ctx.setScrollable(this.scrollable());\n\n // Sync external value input → context\n effect(() => { this.ctx.setActive(this.value()); });\n effect(() => { this.ctx.setScrollable(this.scrollable()); });\n\n // Sync context (tab clicks) → model + output\n effect(() => {\n const v = this.ctx.active();\n untracked(() => {\n if (this.value() !== v) {\n this.value.set(v);\n this.onTabChange.emit({ value: v });\n }\n });\n });\n }\n}\n\n// ─── TabList — wraps tab buttons ──────────────────────────────────────────────\n@Component({\n selector: 'f-tablist',\n host: { role: 'tablist', '(keydown)': 'onKeydown($event)' },\n template: `\n <div [class]=\"listClass()\">\n <ng-content />\n </div>\n `,\n})\nexport class TabListComponent {\n private readonly ctx = inject(TabsContext);\n private readonly tabs = contentChildren(TabComponent);\n\n readonly listClass = computed(() => {\n const base = 'flex border-b border-(--f-content-border-color) gap-0 scrollbar-none';\n return this.ctx.scrollable() ? `${base} overflow-x-auto` : `${base} flex-wrap`;\n });\n\n onKeydown(e: KeyboardEvent): void {\n const tabs = this.tabs().filter(t => !t.disabled());\n if (!tabs.length) return;\n const currentEl = document.activeElement;\n const currentIndex = tabs.findIndex(t => t.buttonEl() === currentEl);\n\n let nextIndex: number | null = null;\n if (e.key === 'ArrowRight') nextIndex = currentIndex < 0 ? 0 : (currentIndex + 1) % tabs.length;\n else if (e.key === 'ArrowLeft') nextIndex = currentIndex < 0 ? 0 : (currentIndex - 1 + tabs.length) % tabs.length;\n else if (e.key === 'Home') nextIndex = 0;\n else if (e.key === 'End') nextIndex = tabs.length - 1;\n\n if (nextIndex === null) return;\n e.preventDefault();\n tabs[nextIndex].focusButton();\n }\n}\n\n// ─── Tab — individual clickable tab button ────────────────────────────────────\n@Component({\n selector: 'f-tab',\n template: `\n <button\n #btn\n type=\"button\"\n role=\"tab\"\n [class]=\"tabClass()\"\n [disabled]=\"disabled()\"\n [id]=\"triggerId()\"\n [attr.aria-controls]=\"panelId()\"\n [attr.aria-selected]=\"isActive()\"\n [attr.tabindex]=\"isActive() ? 0 : -1\"\n (click)=\"onClick()\"\n ><ng-content /></button>\n `,\n})\nexport class TabComponent {\n private readonly ctx = inject(TabsContext);\n private readonly buttonRef = viewChild<ElementRef<HTMLButtonElement>>('btn');\n readonly value = input<string | number>('');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly isActive = computed(() => this.ctx.active() === this.value());\n\n readonly triggerId = computed(() => `f-tab-trigger-${this.value()}`);\n readonly panelId = computed(() => `f-tab-panel-${this.value()}`);\n\n readonly tabClass = computed(() => {\n const base = 'px-4 py-2.5 text-sm font-medium whitespace-nowrap border-b-[2.5px] transition-all duration-[var(--f-transition-duration)] -mb-px inline-flex items-center gap-1.5 focus:outline-none focus-visible:ring-focus cursor-pointer disabled:cursor-not-allowed disabled:opacity-40 select-none';\n return this.isActive()\n ? `${base} border-primary text-primary`\n : `${base} border-transparent text-(--f-text-muted-color) hover:text-(--f-text-hover-color) hover:border-(--f-content-border-color) hover:bg-(--f-content-hover-background)/60`;\n });\n\n buttonEl(): HTMLButtonElement | undefined {\n return this.buttonRef()?.nativeElement;\n }\n\n focusButton(): void {\n this.buttonRef()?.nativeElement.focus();\n }\n\n onClick(): void {\n if (!this.disabled()) this.ctx.setActive(this.value());\n }\n}\n\n// ─── TabPanels — wrapper around individual panels ─────────────────────────────\n@Component({\n selector: 'f-tabpanels',\n template: `<div class=\"pt-5\"><ng-content /></div>`,\n})\nexport class TabPanelsComponent {}\n\n// ─── TabPanel — renders content only when active ──────────────────────────────\n@Component({\n selector: 'f-tabpanel',\n host: {\n role: 'tabpanel',\n '[id]': 'panelId()',\n '[attr.aria-labelledby]': 'triggerId()',\n },\n template: `@if (isActive()) { <ng-content /> }`,\n})\nexport class TabPanelComponent {\n private readonly ctx = inject(TabsContext);\n readonly value = input<string | number>('');\n readonly header = input<string>('');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly isActive = computed(() => this.ctx.active() === this.value());\n\n readonly triggerId = computed(() => `f-tab-trigger-${this.value()}`);\n readonly panelId = computed(() => `f-tab-panel-${this.value()}`);\n}\n","import { Injectable, signal } from '@angular/core';\n\n@Injectable()\nexport class AccordionContext {\n private readonly _values = signal<(string | number)[]>([]);\n readonly values = this._values.asReadonly();\n private readonly _multiple = signal(false);\n readonly multiple = this._multiple.asReadonly();\n\n isOpen(v: string | number): boolean {\n return this._values().includes(v);\n }\n\n toggle(v: string | number): void {\n if (this.multiple()) {\n const cur = this._values();\n this._values.set(cur.includes(v) ? cur.filter(x => x !== v) : [...cur, v]);\n } else {\n this._values.set(this._values().includes(v) ? [] : [v]);\n }\n }\n\n setValues(vals: (string | number)[]): void {\n this._values.set(vals);\n }\n\n setMultiple(v: boolean): void {\n this._multiple.set(v);\n }\n}\n\n@Injectable()\nexport class AccordionPanelCtx {\n private readonly _open = signal(false);\n readonly open = this._open.asReadonly();\n private _toggleFn: () => void = () => this._open.update(v => !v);\n\n setToggleFn(fn: () => void): void { this._toggleFn = fn; }\n toggle(): void { this._toggleFn(); }\n setOpen(v: boolean): void { this._open.set(v); }\n}\n","import {\n booleanAttribute,\n Component,\n effect,\n inject,\n input,\n model,\n OnInit,\n output,\n} from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { AccordionContext, AccordionPanelCtx } from './accordion.context';\n\n// ─── Accordion root — provides context ────────────────────────────────────────\n@Component({\n selector: 'f-accordion',\n providers: [AccordionContext],\n template: `<div\n class=\"border border-(--f-content-border-color) rounded-lg overflow-hidden shadow-sm bg-(--f-content-background)\"\n >\n <ng-content />\n </div>`,\n})\nexport class AccordionComponent implements OnInit {\n readonly multiple = input(false, { transform: booleanAttribute });\n readonly value = model<string | number | (string | number)[] | null>(null);\n readonly onOpen = output<{ value: string | number }>();\n readonly onClose = output<{ value: string | number }>();\n\n private readonly ctx = inject(AccordionContext);\n\n ngOnInit(): void {\n this.ctx.setMultiple(this.multiple());\n const v = this.value();\n if (v != null) {\n this.ctx.setValues(Array.isArray(v) ? v : [v]);\n }\n }\n\n constructor() {\n effect(() => {\n const v = this.value();\n if (v != null) {\n this.ctx.setValues(Array.isArray(v) ? v : [v]);\n }\n });\n }\n}\n\n// ─── AccordionPanel — provides panel-level context ────────────────────────────\n@Component({\n selector: 'f-accordion-panel',\n providers: [AccordionPanelCtx],\n template: `<div\n class=\"border-b border-(--f-content-border-color) last:border-b-0\"\n >\n <ng-content />\n </div>`,\n})\nexport class AccordionPanelComponent implements OnInit {\n readonly value = input<string | number>('');\n readonly disabled = input(false, { transform: booleanAttribute });\n\n private readonly panelCtx = inject(AccordionPanelCtx);\n private readonly accordionCtx = inject(AccordionContext, { optional: true });\n\n ngOnInit(): void {\n this.panelCtx.setToggleFn(() => {\n if (this.accordionCtx) {\n this.accordionCtx.toggle(this.value());\n } else {\n this.panelCtx.setOpen(!this.panelCtx.open());\n }\n });\n }\n\n constructor() {\n effect(() => {\n if (this.accordionCtx) {\n this.panelCtx.setOpen(this.accordionCtx.isOpen(this.value()));\n }\n });\n }\n}\n\n// ─── AccordionHeader — reads panel context, triggers toggle ───────────────────\n@Component({\n selector: 'f-accordion-header',\n imports: [UiIconComponent],\n template: `\n <button\n type=\"button\"\n class=\"w-full flex items-center justify-between px-5 py-3.5 text-sm font-semibold text-(--f-text-color) hover:bg-(--f-content-hover-background)/80 transition-all duration-[var(--f-transition-duration)] text-left select-none focus:outline-none focus-visible:ring-focus cursor-pointer\"\n (click)=\"panelCtx.toggle()\"\n >\n <span class=\"flex-1 tracking-tight\"><ng-content /></span>\n <ui-icon\n name=\"chevron-down\"\n class=\"text-xs text-(--f-text-muted-color) ml-3 shrink-0 transition-transform duration-200\"\n [class.rotate-180]=\"panelCtx.open()\"\n ></ui-icon>\n </button>\n `,\n})\nexport class AccordionHeaderComponent {\n readonly panelCtx = inject(AccordionPanelCtx);\n}\n\n// ─── AccordionContent — shows/hides via panel context ─────────────────────────\n@Component({\n selector: 'f-accordion-content',\n host: { class: 'block' },\n template: `\n <div\n class=\"grid [transition:grid-template-rows_220ms_ease]\"\n [style.grid-template-rows]=\"panelCtx.open() ? '1fr' : '0fr'\"\n >\n <div class=\"overflow-hidden\">\n <div\n class=\"px-5 pb-5 pt-1 text-sm text-(--f-text-muted-color) leading-relaxed\"\n >\n <ng-content />\n </div>\n </div>\n </div>\n `,\n})\nexport class AccordionContentComponent {\n readonly panelCtx = inject(AccordionPanelCtx);\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n AfterViewInit,\n Component,\n effect,\n ElementRef,\n inject,\n input,\n OnDestroy,\n PLATFORM_ID,\n viewChild,\n} from '@angular/core';\nimport { Chart, registerables } from 'chart.js';\n\n@Component({\n selector: 'f-chart',\n template: `<canvas #canvas></canvas>`,\n})\nexport class ChartComponent implements AfterViewInit, OnDestroy {\n private readonly platformId = inject(PLATFORM_ID);\n\n readonly type = input<string>('bar');\n readonly data = input<unknown>(null);\n readonly options = input<unknown>({});\n readonly width = input<string>('');\n readonly height = input<string>('300');\n\n readonly canvasRef = viewChild<ElementRef<HTMLCanvasElement>>('canvas');\n private chart: Chart | null = null;\n private currentType: string | null = null;\n\n constructor() {\n if (isPlatformBrowser(this.platformId)) {\n Chart.register(...registerables);\n }\n\n effect(() => {\n const type = this.type();\n const data = this.data();\n const options = this.options();\n if (!this.chart) return;\n\n if (this.currentType !== null && type !== this.currentType) {\n this.recreateChart(type, data, options);\n return;\n }\n\n if (data) this.chart.data = data as Chart['data'];\n this.chart.options = (options ?? {}) as Chart['options'];\n this.chart.update();\n });\n }\n\n ngAfterViewInit(): void {\n if (!isPlatformBrowser(this.platformId)) return;\n const canvas = this.canvasRef()?.nativeElement;\n if (!canvas) return;\n if (this.height()) canvas.style.height = this.height() + 'px';\n if (this.width()) canvas.style.width = this.width() + 'px';\n\n this.recreateChart(this.type(), this.data(), this.options());\n }\n\n private recreateChart(type: string, data: unknown, options: unknown): void {\n const canvas = this.canvasRef()?.nativeElement;\n if (!canvas) return;\n this.chart?.destroy();\n this.currentType = type;\n this.chart = new Chart(canvas, {\n type: type as never,\n data: (data ?? { datasets: [] }) as Chart['data'],\n options: (options ?? {}) as Chart['options'],\n });\n }\n\n ngOnDestroy(): void {\n this.chart?.destroy();\n }\n}\n","import { booleanAttribute, Component, computed, input, output } from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\nexport interface PaginatorState {\n first: number;\n rows: number;\n page: number;\n pageCount: number;\n}\n\n@Component({\n selector: 'f-paginator',\n imports: [UiIconComponent],\n template: `\n <div class=\"flex items-center justify-between py-3 px-1 text-sm text-(--f-text-muted-color) select-none gap-3 flex-wrap\">\n <div class=\"flex items-center gap-2\">\n @if (rowsPerPageOptions().length > 0) {\n <span class=\"text-xs text-(--f-text-muted-color)\">Rows:</span>\n <div class=\"relative\">\n <select\n class=\"h-7 pl-2 pr-6 text-xs font-medium rounded-lg border border-(--f-content-border-color) bg-(--f-content-background) text-(--f-text-color) cursor-pointer hover:border-(--f-content-border-color) focus:outline-none focus:border-primary focus:ring-focus transition-colors duration-[var(--f-transition-duration)] appearance-none\"\n (change)=\"onRowsChange($any($event.target).value)\"\n >\n @for (opt of rowsPerPageOptions(); track opt) {\n <option [value]=\"opt\" [selected]=\"opt === rows()\">{{ opt }}</option>\n }\n </select>\n <ui-icon name=\"chevron-down\" class=\"absolute right-1.5 top-1/2 -translate-y-1/2 pointer-events-none text-(--f-text-muted-color) text-[9px]\"></ui-icon>\n </div>\n }\n @if (showCurrentPageReport()) {\n <span class=\"text-xs font-medium\">{{ reportText() }}</span>\n }\n </div>\n <div class=\"flex items-center gap-0.5\">\n <button\n class=\"w-8 h-8 flex items-center justify-center rounded-lg text-(--f-text-muted-color) hover:bg-(--f-content-hover-background) hover:text-(--f-text-hover-color) transition-all duration-[var(--f-transition-duration)] cursor-pointer disabled:cursor-default disabled:opacity-30 disabled:pointer-events-none\"\n [disabled]=\"currentPage() === 0\" (click)=\"goTo(0)\"\n ><ui-icon name=\"chevrons-left\" class=\"text-xs\"></ui-icon></button>\n <button\n class=\"w-8 h-8 flex items-center justify-center rounded-lg text-(--f-text-muted-color) hover:bg-(--f-content-hover-background) hover:text-(--f-text-hover-color) transition-all duration-[var(--f-transition-duration)] cursor-pointer disabled:cursor-default disabled:opacity-30 disabled:pointer-events-none\"\n [disabled]=\"currentPage() === 0\" (click)=\"goTo(currentPage() - 1)\"\n ><ui-icon name=\"chevron-left\" class=\"text-xs\"></ui-icon></button>\n @for (p of visiblePages(); track p) {\n <button [class]=\"pageClass(p)\" (click)=\"goTo(p)\">{{ p + 1 }}</button>\n }\n <button\n class=\"w-8 h-8 flex items-center justify-center rounded-lg text-(--f-text-muted-color) hover:bg-(--f-content-hover-background) hover:text-(--f-text-hover-color) transition-all duration-[var(--f-transition-duration)] cursor-pointer disabled:cursor-default disabled:opacity-30 disabled:pointer-events-none\"\n [disabled]=\"currentPage() === pageCount() - 1\" (click)=\"goTo(currentPage() + 1)\"\n ><ui-icon name=\"chevron-right\" class=\"text-xs\"></ui-icon></button>\n <button\n class=\"w-8 h-8 flex items-center justify-center rounded-lg text-(--f-text-muted-color) hover:bg-(--f-content-hover-background) hover:text-(--f-text-hover-color) transition-all duration-[var(--f-transition-duration)] cursor-pointer disabled:cursor-default disabled:opacity-30 disabled:pointer-events-none\"\n [disabled]=\"currentPage() === pageCount() - 1\" (click)=\"goTo(pageCount() - 1)\"\n ><ui-icon name=\"chevrons-right\" class=\"text-xs\"></ui-icon></button>\n </div>\n </div>\n `,\n})\nexport class PaginatorComponent {\n readonly first = input<number>(0);\n readonly rows = input<number>(10);\n readonly totalRecords = input<number>(0);\n readonly rowsPerPageOptions = input<number[]>([]);\n readonly showCurrentPageReport = input(true, { transform: booleanAttribute });\n readonly currentPageReportTemplate = input<string>('');\n readonly onPageChange = output<PaginatorState>();\n\n readonly currentPage = computed(() => Math.floor(this.first() / this.rows()));\n readonly pageCount = computed(() => Math.max(1, Math.ceil(this.totalRecords() / this.rows())));\n readonly reportText = computed(() => {\n const first = this.first() + 1;\n const last = Math.min(this.first() + this.rows(), this.totalRecords());\n const totalRecords = this.totalRecords();\n const template = this.currentPageReportTemplate();\n if (!template) return `Showing ${first}–${last} of ${totalRecords}`;\n return template\n .replace(/\\{first\\}/g, String(first))\n .replace(/\\{last\\}/g, String(last))\n .replace(/\\{totalRecords\\}/g, String(totalRecords))\n .replace(/\\{rows\\}/g, String(this.rows()))\n .replace(/\\{currentPage\\}/g, String(this.currentPage() + 1))\n .replace(/\\{totalPages\\}/g, String(this.pageCount()));\n });\n readonly visiblePages = computed(() => {\n const cur = this.currentPage();\n const total = this.pageCount();\n const start = Math.max(0, cur - 2);\n const end = Math.min(total - 1, cur + 2);\n return Array.from({ length: end - start + 1 }, (_, i) => start + i);\n });\n\n pageClass(p: number): string {\n return p === this.currentPage()\n ? 'w-8 h-8 rounded-lg text-xs font-semibold bg-(--f-highlight-background) text-(--f-highlight-color) shadow-sm flex items-center justify-center cursor-pointer'\n : 'w-8 h-8 rounded-lg text-xs font-medium text-(--f-text-muted-color) hover:bg-(--f-content-hover-background) hover:text-(--f-text-hover-color) transition-all duration-[var(--f-transition-duration)] flex items-center justify-center cursor-pointer';\n }\n\n goTo(page: number): void {\n const rows = this.rows();\n this.onPageChange.emit({ first: page * rows, rows, page, pageCount: this.pageCount() });\n }\n\n onRowsChange(value: string): void {\n const newRows = Number(value);\n const newPageCount = Math.max(1, Math.ceil(this.totalRecords() / newRows));\n this.onPageChange.emit({ first: 0, rows: newRows, page: 0, pageCount: newPageCount });\n }\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n contentChild,\n input,\n model,\n OnInit,\n output,\n signal,\n TemplateRef,\n} from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { PaginatorComponent, PaginatorState } from '../paginator/paginator.component';\n\nexport interface TableLazyLoadEvent {\n first: number;\n rows: number;\n sortField?: string;\n sortOrder?: number;\n}\n\nexport interface TableSortEvent {\n sortField: string | null;\n sortOrder: number;\n}\n\n@Component({\n selector: 'f-table',\n imports: [UiIconComponent, NgTemplateOutlet, PaginatorComponent],\n styles: [`\n :host ::ng-deep thead tr th {\n padding: 0.625rem 1rem;\n font-size: 0.68rem;\n font-weight: 600;\n letter-spacing: 0.07em;\n text-transform: uppercase;\n color: var(--f-text-muted-color);\n white-space: nowrap;\n background: transparent;\n }\n :host ::ng-deep tbody tr {\n transition: background-color var(--f-transition-duration) ease;\n }\n :host.row-hover ::ng-deep tbody tr:hover {\n background-color: var(--f-content-hover-background);\n }\n :host ::ng-deep tbody tr td {\n padding: 0.8125rem 1rem;\n color: var(--f-text-color);\n font-size: 0.875rem;\n vertical-align: middle;\n }\n `],\n host: {\n '[class.row-hover]': 'rowHover()',\n '[class]': 'styleClass()',\n },\n template: `\n <div class=\"w-full rounded-lg border border-(--f-content-border-color) bg-(--f-content-background) shadow-sm\" [class]=\"scrollable() ? 'overflow-auto max-h-[28rem]' : 'overflow-x-auto'\">\n @if (globalFilterFields().length > 0) {\n <div [class]=\"'p-2 border-b border-(--f-content-border-color) ' + (scrollable() ? 'sticky top-0 z-10 bg-(--f-content-background)' : '')\">\n <div class=\"flex items-center gap-2 px-2 py-1.5 max-w-xs bg-(--f-content-hover-background) rounded-lg border border-(--f-content-border-color)\">\n <ui-icon name=\"search\" class=\"text-xs text-(--f-text-muted-color) shrink-0\"></ui-icon>\n <input type=\"text\" class=\"flex-1 text-sm bg-transparent focus:outline-none text-(--f-text-color) placeholder:text-(--f-form-field-placeholder-color)\"\n placeholder=\"Search...\" [value]=\"filterText()\" (input)=\"onFilterInput($any($event.target).value)\" />\n </div>\n </div>\n }\n @if (loading()) {\n <div class=\"flex flex-col items-center justify-center py-20 text-(--f-text-muted-color) gap-3\">\n <ui-icon name=\"loader-circle\" [spin]=\"true\" class=\"text-2xl text-primary/60\"></ui-icon>\n <span class=\"text-sm text-(--f-text-muted-color)\">Loading data...</span>\n </div>\n } @else {\n <table class=\"w-full text-sm text-left border-collapse\" [style]=\"tableStyle()\">\n <thead class=\"bg-(--f-content-hover-background) border-b border-(--f-content-border-color)\" [class.sticky]=\"scrollable()\" [class.top-0]=\"scrollable()\" [class.z-10]=\"scrollable()\">\n @if (headerTemplate()) {\n <ng-container [ngTemplateOutlet]=\"headerTemplate()\" />\n }\n </thead>\n <tbody class=\"divide-y divide-(--f-content-border-color)\">\n @if (pageRows().length > 0) {\n @for (row of pageRows(); track trackByRow($index, row); let i = $index) {\n @if (bodyTemplate()) {\n <ng-container [ngTemplateOutlet]=\"bodyTemplate()\" [ngTemplateOutletContext]=\"{ $implicit: row, rowIndex: i }\" />\n }\n }\n } @else {\n @if (emptyTemplate()) {\n <ng-container [ngTemplateOutlet]=\"emptyTemplate()\" />\n } @else {\n <tr>\n <td [attr.colspan]=\"100\" class=\"text-center py-16 text-(--f-text-muted-color)\">\n <div class=\"flex flex-col items-center gap-3\">\n <div class=\"w-12 h-12 rounded-full bg-(--f-content-hover-background) flex items-center justify-center\">\n <ui-icon name=\"inbox\" class=\"text-xl text-(--f-text-muted-color)\"></ui-icon>\n </div>\n <div>\n <p class=\"text-sm font-medium text-(--f-text-muted-color)\">No records found</p>\n <p class=\"text-xs text-(--f-text-muted-color) mt-0.5\">Try adjusting your filters</p>\n </div>\n </div>\n </td>\n </tr>\n }\n }\n </tbody>\n </table>\n }\n @if (paginator() && effectiveTotalRecords() > 0) {\n <div class=\"border-t border-(--f-content-border-color) px-4\">\n <f-paginator\n [first]=\"currentFirst()\"\n [rows]=\"currentRows()\"\n [totalRecords]=\"effectiveTotalRecords()\"\n [rowsPerPageOptions]=\"rowsPerPageOptions()\"\n [showCurrentPageReport]=\"showCurrentPageReport()\"\n [currentPageReportTemplate]=\"currentPageReportTemplate()\"\n (onPageChange)=\"handlePageChange($event)\"\n />\n </div>\n }\n </div>\n `,\n})\nexport class TableComponent implements OnInit {\n readonly value = input<unknown[] | null>(null);\n readonly lazy = input(false, { transform: booleanAttribute });\n readonly loading = input(false, { transform: booleanAttribute });\n readonly rows = input<number>(10);\n readonly totalRecords = input<number>(0);\n readonly rowHover = input(false, { transform: booleanAttribute });\n readonly dataKey = input<string>('id');\n readonly scrollable = input(false, { transform: booleanAttribute });\n readonly paginator = input(false, { transform: booleanAttribute });\n readonly first = input<number>(0);\n readonly rowsPerPageOptions = input<number[]>([]);\n readonly showCurrentPageReport = input(false, { transform: booleanAttribute });\n readonly currentPageReportTemplate = input<string>('');\n readonly tableStyle = input<Record<string, string> | null>(null);\n readonly styleClass = input<string>('');\n readonly globalFilterFields = input<string[]>([]);\n\n readonly sortField = model<string | null>(null);\n readonly sortOrder = model<number>(1);\n\n readonly onLazyLoad = output<TableLazyLoadEvent>();\n readonly onSort = output<TableSortEvent>();\n\n readonly headerTemplate = contentChild<TemplateRef<unknown>>('header');\n readonly bodyTemplate = contentChild<TemplateRef<unknown>>('body');\n readonly emptyTemplate = contentChild<TemplateRef<unknown>>('emptymessage');\n\n private readonly _currentFirst = signal(0);\n private readonly _currentRows = signal(10);\n readonly currentFirst = this._currentFirst.asReadonly();\n readonly currentRows = this._currentRows.asReadonly();\n\n private readonly _filterText = signal('');\n readonly filterText = this._filterText.asReadonly();\n\n readonly filteredValue = computed(() => {\n const rows = this.value() ?? [];\n const fields = this.globalFilterFields();\n const query = this.filterText().trim().toLowerCase();\n if (!fields.length || !query) return rows;\n return rows.filter((row) =>\n fields.some((field) => {\n const val = (row as Record<string, unknown>)?.[field];\n return val != null && String(val).toLowerCase().includes(query);\n }),\n );\n });\n\n readonly sortedValue = computed(() => {\n const rows = this.filteredValue();\n const field = this.sortField();\n if (this.lazy() || !field) return rows;\n const order = this.sortOrder();\n return [...rows].sort(\n (a, b) =>\n this.compareValues(\n (a as Record<string, unknown>)?.[field],\n (b as Record<string, unknown>)?.[field],\n ) * order,\n );\n });\n\n readonly effectiveTotalRecords = computed(() =>\n this.lazy() ? this.totalRecords() : this.filteredValue().length,\n );\n\n readonly pageRows = computed(() => {\n const rows = this.sortedValue();\n if (this.lazy() || !this.paginator()) return rows;\n const start = this.currentFirst();\n return rows.slice(start, start + this.currentRows());\n });\n\n ngOnInit(): void {\n this._currentFirst.set(this.first());\n this._currentRows.set(this.rows());\n if (this.lazy()) {\n this.onLazyLoad.emit(this.buildLazyEvent(this.first(), this.rows()));\n }\n }\n\n onFilterInput(v: string): void { this._filterText.set(v); }\n\n trackByRow(index: number, row: unknown): unknown {\n const key = this.dataKey();\n const value = (row as Record<string, unknown>)?.[key];\n return value ?? index;\n }\n\n handlePageChange(event: PaginatorState): void {\n this._currentFirst.set(event.first);\n this._currentRows.set(event.rows);\n if (this.lazy()) {\n this.onLazyLoad.emit(this.buildLazyEvent(event.first, event.rows));\n }\n }\n\n sort(field: string): void {\n if (!field) return;\n if (this.sortField() !== field) {\n this.sortField.set(field);\n this.sortOrder.set(1);\n } else if (this.sortOrder() === 1) {\n this.sortOrder.set(-1);\n } else {\n this.sortField.set(null);\n this.sortOrder.set(1);\n }\n\n this.onSort.emit({ sortField: this.sortField(), sortOrder: this.sortOrder() });\n\n if (this.lazy()) {\n this.onLazyLoad.emit(this.buildLazyEvent(this.currentFirst(), this.currentRows()));\n }\n }\n\n private buildLazyEvent(first: number, rows: number): TableLazyLoadEvent {\n const field = this.sortField();\n return {\n first,\n rows,\n ...(field ? { sortField: field, sortOrder: this.sortOrder() } : {}),\n };\n }\n\n private compareValues(a: unknown, b: unknown): number {\n if (a == null && b == null) return 0;\n if (a == null) return -1;\n if (b == null) return 1;\n if (a instanceof Date && b instanceof Date) return a.getTime() - b.getTime();\n if (typeof a === 'number' && typeof b === 'number') return a - b;\n return String(a).localeCompare(String(b), undefined, { numeric: true, sensitivity: 'base' });\n }\n}\n","import { Component, computed, Directive, inject, input } from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { TableComponent } from './table.component';\n\n@Directive({\n selector: '[fSortableColumn]',\n host: {\n class: 'cursor-pointer select-none hover:bg-(--f-content-hover-background) transition-colors',\n '(click)': 'onClick()',\n },\n})\nexport class SortableColumnDirective {\n readonly fSortableColumn = input<string>('');\n private readonly table = inject(TableComponent, { optional: true });\n\n onClick(): void {\n const field = this.fSortableColumn();\n if (field) this.table?.sort(field);\n }\n}\n\n@Component({\n selector: 'f-sorticon',\n imports: [UiIconComponent],\n template: `\n <span class=\"inline-flex flex-col ml-1 text-[8px] leading-none\">\n <ui-icon name=\"chevron-up\" [class]=\"direction() === 1 ? 'opacity-100 text-primary' : 'opacity-40'\"></ui-icon>\n <ui-icon name=\"chevron-down\" [class]=\"direction() === -1 ? 'opacity-100 text-primary' : 'opacity-40'\"></ui-icon>\n </span>\n `,\n})\nexport class SortIconComponent {\n readonly field = input<string>('');\n private readonly table = inject(TableComponent, { optional: true });\n\n readonly direction = computed(() =>\n this.table?.sortField() === this.field() ? (this.table?.sortOrder() ?? 0) : 0,\n );\n}\n","import { Directive, ElementRef, inject, input, OnDestroy } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\n@Directive({\n selector: '[fStyleClass]',\n host: { '(click)': 'onClick()' },\n})\nexport class StyleClassDirective implements OnDestroy {\n private readonly el = inject(ElementRef<HTMLElement>);\n private readonly doc = inject(DOCUMENT);\n\n readonly fStyleClass = input<string>('');\n readonly enterFromClass = input<string>('');\n readonly enterActiveClass = input<string>('');\n readonly enterToClass = input<string>('');\n readonly leaveFromClass = input<string>('');\n readonly leaveActiveClass = input<string>('');\n readonly leaveToClass = input<string>('');\n readonly hideOnOutsideClick = input(false);\n readonly toggleClass = input<string>('');\n\n private outsideClickListener: ((e: MouseEvent) => void) | null = null;\n\n onClick(): void {\n const target = this.resolveTarget();\n if (!target) return;\n\n const toggle = this.toggleClass();\n if (toggle) {\n toggle.split(' ').filter(Boolean).forEach(c => target.classList.toggle(c));\n return;\n }\n\n const enterFrom = this.enterFromClass() || 'hidden';\n const isHidden = enterFrom.split(' ').some(c => target.classList.contains(c));\n\n if (isHidden) {\n this.enter(target);\n } else {\n this.leave(target);\n }\n }\n\n ngOnDestroy(): void {\n this.unbindOutsideClick();\n }\n\n private enter(target: Element): void {\n const enterFrom = this.enterFromClass() || 'hidden';\n const enterActive = this.enterActiveClass();\n const enterTo = this.enterToClass();\n\n enterFrom.split(' ').filter(Boolean).forEach(c => target.classList.remove(c));\n\n if (enterActive) {\n enterActive.split(' ').filter(Boolean).forEach(c => target.classList.add(c));\n target.addEventListener('animationend', () => {\n enterActive.split(' ').filter(Boolean).forEach(c => target.classList.remove(c));\n if (enterTo) enterTo.split(' ').filter(Boolean).forEach(c => target.classList.add(c));\n }, { once: true });\n }\n\n if (this.hideOnOutsideClick()) {\n setTimeout(() => this.bindOutsideClick(target), 0);\n }\n }\n\n private leave(target: Element): void {\n const leaveActive = this.leaveActiveClass();\n const leaveTo = this.leaveToClass() || 'hidden';\n\n if (leaveActive) {\n leaveActive.split(' ').filter(Boolean).forEach(c => target.classList.add(c));\n target.addEventListener('animationend', () => {\n leaveActive.split(' ').filter(Boolean).forEach(c => target.classList.remove(c));\n leaveTo.split(' ').filter(Boolean).forEach(c => target.classList.add(c));\n }, { once: true });\n } else {\n leaveTo.split(' ').filter(Boolean).forEach(c => target.classList.add(c));\n }\n\n this.unbindOutsideClick();\n }\n\n private bindOutsideClick(target: Element): void {\n this.unbindOutsideClick();\n this.outsideClickListener = (e: MouseEvent) => {\n const clicked = e.target as Node;\n if (!this.el.nativeElement.contains(clicked) && !target.contains(clicked)) {\n this.leave(target);\n }\n };\n this.doc.addEventListener('click', this.outsideClickListener);\n }\n\n private unbindOutsideClick(): void {\n if (this.outsideClickListener) {\n this.doc.removeEventListener('click', this.outsideClickListener);\n this.outsideClickListener = null;\n }\n }\n\n private resolveTarget(): Element | null {\n const selector = this.fStyleClass();\n if (!selector) return null;\n const el = this.el.nativeElement;\n if (selector === '@next') return el.nextElementSibling;\n if (selector === '@prev') return el.previousElementSibling;\n if (selector === '@parent') return el.parentElement;\n if (selector === '@grandparent') return el.parentElement?.parentElement ?? null;\n return this.doc.querySelector(selector);\n }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n booleanAttribute,\n Directive,\n ElementRef,\n inject,\n input,\n OnDestroy,\n PLATFORM_ID,\n Renderer2,\n} from '@angular/core';\n\n@Directive({\n selector: '[fTooltip]',\n host: {\n '(mouseenter)': 'scheduleShow()',\n '(mouseleave)': 'scheduleHide()',\n '(focus)': 'onFocus()',\n '(blur)': 'scheduleHide()',\n '(click)': 'hide()',\n },\n})\nexport class TooltipDirective implements OnDestroy {\n private readonly el = inject(ElementRef<HTMLElement>);\n private readonly renderer = inject(Renderer2);\n private readonly platformId = inject(PLATFORM_ID);\n\n readonly fTooltip = input<string>('');\n readonly tooltipPosition = input<'top' | 'bottom' | 'left' | 'right'>('top');\n readonly tooltipStyleClass = input<string>('');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly tooltipEvent = input<'hover' | 'focus' | 'both'>('hover');\n readonly showDelay = input<number>(0);\n readonly hideDelay = input<number>(0);\n\n private tip: HTMLElement | null = null;\n private showTimer: ReturnType<typeof setTimeout> | null = null;\n private hideTimer: ReturnType<typeof setTimeout> | null = null;\n private readonly onScrollOrResize = (): void => this.hide();\n\n onFocus(): void {\n if (this.tooltipEvent() === 'hover') return;\n this.scheduleShow();\n }\n\n scheduleShow(): void {\n if (this.hideTimer) { clearTimeout(this.hideTimer); this.hideTimer = null; }\n if (this.showTimer) clearTimeout(this.showTimer);\n const delay = this.showDelay();\n if (delay > 0) {\n this.showTimer = setTimeout(() => this.show(), delay);\n } else {\n this.show();\n }\n }\n\n scheduleHide(): void {\n if (this.showTimer) { clearTimeout(this.showTimer); this.showTimer = null; }\n if (this.hideTimer) clearTimeout(this.hideTimer);\n const delay = this.hideDelay();\n if (delay > 0) {\n this.hideTimer = setTimeout(() => this.hide(), delay);\n } else {\n this.hide();\n }\n }\n\n show(): void {\n if (!isPlatformBrowser(this.platformId) || !this.fTooltip() || this.disabled() || this.tip) return;\n this.tip = this.renderer.createElement('div');\n this.renderer.setProperty(this.tip, 'textContent', this.fTooltip());\n if (this.tooltipStyleClass()) {\n for (const cls of this.tooltipStyleClass().split(/\\s+/).filter(Boolean)) {\n this.renderer.addClass(this.tip, cls);\n }\n }\n this.renderer.setStyle(this.tip, 'position', 'fixed');\n this.renderer.setStyle(this.tip, 'zIndex', '9999');\n this.renderer.setStyle(this.tip, 'padding', '4px 10px');\n this.renderer.setStyle(this.tip, 'background', 'var(--f-tooltip-background, rgba(15, 23, 42, 0.85))');\n this.renderer.setStyle(this.tip, 'backdropFilter', 'blur(4px)');\n this.renderer.setStyle(this.tip, 'color', 'var(--f-tooltip-color, #f8fafc)');\n this.renderer.setStyle(this.tip, 'borderRadius', '6px');\n this.renderer.setStyle(this.tip, 'fontSize', '11px');\n this.renderer.setStyle(this.tip, 'fontWeight', '500');\n this.renderer.setStyle(this.tip, 'letterSpacing', '0.01em');\n this.renderer.setStyle(this.tip, 'lineHeight', '1.5');\n this.renderer.setStyle(this.tip, 'pointerEvents', 'none');\n this.renderer.setStyle(this.tip, 'whiteSpace', 'nowrap');\n this.renderer.setStyle(this.tip, 'boxShadow', '0 2px 8px rgba(0,0,0,0.15)');\n this.renderer.appendChild(document.body, this.tip);\n this.position();\n window.addEventListener('scroll', this.onScrollOrResize, true);\n window.addEventListener('resize', this.onScrollOrResize);\n }\n\n hide(): void {\n if (this.showTimer) { clearTimeout(this.showTimer); this.showTimer = null; }\n if (this.hideTimer) { clearTimeout(this.hideTimer); this.hideTimer = null; }\n if (this.tip && isPlatformBrowser(this.platformId)) {\n this.renderer.removeChild(document.body, this.tip);\n this.tip = null;\n window.removeEventListener('scroll', this.onScrollOrResize, true);\n window.removeEventListener('resize', this.onScrollOrResize);\n }\n }\n\n private position(): void {\n if (!this.tip) return;\n const rect = this.el.nativeElement.getBoundingClientRect();\n const pos = this.tooltipPosition();\n const tw = this.tip.offsetWidth;\n const th = this.tip.offsetHeight;\n const gap = 8;\n\n let top = 0, left = 0;\n if (pos === 'top') { top = rect.top - th - gap; left = rect.left + rect.width / 2 - tw / 2; }\n if (pos === 'bottom') { top = rect.bottom + gap; left = rect.left + rect.width / 2 - tw / 2; }\n if (pos === 'left') { top = rect.top + rect.height / 2 - th / 2; left = rect.left - tw - gap; }\n if (pos === 'right') { top = rect.top + rect.height / 2 - th / 2; left = rect.right + gap; }\n\n left = Math.max(8, Math.min(left, window.innerWidth - tw - 8));\n top = Math.max(8, Math.min(top, window.innerHeight - th - 8));\n\n this.renderer.setStyle(this.tip, 'top', `${top}px`);\n this.renderer.setStyle(this.tip, 'left', `${left}px`);\n }\n\n ngOnDestroy(): void { this.hide(); }\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n ElementRef,\n forwardRef,\n inject,\n input,\n numberAttribute,\n output,\n signal,\n} from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\n\nexport interface AutoCompleteCompleteEvent {\n originalEvent: Event;\n query: string;\n}\n\nexport interface AutoCompleteSelectEvent {\n originalEvent: Event;\n value: unknown;\n}\n\n@Component({\n selector: 'f-autocomplete',\n imports: [UiIconComponent, FormsModule],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => AutoCompleteComponent), multi: true }],\n host: {\n class: 'relative block w-full',\n '(document:click)': 'onDocumentClick($event)',\n },\n template: `\n <div class=\"relative w-full\" [class.opacity-60]=\"disabled()\" [class.pointer-events-none]=\"disabled()\">\n @if (multiple()) {\n <div\n class=\"min-h-[2.375rem] flex flex-wrap items-center gap-1.5 px-2 py-1.5 border rounded-lg bg-(--f-form-field-background) focus-within:ring-focus transition-all duration-[var(--f-transition-duration)] cursor-text\"\n [class]=\"wrapperClass()\"\n (click)=\"inputEl.focus()\"\n >\n @for (chip of selectedItems(); track $index) {\n <span class=\"inline-flex items-center gap-1 px-2 py-0.5 rounded-md bg-primary/10 text-primary text-xs font-medium\">\n {{ getLabel(chip) }}\n <button type=\"button\" aria-label=\"Remove\" class=\"inline-flex items-center justify-center hover:text-primary-emphasis cursor-pointer\" (click)=\"removeChip($index, $event)\">\n <ui-icon name=\"times\" class=\"text-[10px]\"></ui-icon>\n </button>\n </span>\n }\n <input\n #inputEl\n type=\"text\"\n class=\"flex-1 min-w-[6rem] text-sm bg-transparent focus:outline-none text-(--f-form-field-color) placeholder:text-(--f-form-field-placeholder-color)\"\n [placeholder]=\"selectedItems().length === 0 ? placeholder() : ''\"\n [(ngModel)]=\"query\"\n (ngModelChange)=\"onQueryChange($event)\"\n (keydown)=\"onKeyDown($event)\"\n (focus)=\"_handleFocus()\"\n (blur)=\"_handleBlur()\"\n />\n </div>\n } @else {\n <div class=\"relative\">\n <input\n type=\"text\"\n class=\"w-full px-3 py-2 text-sm border rounded-lg bg-(--f-form-field-background) focus:outline-none focus:ring-focus transition-all duration-[var(--f-transition-duration)]\"\n [class]=\"inputClass()\"\n [placeholder]=\"placeholder()\"\n [(ngModel)]=\"query\"\n (ngModelChange)=\"onQueryChange($event)\"\n (keydown)=\"onKeyDown($event)\"\n (focus)=\"_handleFocus()\"\n (blur)=\"_handleBlur()\"\n />\n @if (dropdown()) {\n <button\n type=\"button\"\n class=\"absolute right-0 top-0 h-full px-3 flex items-center text-(--f-text-muted-color) hover:text-(--f-text-hover-color) border-l border-(--f-content-border-color)\"\n (click)=\"onDropdownButtonClick($event)\"\n >\n <ui-icon name=\"chevron-down\" class=\"text-xs\"></ui-icon>\n </button>\n }\n </div>\n }\n\n @if (open() && filteredSuggestions().length > 0) {\n <div class=\"absolute z-50 w-full mt-1 bg-(--f-overlay-popover-background) border border-(--f-content-border-color) rounded-lg shadow-lg overflow-hidden\">\n <ul class=\"max-h-56 overflow-auto py-1\" role=\"listbox\">\n @for (item of filteredSuggestions(); track $index; let i = $index) {\n <li\n role=\"option\"\n class=\"px-3 py-2 text-sm cursor-pointer flex items-center gap-2 transition-colors\"\n [class]=\"i === activeIndex() ? 'bg-(--f-highlight-background) text-(--f-highlight-color)' : 'text-(--f-text-color) hover:bg-(--f-content-hover-background)'\"\n (mousedown)=\"selectItem($event, item)\"\n >\n <span class=\"flex-1 truncate\">{{ getLabel(item) }}</span>\n </li>\n }\n </ul>\n </div>\n }\n </div>\n `,\n})\nexport class AutoCompleteComponent implements ControlValueAccessor {\n private readonly _el = inject(ElementRef);\n\n onDocumentClick(e: MouseEvent): void {\n if (this.open() && !this._el.nativeElement.contains(e.target)) {\n this._open.set(false);\n }\n }\n\n readonly suggestions = input<unknown[]>([]);\n readonly field = input<string>('label');\n readonly placeholder = input<string>('');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly dropdown = input(false, { transform: booleanAttribute });\n readonly forceSelection = input(false, { transform: booleanAttribute });\n readonly multiple = input(false, { transform: booleanAttribute });\n readonly completeOnFocus = input(false, { transform: booleanAttribute });\n readonly delay = input(300, { transform: numberAttribute });\n readonly minLength = input(1, { transform: numberAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly touched = input(true);\n\n readonly completeMethod = output<AutoCompleteCompleteEvent>();\n readonly onSelect = output<AutoCompleteSelectEvent>();\n readonly onUnselect = output<{ originalEvent: Event; value: unknown }>();\n readonly onDropdownClick = output<MouseEvent>();\n readonly onClear = output<void>();\n readonly focusEvent = output<void>();\n readonly blurEvent = output<void>();\n readonly onChange = output<unknown>();\n\n query = '';\n private readonly _open = signal(false);\n readonly open = this._open.asReadonly();\n private readonly _activeIndex = signal(-1);\n readonly activeIndex = this._activeIndex.asReadonly();\n private readonly _selectedItems = signal<unknown[]>([]);\n readonly selectedItems = this._selectedItems.asReadonly();\n private _value = signal<unknown>(null);\n\n private _onChange: (v: unknown) => void = () => {};\n private _onTouched: () => void = () => {};\n private _debounce?: ReturnType<typeof setTimeout>;\n\n readonly filteredSuggestions = computed(() => this.suggestions() as unknown[]);\n\n readonly inputClass = computed(() => {\n const focused = this.open();\n const base = 'border bg-(--f-form-field-background) text-(--f-form-field-color) placeholder:text-(--f-form-field-placeholder-color)';\n const showInvalid = this.invalid() && this.touched();\n const focus = showInvalid\n ? 'border-red-400'\n : focused\n ? 'border-primary'\n : 'border-(--f-form-field-border-color) hover:border-(--f-form-field-hover-border-color)';\n return `${base} ${focus}`;\n });\n\n onDropdownButtonClick(e: MouseEvent): void {\n this.onDropdownClick.emit(e);\n this.completeMethod.emit({ originalEvent: e, query: this.query });\n this._open.set(true);\n this._activeIndex.set(-1);\n }\n\n readonly wrapperClass = computed(() => {\n const focused = this.open();\n return focused\n ? 'border-primary'\n : 'border-(--f-form-field-border-color) hover:border-(--f-form-field-hover-border-color)';\n });\n\n getLabel(item: unknown): string {\n if (!item) return '';\n if (typeof item !== 'object') return String(item);\n return String((item as Record<string, unknown>)[this.field()] ?? item);\n }\n\n onQueryChange(q: string): void {\n this.query = q;\n clearTimeout(this._debounce);\n if (q.length < this.minLength()) {\n this._open.set(false);\n return;\n }\n this._debounce = setTimeout(() => {\n this.completeMethod.emit({ originalEvent: new Event('input'), query: q });\n this._open.set(true);\n this._activeIndex.set(-1);\n }, this.delay());\n }\n\n _handleFocus(): void {\n this.focusEvent.emit();\n if (this.completeOnFocus() && this.query.length >= this.minLength()) {\n this.completeMethod.emit({ originalEvent: new Event('focus'), query: this.query });\n this._open.set(true);\n }\n }\n\n _handleBlur(): void {\n this.blurEvent.emit();\n setTimeout(() => {\n if (this.forceSelection() && this.filteredSuggestions().length === 0) {\n this.query = '';\n }\n this._open.set(false);\n this._onTouched();\n }, 150);\n }\n\n onKeyDown(e: KeyboardEvent): void {\n const len = this.filteredSuggestions().length;\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n this._activeIndex.update(i => Math.min(i + 1, len - 1));\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n this._activeIndex.update(i => Math.max(i - 1, -1));\n } else if (e.key === 'Enter') {\n e.preventDefault();\n const idx = this.activeIndex();\n if (idx >= 0) this.selectItem(e, this.filteredSuggestions()[idx]);\n } else if (e.key === 'Escape') {\n this._open.set(false);\n }\n }\n\n selectItem(e: Event, item: unknown): void {\n e.preventDefault();\n if (this.multiple()) {\n this._selectedItems.update(arr => [...arr, item]);\n this.query = '';\n const val = this.selectedItems();\n this._onChange(val);\n this.onSelect.emit({ originalEvent: e, value: item });\n this.onChange.emit(val);\n } else {\n this.query = this.getLabel(item);\n this._value.set(item);\n this._onChange(item);\n this.onSelect.emit({ originalEvent: e, value: item });\n this.onChange.emit(item);\n }\n this._open.set(false);\n this._activeIndex.set(-1);\n }\n\n removeChip(idx: number, e: Event): void {\n const removed = this.selectedItems()[idx];\n this._selectedItems.update(arr => arr.filter((_, i) => i !== idx));\n this.onUnselect.emit({ originalEvent: e, value: removed });\n this._onChange(this.selectedItems());\n }\n\n writeValue(val: unknown): void {\n if (this.multiple()) {\n this._selectedItems.set(Array.isArray(val) ? val : []);\n } else {\n this._value.set(val);\n this.query = val ? this.getLabel(val) : '';\n }\n }\n registerOnChange(fn: (v: unknown) => void): void { this._onChange = fn; }\n registerOnTouched(fn: () => void): void { this._onTouched = fn; }\n setDisabledState(): void {}\n}\n","import {\n booleanAttribute,\n Component,\n ElementRef,\n forwardRef,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\n\nexport type ColorFormat = 'hex' | 'rgb' | 'hsb';\nexport type ColorPickerChangeEvent = { value: string };\n\nfunction hexToRgb(hex: string): [number, number, number] {\n const clean = hex.replace('#', '');\n return [\n parseInt(clean.substring(0, 2), 16) || 0,\n parseInt(clean.substring(2, 4), 16) || 0,\n parseInt(clean.substring(4, 6), 16) || 0,\n ];\n}\n\nfunction rgbToHex(r: number, g: number, b: number): string {\n const toHex = (n: number) => Math.max(0, Math.min(255, Math.round(n))).toString(16).padStart(2, '0');\n return `#${toHex(r)}${toHex(g)}${toHex(b)}`.toUpperCase();\n}\n\nfunction rgbToHsb(r: number, g: number, b: number): [number, number, number] {\n r /= 255; g /= 255; b /= 255;\n const max = Math.max(r, g, b), min = Math.min(r, g, b);\n const delta = max - min;\n let h = 0;\n if (delta !== 0) {\n if (max === r) h = ((g - b) / delta) % 6;\n else if (max === g) h = (b - r) / delta + 2;\n else h = (r - g) / delta + 4;\n h *= 60;\n if (h < 0) h += 360;\n }\n const s = max === 0 ? 0 : delta / max;\n return [Math.round(h), Math.round(s * 100), Math.round(max * 100)];\n}\n\nfunction hsbToRgb(h: number, s: number, b: number): [number, number, number] {\n s /= 100; b /= 100;\n const k = (n: number) => (n + h / 60) % 6;\n const f = (n: number) => b * (1 - s * Math.max(0, Math.min(k(n), 4 - k(n), 1)));\n return [Math.round(f(5) * 255), Math.round(f(3) * 255), Math.round(f(1) * 255)];\n}\n\nfunction formatColor(hex: string, format: ColorFormat): string {\n if (format === 'hex') return hex;\n const [r, g, b] = hexToRgb(hex);\n if (format === 'rgb') return `rgb(${r}, ${g}, ${b})`;\n const [h, s, br] = rgbToHsb(r, g, b);\n return `hsb(${h}, ${s}%, ${br}%)`;\n}\n\nfunction parseColor(value: string): string {\n const v = value.trim();\n if (v.startsWith('#')) return v;\n const rgbMatch = v.match(/^rgb\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\)$/i);\n if (rgbMatch) return rgbToHex(+rgbMatch[1], +rgbMatch[2], +rgbMatch[3]);\n const hsbMatch = v.match(/^hsb\\(\\s*(\\d+)\\s*,\\s*(\\d+)%?\\s*,\\s*(\\d+)%?\\s*\\)$/i);\n if (hsbMatch) {\n const [r, g, b] = hsbToRgb(+hsbMatch[1], +hsbMatch[2], +hsbMatch[3]);\n return rgbToHex(r, g, b);\n }\n return '#000000';\n}\n\nconst PRESET_COLORS = [\n '#ef4444', '#f97316', '#eab308', '#22c55e', '#14b8a6', '#06b6d4',\n '#3b82f6', '#8b5cf6', '#ec4899', '#f43f5e', '#000000', '#ffffff',\n '#6b7280', '#1f2937', '#d1d5db', '#fef9c3', '#dcfce7', '#dbeafe',\n];\n\n@Component({\n selector: 'f-colorpicker',\n imports: [FormsModule, NgTemplateOutlet],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => ColorPickerComponent), multi: true }],\n host: {\n class: 'relative inline-block',\n '(document:click)': 'onDocumentClick($event)',\n },\n template: `\n @if (inline()) {\n <ng-container [ngTemplateOutlet]=\"pickerPanel\" />\n } @else {\n <button\n type=\"button\"\n class=\"w-8 h-8 rounded-lg border-2 border-(--f-content-border-color) shadow-sm hover:border-(--f-form-field-hover-border-color) transition-all cursor-pointer overflow-hidden\"\n [style.background-color]=\"value()\"\n [disabled]=\"disabled()\"\n (click)=\"togglePanel()\"\n [attr.aria-label]=\"'Pick color'\"\n ></button>\n\n @if (open()) {\n <div class=\"absolute z-50 top-10 left-0 bg-(--f-overlay-popover-background) border border-(--f-content-border-color) rounded-lg shadow-lg p-3 w-56 space-y-3\">\n <ng-container [ngTemplateOutlet]=\"pickerPanel\" />\n </div>\n }\n }\n\n <ng-template #pickerPanel>\n <div class=\"space-y-3\">\n <div class=\"flex flex-wrap gap-1.5\">\n @for (color of presetColors; track color) {\n <button\n type=\"button\"\n class=\"w-6 h-6 rounded-md border border-(--f-content-border-color) hover:scale-110 transition-transform cursor-pointer\"\n [style.background-color]=\"color\"\n [class.ring-2]=\"value() === color\"\n [class.ring-primary]=\"value() === color\"\n (click)=\"selectPreset(color)\"\n [attr.title]=\"color\"\n ></button>\n }\n </div>\n\n <div class=\"flex items-center gap-2\">\n <div\n class=\"w-7 h-7 rounded-md border border-(--f-content-border-color) shrink-0\"\n [style.background-color]=\"value()\"\n ></div>\n <input\n type=\"text\"\n class=\"flex-1 px-2 py-1 text-xs border border-(--f-form-field-border-color) rounded-lg focus:outline-none focus:border-primary focus:ring-focus font-mono uppercase\"\n [ngModel]=\"hexInput()\"\n (ngModelChange)=\"onHexInput($event)\"\n maxlength=\"7\"\n placeholder=\"#000000\"\n />\n <input\n type=\"color\"\n class=\"w-7 h-7 rounded-md cursor-pointer border-0 p-0\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"onNativeChange($event)\"\n />\n </div>\n </div>\n </ng-template>\n `,\n})\nexport class ColorPickerComponent implements ControlValueAccessor {\n private readonly _el = inject(ElementRef);\n\n onDocumentClick(e: MouseEvent): void {\n if (this.open() && !this._el.nativeElement.contains(e.target)) {\n this._open.set(false);\n }\n }\n\n readonly format = input<ColorFormat>('hex');\n readonly inline = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n\n readonly onChange = output<ColorPickerChangeEvent>();\n\n private readonly _open = signal(false);\n readonly open = this._open.asReadonly();\n private readonly _value = signal('#000000');\n readonly value = this._value.asReadonly();\n\n readonly hexInput = this._value.asReadonly();\n\n readonly presetColors = PRESET_COLORS;\n\n private _onChange: (v: unknown) => void = () => {};\n private _onTouched: () => void = () => {};\n\n togglePanel(): void {\n if (!this.disabled()) this._open.update(v => !v);\n }\n\n selectPreset(color: string): void {\n this._setValue(color);\n this._open.set(false);\n }\n\n onHexInput(hex: string): void {\n const normalized = hex.startsWith('#') ? hex : `#${hex}`;\n if (/^#[0-9a-fA-F]{6}$/.test(normalized)) {\n this._setValue(normalized.toUpperCase());\n }\n }\n\n onNativeChange(color: string): void {\n this._setValue(color.toUpperCase());\n }\n\n private _setValue(hex: string): void {\n this._value.set(hex);\n const formatted = formatColor(hex, this.format());\n this._onChange(formatted);\n this._onTouched();\n this.onChange.emit({ value: formatted });\n }\n\n writeValue(val: unknown): void { this._value.set(val ? parseColor(String(val)) : '#000000'); }\n registerOnChange(fn: (v: unknown) => void): void { this._onChange = fn; }\n registerOnTouched(fn: () => void): void { this._onTouched = fn; }\n setDisabledState(): void {}\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n forwardRef,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport interface ListboxChangeEvent {\n originalEvent: Event;\n value: unknown;\n}\n\n@Component({\n selector: 'f-listbox',\n imports: [UiIconComponent],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => ListboxComponent), multi: true }],\n host: { class: 'block' },\n template: `\n <div\n class=\"w-full border border-(--f-content-border-color) rounded-lg bg-(--f-content-background) overflow-hidden shadow-sm\"\n [class.opacity-60]=\"disabled()\"\n [class.pointer-events-none]=\"disabled()\"\n >\n @if (filter()) {\n <div class=\"p-2 border-b border-(--f-content-border-color)\">\n <div class=\"flex items-center gap-2 px-2 py-1.5 bg-(--f-content-hover-background) rounded-lg border border-(--f-content-border-color)\">\n <ui-icon name=\"search\" class=\"text-xs text-(--f-text-muted-color) shrink-0\"></ui-icon>\n <input\n type=\"text\"\n class=\"flex-1 text-sm bg-transparent focus:outline-none text-(--f-text-color) placeholder:text-(--f-form-field-placeholder-color)\"\n [placeholder]=\"filterPlaceholder()\"\n [value]=\"filterText()\"\n (input)=\"onFilterInput($event)\"\n />\n @if (filterText()) {\n <button type=\"button\" class=\"inline-flex items-center text-(--f-text-muted-color) hover:text-(--f-text-hover-color)\" (click)=\"clearFilter()\">\n <ui-icon name=\"times\" class=\"text-xs\"></ui-icon>\n </button>\n }\n </div>\n </div>\n }\n\n <ul\n class=\"overflow-auto divide-y divide-(--f-content-border-color)\"\n [style.max-height]=\"listStyle()?.['max-height'] || '12rem'\"\n role=\"listbox\"\n [attr.aria-multiselectable]=\"multiple()\"\n >\n @for (opt of filteredOptions(); track getOptionValue(opt)) {\n <li\n role=\"option\"\n [attr.aria-selected]=\"isSelected(opt)\"\n class=\"flex items-center gap-3 px-3 py-2.5 cursor-pointer transition-colors text-sm select-none\"\n [class]=\"optionClass(opt)\"\n (click)=\"onOptionClick($event, opt)\"\n >\n @if (multiple()) {\n <span\n class=\"w-4 h-4 rounded-sm border flex items-center justify-center shrink-0 transition-colors\"\n [class]=\"isSelected(opt) ? 'bg-primary border-primary' : 'border-(--f-form-field-border-color) bg-(--f-form-field-background)'\"\n >\n @if (isSelected(opt)) {\n <ui-icon name=\"check\" class=\"text-[10px] text-primary-contrast\"></ui-icon>\n }\n </span>\n } @else {\n @if (isSelected(opt)) {\n <ui-icon name=\"check\" class=\"text-xs text-primary shrink-0\"></ui-icon>\n } @else {\n <span class=\"w-3 h-3 shrink-0\"></span>\n }\n }\n <span class=\"flex-1 truncate\">{{ getOptionLabel(opt) }}</span>\n </li>\n } @empty {\n <li class=\"py-8 flex flex-col items-center gap-2 text-(--f-text-muted-color)\">\n <ui-icon name=\"inbox\" class=\"text-xl\"></ui-icon>\n <span class=\"text-sm\">{{ emptyMessage() }}</span>\n </li>\n }\n </ul>\n </div>\n `,\n})\nexport class ListboxComponent implements ControlValueAccessor {\n readonly options = input<unknown[]>([]);\n readonly optionLabel = input<string>('label');\n readonly optionValue = input<string>('value');\n readonly multiple = input(false, { transform: booleanAttribute });\n readonly filter = input(false, { transform: booleanAttribute });\n readonly filterPlaceholder = input<string>('Search...');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly listStyle = input<Record<string, string> | null>(null);\n readonly metaKeySelection = input(false, { transform: booleanAttribute });\n readonly emptyMessage = input<string>('No results');\n readonly emptyFilterMessage = input<string>('No results found');\n\n readonly onChange = output<ListboxChangeEvent>();\n\n private readonly _filterText = signal('');\n readonly filterText = this._filterText.asReadonly();\n private readonly _value = signal<unknown>(null);\n\n private _onChange: (v: unknown) => void = () => {};\n private _onTouched: () => void = () => {};\n\n readonly filteredOptions = computed(() => {\n const q = this.filterText().toLowerCase();\n const opts = this.options() as Record<string, unknown>[];\n if (!q) return opts;\n return opts.filter(o => String(o[this.optionLabel()] ?? '').toLowerCase().includes(q));\n });\n\n onFilterInput(e: Event): void {\n this._filterText.set((e.target as HTMLInputElement).value);\n }\n\n clearFilter(): void {\n this._filterText.set('');\n }\n\n getOptionLabel(opt: unknown): string {\n if (!opt) return '';\n if (typeof opt !== 'object') return String(opt);\n return String((opt as Record<string, unknown>)[this.optionLabel()] ?? '');\n }\n\n getOptionValue(opt: unknown): unknown {\n if (!opt || typeof opt !== 'object') return opt;\n return (opt as Record<string, unknown>)[this.optionValue()];\n }\n\n isSelected(opt: unknown): boolean {\n const v = this.getOptionValue(opt);\n const cur = this._value();\n if (this.multiple()) return Array.isArray(cur) && cur.includes(v);\n return cur === v;\n }\n\n optionClass(opt: unknown): string {\n return this.isSelected(opt)\n ? 'bg-(--f-highlight-background) text-(--f-highlight-color) font-medium'\n : 'text-(--f-text-color) hover:bg-(--f-content-hover-background)';\n }\n\n onOptionClick(e: Event, opt: unknown): void {\n const v = this.getOptionValue(opt);\n let newVal: unknown;\n\n if (this.multiple()) {\n const cur = Array.isArray(this._value()) ? [...(this._value() as unknown[])] : [];\n const idx = cur.indexOf(v);\n if (idx >= 0) cur.splice(idx, 1); else cur.push(v);\n newVal = cur;\n } else {\n newVal = this._value() === v ? null : v;\n }\n\n this._value.set(newVal);\n this._onChange(newVal);\n this._onTouched();\n this.onChange.emit({ originalEvent: e, value: newVal });\n }\n\n writeValue(val: unknown): void { this._value.set(val ?? (this.multiple() ? [] : null)); }\n registerOnChange(fn: (v: unknown) => void): void { this._onChange = fn; }\n registerOnTouched(fn: () => void): void { this._onTouched = fn; }\n setDisabledState(): void {}\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { ButtonComponent, ButtonSeverity, severitySolidBackground } from '../button/button.component';\nimport { MenuItem } from '../../interfaces/menu-item';\n\n@Component({\n selector: 'f-splitbutton',\n imports: [UiIconComponent, ButtonComponent],\n host: {\n class: 'inline-flex',\n '(document:click)': 'onDocumentClick($event)',\n },\n template: `\n <div class=\"relative inline-flex\" [class.opacity-60]=\"disabled()\" [class.pointer-events-none]=\"disabled()\">\n <f-button\n [label]=\"label()\"\n [icon]=\"icon()\"\n [iconPos]=\"iconPos()\"\n [severity]=\"severity()\"\n [loading]=\"loading()\"\n [disabled]=\"disabled()\"\n [raised]=\"raised()\"\n [rounded]=\"rounded()\"\n [outlined]=\"outlined()\"\n [text]=\"text()\"\n [size]=\"size()\"\n class=\"rounded-r-none border-r-0\"\n (onClick)=\"onClick.emit($event)\"\n />\n <button\n type=\"button\"\n [disabled]=\"disabled() || loading()\"\n [class]=\"dropdownClass()\"\n (click)=\"toggleMenu($event)\"\n [attr.aria-expanded]=\"open()\"\n aria-haspopup=\"listbox\"\n >\n <ui-icon name=\"chevron-down\" class=\"text-xs\"></ui-icon>\n </button>\n\n @if (open() && model().length > 0) {\n <div [class]=\"'absolute z-50 right-0 top-full mt-1 min-w-[10rem] bg-(--f-overlay-popover-background) border border-(--f-content-border-color) rounded-lg shadow-lg overflow-hidden ' + menuStyleClass()\">\n <ul class=\"py-1\" role=\"listbox\">\n @for (item of model(); track $index) {\n @if (item.separator) {\n <li class=\"my-1 border-t border-(--f-content-border-color)\"></li>\n } @else if (item.visible !== false) {\n <li\n role=\"option\"\n class=\"flex items-center gap-2.5 px-3 py-2 text-sm cursor-pointer transition-colors\"\n [class]=\"item.disabled ? 'opacity-60 pointer-events-none text-(--f-text-muted-color)' : 'text-(--f-text-color) hover:bg-(--f-content-hover-background)'\"\n (click)=\"onItemClick($event, item)\"\n >\n @if (item.icon) {\n <ui-icon [name]=\"item.icon\" class=\"text-xs text-(--f-text-muted-color)\"></ui-icon>\n }\n <span class=\"flex-1\">{{ item.label }}</span>\n @if (item.badge) {\n <span class=\"text-xs px-1.5 py-0.5 rounded-full bg-primary/10 text-primary font-medium\">{{ item.badge }}</span>\n }\n </li>\n }\n }\n </ul>\n </div>\n }\n </div>\n `,\n})\nexport class SplitButtonComponent {\n private readonly _el = inject(ElementRef);\n\n onDocumentClick(e: MouseEvent): void {\n if (this.open() && !this._el.nativeElement.contains(e.target)) {\n this._open.set(false);\n }\n }\n\n readonly label = input<string>('');\n readonly icon = input<string>('');\n readonly model = input<MenuItem[]>([]);\n readonly severity = input<ButtonSeverity>('primary');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly loading = input(false, { transform: booleanAttribute });\n readonly raised = input(false, { transform: booleanAttribute });\n readonly rounded = input(false, { transform: booleanAttribute });\n readonly outlined = input(false, { transform: booleanAttribute });\n readonly text = input(false, { transform: booleanAttribute });\n readonly iconPos = input<'left' | 'right'>('left');\n readonly size = input<'small' | 'large' | null>(null);\n readonly menuStyleClass = input<string>('');\n readonly appendTo = input<string>('body');\n\n readonly onClick = output<MouseEvent>();\n readonly onDropdownClick = output<MouseEvent>();\n\n private readonly _open = signal(false);\n readonly open = this._open.asReadonly();\n\n readonly dropdownClass = computed(() => {\n const sev = this.severity();\n const base = 'inline-flex items-center justify-center px-2.5 py-2 text-sm font-medium cursor-pointer transition-all duration-[var(--f-transition-duration)] rounded-r-lg border-l border-white/20 focus:outline-none focus-visible:ring-focus disabled:opacity-60 disabled:pointer-events-none';\n const secondaryBorder = sev === 'secondary' ? 'border border-(--f-content-border-color) border-l-(--f-content-border-color)' : '';\n return `${base} ${severitySolidBackground(sev)} ${secondaryBorder}`;\n });\n\n toggleMenu(e: MouseEvent): void {\n this._open.update(v => !v);\n this.onDropdownClick.emit(e);\n }\n\n onItemClick(e: Event, item: MenuItem): void {\n if (item.disabled) return;\n item.command?.({ originalEvent: e, item });\n this._open.set(false);\n }\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n contentChild,\n inject,\n Injectable,\n input,\n signal,\n TemplateRef,\n} from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { TreeNode } from '../../interfaces/tree-node';\n\nexport interface TreeTableNode<T = unknown> {\n node: TreeNode<T>;\n level: number;\n leaf: boolean;\n expanded: boolean;\n visible: boolean;\n}\n\nlet _uidCounter = 0;\n\nfunction assignKey(node: TreeNode): string {\n if (!(node as Record<string, unknown>)['__uid']) {\n (node as Record<string, unknown>)['__uid'] = `tt_${_uidCounter++}`;\n }\n return (node as Record<string, unknown>)['__uid'] as string;\n}\n\n@Injectable()\nexport class TreeTableService {\n private readonly _expanded = signal<ReadonlySet<string>>(new Set());\n readonly expanded = this._expanded.asReadonly();\n\n toggle(key: string, node: TreeNode): void {\n this._expanded.update(s => {\n const next = new Set(s);\n if (next.has(key)) {\n next.delete(key);\n node.expanded = false;\n } else {\n next.add(key);\n node.expanded = true;\n }\n return next;\n });\n }\n\n isExpanded(key: string): boolean {\n return this._expanded().has(key);\n }\n}\n\n@Component({\n selector: 'f-treetabletoggler',\n imports: [UiIconComponent],\n template: `\n @if (!rowNode().leaf) {\n <button\n type=\"button\"\n class=\"inline-flex items-center justify-center w-6 h-6 rounded-md text-(--f-text-muted-color) hover:bg-(--f-content-hover-background) hover:text-(--f-text-hover-color) transition-colors duration-[var(--f-transition-duration)] cursor-pointer shrink-0 align-middle focus:outline-none focus-visible:ring-focus\"\n (click)=\"onToggle($event)\"\n [attr.aria-expanded]=\"rowNode().expanded\"\n >\n <ui-icon [name]=\"rowNode().expanded ? 'chevron-down' : 'chevron-right'\" class=\"text-xs\"></ui-icon>\n </button>\n } @else {\n <span class=\"inline-block w-6 h-6 shrink-0\"></span>\n }\n `,\n host: {\n class: 'inline-flex items-center align-middle',\n '[style.padding-left.px]': 'rowNode().level * 16',\n },\n})\nexport class TreeTableTogglerComponent {\n readonly rowNode = input.required<TreeTableNode>();\n\n private readonly svc = inject(TreeTableService, { optional: true });\n\n onToggle(event: Event): void {\n event.stopPropagation();\n const rn = this.rowNode();\n const key = assignKey(rn.node);\n this.svc?.toggle(key, rn.node);\n }\n}\n\n@Component({\n selector: 'f-treetable',\n imports: [UiIconComponent, NgTemplateOutlet],\n providers: [TreeTableService],\n styles: [`\n :host ::ng-deep table thead tr th {\n padding: 0.625rem 1rem;\n font-size: 0.68rem;\n font-weight: 600;\n letter-spacing: 0.07em;\n text-transform: uppercase;\n color: var(--f-text-muted-color);\n white-space: nowrap;\n background: transparent;\n }\n :host ::ng-deep table tbody tr td {\n padding: 0.8125rem 1rem;\n color: var(--f-text-color);\n font-size: 0.875rem;\n vertical-align: middle;\n }\n :host ::ng-deep table tbody tr:hover td {\n background-color: var(--f-content-hover-background);\n }\n `],\n template: `\n <div\n class=\"w-full overflow-x-auto rounded-lg border border-(--f-content-border-color) bg-(--f-content-background) shadow-sm\"\n [style]=\"tableStyle()\"\n >\n @if (loading()) {\n <div class=\"flex flex-col items-center justify-center py-20 gap-3\">\n <ui-icon name=\"loader-circle\" [spin]=\"true\" class=\"text-2xl text-primary/60\"></ui-icon>\n <span class=\"text-sm text-(--f-text-muted-color)\">Loading...</span>\n </div>\n } @else {\n <table class=\"w-full text-sm text-left border-collapse\">\n <thead class=\"bg-(--f-content-hover-background) border-b border-(--f-content-border-color)\">\n @if (headerTemplate()) {\n <ng-container [ngTemplateOutlet]=\"headerTemplate()\" />\n }\n </thead>\n <tbody class=\"divide-y divide-(--f-content-border-color)\">\n @if (flatRows().length > 0) {\n @for (row of flatRows(); track trackByRow($index, row)) {\n @if (row.visible) {\n @if (bodyTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"bodyTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row.node.data, rowNode: row }\"\n />\n }\n }\n }\n } @else {\n @if (emptyTemplate()) {\n <ng-container [ngTemplateOutlet]=\"emptyTemplate()\" />\n } @else {\n <tr>\n <td [attr.colspan]=\"100\" class=\"text-center py-16 text-(--f-text-muted-color)\">\n <div class=\"flex flex-col items-center gap-3\">\n <div class=\"w-12 h-12 rounded-full bg-(--f-content-hover-background) flex items-center justify-center\">\n <ui-icon name=\"inbox\" class=\"text-xl text-(--f-text-muted-color)\"></ui-icon>\n </div>\n <p class=\"text-sm font-medium text-(--f-text-muted-color)\">No records found</p>\n </div>\n </td>\n </tr>\n }\n }\n </tbody>\n </table>\n }\n </div>\n `,\n host: { '[class]': 'styleClass()' },\n})\nexport class TreeTableComponent {\n readonly value = input<TreeNode[]>([]);\n readonly loading = input(false, { transform: booleanAttribute });\n readonly dataKey = input<string>('id');\n readonly styleClass = input<string>('');\n readonly tableStyle = input<Record<string, string> | null>(null);\n readonly scrollable = input(false, { transform: booleanAttribute });\n\n readonly headerTemplate = contentChild<TemplateRef<unknown>>('header');\n readonly bodyTemplate = contentChild<TemplateRef<unknown>>('body');\n readonly emptyTemplate = contentChild<TemplateRef<unknown>>('emptymessage');\n\n private readonly svc = inject(TreeTableService);\n\n readonly flatRows = computed<TreeTableNode[]>(() => {\n const expandedKeys = this.svc.expanded();\n const rows: TreeTableNode[] = [];\n this._flatten(this.value(), rows, 0, true, expandedKeys);\n return rows;\n });\n\n trackByRow(_idx: number, row: TreeTableNode): unknown {\n return assignKey(row.node);\n }\n\n private _flatten(\n nodes: TreeNode[],\n out: TreeTableNode[],\n level: number,\n parentVisible: boolean,\n expandedKeys: ReadonlySet<string>,\n ): void {\n for (const node of nodes) {\n const key = assignKey(node);\n const isLeaf = !node.children || node.children.length === 0;\n const isExpanded = expandedKeys.has(key) || node.expanded === true;\n\n out.push({\n node,\n level,\n leaf: isLeaf,\n expanded: isExpanded,\n visible: parentVisible,\n });\n\n if (!isLeaf && isExpanded) {\n this._flatten(node.children!, out, level + 1, parentVisible, expandedKeys);\n }\n }\n }\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n ElementRef,\n forwardRef,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { TreeNode } from '../../interfaces/tree-node';\n\nexport type TreeSelectionMode = 'single' | 'multiple' | 'checkbox';\n\ninterface FlatTreeSelectNode {\n node: TreeNode;\n key: string;\n level: number;\n leaf: boolean;\n visible: boolean;\n}\n\nlet _uidCounter = 0;\n\nfunction assignKey(node: TreeNode): string {\n if (!node.key) {\n node.key = `ts_${_uidCounter++}`;\n }\n return node.key;\n}\n\n@Component({\n selector: 'f-treeselect',\n imports: [UiIconComponent],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => TreeSelectComponent), multi: true }],\n host: { '[class]': 'styleClass()', '(document:click)': 'onDocumentClick($event)' },\n template: `\n <div class=\"relative w-full\">\n <div [class]=\"triggerClass()\" (click)=\"toggleOpen()\">\n @if (selectionMode() === 'single') {\n <span class=\"truncate text-sm\" [class.text-(--f-form-field-placeholder-color)]=\"!selectedLabels().length\">\n @if (selectedLabels().length) {\n {{ selectedLabels()[0] }}\n } @else {\n {{ placeholder() }}\n }\n </span>\n } @else if (selectedLabels().length) {\n <div class=\"flex flex-wrap items-center gap-1 flex-1 min-w-0\">\n @for (lbl of selectedLabels(); track $index) {\n <span class=\"inline-flex items-center gap-1 px-2 py-0.5 bg-primary/10 text-primary rounded-md text-xs font-medium shrink-0\">\n {{ lbl }}\n <button type=\"button\" aria-label=\"Remove\" class=\"inline-flex items-center justify-center hover:opacity-70 cursor-pointer\" (click)=\"removeByKey($event, findKeyByLabel(lbl))\">\n <ui-icon name=\"times\" class=\"text-[10px]\"></ui-icon>\n </button>\n </span>\n }\n </div>\n } @else {\n <span class=\"text-(--f-form-field-placeholder-color) text-sm\">{{ placeholder() }}</span>\n }\n <ui-icon name=\"chevron-down\" class=\"ml-auto text-xs text-(--f-form-field-placeholder-color) shrink-0 transition-transform duration-[var(--f-transition-duration)]\" [class.rotate-180]=\"open()\"></ui-icon>\n </div>\n\n @if (open()) {\n <div class=\"absolute z-50 w-full mt-1 bg-(--f-overlay-popover-background) border border-(--f-content-border-color) rounded-lg shadow-lg overflow-hidden\">\n @if (filter()) {\n <div class=\"p-2 border-b border-(--f-content-border-color)\">\n <div class=\"flex items-center gap-2 px-2 py-1.5 bg-(--f-content-hover-background) rounded-lg border border-(--f-content-border-color)\">\n <ui-icon name=\"search\" class=\"text-xs text-(--f-text-muted-color) shrink-0\"></ui-icon>\n <input type=\"text\" class=\"flex-1 text-sm bg-transparent focus:outline-none text-(--f-text-color) placeholder:text-(--f-form-field-placeholder-color)\"\n placeholder=\"Search...\" [value]=\"filterText()\" (input)=\"onFilterInput($any($event.target).value)\" (click)=\"$event.stopPropagation()\" />\n </div>\n </div>\n }\n <div class=\"max-h-64 overflow-auto py-1\">\n @for (row of flatNodes(); track row.key) {\n @if (row.visible) {\n <div\n class=\"w-full text-left px-2 py-1.5 text-sm flex items-center gap-1.5 transition-colors cursor-pointer\"\n [style.padding-left.px]=\"row.level * 16 + 8\"\n [class]=\"isSelected(row.key) && selectionMode() !== 'checkbox' ? 'bg-(--f-highlight-background) text-(--f-highlight-color)' : 'text-(--f-text-color) hover:bg-(--f-content-hover-background)'\"\n (click)=\"onNodeClick($event, row)\"\n >\n @if (!row.leaf) {\n <button type=\"button\" class=\"inline-flex items-center justify-center w-5 h-5 rounded-md hover:bg-(--f-content-hover-background) shrink-0 cursor-pointer\" (click)=\"toggleExpand($event, row.key)\">\n <ui-icon [name]=\"isExpanded(row.key) ? 'chevron-down' : 'chevron-right'\" class=\"text-[10px]\"></ui-icon>\n </button>\n } @else {\n <span class=\"inline-block w-5 h-5 shrink-0\"></span>\n }\n\n @if (selectionMode() === 'checkbox') {\n <div class=\"w-4 h-4 rounded-sm border flex items-center justify-center shrink-0 transition-colors\"\n [class]=\"isSelected(row.key) ? 'bg-primary border-primary' : (isPartial(row.key) ? 'bg-primary/30 border-primary' : 'border-(--f-form-field-border-color) bg-(--f-form-field-background)')\">\n @if (isSelected(row.key)) {\n <ui-icon name=\"check\" class=\"text-[9px] text-primary-contrast\"></ui-icon>\n } @else if (isPartial(row.key)) {\n <ui-icon name=\"minus\" class=\"text-[9px] text-primary-contrast\"></ui-icon>\n }\n </div>\n }\n\n @if (row.node.icon) {\n <ui-icon [name]=\"row.node.icon\" class=\"text-xs text-(--f-text-muted-color) shrink-0\"></ui-icon>\n }\n <span class=\"flex-1 truncate\">{{ row.node.label }}</span>\n </div>\n }\n }\n @empty {\n <div class=\"py-6 flex flex-col items-center gap-2\">\n <ui-icon name=\"inbox\" class=\"text-2xl text-(--f-text-muted-color)\"></ui-icon>\n <span class=\"text-sm text-(--f-text-muted-color)\">No options</span>\n </div>\n }\n </div>\n </div>\n }\n </div>\n `,\n})\nexport class TreeSelectComponent implements ControlValueAccessor {\n private readonly _el = inject(ElementRef);\n\n readonly options = input<TreeNode[]>([]);\n readonly placeholder = input<string>('Select');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly filter = input(false, { transform: booleanAttribute });\n readonly selectionMode = input<TreeSelectionMode>('single');\n readonly invalid = input(false, { transform: booleanAttribute });\n // Overwritten with the field's touch state when bound via signal forms [formField]\n readonly touched = input(true);\n readonly styleClass = input<string>('');\n\n private readonly _open = signal(false);\n readonly open = this._open.asReadonly();\n private readonly _filterText = signal('');\n readonly filterText = this._filterText.asReadonly();\n private readonly _selectedKeys = signal<Set<string>>(new Set());\n readonly selectedKeys = this._selectedKeys.asReadonly();\n private readonly expandedKeys = signal<Set<string>>(new Set());\n\n private _onChange: (v: unknown) => void = () => {};\n private _onTouched: () => void = () => {};\n private _keyToNode = new Map<string, TreeNode>();\n\n readonly triggerClass = computed(() => {\n const base = 'w-full min-h-[38px] flex items-center gap-2 px-3 py-1.5 text-sm rounded-lg border bg-(--f-form-field-background) focus:outline-none focus-visible:ring-focus transition-all duration-[var(--f-transition-duration)]';\n const showInvalid = this.invalid() && this.touched();\n const stateClass = this.open()\n ? (showInvalid ? 'border-red-400' : 'border-primary')\n : (showInvalid ? 'border-red-400' : 'border-(--f-form-field-border-color) hover:border-(--f-form-field-hover-border-color)');\n const disabledClass = this.disabled() ? 'opacity-60 cursor-not-allowed' : 'cursor-pointer';\n return `${base} ${stateClass} ${disabledClass}`;\n });\n\n readonly flatNodes = computed<FlatTreeSelectNode[]>(() => {\n const expanded = this.expandedKeys();\n const q = this.filterText().toLowerCase();\n const out: FlatTreeSelectNode[] = [];\n this._keyToNode.clear();\n this._flatten(this.options(), out, 0, true, expanded, q);\n return out;\n });\n\n readonly selectedLabels = computed(() => {\n const keys = this.selectedKeys();\n const labels: string[] = [];\n for (const row of this.flatNodes()) {\n if (keys.has(row.key)) labels.push(row.node.label ?? '');\n }\n return labels;\n });\n\n private _flatten(\n nodes: TreeNode[],\n out: FlatTreeSelectNode[],\n level: number,\n parentVisible: boolean,\n expanded: Set<string>,\n query: string,\n ): boolean {\n let anyMatch = false;\n for (const node of nodes) {\n const key = assignKey(node);\n this._keyToNode.set(key, node);\n const isLeaf = !node.children || node.children.length === 0;\n const selfMatch = !query || String(node.label ?? '').toLowerCase().includes(query);\n\n const startIdx = out.length;\n out.push({ node, key, level, leaf: isLeaf, visible: parentVisible });\n\n let childMatch = false;\n if (!isLeaf) {\n childMatch = this._flatten(node.children!, out, level + 1, parentVisible && (expanded.has(key) || !!query), expanded, query);\n }\n\n const matches = selfMatch || childMatch;\n out[startIdx].visible = parentVisible && matches;\n anyMatch = anyMatch || matches;\n }\n return anyMatch;\n }\n\n onDocumentClick(e: MouseEvent): void {\n if (this.open() && !this._el.nativeElement.contains(e.target)) {\n this._open.set(false);\n this._onTouched();\n }\n }\n\n onFilterInput(v: string): void { this._filterText.set(v); }\n\n toggleOpen(): void {\n if (this.disabled()) return;\n this._open.update(v => !v);\n if (!this.open()) this._onTouched();\n }\n\n toggleExpand(e: Event, key: string): void {\n e.stopPropagation();\n this.expandedKeys.update(s => {\n const next = new Set(s);\n next.has(key) ? next.delete(key) : next.add(key);\n return next;\n });\n }\n\n isExpanded(key: string): boolean {\n return this.expandedKeys().has(key);\n }\n\n isSelected(key: string): boolean {\n return this.selectedKeys().has(key);\n }\n\n isPartial(key: string): boolean {\n if (this.selectionMode() !== 'checkbox' || this.selectedKeys().has(key)) return false;\n const node = this._keyToNode.get(key);\n if (!node?.children?.length) return false;\n let any = false;\n let all = true;\n for (const child of node.children) {\n const childKey = assignKey(child);\n const childSelected = this.selectedKeys().has(childKey) || this.isPartial(childKey);\n any = any || childSelected;\n all = all && this.selectedKeys().has(childKey);\n }\n return any && !all;\n }\n\n onNodeClick(e: Event, row: FlatTreeSelectNode): void {\n e.stopPropagation();\n if (this.selectionMode() === 'checkbox') {\n this.toggleCheckbox(row.key);\n } else if (this.selectionMode() === 'multiple') {\n this.toggleMultiple(row.key);\n } else {\n this._selectedKeys.set(new Set([row.key]));\n this.emitChange();\n this._open.set(false);\n this._onTouched();\n }\n }\n\n private toggleMultiple(key: string): void {\n this._selectedKeys.update(s => {\n const next = new Set(s);\n next.has(key) ? next.delete(key) : next.add(key);\n return next;\n });\n this.emitChange();\n }\n\n private toggleCheckbox(key: string): void {\n const node = this._keyToNode.get(key);\n if (!node) return;\n const next = new Set(this.selectedKeys());\n const willSelect = !next.has(key);\n this.setDescendantSelection(node, willSelect, next);\n this._selectedKeys.set(next);\n this.emitChange();\n }\n\n private setDescendantSelection(node: TreeNode, selected: boolean, set: Set<string>): void {\n const key = assignKey(node);\n selected ? set.add(key) : set.delete(key);\n for (const child of node.children ?? []) {\n this.setDescendantSelection(child, selected, set);\n }\n }\n\n findKeyByLabel(label: string): string {\n for (const row of this.flatNodes()) {\n if (row.node.label === label) return row.key;\n }\n return '';\n }\n\n removeByKey(e: Event, key: string): void {\n e.stopPropagation();\n if (!key) return;\n if (this.selectionMode() === 'checkbox') {\n this.toggleCheckbox(key);\n } else {\n this.toggleMultiple(key);\n }\n }\n\n private emitChange(): void {\n const keys = this.selectedKeys();\n if (this.selectionMode() === 'single') {\n const [first] = keys;\n this._onChange(first ?? null);\n return;\n }\n this._onChange(Array.from(keys));\n }\n\n writeValue(v: unknown): void {\n if (v === null || v === undefined) {\n this._selectedKeys.set(new Set());\n } else if (Array.isArray(v)) {\n this._selectedKeys.set(new Set(v as string[]));\n } else {\n this._selectedKeys.set(new Set([v as string]));\n }\n }\n registerOnChange(fn: (v: unknown) => void): void { this._onChange = fn; }\n registerOnTouched(fn: () => void): void { this._onTouched = fn; }\n setDisabledState(): void {}\n}\n","import { Component, computed, input } from '@angular/core';\n\nexport type BadgeSeverity = 'success' | 'info' | 'warn' | 'danger' | 'secondary' | 'contrast' | null;\nexport type BadgeSize = 'small' | 'large' | 'xlarge' | null;\n\n@Component({\n selector: 'f-badge',\n template: `\n <span [class]=\"classes()\">\n {{ value() }}\n <ng-content></ng-content>\n </span>\n `,\n})\nexport class BadgeComponent {\n readonly value = input<string | number>('');\n readonly severity = input<BadgeSeverity>(null);\n readonly size = input<BadgeSize>(null);\n\n readonly classes = computed(() => {\n const sizeMap: Record<string, string> = {\n small: 'min-w-4 h-4 text-[10px]',\n large: 'min-w-6 h-6 text-sm',\n xlarge: 'min-w-7 h-7 text-base',\n };\n const sz = this.size();\n const base = `inline-flex items-center justify-center rounded-full px-1.5 font-bold leading-none ${sz ? sizeMap[sz] : 'min-w-5 h-5 text-xs'}`;\n const colorMap: Record<string, string> = {\n success: 'bg-green-500 text-white',\n info: 'bg-sky-500 text-white',\n warn: 'bg-amber-500 text-white',\n danger: 'bg-red-500 text-white',\n secondary: 'bg-surface-200 text-surface-700',\n contrast: 'bg-surface-950 text-surface-0',\n };\n const sev = this.severity();\n return `${base} ${sev ? (colorMap[sev] ?? colorMap['secondary']) : 'bg-primary text-primary-contrast'}`;\n });\n}\n","import { Component, input } from '@angular/core';\nimport { BadgeComponent, BadgeSeverity, BadgeSize } from '../badge/badge.component';\n\n@Component({\n selector: 'f-overlaybadge',\n imports: [BadgeComponent],\n template: `\n <div class=\"relative inline-flex\">\n <ng-content></ng-content>\n <f-badge [value]=\"value()\" [severity]=\"severity()\" [size]=\"size()\" class=\"absolute -top-1 -right-1\"></f-badge>\n </div>\n `,\n})\nexport class OverlayBadgeComponent {\n readonly value = input<string | number>('');\n readonly severity = input<BadgeSeverity>(null);\n readonly size = input<BadgeSize>(null);\n}\n","import { booleanAttribute, Component, input, model } from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\n@Component({\n selector: 'f-fieldset',\n imports: [UiIconComponent],\n template: `\n <fieldset class=\"border border-(--f-content-border-color) rounded-lg p-4 pt-0\">\n <legend\n class=\"px-2 text-sm font-semibold text-(--f-text-color) flex items-center gap-2 rounded focus-visible:outline-none focus-visible:ring-focus\"\n [class.cursor-pointer]=\"toggleable()\"\n [attr.tabindex]=\"toggleable() ? 0 : null\"\n [attr.role]=\"toggleable() ? 'button' : null\"\n [attr.aria-expanded]=\"toggleable() ? !collapsed() : null\"\n (click)=\"toggleable() && toggleCollapsed()\"\n (keydown.enter)=\"toggleable() && toggleCollapsed()\"\n (keydown.space)=\"onSpace($event)\"\n >\n @if (toggleable()) {\n <ui-icon [name]=\"collapsed() ? 'chevron-right' : 'chevron-down'\" class=\"text-xs\"></ui-icon>\n }\n {{ legend() }}\n </legend>\n @if (!collapsed()) {\n <div class=\"pt-2\">\n <ng-content />\n </div>\n }\n </fieldset>\n `,\n})\nexport class FieldsetComponent {\n readonly legend = input<string>('');\n readonly toggleable = input(false, { transform: booleanAttribute });\n readonly collapsed = model(false);\n\n toggleCollapsed(): void { this.collapsed.update(v => !v); }\n\n onSpace(event: Event): void {\n if (!this.toggleable()) return;\n event.preventDefault();\n this.toggleCollapsed();\n }\n}\n","import { Component, computed, input } from '@angular/core';\n\nexport type FloatLabelVariant = 'over' | 'in' | 'on';\n\n@Component({\n selector: 'f-floatlabel',\n host: { '[class]': 'hostClass()' },\n styles: [`\n :host ::ng-deep input,\n :host ::ng-deep .f-floatlabel-target {\n &::placeholder { color: transparent; }\n }\n :host(.f-floatlabel-over) ::ng-deep label {\n position: absolute;\n inset-inline-start: 0.75rem;\n top: 50%;\n transform: translateY(-50%);\n transition: all var(--f-transition-duration, 0.2s) ease;\n pointer-events: none;\n color: var(--f-form-field-placeholder-color);\n }\n :host(.f-floatlabel-over):has(input:focus) ::ng-deep label,\n :host(.f-floatlabel-over):has(input:not(:placeholder-shown)) ::ng-deep label {\n top: -0.6rem;\n font-size: 0.75rem;\n background: var(--f-content-background);\n padding: 0 0.25rem;\n color: var(--f-primary-color, var(--color-primary));\n }\n `],\n template: `\n <div class=\"relative w-full\">\n <ng-content />\n </div>\n `,\n})\nexport class FloatLabelComponent {\n readonly variant = input<FloatLabelVariant>('over');\n\n readonly hostClass = computed(() => `block w-full f-floatlabel-${this.variant()}`);\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'f-iftalabel',\n host: { class: 'relative block w-full' },\n styles: [`\n :host ::ng-deep label {\n position: absolute;\n inset-inline-start: 0.75rem;\n top: 0.4rem;\n font-size: 0.7rem;\n color: var(--f-text-muted-color);\n pointer-events: none;\n }\n :host ::ng-deep input,\n :host ::ng-deep .f-iftalabel-target {\n padding-top: 1.35rem !important;\n padding-bottom: 0.35rem !important;\n }\n `],\n template: `<ng-content></ng-content>`,\n})\nexport class IftaLabelComponent {}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'f-buttongroup',\n host: {\n class: 'inline-flex [&>button]:rounded-none [&>button:first-child]:rounded-s-lg [&>button:last-child]:rounded-e-lg [&>button:not(:first-child)]:-ms-px',\n },\n template: `<ng-content></ng-content>`,\n})\nexport class ButtonGroupComponent {}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'f-inputgroup',\n host: {\n class: 'flex items-stretch w-full [&>*]:rounded-none [&>*:first-child]:rounded-s-lg [&>*:last-child]:rounded-e-lg [&>*:not(:first-child)]:-ms-px',\n },\n template: `<ng-content></ng-content>`,\n})\nexport class InputGroupComponent {}\n\n@Component({\n selector: 'f-inputgroupaddon',\n host: {\n class: 'inline-flex items-center justify-center px-3 text-sm text-(--f-text-muted-color) bg-(--f-content-hover-background) border border-(--f-content-border-color)',\n },\n template: `<ng-content></ng-content>`,\n})\nexport class InputGroupAddonComponent {}\n","import { isPlatformBrowser } from '@angular/common';\nimport { Component, effect, ElementRef, inject, input, PLATFORM_ID, signal } from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\n@Component({\n selector: 'f-scrolltop',\n imports: [UiIconComponent],\n styles: [`\n .scrolltop-btn { transition: opacity var(--f-transition-duration, 0.2s) ease, transform var(--f-transition-duration, 0.2s) ease; }\n `],\n template: `\n <button\n type=\"button\"\n class=\"scrolltop-btn fixed z-50 w-10 h-10 rounded-full bg-primary text-primary-contrast shadow-lg flex items-center justify-center hover:bg-primary-emphasis focus:outline-none focus-visible:ring-focus cursor-pointer\"\n [class.opacity-0]=\"!visible()\"\n [class.scale-75]=\"!visible()\"\n [class.pointer-events-none]=\"!visible()\"\n [style.bottom.px]=\"20\"\n [style.right.px]=\"20\"\n [attr.aria-label]=\"buttonAriaLabel()\"\n (click)=\"scrollToTop()\"\n >\n <ui-icon name=\"arrow-up\" class=\"text-sm\"></ui-icon>\n </button>\n `,\n})\nexport class ScrollTopComponent {\n private readonly el = inject(ElementRef<HTMLElement>);\n private readonly platformId = inject(PLATFORM_ID);\n\n readonly threshold = input<number>(400);\n readonly behavior = input<ScrollBehavior>('smooth');\n readonly target = input<'window' | 'parent'>('window');\n readonly buttonAriaLabel = input<string>('Scroll to top');\n\n private readonly _visible = signal(false);\n readonly visible = this._visible.asReadonly();\n\n constructor() {\n effect((onCleanup) => {\n if (!isPlatformBrowser(this.platformId)) return;\n const scrollEl = this.getScrollElement();\n const handler = (): void => this.onScroll();\n scrollEl.addEventListener('scroll', handler);\n onCleanup(() => scrollEl.removeEventListener('scroll', handler));\n });\n }\n\n private getScrollElement(): Window | HTMLElement {\n if (this.target() === 'parent') {\n return this.el.nativeElement.parentElement ?? window;\n }\n return window;\n }\n\n private getScrollTop(): number {\n const scrollEl = this.getScrollElement();\n return scrollEl === window ? window.scrollY : (scrollEl as HTMLElement).scrollTop;\n }\n\n onScroll(): void {\n this._visible.set(this.getScrollTop() > this.threshold());\n }\n\n scrollToTop(): void {\n const scrollEl = this.getScrollElement();\n if (scrollEl === window) {\n window.scrollTo({ top: 0, behavior: this.behavior() });\n } else {\n (scrollEl as HTMLElement).scrollTo({ top: 0, behavior: this.behavior() });\n }\n }\n}\n","import { Component, computed, input } from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\nexport interface MeterItem {\n label: string;\n value: number;\n color?: string;\n icon?: string;\n}\n\n@Component({\n selector: 'f-metergroup',\n imports: [UiIconComponent],\n host: { class: 'block w-full' },\n template: `\n <div class=\"w-full\">\n <div class=\"flex w-full h-2 rounded-full overflow-hidden bg-(--f-content-hover-background)\">\n @for (item of values(); track item.label) {\n <div\n class=\"h-full transition-all duration-300\"\n [style.width.%]=\"percent(item.value)\"\n [style.background-color]=\"item.color || 'var(--color-primary)'\"\n ></div>\n }\n </div>\n <div class=\"flex flex-wrap gap-4 mt-3\">\n @for (item of values(); track item.label) {\n <div class=\"flex items-center gap-2 text-sm\">\n <span class=\"w-2.5 h-2.5 rounded-full shrink-0\" [style.background-color]=\"item.color || 'var(--color-primary)'\"></span>\n @if (item.icon) { <ui-icon [name]=\"item.icon\" class=\"text-xs text-(--f-text-muted-color)\"></ui-icon> }\n <span class=\"text-(--f-text-muted-color)\">{{ item.label }}</span>\n <span class=\"font-semibold text-(--f-text-color)\">{{ item.value }}</span>\n </div>\n }\n </div>\n </div>\n `,\n})\nexport class MeterGroupComponent {\n readonly values = input<MeterItem[]>([]);\n readonly min = input<number>(0);\n readonly max = input<number>(100);\n\n percent(value: number): number {\n const min = this.min();\n const range = this.max() - min;\n if (range <= 0) return 0;\n return Math.min(100, Math.max(0, ((value - min) / range) * 100));\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'f-fluid',\n host: { class: 'block w-full [&_input]:w-full [&_button]:w-full [&_select]:w-full' },\n template: `<ng-content></ng-content>`,\n})\nexport class FluidComponent {}\n","import { booleanAttribute, Component, input } from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\n@Component({\n selector: 'f-blockui',\n imports: [UiIconComponent],\n host: { class: 'relative block' },\n styles: [`\n .blockui-mask { transition: opacity var(--f-transition-duration, 0.2s) ease; }\n `],\n template: `\n <ng-content></ng-content>\n <div\n class=\"blockui-mask absolute inset-0 z-40 flex items-center justify-center bg-(--f-content-background)/60 backdrop-blur-[1px] rounded-[inherit]\"\n [class.opacity-0]=\"!blocked()\"\n [class.pointer-events-none]=\"!blocked()\"\n >\n <ng-content select=\"[block-template]\"></ng-content>\n @if (!hasCustomTemplate()) {\n <ui-icon name=\"loader-circle\" [spin]=\"true\" class=\"text-2xl text-primary\"></ui-icon>\n }\n </div>\n `,\n})\nexport class BlockUiComponent {\n readonly blocked = input(false, { transform: booleanAttribute });\n readonly hasCustomTemplate = input(false, { transform: booleanAttribute });\n}\n","import {\n booleanAttribute,\n Component,\n ElementRef,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { RouterLink } from '@angular/router';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { MenuItem } from '../../interfaces/menu-item';\n\n@Component({\n selector: 'f-menu',\n imports: [UiIconComponent, NgTemplateOutlet, RouterLink],\n host: { class: 'block', '(document:click)': 'onDocumentClick($event)' },\n template: `\n <ng-template #contentTpl let-item>\n @if (item.icon) {\n <ui-icon [name]=\"item.icon\" class=\"text-xs text-(--f-text-muted-color) shrink-0\"></ui-icon>\n }\n <span class=\"flex-1 truncate\">{{ item.label }}</span>\n @if (item.badge) {\n <span class=\"text-xs px-1.5 py-0.5 rounded-full bg-primary/10 text-primary font-medium\">{{ item.badge }}</span>\n }\n @if (item.selected) {\n <ui-icon name=\"check\" class=\"text-primary text-sm shrink-0\"></ui-icon>\n }\n </ng-template>\n\n @if (!popup() || visible()) {\n <div\n [class]=\"popup()\n ? 'absolute z-50 mt-1 min-w-[12rem] bg-(--f-overlay-popover-background) border border-(--f-content-border-color) rounded-lg shadow-lg overflow-hidden'\n : 'w-full bg-(--f-content-background) border border-(--f-content-border-color) rounded-lg overflow-hidden'\"\n >\n <ul class=\"py-1\" role=\"menu\" (keydown)=\"onKeydown($event)\">\n @for (item of model(); track $index) {\n @if (item.separator) {\n <li class=\"my-1 border-t border-(--f-content-border-color)\" role=\"separator\"></li>\n } @else if (item.visible !== false) {\n @let itemClass = item.disabled\n ? 'w-full flex items-center gap-2.5 px-3 py-2 text-sm text-left transition-colors opacity-60 pointer-events-none text-(--f-text-muted-color) focus:outline-none focus-visible:ring-focus'\n : item.selected\n ? 'w-full flex items-center gap-2.5 px-3 py-2 text-sm text-left transition-colors bg-primary/10 text-primary cursor-pointer focus:outline-none focus-visible:ring-focus'\n : 'w-full flex items-center gap-2.5 px-3 py-2 text-sm text-left transition-colors text-(--f-text-color) hover:bg-(--f-content-hover-background) cursor-pointer focus:outline-none focus-visible:ring-focus';\n <li role=\"none\">\n @if (item.routerLink) {\n <a\n role=\"menuitem\"\n [attr.aria-checked]=\"item.selected ?? null\"\n [class]=\"itemClass\"\n [routerLink]=\"item.routerLink\"\n [queryParams]=\"item.queryParams\"\n (click)=\"onItemClick($event, item)\"\n >\n <ng-container [ngTemplateOutlet]=\"contentTpl\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </a>\n } @else if (item.url) {\n <a\n role=\"menuitem\"\n [attr.aria-checked]=\"item.selected ?? null\"\n [class]=\"itemClass\"\n [href]=\"item.url\"\n [target]=\"item.target ?? null\"\n (click)=\"onItemClick($event, item)\"\n >\n <ng-container [ngTemplateOutlet]=\"contentTpl\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </a>\n } @else {\n <button\n type=\"button\"\n role=\"menuitem\"\n [attr.aria-checked]=\"item.selected ?? null\"\n [class]=\"itemClass\"\n (click)=\"onItemClick($event, item)\"\n >\n <ng-container [ngTemplateOutlet]=\"contentTpl\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </button>\n }\n </li>\n }\n }\n @empty {\n <li class=\"px-3 py-2 text-sm text-(--f-text-muted-color)\">No items</li>\n }\n </ul>\n </div>\n }\n `,\n})\nexport class MenuComponent {\n private readonly _el = inject(ElementRef);\n\n readonly model = input<MenuItem[]>([]);\n readonly popup = input(false, { transform: booleanAttribute });\n\n private readonly _visible = signal(false);\n readonly visible = this._visible.asReadonly();\n private _openedAt = 0;\n\n toggle(event?: Event): void {\n event?.stopPropagation();\n this._openedAt = Date.now();\n this._visible.update(v => !v);\n }\n\n show(event?: Event): void {\n event?.stopPropagation();\n this._openedAt = Date.now();\n this._visible.set(true);\n }\n\n hide(): void { this._visible.set(false); }\n\n onDocumentClick(e: MouseEvent): void {\n if (Date.now() - this._openedAt < 50) return;\n if (this.popup() && this.visible() && !this._el.nativeElement.contains(e.target)) {\n this._visible.set(false);\n }\n }\n\n onItemClick(e: Event, item: MenuItem): void {\n if (item.disabled) return;\n item.command?.({ originalEvent: e, item });\n if (this.popup()) this._visible.set(false);\n }\n\n onKeydown(e: KeyboardEvent): void {\n const items = Array.from(\n (e.currentTarget as HTMLElement).querySelectorAll<HTMLElement>('[role=\"menuitem\"]'),\n );\n if (!items.length) return;\n const currentIndex = items.indexOf(document.activeElement as HTMLElement);\n\n switch (e.key) {\n case 'ArrowDown': {\n e.preventDefault();\n items[(currentIndex + 1 + items.length) % items.length].focus();\n break;\n }\n case 'ArrowUp': {\n e.preventDefault();\n items[(currentIndex - 1 + items.length) % items.length].focus();\n break;\n }\n case 'Home': {\n e.preventDefault();\n items[0].focus();\n break;\n }\n case 'End': {\n e.preventDefault();\n items[items.length - 1].focus();\n break;\n }\n case 'Escape': {\n if (this.popup()) {\n e.preventDefault();\n this.hide();\n }\n break;\n }\n case ' ': {\n if (document.activeElement instanceof HTMLAnchorElement) {\n e.preventDefault();\n document.activeElement.click();\n }\n break;\n }\n }\n }\n}\n","import { Component, ElementRef, inject, input, signal } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { RouterLink } from '@angular/router';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { MenuItem } from '../../interfaces/menu-item';\n\n@Component({\n selector: 'f-menubar',\n imports: [UiIconComponent, NgTemplateOutlet, RouterLink],\n host: {\n class: 'block',\n '(document:click)': 'onDocumentClick($event)',\n },\n template: `\n <ng-template #contentTpl let-item>\n @if (item.icon) { <ui-icon [name]=\"item.icon\" class=\"text-xs text-(--f-text-muted-color) shrink-0\"></ui-icon> }\n <span class=\"flex-1 truncate\">{{ item.label }}</span>\n @if (item.items?.length) { <ui-icon name=\"chevron-right\" class=\"text-[10px] text-(--f-text-muted-color) shrink-0\"></ui-icon> }\n </ng-template>\n\n <ng-template #submenuTpl let-list>\n <ul class=\"py-1 min-w-[12rem] bg-(--f-overlay-popover-background) border border-(--f-content-border-color) rounded-lg shadow-lg overflow-visible\" role=\"menu\" (keydown)=\"onSubmenuKeydown($event)\">\n @for (item of list; track $index) {\n @if (item.separator) {\n <li class=\"my-1 border-t border-(--f-content-border-color)\" role=\"separator\"></li>\n } @else if (item.visible !== false) {\n @let itemClass = item.disabled\n ? 'w-full flex items-center gap-2.5 px-3 py-2 text-sm text-left transition-colors opacity-60 pointer-events-none text-(--f-text-muted-color) focus:outline-none focus-visible:ring-focus'\n : 'w-full flex items-center gap-2.5 px-3 py-2 text-sm text-left transition-colors text-(--f-text-color) hover:bg-(--f-content-hover-background) cursor-pointer focus:outline-none focus-visible:ring-focus';\n <li role=\"none\" class=\"relative\" (mouseenter)=\"onSubEnter(item)\" (mouseleave)=\"onSubLeave(item)\">\n @if (item.routerLink) {\n <a role=\"menuitem\" [class]=\"itemClass\" [routerLink]=\"item.routerLink\" [queryParams]=\"item.queryParams\" (click)=\"onItemClick($event, item)\">\n <ng-container [ngTemplateOutlet]=\"contentTpl\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </a>\n } @else if (item.url) {\n <a role=\"menuitem\" [class]=\"itemClass\" [href]=\"item.url\" [target]=\"item.target ?? null\" (click)=\"onItemClick($event, item)\">\n <ng-container [ngTemplateOutlet]=\"contentTpl\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </a>\n } @else {\n <button type=\"button\" role=\"menuitem\" [class]=\"itemClass\" (click)=\"onItemClick($event, item)\">\n <ng-container [ngTemplateOutlet]=\"contentTpl\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </button>\n }\n @if (item.items?.length && activeSubItem() === item) {\n <div class=\"absolute left-full top-0 -mt-1 ml-0.5\">\n <ng-container [ngTemplateOutlet]=\"submenuTpl\" [ngTemplateOutletContext]=\"{ $implicit: item.items }\" />\n </div>\n }\n </li>\n }\n }\n </ul>\n </ng-template>\n\n <ul class=\"flex items-center gap-1 p-1.5 bg-(--f-content-background) border border-(--f-content-border-color) rounded-lg\" role=\"menubar\" (keydown)=\"onRootKeydown($event)\">\n @for (item of model(); track $index) {\n @if (item.visible !== false) {\n @let rootClass = item.disabled\n ? 'flex items-center gap-2 px-3 py-2 text-sm font-medium rounded-md transition-colors opacity-60 pointer-events-none text-(--f-text-muted-color) focus:outline-none focus-visible:ring-focus'\n : (activeRoot() === item\n ? 'flex items-center gap-2 px-3 py-2 text-sm font-medium rounded-md transition-colors bg-(--f-content-hover-background) text-(--f-text-color) cursor-pointer focus:outline-none focus-visible:ring-focus'\n : 'flex items-center gap-2 px-3 py-2 text-sm font-medium rounded-md transition-colors text-(--f-text-color) hover:bg-(--f-content-hover-background) cursor-pointer focus:outline-none focus-visible:ring-focus');\n <li class=\"relative\" role=\"none\" (mouseenter)=\"onRootEnter(item)\" (mouseleave)=\"onRootLeave(item)\">\n @if (item.routerLink) {\n <a role=\"menuitem\" [class]=\"rootClass\" [routerLink]=\"item.routerLink\" [queryParams]=\"item.queryParams\" (click)=\"onRootClick($event, item)\">\n @if (item.icon) { <ui-icon [name]=\"item.icon\" class=\"text-xs\"></ui-icon> }\n <span>{{ item.label }}</span>\n @if (item.items?.length) { <ui-icon name=\"chevron-down\" class=\"text-[10px]\"></ui-icon> }\n </a>\n } @else if (item.url) {\n <a role=\"menuitem\" [class]=\"rootClass\" [href]=\"item.url\" [target]=\"item.target ?? null\" (click)=\"onRootClick($event, item)\">\n @if (item.icon) { <ui-icon [name]=\"item.icon\" class=\"text-xs\"></ui-icon> }\n <span>{{ item.label }}</span>\n @if (item.items?.length) { <ui-icon name=\"chevron-down\" class=\"text-[10px]\"></ui-icon> }\n </a>\n } @else {\n <button type=\"button\" role=\"menuitem\" [class]=\"rootClass\" (click)=\"onRootClick($event, item)\">\n @if (item.icon) { <ui-icon [name]=\"item.icon\" class=\"text-xs\"></ui-icon> }\n <span>{{ item.label }}</span>\n @if (item.items?.length) { <ui-icon name=\"chevron-down\" class=\"text-[10px]\"></ui-icon> }\n </button>\n }\n @if (item.items?.length && activeRoot() === item) {\n <div class=\"absolute left-0 top-full mt-1\">\n <ng-container [ngTemplateOutlet]=\"submenuTpl\" [ngTemplateOutletContext]=\"{ $implicit: item.items }\" />\n </div>\n }\n </li>\n }\n }\n </ul>\n `,\n})\nexport class MenubarComponent {\n private readonly _el = inject(ElementRef);\n\n readonly model = input<MenuItem[]>([]);\n\n private readonly _activeRoot = signal<MenuItem | null>(null);\n readonly activeRoot = this._activeRoot.asReadonly();\n private readonly _activeSubItem = signal<MenuItem | null>(null);\n readonly activeSubItem = this._activeSubItem.asReadonly();\n\n onRootEnter(item: MenuItem): void {\n if (this.activeRoot() && item.items?.length) this._activeRoot.set(item);\n }\n\n onRootLeave(item: MenuItem): void {\n if (this.activeRoot() === item) this._activeRoot.set(null);\n }\n\n onRootClick(e: Event, item: MenuItem): void {\n if (item.disabled) return;\n if (item.items?.length) {\n this._activeRoot.set(this.activeRoot() === item ? null : item);\n return;\n }\n item.command?.({ originalEvent: e, item });\n this._activeRoot.set(null);\n }\n\n onSubEnter(item: MenuItem): void {\n if (item.items?.length) this._activeSubItem.set(item);\n }\n\n onSubLeave(item: MenuItem): void {\n if (this.activeSubItem() === item) this._activeSubItem.set(null);\n }\n\n onItemClick(e: Event, item: MenuItem): void {\n if (item.disabled || item.items?.length) return;\n item.command?.({ originalEvent: e, item });\n this._activeRoot.set(null);\n this._activeSubItem.set(null);\n }\n\n onDocumentClick(e: MouseEvent): void {\n if (!this._el.nativeElement.contains(e.target)) {\n this._activeRoot.set(null);\n this._activeSubItem.set(null);\n }\n }\n\n onRootKeydown(e: KeyboardEvent): void {\n const items = Array.from(\n (e.currentTarget as HTMLElement).querySelectorAll<HTMLElement>(':scope > li[role=\"none\"] > [role=\"menuitem\"]'),\n );\n if (!items.length) return;\n const currentIndex = items.indexOf(document.activeElement as HTMLElement);\n\n switch (e.key) {\n case 'ArrowRight':\n e.preventDefault();\n items[(currentIndex + 1 + items.length) % items.length]?.focus();\n break;\n case 'ArrowLeft':\n e.preventDefault();\n items[(currentIndex - 1 + items.length) % items.length]?.focus();\n break;\n case 'ArrowDown': {\n e.preventDefault();\n const li = (document.activeElement as HTMLElement)?.closest('li');\n const trigger = li?.querySelector<HTMLElement>(':scope > [role=\"menuitem\"]');\n if (trigger) trigger.click();\n break;\n }\n case 'Escape':\n e.preventDefault();\n this._activeRoot.set(null);\n this._activeSubItem.set(null);\n break;\n case ' ':\n if (document.activeElement instanceof HTMLAnchorElement) {\n e.preventDefault();\n document.activeElement.click();\n }\n break;\n }\n }\n\n onSubmenuKeydown(e: KeyboardEvent): void {\n e.stopPropagation();\n const ul = (e.target as HTMLElement).closest('ul');\n if (!ul) return;\n const items = Array.from(ul.querySelectorAll<HTMLElement>(':scope > li[role=\"none\"] > [role=\"menuitem\"]'));\n const currentIndex = items.indexOf(document.activeElement as HTMLElement);\n\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n items[(currentIndex + 1 + items.length) % items.length]?.focus();\n break;\n case 'ArrowUp':\n e.preventDefault();\n items[(currentIndex - 1 + items.length) % items.length]?.focus();\n break;\n case 'Home':\n e.preventDefault();\n items[0]?.focus();\n break;\n case 'End':\n e.preventDefault();\n items[items.length - 1]?.focus();\n break;\n case 'Escape':\n e.preventDefault();\n this._activeRoot.set(null);\n this._activeSubItem.set(null);\n break;\n case ' ':\n if (document.activeElement instanceof HTMLAnchorElement) {\n e.preventDefault();\n document.activeElement.click();\n }\n break;\n }\n }\n}\n","import {\n booleanAttribute,\n Component,\n ElementRef,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { RouterLink } from '@angular/router';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { MenuItem } from '../../interfaces/menu-item';\n\n@Component({\n selector: 'f-tieredmenu',\n imports: [UiIconComponent, NgTemplateOutlet, RouterLink],\n host: { class: 'block', '(document:click)': 'onDocumentClick($event)' },\n template: `\n <ng-template #contentTpl let-item>\n @if (item.icon) {\n <ui-icon [name]=\"item.icon\" class=\"text-xs text-(--f-text-muted-color) shrink-0\"></ui-icon>\n }\n <span class=\"flex-1 truncate\">{{ item.label }}</span>\n @if (item.items?.length) {\n <ui-icon name=\"chevron-right\" class=\"text-[10px] text-(--f-text-muted-color) shrink-0\"></ui-icon>\n }\n </ng-template>\n\n <ng-template #itemsTpl let-list let-root=\"root\">\n <ul\n [class]=\"root\n ? 'py-1 min-w-[12rem] bg-(--f-overlay-popover-background) border border-(--f-content-border-color) rounded-lg shadow-lg overflow-visible'\n : 'py-1 min-w-[12rem] bg-(--f-overlay-popover-background) border border-(--f-content-border-color) rounded-lg shadow-lg overflow-visible absolute left-full top-0 -mt-1 ml-0.5'\"\n role=\"menu\"\n >\n @for (item of list; track $index) {\n @if (item.separator) {\n <li class=\"my-1 border-t border-(--f-content-border-color)\" role=\"separator\"></li>\n } @else if (item.visible !== false) {\n @let itemClass = item.disabled\n ? 'w-full flex items-center gap-2.5 px-3 py-2 text-sm text-left transition-colors opacity-60 pointer-events-none text-(--f-text-muted-color) focus:outline-none focus-visible:ring-focus'\n : 'w-full flex items-center gap-2.5 px-3 py-2 text-sm text-left transition-colors text-(--f-text-color) hover:bg-(--f-content-hover-background) cursor-pointer focus:outline-none focus-visible:ring-focus';\n <li role=\"none\" class=\"relative\" (mouseenter)=\"onEnter(item)\" (mouseleave)=\"onLeave(item)\">\n @if (item.routerLink) {\n <a\n role=\"menuitem\"\n [class]=\"itemClass\"\n [routerLink]=\"item.routerLink\"\n [queryParams]=\"item.queryParams\"\n (click)=\"onItemClick($event, item)\"\n (keydown.arrowRight)=\"onArrowRight($event, item)\"\n (keydown.arrowLeft)=\"onArrowLeft($event)\"\n >\n <ng-container [ngTemplateOutlet]=\"contentTpl\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </a>\n } @else if (item.url) {\n <a\n role=\"menuitem\"\n [class]=\"itemClass\"\n [href]=\"item.url\"\n [target]=\"item.target ?? null\"\n (click)=\"onItemClick($event, item)\"\n (keydown.arrowRight)=\"onArrowRight($event, item)\"\n (keydown.arrowLeft)=\"onArrowLeft($event)\"\n >\n <ng-container [ngTemplateOutlet]=\"contentTpl\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </a>\n } @else {\n <button\n type=\"button\"\n role=\"menuitem\"\n [class]=\"itemClass\"\n (click)=\"onItemClick($event, item)\"\n (keydown.arrowRight)=\"onArrowRight($event, item)\"\n (keydown.arrowLeft)=\"onArrowLeft($event)\"\n >\n <ng-container [ngTemplateOutlet]=\"contentTpl\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </button>\n }\n @if (item.items?.length && activeItem() === item) {\n <ng-container [ngTemplateOutlet]=\"itemsTpl\" [ngTemplateOutletContext]=\"{ $implicit: item.items, root: false }\" />\n }\n </li>\n }\n }\n </ul>\n </ng-template>\n\n @if (!popup() || visible()) {\n <div class=\"relative inline-block\" (keydown)=\"onKeydown($event)\">\n <ng-container [ngTemplateOutlet]=\"itemsTpl\" [ngTemplateOutletContext]=\"{ $implicit: model(), root: true }\" />\n </div>\n }\n `,\n})\nexport class TieredMenuComponent {\n private readonly _el = inject(ElementRef);\n\n readonly model = input<MenuItem[]>([]);\n readonly popup = input(false, { transform: booleanAttribute });\n\n private readonly _visible = signal(false);\n readonly visible = this._visible.asReadonly();\n private readonly _activeItem = signal<MenuItem | null>(null);\n readonly activeItem = this._activeItem.asReadonly();\n private _openedAt = 0;\n\n toggle(event?: Event): void {\n event?.stopPropagation();\n this._openedAt = Date.now();\n this._visible.update(v => !v);\n }\n\n show(event?: Event): void {\n event?.stopPropagation();\n this._openedAt = Date.now();\n this._visible.set(true);\n }\n\n hide(): void { this._visible.set(false); this._activeItem.set(null); }\n\n onEnter(item: MenuItem): void {\n if (item.items?.length) this._activeItem.set(item);\n }\n\n onLeave(item: MenuItem): void {\n if (this.activeItem() === item) this._activeItem.set(null);\n }\n\n onDocumentClick(e: MouseEvent): void {\n if (Date.now() - this._openedAt < 50) return;\n if (this.popup() && this.visible() && !this._el.nativeElement.contains(e.target)) {\n this.hide();\n }\n }\n\n onItemClick(e: Event, item: MenuItem): void {\n if (item.disabled || item.items?.length) return;\n item.command?.({ originalEvent: e, item });\n if (this.popup()) this.hide();\n }\n\n onArrowRight(e: Event, item: MenuItem): void {\n if (!item.items?.length) return;\n e.preventDefault();\n e.stopPropagation();\n this._activeItem.set(item);\n const li = (e.target as HTMLElement).closest('li');\n queueMicrotask(() => {\n const firstChild = li?.querySelector<HTMLElement>(':scope > ul > li[role=\"none\"] > [role=\"menuitem\"]');\n firstChild?.focus();\n });\n }\n\n onArrowLeft(e: Event): void {\n const target = e.target as HTMLElement;\n const ul = target.closest('ul');\n const parentLi = ul?.parentElement?.closest('li');\n const parentTrigger = parentLi?.querySelector<HTMLElement>(':scope > [role=\"menuitem\"]');\n if (parentTrigger) {\n e.preventDefault();\n e.stopPropagation();\n this._activeItem.set(null);\n parentTrigger.focus();\n }\n }\n\n onKeydown(e: KeyboardEvent): void {\n const target = document.activeElement as HTMLElement;\n const ul = target?.closest('ul');\n if (!ul) return;\n const items = Array.from(ul.querySelectorAll<HTMLElement>(':scope > li[role=\"none\"] > [role=\"menuitem\"]'));\n const currentIndex = items.indexOf(target);\n\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n items[(currentIndex + 1 + items.length) % items.length]?.focus();\n break;\n case 'ArrowUp':\n e.preventDefault();\n items[(currentIndex - 1 + items.length) % items.length]?.focus();\n break;\n case 'Home':\n e.preventDefault();\n items[0]?.focus();\n break;\n case 'End':\n e.preventDefault();\n items[items.length - 1]?.focus();\n break;\n case 'Escape':\n if (this.popup()) {\n e.preventDefault();\n this.hide();\n }\n break;\n case ' ':\n if (document.activeElement instanceof HTMLAnchorElement) {\n e.preventDefault();\n document.activeElement.click();\n }\n break;\n }\n }\n}\n","import {\n Component,\n ElementRef,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { RouterLink } from '@angular/router';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { MenuItem } from '../../interfaces/menu-item';\n\n@Component({\n selector: 'f-contextmenu',\n imports: [UiIconComponent, NgTemplateOutlet, RouterLink],\n host: {\n class: 'block',\n '(document:click)': 'onDocumentClick($event)',\n '(document:contextmenu)': 'onDocumentContextMenu($event)',\n },\n template: `\n <ng-template #contentTpl let-item>\n @if (item.icon) {\n <ui-icon [name]=\"item.icon\" class=\"text-xs text-(--f-text-muted-color) shrink-0\"></ui-icon>\n }\n <span class=\"flex-1 truncate\">{{ item.label }}</span>\n </ng-template>\n\n @if (visible()) {\n <div\n class=\"fixed z-[60] min-w-[12rem] bg-(--f-overlay-popover-background) border border-(--f-content-border-color) rounded-lg shadow-lg overflow-hidden\"\n [style.top.px]=\"y()\"\n [style.left.px]=\"x()\"\n >\n <ul class=\"py-1\" role=\"menu\" (keydown)=\"onKeydown($event)\">\n @for (item of model(); track $index) {\n @if (item.separator) {\n <li class=\"my-1 border-t border-(--f-content-border-color)\" role=\"separator\"></li>\n } @else if (item.visible !== false) {\n @let itemClass = item.disabled\n ? 'w-full flex items-center gap-2.5 px-3 py-2 text-sm text-left transition-colors opacity-60 pointer-events-none text-(--f-text-muted-color) focus:outline-none focus-visible:ring-focus'\n : 'w-full flex items-center gap-2.5 px-3 py-2 text-sm text-left transition-colors text-(--f-text-color) hover:bg-(--f-content-hover-background) cursor-pointer focus:outline-none focus-visible:ring-focus';\n <li role=\"none\">\n @if (item.routerLink) {\n <a role=\"menuitem\" [class]=\"itemClass\" [routerLink]=\"item.routerLink\" [queryParams]=\"item.queryParams\" (click)=\"onItemClick($event, item)\">\n <ng-container [ngTemplateOutlet]=\"contentTpl\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </a>\n } @else if (item.url) {\n <a role=\"menuitem\" [class]=\"itemClass\" [href]=\"item.url\" [target]=\"item.target ?? null\" (click)=\"onItemClick($event, item)\">\n <ng-container [ngTemplateOutlet]=\"contentTpl\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </a>\n } @else {\n <button type=\"button\" role=\"menuitem\" [class]=\"itemClass\" (click)=\"onItemClick($event, item)\">\n <ng-container [ngTemplateOutlet]=\"contentTpl\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </button>\n }\n </li>\n }\n }\n </ul>\n </div>\n }\n `,\n})\nexport class ContextMenuComponent {\n private readonly _el = inject(ElementRef);\n\n readonly model = input<MenuItem[]>([]);\n readonly target = input<string>('');\n\n private readonly _visible = signal(false);\n readonly visible = this._visible.asReadonly();\n private readonly _x = signal(0);\n readonly x = this._x.asReadonly();\n private readonly _y = signal(0);\n readonly y = this._y.asReadonly();\n\n show(event: MouseEvent): void {\n event.preventDefault();\n this._x.set(event.clientX);\n this._y.set(event.clientY);\n this._visible.set(true);\n }\n\n hide(): void { this._visible.set(false); }\n\n onDocumentContextMenu(e: MouseEvent): void {\n const sel = this.target();\n if (!sel) return;\n const targetEl = (e.target as HTMLElement)?.closest(sel);\n if (targetEl) this.show(e);\n }\n\n onDocumentClick(e: MouseEvent): void {\n if (this.visible() && !this._el.nativeElement.contains(e.target)) {\n this._visible.set(false);\n }\n }\n\n onItemClick(e: Event, item: MenuItem): void {\n if (item.disabled) return;\n item.command?.({ originalEvent: e, item });\n this._visible.set(false);\n }\n\n onKeydown(e: KeyboardEvent): void {\n const items = Array.from(\n (e.currentTarget as HTMLElement).querySelectorAll<HTMLElement>('[role=\"menuitem\"]'),\n );\n if (!items.length) return;\n const currentIndex = items.indexOf(document.activeElement as HTMLElement);\n\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n items[(currentIndex + 1 + items.length) % items.length].focus();\n break;\n case 'ArrowUp':\n e.preventDefault();\n items[(currentIndex - 1 + items.length) % items.length].focus();\n break;\n case 'Home':\n e.preventDefault();\n items[0].focus();\n break;\n case 'End':\n e.preventDefault();\n items[items.length - 1].focus();\n break;\n case 'Escape':\n e.preventDefault();\n this.hide();\n break;\n case ' ':\n if (document.activeElement instanceof HTMLAnchorElement) {\n e.preventDefault();\n document.activeElement.click();\n }\n break;\n }\n }\n}\n","import { Component, ElementRef, inject, input, signal } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { MenuItem } from '../../interfaces/menu-item';\n\n@Component({\n selector: 'f-megamenu',\n imports: [UiIconComponent, RouterLink],\n host: { class: 'block relative', '(document:click)': 'onDocumentClick($event)' },\n template: `\n <ul class=\"flex items-center gap-1 p-1.5 bg-(--f-content-background) border border-(--f-content-border-color) rounded-lg relative\">\n @for (item of model(); track $index) {\n @if (item.visible !== false) {\n @let rootClass = item.disabled\n ? 'flex items-center gap-2 px-3 py-2 text-sm font-medium rounded-md transition-colors opacity-60 pointer-events-none text-(--f-text-muted-color) focus:outline-none focus-visible:ring-focus'\n : (activeItem() === item\n ? 'flex items-center gap-2 px-3 py-2 text-sm font-medium rounded-md transition-colors bg-(--f-content-hover-background) text-(--f-text-color) cursor-pointer focus:outline-none focus-visible:ring-focus'\n : 'flex items-center gap-2 px-3 py-2 text-sm font-medium rounded-md transition-colors text-(--f-text-color) hover:bg-(--f-content-hover-background) cursor-pointer focus:outline-none focus-visible:ring-focus');\n <li class=\"relative\">\n @if (item.routerLink) {\n <a [class]=\"rootClass\" [routerLink]=\"item.routerLink\" [queryParams]=\"item.queryParams\" (click)=\"onRootClick($event, item)\">\n @if (item.icon) { <ui-icon [name]=\"item.icon\" class=\"text-xs\"></ui-icon> }\n <span>{{ item.label }}</span>\n @if (item.items?.length) { <ui-icon name=\"chevron-down\" class=\"text-[10px]\"></ui-icon> }\n </a>\n } @else if (item.url) {\n <a [class]=\"rootClass\" [href]=\"item.url\" [target]=\"item.target ?? null\" (click)=\"onRootClick($event, item)\">\n @if (item.icon) { <ui-icon [name]=\"item.icon\" class=\"text-xs\"></ui-icon> }\n <span>{{ item.label }}</span>\n @if (item.items?.length) { <ui-icon name=\"chevron-down\" class=\"text-[10px]\"></ui-icon> }\n </a>\n } @else {\n <button type=\"button\" [class]=\"rootClass\" (click)=\"onRootClick($event, item)\">\n @if (item.icon) { <ui-icon [name]=\"item.icon\" class=\"text-xs\"></ui-icon> }\n <span>{{ item.label }}</span>\n @if (item.items?.length) { <ui-icon name=\"chevron-down\" class=\"text-[10px]\"></ui-icon> }\n </button>\n }\n\n @if (item.items?.length && activeItem() === item) {\n <div class=\"absolute left-0 top-full mt-1 z-50 flex gap-8 p-5 bg-(--f-overlay-popover-background) border border-(--f-content-border-color) rounded-lg shadow-lg min-w-max\">\n @for (column of item.items; track $index) {\n <div class=\"min-w-[10rem]\">\n @if (column.label) {\n <div class=\"text-xs font-semibold uppercase tracking-wide text-(--f-text-muted-color) mb-2\">{{ column.label }}</div>\n }\n <ul class=\"flex flex-col gap-1\">\n @for (link of column.items; track $index) {\n @let linkClass = link.disabled\n ? 'w-full flex items-center gap-2 px-2 py-1.5 text-sm text-left rounded-md transition-colors opacity-60 pointer-events-none text-(--f-text-muted-color) focus:outline-none focus-visible:ring-focus'\n : 'w-full flex items-center gap-2 px-2 py-1.5 text-sm text-left rounded-md transition-colors text-(--f-text-color) hover:bg-(--f-content-hover-background) cursor-pointer focus:outline-none focus-visible:ring-focus';\n <li>\n @if (link.routerLink) {\n <a [class]=\"linkClass\" [routerLink]=\"link.routerLink\" [queryParams]=\"link.queryParams\" (click)=\"onLeafClick($event, link)\">\n @if (link.icon) { <ui-icon [name]=\"link.icon\" class=\"text-xs text-(--f-text-muted-color)\"></ui-icon> }\n {{ link.label }}\n </a>\n } @else if (link.url) {\n <a [class]=\"linkClass\" [href]=\"link.url\" [target]=\"link.target ?? null\" (click)=\"onLeafClick($event, link)\">\n @if (link.icon) { <ui-icon [name]=\"link.icon\" class=\"text-xs text-(--f-text-muted-color)\"></ui-icon> }\n {{ link.label }}\n </a>\n } @else {\n <button type=\"button\" [class]=\"linkClass\" (click)=\"onLeafClick($event, link)\">\n @if (link.icon) { <ui-icon [name]=\"link.icon\" class=\"text-xs text-(--f-text-muted-color)\"></ui-icon> }\n {{ link.label }}\n </button>\n }\n </li>\n }\n </ul>\n </div>\n }\n </div>\n }\n </li>\n }\n }\n </ul>\n `,\n})\nexport class MegaMenuComponent {\n private readonly _el = inject(ElementRef);\n\n readonly model = input<MenuItem[]>([]);\n\n private readonly _activeItem = signal<MenuItem | null>(null);\n readonly activeItem = this._activeItem.asReadonly();\n\n onRootClick(e: Event, item: MenuItem): void {\n if (item.disabled) return;\n if (item.items?.length) {\n this._activeItem.set(this.activeItem() === item ? null : item);\n return;\n }\n item.command?.({ originalEvent: e, item });\n this._activeItem.set(null);\n }\n\n onLeafClick(e: Event, item: MenuItem): void {\n if (item.disabled) return;\n item.command?.({ originalEvent: e, item });\n this._activeItem.set(null);\n }\n\n onDocumentClick(e: MouseEvent): void {\n if (!this._el.nativeElement.contains(e.target)) this._activeItem.set(null);\n }\n}\n","import { Component, effect, input, signal } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { RouterLink } from '@angular/router';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { MenuItem } from '../../interfaces/menu-item';\n\n@Component({\n selector: 'f-panelmenu',\n imports: [UiIconComponent, NgTemplateOutlet, RouterLink],\n host: { class: 'block w-full' },\n template: `\n <ng-template #contentTpl let-item let-level=\"level\">\n @if (item.items?.length) {\n <ui-icon name=\"chevron-right\" class=\"text-[10px] text-(--f-text-muted-color) shrink-0 transition-transform duration-[var(--f-transition-duration)]\" [class.rotate-90]=\"isExpanded(item)\"></ui-icon>\n } @else {\n <span class=\"inline-block w-2.5\"></span>\n }\n @if (item.icon) { <ui-icon [name]=\"item.icon\" class=\"text-xs text-(--f-text-muted-color) shrink-0\"></ui-icon> }\n <span class=\"flex-1 truncate\">{{ item.label }}</span>\n </ng-template>\n\n <ng-template #itemsTpl let-list let-level=\"level\">\n <ul [class.pl-4]=\"level > 0\" (keydown)=\"onKeydown($event)\">\n @for (item of list; track $index) {\n @if (item.visible !== false) {\n @let itemClass = item.disabled\n ? 'w-full flex items-center gap-2.5 px-3 py-2.5 text-sm text-left rounded-md transition-colors opacity-60 pointer-events-none text-(--f-text-muted-color) focus:outline-none focus-visible:ring-focus'\n : 'w-full flex items-center gap-2.5 px-3 py-2.5 text-sm text-left rounded-md transition-colors text-(--f-text-color) hover:bg-(--f-content-hover-background) cursor-pointer focus:outline-none focus-visible:ring-focus';\n <li>\n @if (item.routerLink) {\n <a role=\"treeitem\" [class]=\"itemClass\" [routerLink]=\"item.routerLink\" [queryParams]=\"item.queryParams\" (click)=\"onItemClick($event, item)\">\n <ng-container [ngTemplateOutlet]=\"contentTpl\" [ngTemplateOutletContext]=\"{ $implicit: item, level: level }\" />\n </a>\n } @else if (item.url) {\n <a role=\"treeitem\" [class]=\"itemClass\" [href]=\"item.url\" [target]=\"item.target ?? null\" (click)=\"onItemClick($event, item)\">\n <ng-container [ngTemplateOutlet]=\"contentTpl\" [ngTemplateOutletContext]=\"{ $implicit: item, level: level }\" />\n </a>\n } @else {\n <button type=\"button\" role=\"treeitem\" [class]=\"itemClass\" (click)=\"onItemClick($event, item)\">\n <ng-container [ngTemplateOutlet]=\"contentTpl\" [ngTemplateOutletContext]=\"{ $implicit: item, level: level }\" />\n </button>\n }\n @if (item.items?.length) {\n <div class=\"grid [transition:grid-template-rows_220ms_ease]\" [style.grid-template-rows]=\"isExpanded(item) ? '1fr' : '0fr'\">\n <div class=\"overflow-hidden\">\n <ng-container [ngTemplateOutlet]=\"itemsTpl\" [ngTemplateOutletContext]=\"{ $implicit: item.items, level: level + 1 }\" />\n </div>\n </div>\n }\n </li>\n }\n }\n </ul>\n </ng-template>\n\n <div class=\"w-full bg-(--f-content-background) border border-(--f-content-border-color) rounded-lg p-1.5\">\n <ng-container [ngTemplateOutlet]=\"itemsTpl\" [ngTemplateOutletContext]=\"{ $implicit: model(), level: 0 }\" />\n </div>\n `,\n})\nexport class PanelMenuComponent {\n readonly model = input<MenuItem[]>([]);\n readonly multiple = input<boolean>(true);\n\n private readonly expanded = signal<Set<MenuItem>>(new Set());\n private _seeded = false;\n\n constructor() {\n effect(() => {\n const list = this.model();\n if (this._seeded || list.length === 0) return;\n this._seeded = true;\n const seed = new Set<MenuItem>();\n const collect = (items: MenuItem[]): void => {\n for (const it of items) {\n if (it.expanded) seed.add(it);\n if (it.items?.length) collect(it.items);\n }\n };\n collect(list);\n if (seed.size) this.expanded.set(seed);\n });\n }\n\n isExpanded(item: MenuItem): boolean {\n return this.expanded().has(item);\n }\n\n onItemClick(e: Event, item: MenuItem): void {\n if (item.disabled) return;\n if (item.items?.length) {\n this.expanded.update(s => {\n const next = this.multiple() ? new Set(s) : new Set<MenuItem>();\n next.has(item) ? next.delete(item) : next.add(item);\n return next;\n });\n return;\n }\n item.command?.({ originalEvent: e, item });\n }\n\n onKeydown(e: KeyboardEvent): void {\n const ul = e.currentTarget as HTMLElement;\n const items = Array.from(ul.querySelectorAll<HTMLElement>(':scope > li > [role=\"treeitem\"]'));\n if (!items.length) return;\n const currentIndex = items.indexOf(document.activeElement as HTMLElement);\n\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n e.stopPropagation();\n items[(currentIndex + 1 + items.length) % items.length]?.focus();\n break;\n case 'ArrowUp':\n e.preventDefault();\n e.stopPropagation();\n items[(currentIndex - 1 + items.length) % items.length]?.focus();\n break;\n case 'Home':\n e.preventDefault();\n e.stopPropagation();\n items[0]?.focus();\n break;\n case 'End':\n e.preventDefault();\n e.stopPropagation();\n items[items.length - 1]?.focus();\n break;\n case ' ':\n if (document.activeElement instanceof HTMLAnchorElement) {\n e.preventDefault();\n document.activeElement.click();\n }\n break;\n }\n }\n}\n","import { Component, input } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { MenuItem } from '../../interfaces/menu-item';\n\n@Component({\n selector: 'f-breadcrumb',\n imports: [UiIconComponent, RouterLink],\n host: { class: 'block' },\n template: `\n <nav aria-label=\"breadcrumb\">\n <ol class=\"flex items-center gap-2 text-sm flex-wrap\">\n @if (home()) {\n <li class=\"flex items-center gap-2\">\n @if (home()!.routerLink) {\n <a class=\"text-(--f-text-muted-color) hover:text-(--f-text-color) transition-colors cursor-pointer focus:outline-none focus-visible:ring-focus\" [routerLink]=\"home()!.routerLink\" [queryParams]=\"home()!.queryParams\" (click)=\"onItemClick($event, home()!)\">\n <ui-icon [name]=\"home()!.icon || 'home'\" class=\"text-xs\"></ui-icon>\n </a>\n } @else if (home()!.url) {\n <a class=\"text-(--f-text-muted-color) hover:text-(--f-text-color) transition-colors cursor-pointer focus:outline-none focus-visible:ring-focus\" [href]=\"home()!.url\" [target]=\"home()!.target ?? null\" (click)=\"onItemClick($event, home()!)\">\n <ui-icon [name]=\"home()!.icon || 'home'\" class=\"text-xs\"></ui-icon>\n </a>\n } @else {\n <button type=\"button\" class=\"text-(--f-text-muted-color) hover:text-(--f-text-color) transition-colors cursor-pointer focus:outline-none focus-visible:ring-focus\" (click)=\"onItemClick($event, home()!)\">\n <ui-icon [name]=\"home()!.icon || 'home'\" class=\"text-xs\"></ui-icon>\n </button>\n }\n @if (model().length) { <ui-icon name=\"chevron-right\" class=\"text-[10px] text-(--f-text-muted-color)\"></ui-icon> }\n </li>\n }\n @for (item of model(); track $index) {\n <li class=\"flex items-center gap-2\">\n @let itemClass = $last\n ? 'transition-colors text-(--f-text-color) font-medium pointer-events-none focus:outline-none focus-visible:ring-focus'\n : 'transition-colors text-(--f-text-muted-color) hover:text-(--f-text-color) cursor-pointer focus:outline-none focus-visible:ring-focus';\n @if (item.routerLink) {\n <a [class]=\"itemClass\" [attr.aria-current]=\"$last ? 'page' : null\" [routerLink]=\"item.routerLink\" [queryParams]=\"item.queryParams\" (click)=\"onItemClick($event, item)\">\n @if (item.icon) { <ui-icon [name]=\"item.icon\" class=\"text-xs\"></ui-icon> }\n {{ item.label }}\n </a>\n } @else if (item.url) {\n <a [class]=\"itemClass\" [attr.aria-current]=\"$last ? 'page' : null\" [href]=\"item.url\" [target]=\"item.target ?? null\" (click)=\"onItemClick($event, item)\">\n @if (item.icon) { <ui-icon [name]=\"item.icon\" class=\"text-xs\"></ui-icon> }\n {{ item.label }}\n </a>\n } @else {\n <button type=\"button\" [class]=\"itemClass\" [attr.aria-current]=\"$last ? 'page' : null\" (click)=\"onItemClick($event, item)\">\n @if (item.icon) { <ui-icon [name]=\"item.icon\" class=\"text-xs\"></ui-icon> }\n {{ item.label }}\n </button>\n }\n @if (!$last) { <ui-icon name=\"chevron-right\" class=\"text-[10px] text-(--f-text-muted-color)\"></ui-icon> }\n </li>\n }\n </ol>\n </nav>\n `,\n})\nexport class BreadcrumbComponent {\n readonly model = input<MenuItem[]>([]);\n readonly home = input<MenuItem | null>(null);\n\n onItemClick(e: Event, item: MenuItem): void {\n if (item.disabled) return;\n item.command?.({ originalEvent: e, item });\n }\n}\n","import { booleanAttribute, Component, computed, ElementRef, inject, input, signal } from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { MenuItem } from '../../interfaces/menu-item';\n\nexport type SpeedDialDirection = 'up' | 'down' | 'left' | 'right';\nexport type SpeedDialType = 'linear' | 'circle';\n\nconst CIRCLE_ARCS: Record<SpeedDialDirection, [number, number]> = {\n up: [180, 360],\n down: [0, 180],\n left: [90, 270],\n right: [-90, 90],\n};\n\n@Component({\n selector: 'f-speeddial',\n imports: [UiIconComponent],\n host: {\n class: 'relative inline-flex',\n '(document:click)': 'onDocumentClick($event)',\n },\n template: `\n <div [class]=\"containerClass()\">\n @if (visible()) {\n @for (item of model(); track $index) {\n <button\n type=\"button\"\n class=\"w-10 h-10 rounded-full bg-(--f-content-background) border border-(--f-content-border-color) shadow-md flex items-center justify-center hover:bg-(--f-content-hover-background) transition-all duration-[var(--f-transition-duration)] cursor-pointer disabled:cursor-default disabled:pointer-events-none\"\n [class.opacity-60]=\"item.disabled\"\n [style]=\"itemStyle($index)\"\n [disabled]=\"item.disabled\"\n [attr.title]=\"item.label\"\n (click)=\"onItemClick($event, item)\"\n >\n <ui-icon [name]=\"item.icon || 'circle'\" class=\"text-sm\"></ui-icon>\n </button>\n }\n }\n <button\n type=\"button\"\n class=\"w-12 h-12 rounded-full bg-primary text-primary-contrast shadow-lg flex items-center justify-center hover:bg-primary-emphasis transition-transform duration-[var(--f-transition-duration)] cursor-pointer\"\n [class.rotate-45]=\"visible() && rotate()\"\n [class.relative]=\"type() === 'circle'\"\n [class.z-10]=\"type() === 'circle'\"\n (click)=\"toggle()\"\n >\n <ui-icon [name]=\"icon() || 'plus'\" class=\"text-base\"></ui-icon>\n </button>\n </div>\n `,\n})\nexport class SpeedDialComponent {\n readonly model = input<MenuItem[]>([]);\n readonly icon = input<string>('plus');\n readonly direction = input<SpeedDialDirection>('up');\n readonly rotate = input(true, { transform: booleanAttribute });\n readonly type = input<SpeedDialType>('linear');\n readonly radius = input<number>(80);\n\n private readonly _visible = signal(false);\n readonly visible = this._visible.asReadonly();\n\n private readonly _el = inject(ElementRef);\n\n onDocumentClick(e: MouseEvent): void {\n if (this.visible() && !this._el.nativeElement.contains(e.target)) {\n this._visible.set(false);\n }\n }\n\n readonly containerClass = computed(() => {\n if (this.type() === 'circle') return 'relative flex items-center justify-center';\n const dirMap: Record<SpeedDialDirection, string> = {\n up: 'flex flex-col-reverse items-center gap-2',\n down: 'flex flex-col items-center gap-2',\n left: 'flex flex-row-reverse items-center gap-2',\n right: 'flex flex-row items-center gap-2',\n };\n return dirMap[this.direction()];\n });\n\n itemStyle(i: number): Record<string, string> {\n if (this.type() !== 'circle') return {};\n const total = this.model().length;\n const [startDeg, endDeg] = CIRCLE_ARCS[this.direction()];\n const step = total > 1 ? (endDeg - startDeg) / (total - 1) : 0;\n const deg = startDeg + step * i;\n const rad = (deg * Math.PI) / 180;\n const r = this.radius();\n const x = Math.cos(rad) * r;\n const y = Math.sin(rad) * r;\n return {\n position: 'absolute',\n transform: `translate(${x}px, ${y}px)`,\n };\n }\n\n toggle(): void { this._visible.update(v => !v); }\n\n onItemClick(e: Event, item: MenuItem): void {\n if (item.disabled) return;\n item.command?.({ originalEvent: e, item });\n this._visible.set(false);\n }\n}\n","import { Component, computed, input, signal } from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { MenuItem } from '../../interfaces/menu-item';\n\nexport type DockPosition = 'bottom' | 'top' | 'left' | 'right';\n\n@Component({\n selector: 'f-dock',\n imports: [UiIconComponent],\n host: { class: 'inline-flex' },\n template: `\n <div [class]=\"containerClass()\">\n @for (item of model(); track $index) {\n <button\n type=\"button\"\n class=\"flex items-center justify-center w-11 h-11 rounded-xl transition-all duration-150 hover:bg-(--f-content-hover-background) cursor-pointer disabled:cursor-default disabled:pointer-events-none\"\n [class]=\"originClass()\"\n [class.scale-125]=\"hovered() === item\"\n [class.opacity-60]=\"item.disabled\"\n [disabled]=\"item.disabled\"\n [attr.title]=\"item.label\"\n (mouseenter)=\"onHover(item)\"\n (mouseleave)=\"onHover(null)\"\n (click)=\"onItemClick($event, item)\"\n >\n <ui-icon [name]=\"item.icon || 'app-window'\" class=\"text-xl\"></ui-icon>\n </button>\n }\n </div>\n `,\n})\nexport class DockComponent {\n readonly model = input<MenuItem[]>([]);\n readonly position = input<DockPosition>('bottom');\n\n private readonly _hovered = signal<MenuItem | null>(null);\n readonly hovered = this._hovered.asReadonly();\n\n readonly containerClass = computed(() => {\n const base = 'flex px-3 py-2 bg-(--f-content-background)/80 backdrop-blur-md border border-(--f-content-border-color) rounded-2xl shadow-lg';\n const dirMap: Record<DockPosition, string> = {\n bottom: `${base} flex-row items-end gap-1`,\n top: `${base} flex-row items-start gap-1`,\n left: `${base} flex-col items-start gap-1`,\n right: `${base} flex-col items-end gap-1`,\n };\n return dirMap[this.position()];\n });\n\n readonly originClass = computed(() => {\n const originMap: Record<DockPosition, string> = {\n bottom: 'origin-bottom',\n top: 'origin-top',\n left: 'origin-left',\n right: 'origin-right',\n };\n return originMap[this.position()];\n });\n\n onHover(item: MenuItem | null): void {\n this._hovered.set(item);\n }\n\n onItemClick(e: Event, item: MenuItem): void {\n if (item.disabled) return;\n item.command?.({ originalEvent: e, item });\n }\n}\n","import {\n Directive,\n ElementRef,\n forwardRef,\n inject,\n input,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { InputTextDirective } from '../input-text/input-text.directive';\n\nconst MASK_TOKENS: Record<string, RegExp> = {\n '9': /[0-9]/,\n a: /[a-zA-Z]/,\n '*': /[a-zA-Z0-9]/,\n};\n\n@Directive({\n selector: '[fInputMask]',\n hostDirectives: [InputTextDirective],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => InputMaskDirective), multi: true }],\n host: {\n '(input)': 'onInput($event)',\n '(blur)': 'onBlur()',\n },\n})\nexport class InputMaskDirective implements ControlValueAccessor {\n private readonly _el = inject(ElementRef<HTMLInputElement>);\n\n readonly fInputMask = input<string>('');\n readonly slotChar = input<string>('_');\n\n private _onChange: (v: string) => void = () => {};\n private _onTouched: () => void = () => {};\n\n onInput(e: Event): void {\n const raw = (e.target as HTMLInputElement).value;\n const formatted = this.format(raw);\n this._el.nativeElement.value = formatted;\n this._onChange(this.unmask(formatted));\n }\n\n onBlur(): void { this._onTouched(); }\n\n private format(raw: string): string {\n const mask = this.fInputMask();\n if (!mask) return raw;\n const chars = raw.replace(/[^a-zA-Z0-9]/g, '').split('');\n if (!chars.length) return '';\n let out = '';\n let ci = 0;\n let filledAny = false;\n for (const m of mask) {\n if (MASK_TOKENS[m]) {\n while (ci < chars.length && !MASK_TOKENS[m].test(chars[ci])) ci++;\n if (ci >= chars.length) {\n out += this.slotChar();\n } else {\n out += chars[ci];\n ci++;\n filledAny = true;\n }\n } else {\n out += m;\n }\n }\n return filledAny ? out : '';\n }\n\n private unmask(value: string): string {\n const mask = this.fInputMask();\n if (!mask) return value;\n let out = '';\n for (let i = 0; i < value.length; i++) {\n if (MASK_TOKENS[mask[i]] && value[i] !== this.slotChar()) out += value[i];\n }\n return out;\n }\n\n writeValue(v: string): void {\n this._el.nativeElement.value = v ? this.format(v) : '';\n }\n registerOnChange(fn: (v: string) => void): void { this._onChange = fn; }\n registerOnTouched(fn: () => void): void { this._onTouched = fn; }\n setDisabledState(isDisabled: boolean): void { this._el.nativeElement.disabled = isDisabled; }\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n ElementRef,\n forwardRef,\n input,\n signal,\n viewChildren,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\n@Component({\n selector: 'f-inputotp',\n host: { class: 'inline-block' },\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => InputOtpComponent), multi: true }],\n template: `\n <div class=\"flex items-center gap-2\">\n @for (i of indices(); track i) {\n <input\n #cell\n inputmode=\"numeric\"\n maxlength=\"1\"\n [attr.aria-label]=\"'Digit ' + (i + 1)\"\n [class]=\"cellClass()\"\n [value]=\"digits()[i] || ''\"\n [type]=\"mask() ? 'password' : 'text'\"\n [disabled]=\"disabled()\"\n (input)=\"onDigitInput($event, i)\"\n (keydown)=\"onKeydown($event, i)\"\n (paste)=\"onPaste($event)\"\n />\n }\n </div>\n `,\n})\nexport class InputOtpComponent implements ControlValueAccessor {\n readonly length = input<number>(4);\n readonly mask = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly integerOnly = input(true, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n\n readonly cells = viewChildren<ElementRef<HTMLInputElement>>('cell');\n\n readonly cellClass = computed(() => {\n const base = 'w-10 h-11 text-center text-lg font-semibold rounded-lg border bg-(--f-form-field-background) text-(--f-form-field-color) focus:outline-none focus:ring-focus transition-colors duration-[var(--f-transition-duration)] disabled:opacity-60';\n const borderClass = this.invalid() ? 'border-red-400 focus:border-red-400' : 'border-(--f-form-field-border-color) focus:border-primary';\n return `${base} ${borderClass}`;\n });\n\n private readonly _digits = signal<string[]>([]);\n readonly digits = this._digits.asReadonly();\n\n private _onChange: (v: string) => void = () => {};\n private _onTouched: () => void = () => {};\n\n indices(): number[] {\n return Array.from({ length: this.length() }, (_, i) => i);\n }\n\n onDigitInput(e: Event, i: number): void {\n const value = (e.target as HTMLInputElement).value;\n const ch = value.slice(-1);\n if (this.integerOnly() && ch && !/[0-9]/.test(ch)) {\n (e.target as HTMLInputElement).value = this.digits()[i] || '';\n return;\n }\n const next = [...this.digits()];\n next[i] = ch;\n this._digits.set(next);\n this.emitValue();\n if (ch && i < this.length() - 1) {\n this.cells()[i + 1]?.nativeElement.focus();\n }\n }\n\n onKeydown(e: KeyboardEvent, i: number): void {\n if (e.key === 'Backspace' && !this.digits()[i] && i > 0) {\n this.cells()[i - 1]?.nativeElement.focus();\n }\n if (e.key === 'ArrowLeft' && i > 0) this.cells()[i - 1]?.nativeElement.focus();\n if (e.key === 'ArrowRight' && i < this.length() - 1) this.cells()[i + 1]?.nativeElement.focus();\n }\n\n onPaste(e: ClipboardEvent): void {\n e.preventDefault();\n const text = e.clipboardData?.getData('text') ?? '';\n const chars = text.split('').slice(0, this.length());\n this._digits.set(chars);\n this.emitValue();\n this.cells()[Math.min(chars.length, this.length() - 1)]?.nativeElement.focus();\n }\n\n private emitValue(): void {\n this._onChange(this.digits().join(''));\n this._onTouched();\n }\n\n writeValue(v: string): void {\n this._digits.set((v ?? '').split('').slice(0, this.length()));\n }\n registerOnChange(fn: (v: string) => void): void { this._onChange = fn; }\n registerOnTouched(fn: () => void): void { this._onTouched = fn; }\n setDisabledState(): void {}\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n ElementRef,\n forwardRef,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\n@Component({\n selector: 'f-slider',\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SliderComponent), multi: true }],\n host: { class: 'block w-full py-2' },\n template: `\n <div\n #track\n class=\"relative h-1.5 rounded-full bg-(--f-content-hover-background) cursor-pointer\"\n [class.opacity-60]=\"disabled()\"\n [class.pointer-events-none]=\"disabled()\"\n (mousedown)=\"onTrackDown($event)\"\n >\n <div class=\"absolute h-full rounded-full bg-primary\" [style.left.%]=\"rangeStartPercent()\" [style.width.%]=\"rangePercent()\"></div>\n\n @if (range()) {\n <div\n class=\"absolute top-1/2 -translate-y-1/2 w-4 h-4 rounded-full bg-primary border-2 border-(--f-content-background) shadow cursor-grab active:cursor-grabbing focus-visible:outline-none focus-visible:ring-focus\"\n tabindex=\"0\"\n role=\"slider\"\n [attr.aria-valuemin]=\"min()\"\n [attr.aria-valuemax]=\"max()\"\n [attr.aria-valuenow]=\"start()\"\n [style.left.%]=\"startPercent()\"\n (mousedown)=\"onHandleDown($event, 0)\"\n (touchstart)=\"onHandleTouchStart($event, 0)\"\n (keydown)=\"onKeydown($event, 0)\"\n ></div>\n }\n <div\n class=\"absolute top-1/2 -translate-y-1/2 w-4 h-4 rounded-full bg-primary border-2 border-(--f-content-background) shadow cursor-grab active:cursor-grabbing focus-visible:outline-none focus-visible:ring-focus\"\n tabindex=\"0\"\n role=\"slider\"\n [attr.aria-valuemin]=\"min()\"\n [attr.aria-valuemax]=\"max()\"\n [attr.aria-valuenow]=\"end()\"\n [style.left.%]=\"endPercent()\"\n (mousedown)=\"onHandleDown($event, 1)\"\n (touchstart)=\"onHandleTouchStart($event, 1)\"\n (keydown)=\"onKeydown($event, 1)\"\n ></div>\n </div>\n `,\n})\nexport class SliderComponent implements ControlValueAccessor {\n private readonly _el = inject(ElementRef<HTMLElement>);\n\n readonly min = input<number>(0);\n readonly max = input<number>(100);\n readonly step = input<number>(1);\n readonly range = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n\n private readonly _start = signal(0);\n readonly start = this._start.asReadonly();\n private readonly _end = signal(0);\n readonly end = this._end.asReadonly();\n\n private _onChange: (v: number | [number, number]) => void = () => {};\n private _onTouched: () => void = () => {};\n private _dragIdx: 0 | 1 | null = null;\n\n readonly startPercent = computed(() => this.toPercent(this.start()));\n readonly endPercent = computed(() => this.toPercent(this.end()));\n readonly rangeStartPercent = computed(() => (this.range() ? this.startPercent() : 0));\n readonly rangePercent = computed(() => (this.range() ? this.endPercent() - this.startPercent() : this.endPercent()));\n\n private toPercent(v: number): number {\n const min = this.min();\n const max = this.max();\n return max === min ? 0 : ((v - min) / (max - min)) * 100;\n }\n\n private fromClientX(clientX: number): number {\n const rect = this._el.nativeElement.querySelector('div')!.getBoundingClientRect();\n const pct = Math.min(1, Math.max(0, (clientX - rect.left) / rect.width));\n const raw = this.min() + pct * (this.max() - this.min());\n const stepped = Math.round(raw / this.step()) * this.step();\n return Math.min(this.max(), Math.max(this.min(), stepped));\n }\n\n onTrackDown(e: MouseEvent): void {\n if (this.disabled()) return;\n const value = this.fromClientX(e.clientX);\n if (this.range()) {\n const idx = Math.abs(value - this.start()) < Math.abs(value - this.end()) ? 0 : 1;\n this.setValue(idx, value);\n this.startDrag(idx);\n } else {\n this.setValue(1, value);\n this.startDrag(1);\n }\n }\n\n onHandleDown(e: MouseEvent, idx: 0 | 1): void {\n e.stopPropagation();\n if (this.disabled()) return;\n (e.currentTarget as HTMLElement).focus();\n this.startDrag(idx);\n }\n\n onHandleTouchStart(e: TouchEvent, idx: 0 | 1): void {\n e.stopPropagation();\n if (this.disabled()) return;\n this.startTouchDrag(idx);\n }\n\n onKeydown(e: KeyboardEvent, idx: 0 | 1): void {\n if (this.disabled()) return;\n const step = this.step();\n const current = idx === 0 ? this.start() : this.end();\n let next: number | null = null;\n if (e.key === 'ArrowRight' || e.key === 'ArrowUp') next = current + step;\n else if (e.key === 'ArrowLeft' || e.key === 'ArrowDown') next = current - step;\n else if (e.key === 'Home') next = this.min();\n else if (e.key === 'End') next = this.max();\n if (next === null) return;\n e.preventDefault();\n this.setValue(idx, Math.min(this.max(), Math.max(this.min(), next)));\n this._onTouched();\n }\n\n private startDrag(idx: 0 | 1): void {\n this._dragIdx = idx;\n const onMove = (ev: MouseEvent) => {\n if (this._dragIdx === null) return;\n this.setValue(this._dragIdx, this.fromClientX(ev.clientX));\n };\n const onUp = () => {\n this._dragIdx = null;\n this._onTouched();\n document.removeEventListener('mousemove', onMove);\n document.removeEventListener('mouseup', onUp);\n };\n document.addEventListener('mousemove', onMove);\n document.addEventListener('mouseup', onUp);\n }\n\n private startTouchDrag(idx: 0 | 1): void {\n this._dragIdx = idx;\n const onMove = (ev: TouchEvent) => {\n if (this._dragIdx === null || !ev.touches[0]) return;\n this.setValue(this._dragIdx, this.fromClientX(ev.touches[0].clientX));\n };\n const onEnd = () => {\n this._dragIdx = null;\n this._onTouched();\n document.removeEventListener('touchmove', onMove);\n document.removeEventListener('touchend', onEnd);\n };\n document.addEventListener('touchmove', onMove);\n document.addEventListener('touchend', onEnd);\n }\n\n private setValue(idx: 0 | 1, value: number): void {\n if (idx === 0) this._start.set(Math.min(value, this.end()));\n else this._end.set(this.range() ? Math.max(value, this.start()) : value);\n this._onChange(this.range() ? [this.start(), this.end()] : this.end());\n }\n\n writeValue(v: number | [number, number] | null): void {\n if (Array.isArray(v)) {\n this._start.set(v[0] ?? this.min());\n this._end.set(v[1] ?? this.max());\n } else {\n this._end.set(v ?? this.min());\n }\n }\n registerOnChange(fn: (v: number | [number, number]) => void): void { this._onChange = fn; }\n registerOnTouched(fn: () => void): void { this._onTouched = fn; }\n setDisabledState(): void {}\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n ElementRef,\n forwardRef,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\n@Component({\n selector: 'f-knob',\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => KnobComponent), multi: true }],\n host: { class: 'inline-block' },\n template: `\n <svg\n [attr.width]=\"size()\"\n [attr.height]=\"size()\"\n [attr.viewBox]=\"'0 0 ' + size() + ' ' + size()\"\n class=\"select-none focus-visible:outline-none focus-visible:ring-focus rounded-full\"\n [class.cursor-pointer]=\"!disabled()\"\n [class.opacity-60]=\"disabled()\"\n [attr.tabindex]=\"disabled() ? null : 0\"\n role=\"slider\"\n [attr.aria-valuemin]=\"min()\"\n [attr.aria-valuemax]=\"max()\"\n [attr.aria-valuenow]=\"value()\"\n [attr.aria-disabled]=\"disabled() ? 'true' : null\"\n (mousedown)=\"onDown($event)\"\n (keydown)=\"onKeydown($event)\"\n >\n <circle\n [attr.cx]=\"size() / 2\" [attr.cy]=\"size() / 2\" [attr.r]=\"radius()\"\n fill=\"none\" [attr.stroke]=\"rangeColor()\" [attr.stroke-width]=\"strokeWidth()\"\n />\n <circle\n [attr.cx]=\"size() / 2\" [attr.cy]=\"size() / 2\" [attr.r]=\"radius()\"\n fill=\"none\" [attr.stroke]=\"valueColor()\" [attr.stroke-width]=\"strokeWidth()\"\n stroke-linecap=\"round\"\n [attr.stroke-dasharray]=\"circumference()\"\n [attr.stroke-dashoffset]=\"dashOffset()\"\n [attr.transform]=\"'rotate(-90 ' + size() / 2 + ' ' + size() / 2 + ')'\"\n />\n <text\n [attr.x]=\"size() / 2\" [attr.y]=\"size() / 2\"\n text-anchor=\"middle\" dominant-baseline=\"middle\"\n class=\"text-sm font-semibold\" [attr.fill]=\"textColor()\"\n >{{ showValue() ? value() : '' }}</text>\n </svg>\n `,\n})\nexport class KnobComponent implements ControlValueAccessor {\n private readonly _el = inject(ElementRef<HTMLElement>);\n\n readonly size = input<number>(100);\n readonly min = input<number>(0);\n readonly max = input<number>(100);\n readonly step = input<number>(1);\n readonly strokeWidth = input<number>(10);\n readonly showValue = input(true, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly readonly = input(false, { transform: booleanAttribute });\n readonly valueColor = input<string>('var(--color-primary)');\n readonly rangeColor = input<string>('var(--f-content-hover-background)');\n readonly textColor = input<string>('var(--f-text-color)');\n\n private readonly _value = signal(0);\n readonly value = this._value.asReadonly();\n\n private _onChange: (v: number) => void = () => {};\n private _onTouched: () => void = () => {};\n\n readonly radius = computed(() => this.size() / 2 - this.strokeWidth());\n readonly circumference = computed(() => 2 * Math.PI * this.radius());\n\n readonly dashOffset = computed(() => {\n const pct = (this.value() - this.min()) / (this.max() - this.min());\n return this.circumference() * (1 - pct);\n });\n\n onKeydown(e: KeyboardEvent): void {\n if (this.disabled() || this.readonly()) return;\n const step = this.step();\n const current = this.value();\n let next: number | null = null;\n if (e.key === 'ArrowRight' || e.key === 'ArrowUp') next = current + step;\n else if (e.key === 'ArrowLeft' || e.key === 'ArrowDown') next = current - step;\n else if (e.key === 'Home') next = this.min();\n else if (e.key === 'End') next = this.max();\n if (next === null) return;\n e.preventDefault();\n const clamped = Math.min(this.max(), Math.max(this.min(), next));\n this._value.set(clamped);\n this._onChange(clamped);\n this._onTouched();\n }\n\n onDown(e: MouseEvent): void {\n if (this.disabled() || this.readonly()) return;\n this.updateFromEvent(e);\n const onMove = (ev: MouseEvent) => this.updateFromEvent(ev);\n const onUp = () => {\n this._onTouched();\n document.removeEventListener('mousemove', onMove);\n document.removeEventListener('mouseup', onUp);\n };\n document.addEventListener('mousemove', onMove);\n document.addEventListener('mouseup', onUp);\n }\n\n private updateFromEvent(e: MouseEvent): void {\n const rect = this._el.nativeElement.querySelector('svg')!.getBoundingClientRect();\n const cx = rect.left + rect.width / 2;\n const cy = rect.top + rect.height / 2;\n let angle = Math.atan2(e.clientY - cy, e.clientX - cx) * (180 / Math.PI) + 90;\n if (angle < 0) angle += 360;\n const pct = angle / 360;\n const raw = this.min() + pct * (this.max() - this.min());\n const stepped = Math.round(raw / this.step()) * this.step();\n const clamped = Math.min(this.max(), Math.max(this.min(), stepped));\n this._value.set(clamped);\n this._onChange(clamped);\n }\n\n writeValue(v: number): void { this._value.set(v ?? this.min()); }\n registerOnChange(fn: (v: number) => void): void { this._onChange = fn; }\n registerOnTouched(fn: () => void): void { this._onTouched = fn; }\n setDisabledState(): void {}\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n ElementRef,\n forwardRef,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\ninterface CascadeOption {\n [key: string]: unknown;\n}\n\n@Component({\n selector: 'f-cascadeselect',\n imports: [UiIconComponent],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => CascadeSelectComponent), multi: true }],\n host: { '(document:click)': 'onDocumentClick($event)' },\n template: `\n <div class=\"relative w-full\">\n <button type=\"button\" [class]=\"triggerClass()\" [disabled]=\"disabled()\" (click)=\"toggleOpen()\">\n <span class=\"truncate text-sm\" [class.text-(--f-form-field-placeholder-color)]=\"!selectedPath().length\">\n {{ selectedPath().length ? selectedPath().join(' / ') : placeholder() }}\n </span>\n <ui-icon name=\"chevron-down\" class=\"ml-auto text-xs text-(--f-form-field-placeholder-color) shrink-0 transition-transform duration-[var(--f-transition-duration)]\" [class.rotate-180]=\"open()\"></ui-icon>\n </button>\n\n @if (open()) {\n <div class=\"absolute z-50 mt-1 flex bg-(--f-overlay-popover-background) border border-(--f-content-border-color) rounded-lg shadow-lg overflow-hidden\">\n @for (level of levels(); track $index) {\n <ul class=\"max-h-64 overflow-auto py-1 min-w-[10rem] border-r border-(--f-content-border-color) last:border-r-0\">\n @for (opt of level; track getLabel(opt)) {\n <li>\n <button\n type=\"button\"\n class=\"w-full flex items-center justify-between gap-2 px-3 py-2 text-sm text-left transition-colors cursor-pointer\"\n [class]=\"isActive(opt, $index) ? 'bg-(--f-highlight-background) text-(--f-highlight-color)' : 'text-(--f-text-color) hover:bg-(--f-content-hover-background)'\"\n (click)=\"onOptionClick(opt, $index)\"\n >\n <span class=\"truncate\">{{ getLabel(opt) }}</span>\n @if (getChildren(opt).length) { <ui-icon name=\"chevron-right\" class=\"text-[10px] text-(--f-text-muted-color) shrink-0\"></ui-icon> }\n </button>\n </li>\n }\n </ul>\n }\n </div>\n }\n </div>\n `,\n})\nexport class CascadeSelectComponent implements ControlValueAccessor {\n private readonly _el = inject(ElementRef);\n\n readonly options = input<CascadeOption[]>([]);\n readonly optionLabel = input<string>('label');\n readonly optionValue = input<string>('value');\n readonly optionChildren = input<string>('children');\n readonly placeholder = input<string>('Select');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly touched = input(true);\n\n private readonly _open = signal(false);\n readonly open = this._open.asReadonly();\n private readonly _activePath = signal<CascadeOption[]>([]);\n readonly activePath = this._activePath.asReadonly();\n private readonly _selectedPath = signal<string[]>([]);\n readonly selectedPath = this._selectedPath.asReadonly();\n\n private _onChange: (v: unknown) => void = () => {};\n private _onTouched: () => void = () => {};\n private _selectedValue: unknown = null;\n\n readonly triggerClass = computed(() => {\n const base = 'w-full min-h-[38px] flex items-center gap-2 px-3 py-1.5 text-sm rounded-lg border bg-(--f-form-field-background) focus:outline-none focus-visible:ring-focus transition-all duration-[var(--f-transition-duration)]';\n const showInvalid = this.invalid() && this.touched();\n const stateClass = this.open()\n ? (showInvalid ? 'border-red-400' : 'border-primary')\n : (showInvalid ? 'border-red-400' : 'border-(--f-form-field-border-color) hover:border-(--f-form-field-hover-border-color)');\n const disabledClass = this.disabled() ? 'opacity-60 cursor-not-allowed' : 'cursor-pointer';\n return `${base} ${stateClass} ${disabledClass}`;\n });\n\n readonly levels = computed<CascadeOption[][]>(() => {\n const cols: CascadeOption[][] = [this.options()];\n for (const active of this.activePath()) {\n const children = this.getChildren(active);\n if (children.length) cols.push(children);\n }\n return cols;\n });\n\n getLabel(opt: CascadeOption): string { return String(opt[this.optionLabel()] ?? ''); }\n getValue(opt: CascadeOption): unknown { return opt[this.optionValue()]; }\n getChildren(opt: CascadeOption): CascadeOption[] { return (opt[this.optionChildren()] as CascadeOption[]) ?? []; }\n\n isActive(opt: CascadeOption, level: number): boolean {\n return this.activePath()[level] === opt;\n }\n\n toggleOpen(): void {\n if (this.disabled()) return;\n this._open.update(v => !v);\n if (!this.open()) this._onTouched();\n }\n\n onOptionClick(opt: CascadeOption, level: number): void {\n const path = this.activePath().slice(0, level);\n path.push(opt);\n this._activePath.set(path);\n\n const children = this.getChildren(opt);\n if (!children.length) {\n this._selectedValue = this.getValue(opt);\n this._selectedPath.set(path.map(p => this.getLabel(p)));\n this._onChange(this._selectedValue);\n this._open.set(false);\n this._onTouched();\n }\n }\n\n onDocumentClick(e: MouseEvent): void {\n if (this.open() && !this._el.nativeElement.contains(e.target)) {\n this._open.set(false);\n this._onTouched();\n }\n }\n\n writeValue(v: unknown): void {\n this._selectedValue = v;\n if (v == null) {\n this._selectedPath.set([]);\n return;\n }\n const path = this.findPath(this.options(), v);\n this._selectedPath.set(path.map(p => this.getLabel(p)));\n }\n\n private findPath(options: CascadeOption[], value: unknown, trail: CascadeOption[] = []): CascadeOption[] {\n for (const opt of options) {\n const next = [...trail, opt];\n if (this.getValue(opt) === value) return next;\n const found = this.findPath(this.getChildren(opt), value, next);\n if (found.length) return found;\n }\n return [];\n }\n\n registerOnChange(fn: (v: unknown) => void): void { this._onChange = fn; }\n registerOnTouched(fn: () => void): void { this._onTouched = fn; }\n setDisabledState(): void {}\n}\n","import { Directive, input } from '@angular/core';\n\nexport type KeyFilterPreset = 'int' | 'pint' | 'num' | 'pnum' | 'money' | 'alpha' | 'alphanum' | 'email';\n\nconst PRESETS: Record<KeyFilterPreset, RegExp> = {\n int: /[\\d-]/,\n pint: /\\d/,\n num: /[\\d.-]/,\n pnum: /[\\d.]/,\n money: /[\\d.,]/,\n alpha: /[a-zA-Z]/,\n alphanum: /[a-zA-Z0-9]/,\n email: /[a-zA-Z0-9_.@-]/,\n};\n\n@Directive({\n selector: '[fKeyFilter]',\n host: {\n '(keypress)': 'onKeypress($event)',\n '(paste)': 'onPaste($event)',\n },\n})\nexport class KeyFilterDirective {\n readonly fKeyFilter = input<KeyFilterPreset | RegExp | null>(null);\n\n onKeypress(e: KeyboardEvent): void {\n const filter = this.fKeyFilter();\n if (!filter || e.ctrlKey || e.metaKey || e.altKey || e.key.length > 1) return;\n const regex = typeof filter === 'string' ? PRESETS[filter] : filter;\n if (regex && !regex.test(e.key)) e.preventDefault();\n }\n\n onPaste(e: ClipboardEvent): void {\n const filter = this.fKeyFilter();\n if (!filter) return;\n const regex = typeof filter === 'string' ? PRESETS[filter] : filter;\n const text = e.clipboardData?.getData('text') ?? '';\n if (regex && [...text].some(ch => !regex.test(ch))) e.preventDefault();\n }\n}\n","import { Component, computed, effect, ElementRef, inject, input, signal, viewChild } from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { ConfirmationService } from '../../services/confirmation.service';\n\n@Component({\n selector: 'f-confirmpopup',\n imports: [UiIconComponent],\n host: {\n '(document:click)': 'onDocumentClick($event)',\n '(document:keydown.escape)': 'onEscape()',\n },\n styles: [`\n @keyframes confirmpopup-in { from { opacity: 0; transform: scale(0.95) translateY(-4px); } to { opacity: 1; transform: scale(1) translateY(0); } }\n .confirmpopup-panel { animation: confirmpopup-in 0.15s cubic-bezier(0.16, 1, 0.3, 1); }\n `],\n template: `\n @if (activeConfirmation(); as c) {\n @if (c.target) {\n <div\n #panel\n class=\"confirmpopup-panel fixed z-50 w-72 bg-(--f-overlay-popover-background) border border-(--f-content-border-color) rounded-lg shadow-lg p-4\"\n [style.top.px]=\"top()\"\n [style.left.px]=\"left()\"\n (click)=\"$event.stopPropagation()\"\n >\n <div class=\"flex items-start gap-3\">\n @if (c.icon) {\n <ui-icon [name]=\"c.icon\" class=\"text-lg shrink-0 mt-0.5\" [style.color]=\"'var(--f-yellow-500, #f59e0b)'\"></ui-icon>\n }\n <div class=\"flex-1 min-w-0\">\n @if (c.header) { <div class=\"text-sm font-semibold text-(--f-text-color)\">{{ c.header }}</div> }\n @if (c.message) { <p class=\"text-sm text-(--f-text-muted-color) mt-1\">{{ c.message }}</p> }\n </div>\n </div>\n <div class=\"flex justify-end gap-2 mt-3\">\n @if (c.rejectVisible !== false) {\n <button\n #rejectBtn\n type=\"button\"\n class=\"px-3 py-1.5 text-xs rounded-md border border-(--f-content-border-color) text-(--f-text-color) hover:bg-(--f-content-hover-background) transition-colors font-medium cursor-pointer\"\n (click)=\"reject(c.reject)\"\n >{{ c.rejectLabel ?? 'No' }}</button>\n }\n @if (c.acceptVisible !== false) {\n <button\n #acceptBtn\n type=\"button\"\n class=\"px-3 py-1.5 text-xs rounded-md bg-primary text-primary-contrast hover:bg-primary-emphasis transition-colors font-medium cursor-pointer\"\n (click)=\"accept(c.accept)\"\n >{{ c.acceptLabel ?? 'Yes' }}</button>\n }\n </div>\n </div>\n }\n }\n `,\n})\nexport class ConfirmPopupComponent {\n readonly confirmationService = inject(ConfirmationService);\n readonly key = input<string | undefined>(undefined);\n\n private readonly _top = signal(0);\n readonly top = this._top.asReadonly();\n private readonly _left = signal(0);\n readonly left = this._left.asReadonly();\n\n private readonly panelRef = viewChild<ElementRef<HTMLElement>>('panel');\n private readonly acceptBtnRef = viewChild<ElementRef<HTMLButtonElement>>('acceptBtn');\n\n readonly activeConfirmation = computed(() => {\n const c = this.confirmationService.confirmation();\n if (!c?.target) return null;\n return (c.key ?? undefined) === this.key() ? c : null;\n });\n\n constructor() {\n effect(() => {\n const c = this.activeConfirmation();\n if (c?.target) {\n this.position(c.target as HTMLElement);\n setTimeout(() => {\n this.adjustForViewport(c.target as HTMLElement);\n this.acceptBtnRef()?.nativeElement.focus();\n }, 0);\n }\n });\n }\n\n private position(target: HTMLElement): void {\n const rect = target.getBoundingClientRect?.();\n if (!rect) return;\n const gap = 8;\n let left = rect.left;\n if (typeof window !== 'undefined') left = Math.min(left, window.innerWidth - 288 - 8);\n this._top.set(rect.bottom + gap);\n this._left.set(Math.max(8, left));\n }\n\n private adjustForViewport(target: HTMLElement): void {\n const panelEl = this.panelRef()?.nativeElement;\n const rect = target.getBoundingClientRect?.();\n if (!panelEl || !rect || typeof window === 'undefined') return;\n const gap = 8;\n const panelRect = panelEl.getBoundingClientRect();\n if (rect.bottom + panelRect.height + gap > window.innerHeight) {\n this._top.set(Math.max(8, rect.top - panelRect.height - gap));\n }\n }\n\n onEscape(): void {\n const c = this.activeConfirmation();\n if (c && c.closeOnEscape !== false) this.reject(c.reject);\n }\n\n accept(fn?: () => void): void {\n fn?.();\n this.confirmationService.close();\n }\n\n reject(fn?: () => void): void {\n fn?.();\n this.confirmationService.close();\n }\n\n onDocumentClick(e: MouseEvent): void {\n const c = this.activeConfirmation();\n if (!c?.target) return;\n if (c.target !== e.target && !(c.target as HTMLElement).contains?.(e.target as Node)) {\n this.confirmationService.close();\n }\n }\n}\n","import { Injectable, InjectionToken, Type, signal } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nexport interface DynamicDialogConfig<T = unknown> {\n header?: string;\n width?: string;\n height?: string;\n closable?: boolean;\n closeOnEscape?: boolean;\n dismissableMask?: boolean;\n footer?: Type<unknown>;\n data?: T;\n}\n\nexport class DynamicDialogRef<R = unknown> {\n private readonly _onClose = new Subject<R | undefined>();\n readonly onClose = this._onClose.asObservable();\n\n constructor(private readonly _closeFn: (result?: R) => void) {}\n\n close(result?: R): void {\n this._onClose.next(result);\n this._onClose.complete();\n this._closeFn(result);\n }\n}\n\nexport const DYNAMIC_DIALOG_DATA = new InjectionToken<unknown>('DYNAMIC_DIALOG_DATA');\nexport const DYNAMIC_DIALOG_REF = new InjectionToken<DynamicDialogRef>('DYNAMIC_DIALOG_REF');\n\nexport interface DynamicDialogState {\n id: number;\n component: Type<unknown>;\n config: DynamicDialogConfig;\n ref: DynamicDialogRef<unknown>;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class DynamicDialogService {\n private static idCounter = 0;\n\n private readonly _states = signal<DynamicDialogState[]>([]);\n readonly states = this._states.asReadonly();\n\n open<T = unknown, R = unknown>(component: Type<T>, config: DynamicDialogConfig = {}): DynamicDialogRef<R> {\n const id = ++DynamicDialogService.idCounter;\n const ref = new DynamicDialogRef<R>(() => {\n this._states.update((list) => list.filter((s) => s.id !== id));\n });\n this._states.update((list) => [\n ...list,\n { id, component, config, ref: ref as DynamicDialogRef<unknown> },\n ]);\n return ref;\n }\n\n closeTop(): void {\n const top = this._states()[this._states().length - 1];\n top?.ref.close();\n }\n}\n","import { Component, computed, effect, inject, Injector } from '@angular/core';\nimport { NgComponentOutlet } from '@angular/common';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport {\n DynamicDialogService,\n DynamicDialogState,\n DYNAMIC_DIALOG_DATA,\n DYNAMIC_DIALOG_REF,\n} from './dynamicdialog.service';\n\n@Component({\n selector: 'f-dynamicdialog',\n imports: [NgComponentOutlet, UiIconComponent],\n host: { '(document:keydown.escape)': 'onEscape()' },\n styles: [`\n @keyframes dynamicdialog-backdrop-in { from { opacity: 0; } to { opacity: 1; } }\n @keyframes dynamicdialog-panel-in { from { opacity: 0; transform: scale(0.95) translateY(-8px); } to { opacity: 1; transform: scale(1) translateY(0); } }\n .dynamicdialog-backdrop { animation: dynamicdialog-backdrop-in 0.15s ease-out; }\n .dynamicdialog-panel { animation: dynamicdialog-panel-in 0.22s cubic-bezier(0.16, 1, 0.3, 1); }\n `],\n template: `\n @for (s of dialogService.states(); track s.id; let i = $index) {\n <div class=\"fixed inset-0 flex items-center justify-center p-4\" [style.z-index]=\"40 + i * 2\">\n <div\n class=\"dynamicdialog-backdrop absolute inset-0 bg-black/50 backdrop-blur-[2px]\"\n (click)=\"s.config.dismissableMask && s.ref.close()\"\n ></div>\n <div\n class=\"dynamicdialog-panel relative bg-(--f-overlay-popover-background) rounded-2xl shadow-2xl flex flex-col max-h-[90vh] overflow-hidden max-w-[calc(100vw-2rem)]\"\n [style.width]=\"s.config.width || '32rem'\"\n [style.height]=\"s.config.height || null\"\n role=\"dialog\"\n aria-modal=\"true\"\n >\n @if (s.config.header || s.config.closable !== false) {\n <div class=\"flex items-center justify-between px-6 py-4 border-b border-(--f-content-border-color) shrink-0\">\n <h2 class=\"text-base font-semibold text-(--f-text-color) tracking-tight\">{{ s.config.header }}</h2>\n @if (s.config.closable !== false) {\n <button\n type=\"button\"\n aria-label=\"Close\"\n class=\"w-7 h-7 flex items-center justify-center rounded-lg cursor-pointer text-(--f-text-muted-color) hover:text-(--f-text-hover-color) hover:bg-(--f-content-hover-background) transition-all duration-[var(--f-transition-duration)]\"\n (click)=\"s.ref.close()\"\n >\n <ui-icon name=\"times\" class=\"text-xs\"></ui-icon>\n </button>\n }\n </div>\n }\n <div class=\"px-6 py-5 overflow-y-auto flex-1\">\n <ng-container [ngComponentOutlet]=\"s.component\" [ngComponentOutletInjector]=\"childInjector(s)\" />\n </div>\n @if (s.config.footer) {\n <div class=\"px-6 py-4 border-t border-(--f-content-border-color) shrink-0 flex items-center justify-end gap-2 bg-(--f-content-hover-background)/50\">\n <ng-container [ngComponentOutlet]=\"s.config.footer\" [ngComponentOutletInjector]=\"childInjector(s)\" />\n </div>\n }\n </div>\n </div>\n }\n `,\n})\nexport class DynamicDialogComponent {\n readonly dialogService = inject(DynamicDialogService);\n private readonly _parentInjector = inject(Injector);\n\n private readonly injectorCache = new Map<number, Injector>();\n\n constructor() {\n effect(() => {\n const liveIds = new Set(this.dialogService.states().map((s) => s.id));\n for (const id of this.injectorCache.keys()) {\n if (!liveIds.has(id)) this.injectorCache.delete(id);\n }\n });\n }\n\n childInjector(state: DynamicDialogState): Injector {\n let injector = this.injectorCache.get(state.id);\n if (!injector) {\n injector = Injector.create({\n parent: this._parentInjector,\n providers: [\n { provide: DYNAMIC_DIALOG_DATA, useValue: state.config.data },\n { provide: DYNAMIC_DIALOG_REF, useValue: state.ref },\n ],\n });\n this.injectorCache.set(state.id, injector);\n }\n return injector;\n }\n\n readonly topState = computed(() => {\n const states = this.dialogService.states();\n return states[states.length - 1] ?? null;\n });\n\n onEscape(): void {\n const top = this.topState();\n if (top && top.config.closeOnEscape !== false) top.ref.close();\n }\n}\n","import { booleanAttribute, Component, input, model, output } from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\n@Component({\n selector: 'f-inplace',\n imports: [UiIconComponent],\n host: { class: 'block' },\n template: `\n @if (!active()) {\n <div\n class=\"inline-flex items-center gap-2 px-2 py-1 rounded-md cursor-pointer hover:bg-(--f-content-hover-background) transition-colors focus-visible:outline-none focus-visible:ring-focus\"\n [class.pointer-events-none]=\"disabled()\"\n [attr.tabindex]=\"disabled() ? null : 0\"\n role=\"button\"\n (click)=\"open()\"\n (keydown.enter)=\"open()\"\n (keydown.space)=\"onSpace($event)\"\n >\n <ng-content select=\"[fInplaceDisplay]\" />\n @if (!disabled()) { <ui-icon name=\"pencil\" class=\"text-xs text-(--f-text-muted-color)\"></ui-icon> }\n </div>\n } @else {\n <div class=\"flex items-center gap-2\">\n <ng-content select=\"[fInplaceContent]\" />\n <button type=\"button\" class=\"w-6 h-6 flex items-center justify-center rounded-md text-(--f-text-muted-color) hover:bg-(--f-content-hover-background)\" (click)=\"close()\">\n <ui-icon name=\"check\" class=\"text-xs\"></ui-icon>\n </button>\n </div>\n }\n `,\n})\nexport class InplaceComponent {\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly active = model(false);\n\n readonly onActivate = output<void>();\n readonly onDeactivate = output<void>();\n\n open(): void {\n if (this.disabled()) return;\n this.active.set(true);\n this.onActivate.emit();\n }\n\n close(): void {\n this.active.set(false);\n this.onDeactivate.emit();\n }\n\n onSpace(event: Event): void {\n event.preventDefault();\n this.open();\n }\n}\n","import { booleanAttribute, Component, computed, input, output, signal } from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { TreeNode } from '../../interfaces/tree-node';\n\nexport type TreeSelectionMode = 'single' | 'multiple' | 'checkbox' | null;\n\ninterface FlatNode {\n node: TreeNode;\n key: string;\n level: number;\n leaf: boolean;\n}\n\nlet _uidCounter = 0;\n\nfunction assignKey(node: TreeNode): string {\n if (!node.key) node.key = `tr_${_uidCounter++}`;\n return node.key;\n}\n\n@Component({\n selector: 'f-tree',\n imports: [UiIconComponent],\n host: { class: 'block w-full' },\n template: `\n <div class=\"w-full bg-(--f-content-background) border border-(--f-content-border-color) rounded-lg p-2\">\n @if (filter()) {\n <div class=\"flex items-center gap-2 px-2 py-1.5 mb-2 bg-(--f-content-hover-background) rounded-lg border border-(--f-content-border-color)\">\n <ui-icon name=\"search\" class=\"text-xs text-(--f-text-muted-color) shrink-0\"></ui-icon>\n <input type=\"text\" class=\"flex-1 text-sm bg-transparent focus:outline-none text-(--f-text-color) placeholder:text-(--f-form-field-placeholder-color)\"\n placeholder=\"Search...\" [value]=\"filterText()\" (input)=\"onFilterInput($any($event.target).value)\" />\n </div>\n }\n @if (loading()) {\n <div class=\"flex flex-col items-center justify-center py-10 text-(--f-text-muted-color) gap-3\">\n <ui-icon name=\"loader-circle\" [spin]=\"true\" class=\"text-2xl text-primary/60\"></ui-icon>\n <span class=\"text-sm text-(--f-text-muted-color)\">Loading data...</span>\n </div>\n } @else {\n <ul>\n @for (row of flatNodes(); track row.key) {\n <li\n class=\"flex items-center gap-1.5 px-2 py-1.5 text-sm rounded-md cursor-pointer transition-colors\"\n [style.padding-left.px]=\"row.level * 16 + 8\"\n [class]=\"isSelected(row.key) && selectionMode() !== 'checkbox' ? 'bg-(--f-highlight-background) text-(--f-highlight-color)' : 'text-(--f-text-color) hover:bg-(--f-content-hover-background)'\"\n (click)=\"onNodeClick(row)\"\n >\n @if (!row.leaf) {\n <button type=\"button\" class=\"inline-flex items-center justify-center w-5 h-5 rounded-md hover:bg-(--f-content-hover-background) shrink-0 cursor-pointer\" (click)=\"toggleExpand($event, row.key)\">\n <ui-icon [name]=\"isExpanded(row.key) ? 'chevron-down' : 'chevron-right'\" class=\"text-[10px]\"></ui-icon>\n </button>\n } @else {\n <span class=\"inline-block w-5 h-5 shrink-0\"></span>\n }\n\n @if (selectionMode() === 'checkbox') {\n <div class=\"w-4 h-4 rounded-sm border flex items-center justify-center shrink-0 transition-colors\"\n [class]=\"isSelected(row.key) ? 'bg-primary border-primary' : (isPartial(row.key) ? 'bg-primary/30 border-primary' : 'border-(--f-form-field-border-color) bg-(--f-form-field-background)')\">\n @if (isSelected(row.key)) {\n <ui-icon name=\"check\" class=\"text-[9px] text-primary-contrast\"></ui-icon>\n } @else if (isPartial(row.key)) {\n <ui-icon name=\"minus\" class=\"text-[9px] text-primary-contrast\"></ui-icon>\n }\n </div>\n }\n\n @if (row.node.icon) { <ui-icon [name]=\"row.node.icon\" class=\"text-xs text-(--f-text-muted-color) shrink-0\"></ui-icon> }\n <span class=\"flex-1 truncate\">{{ row.node.label }}</span>\n </li>\n }\n @empty {\n <li class=\"px-3 py-6 text-center text-sm text-(--f-text-muted-color)\">{{ emptyMessage() }}</li>\n }\n </ul>\n }\n </div>\n `,\n})\nexport class TreeComponent {\n readonly value = input<TreeNode[]>([]);\n readonly selectionMode = input<TreeSelectionMode>(null);\n readonly filter = input(false, { transform: booleanAttribute });\n readonly loading = input(false, { transform: booleanAttribute });\n readonly emptyMessage = input<string>('No records found');\n\n readonly selectionChange = output<TreeNode[]>();\n readonly nodeExpand = output<TreeNode>();\n readonly nodeCollapse = output<TreeNode>();\n\n private readonly _filterText = signal('');\n readonly filterText = this._filterText.asReadonly();\n private readonly _selectedKeys = signal<Set<string>>(new Set());\n readonly selectedKeys = this._selectedKeys.asReadonly();\n private readonly expandedKeys = signal<Set<string>>(new Set());\n private _keyToNode = new Map<string, TreeNode>();\n\n readonly flatNodes = computed<FlatNode[]>(() => {\n const expanded = this.expandedKeys();\n const q = this.filterText().toLowerCase();\n const out: FlatNode[] = [];\n this._keyToNode.clear();\n this._flatten(this.value(), out, 0, expanded, q);\n return out;\n });\n\n private _flatten(nodes: TreeNode[], out: FlatNode[], level: number, expanded: Set<string>, query: string): boolean {\n let anyMatch = false;\n for (const node of nodes) {\n const key = assignKey(node);\n this._keyToNode.set(key, node);\n const isLeaf = !node.children || node.children.length === 0;\n const selfMatch = !query || String(node.label ?? '').toLowerCase().includes(query);\n\n let childRows: FlatNode[] = [];\n let childMatch = false;\n if (!isLeaf) {\n childRows = [];\n childMatch = this._flatten(node.children!, childRows, level + 1, expanded, query);\n }\n\n if (selfMatch || childMatch) {\n out.push({ node, key, level, leaf: isLeaf });\n if (!isLeaf && (expanded.has(key) || query)) out.push(...childRows);\n anyMatch = true;\n }\n }\n return anyMatch;\n }\n\n onFilterInput(v: string): void { this._filterText.set(v); }\n\n isExpanded(key: string): boolean { return this.expandedKeys().has(key); }\n isSelected(key: string): boolean { return this.selectedKeys().has(key); }\n\n isPartial(key: string): boolean {\n if (this.selectionMode() !== 'checkbox' || this.selectedKeys().has(key)) return false;\n const node = this._keyToNode.get(key);\n if (!node?.children?.length) return false;\n let any = false;\n let all = true;\n for (const child of node.children) {\n const childKey = assignKey(child);\n const childSelected = this.selectedKeys().has(childKey) || this.isPartial(childKey);\n any = any || childSelected;\n all = all && this.selectedKeys().has(childKey);\n }\n return any && !all;\n }\n\n toggleExpand(e: Event, key: string): void {\n e.stopPropagation();\n this.expandedKeys.update(s => {\n const next = new Set(s);\n if (next.has(key)) { next.delete(key); this.nodeCollapse.emit(this._keyToNode.get(key)!); }\n else { next.add(key); this.nodeExpand.emit(this._keyToNode.get(key)!); }\n return next;\n });\n }\n\n onNodeClick(row: FlatNode): void {\n const mode = this.selectionMode();\n if (!mode) return;\n if (mode === 'single') {\n this._selectedKeys.set(new Set([row.key]));\n } else if (mode === 'multiple') {\n this._selectedKeys.update(s => {\n const next = new Set(s);\n next.has(row.key) ? next.delete(row.key) : next.add(row.key);\n return next;\n });\n } else if (mode === 'checkbox') {\n const next = new Set(this.selectedKeys());\n const willSelect = !next.has(row.key);\n this.setDescendants(row.node, willSelect, next);\n this._selectedKeys.set(next);\n }\n this.emitSelection();\n }\n\n private setDescendants(node: TreeNode, selected: boolean, set: Set<string>): void {\n const key = assignKey(node);\n selected ? set.add(key) : set.delete(key);\n for (const child of node.children ?? []) this.setDescendants(child, selected, set);\n }\n\n private emitSelection(): void {\n const keys = this.selectedKeys();\n const nodes = [...this._keyToNode.entries()].filter(([k]) => keys.has(k)).map(([, n]) => n);\n this.selectionChange.emit(nodes);\n }\n}\n","import { Component, contentChild, input, TemplateRef } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\n\nexport type TimelineAlign = 'left' | 'right' | 'alternate';\nexport type TimelineLayout = 'vertical' | 'horizontal';\n\n@Component({\n selector: 'f-timeline',\n imports: [NgTemplateOutlet],\n host: { class: 'block w-full' },\n template: `\n <div [class]=\"layout() === 'horizontal' ? 'flex items-start' : 'flex flex-col'\">\n @for (item of value(); track $index) {\n <div [class]=\"layout() === 'horizontal' ? 'flex-1 flex flex-col items-center' : 'flex gap-4'\">\n @if (layout() !== 'horizontal' && (align() === 'right' || (align() === 'alternate' && $index % 2 === 1))) {\n <div class=\"flex-1 text-right pr-2\">\n <ng-container [ngTemplateOutlet]=\"contentTpl() ?? null\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </div>\n }\n\n <div [class]=\"layout() === 'horizontal' ? 'flex items-center w-full' : 'flex flex-col items-center'\">\n @if (layout() === 'horizontal' && $index > 0) { <div class=\"flex-1 h-0.5 bg-(--f-content-border-color)\"></div> }\n <div class=\"w-3 h-3 rounded-full bg-primary shrink-0 ring-4 ring-(--f-content-background)\"></div>\n @if (layout() === 'horizontal' && $index < value().length - 1) { <div class=\"flex-1 h-0.5 bg-(--f-content-border-color)\"></div> }\n @if (layout() !== 'horizontal' && $index < value().length - 1) { <div class=\"w-0.5 flex-1 bg-(--f-content-border-color) my-1\"></div> }\n </div>\n\n @if (layout() === 'horizontal') {\n <div class=\"mt-3 text-center px-2\">\n <ng-container [ngTemplateOutlet]=\"contentTpl() ?? null\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </div>\n } @else if (align() === 'left' || align() === 'alternate' && $index % 2 === 0) {\n <div class=\"flex-1 pb-6\">\n <ng-container [ngTemplateOutlet]=\"contentTpl() ?? null\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </div>\n }\n </div>\n }\n </div>\n `,\n})\nexport class TimelineComponent<T = unknown> {\n readonly value = input<T[]>([]);\n readonly align = input<TimelineAlign>('left');\n readonly layout = input<TimelineLayout>('vertical');\n\n readonly contentTpl = contentChild(TemplateRef);\n}\n","import { Component, contentChild, input, model, output, TemplateRef } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { PaginatorComponent, PaginatorState } from '../paginator/paginator.component';\n\nexport type DataViewLayout = 'list' | 'grid';\n\n@Component({\n selector: 'f-dataview',\n imports: [UiIconComponent, NgTemplateOutlet, PaginatorComponent],\n host: { class: 'block w-full' },\n template: `\n <div class=\"w-full\">\n @if (showLayoutToggle()) {\n <div class=\"flex justify-end gap-1 mb-3\">\n <button type=\"button\"\n class=\"w-8 h-8 flex items-center justify-center rounded-md transition-colors cursor-pointer\"\n [class]=\"layout() === 'list' ? 'bg-(--f-content-hover-background) text-(--f-text-color)' : 'text-(--f-text-muted-color) hover:bg-(--f-content-hover-background)'\"\n (click)=\"layout.set('list')\"\n ><ui-icon name=\"list\" class=\"text-sm\"></ui-icon></button>\n <button type=\"button\"\n class=\"w-8 h-8 flex items-center justify-center rounded-md transition-colors cursor-pointer\"\n [class]=\"layout() === 'grid' ? 'bg-(--f-content-hover-background) text-(--f-text-color)' : 'text-(--f-text-muted-color) hover:bg-(--f-content-hover-background)'\"\n (click)=\"layout.set('grid')\"\n ><ui-icon name=\"layout-grid\" class=\"text-sm\"></ui-icon></button>\n </div>\n }\n\n @if (loading()) {\n <div class=\"flex flex-col items-center gap-3 py-16\">\n <ui-icon name=\"loader-circle\" [spin]=\"true\" class=\"text-2xl text-primary/60\"></ui-icon>\n <span class=\"text-sm text-(--f-text-muted-color)\">Loading data...</span>\n </div>\n } @else if (value().length) {\n <div [class]=\"layout() === 'grid' ? 'grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4' : 'flex flex-col gap-3'\">\n @for (item of value(); track $index) {\n <ng-container [ngTemplateOutlet]=\"itemTpl() ?? null\" [ngTemplateOutletContext]=\"{ $implicit: item, layout: layout() }\" />\n }\n </div>\n\n @if (paginator()) {\n <f-paginator [rows]=\"rows()\" [totalRecords]=\"totalRecords() || value().length\" [first]=\"first()\" (onPageChange)=\"handlePageChange($event)\" />\n }\n } @else {\n <div class=\"flex flex-col items-center gap-3 py-16\">\n <ui-icon name=\"inbox\" class=\"text-2xl text-(--f-text-muted-color)\"></ui-icon>\n <span class=\"text-sm text-(--f-text-muted-color)\">No records found</span>\n </div>\n }\n </div>\n `,\n})\nexport class DataViewComponent<T = unknown> {\n readonly value = input<T[]>([]);\n readonly showLayoutToggle = input(true);\n readonly paginator = input(false);\n readonly rows = input<number>(10);\n readonly totalRecords = input<number>(0);\n readonly first = input<number>(0);\n readonly loading = input(false);\n\n readonly layout = model<DataViewLayout>('list');\n\n readonly onPageChange = output<PaginatorState>();\n\n readonly itemTpl = contentChild(TemplateRef);\n\n handlePageChange(event: PaginatorState): void {\n this.onPageChange.emit(event);\n }\n}\n","import { Component, computed, contentChild, DestroyRef, effect, inject, input, OnDestroy, output, signal, TemplateRef } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\n@Component({\n selector: 'f-carousel',\n imports: [UiIconComponent, NgTemplateOutlet],\n host: { class: 'block w-full relative' },\n template: `\n <div class=\"flex items-center gap-2\">\n <button type=\"button\"\n class=\"w-8 h-8 shrink-0 flex items-center justify-center rounded-full border border-(--f-content-border-color) hover:bg-(--f-content-hover-background) cursor-pointer disabled:cursor-default disabled:opacity-40 disabled:pointer-events-none transition-colors\"\n [disabled]=\"page() === 0\"\n (click)=\"prev()\"\n ><ui-icon name=\"chevron-left\" class=\"text-sm\"></ui-icon></button>\n\n <div class=\"flex-1 overflow-hidden\">\n <div class=\"flex transition-transform duration-300 ease-out\" [style.transform]=\"'translateX(-' + (page() * 100) + '%)'\">\n @for (i of pageIndices(); track i) {\n <div class=\"shrink-0 w-full flex gap-4\" [style.width.%]=\"100\">\n @for (item of pageItems(i); track $index) {\n <div [style.width.%]=\"100 / numVisible()\">\n <ng-container [ngTemplateOutlet]=\"itemTpl() ?? null\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </div>\n }\n </div>\n }\n </div>\n </div>\n\n <button type=\"button\"\n class=\"w-8 h-8 shrink-0 flex items-center justify-center rounded-full border border-(--f-content-border-color) hover:bg-(--f-content-hover-background) cursor-pointer disabled:cursor-default disabled:opacity-40 disabled:pointer-events-none transition-colors\"\n [disabled]=\"page() >= pageCount() - 1\"\n (click)=\"next()\"\n ><ui-icon name=\"chevron-right\" class=\"text-sm\"></ui-icon></button>\n </div>\n\n @if (showIndicators()) {\n <div class=\"flex justify-center gap-1.5 mt-3\">\n @for (i of pageIndices(); track i) {\n <button type=\"button\"\n class=\"w-2 h-2 rounded-full transition-colors cursor-pointer\"\n [class]=\"i === page() ? 'bg-primary' : 'bg-(--f-content-border-color)'\"\n (click)=\"goToPage(i)\"\n ></button>\n }\n </div>\n }\n `,\n})\nexport class CarouselComponent<T = unknown> implements OnDestroy {\n readonly value = input<T[]>([]);\n readonly numVisible = input<number>(1);\n readonly showIndicators = input(true);\n readonly circular = input(false);\n readonly autoplayInterval = input<number>(0);\n\n readonly onPage = output<number>();\n\n readonly itemTpl = contentChild(TemplateRef);\n private readonly destroyRef = inject(DestroyRef);\n private autoplayTimer: ReturnType<typeof setInterval> | null = null;\n\n private readonly _page = signal(0);\n readonly page = this._page.asReadonly();\n\n readonly pageCount = computed(() => Math.max(1, Math.ceil(this.value().length / this.numVisible())));\n readonly pageIndices = computed(() => Array.from({ length: this.pageCount() }, (_, i) => i));\n\n constructor() {\n this.destroyRef.onDestroy(() => this.stopAutoplay());\n effect(() => {\n this.autoplayInterval();\n this.startAutoplay();\n });\n }\n\n pageItems(page: number): T[] {\n const n = this.numVisible();\n return this.value().slice(page * n, page * n + n);\n }\n\n private setPage(p: number): void {\n if (p === this._page()) return;\n this._page.set(p);\n this.onPage.emit(p);\n }\n\n prev(): void {\n const count = this.pageCount();\n const cur = this.page();\n if (cur > 0) this.setPage(cur - 1);\n else if (this.circular()) this.setPage(count - 1);\n }\n\n next(): void {\n const count = this.pageCount();\n const cur = this.page();\n if (cur < count - 1) this.setPage(cur + 1);\n else if (this.circular()) this.setPage(0);\n }\n\n goToPage(i: number): void { this.setPage(i); }\n\n private startAutoplay(): void {\n this.stopAutoplay();\n const interval = this.autoplayInterval();\n if (interval > 0) {\n this.autoplayTimer = setInterval(() => this.next(), interval);\n }\n }\n\n private stopAutoplay(): void {\n if (this.autoplayTimer) {\n clearInterval(this.autoplayTimer);\n this.autoplayTimer = null;\n }\n }\n\n ngOnDestroy(): void { this.stopAutoplay(); }\n}\n","import { Component, input } from '@angular/core';\n\n@Component({\n selector: 'f-scrollpanel',\n host: { class: 'block' },\n styles: [`\n :host .f-scrollpanel-content {\n scrollbar-width: thin;\n scrollbar-color: var(--f-content-border-color) transparent;\n }\n :host .f-scrollpanel-content::-webkit-scrollbar { width: 8px; height: 8px; }\n :host .f-scrollpanel-content::-webkit-scrollbar-thumb { background-color: var(--f-content-border-color); border-radius: 999px; }\n :host .f-scrollpanel-content::-webkit-scrollbar-track { background: transparent; }\n `],\n template: `\n <div class=\"f-scrollpanel-content overflow-auto\" [style.max-height]=\"maxHeight()\" [style.max-width]=\"maxWidth()\">\n <ng-content />\n </div>\n `,\n})\nexport class ScrollPanelComponent {\n readonly maxHeight = input<string>('100%');\n readonly maxWidth = input<string>('100%');\n}\n","import {\n AfterViewInit,\n Component,\n computed,\n contentChild,\n DestroyRef,\n ElementRef,\n inject,\n input,\n OnDestroy,\n signal,\n TemplateRef,\n viewChild,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'f-scroller',\n imports: [NgTemplateOutlet],\n host: { class: 'block' },\n template: `\n <div\n #viewport\n class=\"overflow-auto\"\n [style.height]=\"scrollHeight()\"\n (scroll)=\"onScroll($event)\"\n >\n <div [style.height.px]=\"totalHeight()\" class=\"relative w-full\">\n @for (item of visibleItems(); track $index) {\n <div class=\"absolute left-0 right-0\" [style.top.px]=\"offsetFor($index)\" [style.height.px]=\"itemSize()\">\n <ng-container [ngTemplateOutlet]=\"itemTpl() ?? null\" [ngTemplateOutletContext]=\"{ $implicit: item, index: startIndex() + $index }\" />\n </div>\n }\n </div>\n </div>\n `,\n})\nexport class ScrollerComponent<T = unknown> implements AfterViewInit, OnDestroy {\n readonly items = input<T[]>([]);\n readonly itemSize = input<number>(40);\n readonly scrollHeight = input<string>('20rem');\n\n readonly itemTpl = contentChild(TemplateRef);\n private readonly viewportRef = viewChild<ElementRef<HTMLElement>>('viewport');\n private readonly destroyRef = inject(DestroyRef);\n private resizeObserver: ResizeObserver | null = null;\n\n private readonly scrollTop = signal(0);\n private readonly viewportHeight = signal(320);\n\n readonly totalHeight = computed(() => this.items().length * this.itemSize());\n\n readonly startIndex = computed(() => Math.max(0, Math.floor(this.scrollTop() / this.itemSize()) - 3));\n\n private readonly endIndex = computed(() =>\n Math.min(this.items().length, Math.ceil((this.scrollTop() + this.viewportHeight()) / this.itemSize()) + 3),\n );\n\n readonly visibleItems = computed(() => this.items().slice(this.startIndex(), this.endIndex()));\n\n offsetFor(relativeIndex: number): number {\n return (this.startIndex() + relativeIndex) * this.itemSize();\n }\n\n onScroll(e: Event): void {\n const el = e.target as HTMLElement;\n this.scrollTop.set(el.scrollTop);\n this.viewportHeight.set(el.clientHeight);\n }\n\n ngAfterViewInit(): void {\n const el = this.viewportRef()?.nativeElement;\n if (!el) return;\n this.viewportHeight.set(el.clientHeight);\n\n if (typeof ResizeObserver !== 'undefined') {\n this.resizeObserver = new ResizeObserver(() => this.viewportHeight.set(el.clientHeight));\n this.resizeObserver.observe(el);\n this.destroyRef.onDestroy(() => this.resizeObserver?.disconnect());\n }\n }\n\n ngOnDestroy(): void {\n this.resizeObserver?.disconnect();\n }\n}\n","import { Component, contentChild, input, TemplateRef } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { TreeNode } from '../../interfaces/tree-node';\n\n@Component({\n selector: 'f-organizationchart',\n imports: [NgTemplateOutlet],\n host: { class: 'block w-full overflow-x-auto' },\n styles: [`\n .f-orgchart-node { position: relative; }\n .f-orgchart-children {\n display: flex;\n justify-content: center;\n position: relative;\n padding-top: 1.5rem;\n }\n .f-orgchart-children::before {\n content: '';\n position: absolute;\n top: 0;\n left: 50%;\n width: 1px;\n height: 1.5rem;\n background: var(--f-content-border-color);\n }\n .f-orgchart-child { position: relative; padding: 0 1rem; }\n .f-orgchart-child::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 1px;\n background: var(--f-content-border-color);\n }\n .f-orgchart-child:first-child::before { left: 50%; }\n .f-orgchart-child:last-child::before { right: 50%; }\n .f-orgchart-child::after {\n content: '';\n position: absolute;\n top: 0;\n left: 50%;\n width: 1px;\n height: 1rem;\n background: var(--f-content-border-color);\n }\n `],\n template: `\n <ng-template #nodeTpl let-node>\n <div class=\"flex flex-col items-center\">\n <div class=\"f-orgchart-node inline-block px-4 py-2.5 bg-(--f-content-background) border border-(--f-content-border-color) rounded-lg shadow-sm text-sm font-medium text-(--f-text-color)\">\n @if (contentTpl()) {\n <ng-container [ngTemplateOutlet]=\"contentTpl()\" [ngTemplateOutletContext]=\"{ $implicit: node }\" />\n } @else {\n {{ node.label }}\n }\n </div>\n @if (node.children?.length) {\n <div class=\"f-orgchart-children\">\n @for (child of node.children; track $index) {\n <div class=\"f-orgchart-child\">\n <ng-container [ngTemplateOutlet]=\"nodeTpl\" [ngTemplateOutletContext]=\"{ $implicit: child }\" />\n </div>\n }\n </div>\n }\n </div>\n </ng-template>\n\n <div class=\"flex justify-center min-w-max p-4\">\n @if (value()) {\n <ng-container [ngTemplateOutlet]=\"nodeTpl\" [ngTemplateOutletContext]=\"{ $implicit: value() }\" />\n }\n </div>\n `,\n})\nexport class OrganizationChartComponent {\n readonly value = input<TreeNode | null>(null);\n\n readonly contentTpl = contentChild(TemplateRef);\n}\n","import { Component, contentChild, input, model, output, signal, TemplateRef } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\n@Component({\n selector: 'f-picklist',\n imports: [UiIconComponent, NgTemplateOutlet],\n host: { class: 'block w-full' },\n template: `\n <div class=\"flex items-center gap-3\">\n <div class=\"flex-1 border border-(--f-content-border-color) rounded-lg overflow-hidden\">\n @if (sourceHeader()) {\n <div class=\"px-3 py-2 text-sm font-semibold bg-(--f-content-hover-background) border-b border-(--f-content-border-color)\">{{ sourceHeader() }}</div>\n }\n <ul class=\"max-h-72 overflow-auto py-1\">\n @for (item of source(); track $index) {\n <li\n class=\"px-3 py-2 text-sm cursor-pointer transition-colors\"\n [class]=\"sourceSelected().has(item) ? 'bg-(--f-highlight-background) text-(--f-highlight-color)' : 'text-(--f-text-color) hover:bg-(--f-content-hover-background)'\"\n (click)=\"toggleSourceSelect(item)\"\n >\n <ng-container [ngTemplateOutlet]=\"itemTpl() ?? null\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </li>\n }\n @empty { <li class=\"px-3 py-6 text-center text-sm text-(--f-text-muted-color)\">No records found</li> }\n </ul>\n </div>\n\n <div class=\"flex flex-col gap-1.5\">\n <button type=\"button\" class=\"w-8 h-8 flex items-center justify-center rounded-md border border-(--f-content-border-color) hover:bg-(--f-content-hover-background) cursor-pointer disabled:cursor-default disabled:opacity-40 disabled:pointer-events-none\" [disabled]=\"!sourceSelected().size\" (click)=\"moveToTarget()\"><ui-icon name=\"chevron-right\" class=\"text-xs\"></ui-icon></button>\n <button type=\"button\" class=\"w-8 h-8 flex items-center justify-center rounded-md border border-(--f-content-border-color) hover:bg-(--f-content-hover-background) cursor-pointer\" (click)=\"moveAllToTarget()\"><ui-icon name=\"chevrons-right\" class=\"text-xs\"></ui-icon></button>\n <button type=\"button\" class=\"w-8 h-8 flex items-center justify-center rounded-md border border-(--f-content-border-color) hover:bg-(--f-content-hover-background) cursor-pointer disabled:cursor-default disabled:opacity-40 disabled:pointer-events-none\" [disabled]=\"!targetSelected().size\" (click)=\"moveToSource()\"><ui-icon name=\"chevron-left\" class=\"text-xs\"></ui-icon></button>\n <button type=\"button\" class=\"w-8 h-8 flex items-center justify-center rounded-md border border-(--f-content-border-color) hover:bg-(--f-content-hover-background) cursor-pointer\" (click)=\"moveAllToSource()\"><ui-icon name=\"chevrons-left\" class=\"text-xs\"></ui-icon></button>\n </div>\n\n <div class=\"flex-1 border border-(--f-content-border-color) rounded-lg overflow-hidden\">\n @if (targetHeader()) {\n <div class=\"px-3 py-2 text-sm font-semibold bg-(--f-content-hover-background) border-b border-(--f-content-border-color)\">{{ targetHeader() }}</div>\n }\n <ul class=\"max-h-72 overflow-auto py-1\">\n @for (item of target(); track $index) {\n <li\n class=\"px-3 py-2 text-sm cursor-pointer transition-colors\"\n [class]=\"targetSelected().has(item) ? 'bg-(--f-highlight-background) text-(--f-highlight-color)' : 'text-(--f-text-color) hover:bg-(--f-content-hover-background)'\"\n (click)=\"toggleTargetSelect(item)\"\n >\n <ng-container [ngTemplateOutlet]=\"itemTpl() ?? null\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </li>\n }\n @empty { <li class=\"px-3 py-6 text-center text-sm text-(--f-text-muted-color)\">No records found</li> }\n </ul>\n </div>\n </div>\n `,\n})\nexport class PickListComponent<T = unknown> {\n readonly source = model<T[]>([]);\n readonly target = model<T[]>([]);\n readonly sourceHeader = input<string>('');\n readonly targetHeader = input<string>('');\n\n readonly itemTpl = contentChild(TemplateRef);\n\n private readonly _sourceSelected = signal<Set<T>>(new Set());\n readonly sourceSelected = this._sourceSelected.asReadonly();\n private readonly _targetSelected = signal<Set<T>>(new Set());\n readonly targetSelected = this._targetSelected.asReadonly();\n readonly onMoveToTarget = output<T[]>();\n readonly onMoveToSource = output<T[]>();\n\n private toggleSelect(sig: typeof this._sourceSelected, item: T): void {\n sig.update(s => {\n const next = new Set(s);\n next.has(item) ? next.delete(item) : next.add(item);\n return next;\n });\n }\n\n toggleSourceSelect(item: T): void { this.toggleSelect(this._sourceSelected, item); }\n toggleTargetSelect(item: T): void { this.toggleSelect(this._targetSelected, item); }\n\n moveToTarget(): void {\n const moving = [...this.sourceSelected()];\n if (!moving.length) return;\n this.source.set(this.source().filter(i => !this.sourceSelected().has(i)));\n this.target.set([...this.target(), ...moving]);\n this._sourceSelected.set(new Set());\n this.onMoveToTarget.emit(moving);\n }\n\n moveAllToTarget(): void {\n const moving = this.source();\n this.target.set([...this.target(), ...moving]);\n this.source.set([]);\n this._sourceSelected.set(new Set());\n this.onMoveToTarget.emit(moving);\n }\n\n moveToSource(): void {\n const moving = [...this.targetSelected()];\n if (!moving.length) return;\n this.target.set(this.target().filter(i => !this.targetSelected().has(i)));\n this.source.set([...this.source(), ...moving]);\n this._targetSelected.set(new Set());\n this.onMoveToSource.emit(moving);\n }\n\n moveAllToSource(): void {\n const moving = this.target();\n this.source.set([...this.source(), ...moving]);\n this.target.set([]);\n this._targetSelected.set(new Set());\n this.onMoveToSource.emit(moving);\n }\n}\n","import { Component, contentChild, input, model, output, TemplateRef } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\n@Component({\n selector: 'f-orderlist',\n imports: [UiIconComponent, NgTemplateOutlet],\n host: { class: 'block w-full' },\n template: `\n <div class=\"flex gap-2\">\n <div class=\"flex-1 border border-(--f-content-border-color) rounded-lg overflow-hidden\">\n @if (header()) {\n <div class=\"px-3 py-2 text-sm font-semibold bg-(--f-content-hover-background) border-b border-(--f-content-border-color)\">{{ header() }}</div>\n }\n <ul class=\"max-h-72 overflow-auto py-1\">\n @for (item of value(); track $index) {\n <li\n class=\"px-3 py-2 text-sm cursor-pointer transition-colors\"\n [class]=\"selected() === item ? 'bg-(--f-highlight-background) text-(--f-highlight-color)' : 'text-(--f-text-color) hover:bg-(--f-content-hover-background)'\"\n (click)=\"selected.set(item)\"\n >\n <ng-container [ngTemplateOutlet]=\"itemTpl() ?? null\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </li>\n }\n @empty {\n <li class=\"px-3 py-6 text-center text-sm text-(--f-text-muted-color)\">No records found</li>\n }\n </ul>\n </div>\n\n <div class=\"flex flex-col gap-1.5 justify-center\">\n <button type=\"button\" class=\"w-8 h-8 flex items-center justify-center rounded-md border border-(--f-content-border-color) hover:bg-(--f-content-hover-background) cursor-pointer disabled:cursor-default disabled:opacity-40 disabled:pointer-events-none\" [disabled]=\"!selected()\" (click)=\"moveUp()\"><ui-icon name=\"chevron-up\" class=\"text-xs\"></ui-icon></button>\n <button type=\"button\" class=\"w-8 h-8 flex items-center justify-center rounded-md border border-(--f-content-border-color) hover:bg-(--f-content-hover-background) cursor-pointer disabled:cursor-default disabled:opacity-40 disabled:pointer-events-none\" [disabled]=\"!selected()\" (click)=\"moveDown()\"><ui-icon name=\"chevron-down\" class=\"text-xs\"></ui-icon></button>\n <button type=\"button\" class=\"w-8 h-8 flex items-center justify-center rounded-md border border-(--f-content-border-color) hover:bg-(--f-content-hover-background) cursor-pointer disabled:cursor-default disabled:opacity-40 disabled:pointer-events-none\" [disabled]=\"!selected()\" (click)=\"moveTop()\"><ui-icon name=\"chevrons-up\" class=\"text-xs\"></ui-icon></button>\n <button type=\"button\" class=\"w-8 h-8 flex items-center justify-center rounded-md border border-(--f-content-border-color) hover:bg-(--f-content-hover-background) cursor-pointer disabled:cursor-default disabled:opacity-40 disabled:pointer-events-none\" [disabled]=\"!selected()\" (click)=\"moveBottom()\"><ui-icon name=\"chevrons-down\" class=\"text-xs\"></ui-icon></button>\n </div>\n </div>\n `,\n})\nexport class OrderListComponent<T = unknown> {\n readonly value = model<T[]>([]);\n readonly header = input<string>('');\n\n readonly itemTpl = contentChild(TemplateRef);\n\n readonly selected = model<T | null>(null);\n readonly onReorder = output<T[]>();\n\n private swap(from: number, to: number): void {\n const list = [...this.value()];\n if (to < 0 || to >= list.length) return;\n [list[from], list[to]] = [list[to], list[from]];\n this.value.set(list);\n this.onReorder.emit(list);\n }\n\n moveUp(): void {\n const list = this.value();\n const i = list.indexOf(this.selected() as T);\n if (i > 0) this.swap(i, i - 1);\n }\n\n moveDown(): void {\n const list = this.value();\n const i = list.indexOf(this.selected() as T);\n if (i >= 0 && i < list.length - 1) this.swap(i, i + 1);\n }\n\n moveTop(): void {\n const list = [...this.value()];\n const i = list.indexOf(this.selected() as T);\n if (i > 0) {\n const [item] = list.splice(i, 1);\n list.unshift(item);\n this.value.set(list);\n this.onReorder.emit(list);\n }\n }\n\n moveBottom(): void {\n const list = [...this.value()];\n const i = list.indexOf(this.selected() as T);\n if (i >= 0 && i < list.length - 1) {\n const [item] = list.splice(i, 1);\n list.push(item);\n this.value.set(list);\n this.onReorder.emit(list);\n }\n }\n}\n","import { booleanAttribute, Component, input, signal } from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\nexport interface GalleriaItem {\n itemImageSrc: string;\n thumbnailImageSrc?: string;\n alt?: string;\n}\n\n@Component({\n selector: 'f-galleria',\n imports: [UiIconComponent],\n host: { class: 'block w-full' },\n template: `\n @if (value().length) {\n <div class=\"relative bg-(--f-content-hover-background) rounded-lg overflow-hidden\">\n <img [src]=\"value()[activeIndex()].itemImageSrc\" [alt]=\"value()[activeIndex()].alt ?? ''\" class=\"w-full object-contain\" [style.height]=\"height()\" />\n\n @if (value().length > 1) {\n <button type=\"button\" class=\"absolute left-2 top-1/2 -translate-y-1/2 w-9 h-9 rounded-full bg-black/40 hover:bg-black/60 text-white flex items-center justify-center transition-colors cursor-pointer\" (click)=\"prev()\">\n <ui-icon name=\"chevron-left\" class=\"text-sm\"></ui-icon>\n </button>\n <button type=\"button\" class=\"absolute right-2 top-1/2 -translate-y-1/2 w-9 h-9 rounded-full bg-black/40 hover:bg-black/60 text-white flex items-center justify-center transition-colors cursor-pointer\" (click)=\"next()\">\n <ui-icon name=\"chevron-right\" class=\"text-sm\"></ui-icon>\n </button>\n }\n </div>\n\n @if (showThumbnails() && value().length > 1) {\n <div class=\"flex gap-2 mt-2 overflow-x-auto py-1\">\n @for (item of value(); track $index) {\n <button\n type=\"button\"\n class=\"shrink-0 w-16 h-16 rounded-md overflow-hidden border-2 transition-colors cursor-pointer\"\n [class]=\"$index === activeIndex() ? 'border-primary' : 'border-transparent opacity-70 hover:opacity-100'\"\n (click)=\"selectIndex($index)\"\n >\n <img [src]=\"item.thumbnailImageSrc ?? item.itemImageSrc\" [alt]=\"item.alt ?? ''\" class=\"w-full h-full object-cover\" />\n </button>\n }\n </div>\n }\n }\n `,\n})\nexport class GalleriaComponent {\n readonly value = input<GalleriaItem[]>([]);\n readonly showThumbnails = input(true, { transform: booleanAttribute });\n readonly height = input<string>('24rem');\n\n private readonly _activeIndex = signal(0);\n readonly activeIndex = this._activeIndex.asReadonly();\n\n prev(): void { this._activeIndex.update(i => (i - 1 + this.value().length) % this.value().length); }\n next(): void { this._activeIndex.update(i => (i + 1) % this.value().length); }\n selectIndex(i: number): void { this._activeIndex.set(i); }\n}\n","import {\n Component,\n ElementRef,\n forwardRef,\n inject,\n input,\n SecurityContext,\n viewChild,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\ninterface EditorCommand {\n cmd: string;\n icon: string;\n label: string;\n value?: string;\n}\n\nconst TOOLBAR: EditorCommand[] = [\n { cmd: 'bold', icon: 'bold', label: 'Bold' },\n { cmd: 'italic', icon: 'italic', label: 'Italic' },\n { cmd: 'underline', icon: 'underline', label: 'Underline' },\n { cmd: 'insertUnorderedList', icon: 'list', label: 'Bullet list' },\n { cmd: 'insertOrderedList', icon: 'list-ordered', label: 'Numbered list' },\n { cmd: 'formatBlock', icon: 'quote', label: 'Quote', value: 'blockquote' },\n { cmd: 'removeFormat', icon: 'eraser', label: 'Clear formatting' },\n];\n\n@Component({\n selector: 'f-editor',\n imports: [UiIconComponent],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => EditorComponent), multi: true }],\n host: { class: 'block w-full' },\n styles: [`\n .f-editor-content:empty::before {\n content: attr(data-placeholder);\n color: var(--f-form-field-placeholder-color);\n pointer-events: none;\n }\n `],\n template: `\n <div class=\"border border-(--f-content-border-color) rounded-lg overflow-hidden bg-(--f-content-background)\">\n <div class=\"flex items-center gap-1 px-2 py-1.5 border-b border-(--f-content-border-color) bg-(--f-content-hover-background)/60\">\n @for (btn of toolbar; track btn.cmd) {\n <button\n type=\"button\"\n [attr.title]=\"btn.label\"\n class=\"w-8 h-8 flex items-center justify-center rounded-md text-(--f-text-muted-color) hover:bg-(--f-content-hover-background) hover:text-(--f-text-color) transition-colors cursor-pointer\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"exec(btn)\"\n >\n <ui-icon [name]=\"btn.icon\" class=\"text-sm\"></ui-icon>\n </button>\n }\n </div>\n <div\n #editable\n class=\"f-editor-content min-h-[10rem] max-h-[24rem] overflow-y-auto p-3 text-sm text-(--f-text-color) focus:outline-none prose prose-sm max-w-none\"\n contenteditable=\"true\"\n [attr.data-placeholder]=\"placeholder()\"\n (input)=\"onInput()\"\n (blur)=\"onTouched()\"\n ></div>\n </div>\n `,\n})\nexport class EditorComponent implements ControlValueAccessor {\n private readonly _document = inject(DOCUMENT);\n private readonly _sanitizer = inject(DomSanitizer);\n readonly editable = viewChild.required<ElementRef<HTMLElement>>('editable');\n readonly placeholder = input<string>('');\n\n readonly toolbar = TOOLBAR;\n\n private _onChange: (v: string) => void = () => {};\n private _onTouched: () => void = () => {};\n\n exec(btn: EditorCommand): void {\n this._document.execCommand(btn.cmd, false, btn.value);\n this.editable().nativeElement.focus();\n this.onInput();\n }\n\n onInput(): void {\n this._onChange(this.editable().nativeElement.innerHTML);\n }\n\n onTouched(): void {\n this._onTouched();\n }\n\n writeValue(v: string): void {\n const el = this.editable().nativeElement;\n el.innerHTML = this._sanitizer.sanitize(SecurityContext.HTML, v ?? '') ?? '';\n }\n registerOnChange(fn: (v: string) => void): void { this._onChange = fn; }\n registerOnTouched(fn: () => void): void { this._onTouched = fn; }\n setDisabledState(isDisabled: boolean): void {\n this.editable().nativeElement.contentEditable = String(!isDisabled);\n }\n}\n","import { Component, input, output, signal } from '@angular/core';\n\nexport interface TerminalCommandEvent {\n command: string;\n}\n\n@Component({\n selector: 'f-terminal',\n host: { class: 'block' },\n template: `\n <div class=\"bg-surface-950 text-surface-0 rounded-lg font-mono text-sm p-3 overflow-y-auto\" [style.height]=\"height()\" (click)=\"input.focus()\">\n @for (line of history(); track $index) {\n <div class=\"whitespace-pre-wrap break-words\">\n @if (line.type === 'command') {\n <span class=\"text-green-400\">{{ prompt() }}</span> {{ line.text }}\n } @else {\n <span>{{ line.text }}</span>\n }\n </div>\n }\n <div class=\"flex items-center gap-1\">\n <span class=\"text-green-400 shrink-0\">{{ prompt() }}</span>\n <input\n #input\n type=\"text\"\n class=\"flex-1 bg-transparent border-none outline-none text-surface-0\"\n [value]=\"current()\"\n (input)=\"onCurrentInput($any($event.target).value)\"\n (keydown.enter)=\"submit()\"\n />\n </div>\n </div>\n `,\n})\nexport class TerminalComponent {\n readonly welcomeMessage = input<string>('');\n readonly prompt = input<string>('$');\n readonly height = input<string>('16rem');\n\n readonly onCommand = output<TerminalCommandEvent>();\n\n private readonly _current = signal('');\n readonly current = this._current.asReadonly();\n private readonly _history = signal<Array<{ type: 'command' | 'response'; text: string }>>(\n this.welcomeMessage() ? [{ type: 'response', text: this.welcomeMessage() }] : [],\n );\n readonly history = this._history.asReadonly();\n\n onCurrentInput(v: string): void { this._current.set(v); }\n\n submit(): void {\n const command = this.current().trim();\n if (!command) return;\n this._history.update(h => [...h, { type: 'command', text: command }]);\n this.onCommand.emit({ command });\n this._current.set('');\n }\n\n respond(text: string): void {\n this._history.update(h => [...h, { type: 'response', text }]);\n }\n\n clear(): void {\n this._history.set([]);\n }\n}\n","import { Component, DestroyRef, ElementRef, inject, input, signal } from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\n@Component({\n selector: 'f-imagecompare',\n imports: [UiIconComponent],\n host: { class: 'block' },\n template: `\n <div\n class=\"relative w-full overflow-hidden rounded-lg select-none cursor-ew-resize\"\n [style.height]=\"height()\"\n (mousedown)=\"onDown($event)\"\n (touchstart)=\"onTouchDown($event)\"\n >\n <img [src]=\"imageAfterSrc()\" [alt]=\"altAfter()\" class=\"absolute inset-0 w-full h-full object-cover\" draggable=\"false\" />\n <div class=\"absolute inset-0 overflow-hidden\" [style.width.%]=\"position()\">\n <img [src]=\"imageBeforeSrc()\" [alt]=\"altBefore()\" class=\"h-full object-cover\" [style.width]=\"containerWidth()\" draggable=\"false\" />\n </div>\n <div class=\"absolute top-0 bottom-0 w-0.5 bg-white shadow-lg\" [style.left.%]=\"position()\">\n <div class=\"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-8 h-8 rounded-full bg-white shadow-lg flex items-center justify-center\">\n <ui-icon name=\"move-horizontal\" class=\"text-xs text-surface-900\"></ui-icon>\n </div>\n </div>\n </div>\n `,\n})\nexport class ImageCompareComponent {\n private readonly _el = inject(ElementRef<HTMLElement>);\n private readonly destroyRef = inject(DestroyRef);\n\n readonly imageBeforeSrc = input<string>('');\n readonly imageAfterSrc = input<string>('');\n readonly altBefore = input<string>('');\n readonly altAfter = input<string>('');\n readonly height = input<string>('20rem');\n\n private readonly _position = signal(50);\n readonly position = this._position.asReadonly();\n private readonly _containerWidth = signal('100%');\n readonly containerWidth = this._containerWidth.asReadonly();\n\n private activeCleanup: (() => void) | null = null;\n\n constructor() {\n this.destroyRef.onDestroy(() => this.activeCleanup?.());\n }\n\n onDown(e: MouseEvent): void {\n e.preventDefault();\n const rect = this._el.nativeElement.querySelector('div')!.getBoundingClientRect();\n this._containerWidth.set(`${rect.width}px`);\n this.updatePosition(e.clientX, rect);\n const onMove = (ev: MouseEvent) => this.updatePosition(ev.clientX, rect);\n const onUp = () => {\n this.activeCleanup = null;\n document.removeEventListener('mousemove', onMove);\n document.removeEventListener('mouseup', onUp);\n };\n document.addEventListener('mousemove', onMove);\n document.addEventListener('mouseup', onUp);\n this.activeCleanup = onUp;\n }\n\n onTouchDown(e: TouchEvent): void {\n const touch = e.touches[0];\n if (!touch) return;\n const rect = this._el.nativeElement.querySelector('div')!.getBoundingClientRect();\n this._containerWidth.set(`${rect.width}px`);\n this.updatePosition(touch.clientX, rect);\n const onMove = (ev: TouchEvent) => {\n if (ev.touches[0]) this.updatePosition(ev.touches[0].clientX, rect);\n };\n const onEnd = () => {\n this.activeCleanup = null;\n document.removeEventListener('touchmove', onMove);\n document.removeEventListener('touchend', onEnd);\n };\n document.addEventListener('touchmove', onMove);\n document.addEventListener('touchend', onEnd);\n this.activeCleanup = onEnd;\n }\n\n private updatePosition(clientX: number, rect: DOMRect): void {\n const pct = Math.min(100, Math.max(0, ((clientX - rect.left) / rect.width) * 100));\n this._position.set(pct);\n }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { AfterViewInit, Directive, ElementRef, inject, input, OnDestroy, PLATFORM_ID } from '@angular/core';\n\n@Directive({ selector: '[fAnimateOnScroll]' })\nexport class AnimateOnScrollDirective implements AfterViewInit, OnDestroy {\n private readonly _el = inject(ElementRef<HTMLElement>);\n private readonly _platformId = inject(PLATFORM_ID);\n\n readonly enterClass = input<string>('animate-fade-in');\n readonly leaveClass = input<string>('');\n readonly once = input(true);\n readonly threshold = input<number>(0.15);\n\n private _observer?: IntersectionObserver;\n\n ngAfterViewInit(): void {\n if (!isPlatformBrowser(this._platformId)) return;\n const el = this._el.nativeElement;\n this._observer = new IntersectionObserver(\n entries => {\n for (const entry of entries) {\n if (entry.isIntersecting) {\n el.classList.add(...this.enterClass().split(' ').filter(Boolean));\n if (this.leaveClass()) el.classList.remove(...this.leaveClass().split(' ').filter(Boolean));\n if (this.once()) this._observer?.unobserve(el);\n } else if (!this.once()) {\n el.classList.remove(...this.enterClass().split(' ').filter(Boolean));\n if (this.leaveClass()) el.classList.add(...this.leaveClass().split(' ').filter(Boolean));\n }\n }\n },\n { threshold: this.threshold() },\n );\n this._observer.observe(el);\n }\n\n ngOnDestroy(): void {\n this._observer?.disconnect();\n }\n}\n","import { AfterViewInit, booleanAttribute, Directive, ElementRef, inject, input } from '@angular/core';\n\n@Directive({ selector: '[fAutoFocus]' })\nexport class AutoFocusDirective implements AfterViewInit {\n private readonly _el = inject(ElementRef<HTMLElement>);\n\n readonly fAutoFocus = input(true, { transform: booleanAttribute });\n\n ngAfterViewInit(): void {\n if (this.fAutoFocus()) {\n queueMicrotask(() => this._el.nativeElement.focus());\n }\n }\n}\n","import { Directive, ElementRef, inject } from '@angular/core';\n\n@Directive({\n selector: '[fRipple]',\n host: {\n style: 'position: relative; overflow: hidden;',\n '(mousedown)': 'onMouseDown($event)',\n },\n})\nexport class RippleDirective {\n private readonly _el = inject(ElementRef<HTMLElement>);\n\n onMouseDown(e: MouseEvent): void {\n const el = this._el.nativeElement;\n const rect = el.getBoundingClientRect();\n const size = Math.max(rect.width, rect.height) * 2;\n const span = document.createElement('span');\n span.style.cssText = `\n position: absolute;\n border-radius: 50%;\n pointer-events: none;\n background: currentColor;\n opacity: 0.25;\n transform: scale(0);\n width: ${size}px;\n height: ${size}px;\n left: ${e.clientX - rect.left - size / 2}px;\n top: ${e.clientY - rect.top - size / 2}px;\n transition: transform 0.4s ease-out, opacity 0.6s ease-out;\n `;\n el.appendChild(span);\n requestAnimationFrame(() => {\n span.style.transform = 'scale(1)';\n span.style.opacity = '0';\n });\n setTimeout(() => span.remove(), 600);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\n// ─── Phase 8 — Icon ───────────────────────────────────────────────────────────\nimport { UiIconComponent } from '../components/icon/ui-icon.component';\n\n// ─── Phase 1 ──────────────────────────────────────────────────────────────────\nimport { ConfirmDialog } from '../components/confirm-dialog/confirm-dialog.component';\nimport { ToastComponent } from '../components/toast/toast.component';\n\n// ─── Phase 2 ──────────────────────────────────────────────────────────────────\nimport { AvatarComponent } from '../components/avatar/avatar.component';\nimport { AvatarGroupComponent } from '../components/avatar/avatar-group.component';\nimport { ButtonComponent } from '../components/button/button.component';\nimport { FButtonDirective } from '../components/button/f-button.directive';\nimport { ChipComponent } from '../components/chip/chip.component';\nimport { DividerComponent } from '../components/divider/divider.component';\nimport { ImageComponent } from '../components/image/image.component';\nimport { MessageComponent } from '../components/message/message.component';\nimport { ProgressbarComponent } from '../components/progressbar/progressbar.component';\nimport { ProgressSpinnerComponent } from '../components/progressspinner/progressspinner.component';\nimport { SkeletonComponent } from '../components/skeleton/skeleton.component';\nimport { TagComponent } from '../components/tag/tag.component';\n\n// ─── Phase 3 ──────────────────────────────────────────────────────────────────\nimport { CheckboxComponent } from '../components/checkbox/checkbox.component';\nimport { DatePickerComponent } from '../components/datepicker/datepicker.component';\nimport { FileUploadComponent } from '../components/fileupload/fileupload.component';\nimport { IconFieldComponent } from '../components/iconfield/iconfield.component';\nimport { InputIconComponent } from '../components/inputicon/inputicon.component';\nimport { InputNumberComponent } from '../components/inputnumber/inputnumber.component';\nimport { InputTextDirective } from '../components/input-text/input-text.directive';\nimport { InputPasswordDirective } from '../components/input-text/input-password.directive';\nimport { MultiSelectComponent } from '../components/select/multiselect.component';\nimport { PasswordComponent } from '../components/password/password.component';\nimport { RadioButtonComponent } from '../components/radiobutton/radiobutton.component';\nimport { RatingComponent } from '../components/rating/rating.component';\nimport { SelectComponent } from '../components/select/select.component';\nimport { SelectButtonComponent } from '../components/selectbutton/selectbutton.component';\nimport { TextareaDirective } from '../components/textarea/textarea.directive';\nimport { ToggleButtonComponent } from '../components/togglebutton/togglebutton.component';\nimport { ToggleSwitchComponent } from '../components/toggleswitch/toggleswitch.component';\n\n// ─── Phase 4 ──────────────────────────────────────────────────────────────────\nimport { DialogComponent } from '../components/dialog/dialog.component';\nimport { DrawerComponent } from '../components/drawer/drawer.component';\nimport { PopoverComponent } from '../components/popover/popover.component';\n\n// ─── Phase 5 ──────────────────────────────────────────────────────────────────\nimport { CardComponent } from '../components/card/card.component';\nimport { PanelComponent } from '../components/panel/panel.component';\nimport { StepsComponent } from '../components/steps/steps.component';\nimport { SplitterComponent, SplitterPanelComponent } from '../components/splitter/splitter.component';\nimport { ToolbarComponent } from '../components/toolbar/toolbar.component';\nimport {\n TabsComponent,\n TabComponent,\n TabListComponent,\n TabPanelComponent,\n TabPanelsComponent,\n} from '../components/tabs/tabs.component';\nimport {\n AccordionComponent,\n AccordionPanelComponent,\n AccordionHeaderComponent,\n AccordionContentComponent,\n} from '../components/accordion/accordion.component';\n\n// ─── Phase 6 ──────────────────────────────────────────────────────────────────\nimport { ChartComponent } from '../components/chart/chart.component';\nimport { PaginatorComponent } from '../components/paginator/paginator.component';\nimport { SortIconComponent, SortableColumnDirective } from '../components/table/sort-icon.component';\nimport { StyleClassDirective } from '../components/styleclass/styleclass.directive';\nimport { TableComponent } from '../components/table/table.component';\nimport { TooltipDirective } from '../components/tooltip/tooltip.directive';\n\n// ─── Phase 7 ──────────────────────────────────────────────────────────────────\nimport { AutoCompleteComponent } from '../components/autocomplete/autocomplete.component';\nimport { ColorPickerComponent } from '../components/colorpicker/colorpicker.component';\nimport { ListboxComponent } from '../components/listbox/listbox.component';\nimport { SplitButtonComponent } from '../components/splitbutton/splitbutton.component';\nimport { TreeTableComponent, TreeTableTogglerComponent } from '../components/treetable/treetable.component';\nimport { TreeSelectComponent } from '../components/treeselect/treeselect.component';\n\n// ─── Phase 9 — Component library extensions ──────────────────────────────────────────────────\nimport { BadgeComponent } from '../components/badge/badge.component';\nimport { OverlayBadgeComponent } from '../components/overlaybadge/overlaybadge.component';\nimport { FieldsetComponent } from '../components/fieldset/fieldset.component';\nimport { FloatLabelComponent } from '../components/floatlabel/floatlabel.component';\nimport { IftaLabelComponent } from '../components/iftalabel/iftalabel.component';\nimport { ButtonGroupComponent } from '../components/buttongroup/buttongroup.component';\nimport { InputGroupComponent, InputGroupAddonComponent } from '../components/inputgroup/inputgroup.component';\nimport { ScrollTopComponent } from '../components/scrolltop/scrolltop.component';\nimport { MeterGroupComponent } from '../components/metergroup/metergroup.component';\nimport { FluidComponent } from '../components/fluid/fluid.component';\nimport { BlockUiComponent } from '../components/blockui/blockui.component';\nimport { MenuComponent } from '../components/menu/menu.component';\nimport { MenubarComponent } from '../components/menubar/menubar.component';\nimport { TieredMenuComponent } from '../components/tieredmenu/tieredmenu.component';\nimport { ContextMenuComponent } from '../components/contextmenu/contextmenu.component';\nimport { MegaMenuComponent } from '../components/megamenu/megamenu.component';\nimport { PanelMenuComponent } from '../components/panelmenu/panelmenu.component';\nimport { BreadcrumbComponent } from '../components/breadcrumb/breadcrumb.component';\nimport { SpeedDialComponent } from '../components/speeddial/speeddial.component';\nimport { DockComponent } from '../components/dock/dock.component';\nimport { InputMaskDirective } from '../components/inputmask/inputmask.directive';\nimport { InputOtpComponent } from '../components/inputotp/inputotp.component';\nimport { SliderComponent } from '../components/slider/slider.component';\nimport { KnobComponent } from '../components/knob/knob.component';\nimport { CascadeSelectComponent } from '../components/cascadeselect/cascadeselect.component';\nimport { KeyFilterDirective } from '../components/keyfilter/keyfilter.directive';\nimport { ConfirmPopupComponent } from '../components/confirmpopup/confirmpopup.component';\nimport { DynamicDialogComponent } from '../components/dynamicdialog/dynamicdialog.component';\nimport { InplaceComponent } from '../components/inplace/inplace.component';\nimport { TreeComponent } from '../components/tree/tree.component';\nimport { TimelineComponent } from '../components/timeline/timeline.component';\nimport { DataViewComponent } from '../components/dataview/dataview.component';\nimport { CarouselComponent } from '../components/carousel/carousel.component';\nimport { ScrollPanelComponent } from '../components/scrollpanel/scrollpanel.component';\nimport { ScrollerComponent } from '../components/scroller/scroller.component';\nimport { OrganizationChartComponent } from '../components/organizationchart/organizationchart.component';\nimport { PickListComponent } from '../components/picklist/picklist.component';\nimport { OrderListComponent } from '../components/orderlist/orderlist.component';\nimport { GalleriaComponent } from '../components/galleria/galleria.component';\nimport { EditorComponent } from '../components/editor/editor.component';\nimport { TerminalComponent } from '../components/terminal/terminal.component';\nimport { ImageCompareComponent } from '../components/imagecompare/imagecompare.component';\nimport { AnimateOnScrollDirective } from '../components/animateonscroll/animateonscroll.directive';\nimport { AutoFocusDirective } from '../components/autofocus/autofocus.directive';\nimport { RippleDirective } from '../components/ripple/ripple.directive';\n\n// ─── Shared utilities ─────────────────────────────────────────────────────────\nimport { FTemplateDirective } from '../components/shared/ftemplate.directive';\n\nconst ALL_COMPONENTS = [\n // Phase 1\n ConfirmDialog, ToastComponent,\n // Phase 2\n AvatarComponent, AvatarGroupComponent, ButtonComponent, FButtonDirective,\n ChipComponent, DividerComponent, ImageComponent, MessageComponent,\n ProgressbarComponent, ProgressSpinnerComponent, SkeletonComponent, TagComponent,\n // Phase 3\n CheckboxComponent, DatePickerComponent, FileUploadComponent,\n IconFieldComponent, InputIconComponent, InputNumberComponent, InputTextDirective,\n InputPasswordDirective,\n MultiSelectComponent, PasswordComponent, RadioButtonComponent, RatingComponent,\n SelectComponent, SelectButtonComponent, TextareaDirective,\n ToggleButtonComponent, ToggleSwitchComponent,\n // Phase 4\n DialogComponent, DrawerComponent, PopoverComponent,\n // Phase 5\n CardComponent, PanelComponent, StepsComponent,\n SplitterComponent, SplitterPanelComponent, ToolbarComponent,\n TabsComponent, TabComponent, TabListComponent, TabPanelComponent, TabPanelsComponent,\n AccordionComponent, AccordionPanelComponent, AccordionHeaderComponent, AccordionContentComponent,\n // Phase 6\n ChartComponent, PaginatorComponent, SortIconComponent, SortableColumnDirective,\n StyleClassDirective, TableComponent, TooltipDirective,\n // Phase 7\n AutoCompleteComponent, ColorPickerComponent, ListboxComponent,\n SplitButtonComponent, TreeTableComponent, TreeTableTogglerComponent, TreeSelectComponent,\n // Phase 8 — Icon\n UiIconComponent,\n // Phase 9 — Component library extensions\n BadgeComponent, OverlayBadgeComponent, FieldsetComponent, FloatLabelComponent, IftaLabelComponent,\n ButtonGroupComponent, InputGroupComponent, InputGroupAddonComponent, ScrollTopComponent,\n MeterGroupComponent, FluidComponent, BlockUiComponent,\n MenuComponent, MenubarComponent, TieredMenuComponent, ContextMenuComponent, MegaMenuComponent,\n PanelMenuComponent, BreadcrumbComponent, SpeedDialComponent, DockComponent,\n InputMaskDirective, InputOtpComponent, SliderComponent, KnobComponent,\n CascadeSelectComponent, KeyFilterDirective,\n ConfirmPopupComponent, DynamicDialogComponent, InplaceComponent,\n TreeComponent, TimelineComponent, DataViewComponent, CarouselComponent,\n ScrollPanelComponent, ScrollerComponent,\n OrganizationChartComponent, PickListComponent, OrderListComponent, GalleriaComponent,\n EditorComponent, TerminalComponent, ImageCompareComponent,\n AnimateOnScrollDirective, AutoFocusDirective, RippleDirective,\n // Shared utilities\n FTemplateDirective,\n];\n\n@NgModule({\n imports: [FormsModule, ...ALL_COMPONENTS],\n exports: [...ALL_COMPONENTS],\n})\nexport class UiModule {}\n","import { Injectable, signal } from '@angular/core';\n\nexport interface NgUITranslationConfig {\n accept?: string;\n reject?: string;\n choose?: string;\n upload?: string;\n cancel?: string;\n close?: string;\n clear?: string;\n apply?: string;\n remove?: string;\n today?: string;\n weekHeader?: string;\n firstDayOfWeek?: number;\n showMonthAfterYear?: boolean;\n dateFormat?: string;\n dayNames?: string[];\n dayNamesShort?: string[];\n dayNamesMin?: string[];\n monthNames?: string[];\n monthNamesShort?: string[];\n aria?: Record<string, string>;\n [key: string]: unknown;\n}\n\nexport interface NgUIOptions {\n theme?: {\n options?: {\n darkModeSelector?: string;\n cssLayer?: { name: string; order: string } | false;\n };\n };\n translation?: NgUITranslationConfig;\n}\n\n@Injectable()\nexport class NgUIConfig {\n private readonly _translation = signal<NgUITranslationConfig>({\n accept: 'Yes',\n reject: 'No',\n choose: 'Choose',\n upload: 'Upload',\n cancel: 'Cancel',\n close: 'Close',\n clear: 'Clear',\n apply: 'Apply',\n remove: 'Remove',\n today: 'Today',\n weekHeader: 'Wk',\n firstDayOfWeek: 0,\n showMonthAfterYear: false,\n dateFormat: 'mm/dd/yy',\n dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n dayNamesMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n });\n\n readonly translation = this._translation.asReadonly();\n\n configure(options: NgUIOptions): void {\n if (options?.translation) {\n this._translation.update(t => ({ ...t, ...options.translation }));\n }\n }\n}\n","export type ColorShade = '50' | '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900' | '950';\nexport type ColorPalette = Record<ColorShade, string>;\nexport type SurfacePalette = { 0: string } & ColorPalette;\n\n// ─── Primary color palettes (all Tailwind colors) ─────────────────────────────\n\nexport const PRIMARY_PALETTES: Record<string, ColorPalette> = {\n emerald: {\n '50': '#ecfdf5', '100': '#d1fae5', '200': '#a7f3d0', '300': '#6ee7b7',\n '400': '#34d399', '500': '#10b981', '600': '#059669', '700': '#047857',\n '800': '#065f46', '900': '#064e3b', '950': '#022c22',\n },\n green: {\n '50': '#f0fdf4', '100': '#dcfce7', '200': '#bbf7d0', '300': '#86efac',\n '400': '#4ade80', '500': '#22c55e', '600': '#16a34a', '700': '#15803d',\n '800': '#166534', '900': '#14532d', '950': '#052e16',\n },\n lime: {\n '50': '#f7fee7', '100': '#ecfccb', '200': '#d9f99d', '300': '#bef264',\n '400': '#a3e635', '500': '#84cc16', '600': '#65a30d', '700': '#4d7c0f',\n '800': '#3f6212', '900': '#365314', '950': '#1a2e05',\n },\n orange: {\n '50': '#fff7ed', '100': '#ffedd5', '200': '#fed7aa', '300': '#fdba74',\n '400': '#fb923c', '500': '#f97316', '600': '#ea580c', '700': '#c2410c',\n '800': '#9a3412', '900': '#7c2d12', '950': '#431407',\n },\n amber: {\n '50': '#fffbeb', '100': '#fef3c7', '200': '#fde68a', '300': '#fcd34d',\n '400': '#fbbf24', '500': '#f59e0b', '600': '#d97706', '700': '#b45309',\n '800': '#92400e', '900': '#78350f', '950': '#451a03',\n },\n yellow: {\n '50': '#fefce8', '100': '#fef9c3', '200': '#fef08a', '300': '#fde047',\n '400': '#facc15', '500': '#eab308', '600': '#ca8a04', '700': '#a16207',\n '800': '#854d0e', '900': '#713f12', '950': '#422006',\n },\n teal: {\n '50': '#f0fdfa', '100': '#ccfbf1', '200': '#99f6e4', '300': '#5eead4',\n '400': '#2dd4bf', '500': '#14b8a6', '600': '#0d9488', '700': '#0f766e',\n '800': '#115e59', '900': '#134e4a', '950': '#042f2e',\n },\n cyan: {\n '50': '#ecfeff', '100': '#cffafe', '200': '#a5f3fc', '300': '#67e8f9',\n '400': '#22d3ee', '500': '#06b6d4', '600': '#0891b2', '700': '#0e7490',\n '800': '#155e75', '900': '#164e63', '950': '#083344',\n },\n sky: {\n '50': '#f0f9ff', '100': '#e0f2fe', '200': '#bae6fd', '300': '#7dd3fc',\n '400': '#38bdf8', '500': '#0ea5e9', '600': '#0284c7', '700': '#0369a1',\n '800': '#075985', '900': '#0c4a6e', '950': '#082f49',\n },\n blue: {\n '50': '#eff6ff', '100': '#dbeafe', '200': '#bfdbfe', '300': '#93c5fd',\n '400': '#60a5fa', '500': '#3b82f6', '600': '#2563eb', '700': '#1d4ed8',\n '800': '#1e40af', '900': '#1e3a8a', '950': '#172554',\n },\n indigo: {\n '50': '#eef2ff', '100': '#e0e7ff', '200': '#c7d2fe', '300': '#a5b4fc',\n '400': '#818cf8', '500': '#6366f1', '600': '#4f46e5', '700': '#4338ca',\n '800': '#3730a3', '900': '#312e81', '950': '#1e1b4b',\n },\n violet: {\n '50': '#f5f3ff', '100': '#ede9fe', '200': '#ddd6fe', '300': '#c4b5fd',\n '400': '#a78bfa', '500': '#8b5cf6', '600': '#7c3aed', '700': '#6d28d9',\n '800': '#5b21b6', '900': '#4c1d95', '950': '#2e1065',\n },\n purple: {\n '50': '#faf5ff', '100': '#f3e8ff', '200': '#e9d5ff', '300': '#d8b4fe',\n '400': '#c084fc', '500': '#a855f7', '600': '#9333ea', '700': '#7e22ce',\n '800': '#6b21a8', '900': '#581c87', '950': '#3b0764',\n },\n fuchsia: {\n '50': '#fdf4ff', '100': '#fae8ff', '200': '#f5d0fe', '300': '#f0abfc',\n '400': '#e879f9', '500': '#d946ef', '600': '#c026d3', '700': '#a21caf',\n '800': '#86198f', '900': '#701a75', '950': '#4a044e',\n },\n pink: {\n '50': '#fdf2f8', '100': '#fce7f3', '200': '#fbcfe8', '300': '#f9a8d4',\n '400': '#f472b6', '500': '#ec4899', '600': '#db2777', '700': '#be185d',\n '800': '#9d174d', '900': '#831843', '950': '#500724',\n },\n rose: {\n '50': '#fff1f2', '100': '#ffe4e6', '200': '#fecdd3', '300': '#fda4af',\n '400': '#fb7185', '500': '#f43f5e', '600': '#e11d48', '700': '#be123c',\n '800': '#9f1239', '900': '#881337', '950': '#4c0519',\n },\n};\n\n// ─── Surface palettes ─────────────────────────────────────────────────────────\n\nexport const SURFACE_PALETTES: Record<string, SurfacePalette> = {\n slate: {\n 0: '#ffffff', '50': '#f8fafc', '100': '#f1f5f9', '200': '#e2e8f0',\n '300': '#cbd5e1', '400': '#94a3b8', '500': '#64748b', '600': '#475569',\n '700': '#334155', '800': '#1e293b', '900': '#0f172a', '950': '#020617',\n },\n gray: {\n 0: '#ffffff', '50': '#f9fafb', '100': '#f3f4f6', '200': '#e5e7eb',\n '300': '#d1d5db', '400': '#9ca3af', '500': '#6b7280', '600': '#4b5563',\n '700': '#374151', '800': '#1f2937', '900': '#111827', '950': '#030712',\n },\n zinc: {\n 0: '#ffffff', '50': '#fafafa', '100': '#f4f4f5', '200': '#e4e4e7',\n '300': '#d4d4d8', '400': '#a1a1aa', '500': '#71717a', '600': '#52525b',\n '700': '#3f3f46', '800': '#27272a', '900': '#18181b', '950': '#09090b',\n },\n neutral: {\n 0: '#ffffff', '50': '#fafafa', '100': '#f5f5f5', '200': '#e5e5e5',\n '300': '#d4d4d4', '400': '#a3a3a3', '500': '#737373', '600': '#525252',\n '700': '#404040', '800': '#262626', '900': '#171717', '950': '#0a0a0a',\n },\n stone: {\n 0: '#ffffff', '50': '#fafaf9', '100': '#f5f5f4', '200': '#e7e5e4',\n '300': '#d6d3d1', '400': '#a8a29e', '500': '#78716c', '600': '#57534e',\n '700': '#44403c', '800': '#292524', '900': '#1c1917', '950': '#0c0a09',\n },\n soho: {\n 0: '#ffffff', '50': '#ececec', '100': '#dedfdf', '200': '#c4c4c6',\n '300': '#adaeb0', '400': '#97979b', '500': '#7f8084', '600': '#6a6b70',\n '700': '#55565b', '800': '#3f4046', '900': '#2c2c34', '950': '#16161d',\n },\n viva: {\n 0: '#ffffff', '50': '#f3f3f3', '100': '#e7e7e8', '200': '#cfd0d0',\n '300': '#b7b8b9', '400': '#9fa1a1', '500': '#87898a', '600': '#6e7173',\n '700': '#565a5b', '800': '#3e4244', '900': '#262b2c', '950': '#0e1315',\n },\n ocean: {\n 0: '#ffffff', '50': '#fbfcfc', '100': '#f7f9f8', '200': '#eff3f2',\n '300': '#dadedd', '400': '#b1b7b6', '500': '#828787', '600': '#5f7274',\n '700': '#415b61', '800': '#29444e', '900': '#183240', '950': '#0c1920',\n },\n};\n\nexport const NOIR_PRIMARY: ColorPalette = {\n '50': 'var(--f-surface-50)', '100': 'var(--f-surface-100)', '200': 'var(--f-surface-200)',\n '300': 'var(--f-surface-300)', '400': 'var(--f-surface-400)', '500': 'var(--f-surface-500)',\n '600': 'var(--f-surface-600)', '700': 'var(--f-surface-700)', '800': 'var(--f-surface-800)',\n '900': 'var(--f-surface-900)', '950': 'var(--f-surface-950)',\n};\n","export type PresetName = 'Aura' | 'Lara' | 'Nora';\n\nexport interface SelectButtonTokens {\n background: string;\n borderColor: string;\n dividerColor: string;\n padding: string;\n itemColor: string;\n itemHoverBackground: string;\n checkedBackground: string;\n checkedColor: string;\n checkedShadow: string;\n fontWeight: string;\n itemBorderRadius: string;\n}\n\nexport interface ThemePreset {\n name: PresetName;\n borderRadius: string;\n borderRadiusSm: string;\n borderRadiusLg: string;\n borderRadiusXl: string;\n borderWidth: string;\n shadowSm: string;\n shadow: string;\n shadowLg: string;\n shadowXl: string;\n shadow2xl: string;\n transitionDuration: string;\n focusRingWidth: string;\n focusRingStyle: string;\n focusRingOffset: string;\n buttonFontWeight: string;\n highlightVariant: 'tint' | 'solid';\n strongBorders: boolean;\n selectButton: SelectButtonTokens;\n cardBorderRadius: string;\n cardPadding: string;\n cardGap: string;\n cardShadow: string;\n}\n\nexport const AURA_PRESET: ThemePreset = {\n name: 'Aura',\n borderRadius: '6px',\n borderRadiusSm: '4px',\n borderRadiusLg: '8px',\n borderRadiusXl: '12px',\n borderWidth: '1px',\n shadowSm: '0 1px 2px 0 rgb(0 0 0 / 0.05)',\n shadow: '0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)',\n shadowLg: '0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)',\n shadowXl: '0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)',\n shadow2xl: '0 25px 50px -12px rgb(0 0 0 / 0.25)',\n transitionDuration: '0.2s',\n focusRingWidth: '1px',\n focusRingStyle: 'solid',\n focusRingOffset: '2px',\n buttonFontWeight: '500',\n highlightVariant: 'tint',\n strongBorders: false,\n selectButton: {\n background: 'var(--f-track-background)',\n borderColor: 'transparent',\n dividerColor: 'transparent',\n padding: '3px',\n itemColor: 'var(--f-text-muted-color)',\n itemHoverBackground: 'transparent',\n checkedBackground: 'var(--f-track-item-background)',\n checkedColor: 'var(--f-text-color)',\n checkedShadow: '0px 1px 2px 0px rgba(0,0,0,0.02), 0px 1px 2px 0px rgba(0,0,0,0.04)',\n fontWeight: '500',\n itemBorderRadius: 'calc(var(--f-border-radius-md) - 3px)',\n },\n cardBorderRadius: '12px',\n cardPadding: '1.25rem',\n cardGap: '0.5rem',\n cardShadow: '0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1)',\n};\n\nexport const NORA_PRESET: ThemePreset = {\n name: 'Nora',\n borderRadius: '2px',\n borderRadiusSm: '2px',\n borderRadiusLg: '2px',\n borderRadiusXl: '2px',\n borderWidth: '2px',\n shadowSm: '0 1px 2px 0 rgb(0 0 0 / 0.05)',\n shadow: '0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)',\n shadowLg: '0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)',\n shadowXl: '0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)',\n shadow2xl: '0 25px 50px -12px rgb(0 0 0 / 0.25)',\n transitionDuration: '0s',\n focusRingWidth: '2px',\n focusRingStyle: 'solid',\n focusRingOffset: '-1px',\n buttonFontWeight: '700',\n highlightVariant: 'solid',\n strongBorders: true,\n selectButton: {\n background: 'var(--f-form-field-background)',\n borderColor: 'var(--f-form-field-border-color)',\n dividerColor: 'var(--f-form-field-border-color)',\n padding: '0px',\n itemColor: 'var(--f-text-muted-color)',\n itemHoverBackground: 'var(--f-content-hover-background)',\n checkedBackground: 'var(--f-primary-color)',\n checkedColor: 'var(--f-primary-contrast-color)',\n checkedShadow: 'none',\n fontWeight: '600',\n itemBorderRadius: '0px',\n },\n cardBorderRadius: '4px',\n cardPadding: '1.25rem',\n cardGap: '0.5rem',\n cardShadow: '0 1px 4px 0 rgba(0, 0, 0, 0.1)',\n};\n\nexport const LARA_PRESET: ThemePreset = {\n name: 'Lara',\n borderRadius: '6px',\n borderRadiusSm: '4px',\n borderRadiusLg: '8px',\n borderRadiusXl: '12px',\n borderWidth: '1px',\n shadowSm: '0 1px 2px 0 rgba(0, 0, 0, 0.08)',\n shadow: '0 1px 3px rgba(0, 0, 0, 0.1)',\n shadowLg: '0 2px 12px 0 rgba(0, 0, 0, 0.1)',\n shadowXl: '0 1px 3px rgba(0, 0, 0, 0.3)',\n shadow2xl: '0 4px 12px 0 rgba(0, 0, 0, 0.35)',\n transitionDuration: '0.2s',\n focusRingWidth: '0',\n focusRingStyle: 'none',\n focusRingOffset: '0',\n buttonFontWeight: '600',\n highlightVariant: 'tint',\n strongBorders: false,\n selectButton: {\n background: 'var(--f-form-field-background)',\n borderColor: 'var(--f-form-field-border-color)',\n dividerColor: 'var(--f-form-field-border-color)',\n padding: '0px',\n itemColor: 'var(--f-text-muted-color)',\n itemHoverBackground: 'var(--f-content-hover-background)',\n checkedBackground: 'var(--f-highlight-background)',\n checkedColor: 'var(--f-highlight-color)',\n checkedShadow: 'none',\n fontWeight: '500',\n itemBorderRadius: '0px',\n },\n cardBorderRadius: '8px',\n cardPadding: '1.5rem',\n cardGap: '0.75rem',\n cardShadow: '0 0.125rem 0.25rem rgba(0, 0, 0, 0.075)',\n};\n\nexport const PRESETS: Record<PresetName, ThemePreset> = {\n Aura: AURA_PRESET,\n Lara: LARA_PRESET,\n Nora: NORA_PRESET,\n};\n\nexport const PRESET_NAMES: PresetName[] = ['Aura', 'Lara', 'Nora'];\n","import { ColorPalette, SurfacePalette, NOIR_PRIMARY, PRIMARY_PALETTES, SURFACE_PALETTES } from './palettes';\nimport { PresetName, PRESETS, ThemePreset } from './presets';\n\nfunction setVar(name: string, value: string, root: HTMLElement): void {\n root.style.setProperty(name, value);\n}\n\n// ─── Primary color ─────────────────────────────────────────────────────────────\n\nexport function applyPrimaryPalette(palette: ColorPalette, isDark = false, root = document.documentElement): void {\n const shades = ['50', '100', '200', '300', '400', '500', '600', '700', '800', '900', '950'] as const;\n for (const shade of shades) {\n setVar(`--f-primary-${shade}`, palette[shade], root);\n }\n const isNoir = palette['50'].startsWith('var(');\n if (isNoir) {\n if (isDark) {\n setVar('--f-primary-color', 'var(--f-surface-50)', root);\n setVar('--f-primary-hover-color', 'var(--f-surface-200)', root);\n setVar('--f-primary-active-color', 'var(--f-surface-300)', root);\n setVar('--f-primary-contrast-color', 'var(--f-surface-950)', root);\n } else {\n setVar('--f-primary-color', 'var(--f-surface-950)', root);\n setVar('--f-primary-hover-color', 'var(--f-surface-800)', root);\n setVar('--f-primary-active-color', 'var(--f-surface-700)', root);\n setVar('--f-primary-contrast-color', '#ffffff', root);\n }\n } else {\n if (isDark) {\n setVar('--f-primary-color', 'var(--f-primary-400)', root);\n setVar('--f-primary-hover-color', 'var(--f-primary-300)', root);\n setVar('--f-primary-active-color', 'var(--f-primary-200)', root);\n setVar('--f-primary-contrast-color', 'var(--f-surface-900)', root);\n } else {\n setVar('--f-primary-color', 'var(--f-primary-500)', root);\n setVar('--f-primary-hover-color', 'var(--f-primary-600)', root);\n setVar('--f-primary-active-color', 'var(--f-primary-700)', root);\n setVar('--f-primary-contrast-color', '#ffffff', root);\n }\n }\n}\n\n// ─── Surface palette ───────────────────────────────────────────────────────────\n\nexport function applySurfacePalette(palette: SurfacePalette, root = document.documentElement): void {\n setVar('--f-surface-0', palette[0], root);\n const shades = ['50', '100', '200', '300', '400', '500', '600', '700', '800', '900', '950'] as const;\n for (const shade of shades) {\n setVar(`--f-surface-${shade}`, palette[shade], root);\n }\n}\n\n// ─── Semantic tokens ───────────────────────────────────────────────────────────\n\nexport function applyLightSemantics(root = document.documentElement): void {\n setVar('--f-text-color', 'var(--f-surface-700)', root);\n setVar('--f-text-hover-color', 'var(--f-surface-800)', root);\n setVar('--f-text-muted-color', 'var(--f-surface-500)', root);\n setVar('--f-text-hover-muted-color', 'var(--f-surface-600)', root);\n setVar('--f-content-background', 'var(--f-surface-0)', root);\n setVar('--f-content-hover-background', 'var(--f-surface-50)', root);\n setVar('--f-content-hover-color', 'var(--f-surface-700)', root);\n setVar('--f-content-border-color', 'var(--f-surface-200)', root);\n setVar('--f-highlight-background', 'var(--f-primary-50)', root);\n setVar('--f-highlight-color', 'var(--f-primary-700)', root);\n setVar('--f-highlight-focus-background', 'var(--f-primary-100)', root);\n setVar('--f-highlight-focus-color', 'var(--f-primary-800)', root);\n setVar('--f-overlay-popover-background', 'var(--f-surface-0)', root);\n setVar('--f-mask-background', 'rgba(0,0,0,0.4)', root);\n setVar('--f-form-field-background', 'var(--f-surface-0)', root);\n setVar('--f-form-field-border-color', 'var(--f-surface-300)', root);\n setVar('--f-form-field-hover-border-color', 'var(--f-surface-400)', root);\n setVar('--f-form-field-focus-border-color', 'var(--f-primary-500)', root);\n setVar('--f-form-field-disabled-background', 'var(--f-surface-100)', root);\n setVar('--f-form-field-disabled-color', 'var(--f-surface-400)', root);\n setVar('--f-form-field-color', 'var(--f-surface-900)', root);\n setVar('--f-form-field-placeholder-color', 'var(--f-surface-400)', root);\n setVar('--f-track-background', 'var(--f-surface-100)', root);\n setVar('--f-track-item-background', 'var(--f-surface-0)', root);\n}\n\nexport function applyDarkSemantics(root = document.documentElement): void {\n setVar('--f-text-color', 'var(--f-surface-100)', root);\n setVar('--f-text-hover-color', 'var(--f-surface-50)', root);\n setVar('--f-text-muted-color', 'var(--f-surface-400)', root);\n setVar('--f-text-hover-muted-color', 'var(--f-surface-300)', root);\n setVar('--f-content-background', 'var(--f-surface-900)', root);\n setVar('--f-content-hover-background', 'var(--f-surface-800)', root);\n setVar('--f-content-hover-color', 'var(--f-surface-100)', root);\n setVar('--f-content-border-color', 'var(--f-surface-700)', root);\n setVar('--f-highlight-background', 'color-mix(in srgb, var(--f-primary-400), transparent 84%)', root);\n setVar('--f-highlight-color', 'rgba(255,255,255,0.87)', root);\n setVar('--f-highlight-focus-background', 'color-mix(in srgb, var(--f-primary-400), transparent 76%)', root);\n setVar('--f-highlight-focus-color', 'rgba(255,255,255,0.87)', root);\n setVar('--f-overlay-popover-background', 'var(--f-surface-800)', root);\n setVar('--f-mask-background', 'rgba(0,0,0,0.6)', root);\n setVar('--f-form-field-background', 'var(--f-surface-800)', root);\n setVar('--f-form-field-border-color', 'var(--f-surface-700)', root);\n setVar('--f-form-field-hover-border-color', 'var(--f-surface-600)', root);\n setVar('--f-form-field-focus-border-color', 'var(--f-primary-400)', root);\n setVar('--f-form-field-disabled-background', 'var(--f-surface-700)', root);\n setVar('--f-form-field-disabled-color', 'var(--f-surface-500)', root);\n setVar('--f-form-field-color', 'var(--f-surface-50)', root);\n setVar('--f-form-field-placeholder-color', 'var(--f-surface-500)', root);\n setVar('--f-track-background', 'var(--f-surface-950)', root);\n setVar('--f-track-item-background', 'var(--f-surface-800)', root);\n}\n\n// ─── Preset tokens ─────────────────────────────────────────────────────────────\n\nexport function applyPreset(preset: ThemePreset, root = document.documentElement): void {\n setVar('--f-content-border-radius', preset.borderRadius, root);\n setVar('--f-border-radius-sm', preset.borderRadiusSm, root);\n setVar('--f-border-radius-md', preset.borderRadius, root);\n setVar('--f-border-radius-lg', preset.borderRadiusLg, root);\n setVar('--f-border-radius-xl', preset.borderRadiusXl, root);\n setVar('--f-border-width', preset.borderWidth, root);\n setVar('--f-transition-duration', preset.transitionDuration, root);\n setVar('--f-focus-ring-width', preset.focusRingWidth, root);\n setVar('--f-focus-ring-style', preset.focusRingStyle, root);\n setVar('--f-focus-ring-color', 'var(--f-primary-color)', root);\n setVar('--f-focus-ring-offset', preset.focusRingOffset, root);\n setVar('--f-focus-ring-shadow', 'none', root);\n setVar('--f-shadow-sm', preset.shadowSm, root);\n setVar('--f-shadow', preset.shadow, root);\n setVar('--f-shadow-lg', preset.shadowLg, root);\n setVar('--f-shadow-xl', preset.shadowXl, root);\n setVar('--f-shadow-2xl', preset.shadow2xl, root);\n\n setVar('--f-button-font-weight', preset.buttonFontWeight, root);\n\n setVar('--f-card-border-radius', preset.cardBorderRadius, root);\n setVar('--f-card-padding', preset.cardPadding, root);\n setVar('--f-card-gap', preset.cardGap, root);\n setVar('--f-card-shadow', preset.cardShadow, root);\n\n const sb = preset.selectButton;\n setVar('--f-selectbutton-background', sb.background, root);\n setVar('--f-selectbutton-border-color', sb.borderColor, root);\n setVar('--f-selectbutton-divider-color', sb.dividerColor, root);\n setVar('--f-selectbutton-padding', sb.padding, root);\n setVar('--f-selectbutton-item-color', sb.itemColor, root);\n setVar('--f-selectbutton-item-hover-background', sb.itemHoverBackground, root);\n setVar('--f-selectbutton-checked-background', sb.checkedBackground, root);\n setVar('--f-selectbutton-checked-color', sb.checkedColor, root);\n setVar('--f-selectbutton-checked-shadow', sb.checkedShadow, root);\n setVar('--f-selectbutton-font-weight', sb.fontWeight, root);\n setVar('--f-selectbutton-item-border-radius', sb.itemBorderRadius, root);\n}\n\n// ─── Full theme application ────────────────────────────────────────────────────\n\nexport interface ApplyThemeOptions {\n preset?: PresetName;\n primary?: string;\n surface?: string | null;\n darkTheme?: boolean;\n}\n\nexport function applyTheme(options: ApplyThemeOptions, root = document.documentElement): void {\n const presetName = (options.preset ?? 'Aura') as PresetName;\n const preset = PRESETS[presetName] ?? PRESETS['Aura'];\n const primaryName = options.primary ?? 'violet';\n const surfaceName = options.surface;\n const isDark = options.darkTheme ?? false;\n\n const primaryPalette = primaryName === 'noir' ? NOIR_PRIMARY : (PRIMARY_PALETTES[primaryName] ?? PRIMARY_PALETTES['violet']);\n\n const defaultSurface = isDark ? 'zinc' : 'slate';\n const surfacePalette = SURFACE_PALETTES[surfaceName ?? defaultSurface] ?? SURFACE_PALETTES['slate'];\n\n applyPreset(preset, root);\n applySurfacePalette(surfacePalette, root);\n applyPrimaryPalette(primaryPalette, isDark, root);\n\n if (isDark) {\n applyDarkSemantics(root);\n } else {\n applyLightSemantics(root);\n }\n\n if (preset.highlightVariant === 'solid') {\n setVar('--f-highlight-background', 'var(--f-primary-color)', root);\n setVar('--f-highlight-color', 'var(--f-primary-contrast-color)', root);\n setVar('--f-highlight-focus-background', 'var(--f-primary-hover-color)', root);\n setVar('--f-highlight-focus-color', 'var(--f-primary-contrast-color)', root);\n }\n\n if (preset.strongBorders) {\n if (isDark) {\n setVar('--f-form-field-border-color', 'var(--f-surface-600)', root);\n setVar('--f-form-field-hover-border-color', 'var(--f-surface-500)', root);\n setVar('--f-content-border-color', 'var(--f-surface-600)', root);\n } else {\n setVar('--f-form-field-border-color', 'var(--f-surface-400)', root);\n setVar('--f-form-field-hover-border-color', 'var(--f-surface-500)', root);\n setVar('--f-content-border-color', 'var(--f-surface-300)', root);\n }\n }\n}\n\n// ─── Bootstrap helper (reads from localStorage like legacy system) ─────────────\n\nexport function buildBootstrapPreset(envConfig?: { preset?: string; primary?: string; surface?: string | null; isMemorable?: boolean }): ApplyThemeOptions {\n const preset = (envConfig?.preset ?? 'Aura') as PresetName;\n const primary = envConfig?.primary ?? 'violet';\n const surface = envConfig?.surface ?? null;\n\n if (envConfig?.isMemorable !== false) {\n try {\n const stored = localStorage.getItem('flusys.layout.config');\n if (stored) {\n const parsed = JSON.parse(stored) as { preset?: string; primary?: string; surface?: string; darkTheme?: boolean };\n return {\n preset: (parsed.preset as PresetName) ?? preset,\n primary: parsed.primary ?? primary,\n surface: parsed.surface ?? surface,\n darkTheme: parsed.darkTheme ?? false,\n };\n }\n } catch { /* SSR or storage unavailable */ }\n }\n return { preset, primary, surface };\n}\n\n// ─── Re-export for convenience ─────────────────────────────────────────────────\n\nexport { PRIMARY_PALETTES, SURFACE_PALETTES, NOIR_PRIMARY };\nexport type { ColorPalette, SurfacePalette };\n","import { APP_INITIALIZER, EnvironmentProviders, makeEnvironmentProviders, PLATFORM_ID } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { NgUIConfig, NgUIOptions } from './services/ng-ui-config.service';\nimport { applyTheme, buildBootstrapPreset, ApplyThemeOptions } from './themes/applier';\nimport { PresetName } from './themes/presets';\n\nexport interface ProvideNgUIOptions {\n theme?: {\n preset?: ApplyThemeOptions | { preset: ApplyThemeOptions; options: { darkModeSelector?: string } };\n options?: { darkModeSelector?: string };\n };\n translation?: NgUIOptions['translation'];\n ripple?: boolean;\n}\n\nfunction initializeNgUITheme(options: ProvideNgUIOptions, platformId: object): () => void {\n return () => {\n if (!isPlatformBrowser(platformId)) return;\n\n let themeOptions: ApplyThemeOptions = {};\n\n const themePreset = options?.theme?.preset;\n if (themePreset && typeof themePreset === 'object' && 'preset' in themePreset && 'options' in themePreset) {\n themeOptions = (themePreset as { preset: ApplyThemeOptions }).preset;\n } else if (themePreset) {\n themeOptions = themePreset as ApplyThemeOptions;\n }\n\n const darkModeSelector = options?.theme?.options?.darkModeSelector ?? '.app-dark';\n const isDark = document.documentElement.classList.contains(darkModeSelector.replace('.', '')) ||\n document.documentElement.getAttribute('class')?.includes('app-dark') === true;\n\n applyTheme({ ...themeOptions, darkTheme: isDark });\n\n // Apply dark mode semantics on toggle\n const observer = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n if (mutation.type === 'attributes' && mutation.attributeName === 'class') {\n const el = mutation.target as HTMLElement;\n const nowDark = el.classList.contains('app-dark');\n const presetKeys = themeOptions as ApplyThemeOptions;\n applyTheme({ ...presetKeys, darkTheme: nowDark });\n }\n }\n });\n observer.observe(document.documentElement, { attributes: true, attributeFilter: ['class'] });\n };\n}\n\nexport function provideNgUI(options?: ProvideNgUIOptions): EnvironmentProviders {\n const configOptions: NgUIOptions = {\n theme: {\n options: {\n darkModeSelector: options?.theme?.options?.darkModeSelector ?? '.app-dark',\n },\n },\n translation: options?.translation,\n };\n\n return makeEnvironmentProviders([\n {\n provide: NgUIConfig,\n useFactory: () => {\n const config = new NgUIConfig();\n config.configure(configOptions);\n return config;\n },\n },\n {\n provide: APP_INITIALIZER,\n useFactory: (platformId: object) => initializeNgUITheme(options ?? {}, platformId),\n deps: [PLATFORM_ID],\n multi: true,\n },\n ]);\n}\n\nexport { buildBootstrapPreset };\nexport type { PresetName, ApplyThemeOptions };\n","// ─── Module ───────────────────────────────────────────────────────────────────\nexport { UiModule } from './modules/ui.module';\n\n// ─── Services ─────────────────────────────────────────────────────────────────\nexport { MessageService } from './services/message.service';\nexport type { UiMessage } from './services/message.service';\nexport { ConfirmationService } from './services/confirmation.service';\nexport { NgUIConfig } from './services/ng-ui-config.service';\nexport type { NgUITranslationConfig, NgUIOptions } from './services/ng-ui-config.service';\n\n// ─── Provider ─────────────────────────────────────────────────────────────────\nexport { provideNgUI, buildBootstrapPreset } from './provide-ng-ui';\nexport type { ProvideNgUIOptions, ApplyThemeOptions } from './provide-ng-ui';\n\n// ─── Theme system ─────────────────────────────────────────────────────────────\nexport { applyTheme, applyPrimaryPalette, applySurfacePalette, applyPreset, applyLightSemantics, applyDarkSemantics } from './themes/applier';\nexport { PRIMARY_PALETTES, SURFACE_PALETTES, NOIR_PRIMARY } from './themes/palettes';\nexport { PRESETS, PRESET_NAMES, AURA_PRESET, LARA_PRESET, NORA_PRESET } from './themes/presets';\nexport type { PresetName, ThemePreset, SelectButtonTokens } from './themes/presets';\nexport type { ColorPalette, SurfacePalette } from './themes/palettes';\n\n// ─── Own interfaces ───────────────────────────────────────────────────────────\nexport type { MenuItem, MenuItemCommandEvent } from './interfaces/menu-item';\nexport type { TreeNode } from './interfaces/tree-node';\n\n// ─── Phase 1 ──────────────────────────────────────────────────────────────────\nexport { ConfirmDialog } from './components/confirm-dialog/confirm-dialog.component';\nexport { ToastComponent } from './components/toast/toast.component';\n\n// ─── Phase 2 ──────────────────────────────────────────────────────────────────\nexport { ButtonComponent } from './components/button/button.component';\nexport type { ButtonSeverity } from './components/button/button.component';\nexport { FButtonDirective } from './components/button/f-button.directive';\nexport { TagComponent } from './components/tag/tag.component';\nexport { SkeletonComponent } from './components/skeleton/skeleton.component';\nexport { AvatarComponent } from './components/avatar/avatar.component';\nexport { AvatarGroupComponent } from './components/avatar/avatar-group.component';\nexport { DividerComponent } from './components/divider/divider.component';\nexport { ChipComponent } from './components/chip/chip.component';\nexport { ProgressbarComponent } from './components/progressbar/progressbar.component';\nexport { ProgressSpinnerComponent } from './components/progressspinner/progressspinner.component';\nexport { MessageComponent } from './components/message/message.component';\nexport { ImageComponent } from './components/image/image.component';\n\n// ─── Phase 3 ──────────────────────────────────────────────────────────────────\nexport { InputTextDirective } from './components/input-text/input-text.directive';\nexport { InputPasswordDirective } from './components/input-text/input-password.directive';\nexport { TextareaDirective } from './components/textarea/textarea.directive';\nexport { SelectComponent } from './components/select/select.component';\nexport { MultiSelectComponent } from './components/select/multiselect.component';\nexport { CheckboxComponent } from './components/checkbox/checkbox.component';\nexport type { CheckboxChangeEvent } from './components/checkbox/checkbox.component';\nexport { ToggleSwitchComponent } from './components/toggleswitch/toggleswitch.component';\nexport { ToggleButtonComponent } from './components/togglebutton/togglebutton.component';\nexport { SelectButtonComponent } from './components/selectbutton/selectbutton.component';\nexport { PasswordComponent } from './components/password/password.component';\nexport { InputNumberComponent } from './components/inputnumber/inputnumber.component';\nexport { RadioButtonComponent } from './components/radiobutton/radiobutton.component';\nexport type { RadioButtonClickEvent } from './components/radiobutton/radiobutton.component';\nexport { RatingComponent } from './components/rating/rating.component';\nexport { IconFieldComponent } from './components/iconfield/iconfield.component';\nexport { InputIconComponent } from './components/inputicon/inputicon.component';\nexport { DatePickerComponent } from './components/datepicker/datepicker.component';\nexport { FileUploadComponent } from './components/fileupload/fileupload.component';\nexport type { FileSelectEvent, FileRemoveEvent } from './components/fileupload/fileupload.component';\n\n// ─── Phase 4 ──────────────────────────────────────────────────────────────────\nexport { DialogComponent } from './components/dialog/dialog.component';\nexport { DrawerComponent } from './components/drawer/drawer.component';\nexport { PopoverComponent } from './components/popover/popover.component';\n\n// ─── Phase 5 ──────────────────────────────────────────────────────────────────\nexport { CardComponent } from './components/card/card.component';\nexport { PanelComponent } from './components/panel/panel.component';\nexport { TabsComponent, TabComponent, TabListComponent, TabPanelComponent, TabPanelsComponent } from './components/tabs/tabs.component';\nexport { TabsContext } from './components/tabs/tabs.context';\nexport { AccordionComponent, AccordionPanelComponent, AccordionHeaderComponent, AccordionContentComponent } from './components/accordion/accordion.component';\nexport { AccordionContext } from './components/accordion/accordion.context';\nexport { StepsComponent } from './components/steps/steps.component';\nexport type { StepsMenuItem } from './components/steps/steps.component';\nexport { SplitterComponent, SplitterPanelComponent } from './components/splitter/splitter.component';\nexport { ToolbarComponent } from './components/toolbar/toolbar.component';\n\n// ─── Phase 6 ──────────────────────────────────────────────────────────────────\nexport { TableComponent } from './components/table/table.component';\nexport type { TableLazyLoadEvent } from './components/table/table.component';\nexport { SortIconComponent, SortableColumnDirective } from './components/table/sort-icon.component';\nexport { PaginatorComponent } from './components/paginator/paginator.component';\nexport type { PaginatorState } from './components/paginator/paginator.component';\nexport { ChartComponent } from './components/chart/chart.component';\nexport { TooltipDirective } from './components/tooltip/tooltip.directive';\nexport { StyleClassDirective } from './components/styleclass/styleclass.directive';\n\n// ─── Phase 7 — fully native ───────────────────────────────────────────────────\nexport { AutoCompleteComponent } from './components/autocomplete/autocomplete.component';\nexport type { AutoCompleteCompleteEvent, AutoCompleteSelectEvent } from './components/autocomplete/autocomplete.component';\nexport { ColorPickerComponent } from './components/colorpicker/colorpicker.component';\nexport type { ColorFormat, ColorPickerChangeEvent } from './components/colorpicker/colorpicker.component';\nexport { ListboxComponent } from './components/listbox/listbox.component';\nexport type { ListboxChangeEvent } from './components/listbox/listbox.component';\nexport { SplitButtonComponent } from './components/splitbutton/splitbutton.component';\nexport { TreeTableComponent, TreeTableTogglerComponent, TreeTableService } from './components/treetable/treetable.component';\nexport type { TreeTableNode } from './components/treetable/treetable.component';\nexport { TreeSelectComponent } from './components/treeselect/treeselect.component';\nexport type { TreeSelectionMode } from './components/treeselect/treeselect.component';\n\n// ─── Phase 9 — Component library extensions ───────────────────────────────────────────────────\nexport { BadgeComponent } from './components/badge/badge.component';\nexport type { BadgeSeverity, BadgeSize } from './components/badge/badge.component';\nexport { OverlayBadgeComponent } from './components/overlaybadge/overlaybadge.component';\nexport { FieldsetComponent } from './components/fieldset/fieldset.component';\nexport { FloatLabelComponent } from './components/floatlabel/floatlabel.component';\nexport type { FloatLabelVariant } from './components/floatlabel/floatlabel.component';\nexport { IftaLabelComponent } from './components/iftalabel/iftalabel.component';\nexport { ButtonGroupComponent } from './components/buttongroup/buttongroup.component';\nexport { InputGroupComponent, InputGroupAddonComponent } from './components/inputgroup/inputgroup.component';\nexport { ScrollTopComponent } from './components/scrolltop/scrolltop.component';\nexport { MeterGroupComponent } from './components/metergroup/metergroup.component';\nexport type { MeterItem } from './components/metergroup/metergroup.component';\nexport { FluidComponent } from './components/fluid/fluid.component';\nexport { BlockUiComponent } from './components/blockui/blockui.component';\nexport { MenuComponent } from './components/menu/menu.component';\nexport { MenubarComponent } from './components/menubar/menubar.component';\nexport { TieredMenuComponent } from './components/tieredmenu/tieredmenu.component';\nexport { ContextMenuComponent } from './components/contextmenu/contextmenu.component';\nexport { MegaMenuComponent } from './components/megamenu/megamenu.component';\nexport { PanelMenuComponent } from './components/panelmenu/panelmenu.component';\nexport { BreadcrumbComponent } from './components/breadcrumb/breadcrumb.component';\nexport { SpeedDialComponent } from './components/speeddial/speeddial.component';\nexport type { SpeedDialDirection, SpeedDialType } from './components/speeddial/speeddial.component';\nexport { DockComponent } from './components/dock/dock.component';\nexport { InputMaskDirective } from './components/inputmask/inputmask.directive';\nexport { InputOtpComponent } from './components/inputotp/inputotp.component';\nexport { SliderComponent } from './components/slider/slider.component';\nexport { KnobComponent } from './components/knob/knob.component';\nexport { CascadeSelectComponent } from './components/cascadeselect/cascadeselect.component';\nexport { KeyFilterDirective } from './components/keyfilter/keyfilter.directive';\nexport type { KeyFilterPreset } from './components/keyfilter/keyfilter.directive';\nexport { ConfirmPopupComponent } from './components/confirmpopup/confirmpopup.component';\nexport { DynamicDialogComponent } from './components/dynamicdialog/dynamicdialog.component';\nexport {\n DynamicDialogService,\n DynamicDialogRef,\n DYNAMIC_DIALOG_DATA,\n DYNAMIC_DIALOG_REF,\n} from './components/dynamicdialog/dynamicdialog.service';\nexport type { DynamicDialogConfig } from './components/dynamicdialog/dynamicdialog.service';\nexport { InplaceComponent } from './components/inplace/inplace.component';\nexport { TreeComponent } from './components/tree/tree.component';\nexport type { TreeSelectionMode as TreeComponentSelectionMode } from './components/tree/tree.component';\nexport { TimelineComponent } from './components/timeline/timeline.component';\nexport type { TimelineAlign, TimelineLayout } from './components/timeline/timeline.component';\nexport { DataViewComponent } from './components/dataview/dataview.component';\nexport type { DataViewLayout } from './components/dataview/dataview.component';\nexport { CarouselComponent } from './components/carousel/carousel.component';\nexport { ScrollPanelComponent } from './components/scrollpanel/scrollpanel.component';\nexport { ScrollerComponent } from './components/scroller/scroller.component';\nexport { OrganizationChartComponent } from './components/organizationchart/organizationchart.component';\nexport { PickListComponent } from './components/picklist/picklist.component';\nexport { OrderListComponent } from './components/orderlist/orderlist.component';\nexport { GalleriaComponent } from './components/galleria/galleria.component';\nexport type { GalleriaItem } from './components/galleria/galleria.component';\nexport { EditorComponent } from './components/editor/editor.component';\nexport { TerminalComponent } from './components/terminal/terminal.component';\nexport type { TerminalCommandEvent } from './components/terminal/terminal.component';\nexport { ImageCompareComponent } from './components/imagecompare/imagecompare.component';\nexport { AnimateOnScrollDirective } from './components/animateonscroll/animateonscroll.directive';\nexport { AutoFocusDirective } from './components/autofocus/autofocus.directive';\nexport { RippleDirective } from './components/ripple/ripple.directive';\n\n// ─── Phase 8 — Icon ───────────────────────────────────────────────────────────\nexport { UiIconComponent } from './components/icon/ui-icon.component';\n\n// ─── Shared utilities ─────────────────────────────────────────────────────────\nexport { FTemplateDirective } from './components/shared/ftemplate.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["CLOSE_ANIMATION_MS","_uidCounter","assignKey","i1.InputTextDirective","PRESETS"],"mappings":"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AAA,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,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,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,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,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,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EA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"}
|
|
1
|
+
{"version":3,"file":"flusys-ng-ui.mjs","sources":["../../../projects/ng-ui/components/icon/ui-icon.component.ts","../../../projects/ng-ui/services/confirmation.service.ts","../../../projects/ng-ui/components/confirm-dialog/confirm-dialog.component.ts","../../../projects/ng-ui/services/message.service.ts","../../../projects/ng-ui/components/toast/toast.component.ts","../../../projects/ng-ui/components/avatar/avatar.component.ts","../../../projects/ng-ui/components/avatar/avatar-group.component.ts","../../../projects/ng-ui/components/button/button.component.ts","../../../projects/ng-ui/components/button/f-button.directive.ts","../../../projects/ng-ui/components/chip/chip.component.ts","../../../projects/ng-ui/components/divider/divider.component.ts","../../../projects/ng-ui/components/image/image.component.ts","../../../projects/ng-ui/components/message/message.component.ts","../../../projects/ng-ui/components/progressbar/progressbar.component.ts","../../../projects/ng-ui/components/progressspinner/progressspinner.component.ts","../../../projects/ng-ui/components/skeleton/skeleton.component.ts","../../../projects/ng-ui/components/tag/tag.component.ts","../../../projects/ng-ui/components/checkbox/checkbox.component.ts","../../../projects/ng-ui/components/datepicker/datepicker.component.ts","../../../projects/ng-ui/components/fileupload/fileupload.component.ts","../../../projects/ng-ui/components/iconfield/iconfield.component.ts","../../../projects/ng-ui/components/inputicon/inputicon.component.ts","../../../projects/ng-ui/components/inputnumber/inputnumber.component.ts","../../../projects/ng-ui/components/input-text/input-text.directive.ts","../../../projects/ng-ui/components/input-text/input-password.directive.ts","../../../projects/ng-ui/components/select/multiselect.component.ts","../../../projects/ng-ui/components/password/password.component.ts","../../../projects/ng-ui/components/radiobutton/radiobutton.component.ts","../../../projects/ng-ui/components/rating/rating.component.ts","../../../projects/ng-ui/components/shared/ftemplate.directive.ts","../../../projects/ng-ui/components/select/select.component.ts","../../../projects/ng-ui/components/selectbutton/selectbutton.component.ts","../../../projects/ng-ui/components/textarea/textarea.directive.ts","../../../projects/ng-ui/components/togglebutton/togglebutton.component.ts","../../../projects/ng-ui/components/toggleswitch/toggleswitch.component.ts","../../../projects/ng-ui/components/dialog/dialog.component.ts","../../../projects/ng-ui/components/drawer/drawer.component.ts","../../../projects/ng-ui/components/popover/popover.component.ts","../../../projects/ng-ui/components/card/card.component.ts","../../../projects/ng-ui/components/panel/panel.component.ts","../../../projects/ng-ui/components/steps/steps.component.ts","../../../projects/ng-ui/components/splitter/splitter.component.ts","../../../projects/ng-ui/components/toolbar/toolbar.component.ts","../../../projects/ng-ui/components/tabs/tabs.context.ts","../../../projects/ng-ui/components/tabs/tabs.component.ts","../../../projects/ng-ui/components/accordion/accordion.context.ts","../../../projects/ng-ui/components/accordion/accordion.component.ts","../../../projects/ng-ui/components/chart/chart.component.ts","../../../projects/ng-ui/components/paginator/paginator.component.ts","../../../projects/ng-ui/components/table/table.component.ts","../../../projects/ng-ui/components/table/sort-icon.component.ts","../../../projects/ng-ui/components/styleclass/styleclass.directive.ts","../../../projects/ng-ui/components/tooltip/tooltip.directive.ts","../../../projects/ng-ui/components/autocomplete/autocomplete.component.ts","../../../projects/ng-ui/components/colorpicker/colorpicker.component.ts","../../../projects/ng-ui/components/listbox/listbox.component.ts","../../../projects/ng-ui/components/splitbutton/splitbutton.component.ts","../../../projects/ng-ui/components/treetable/treetable.component.ts","../../../projects/ng-ui/components/treeselect/treeselect.component.ts","../../../projects/ng-ui/components/badge/badge.component.ts","../../../projects/ng-ui/components/overlaybadge/overlaybadge.component.ts","../../../projects/ng-ui/components/fieldset/fieldset.component.ts","../../../projects/ng-ui/components/floatlabel/floatlabel.component.ts","../../../projects/ng-ui/components/iftalabel/iftalabel.component.ts","../../../projects/ng-ui/components/buttongroup/buttongroup.component.ts","../../../projects/ng-ui/components/inputgroup/inputgroup.component.ts","../../../projects/ng-ui/components/scrolltop/scrolltop.component.ts","../../../projects/ng-ui/components/metergroup/metergroup.component.ts","../../../projects/ng-ui/components/fluid/fluid.component.ts","../../../projects/ng-ui/components/blockui/blockui.component.ts","../../../projects/ng-ui/components/menu/menu.component.ts","../../../projects/ng-ui/components/menubar/menubar.component.ts","../../../projects/ng-ui/components/tieredmenu/tieredmenu.component.ts","../../../projects/ng-ui/components/contextmenu/contextmenu.component.ts","../../../projects/ng-ui/components/megamenu/megamenu.component.ts","../../../projects/ng-ui/components/panelmenu/panelmenu.component.ts","../../../projects/ng-ui/components/breadcrumb/breadcrumb.component.ts","../../../projects/ng-ui/components/speeddial/speeddial.component.ts","../../../projects/ng-ui/components/dock/dock.component.ts","../../../projects/ng-ui/components/inputmask/inputmask.directive.ts","../../../projects/ng-ui/components/inputotp/inputotp.component.ts","../../../projects/ng-ui/components/slider/slider.component.ts","../../../projects/ng-ui/components/knob/knob.component.ts","../../../projects/ng-ui/components/cascadeselect/cascadeselect.component.ts","../../../projects/ng-ui/components/keyfilter/keyfilter.directive.ts","../../../projects/ng-ui/components/confirmpopup/confirmpopup.component.ts","../../../projects/ng-ui/components/dynamicdialog/dynamicdialog.service.ts","../../../projects/ng-ui/components/dynamicdialog/dynamicdialog.component.ts","../../../projects/ng-ui/components/inplace/inplace.component.ts","../../../projects/ng-ui/components/tree/tree.component.ts","../../../projects/ng-ui/components/timeline/timeline.component.ts","../../../projects/ng-ui/components/dataview/dataview.component.ts","../../../projects/ng-ui/components/carousel/carousel.component.ts","../../../projects/ng-ui/components/scrollpanel/scrollpanel.component.ts","../../../projects/ng-ui/components/scroller/scroller.component.ts","../../../projects/ng-ui/components/organizationchart/organizationchart.component.ts","../../../projects/ng-ui/components/picklist/picklist.component.ts","../../../projects/ng-ui/components/orderlist/orderlist.component.ts","../../../projects/ng-ui/components/galleria/galleria.component.ts","../../../projects/ng-ui/components/editor/editor.component.ts","../../../projects/ng-ui/components/terminal/terminal.component.ts","../../../projects/ng-ui/components/imagecompare/imagecompare.component.ts","../../../projects/ng-ui/components/animateonscroll/animateonscroll.directive.ts","../../../projects/ng-ui/components/autofocus/autofocus.directive.ts","../../../projects/ng-ui/components/ripple/ripple.directive.ts","../../../projects/ng-ui/modules/ui.module.ts","../../../projects/ng-ui/services/ng-ui-config.service.ts","../../../projects/ng-ui/themes/palettes.ts","../../../projects/ng-ui/themes/presets.ts","../../../projects/ng-ui/themes/applier.ts","../../../projects/ng-ui/provide-ng-ui.ts","../../../projects/ng-ui/public-api.ts","../../../projects/ng-ui/flusys-ng-ui.ts"],"sourcesContent":["import {\n booleanAttribute,\n Component,\n computed,\n input,\n} from '@angular/core';\nimport {\n LucideDynamicIcon,\n LucideIcon,\n provideLucideIcons,\n isLucideIconComponent,\n} from '@lucide/angular';\n// Namespace import so every published icon (plus its legacy pre-rename\n// aliases, e.g. Home, CheckSquare) is registered for name-based lookup —\n// `provideLucideIcons` indexes each icon by its own name/aliases regardless\n// of which components are passed in.\nimport * as lucideNamespace from '@lucide/angular';\n\n// `filter`'s type-guard overload can't narrow a ~1700-member union of exact\n// icon-class types against the broader `LucideIcon` interface, so the guard\n// still runs at runtime but the result needs an explicit cast.\nconst allLucideIcons = Object.values(lucideNamespace).filter(isLucideIconComponent) as unknown as LucideIcon[];\n\nconst PI_TO_LUCIDE: Record<string, string> = {\n 'align-left': 'align-left',\n 'angle-double-left': 'chevrons-left',\n 'angle-double-right': 'chevrons-right',\n 'angle-down': 'chevron-down',\n 'angle-left': 'chevron-left',\n 'angle-right': 'chevron-right',\n 'angle-up': 'chevron-up',\n 'arrow-down': 'arrow-down',\n 'arrow-down-right': 'arrow-down-right',\n 'arrow-left': 'arrow-left',\n 'arrow-right': 'arrow-right',\n 'arrow-up': 'arrow-up',\n 'arrow-up-right': 'arrow-up-right',\n 'bars': 'menu',\n 'bell': 'bell',\n 'bell-slash': 'bell-off',\n 'bolt': 'zap',\n 'book': 'book',\n 'briefcase': 'briefcase',\n 'building': 'building-2',\n 'calculator': 'calculator',\n 'calendar': 'calendar',\n 'caret-down': 'chevron-down',\n 'caret-up': 'chevron-up',\n 'chart-bar': 'chart-column',\n 'chart-line': 'chart-line',\n 'check': 'check',\n 'check-circle': 'check-circle',\n 'check-square': 'check-square',\n 'chevron-down': 'chevron-down',\n 'chevron-left': 'chevron-left',\n 'chevron-right': 'chevron-right',\n 'circle': 'circle',\n 'clock': 'clock',\n 'cloud': 'cloud',\n 'cloud-upload': 'cloud-upload',\n 'code': 'code',\n 'cog': 'settings',\n 'copy': 'copy',\n 'database': 'database',\n 'desktop': 'monitor',\n 'dollar': 'dollar-sign',\n 'download': 'download',\n 'ellipsis-v': 'ellipsis-vertical',\n 'envelope': 'mail',\n 'exclamation-circle': 'alert-circle',\n 'exclamation-triangle':'alert-triangle',\n 'external-link': 'external-link',\n 'eye': 'eye',\n 'eye-slash': 'eye-off',\n 'file': 'file',\n 'file-edit': 'file-pen',\n 'file-excel': 'file-spreadsheet',\n 'file-pdf': 'file-type',\n 'file-word': 'file-type',\n 'filter': 'filter',\n 'folder': 'folder',\n 'fw': '',\n 'globe': 'globe',\n 'home': 'home',\n 'image': 'image',\n 'inbox': 'inbox',\n 'info-circle': 'info',\n 'key': 'key',\n 'link': 'link',\n 'list': 'list',\n 'list-check': 'list-checks',\n 'lock': 'lock',\n 'map-marker': 'map-pin',\n 'minus': 'minus',\n 'minus-circle': 'minus-circle',\n 'mobile': 'smartphone',\n 'moon': 'moon',\n 'palette': 'palette',\n 'pencil': 'pencil',\n 'percentage': 'percent',\n 'play': 'play',\n 'plus': 'plus',\n 'plus-circle': 'plus-circle',\n 'question': 'help-circle',\n 'question-circle': 'help-circle',\n 'refresh': 'refresh-cw',\n 'reply': 'reply',\n 'save': 'save',\n 'search': 'search',\n 'send': 'send',\n 'server': 'server',\n 'shield': 'shield',\n 'sign-in': 'log-in',\n 'sign-out': 'log-out',\n 'sitemap': 'network',\n 'sliders-h': 'sliders-horizontal',\n 'spin': '',\n 'spinner': 'loader-circle',\n 'star': 'star',\n 'star-fill': 'star',\n 'sun': 'sun',\n 'sync': 'refresh-cw',\n 'table': 'table-2',\n 'tablet': 'tablet',\n 'tag': 'tag',\n 'th-large': 'layout-grid',\n 'times': 'x',\n 'times-circle': 'x-circle',\n 'trash': 'trash-2',\n 'upload': 'upload',\n 'user': 'user',\n 'users': 'users',\n 'verified': 'badge-check',\n 'video': 'video',\n 'volume-up': 'volume-2',\n 'window-maximize': 'maximize-2',\n};\n\n@Component({\n selector: 'ui-icon',\n imports: [LucideDynamicIcon],\n providers: [provideLucideIcons(...allLucideIcons)],\n host: {\n class: 'inline-flex items-center leading-none',\n '[style.--ui-icon-size]': \"size() + 'px'\",\n },\n styles: [`\n :host ::ng-deep svg[lucideIcon] { width: var(--ui-icon-size); height: var(--ui-icon-size); display: block; }\n `],\n template: `\n @if (lucideName()) {\n <svg\n [lucideIcon]=\"lucideName()\"\n [size]=\"size()\"\n [class]=\"iconClass()\"\n ></svg>\n }\n `,\n})\nexport class UiIconComponent {\n readonly name = input<string>('');\n readonly size = input<number>(16);\n readonly spin = input(false, { transform: booleanAttribute });\n readonly fill = input(false, { transform: booleanAttribute });\n\n readonly lucideName = computed(() => {\n const n = this.name();\n return PI_TO_LUCIDE[n] ?? n;\n });\n\n readonly iconClass = computed(() => {\n const parts: string[] = [];\n if (this.spin()) parts.push('animate-spin');\n if (this.fill() || this.name() === 'star-fill') parts.push('[&_svg]:fill-current');\n return parts.join(' ');\n });\n}\n","import { Injectable, signal } from '@angular/core';\n\nexport interface UiConfirmation {\n message?: string;\n header?: string;\n icon?: string;\n acceptLabel?: string;\n rejectLabel?: string;\n acceptIcon?: string;\n rejectIcon?: string;\n acceptButtonStyleClass?: string;\n rejectButtonStyleClass?: string;\n closeOnEscape?: boolean;\n closable?: boolean;\n acceptVisible?: boolean;\n rejectVisible?: boolean;\n accept?: () => void;\n reject?: () => void;\n key?: string;\n target?: EventTarget | null;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ConfirmationService {\n private readonly _confirmation = signal<UiConfirmation | null>(null);\n readonly confirmation = this._confirmation.asReadonly();\n\n confirm(options: UiConfirmation): void {\n this._confirmation.set(options);\n }\n\n close(): void {\n this._confirmation.set(null);\n }\n}\n","import { Component, computed, inject, input } from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { ConfirmationService } from '../../services/confirmation.service';\n\n@Component({\n selector: 'f-confirmdialog',\n imports: [UiIconComponent],\n host: { '(document:keydown.escape)': 'onEscape()' },\n styles: [`\n @keyframes confirm-in { from { opacity: 0; transform: scale(0.95) translateY(-8px); } to { opacity: 1; transform: scale(1) translateY(0); } }\n .confirm-panel { animation: confirm-in 0.22s cubic-bezier(0.16, 1, 0.3, 1); }\n @keyframes confirm-backdrop-in { from { opacity: 0; } to { opacity: 1; } }\n .confirm-backdrop { animation: confirm-backdrop-in 0.15s ease-out; }\n `],\n template: `\n @if (activeConfirmation(); as c) {\n @if (!c.target && (c.acceptVisible !== false || c.rejectVisible !== false)) {\n <div class=\"fixed inset-0 z-50 flex items-center justify-center p-4\">\n <div class=\"confirm-backdrop absolute inset-0 bg-black/50 backdrop-blur-[2px]\" (click)=\"reject(c.reject)\"></div>\n <div class=\"confirm-panel relative bg-(--f-overlay-popover-background) rounded-2xl shadow-2xl w-full max-w-sm mx-auto overflow-hidden\">\n <div class=\"p-6\">\n <div class=\"flex items-start gap-4\">\n @if (c.icon) {\n <div\n class=\"w-10 h-10 rounded-full flex items-center justify-center shrink-0\"\n [style.background-color]=\"'color-mix(in srgb, var(--f-yellow-500, #f59e0b) 12%, transparent)'\"\n >\n <ui-icon [name]=\"c.icon\" class=\"text-lg\" [style.color]=\"'var(--f-yellow-500, #f59e0b)'\"></ui-icon>\n </div>\n }\n <div class=\"flex-1 min-w-0\">\n @if (c.header) {\n <h3 class=\"text-base font-semibold text-(--f-text-color) tracking-tight\">{{ c.header }}</h3>\n }\n @if (c.message) {\n <p class=\"text-sm text-(--f-text-muted-color) mt-1 leading-relaxed\">{{ c.message }}</p>\n }\n </div>\n </div>\n </div>\n <div class=\"flex justify-end gap-2 px-6 py-4 bg-(--f-content-hover-background)/60 border-t border-(--f-content-border-color)\">\n @if (c.rejectVisible !== false) {\n <button\n class=\"px-4 py-2 text-sm rounded-lg border border-(--f-content-border-color) text-(--f-text-color) hover:bg-(--f-content-hover-background) active:bg-(--f-content-hover-background) transition-all duration-[var(--f-transition-duration)] font-medium cursor-pointer\"\n [class]=\"c.rejectButtonStyleClass ?? ''\"\n (click)=\"reject(c.reject)\"\n >\n {{ c.rejectLabel ?? 'No' }}\n </button>\n }\n @if (c.acceptVisible !== false) {\n <button\n class=\"px-4 py-2 text-sm rounded-lg bg-primary text-primary-contrast hover:bg-primary-emphasis active:scale-[0.97] transition-all duration-[var(--f-transition-duration)] font-medium shadow-sm cursor-pointer\"\n [class]=\"c.acceptButtonStyleClass ?? ''\"\n (click)=\"accept(c.accept)\"\n >\n {{ c.acceptLabel ?? 'Yes' }}\n </button>\n }\n </div>\n </div>\n </div>\n }\n }\n `,\n})\nexport class ConfirmDialog {\n readonly confirmationService = inject(ConfirmationService);\n readonly key = input<string | undefined>(undefined);\n\n readonly activeConfirmation = computed(() => {\n const c = this.confirmationService.confirmation();\n if (!c) return null;\n return (c.key ?? undefined) === this.key() ? c : null;\n });\n\n onEscape(): void {\n const c = this.activeConfirmation();\n if (c && c.closeOnEscape !== false) this.reject(c.reject);\n }\n\n accept(fn?: () => void): void {\n fn?.();\n this.confirmationService.close();\n }\n\n reject(fn?: () => void): void {\n fn?.();\n this.confirmationService.close();\n }\n}\n","import { Injectable, signal } from '@angular/core';\n\nexport type UiMessageSeverity = 'success' | 'info' | 'warn' | 'error' | 'secondary' | 'contrast';\n\nexport interface UiMessage {\n id: string;\n severity: UiMessageSeverity;\n summary?: string;\n detail?: string;\n life?: number;\n sticky?: boolean;\n key?: string;\n closing?: boolean;\n}\n\nconst REMOVE_ANIMATION_MS = 200;\n\nexport interface UiAddMessage {\n severity?: UiMessageSeverity;\n summary?: string;\n detail?: string;\n life?: number;\n sticky?: boolean;\n key?: string;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class MessageService {\n private readonly _messages = signal<UiMessage[]>([]);\n readonly messages = this._messages.asReadonly();\n\n add(message: UiAddMessage): void {\n const id = crypto.randomUUID();\n const entry: UiMessage = {\n id,\n severity: message.severity ?? 'info',\n summary: message.summary,\n detail: message.detail,\n life: message.life ?? 3000,\n sticky: message.sticky ?? false,\n key: message.key,\n };\n this._messages.update(list => [...list, entry]);\n\n if (!entry.sticky) {\n setTimeout(() => this.remove(id), entry.life);\n }\n }\n\n remove(id: string): void {\n const target = this._messages().find(m => m.id === id);\n if (!target || target.closing) return;\n this._messages.update(list => list.map(m => (m.id === id ? { ...m, closing: true } : m)));\n setTimeout(() => {\n this._messages.update(list => list.filter(m => m.id !== id));\n }, REMOVE_ANIMATION_MS);\n }\n\n clear(): void {\n this._messages.set([]);\n }\n}\n","import { Component, computed, inject, input } from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { MessageService, UiMessageSeverity } from '../../services/message.service';\n\nconst POSITION_CLASSES: Record<string, string> = {\n 'top-right': 'top-5 right-5 items-end',\n 'top-left': 'top-5 left-5 items-start',\n 'top-center': 'top-5 left-1/2 -translate-x-1/2 items-center',\n 'bottom-right': 'bottom-5 right-5 items-end',\n 'bottom-left': 'bottom-5 left-5 items-start',\n 'bottom-center': 'bottom-5 left-1/2 -translate-x-1/2 items-center',\n 'center': 'top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 items-center',\n};\n\n@Component({\n selector: 'f-toast',\n imports: [UiIconComponent],\n host: {\n '[class]': 'hostClass()',\n },\n styles: [`\n @keyframes toast-in { from { opacity: 0; transform: translateX(calc(100% + 1.25rem)) scale(0.95); } to { opacity: 1; transform: translateX(0) scale(1); } }\n @keyframes toast-out { from { opacity: 1; transform: scale(1); } to { opacity: 0; transform: scale(0.9); } }\n .toast-item { animation: toast-in 0.25s cubic-bezier(0.16, 1, 0.3, 1); }\n .toast-item.leaving { animation: toast-out 0.18s ease-in forwards; }\n `],\n template: `\n @for (msg of visibleMessages(); track msg.id) {\n <div\n class=\"toast-item w-full flex items-start gap-3 px-3.5 py-3 rounded-lg shadow-lg border pointer-events-auto\"\n [class.leaving]=\"msg.closing\"\n [style.background]=\"severityBg(msg.severity)\"\n [style.color]=\"severityColor(msg.severity)\"\n [style.border-color]=\"severityBorder(msg.severity)\"\n role=\"alert\"\n aria-live=\"assertive\"\n (click)=\"messageService.remove(msg.id)\"\n >\n <ui-icon [name]=\"iconName(msg.severity)\" class=\"mt-0.5 shrink-0 text-base\" [style.color]=\"severityColor(msg.severity)\"></ui-icon>\n <div class=\"flex-1 min-w-0\">\n @if (msg.summary) {\n <div class=\"font-semibold text-sm leading-snug\">{{ msg.summary }}</div>\n }\n @if (msg.detail) {\n <div class=\"text-xs opacity-75 mt-1 leading-snug\">{{ msg.detail }}</div>\n }\n </div>\n <button\n type=\"button\"\n class=\"inline-flex items-center justify-center shrink-0 opacity-40 hover:opacity-80 transition-opacity p-1 rounded-md hover:bg-black/5 -mr-0.5 cursor-pointer\"\n (click)=\"$event.stopPropagation(); messageService.remove(msg.id)\"\n aria-label=\"Dismiss\"\n >\n <ui-icon name=\"times\" class=\"text-xs\"></ui-icon>\n </button>\n </div>\n }\n `,\n})\nexport class ToastComponent {\n readonly messageService = inject(MessageService);\n readonly key = input<string | undefined>(undefined);\n readonly position = input<\n 'top-right' | 'top-left' | 'top-center' | 'bottom-right' | 'bottom-left' | 'bottom-center' | 'center'\n >('top-right');\n\n readonly hostClass = computed(\n () =>\n `fixed z-[9999] flex flex-col gap-2.5 pointer-events-none max-w-[22rem] w-[calc(100vw-2.5rem)] ${\n POSITION_CLASSES[this.position()] ?? POSITION_CLASSES['top-right']\n }`,\n );\n\n readonly visibleMessages = computed(() =>\n this.messageService.messages().filter((m) => (m.key ?? undefined) === this.key()),\n );\n\n severityBg(severity: UiMessageSeverity): string {\n const map: Record<UiMessageSeverity, string> = {\n success: 'var(--f-green-50, #f0fdf4)',\n info: 'var(--f-sky-50, #f0f9ff)',\n warn: 'var(--f-amber-50, #fffbeb)',\n error: 'var(--f-red-50, #fef2f2)',\n secondary: 'var(--f-content-hover-background, #f4f4f5)',\n contrast: 'var(--f-text-color, #18181b)',\n };\n return map[severity] ?? map.info;\n }\n\n severityColor(severity: UiMessageSeverity): string {\n const map: Record<UiMessageSeverity, string> = {\n success: 'var(--f-green-600, #16a34a)',\n info: 'var(--f-sky-600, #0284c7)',\n warn: 'var(--f-amber-600, #d97706)',\n error: 'var(--f-red-600, #dc2626)',\n secondary: 'var(--f-text-muted-color, #71717a)',\n contrast: 'var(--f-content-background, #ffffff)',\n };\n return map[severity] ?? map.info;\n }\n\n severityBorder(severity: UiMessageSeverity): string {\n const map: Record<UiMessageSeverity, string> = {\n success: 'var(--f-green-200, #bbf7d0)',\n info: 'var(--f-sky-200, #bae6fd)',\n warn: 'var(--f-amber-200, #fde68a)',\n error: 'var(--f-red-200, #fecaca)',\n secondary: 'var(--f-content-border-color, #e4e4e7)',\n contrast: 'var(--f-text-color, #18181b)',\n };\n return map[severity] ?? map.info;\n }\n\n iconName(severity: UiMessageSeverity): string {\n const map: Record<UiMessageSeverity, string> = {\n success: 'check-circle',\n info: 'info',\n warn: 'alert-triangle',\n error: 'x-circle',\n secondary: 'info',\n contrast: 'info',\n };\n return map[severity] ?? map.info;\n }\n}\n","import { Component, computed, input } from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\nexport type AvatarSize = 'small' | 'normal' | 'large' | 'xlarge';\nexport type AvatarShape = 'square' | 'circle';\n\n@Component({\n selector: 'f-avatar',\n host: {\n class: 'block',\n },\n imports: [UiIconComponent],\n template: `\n <div\n [class]=\"classes()\"\n [style.background-color]=\"!image() && color() ? color() : null\"\n >\n @if (image()) {\n <img\n [src]=\"image()\"\n [alt]=\"label()\"\n class=\"w-full h-full object-cover\"\n />\n } @else if (icon()) {\n <ui-icon [name]=\"icon()\"></ui-icon>\n } @else {\n <span>{{ label() }}</span>\n }\n </div>\n `,\n})\nexport class AvatarComponent {\n readonly label = input<string>('');\n readonly icon = input<string>('');\n readonly image = input<string>('');\n readonly shape = input<AvatarShape>('square');\n readonly size = input<AvatarSize>('normal');\n /** Overrides the default gradient with a solid background color (e.g. a per-user deterministic color). Ignored when `image` is set. */\n readonly color = input<string>('');\n readonly styleClass = input<string>('');\n\n readonly classes = computed(() => {\n const sizeMap: Record<AvatarSize, string> = {\n small: 'w-6 h-6 text-[10px]',\n normal: 'w-8 h-8 text-sm',\n large: 'w-12 h-12 text-base',\n xlarge: 'w-16 h-16 text-xl',\n };\n const shapeClass =\n this.shape() === 'circle' ? 'rounded-full' : 'rounded-lg';\n const hasImage = !!this.image();\n const hasColor = !hasImage && !!this.color();\n const base = hasImage\n ? `inline-flex items-center justify-center overflow-hidden ring-2 ring-(--f-content-border-color) font-semibold`\n : hasColor\n ? `inline-flex items-center justify-center overflow-hidden text-white font-semibold ring-2 ring-primary/10`\n : `inline-flex items-center justify-center overflow-hidden bg-gradient-to-br from-primary to-primary-emphasis text-primary-contrast font-semibold ring-2 ring-primary/10`;\n return `${base} ${sizeMap[this.size()]} ${shapeClass} ${this.styleClass()}`;\n });\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'f-avatar-group',\n host: {\n class: 'block',\n },\n template: `<div class=\"flex -space-x-2\"><ng-content /></div>`,\n})\nexport class AvatarGroupComponent {}\n","import {\n booleanAttribute,\n Component,\n computed,\n input,\n output,\n} from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\nexport type ButtonSeverity =\n | 'primary'\n | 'secondary'\n | 'success'\n | 'info'\n | 'warn'\n | 'danger'\n | 'contrast'\n | 'help';\n\n@Component({\n selector: 'f-button',\n imports: [UiIconComponent],\n template: `\n <button\n [type]=\"type()\"\n [disabled]=\"disabled() || loading()\"\n [class]=\"hostClass()\"\n style=\"font-weight: var(--f-button-font-weight, 500)\"\n (click)=\"onClick.emit($event)\"\n >\n @if (loading()) {\n <ui-icon name=\"loader-circle\" [spin]=\"true\" class=\"shrink-0\"></ui-icon>\n } @else if (icon() && iconPos() === 'left') {\n <ui-icon [name]=\"icon()\" class=\"shrink-0\"></ui-icon>\n }\n @if (label()) {\n <span class=\"leading-none\">{{ label() }}</span>\n }\n <ng-content />\n @if (icon() && iconPos() === 'right') {\n <ui-icon [name]=\"icon()\" class=\"shrink-0\"></ui-icon>\n }\n </button>\n `,\n host: {\n class: 'block',\n },\n})\nexport class ButtonComponent {\n readonly label = input<string>('');\n readonly icon = input<string>('');\n readonly iconPos = input<'left' | 'right'>('left');\n readonly severity = input<ButtonSeverity>('primary');\n readonly type = input<string>('button');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly loading = input(false, { transform: booleanAttribute });\n readonly text = input(false, { transform: booleanAttribute });\n readonly link = input(false, { transform: booleanAttribute });\n readonly outlined = input(false, { transform: booleanAttribute });\n readonly raised = input(false, { transform: booleanAttribute });\n readonly rounded = input(false, { transform: booleanAttribute });\n readonly fluid = input(false, { transform: booleanAttribute });\n readonly size = input<'small' | 'large' | null>(null);\n\n readonly onClick = output<MouseEvent>();\n\n readonly hostClass = computed(() =>\n computeButtonClasses({\n severity: this.severity(),\n text: this.text(),\n link: this.link(),\n outlined: this.outlined(),\n rounded: this.rounded(),\n raised: this.raised(),\n fluid: this.fluid(),\n size: this.size(),\n iconOnly: !!this.icon() && !this.label(),\n }),\n );\n}\n\nexport interface ButtonClassOptions {\n severity: ButtonSeverity;\n text: boolean;\n link: boolean;\n outlined: boolean;\n rounded: boolean;\n raised: boolean;\n fluid: boolean;\n size: 'small' | 'large' | null;\n iconOnly: boolean;\n}\n\nexport function computeButtonClasses(opts: ButtonClassOptions): string {\n const {\n severity: sev,\n text: isText,\n link: isLink,\n outlined: isOutlined,\n rounded: isRounded,\n raised,\n fluid: isFluid,\n size: sz,\n iconOnly,\n } = opts;\n\n const parts = [\n 'inline-flex items-center justify-center gap-2 cursor-pointer select-none transition-all duration-[var(--f-transition-duration)]',\n 'focus:outline-none focus-visible:ring-focus',\n 'disabled:opacity-60 disabled:pointer-events-none',\n 'active:scale-[0.97]',\n isFluid ? 'w-full' : '',\n isRounded ? 'rounded-full' : 'rounded-lg',\n raised ? 'shadow-md hover:shadow-lg active:shadow-sm' : '',\n ];\n\n const sizing =\n sz === 'small'\n ? iconOnly\n ? 'p-1.5 text-xs'\n : 'px-3 py-1.5 text-xs'\n : sz === 'large'\n ? iconOnly\n ? 'p-3 text-base'\n : 'px-5 py-3 text-base'\n : iconOnly\n ? 'p-2 text-sm'\n : 'px-4 py-2 text-sm';\n\n let variant = '';\n if (isLink) {\n variant = 'text-primary hover:underline bg-transparent border-none p-0';\n } else if (isText) {\n variant = textVariant(sev);\n } else if (isOutlined) {\n variant = outlinedVariant(sev);\n } else {\n variant = solidVariant(sev);\n }\n\n return [...parts, sizing, variant].filter(Boolean).join(' ');\n}\n\nexport function severitySolidBackground(sev: ButtonSeverity): string {\n const map: Record<ButtonSeverity, string> = {\n primary: 'bg-primary text-primary-contrast hover:bg-primary-emphasis',\n secondary:\n 'bg-(--f-content-hover-background) text-(--f-text-color) hover:bg-(--f-content-hover-background)',\n success: 'bg-green-500 text-white hover:bg-green-600',\n info: 'bg-sky-500 text-white hover:bg-sky-600',\n warn: 'bg-yellow-500 text-white hover:bg-yellow-600',\n danger: 'bg-red-500 text-white hover:bg-red-600',\n contrast: 'bg-surface-900 text-surface-0 hover:bg-surface-800',\n help: 'bg-purple-500 text-white hover:bg-purple-600',\n };\n return map[sev] ?? map.primary;\n}\n\nfunction solidVariant(sev: ButtonSeverity): string {\n const activeMap: Partial<Record<ButtonSeverity, string>> = {\n primary: 'active:bg-primary-emphasis',\n secondary: 'active:bg-(--f-content-hover-background)',\n success: 'active:bg-green-700',\n info: 'active:bg-sky-700',\n warn: 'active:bg-yellow-700',\n danger: 'active:bg-red-700',\n contrast: 'active:bg-surface-700',\n help: 'active:bg-purple-700',\n };\n const border =\n sev === 'secondary'\n ? 'border border-(--f-content-border-color) shadow-sm'\n : 'border border-transparent';\n return `${severitySolidBackground(sev)} ${activeMap[sev]} ${border}`;\n}\n\nfunction outlinedVariant(sev: ButtonSeverity): string {\n const map: Record<ButtonSeverity, string> = {\n primary:\n 'bg-transparent text-primary border border-primary hover:bg-primary/10 active:bg-primary/20',\n secondary:\n 'bg-transparent text-(--f-text-muted-color) border border-(--f-content-border-color) hover:bg-(--f-content-hover-background) active:bg-(--f-content-hover-background)',\n success:\n 'bg-transparent text-green-600 border border-green-500 hover:bg-green-50 active:bg-green-100',\n info: 'bg-transparent text-sky-600 border border-sky-500 hover:bg-sky-50 active:bg-sky-100',\n warn: 'bg-transparent text-yellow-600 border border-yellow-500 hover:bg-yellow-50 active:bg-yellow-100',\n danger:\n 'bg-transparent text-red-600 border border-red-500 hover:bg-red-50 active:bg-red-100',\n contrast:\n 'bg-transparent text-(--f-text-color) border border-(--f-content-border-color) hover:bg-(--f-content-hover-background) active:bg-(--f-content-hover-background)',\n help: 'bg-transparent text-purple-600 border border-purple-500 hover:bg-purple-50 active:bg-purple-100',\n };\n return map[sev] ?? map.primary;\n}\n\nfunction textVariant(sev: ButtonSeverity): string {\n const map: Record<ButtonSeverity, string> = {\n primary:\n 'bg-transparent text-primary hover:bg-primary/10 active:bg-primary/20 border border-transparent',\n secondary:\n 'bg-transparent text-(--f-text-muted-color) hover:bg-(--f-content-hover-background) active:bg-(--f-content-hover-background) border border-transparent',\n success:\n 'bg-transparent text-green-600 hover:bg-green-50 active:bg-green-100 border border-transparent',\n info: 'bg-transparent text-sky-600 hover:bg-sky-50 active:bg-sky-100 border border-transparent',\n warn: 'bg-transparent text-yellow-600 hover:bg-yellow-50 active:bg-yellow-100 border border-transparent',\n danger:\n 'bg-transparent text-red-600 hover:bg-red-50 active:bg-red-100 border border-transparent',\n contrast:\n 'bg-transparent text-(--f-text-color) hover:bg-(--f-content-hover-background) active:bg-(--f-content-hover-background) border border-transparent',\n help: 'bg-transparent text-purple-600 hover:bg-purple-50 active:bg-purple-100 border border-transparent',\n };\n return map[sev] ?? map.primary;\n}\n","import { DOCUMENT } from '@angular/common';\nimport { booleanAttribute, Directive, ElementRef, input, computed, effect, inject } from '@angular/core';\nimport { computeButtonClasses, type ButtonSeverity } from './button.component';\n\n@Directive({\n selector: '[fButton]',\n host: {\n '[class]': 'hostClass()',\n '[style.font-weight]': \"'var(--f-button-font-weight, 500)'\",\n '[attr.disabled]': \"disabled() || loading() ? '' : null\",\n '[attr.aria-busy]': 'loading() ? \\'true\\' : null',\n },\n})\nexport class FButtonDirective {\n private readonly _el = inject(ElementRef<HTMLElement>);\n private readonly _doc = inject(DOCUMENT);\n private _appliedContentNodes: HTMLElement[] = [];\n\n readonly severity = input<ButtonSeverity>('primary');\n readonly text = input(false, { transform: booleanAttribute });\n readonly outlined = input(false, { transform: booleanAttribute });\n readonly link = input(false, { transform: booleanAttribute });\n readonly rounded = input(false, { transform: booleanAttribute });\n readonly raised = input(false, { transform: booleanAttribute });\n readonly fluid = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly loading = input(false, { transform: booleanAttribute });\n readonly size = input<'small' | 'large' | null>(null);\n readonly label = input<string>('');\n readonly icon = input<string>('');\n readonly iconPos = input<'left' | 'right'>('left');\n readonly ariaLabel = input<string>('');\n readonly plain = input(false, { transform: booleanAttribute });\n\n readonly hostClass = computed(() => computeButtonClasses({\n severity: this.severity(),\n text: this.text(),\n link: this.link(),\n outlined: this.outlined(),\n rounded: this.rounded(),\n raised: this.raised(),\n fluid: this.fluid(),\n size: this.size(),\n iconOnly: !!this.icon() && !this.label(),\n }));\n\n constructor() {\n effect(() => {\n const el = this._el.nativeElement;\n const iconClass = this.loading() ? 'loader-circle' : this.icon();\n const label = this.label();\n const pos = this.iconPos();\n const loading = this.loading();\n\n for (const n of this._appliedContentNodes) n.remove();\n this._appliedContentNodes = [];\n\n const nodes: HTMLElement[] = [];\n\n if (iconClass && pos === 'left') {\n const i = this._doc.createElement('i');\n i.className = `${iconClass} shrink-0${loading ? ' animate-spin' : ''}`;\n nodes.push(i);\n }\n\n if (label) {\n const span = this._doc.createElement('span');\n span.className = 'leading-none';\n span.textContent = label;\n nodes.push(span);\n }\n\n if (iconClass && pos === 'right' && !loading) {\n const i = this._doc.createElement('i');\n i.className = `${iconClass} shrink-0`;\n nodes.push(i);\n }\n\n nodes.reverse().forEach(n => el.insertBefore(n, el.firstChild));\n this._appliedContentNodes = nodes;\n });\n\n effect(() => {\n const label = this.ariaLabel();\n if (label) this._el.nativeElement.setAttribute('aria-label', label);\n else if (!this.label() && this.icon()) {\n this._el.nativeElement.setAttribute('aria-label', this.icon());\n }\n });\n }\n}\n","import { booleanAttribute, Component, input, output } from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\n@Component({\n selector: 'f-chip',\n imports: [UiIconComponent],\n template: `\n <div class=\"inline-flex items-center gap-2 px-3 py-2 rounded-full bg-(--f-content-hover-background) text-(--f-text-color) text-sm transition-colors duration-[var(--f-transition-duration)]\">\n @if (icon()) { <ui-icon [name]=\"icon()\" class=\"text-xs text-(--f-text-muted-color)\"></ui-icon> }\n @if (label()) { <span class=\"font-medium text-xs\">{{ label() }}</span> }\n @if (removable()) {\n <button\n aria-label=\"Remove\"\n class=\"ml-0.5 -mr-0.5 w-4 h-4 flex items-center justify-center rounded-full hover:bg-(--f-content-border-color) text-(--f-text-muted-color) hover:text-(--f-text-hover-color) transition-all duration-[var(--f-transition-duration)] cursor-pointer\"\n (click)=\"onRemove.emit($event)\"\n >\n <ui-icon name=\"times\" class=\"text-[9px]\"></ui-icon>\n </button>\n }\n </div>\n `,\n})\nexport class ChipComponent {\n readonly label = input<string>('');\n readonly icon = input<string>('');\n readonly removable = input(false, { transform: booleanAttribute });\n readonly onRemove = output<MouseEvent>();\n}\n","import { Component, computed, input } from '@angular/core';\n\n@Component({\n selector: 'f-divider',\n template: `\n @if (layout() === 'vertical') {\n <div class=\"inline-flex flex-col items-center self-stretch mx-3\" role=\"separator\">\n <div [class]=\"segmentClass() + ' flex-1'\"></div>\n <span class=\"empty:hidden py-1 text-xs text-(--f-text-muted-color) whitespace-nowrap\"><ng-content /></span>\n <div [class]=\"segmentClass() + ' flex-1'\"></div>\n </div>\n } @else {\n <div class=\"flex items-center w-full my-4\" role=\"separator\">\n <div [class]=\"segmentClass() + ' ' + beforeClass()\"></div>\n <span class=\"empty:hidden px-3 text-xs text-(--f-text-muted-color) whitespace-nowrap\"><ng-content /></span>\n <div [class]=\"segmentClass() + ' ' + afterClass()\"></div>\n </div>\n }\n `,\n})\nexport class DividerComponent {\n readonly layout = input<'horizontal' | 'vertical'>('horizontal');\n readonly type = input<'solid' | 'dashed' | 'dotted'>('solid');\n readonly align = input<'left' | 'center' | 'right'>('center');\n\n readonly segmentClass = computed(() => {\n const typeMap = { solid: 'border-solid', dashed: 'border-dashed', dotted: 'border-dotted' };\n const borderSide = this.layout() === 'vertical' ? 'border-l' : 'border-t';\n return `${borderSide} ${typeMap[this.type()] ?? 'border-solid'} border-(--f-content-border-color)`;\n });\n\n readonly beforeClass = computed(() => (this.align() === 'left' ? 'flex-none w-8' : 'flex-1'));\n readonly afterClass = computed(() => (this.align() === 'right' ? 'flex-none w-8' : 'flex-1'));\n}\n","import { booleanAttribute, Component, input, output, signal } from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\n@Component({\n selector: 'f-image',\n imports: [UiIconComponent],\n host: { '(document:keydown.escape)': 'onEscape()' },\n styles: [`\n @keyframes image-preview-in { from { opacity: 0; } to { opacity: 1; } }\n .image-preview-overlay { animation: image-preview-in 0.15s ease-out; }\n `],\n template: `\n <img\n [src]=\"src()\"\n [alt]=\"alt()\"\n [style.width]=\"width()\"\n [style.height]=\"height()\"\n class=\"object-cover\"\n [class.cursor-pointer]=\"preview()\"\n (click)=\"preview() && open()\"\n />\n @if (previewVisible()) {\n <div\n class=\"image-preview-overlay fixed inset-0 z-50 flex items-center justify-center bg-black/80 p-6\"\n (click)=\"close()\"\n >\n <button\n type=\"button\"\n aria-label=\"Close\"\n class=\"absolute top-4 right-4 w-9 h-9 rounded-full bg-white/10 hover:bg-white/20 text-white flex items-center justify-center cursor-pointer transition-colors\"\n (click)=\"close()\"\n >\n <ui-icon name=\"times\" class=\"text-base\"></ui-icon>\n </button>\n <img [src]=\"src()\" [alt]=\"alt()\" class=\"max-w-full max-h-full object-contain\" (click)=\"$event.stopPropagation()\" />\n </div>\n }\n `,\n})\nexport class ImageComponent {\n readonly src = input<string>('');\n readonly alt = input<string>('');\n readonly width = input<string>('');\n readonly height = input<string>('');\n readonly preview = input(false, { transform: booleanAttribute });\n\n readonly onShow = output<void>();\n readonly onHide = output<void>();\n\n private readonly _previewVisible = signal(false);\n readonly previewVisible = this._previewVisible.asReadonly();\n\n open(): void {\n this._previewVisible.set(true);\n this.onShow.emit();\n }\n\n close(): void {\n this._previewVisible.set(false);\n this.onHide.emit();\n }\n\n onEscape(): void {\n if (this.previewVisible()) this.close();\n }\n}\n","import { Component, computed, input } from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\n@Component({\n selector: 'f-message',\n imports: [UiIconComponent],\n template: `\n <div [class]=\"classes()\" role=\"alert\">\n <ui-icon [name]=\"iconName()\" [class]=\"'mt-0.5 shrink-0 ' + iconColor()\"></ui-icon>\n <div class=\"flex-1 min-w-0\">\n @if (text()) { <span class=\"text-sm leading-snug\">{{ text() }}</span> }\n <ng-content />\n </div>\n </div>\n `,\n})\nexport class MessageComponent {\n readonly severity = input<'success' | 'info' | 'warn' | 'error'>('info');\n readonly text = input<string>('');\n readonly icon = input<string>('');\n\n readonly classes = computed(() => {\n const map: Record<string, string> = {\n success: 'flex items-start gap-2 px-3 py-2 rounded-lg bg-green-50 text-green-600 border border-green-200',\n info: 'flex items-start gap-2 px-3 py-2 rounded-lg bg-sky-50 text-sky-600 border border-sky-200',\n warn: 'flex items-start gap-2 px-3 py-2 rounded-lg bg-amber-50 text-amber-600 border border-amber-200',\n error: 'flex items-start gap-2 px-3 py-2 rounded-lg bg-red-50 text-red-600 border border-red-200',\n };\n return map[this.severity()] ?? map['info'];\n });\n\n readonly iconName = computed(() => {\n if (this.icon()) return this.icon();\n const map: Record<string, string> = {\n success: 'check-circle',\n info: 'info',\n warn: 'alert-triangle',\n error: 'x-circle',\n };\n return map[this.severity()] ?? map['info'];\n });\n\n readonly iconColor = computed(() => {\n const map: Record<string, string> = {\n success: 'text-green-600',\n info: 'text-sky-600',\n warn: 'text-amber-600',\n error: 'text-red-600',\n };\n return map[this.severity()] ?? map['info'];\n });\n}\n","import { booleanAttribute, Component, input } from '@angular/core';\n\n@Component({\n selector: 'f-progressbar',\n styles: [\n `\n @keyframes indeterminate-slide {\n 0% {\n transform: translateX(-100%);\n }\n 100% {\n transform: translateX(500%);\n }\n }\n .indeterminate-bar {\n animation: indeterminate-slide 1.4s ease-in-out infinite;\n }\n `,\n ],\n host: { class: 'relative z-999999' },\n template: `\n <div\n class=\"relative w-full h-2 bg-(--f-content-border-color) rounded-lg overflow-hidden\"\n role=\"progressbar\"\n [attr.aria-valuenow]=\"value()\"\n >\n @if (mode() === 'indeterminate') {\n <div\n class=\"absolute inset-y-0 bg-primary rounded-lg w-1/3 indeterminate-bar\"\n ></div>\n } @else {\n <div\n class=\"h-full bg-primary rounded-lg transition-all duration-500 ease-out flex items-center justify-center overflow-hidden\"\n [style.width]=\"value() + '%'\"\n >\n @if (showValue()) {\n <span\n class=\"text-xs font-semibold text-primary-contrast whitespace-nowrap px-1\"\n >{{ value() }}%</span\n >\n }\n </div>\n }\n </div>\n `,\n})\nexport class ProgressbarComponent {\n readonly value = input<number>(0);\n readonly mode = input<'determinate' | 'indeterminate'>('determinate');\n readonly showValue = input(true, { transform: booleanAttribute });\n}\n","import { Component, input, numberAttribute } from '@angular/core';\n\n@Component({\n selector: 'f-progressspinner',\n styles: [`\n @keyframes spinner-rotate { 100% { transform: rotate(360deg); } }\n @keyframes spinner-dash {\n 0% { stroke-dasharray: 1, 150; stroke-dashoffset: 0; }\n 50% { stroke-dasharray: 90, 150; stroke-dashoffset: -35; }\n 100% { stroke-dasharray: 90, 150; stroke-dashoffset: -124; }\n }\n .spinner-svg { animation: spinner-rotate 2s linear infinite; }\n .spinner-arc { animation: spinner-dash 1.5s ease-in-out infinite; }\n `],\n template: `\n <div class=\"inline-flex items-center justify-center\" [style.width]=\"size() + 'px'\" [style.height]=\"size() + 'px'\">\n <svg class=\"spinner-svg\" [attr.width]=\"size()\" [attr.height]=\"size()\" viewBox=\"0 0 50 50\">\n <circle cx=\"25\" cy=\"25\" r=\"20\" fill=\"none\" stroke=\"currentColor\"\n class=\"text-(--f-content-border-color)\" [attr.stroke-width]=\"strokeWidth()\" />\n <circle cx=\"25\" cy=\"25\" r=\"20\" fill=\"none\" stroke=\"currentColor\"\n class=\"text-primary spinner-arc\" [attr.stroke-width]=\"strokeWidth()\"\n stroke-linecap=\"round\" />\n </svg>\n </div>\n `,\n})\nexport class ProgressSpinnerComponent {\n readonly size = input(40, { transform: numberAttribute });\n readonly strokeWidth = input(4, { transform: numberAttribute });\n}\n","import { Component, computed, input } from '@angular/core';\n\n@Component({\n selector: 'f-skeleton',\n styles: [`\n @keyframes shimmer { 0% { background-position: -200% 0; } 100% { background-position: 200% 0; } }\n .skeleton-shimmer {\n background: linear-gradient(90deg, var(--f-content-border-color) 25%, var(--f-content-hover-background) 50%, var(--f-content-border-color) 75%);\n background-size: 200% 100%;\n animation: shimmer 1.6s ease-in-out infinite;\n }\n `],\n template: `<div [style]=\"hostStyle()\" class=\"skeleton-shimmer\"></div>`,\n})\nexport class SkeletonComponent {\n readonly width = input<string>('100%');\n readonly height = input<string>('1rem');\n readonly borderRadius = input<string>('');\n readonly shape = input<'rectangle' | 'circle'>('rectangle');\n\n readonly hostStyle = computed(() => {\n const s = this.shape();\n const w = this.width();\n const h = this.height();\n const br = this.borderRadius() || (s === 'circle' ? '50%' : 'var(--f-border-radius-md)');\n return { width: w, height: h, borderRadius: br, display: 'block' };\n });\n}\n","import { booleanAttribute, Component, computed, input } from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\nexport type TagSeverity =\n | 'success'\n | 'info'\n | 'warn'\n | 'danger'\n | 'secondary'\n | 'contrast'\n | null;\n\n@Component({\n selector: 'f-tag',\n imports: [UiIconComponent],\n template: `\n <span [class]=\"classes()\" [style]=\"inlineStyle()\" role=\"status\">\n @if (icon()) {\n <ui-icon [name]=\"icon()\" class=\"text-xs\"></ui-icon>\n }\n @if (value()) {\n <span>{{ value() }}</span>\n }\n <ng-content></ng-content>\n </span>\n `,\n host: {\n class: 'block',\n },\n})\nexport class TagComponent {\n readonly value = input<string>('');\n readonly severity = input<TagSeverity>(null);\n readonly icon = input<string>('');\n readonly rounded = input(false, { transform: booleanAttribute });\n /** Overrides severity with a custom background/text color (e.g. a per-entity color). */\n readonly color = input<string>('');\n\n readonly classes = computed(() => {\n const r = this.rounded();\n const base = `inline-flex items-center justify-center gap-1 px-2 py-1 text-sm font-bold leading-none ${r ? 'rounded-full' : 'rounded-lg'}`;\n if (this.color()) return base;\n const colorMap: Record<string, string> = {\n success: 'bg-green-100 text-green-700',\n info: 'bg-sky-100 text-sky-700',\n warn: 'bg-amber-100 text-amber-700',\n danger: 'bg-red-100 text-red-700',\n secondary: 'bg-surface-100 text-surface-600',\n contrast: 'bg-surface-950 text-surface-0',\n };\n const sev = this.severity();\n return `${base} ${sev ? (colorMap[sev] ?? colorMap['secondary']) : colorMap['secondary']}`;\n });\n\n readonly inlineStyle = computed(() => {\n const c = this.color();\n return c ? `background-color: ${c}22; color: ${c}` : '';\n });\n}\n","import {\n booleanAttribute,\n Component,\n forwardRef,\n input,\n model,\n output,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\nexport interface CheckboxChangeEvent {\n checked: boolean;\n originalEvent: Event;\n}\n\n@Component({\n selector: 'f-checkbox',\n imports: [UiIconComponent],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => CheckboxComponent), multi: true }],\n host: { '[class]': 'styleClass()' },\n template: `\n <label class=\"inline-flex items-center gap-2 cursor-pointer select-none\" [class.opacity-60]=\"disabled()\" [class.pointer-events-none]=\"disabled()\">\n <div class=\"relative shrink-0\">\n <input\n type=\"checkbox\"\n class=\"sr-only peer\"\n [id]=\"inputId()\"\n [checked]=\"checked()\"\n [disabled]=\"disabled()\"\n (change)=\"onChange($event)\"\n (blur)=\"handleBlur()\"\n />\n <div class=\"w-5 h-5 rounded-sm border-2 border-(--f-form-field-border-color) bg-(--f-form-field-background)\n peer-checked:bg-primary peer-checked:border-primary\n peer-focus-visible:ring-focus\n flex items-center justify-center transition-all duration-[var(--f-transition-duration)] shadow-sm\"\n [class.bg-primary]=\"indeterminate()\" [class.border-primary]=\"indeterminate()\"\n [class.border-red-400]=\"invalid() && touched()\">\n @if (indeterminate()) {\n <ui-icon name=\"minus\" class=\"text-primary-contrast text-sm\"></ui-icon>\n } @else if (checked()) {\n <ui-icon name=\"check\" class=\"text-primary-contrast text-sm\"></ui-icon>\n }\n </div>\n </div>\n @if (label()) {\n <span class=\"text-sm text-(--f-text-color) leading-none\">{{ label() }}</span>\n }\n </label>\n `,\n})\nexport class CheckboxComponent implements ControlValueAccessor {\n readonly label = input<string>('');\n readonly binary = input(true, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly inputId = input<string>('');\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly indeterminate = input(false, { transform: booleanAttribute });\n // Overwritten with the field's touch state when bound via signal forms [formField]\n readonly touched = input(true);\n readonly styleClass = input<string>('');\n readonly onChangeEvent = output<CheckboxChangeEvent>({ alias: 'onChange' });\n readonly onBlur = output<void>();\n // Satisfies Angular Signal Forms' `touch` output so the `Field` directive\n // can mark the bound field touched on blur when used via [formField].\n readonly touch = output<void>();\n\n // Must be a ModelSignal (not a private-writable/public-readonly pair) to\n // satisfy Angular Signal Forms' FormCheckboxControl contract for [formField].\n readonly checked = model(false);\n\n private _onChange: (v: boolean) => void = () => {};\n private _onTouched: () => void = () => {};\n\n onChange(event: Event): void {\n const v = (event.target as HTMLInputElement).checked;\n this.checked.set(v);\n this._onChange(v);\n this._onTouched();\n this.onChangeEvent.emit({ checked: v, originalEvent: event });\n }\n\n handleBlur(): void { this._onTouched(); this.onBlur.emit(); this.touch.emit(); }\n\n writeValue(val: boolean): void { this.checked.set(!!val); }\n registerOnChange(fn: (v: boolean) => void): void { this._onChange = fn; }\n registerOnTouched(fn: () => void): void { this._onTouched = fn; }\n setDisabledState(): void {}\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n ElementRef,\n forwardRef,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\nconst MONTH_NAMES = ['January','February','March','April','May','June','July','August','September','October','November','December'];\nconst DAY_NAMES = ['Su','Mo','Tu','We','Th','Fr','Sa'];\n\n@Component({\n selector: 'f-datepicker',\n imports: [UiIconComponent],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DatePickerComponent), multi: true }],\n host: {\n '[class]': 'styleClass()',\n '(document:click)': 'onDocumentClick($event)',\n },\n template: `\n <div class=\"relative\">\n <div [class]=\"wrapperClass()\">\n <input\n readonly\n type=\"text\"\n [class]=\"'block w-full px-3 py-2 text-sm bg-(--f-form-field-background) text-(--f-form-field-color) placeholder:text-(--f-form-field-placeholder-color) focus:outline-none cursor-pointer ' + inputStyleClass()\"\n [id]=\"inputId()\"\n [value]=\"displayValue()\"\n [placeholder]=\"placeholder()\"\n (click)=\"toggleCalendar()\"\n />\n @if (showClear() && value()) {\n <button type=\"button\" class=\"inline-flex items-center justify-center px-1 text-(--f-form-field-placeholder-color) hover:text-(--f-text-color)\" (click)=\"clear($event)\">\n <ui-icon name=\"times\" class=\"text-xs\"></ui-icon>\n </button>\n }\n @if (showIcon()) {\n <button type=\"button\" class=\"inline-flex items-center justify-center px-2 text-(--f-form-field-placeholder-color)\" (click)=\"toggleCalendar()\">\n <ui-icon name=\"calendar\" class=\"text-sm\"></ui-icon>\n </button>\n }\n </div>\n\n @if (open()) {\n <div class=\"absolute z-50 mt-1 bg-(--f-overlay-popover-background) border border-(--f-content-border-color) rounded-lg shadow-[0_8px_30px_rgb(0,0,0,0.1)] p-3 min-w-64\">\n <div class=\"flex items-center justify-between mb-3\">\n <button type=\"button\" class=\"inline-flex items-center justify-center p-1 hover:bg-(--f-content-hover-background) rounded-md\" (click)=\"prevMonth()\">\n <ui-icon name=\"chevron-left\" class=\"text-xs\"></ui-icon>\n </button>\n <span class=\"text-sm font-semibold\">{{ MONTHS[viewMonth()] }} {{ viewYear() }}</span>\n <button type=\"button\" class=\"inline-flex items-center justify-center p-1 hover:bg-(--f-content-hover-background) rounded-md\" (click)=\"nextMonth()\">\n <ui-icon name=\"chevron-right\" class=\"text-xs\"></ui-icon>\n </button>\n </div>\n <div class=\"grid grid-cols-7 gap-0.5 mb-1\">\n @for (d of DAYS; track d) {\n <div class=\"text-center text-xs text-(--f-text-muted-color) py-1\">{{ d }}</div>\n }\n </div>\n <div class=\"grid grid-cols-7 gap-0.5\">\n @for (day of calendarDays(); track day.date?.getTime() ?? day.pad) {\n <button\n type=\"button\"\n [class]=\"dayClass(day)\"\n [disabled]=\"day.disabled\"\n (click)=\"!day.pad && !day.disabled && selectDate(day.date!)\"\n >{{ day.day }}</button>\n }\n </div>\n @if (showButtonBar()) {\n <div class=\"flex items-center justify-between mt-3 pt-2 border-t border-(--f-content-border-color)\">\n <button type=\"button\" class=\"text-xs font-medium text-primary hover:underline\" (click)=\"onTodayClick()\">Today</button>\n <button type=\"button\" class=\"text-xs font-medium text-(--f-text-muted-color) hover:underline\" (click)=\"onClearClick()\">Clear</button>\n </div>\n }\n </div>\n }\n </div>\n `,\n})\nexport class DatePickerComponent implements ControlValueAccessor {\n readonly MONTHS = MONTH_NAMES;\n readonly DAYS = DAY_NAMES;\n\n readonly placeholder = input<string>('Select date');\n readonly dateFormat = input<string>('mm/dd/yy');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly showTime = input(false, { transform: booleanAttribute });\n readonly selectionMode = input<'single' | 'range' | 'multiple'>('single');\n readonly minDate = input<Date | null | undefined>(null);\n readonly maxDate = input<Date | null | undefined>(null);\n readonly inputId = input<string>('');\n readonly invalid = input(false, { transform: booleanAttribute });\n // Overwritten with the field's touch state when bound via signal forms [formField]\n readonly touched = input(true);\n readonly showClear = input(false, { transform: booleanAttribute });\n readonly inputStyleClass = input<string>('');\n // Defaults to true: the icon button was always rendered before this input\n // was wired up, so keeping it on by default preserves existing pages that\n // never explicitly set [showIcon].\n readonly showIcon = input(true, { transform: booleanAttribute });\n readonly showButtonBar = input(false, { transform: booleanAttribute });\n readonly appendTo = input<string>('');\n readonly styleClass = input<string>('');\n\n readonly onBlur = output<void>();\n\n private readonly _value = signal<Date | null>(null);\n readonly value = this._value.asReadonly();\n private readonly _open = signal(false);\n readonly open = this._open.asReadonly();\n private readonly _viewMonth = signal(new Date().getMonth());\n readonly viewMonth = this._viewMonth.asReadonly();\n private readonly _viewYear = signal(new Date().getFullYear());\n readonly viewYear = this._viewYear.asReadonly();\n\n readonly wrapperClass = computed(() => {\n const showInvalid = this.invalid() && this.touched();\n const stateClass = this.open()\n ? (showInvalid ? 'border-red-400' : 'border-primary')\n : (showInvalid ? 'border-red-400 hover:border-red-300' : 'border-(--f-form-field-border-color) hover:border-(--f-form-field-hover-border-color)');\n return `flex items-center border rounded-lg overflow-hidden bg-(--f-form-field-background) focus-within:ring-focus transition-all duration-[var(--f-transition-duration)] ${stateClass}`;\n });\n\n private readonly _el = inject(ElementRef);\n private _onChange: (v: Date | null) => void = () => {};\n private _onTouched: () => void = () => {};\n\n readonly displayValue = computed(() => {\n const v = this.value();\n if (!v) return '';\n return this.formatDate(v, this.dateFormat());\n });\n\n readonly calendarDays = computed(() => {\n const m = this.viewMonth();\n const y = this.viewYear();\n const firstDay = new Date(y, m, 1).getDay();\n const daysInMonth = new Date(y, m + 1, 0).getDate();\n const selected = this.value();\n\n const days: { day: number; date?: Date; selected: boolean; pad: boolean; disabled: boolean }[] = [];\n for (let i = 0; i < firstDay; i++) days.push({ day: 0, selected: false, pad: true, disabled: false });\n for (let d = 1; d <= daysInMonth; d++) {\n const date = new Date(y, m, d);\n days.push({\n day: d,\n date,\n selected: selected ? selected.toDateString() === date.toDateString() : false,\n pad: false,\n disabled: this.isOutOfRange(date),\n });\n }\n return days;\n });\n\n dayClass(day: { selected: boolean; pad: boolean; disabled: boolean }): string {\n if (day.pad) return 'text-center text-sm py-1 rounded-md invisible';\n if (day.disabled) return 'text-center text-sm py-1 rounded-md opacity-40 cursor-not-allowed pointer-events-none';\n if (day.selected) return 'text-center text-sm py-1 rounded-md bg-primary text-primary-contrast';\n return 'text-center text-sm py-1 rounded-md transition-colors hover:bg-(--f-content-hover-background)';\n }\n\n private isOutOfRange(date: Date): boolean {\n const min = this.minDate();\n const max = this.maxDate();\n if (min) {\n const minDay = new Date(min.getFullYear(), min.getMonth(), min.getDate());\n if (date < minDay) return true;\n }\n if (max) {\n const maxDay = new Date(max.getFullYear(), max.getMonth(), max.getDate());\n if (date > maxDay) return true;\n }\n return false;\n }\n\n private formatDate(date: Date, format: string): string {\n const yyyy = String(date.getFullYear());\n const yy = yyyy.slice(-2);\n const month = date.getMonth() + 1;\n const mm = String(month).padStart(2, '0');\n const day = date.getDate();\n const dd = String(day).padStart(2, '0');\n return format\n .replace(/yyyy/g, yyyy)\n .replace(/yy/g, yy)\n .replace(/mm/g, mm)\n .replace(/m/g, String(month))\n .replace(/dd/g, dd)\n .replace(/d/g, String(day));\n }\n\n onDocumentClick(e: MouseEvent): void {\n if (this.open() && !this._el.nativeElement.contains(e.target)) {\n this._open.set(false);\n this._onTouched();\n this.onBlur.emit();\n }\n }\n\n toggleCalendar(): void {\n if (this.disabled()) return;\n this._open.update(v => !v);\n if (!this.open()) {\n this._onTouched();\n this.onBlur.emit();\n }\n }\n\n clear(event: Event): void {\n event.stopPropagation();\n this._value.set(null);\n this._onChange(null);\n this._onTouched();\n }\n\n selectDate(date: Date): void {\n if (this.isOutOfRange(date)) return;\n this._value.set(date);\n this._onChange(date);\n this._onTouched();\n this._open.set(false);\n this.onBlur.emit();\n }\n\n onTodayClick(): void {\n this.selectDate(new Date());\n }\n\n onClearClick(): void {\n this._value.set(null);\n this._onChange(null);\n this._onTouched();\n this._open.set(false);\n this.onBlur.emit();\n }\n\n prevMonth(): void {\n if (this.viewMonth() === 0) { this._viewMonth.set(11); this._viewYear.update(y => y - 1); }\n else this._viewMonth.update(m => m - 1);\n }\n\n nextMonth(): void {\n if (this.viewMonth() === 11) { this._viewMonth.set(0); this._viewYear.update(y => y + 1); }\n else this._viewMonth.update(m => m + 1);\n }\n\n writeValue(v: Date | null): void { this._value.set(v ?? null); }\n registerOnChange(fn: (v: Date | null) => void): void { this._onChange = fn; }\n registerOnTouched(fn: () => void): void { this._onTouched = fn; }\n setDisabledState(): void {}\n}\n","import { booleanAttribute, Component, input, output, signal } from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\nexport interface FileSelectEvent { files: File[]; currentFiles: File[]; }\nexport interface FileRemoveEvent { file: File; }\nexport interface FileErrorEvent { file: File; reason: 'size' | 'count'; }\n\n@Component({\n selector: 'f-fileupload',\n imports: [UiIconComponent],\n host: { '[class]': 'styleClass()' },\n template: `\n <div\n class=\"border-2 border-dashed rounded-lg p-8 text-center transition-colors\"\n [class]=\"isDragging() ? 'border-primary bg-primary/5' : 'border-(--f-content-border-color) hover:border-primary/60 hover:bg-(--f-content-hover-background)'\"\n [class.opacity-50]=\"disabled()\"\n [class.pointer-events-none]=\"disabled()\"\n [attr.aria-disabled]=\"disabled() ? 'true' : null\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave()\"\n (drop)=\"onDrop($event)\"\n >\n <input #fileInput type=\"file\"\n class=\"hidden\"\n [accept]=\"accept()\"\n [multiple]=\"multiple()\"\n [disabled]=\"disabled()\"\n (change)=\"onFileChange($event)\"\n />\n <div class=\"flex flex-col items-center gap-2\">\n <div class=\"w-12 h-12 rounded-full bg-primary/10 flex items-center justify-center\">\n <ui-icon [name]=\"chooseIcon()\" class=\"text-primary text-xl\"></ui-icon>\n </div>\n <div>\n <p class=\"text-sm font-medium text-(--f-text-color)\">Drag & drop files here</p>\n <p class=\"text-xs text-(--f-text-muted-color) mt-0.5\">or</p>\n </div>\n <button type=\"button\"\n class=\"px-4 py-2 bg-primary text-primary-contrast text-sm rounded-lg hover:bg-primary-emphasis transition-colors font-medium cursor-pointer disabled:cursor-default\"\n [disabled]=\"disabled()\"\n (click)=\"fileInput.click()\">\n {{ chooseLabel() }}\n </button>\n </div>\n\n @if (files().length) {\n <div class=\"mt-5 space-y-1.5 text-left\">\n @for (f of files(); track f.name) {\n <div class=\"flex items-center gap-2 py-2 px-3 bg-(--f-content-hover-background) border border-(--f-content-border-color) rounded-lg\">\n <ui-icon name=\"file\" class=\"text-(--f-text-muted-color) shrink-0 text-sm\"></ui-icon>\n <span class=\"flex-1 truncate text-sm text-(--f-text-color)\">{{ f.name }}</span>\n <span class=\"text-xs text-(--f-text-muted-color) shrink-0\">{{ formatSize(f.size) }}</span>\n <button type=\"button\" class=\"inline-flex items-center justify-center text-(--f-text-muted-color) hover:text-red-500 transition-colors shrink-0 cursor-pointer\" (click)=\"removeFile(f)\">\n <ui-icon name=\"times\" class=\"text-xs\"></ui-icon>\n </button>\n </div>\n }\n </div>\n }\n </div>\n `,\n})\nexport class FileUploadComponent {\n readonly name = input<string>('');\n readonly accept = input<string>('');\n readonly multiple = input(false, { transform: booleanAttribute });\n readonly auto = input(false, { transform: booleanAttribute });\n readonly maxFileSize = input<number | null>(null);\n readonly fileLimit = input<number | null>(null);\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly url = input<string>('');\n readonly customUpload = input(false, { transform: booleanAttribute });\n readonly showUploadButton = input(true, { transform: booleanAttribute });\n readonly showCancelButton = input(true, { transform: booleanAttribute });\n readonly chooseLabel = input<string>('Choose Files');\n readonly chooseIcon = input<string>('upload');\n readonly styleClass = input<string>('');\n readonly mode = input<string>('advanced');\n\n readonly onSelect = output<FileSelectEvent>();\n readonly onRemove = output<FileRemoveEvent>();\n readonly onClear = output<void>();\n readonly onError = output<FileErrorEvent[]>();\n\n private readonly _files = signal<File[]>([]);\n readonly files = this._files.asReadonly();\n private readonly _isDragging = signal(false);\n readonly isDragging = this._isDragging.asReadonly();\n\n onDragOver(e: DragEvent): void {\n e.preventDefault();\n if (!this.disabled()) this._isDragging.set(true);\n }\n\n onDragLeave(): void {\n this._isDragging.set(false);\n }\n\n onFileChange(e: Event): void {\n if (this.disabled()) return;\n const input = e.target as HTMLInputElement;\n this.acceptIncoming(Array.from(input.files ?? []));\n input.value = '';\n }\n\n onDrop(e: DragEvent): void {\n e.preventDefault();\n this._isDragging.set(false);\n if (this.disabled()) return;\n this.acceptIncoming(Array.from(e.dataTransfer?.files ?? []));\n }\n\n private acceptIncoming(incoming: File[]): void {\n const maxSize = this.maxFileSize();\n const limit = this.fileLimit();\n const errors: FileErrorEvent[] = [];\n\n let candidates = incoming;\n if (maxSize != null) {\n candidates = candidates.filter((f) => {\n const ok = f.size <= maxSize;\n if (!ok) errors.push({ file: f, reason: 'size' });\n return ok;\n });\n }\n\n const existingCount = this.multiple() ? this.files().length : 0;\n if (limit != null && existingCount + candidates.length > limit) {\n const room = Math.max(0, limit - existingCount);\n const rejected = candidates.slice(room);\n candidates = candidates.slice(0, room);\n for (const f of rejected) errors.push({ file: f, reason: 'count' });\n }\n\n if (errors.length) this.onError.emit(errors);\n if (!candidates.length) return;\n\n const current = this.multiple() ? [...this.files(), ...candidates] : candidates;\n this._files.set(current);\n this.onSelect.emit({ files: candidates, currentFiles: current });\n }\n\n removeFile(file: File): void {\n this._files.update(f => f.filter(x => x !== file));\n this.onRemove.emit({ file });\n }\n\n clear(): void {\n this._files.set([]);\n this.onClear.emit();\n }\n\n formatSize(bytes: number): string {\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'f-iconfield',\n host: { class: 'relative flex items-center' },\n template: `<ng-content />`,\n})\nexport class IconFieldComponent {}\n","import { Component, computed, input } from '@angular/core';\n\n@Component({\n selector: 'f-inputicon',\n host: { '[class]': 'hostClass()' },\n template: `<ng-content />`,\n})\nexport class InputIconComponent {\n readonly styleClass = input<string>('');\n\n readonly hostClass = computed(\n () => `absolute left-3 top-1/2 -translate-y-1/2 text-(--f-form-field-placeholder-color) pointer-events-none ${this.styleClass()}`,\n );\n}\n","import { booleanAttribute, Component, computed, forwardRef, input, output, signal } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\n@Component({\n selector: 'f-inputnumber',\n imports: [UiIconComponent],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => InputNumberComponent), multi: true }],\n host: { class: 'block w-full' },\n template: `\n <div [class]=\"wrapperClass()\">\n @if (showButtons() && buttonLayout() === 'horizontal') {\n <button type=\"button\" class=\"inline-flex items-center justify-center px-2.5 py-2 bg-(--f-content-hover-background) hover:bg-(--f-content-border-color) text-(--f-text-muted-color) border-r border-(--f-form-field-border-color) transition-colors duration-[var(--f-transition-duration)] focus:outline-none focus-visible:ring-focus cursor-pointer\" (click)=\"decrement()\">\n <ui-icon name=\"minus\" class=\"text-xs\"></ui-icon>\n </button>\n }\n @if (prefix()) {\n <span class=\"px-2 py-2 text-sm text-(--f-text-muted-color) border-r border-(--f-content-border-color) bg-(--f-content-hover-background)\">{{ prefix() }}</span>\n }\n <input\n type=\"number\"\n [class]=\"'block px-3 py-2 text-sm bg-(--f-form-field-background) text-(--f-form-field-color) focus:outline-none w-full disabled:opacity-60 ' + inputStyleClass()\"\n [id]=\"inputId()\"\n [value]=\"value()\"\n [min]=\"min() ?? null\"\n [max]=\"max() ?? null\"\n [step]=\"step()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"isDisabled()\"\n (input)=\"onInputChange($event)\"\n (blur)=\"handleBlur()\"\n />\n @if (suffix()) {\n <span class=\"px-2 py-2 text-sm text-(--f-text-muted-color) border-l border-(--f-content-border-color) bg-(--f-content-hover-background)\">{{ suffix() }}</span>\n }\n @if (showButtons() && buttonLayout() === 'horizontal') {\n <button type=\"button\" class=\"inline-flex items-center justify-center px-2.5 py-2 bg-(--f-content-hover-background) hover:bg-(--f-content-border-color) text-(--f-text-muted-color) border-l border-(--f-form-field-border-color) transition-colors duration-[var(--f-transition-duration)] focus:outline-none focus-visible:ring-focus cursor-pointer\" (click)=\"increment()\">\n <ui-icon name=\"plus\" class=\"text-xs\"></ui-icon>\n </button>\n }\n @if (showButtons() && buttonLayout() === 'stacked') {\n <div class=\"flex flex-col border-l border-(--f-form-field-border-color)\">\n <button type=\"button\" class=\"flex-1 inline-flex items-center justify-center px-2 bg-(--f-content-hover-background) hover:bg-(--f-content-border-color) text-(--f-text-muted-color) border-b border-(--f-form-field-border-color) transition-colors duration-[var(--f-transition-duration)] focus:outline-none focus-visible:ring-focus cursor-pointer\" (click)=\"increment()\">\n <ui-icon name=\"chevron-up\" class=\"text-[10px]\"></ui-icon>\n </button>\n <button type=\"button\" class=\"flex-1 inline-flex items-center justify-center px-2 bg-(--f-content-hover-background) hover:bg-(--f-content-border-color) text-(--f-text-muted-color) transition-colors duration-[var(--f-transition-duration)] focus:outline-none focus-visible:ring-focus cursor-pointer\" (click)=\"decrement()\">\n <ui-icon name=\"chevron-down\" class=\"text-[10px]\"></ui-icon>\n </button>\n </div>\n }\n </div>\n `,\n})\nexport class InputNumberComponent implements ControlValueAccessor {\n readonly min = input<number | null>(null);\n readonly max = input<number | null>(null);\n readonly step = input<number>(1);\n readonly showButtons = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly inputId = input<string>('');\n readonly invalid = input(false, { transform: booleanAttribute });\n // Overwritten with the field's touch state when bound via signal forms [formField]\n readonly touched = input(true);\n readonly placeholder = input<string>('');\n readonly prefix = input<string>('');\n readonly suffix = input<string>('');\n readonly useGrouping = input(true, { transform: booleanAttribute });\n readonly buttonLayout = input<'stacked' | 'horizontal'>('stacked');\n readonly inputStyleClass = input<string>('');\n\n readonly onBlur = output<void>();\n\n private readonly _value = signal<number | null>(null);\n readonly value = this._value.asReadonly();\n\n private readonly _formDisabled = signal(false);\n readonly isDisabled = computed(() => this.disabled() || this._formDisabled());\n\n readonly wrapperClass = computed(() => {\n const stateClass = this.invalid() && this.touched()\n ? 'border-red-400 focus-within:border-red-400'\n : 'border-(--f-form-field-border-color) focus-within:border-primary';\n return `flex w-full items-stretch border rounded-lg overflow-hidden focus-within:ring-focus transition-colors duration-[var(--f-transition-duration)] ${stateClass}`;\n });\n\n private _onChange: (v: number | null) => void = () => {};\n private _onTouched: () => void = () => {};\n\n onInputChange(e: Event): void {\n const v = +(e.target as HTMLInputElement).value;\n this._value.set(isNaN(v) ? null : v);\n this._onChange(this.value());\n }\n\n increment(): void {\n const v = (this.value() ?? 0) + this.step();\n this._value.set(this.max() != null ? Math.min(v, this.max()!) : v);\n this._onChange(this.value());\n }\n\n decrement(): void {\n const v = (this.value() ?? 0) - this.step();\n this._value.set(this.min() != null ? Math.max(v, this.min()!) : v);\n this._onChange(this.value());\n }\n\n handleBlur(): void {\n this._onTouched();\n this.onBlur.emit();\n }\n\n writeValue(v: number): void { this._value.set(v ?? null); }\n registerOnChange(fn: (v: number | null) => void): void { this._onChange = fn; }\n registerOnTouched(fn: () => void): void { this._onTouched = fn; }\n setDisabledState(isDisabled: boolean): void { this._formDisabled.set(isDisabled); }\n}\n","import {\n booleanAttribute,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n OnInit,\n signal,\n} from '@angular/core';\n\n@Directive({\n selector: '[fInputText]',\n host: { '[class]': 'classes()' },\n})\nexport class InputTextDirective implements OnInit {\n readonly invalid = input(false, { transform: booleanAttribute });\n // Overwritten with the field's touch state when bound via signal forms [formField]\n readonly touched = input(true);\n private readonly _el = inject(ElementRef<HTMLElement>);\n private readonly _iconLeft = signal(false);\n\n ngOnInit(): void {\n this._iconLeft.set(!!this._el.nativeElement.closest('f-iconfield'));\n }\n\n readonly classes = computed(() => {\n const stateClass = this.invalid() && this.touched()\n ? 'border-red-400 focus:border-red-400'\n : 'border-(--f-form-field-border-color) focus:border-primary';\n return [\n 'block w-full',\n this._iconLeft() ? 'pl-9 pr-3' : 'px-3',\n 'py-2 text-sm rounded-lg border',\n 'bg-(--f-form-field-background) text-(--f-form-field-color) placeholder:text-(--f-form-field-placeholder-color)',\n 'focus:outline-none focus:ring-focus',\n 'disabled:opacity-60 disabled:cursor-not-allowed',\n 'transition-colors duration-[var(--f-transition-duration)]',\n stateClass,\n ].join(' ');\n });\n}\n","import { booleanAttribute, Directive, effect, ElementRef, inject, input } from '@angular/core';\n\n@Directive({ selector: '[fInputPassword]' })\nexport class InputPasswordDirective {\n private readonly _el = inject(ElementRef<HTMLInputElement>);\n\n readonly mask = input(true, { transform: booleanAttribute });\n\n constructor() {\n effect(() => {\n this._el.nativeElement.type = this.mask() ? 'password' : 'text';\n });\n }\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n ElementRef,\n forwardRef,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\n@Component({\n selector: 'f-multiselect',\n imports: [UiIconComponent],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => MultiSelectComponent), multi: true }],\n host: { '[class]': 'styleClass()', '(document:click)': 'onDocumentClick($event)' },\n template: `\n <div class=\"relative w-full\">\n <div [id]=\"inputId()\" [class]=\"triggerClass()\" (click)=\"toggleOpen()\">\n @if (selectedLabels().length) {\n @if (display() === 'comma') {\n <span class=\"flex-1 min-w-0 truncate text-sm text-(--f-form-field-color)\">{{ commaLabel() }}</span>\n } @else if (selectedLabels().length > maxSelectedLabels()) {\n <span class=\"flex-1 min-w-0 truncate text-sm text-(--f-form-field-color)\">{{ selectedLabels().length }} items selected</span>\n } @else {\n <div class=\"flex flex-wrap items-center gap-1 flex-1 min-w-0\">\n @for (lbl of selectedLabels(); track $index) {\n <span class=\"inline-flex items-center gap-1 px-2 py-0.5 bg-primary/10 text-primary rounded-md text-xs font-medium shrink-0\">\n {{ lbl }}\n <button type=\"button\" aria-label=\"Remove\" class=\"inline-flex items-center justify-center hover:opacity-70 cursor-pointer\" (click)=\"removeByLabel($event, lbl)\">\n <ui-icon name=\"times\" class=\"text-[10px]\"></ui-icon>\n </button>\n </span>\n }\n </div>\n }\n } @else {\n <span class=\"text-(--f-form-field-placeholder-color) text-sm\">{{ placeholder() }}</span>\n }\n @if (showClear() && values().length && !disabled()) {\n <ui-icon name=\"x\" class=\"text-xs text-(--f-form-field-placeholder-color) hover:text-(--f-text-color) shrink-0\" (click)=\"clearAll($event)\"></ui-icon>\n }\n <ui-icon name=\"chevron-down\" class=\"ml-auto text-xs text-(--f-form-field-placeholder-color) shrink-0 transition-transform duration-[var(--f-transition-duration)]\" [class.rotate-180]=\"open()\"></ui-icon>\n </div>\n\n @if (open()) {\n <div class=\"absolute z-50 w-full mt-1 bg-(--f-overlay-popover-background) border border-(--f-content-border-color) rounded-lg shadow-lg overflow-hidden\">\n @if (filter()) {\n <div class=\"p-2 border-b border-(--f-content-border-color)\">\n <div class=\"flex items-center gap-2 px-2 py-1.5 bg-(--f-content-hover-background) rounded-lg border border-(--f-content-border-color)\">\n <ui-icon name=\"search\" class=\"text-xs text-(--f-text-muted-color) shrink-0\"></ui-icon>\n <input type=\"text\" class=\"flex-1 text-sm bg-transparent focus:outline-none text-(--f-text-color) placeholder:text-(--f-form-field-placeholder-color)\"\n placeholder=\"Search...\" [value]=\"filterText()\" (input)=\"onFilterInput($any($event.target).value)\" (click)=\"$event.stopPropagation()\" />\n </div>\n </div>\n }\n @if (showToggleAll() && filteredOptions().length) {\n <button type=\"button\"\n class=\"w-full text-left px-3 py-2 text-sm flex items-center gap-2.5 border-b border-(--f-content-border-color) text-(--f-text-color) hover:bg-(--f-content-hover-background) transition-colors cursor-pointer\"\n (click)=\"toggleAll($event)\">\n <div class=\"w-4 h-4 rounded-sm border flex items-center justify-center shrink-0 transition-colors\"\n [class]=\"allFilteredSelected() ? 'bg-primary border-primary' : 'border-(--f-form-field-border-color) bg-(--f-form-field-background)'\">\n @if (allFilteredSelected()) {\n <ui-icon name=\"check\" class=\"text-[9px] text-primary-contrast\"></ui-icon>\n }\n </div>\n <span class=\"flex-1 truncate font-medium\">Select All</span>\n </button>\n }\n <div class=\"max-h-56 overflow-auto py-1\">\n @for (opt of filteredOptions(); track getOptionValue(opt)) {\n <button type=\"button\"\n class=\"w-full text-left px-3 py-2 text-sm flex items-center gap-2.5 transition-colors\"\n [class]=\"isOptionDisabled(opt) ? 'opacity-50 cursor-not-allowed' : (isSelected(opt) ? 'bg-(--f-highlight-background) text-(--f-highlight-color) cursor-pointer' : 'text-(--f-text-color) hover:bg-(--f-content-hover-background) cursor-pointer')\"\n [disabled]=\"isOptionDisabled(opt)\"\n (click)=\"toggleOption($event, opt)\">\n <div class=\"w-4 h-4 rounded-sm border flex items-center justify-center shrink-0 transition-colors\"\n [class]=\"isSelected(opt) ? 'bg-primary border-primary' : 'border-(--f-form-field-border-color) bg-(--f-form-field-background)'\">\n @if (isSelected(opt)) {\n <ui-icon name=\"check\" class=\"text-[9px] text-primary-contrast\"></ui-icon>\n }\n </div>\n <span class=\"flex-1 truncate\">{{ getOptionLabel(opt) }}</span>\n </button>\n }\n @empty {\n <div class=\"py-6 flex flex-col items-center gap-2\">\n <ui-icon name=\"inbox\" class=\"text-2xl text-(--f-text-muted-color)\"></ui-icon>\n <span class=\"text-sm text-(--f-text-muted-color)\">No options</span>\n </div>\n }\n </div>\n </div>\n }\n </div>\n `,\n})\nexport class MultiSelectComponent implements ControlValueAccessor {\n private readonly _el = inject(ElementRef);\n\n onDocumentClick(e: MouseEvent): void {\n if (this.open() && !this._el.nativeElement.contains(e.target)) {\n this._open.set(false);\n this._onTouched();\n this.onBlur.emit();\n }\n }\n\n readonly triggerClass = computed(() => {\n const base = 'w-full min-h-[38px] flex items-center gap-2 px-3 py-1.5 text-sm rounded-lg border bg-(--f-form-field-background) focus:outline-none focus-visible:ring-focus transition-all duration-[var(--f-transition-duration)]';\n const showInvalid = this.invalid() && this.touched();\n const stateClass = this.open()\n ? (showInvalid ? 'border-red-400' : 'border-primary')\n : (showInvalid ? 'border-red-400' : 'border-(--f-form-field-border-color) hover:border-(--f-form-field-hover-border-color)');\n const disabledClass = this.disabled() ? 'opacity-60 cursor-not-allowed' : 'cursor-pointer';\n return `${base} ${stateClass} ${disabledClass}`;\n });\n readonly options = input<unknown[]>([]);\n readonly optionLabel = input<string>('label');\n readonly optionValue = input<string>('value');\n readonly placeholder = input<string>('Select');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly filter = input(false, { transform: booleanAttribute });\n readonly inputId = input<string>('');\n readonly invalid = input(false, { transform: booleanAttribute });\n // Overwritten with the field's touch state when bound via signal forms [formField]\n readonly touched = input(true);\n readonly showClear = input(false, { transform: booleanAttribute });\n readonly optionDisabled = input<string>('');\n readonly display = input<string>('comma');\n readonly maxSelectedLabels = input<number>(3);\n readonly selectionLimit = input<number | null>(null);\n readonly showToggleAll = input(true, { transform: booleanAttribute });\n readonly styleClass = input<string>('');\n\n readonly onBlur = output<void>();\n\n private readonly _values = signal<unknown[]>([]);\n readonly values = this._values.asReadonly();\n private readonly _open = signal(false);\n readonly open = this._open.asReadonly();\n private readonly _filterText = signal('');\n readonly filterText = this._filterText.asReadonly();\n\n private _onChange: (v: unknown[]) => void = () => {};\n private _onTouched: () => void = () => {};\n\n readonly filteredOptions = computed(() => {\n const opts = this.options() as Record<string, unknown>[];\n const q = this.filterText().toLowerCase();\n if (!q) return opts;\n return opts.filter(o => String(o[this.optionLabel()] ?? '').toLowerCase().includes(q));\n });\n\n readonly selectedLabels = computed(() => {\n const vals = this.values();\n const opts = this.options() as Record<string, unknown>[];\n return vals.map(v => {\n const found = opts.find(o => o[this.optionValue()] === v);\n return found ? String(found[this.optionLabel()] ?? v) : String(v);\n });\n });\n\n getOptionLabel(opt: unknown): string {\n if (opt === null || opt === undefined) return '';\n if (typeof opt !== 'object') return String(opt);\n return String((opt as Record<string, unknown>)[this.optionLabel()] ?? '');\n }\n\n getOptionValue(opt: unknown): unknown {\n if (opt === null || opt === undefined) return opt;\n if (typeof opt !== 'object') return opt;\n return (opt as Record<string, unknown>)[this.optionValue()];\n }\n isSelected(opt: unknown): boolean { return this.values().includes(this.getOptionValue(opt)); }\n\n isOptionDisabled(opt: unknown): boolean {\n const field = this.optionDisabled();\n if (!field || opt === null || typeof opt !== 'object') return false;\n return !!(opt as Record<string, unknown>)[field];\n }\n\n readonly commaLabel = computed(() => this.selectedLabels().join(', '));\n\n onFilterInput(v: string): void { this._filterText.set(v); }\n\n toggleOpen(): void {\n if (this.disabled()) return;\n this._open.update(v => !v);\n if (!this.open()) { this._onTouched(); this.onBlur.emit(); }\n }\n\n toggleOption(e: Event, opt: unknown): void {\n e.stopPropagation();\n if (this.isOptionDisabled(opt)) return;\n const v = this.getOptionValue(opt);\n const cur = this.values();\n const selecting = !cur.includes(v);\n const limit = this.selectionLimit();\n if (selecting && limit != null && cur.length >= limit) return;\n const next = selecting ? [...cur, v] : cur.filter(x => x !== v);\n this._values.set(next);\n this._onChange(next);\n }\n\n clearAll(e: Event): void {\n e.stopPropagation();\n this._values.set([]);\n this._onChange([]);\n }\n\n readonly allFilteredSelected = computed(() => {\n const selectable = this.filteredOptions().filter(o => !this.isOptionDisabled(o));\n return selectable.length > 0 && selectable.every(o => this.isSelected(o));\n });\n\n toggleAll(e: Event): void {\n e.stopPropagation();\n const selectable = this.filteredOptions().filter(o => !this.isOptionDisabled(o));\n const selectableValues = selectable.map(o => this.getOptionValue(o));\n const cur = this.values();\n const next = this.allFilteredSelected()\n ? cur.filter(v => !selectableValues.includes(v))\n : [...cur, ...selectableValues.filter(v => !cur.includes(v))];\n const limited = this.selectionLimit() != null ? next.slice(0, this.selectionLimit()!) : next;\n this._values.set(limited);\n this._onChange(limited);\n }\n\n removeByLabel(e: Event, lbl: string): void {\n e.stopPropagation();\n const opts = this.options() as Record<string, unknown>[];\n const found = opts.find(o => String(o[this.optionLabel()] ?? '') === lbl);\n if (found) this.toggleOption(e, found);\n }\n\n writeValue(v: unknown[]): void { this._values.set(Array.isArray(v) ? v : []); }\n registerOnChange(fn: (v: unknown[]) => void): void { this._onChange = fn; }\n registerOnTouched(fn: () => void): void { this._onTouched = fn; }\n setDisabledState(): void {}\n}\n","import { booleanAttribute, Component, computed, forwardRef, input, output, signal } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\n@Component({\n selector: 'f-password',\n imports: [UiIconComponent],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => PasswordComponent), multi: true }],\n template: `\n <div class=\"relative\">\n <input\n [type]=\"show() ? 'text' : 'password'\"\n [class]=\"inputClass()\"\n [id]=\"inputId()\"\n [placeholder]=\"placeholder()\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n (input)=\"onInput($event)\"\n (blur)=\"handleBlur()\"\n />\n @if (toggleMask()) {\n <button\n type=\"button\"\n class=\"inline-flex items-center absolute right-3 top-1/2 -translate-y-1/2 text-(--f-form-field-placeholder-color) hover:text-(--f-text-hover-color) cursor-pointer\"\n (click)=\"toggleShow()\"\n >\n <ui-icon [name]=\"show() ? 'eye-off' : 'eye'\" class=\"text-sm\"></ui-icon>\n </button>\n }\n </div>\n @if (feedback() && value()) {\n <div class=\"mt-1.5\">\n <div class=\"flex gap-1\">\n @for (seg of [0, 1, 2]; track seg) {\n <div class=\"h-1 flex-1 rounded-full transition-colors\" [style.background-color]=\"seg < strength().segments ? strength().color : 'var(--f-content-border-color)'\"></div>\n }\n </div>\n <div class=\"text-xs mt-1\" [style.color]=\"strength().color\">{{ strength().label }}</div>\n </div>\n }\n `,\n})\nexport class PasswordComponent implements ControlValueAccessor {\n readonly toggleMask = input(true, { transform: booleanAttribute });\n readonly feedback = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly placeholder = input<string>('');\n readonly inputId = input<string>('');\n readonly invalid = input(false, { transform: booleanAttribute });\n // Overwritten with the field's touch state when bound via signal forms [formField]\n readonly touched = input(true);\n readonly inputStyleClass = input<string>('');\n\n readonly onBlur = output<void>();\n\n private readonly _value = signal('');\n readonly value = this._value.asReadonly();\n private readonly _show = signal(false);\n readonly show = this._show.asReadonly();\n\n readonly strength = computed(() => {\n const v = this.value();\n let score = 0;\n if (v.length >= 8) score++;\n if (v.length >= 12) score++;\n if (/[a-z]/.test(v) && /[A-Z]/.test(v)) score++;\n if (/\\d/.test(v)) score++;\n if (/[^a-zA-Z0-9]/.test(v)) score++;\n\n if (score <= 1) return { segments: 1, label: 'Weak', color: 'var(--f-red-500, #ef4444)' };\n if (score <= 3) return { segments: 2, label: 'Medium', color: 'var(--f-amber-500, #f59e0b)' };\n return { segments: 3, label: 'Strong', color: 'var(--f-green-500, #22c55e)' };\n });\n\n readonly inputClass = computed(() => {\n const stateClass = this.invalid() && this.touched()\n ? 'border-red-400 focus:border-red-400'\n : 'border-(--f-form-field-border-color) focus:border-primary';\n return `block w-full px-3 py-2 pr-10 text-sm rounded-lg border bg-(--f-form-field-background) text-(--f-form-field-color) placeholder:text-(--f-form-field-placeholder-color) focus:outline-none focus:ring-focus disabled:opacity-60 transition-colors duration-[var(--f-transition-duration)] ${stateClass} ${this.inputStyleClass()}`;\n });\n\n private _onChange: (v: string) => void = () => {};\n private _onTouched: () => void = () => {};\n\n onInput(e: Event): void {\n const v = (e.target as HTMLInputElement).value;\n this._value.set(v);\n this._onChange(v);\n }\n\n handleBlur(): void {\n this._onTouched();\n this.onBlur.emit();\n }\n\n toggleShow(): void { this._show.update(v => !v); }\n\n writeValue(v: string): void { this._value.set(v ?? ''); }\n registerOnChange(fn: (v: string) => void): void { this._onChange = fn; }\n registerOnTouched(fn: () => void): void { this._onTouched = fn; }\n setDisabledState(): void {}\n}\n","import { booleanAttribute, Component, forwardRef, input, output, signal } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\nexport interface RadioButtonClickEvent {\n originalEvent: Event;\n value: unknown;\n}\n\n@Component({\n selector: 'f-radiobutton',\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => RadioButtonComponent), multi: true }],\n host: { '[class]': 'styleClass()' },\n template: `\n <label class=\"inline-flex items-center gap-2 cursor-pointer select-none\" [class.opacity-60]=\"disabled()\" [class.pointer-events-none]=\"disabled()\">\n <div class=\"relative\">\n <input type=\"radio\"\n class=\"sr-only peer\"\n [id]=\"inputId()\"\n [name]=\"name()\"\n [value]=\"value()\"\n [checked]=\"isChecked()\"\n [disabled]=\"disabled()\"\n (change)=\"onChange($event)\"\n (blur)=\"handleBlur()\"\n />\n <div class=\"w-5 h-5 rounded-full border-2 border-(--f-form-field-border-color) bg-(--f-form-field-background) flex items-center justify-center\n peer-checked:border-primary\n peer-focus-visible:ring-focus\n transition-all duration-[var(--f-transition-duration)] shadow-sm\"\n [class.border-red-400]=\"invalid()\">\n @if (isChecked()) {\n <div class=\"w-2.5 h-2.5 rounded-full bg-primary transition-transform duration-[var(--f-transition-duration)] scale-100\"></div>\n }\n </div>\n </div>\n @if (label()) { <span class=\"text-sm text-(--f-text-color)\">{{ label() }}</span> }\n </label>\n `,\n})\nexport class RadioButtonComponent implements ControlValueAccessor {\n readonly name = input<string>('');\n readonly value = input<unknown>(null);\n readonly label = input<string>('');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly inputId = input<string>('');\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly styleClass = input<string>('');\n readonly onClick = output<RadioButtonClickEvent>();\n readonly onBlur = output<void>();\n\n private readonly _modelValue = signal<unknown>(null);\n readonly modelValue = this._modelValue.asReadonly();\n private _onChange: (v: unknown) => void = () => {};\n private _onTouched: () => void = () => {};\n\n isChecked(): boolean { return this.modelValue() === this.value(); }\n\n onChange(e: Event): void {\n this._modelValue.set(this.value());\n this._onChange(this.modelValue());\n this._onTouched();\n this.onClick.emit({ originalEvent: e, value: this.modelValue() });\n }\n\n handleBlur(): void { this._onTouched(); this.onBlur.emit(); }\n\n writeValue(v: unknown): void { this._modelValue.set(v); }\n registerOnChange(fn: (v: unknown) => void): void { this._onChange = fn; }\n registerOnTouched(fn: () => void): void { this._onTouched = fn; }\n setDisabledState(): void {}\n}\n","import { booleanAttribute, Component, computed, forwardRef, input, output, signal } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\n@Component({\n selector: 'f-rating',\n imports: [UiIconComponent],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => RatingComponent), multi: true }],\n template: `\n <div class=\"inline-flex items-center gap-1\">\n @if (cancel()) {\n <button type=\"button\" class=\"text-(--f-text-muted-color) hover:text-red-500 cursor-pointer\" (click)=\"setValue(0)\">\n <ui-icon name=\"times\"></ui-icon>\n </button>\n }\n @for (star of starsArray(); track star) {\n <button\n type=\"button\"\n class=\"text-xl transition-all duration-[var(--f-transition-duration)] hover:scale-110 focus:outline-none focus-visible:ring-focus rounded-sm cursor-pointer disabled:cursor-default disabled:pointer-events-none disabled:opacity-50\"\n [class.text-yellow-400]=\"star <= (hovered() || value())\"\n [class.text-(--f-content-border-color)]=\"star > (hovered() || value())\"\n [class.drop-shadow-sm]=\"star <= (hovered() || value())\"\n [disabled]=\"disabled()\"\n [attr.aria-invalid]=\"invalid() ? 'true' : null\"\n (mouseenter)=\"onHover(star)\"\n (mouseleave)=\"onHover(0)\"\n (click)=\"setValue(star)\"\n ><ui-icon [name]=\"star <= (hovered() || value()) ? iconOn() : iconOff()\"></ui-icon></button>\n }\n </div>\n `,\n})\nexport class RatingComponent implements ControlValueAccessor {\n readonly stars = input<number>(5);\n readonly cancel = input(true, { transform: booleanAttribute });\n readonly readonly = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly iconOn = input<string>('star-fill');\n readonly iconOff = input<string>('star');\n readonly onRate = output<{ value: number }>();\n readonly onBlur = output<void>();\n\n private readonly _value = signal(0);\n readonly value = this._value.asReadonly();\n private readonly _hovered = signal(0);\n readonly hovered = this._hovered.asReadonly();\n\n readonly starsArray = computed(() => Array.from({ length: this.stars() }, (_, i) => i + 1));\n\n private _onChange: (v: number) => void = () => {};\n private _onTouched: () => void = () => {};\n\n onHover(v: number): void {\n if (this.readonly() || this.disabled()) return;\n this._hovered.set(v);\n }\n\n setValue(v: number): void {\n if (this.readonly() || this.disabled()) return;\n this._value.set(v);\n this._onChange(v);\n this._onTouched();\n this.onRate.emit({ value: v });\n }\n\n writeValue(v: number): void { this._value.set(v ?? 0); }\n registerOnChange(fn: (v: number) => void): void { this._onChange = fn; }\n registerOnTouched(fn: () => void): void { this._onTouched = fn; }\n setDisabledState(): void {}\n}\n","import { Directive, inject, input, TemplateRef } from '@angular/core';\n\n@Directive({ selector: 'ng-template[fTemplate]' })\nexport class FTemplateDirective {\n readonly fTemplate = input<string>('');\n readonly templateRef = inject(TemplateRef);\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n contentChild,\n contentChildren,\n ElementRef,\n forwardRef,\n inject,\n input,\n output,\n signal,\n TemplateRef,\n} from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { FTemplateDirective } from '../shared/ftemplate.directive';\n\n@Component({\n selector: 'f-select',\n imports: [UiIconComponent, NgTemplateOutlet],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SelectComponent), multi: true }],\n host: {\n '[class]': 'hostClass()',\n '(document:click)': 'onDocumentClick($event)',\n },\n template: `\n <div class=\"relative w-full\">\n <button\n type=\"button\"\n data-select-trigger\n [id]=\"editable() ? null : inputId()\"\n [disabled]=\"disabled() || loading()\"\n (click)=\"toggleOpen()\"\n [class]=\"triggerClass()\"\n [attr.aria-haspopup]=\"'listbox'\"\n [attr.aria-expanded]=\"open()\"\n >\n @if (editable()) {\n <input\n type=\"text\"\n [id]=\"inputId()\"\n class=\"flex-1 min-w-0 bg-transparent focus:outline-none truncate\"\n [placeholder]=\"placeholder()\"\n [value]=\"editableText()\"\n (input)=\"onEditableInput($any($event.target).value)\"\n (click)=\"$event.stopPropagation()\"\n />\n } @else if (selectedItemTpl() && selectedOption() != null) {\n <span class=\"flex-1 min-w-0 truncate text-left\">\n <ng-container [ngTemplateOutlet]=\"selectedItemTpl()\" [ngTemplateOutletContext]=\"{ $implicit: selectedOption() }\" />\n </span>\n } @else {\n <span data-select-label class=\"flex-1 min-w-0 truncate text-left\" [class.text-(--f-form-field-placeholder-color)]=\"!selectedLabel()\">{{ selectedLabel() || placeholder() }}</span>\n }\n <span class=\"flex items-center gap-1 shrink-0\">\n @if (showClear() && value() != null && !disabled()) {\n <ui-icon name=\"x\" class=\"text-xs text-(--f-form-field-placeholder-color) hover:text-(--f-text-color) shrink-0\" (click)=\"clear($event)\"></ui-icon>\n }\n @if (loading()) {\n <ui-icon name=\"loader-circle\" [spin]=\"true\" class=\"text-xs text-(--f-form-field-placeholder-color) shrink-0\"></ui-icon>\n } @else {\n <ui-icon name=\"chevron-down\" class=\"text-xs text-(--f-form-field-placeholder-color) transition-transform duration-[var(--f-transition-duration)] shrink-0\" [class.rotate-180]=\"open()\"></ui-icon>\n }\n </span>\n </button>\n\n @if (open()) {\n <div class=\"absolute z-50 w-full mt-1 bg-(--f-overlay-popover-background) border border-(--f-content-border-color) rounded-lg shadow-lg overflow-hidden\">\n @if (filter()) {\n <div class=\"p-2 border-b border-(--f-content-border-color)\">\n <div class=\"flex items-center gap-2 px-2 py-1.5 bg-(--f-content-hover-background) rounded-lg border border-(--f-content-border-color)\">\n <ui-icon name=\"search\" class=\"text-xs text-(--f-text-muted-color) shrink-0\"></ui-icon>\n <input\n type=\"text\"\n class=\"flex-1 text-sm bg-transparent focus:outline-none text-(--f-text-color) placeholder:text-(--f-form-field-placeholder-color)\"\n placeholder=\"Search...\"\n [value]=\"filterText()\"\n (input)=\"setFilter($any($event.target).value)\"\n (click)=\"$event.stopPropagation()\"\n />\n </div>\n </div>\n }\n <div data-select-list class=\"max-h-56 overflow-auto py-1\">\n @for (opt of filteredOptions(); track getOptionValue(opt)) {\n <button\n type=\"button\"\n class=\"w-full text-left px-3 py-2 text-sm flex items-center gap-2 transition-colors cursor-pointer\"\n [class]=\"getOptionValue(opt) === value() ? 'bg-(--f-highlight-background) text-(--f-highlight-color)' : 'text-(--f-text-color) hover:bg-(--f-content-hover-background)'\"\n (click)=\"selectOption(opt)\"\n >\n <span class=\"flex-1 truncate\">\n @if (itemTpl()) {\n <ng-container [ngTemplateOutlet]=\"itemTpl()\" [ngTemplateOutletContext]=\"{ $implicit: opt }\" />\n } @else {\n {{ getOptionLabel(opt) }}\n }\n </span>\n @if (getOptionValue(opt) === value()) {\n <ui-icon name=\"check\" class=\"text-xs shrink-0\"></ui-icon>\n }\n </button>\n }\n @empty {\n <div class=\"py-6 flex flex-col items-center gap-2\">\n <ui-icon name=\"inbox\" class=\"text-2xl text-(--f-text-muted-color)\"></ui-icon>\n <span class=\"text-sm text-(--f-text-muted-color)\">No options</span>\n </div>\n }\n </div>\n </div>\n }\n </div>\n `,\n})\nexport class SelectComponent implements ControlValueAccessor {\n private readonly _el = inject(ElementRef);\n\n onDocumentClick(e: MouseEvent): void {\n if (this.open() && !this._el.nativeElement.contains(e.target)) {\n this._open.set(false);\n this._onTouched();\n this.onHide.emit();\n this.onBlur.emit();\n }\n }\n readonly options = input<unknown[]>([]);\n readonly optionLabel = input<string>('label');\n readonly optionValue = input<string>('value');\n readonly placeholder = input<string>('Select');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly filter = input(false, { transform: booleanAttribute });\n readonly showClear = input(false, { transform: booleanAttribute });\n readonly loading = input(false, { transform: booleanAttribute });\n readonly inputId = input<string>('');\n readonly invalid = input(false, { transform: booleanAttribute });\n // Overwritten with the field's touch state when bound via signal forms [formField]\n readonly touched = input(true);\n readonly styleClass = input<string>('');\n readonly editable = input(false, { transform: booleanAttribute });\n\n readonly hostClass = computed(() => `block w-full ${this.styleClass()}`);\n\n readonly onFilter = output<{ filter: string }>();\n readonly onChange = output<unknown>();\n readonly onShow = output<void>();\n readonly onHide = output<void>();\n readonly onBlur = output<void>();\n\n private readonly _value = signal<unknown>(null);\n readonly value = this._value.asReadonly();\n private readonly _open = signal(false);\n readonly open = this._open.asReadonly();\n private readonly _filterText = signal('');\n readonly filterText = this._filterText.asReadonly();\n\n readonly selectedItemRef = contentChild<TemplateRef<unknown>>('selectedItem');\n readonly itemRef = contentChild<TemplateRef<unknown>>('item');\n readonly fTemplates = contentChildren(FTemplateDirective);\n\n readonly selectedItemTpl = computed<TemplateRef<unknown> | null>(() =>\n this.selectedItemRef()\n ?? this.fTemplates().find(t => t.fTemplate() === 'selectedItem')?.templateRef\n ?? null,\n );\n readonly itemTpl = computed<TemplateRef<unknown> | null>(() =>\n this.itemRef()\n ?? this.fTemplates().find(t => t.fTemplate() === 'item')?.templateRef\n ?? null,\n );\n\n private _onChange: (v: unknown) => void = () => {};\n private _onTouched: () => void = () => {};\n\n setFilter(v: string): void {\n this._filterText.set(v);\n this.onFilter.emit({ filter: v });\n }\n\n readonly filteredOptions = computed(() => {\n const opts = this.options() as Record<string, unknown>[];\n const q = this.filterText().toLowerCase();\n if (!q) return opts;\n return opts.filter(o => String(o[this.optionLabel()] ?? '').toLowerCase().includes(q));\n });\n\n readonly selectedLabel = computed(() => {\n const v = this.value();\n if (v == null) return '';\n const opts = this.options() as Record<string, unknown>[];\n const found = opts.find(o => o[this.optionValue()] === v);\n return found ? String(found[this.optionLabel()] ?? '') : String(v);\n });\n\n readonly triggerClass = computed(() => {\n const base = 'w-full flex items-center justify-between px-3 py-2 text-sm rounded-lg border bg-(--f-form-field-background) text-(--f-form-field-color) focus:outline-none focus-visible:ring-focus transition-all duration-[var(--f-transition-duration)]';\n const showInvalid = this.invalid() && this.touched();\n const stateClass = this.open()\n ? (showInvalid ? 'border-red-400' : 'border-primary')\n : (showInvalid ? 'border-red-400 hover:border-red-300' : 'border-(--f-form-field-border-color) hover:border-(--f-form-field-hover-border-color)');\n const disabledClass = this.disabled() ? 'opacity-60 cursor-not-allowed' : 'cursor-pointer';\n return `${base} ${stateClass} ${disabledClass}`;\n });\n\n readonly selectedOption = computed(() => {\n const v = this.value();\n if (v == null) return null;\n return (this.options() as Record<string, unknown>[]).find(o => o[this.optionValue()] === v) ?? null;\n });\n\n getOptionLabel(opt: unknown): string {\n if (opt === null || opt === undefined) return '';\n if (typeof opt !== 'object') return String(opt);\n return String((opt as Record<string, unknown>)[this.optionLabel()] ?? '');\n }\n\n getOptionValue(opt: unknown): unknown {\n if (opt === null || opt === undefined) return opt;\n if (typeof opt !== 'object') return opt;\n return (opt as Record<string, unknown>)[this.optionValue()];\n }\n\n private readonly _editableOverride = signal<string | null>(null);\n readonly editableText = computed(() => this._editableOverride() ?? this.selectedLabel());\n\n onEditableInput(text: string): void {\n this._editableOverride.set(text);\n const opts = this.options() as Record<string, unknown>[];\n const match = opts.find(o => String(o[this.optionLabel()] ?? '') === text);\n const v = match ? match[this.optionValue()] : text;\n this._value.set(v);\n this._onChange(v);\n this.onChange.emit(v);\n }\n\n clear(event: Event): void {\n event.stopPropagation();\n this._editableOverride.set(null);\n this._value.set(null);\n this._onChange(null);\n this._onTouched();\n this.onChange.emit(null);\n }\n\n toggleOpen(): void {\n if (this.disabled() || this.loading()) return;\n this._open.update(v => !v);\n if (this.open()) {\n this.onShow.emit();\n } else {\n this._onTouched();\n this.onHide.emit();\n this.onBlur.emit();\n }\n }\n\n selectOption(opt: unknown): void {\n const v = this.getOptionValue(opt);\n this._editableOverride.set(null);\n this._value.set(v);\n this._onChange(v);\n this._onTouched();\n this._open.set(false);\n this.onChange.emit(v);\n }\n\n writeValue(val: unknown): void { this._value.set(val); }\n registerOnChange(fn: (v: unknown) => void): void { this._onChange = fn; }\n registerOnTouched(fn: () => void): void { this._onTouched = fn; }\n setDisabledState(): void {}\n}\n","import { booleanAttribute, Component, forwardRef, input, output, signal } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\n@Component({\n selector: 'f-selectbutton',\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SelectButtonComponent), multi: true }],\n template: `\n <div class=\"f-selectbutton\" [class.f-selectbutton-sm]=\"size() === 'small'\">\n @for (opt of options(); track getOptionValue(opt)) {\n <button\n type=\"button\"\n class=\"f-selectbutton-item\"\n [class.f-selectbutton-item-checked]=\"isSelected(opt)\"\n [disabled]=\"disabled()\"\n (click)=\"select(opt)\"\n >{{ getOptionLabel(opt) }}</button>\n }\n </div>\n `,\n styles: [`\n .f-selectbutton {\n display: inline-flex;\n align-items: stretch;\n background: var(--f-selectbutton-background);\n border: 1px solid var(--f-selectbutton-border-color);\n border-radius: var(--f-border-radius-md);\n padding: var(--f-selectbutton-padding);\n overflow: hidden;\n }\n .f-selectbutton-item {\n border: 0;\n border-inline-start: 1px solid var(--f-selectbutton-divider-color);\n border-radius: var(--f-selectbutton-item-border-radius);\n background: transparent;\n color: var(--f-selectbutton-item-color);\n font-weight: var(--f-selectbutton-font-weight);\n font-size: 0.875rem;\n padding: 0.45rem 0.875rem;\n cursor: pointer;\n transition:\n background-color var(--f-transition-duration),\n color var(--f-transition-duration),\n box-shadow var(--f-transition-duration);\n }\n .f-selectbutton-item:first-child {\n border-inline-start: 0;\n }\n .f-selectbutton-item:not(.f-selectbutton-item-checked):hover:not(:disabled) {\n color: var(--f-text-color);\n background: var(--f-selectbutton-item-hover-background);\n }\n .f-selectbutton-item-checked {\n background: var(--f-selectbutton-checked-background);\n color: var(--f-selectbutton-checked-color);\n box-shadow: var(--f-selectbutton-checked-shadow);\n }\n .f-selectbutton-item:disabled {\n opacity: 0.6;\n cursor: default;\n }\n .f-selectbutton-sm .f-selectbutton-item {\n font-size: 0.8125rem;\n padding: 0.3rem 0.7rem;\n }\n `],\n})\nexport class SelectButtonComponent implements ControlValueAccessor {\n readonly options = input<unknown[]>([]);\n readonly optionLabel = input<string>('label');\n readonly optionValue = input<string>('value');\n readonly multiple = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly allowEmpty = input(true, { transform: booleanAttribute });\n readonly size = input<string>('');\n\n readonly onChange = output<{ value: unknown }>();\n\n private _value = signal<unknown>(null);\n private _values = signal<unknown[]>([]);\n private _onChange: (v: unknown) => void = () => {};\n private _onTouched: () => void = () => {};\n\n getOptionLabel(opt: unknown): string {\n if (opt === null || opt === undefined) return '';\n if (typeof opt !== 'object') return String(opt);\n return String((opt as Record<string, unknown>)[this.optionLabel()] ?? '');\n }\n\n getOptionValue(opt: unknown): unknown {\n if (opt === null || opt === undefined) return opt;\n if (typeof opt !== 'object') return opt;\n return (opt as Record<string, unknown>)[this.optionValue()];\n }\n\n isSelected(opt: unknown): boolean {\n const v = this.getOptionValue(opt);\n return this.multiple() ? this._values().includes(v) : this._value() === v;\n }\n\n select(opt: unknown): void {\n if (this.disabled()) return;\n const v = this.getOptionValue(opt);\n if (this.multiple()) {\n const cur = this._values();\n const deselecting = cur.includes(v);\n if (deselecting && !this.allowEmpty() && cur.length <= 1) return;\n const next = deselecting ? cur.filter(x => x !== v) : [...cur, v];\n this._values.set(next);\n this._onChange(next);\n } else {\n const deselecting = this._value() === v;\n if (deselecting && !this.allowEmpty()) return;\n this._value.set(deselecting ? null : v);\n this._onChange(deselecting ? null : v);\n }\n this._onTouched();\n this.onChange.emit({ value: this.multiple() ? this._values() : this._value() });\n }\n\n writeValue(v: unknown): void {\n if (this.multiple()) this._values.set(Array.isArray(v) ? v : []);\n else this._value.set(v);\n }\n registerOnChange(fn: (v: unknown) => void): void { this._onChange = fn; }\n registerOnTouched(fn: () => void): void { this._onTouched = fn; }\n setDisabledState(): void {}\n}\n","import { booleanAttribute, computed, Directive, input } from '@angular/core';\n\n@Directive({\n selector: '[fTextarea]',\n host: { '[class]': 'classes()' },\n})\nexport class TextareaDirective {\n readonly invalid = input(false, { transform: booleanAttribute });\n // Overwritten with the field's touch state when bound via signal forms [formField]\n readonly touched = input(true);\n\n readonly classes = computed(() => {\n const stateClass = this.invalid() && this.touched()\n ? 'border-red-400 focus:border-red-400'\n : 'border-(--f-form-field-border-color) focus:border-primary';\n return [\n 'block w-full px-3 py-2 text-sm rounded-lg border',\n 'bg-(--f-form-field-background) text-(--f-form-field-color) placeholder:text-(--f-form-field-placeholder-color)',\n 'focus:outline-none focus:ring-focus',\n 'disabled:opacity-60 disabled:cursor-not-allowed resize-y min-h-20',\n 'transition-colors duration-[var(--f-transition-duration)]',\n stateClass,\n ].join(' ');\n });\n}\n","import { booleanAttribute, Component, computed, forwardRef, input, signal } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\n@Component({\n selector: 'f-togglebutton',\n imports: [UiIconComponent],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => ToggleButtonComponent), multi: true }],\n template: `\n <button\n type=\"button\"\n [class]=\"buttonClass()\"\n [disabled]=\"disabled()\"\n [attr.aria-pressed]=\"checked()\"\n role=\"switch\"\n (click)=\"toggle()\"\n >\n @if (checked() && onIcon()) { <ui-icon [name]=\"onIcon()\" class=\"text-sm\"></ui-icon> }\n @if (!checked() && offIcon()) { <ui-icon [name]=\"offIcon()\" class=\"text-sm\"></ui-icon> }\n <span class=\"leading-none\">{{ checked() ? onLabel() : offLabel() }}</span>\n </button>\n `,\n})\nexport class ToggleButtonComponent implements ControlValueAccessor {\n readonly onLabel = input<string>('Yes');\n readonly offLabel = input<string>('No');\n readonly onIcon = input<string>('');\n readonly offIcon = input<string>('');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n\n private readonly _checked = signal(false);\n readonly checked = this._checked.asReadonly();\n private _onChange: (v: boolean) => void = () => {};\n private _onTouched: () => void = () => {};\n\n readonly buttonClass = computed(() => {\n const base = 'inline-flex items-center gap-2 px-3 py-2 text-sm rounded-lg border transition-colors duration-[var(--f-transition-duration)] focus:outline-none focus-visible:ring-focus cursor-pointer disabled:opacity-60 disabled:cursor-not-allowed';\n if (this.checked()) return `${base} bg-primary text-primary-contrast border-primary`;\n const borderClass = this.invalid() ? 'border-red-400' : 'border-(--f-form-field-border-color)';\n return `${base} bg-(--f-form-field-background) text-(--f-text-color) ${borderClass} hover:bg-(--f-content-hover-background)`;\n });\n\n toggle(): void {\n if (this.disabled()) return;\n const v = !this.checked();\n this._checked.set(v);\n this._onChange(v);\n this._onTouched();\n }\n\n writeValue(v: boolean): void { this._checked.set(!!v); }\n registerOnChange(fn: (v: boolean) => void): void { this._onChange = fn; }\n registerOnTouched(fn: () => void): void { this._onTouched = fn; }\n setDisabledState(): void {}\n}\n","import { booleanAttribute, Component, computed, forwardRef, input, signal } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\n@Component({\n selector: 'f-toggleswitch',\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => ToggleSwitchComponent), multi: true }],\n template: `\n <button\n type=\"button\"\n role=\"switch\"\n [id]=\"inputId()\"\n [attr.aria-checked]=\"checked()\"\n [disabled]=\"isDisabled() || readonly()\"\n [attr.aria-label]=\"ariaLabel() || null\"\n (click)=\"toggle()\"\n [class]=\"trackClass()\"\n >\n <span [class]=\"thumbClass()\"></span>\n </button>\n `,\n})\nexport class ToggleSwitchComponent implements ControlValueAccessor {\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly readonly = input(false, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly ariaLabel = input<string>('');\n readonly trueValue = input<unknown>(true);\n readonly falseValue = input<unknown>(false);\n readonly inputId = input<string>('');\n private readonly _checked = signal(false);\n readonly checked = this._checked.asReadonly();\n\n private readonly _formDisabled = signal(false);\n readonly isDisabled = computed(() => this.disabled() || this._formDisabled());\n\n private _onChange: (v: unknown) => void = () => {};\n private _onTouched: () => void = () => {};\n\n readonly trackClass = computed(() => {\n const base = 'relative inline-flex items-center cursor-pointer h-6 w-11 shrink-0 rounded-full border-2 transition-colors duration-[var(--f-transition-duration)] ease-in-out focus:outline-none focus-visible:ring-focus disabled:opacity-60 disabled:cursor-not-allowed';\n const borderClass = this.invalid() ? 'border-red-400' : 'border-transparent';\n return `${base} ${borderClass} ${this.checked() ? 'bg-primary' : 'bg-(--f-form-field-border-color)'}`;\n });\n\n readonly thumbClass = computed(() => {\n const base = 'pointer-events-none block h-4 w-4 rounded-full bg-white shadow transform transition duration-200 ease-in-out ring-0';\n return `${base} ${this.checked() ? 'translate-x-6' : 'translate-x-0.5'}`;\n });\n\n toggle(): void {\n if (this.isDisabled() || this.readonly()) return;\n const v = !this.checked();\n this._checked.set(v);\n this._onChange(v ? this.trueValue() : this.falseValue());\n this._onTouched();\n }\n\n writeValue(val: unknown): void { this._checked.set(val === this.trueValue()); }\n registerOnChange(fn: (v: unknown) => void): void { this._onChange = fn; }\n registerOnTouched(fn: () => void): void { this._onTouched = fn; }\n setDisabledState(isDisabled: boolean): void { this._formDisabled.set(isDisabled); }\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n contentChild,\n contentChildren,\n effect,\n inject,\n input,\n model,\n output,\n signal,\n TemplateRef,\n} from '@angular/core';\nimport { DOCUMENT, NgTemplateOutlet } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { fromEvent } from 'rxjs';\nimport { FTemplateDirective } from '../shared/ftemplate.directive';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\nconst CLOSE_ANIMATION_MS = 180;\n\n@Component({\n selector: 'f-dialog',\n imports: [NgTemplateOutlet, UiIconComponent],\n styles: [`\n @keyframes dialog-backdrop-in { from { opacity: 0; } to { opacity: 1; } }\n @keyframes dialog-backdrop-out { from { opacity: 1; } to { opacity: 0; } }\n @keyframes dialog-panel-in { from { opacity: 0; transform: scale(0.95) translateY(-8px); } to { opacity: 1; transform: scale(1) translateY(0); } }\n @keyframes dialog-panel-out { from { opacity: 1; transform: scale(1) translateY(0); } to { opacity: 0; transform: scale(0.95) translateY(-8px); } }\n .dialog-backdrop { animation: dialog-backdrop-in 0.15s ease-out; }\n .dialog-backdrop.closing { animation: dialog-backdrop-out ${CLOSE_ANIMATION_MS}ms ease-in forwards; }\n .dialog-panel { animation: dialog-panel-in 0.22s cubic-bezier(0.16, 1, 0.3, 1); }\n .dialog-panel.closing { animation: dialog-panel-out ${CLOSE_ANIMATION_MS}ms cubic-bezier(0.4, 0, 1, 1) forwards; }\n .dialog-resize-handle { position: absolute; right: 0; bottom: 0; width: 1rem; height: 1rem; cursor: nwse-resize; }\n `],\n template: `\n @if (rendered()) {\n <div class=\"fixed inset-0 z-40 flex items-center justify-center p-4\" [class.pointer-events-none]=\"!modal()\">\n @if (modal()) {\n <div\n class=\"dialog-backdrop absolute inset-0 bg-black/50 backdrop-blur-[2px]\"\n [class.closing]=\"closing()\"\n (click)=\"dismissableMask() && close()\"\n ></div>\n }\n <div\n class=\"dialog-panel relative bg-(--f-overlay-popover-background) rounded-2xl shadow-2xl flex flex-col max-h-[90vh] overflow-hidden max-w-[calc(100vw-2rem)] pointer-events-auto\"\n [class.closing]=\"closing()\"\n [style]=\"panelStyle()\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-labelledby]=\"header() ? headerId : null\"\n >\n @if (header() || closable()) {\n <div class=\"flex items-center justify-between px-6 py-4 border-b border-(--f-content-border-color) shrink-0\">\n <h2 [id]=\"headerId\" class=\"text-base font-semibold text-(--f-text-color) tracking-tight\">{{ header() }}</h2>\n @if (closable()) {\n <button\n type=\"button\"\n aria-label=\"Close\"\n class=\"w-7 h-7 flex items-center justify-center rounded-lg cursor-pointer text-(--f-text-muted-color) hover:text-(--f-text-hover-color) hover:bg-(--f-content-hover-background) transition-all duration-[var(--f-transition-duration)] focus-visible:outline-none focus-visible:ring-focus\"\n (click)=\"close()\"\n >\n <ui-icon name=\"times\" class=\"text-xs\"></ui-icon>\n </button>\n }\n </div>\n }\n <div class=\"px-6 py-5 overflow-y-auto flex-1\">\n <ng-content />\n </div>\n @if (resolvedFooter()) {\n <div class=\"px-6 py-4 border-t border-(--f-content-border-color) shrink-0 flex items-center justify-end gap-2 bg-(--f-content-hover-background)/50\">\n <ng-container [ngTemplateOutlet]=\"resolvedFooter()\" />\n </div>\n }\n @if (resizable()) {\n <div class=\"dialog-resize-handle\" (pointerdown)=\"onResizeStart($event)\"></div>\n }\n </div>\n </div>\n }\n `,\n})\nexport class DialogComponent {\n private static idCounter = 0;\n private readonly _doc = inject(DOCUMENT);\n protected readonly headerId = `f-dialog-header-${++DialogComponent.idCounter}`;\n\n readonly header = input<string>('');\n readonly visible = model<boolean>(false);\n readonly modal = input(true, { transform: booleanAttribute });\n readonly closable = input(true, { transform: booleanAttribute });\n readonly dismissableMask = input(false, { transform: booleanAttribute });\n readonly resizable = input(true, { transform: booleanAttribute });\n readonly style = input<Record<string, string> | null>(null);\n readonly breakpoints = input<Record<string, string> | null>(null);\n\n private readonly _resizedSize = signal<{ width: string; height: string } | null>(null);\n private readonly _windowWidth = signal(\n typeof window !== 'undefined' ? window.innerWidth : Number.POSITIVE_INFINITY,\n );\n\n private readonly breakpointWidth = computed<string | null>(() => {\n const bp = this.breakpoints();\n if (!bp) return null;\n const width = this._windowWidth();\n const match = Object.entries(bp)\n .map(([key, value]) => [parseInt(key, 10), value] as const)\n .filter(([px]) => !Number.isNaN(px))\n .sort((a, b) => a[0] - b[0])\n .find(([px]) => width <= px);\n return match ? match[1] : null;\n });\n\n readonly panelStyle = computed<Record<string, string>>(() => ({\n width: '32rem',\n ...this.style(),\n ...(this.breakpointWidth() ? { width: this.breakpointWidth()! } : {}),\n ...(this._resizedSize() ?? {}),\n }));\n\n readonly onShow = output<void>();\n readonly onHide = output<void>();\n\n readonly footerRef = contentChild<TemplateRef<unknown>>('footer');\n readonly fTemplates = contentChildren(FTemplateDirective);\n\n readonly resolvedFooter = computed<TemplateRef<unknown> | null>(() => {\n if (this.footerRef()) {\n return this.footerRef() ?? null;\n }\n const tpl = this.fTemplates().find(t => t.fTemplate() === 'footer');\n return tpl?.templateRef ?? null;\n });\n\n private readonly _rendered = signal(false);\n readonly rendered = this._rendered.asReadonly();\n private readonly _closing = signal(false);\n readonly closing = this._closing.asReadonly();\n\n constructor() {\n if (typeof window !== 'undefined') {\n fromEvent(window, 'resize')\n .pipe(takeUntilDestroyed())\n .subscribe(() => this._windowWidth.set(window.innerWidth));\n }\n\n effect(() => {\n const visible = this.visible();\n if (visible) {\n this._closing.set(false);\n this._rendered.set(true);\n if (this.modal()) this._doc.body.style.overflow = 'hidden';\n this.onShow.emit();\n } else if (this._rendered()) {\n this._closing.set(true);\n if (this.modal()) this._doc.body.style.overflow = '';\n setTimeout(() => {\n this._rendered.set(false);\n this._closing.set(false);\n }, CLOSE_ANIMATION_MS);\n }\n });\n }\n\n close(): void {\n this.visible.set(false);\n this.onHide.emit();\n }\n\n onResizeStart(event: PointerEvent): void {\n event.preventDefault();\n const target = event.currentTarget as HTMLElement;\n const panel = target.parentElement as HTMLElement;\n const startWidth = panel.offsetWidth;\n const startHeight = panel.offsetHeight;\n const startX = event.clientX;\n const startY = event.clientY;\n\n const onMove = (e: PointerEvent): void => {\n const width = Math.max(240, startWidth + (e.clientX - startX));\n const height = Math.max(160, startHeight + (e.clientY - startY));\n this._resizedSize.set({\n width: `${Math.min(width, window.innerWidth - 32)}px`,\n height: `${Math.min(height, window.innerHeight - 32)}px`,\n });\n };\n const onUp = (): void => {\n document.removeEventListener('pointermove', onMove);\n document.removeEventListener('pointerup', onUp);\n };\n document.addEventListener('pointermove', onMove);\n document.addEventListener('pointerup', onUp);\n }\n}\n","import { booleanAttribute, Component, computed, effect, input, model, output, signal } from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\nconst CLOSE_ANIMATION_MS = 200;\n\n@Component({\n selector: 'f-drawer',\n imports: [UiIconComponent],\n host: { '(document:keydown.escape)': 'onEscape()' },\n styles: [`\n @keyframes slide-from-right { from { transform: translateX(100%); } to { transform: translateX(0); } }\n @keyframes slide-from-left { from { transform: translateX(-100%); } to { transform: translateX(0); } }\n @keyframes slide-from-top { from { transform: translateY(-100%); } to { transform: translateY(0); } }\n @keyframes slide-from-bottom { from { transform: translateY(100%); } to { transform: translateY(0); } }\n @keyframes backdrop-in { from { opacity: 0; } to { opacity: 1; } }\n @keyframes backdrop-out { from { opacity: 1; } to { opacity: 0; } }\n .drawer-right { animation: slide-from-right 0.25s cubic-bezier(0.16, 1, 0.3, 1); }\n .drawer-left { animation: slide-from-left 0.25s cubic-bezier(0.16, 1, 0.3, 1); }\n .drawer-top { animation: slide-from-top 0.25s cubic-bezier(0.16, 1, 0.3, 1); }\n .drawer-bottom { animation: slide-from-bottom 0.25s cubic-bezier(0.16, 1, 0.3, 1); }\n .drawer-right.closing { animation: slide-from-right ${CLOSE_ANIMATION_MS}ms cubic-bezier(0.4, 0, 1, 1) reverse forwards; }\n .drawer-left.closing { animation: slide-from-left ${CLOSE_ANIMATION_MS}ms cubic-bezier(0.4, 0, 1, 1) reverse forwards; }\n .drawer-top.closing { animation: slide-from-top ${CLOSE_ANIMATION_MS}ms cubic-bezier(0.4, 0, 1, 1) reverse forwards; }\n .drawer-bottom.closing { animation: slide-from-bottom ${CLOSE_ANIMATION_MS}ms cubic-bezier(0.4, 0, 1, 1) reverse forwards; }\n .drawer-backdrop { animation: backdrop-in 0.15s ease-out; }\n .drawer-backdrop.closing { animation: backdrop-out ${CLOSE_ANIMATION_MS}ms ease-in forwards; }\n `],\n template: `\n @if (rendered()) {\n <div class=\"fixed inset-0 z-40 flex\" [class.pointer-events-none]=\"!modal()\">\n @if (modal()) {\n <div class=\"drawer-backdrop absolute inset-0 bg-black/50 backdrop-blur-[2px]\" [class.closing]=\"closing()\" (click)=\"close()\"></div>\n }\n <div [class]=\"panelClass()\" [class.closing]=\"closing()\" role=\"complementary\" [attr.aria-modal]=\"modal() ? 'true' : null\">\n <div class=\"flex items-center justify-between px-6 py-4 border-b border-(--f-content-border-color) shrink-0\">\n <h2 class=\"text-base font-semibold text-(--f-text-color) tracking-tight\">{{ header() }}</h2>\n @if (closable()) {\n <button\n type=\"button\"\n aria-label=\"Close\"\n class=\"w-7 h-7 flex items-center justify-center rounded-lg text-(--f-text-muted-color) hover:text-(--f-text-hover-color) hover:bg-(--f-content-hover-background) transition-all duration-[var(--f-transition-duration)] cursor-pointer\"\n (click)=\"close()\"\n >\n <ui-icon name=\"times\" class=\"text-xs\"></ui-icon>\n </button>\n }\n </div>\n <div class=\"p-6 flex-1 overflow-y-auto pointer-events-auto\">\n <ng-content />\n </div>\n </div>\n </div>\n }\n `,\n})\nexport class DrawerComponent {\n readonly header = input<string>('');\n readonly visible = model<boolean>(false);\n readonly position = input<'left' | 'right' | 'top' | 'bottom'>('right');\n readonly fullScreen = input(false, { transform: booleanAttribute });\n readonly modal = input(true, { transform: booleanAttribute });\n readonly closable = input(true, { transform: booleanAttribute });\n readonly closeOnEscape = input(true, { transform: booleanAttribute });\n\n readonly onHide = output<void>();\n\n readonly panelClass = computed(() => {\n const pos = this.position();\n const full = this.fullScreen();\n const sizeClass = full ? 'w-full' : 'w-80';\n const base = 'relative bg-(--f-overlay-popover-background) shadow-lg flex flex-col h-full overflow-y-auto pointer-events-auto';\n const posMap: Record<string, string> = {\n right: `${base} ml-auto ${sizeClass} drawer-right`,\n left: `${base} mr-auto ${sizeClass} drawer-left`,\n top: `${base} w-full h-64 mb-auto drawer-top`,\n bottom: `${base} w-full h-64 mt-auto drawer-bottom`,\n };\n return posMap[pos] ?? posMap['right'];\n });\n\n private readonly _rendered = signal(false);\n readonly rendered = this._rendered.asReadonly();\n private readonly _closing = signal(false);\n readonly closing = this._closing.asReadonly();\n\n constructor() {\n effect(() => {\n if (this.visible()) {\n this._closing.set(false);\n this._rendered.set(true);\n } else if (this._rendered()) {\n this._closing.set(true);\n setTimeout(() => {\n this._rendered.set(false);\n this._closing.set(false);\n }, CLOSE_ANIMATION_MS);\n }\n });\n }\n\n onEscape(): void {\n if (this.visible() && this.closeOnEscape()) this.close();\n }\n\n close(): void {\n this.visible.set(false);\n this.onHide.emit();\n }\n}\n","import { booleanAttribute, Component, ElementRef, input, signal, viewChild } from '@angular/core';\n\n@Component({\n selector: 'f-popover',\n host: { '(document:click)': 'onDocumentClick($event)' },\n styles: [`\n @keyframes popover-in { from { opacity: 0; transform: scale(0.95) translateY(-4px); } to { opacity: 1; transform: scale(1) translateY(0); } }\n .popover-panel { animation: popover-in 0.15s cubic-bezier(0.16, 1, 0.3, 1); transform-origin: top; }\n `],\n template: `\n @if (visible()) {\n <div\n #panel\n class=\"popover-panel fixed z-50 bg-(--f-overlay-popover-background) border border-(--f-content-border-color) rounded-lg shadow-lg min-w-48 max-w-sm\"\n [style.top.px]=\"top()\"\n [style.left.px]=\"left()\"\n (click)=\"$event.stopPropagation()\"\n >\n <ng-content />\n </div>\n }\n `,\n})\nexport class PopoverComponent {\n readonly dismissable = input(true, { transform: booleanAttribute });\n\n private readonly _visible = signal(false);\n readonly visible = this._visible.asReadonly();\n private readonly _top = signal(0);\n readonly top = this._top.asReadonly();\n private readonly _left = signal(0);\n readonly left = this._left.asReadonly();\n\n private readonly panelRef = viewChild<ElementRef<HTMLElement>>('panel');\n\n private _anchor: HTMLElement | null = null;\n\n toggle(event: Event): void {\n this._anchor = event.target as HTMLElement;\n if (this.visible()) { this.hide(); return; }\n this.position();\n this._visible.set(true);\n setTimeout(() => this.adjustForViewport(), 0);\n }\n\n show(event: Event): void {\n this._anchor = event.target as HTMLElement;\n this.position();\n this._visible.set(true);\n setTimeout(() => this.adjustForViewport(), 0);\n }\n\n hide(): void { this._visible.set(false); }\n\n private position(): void {\n if (!this._anchor) return;\n const rect = this._anchor.getBoundingClientRect();\n const gap = 6;\n let top = rect.bottom + gap;\n let left = rect.left;\n if (typeof window !== 'undefined') {\n left = Math.min(left, window.innerWidth - 200 - 8);\n }\n this._top.set(top);\n this._left.set(Math.max(8, left));\n }\n\n private adjustForViewport(): void {\n const panelEl = this.panelRef()?.nativeElement;\n if (!panelEl || !this._anchor || typeof window === 'undefined') return;\n const anchorRect = this._anchor.getBoundingClientRect();\n const panelRect = panelEl.getBoundingClientRect();\n const gap = 6;\n if (anchorRect.bottom + panelRect.height + gap > window.innerHeight) {\n this._top.set(Math.max(8, anchorRect.top - panelRect.height - gap));\n }\n }\n\n onDocumentClick(e: Event): void {\n if (this.dismissable() && this.visible() && !this._anchor?.contains(e.target as Node)) {\n this.hide();\n }\n }\n}\n","import { Component, contentChild, input, TemplateRef } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'f-card',\n imports: [NgTemplateOutlet],\n host: { '[class]': 'styleClass()' },\n template: `\n <div class=\"bg-(--f-content-background) rounded-[var(--f-card-border-radius)] shadow-[var(--f-card-shadow)] border border-(--f-content-border-color) overflow-hidden\">\n @if (headerTemplate() || header()) {\n <div class=\"border-b border-(--f-content-border-color) bg-(--f-content-background)/80\">\n @if (headerTemplate()) {\n <ng-container [ngTemplateOutlet]=\"headerTemplate()\" />\n } @else {\n <div class=\"p-(--f-card-padding)\">\n <h3 class=\"text-sm font-semibold text-(--f-text-color) tracking-tight\">{{ header() }}</h3>\n @if (subheader()) {\n <p class=\"text-xs text-(--f-text-muted-color) mt-(--f-card-gap) leading-relaxed\">{{ subheader() }}</p>\n }\n </div>\n }\n </div>\n }\n <div class=\"p-(--f-card-padding) flex flex-col gap-(--f-card-gap)\">\n <ng-content />\n </div>\n @if (footerTemplate()) {\n <div class=\"p-(--f-card-padding) border-t border-(--f-content-border-color) bg-(--f-content-hover-background)/50\">\n <ng-container [ngTemplateOutlet]=\"footerTemplate()\" />\n </div>\n }\n </div>\n `,\n})\nexport class CardComponent {\n readonly header = input<string>('');\n readonly subheader = input<string>('');\n readonly styleClass = input<string>('');\n\n readonly headerTemplate = contentChild<TemplateRef<unknown>>('header');\n readonly footerTemplate = contentChild<TemplateRef<unknown>>('footer');\n}\n","import { booleanAttribute, Component, input, model } from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\n@Component({\n selector: 'f-panel',\n imports: [UiIconComponent],\n host: {\n class: 'block',\n },\n template: `\n <div\n class=\"border border-(--f-content-border-color) rounded-lg overflow-hidden shadow-sm\"\n >\n <div\n class=\"flex items-center justify-between px-5 py-3.5 bg-(--f-content-hover-background)/80 border-b border-(--f-content-border-color)\"\n >\n <span\n class=\"font-semibold text-(--f-text-color) text-sm tracking-tight\"\n >{{ header() }}</span\n >\n @if (toggleable()) {\n <button\n type=\"button\"\n class=\"w-6 h-6 flex items-center justify-center rounded-md text-(--f-text-muted-color) hover:text-(--f-text-hover-color) hover:bg-(--f-content-border-color)/70 transition-all duration-[var(--f-transition-duration)] focus:outline-none focus-visible:ring-focus cursor-pointer\"\n (click)=\"toggleCollapsed()\"\n >\n <ui-icon\n [name]=\"collapsed() ? 'chevron-down' : 'chevron-up'\"\n class=\"text-xs transition-transform duration-[var(--f-transition-duration)]\"\n ></ui-icon>\n </button>\n }\n </div>\n @if (!collapsed()) {\n <div class=\"p-5\">\n <ng-content />\n </div>\n }\n </div>\n `,\n})\nexport class PanelComponent {\n readonly header = input<string>('');\n readonly toggleable = input(false, { transform: booleanAttribute });\n readonly collapsed = model(false);\n\n toggleCollapsed(): void {\n this.collapsed.update((v) => !v);\n }\n}\n","import { booleanAttribute, Component, input, output } from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { MenuItem } from '../../interfaces/menu-item';\n\nexport type StepsMenuItem = MenuItem;\n\n@Component({\n selector: 'f-steps',\n imports: [UiIconComponent],\n template: `\n <div class=\"flex items-start w-full\">\n @for (item of model(); track $index; let i = $index; let last = $last) {\n <div class=\"flex items-center\" [class.flex-1]=\"!last\">\n <div class=\"flex flex-col items-center gap-2\">\n <button\n type=\"button\"\n class=\"w-8 h-8 rounded-full flex items-center justify-center text-xs font-bold transition-all duration-[var(--f-transition-duration)] ring-2 ring-offset-2 focus:outline-none focus-visible:ring-focus shrink-0\"\n [class]=\"stepCircleClass(i)\"\n [disabled]=\"item.disabled\"\n (click)=\"!item.disabled && !readonly() && onActiveIndexChange.emit(i)\"\n >\n @if (i < activeIndex()) {\n <ui-icon name=\"check\" class=\"text-[10px]\"></ui-icon>\n } @else {\n {{ i + 1 }}\n }\n </button>\n @if (item.label) {\n <span class=\"text-xs whitespace-nowrap transition-all duration-[var(--f-transition-duration)] leading-tight text-center max-w-[80px]\"\n [class]=\"i === activeIndex() ? 'font-semibold text-primary' : i < activeIndex() ? 'font-medium text-(--f-text-muted-color)' : 'text-(--f-text-muted-color)'\">\n {{ item.label }}\n </span>\n }\n </div>\n @if (!last) {\n <div class=\"flex-1 h-[1.5px] mx-3 -mt-4 rounded-full transition-all duration-[var(--f-transition-duration)]\" [class]=\"i < activeIndex() ? 'bg-primary' : 'bg-(--f-content-border-color)'\"></div>\n }\n </div>\n }\n </div>\n `,\n})\nexport class StepsComponent {\n readonly model = input<MenuItem[]>([]);\n readonly activeIndex = input<number>(0);\n readonly readonly = input(false, { transform: booleanAttribute });\n readonly onActiveIndexChange = output<number>();\n\n stepCircleClass(i: number): string {\n const interactive = !this.readonly();\n if (i < this.activeIndex()) return `bg-primary text-primary-contrast ring-primary/20 ${interactive ? 'cursor-pointer hover:bg-primary-emphasis' : 'cursor-default'}`;\n if (i === this.activeIndex()) return 'bg-primary text-primary-contrast ring-primary/30 shadow-sm';\n return `bg-(--f-content-background) text-(--f-text-muted-color) border border-(--f-content-border-color) ring-transparent ${interactive ? 'cursor-pointer hover:border-primary/50' : 'cursor-default'}`;\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n Component,\n contentChildren,\n effect,\n input,\n signal,\n untracked,\n} from '@angular/core';\nimport { FTemplateDirective } from '../shared/ftemplate.directive';\n\n@Component({\n selector: 'f-splitter',\n imports: [NgTemplateOutlet],\n host: { class: 'block h-full w-full' },\n template: `\n <div\n class=\"f-splitter flex h-full w-full\"\n [class.flex-col]=\"layout() === 'vertical'\"\n [class]=\"styleClass()\"\n >\n @if (panelTemplates().length > 0) {\n @for (\n panel of panelTemplates();\n track $index;\n let i = $index;\n let last = $last\n ) {\n <div\n class=\"f-splitter-panel min-w-0 min-h-0 overflow-auto\"\n [style.flex]=\"panelFlex(i)\"\n >\n <ng-container [ngTemplateOutlet]=\"panel.templateRef\" />\n </div>\n @if (!last) {\n <div\n class=\"f-splitter-gutter\"\n [class.f-splitter-gutter--vertical]=\"layout() === 'vertical'\"\n (pointerdown)=\"onGutterPointerDown($event, i)\"\n ></div>\n }\n }\n } @else {\n <ng-content />\n }\n </div>\n `,\n styles: [\n `\n .f-splitter-gutter {\n flex: 0 0 4px;\n background: var(--f-content-border-color);\n cursor: col-resize;\n touch-action: none;\n transition: background-color var(--f-transition-duration);\n }\n .f-splitter-gutter:hover,\n .f-splitter-gutter:active {\n background: var(--f-primary-color);\n }\n .f-splitter-gutter--vertical {\n cursor: row-resize;\n }\n `,\n ],\n})\nexport class SplitterComponent {\n readonly layout = input<'horizontal' | 'vertical'>('horizontal');\n readonly panelSizes = input<number[]>([]);\n readonly minSizes = input<number[]>([]);\n readonly styleClass = input<string>('');\n\n readonly panelTemplates = contentChildren(FTemplateDirective);\n\n private readonly _sizes = signal<number[]>([]);\n readonly sizes = this._sizes.asReadonly();\n\n constructor() {\n effect(() => {\n const count = this.panelTemplates().length;\n if (count === 0) return;\n const provided = this.panelSizes();\n const initial =\n provided.length === count\n ? [...provided]\n : Array.from({ length: count }, () => 100 / count);\n const total = initial.reduce((sum, size) => sum + size, 0) || 1;\n untracked(() =>\n this._sizes.set(initial.map((size) => (size / total) * 100)),\n );\n });\n }\n\n panelFlex(index: number): string {\n const count = this.panelTemplates().length || 1;\n const size = this.sizes()[index] ?? 100 / count;\n return `${size} 1 0%`;\n }\n\n onGutterPointerDown(event: PointerEvent, index: number): void {\n event.preventDefault();\n const gutter = event.currentTarget as HTMLElement;\n const container = gutter.parentElement;\n if (!container) return;\n\n const horizontal = this.layout() !== 'vertical';\n const total = horizontal ? container.clientWidth : container.clientHeight;\n if (total <= 0) return;\n\n const startPos = horizontal ? event.clientX : event.clientY;\n const startSizes = this._sizes();\n if (startSizes.length < index + 2) return;\n\n const pairTotal = startSizes[index] + startSizes[index + 1];\n const min = Math.min(this.minSizes()[index] ?? 5, pairTotal);\n const max =\n pairTotal - Math.min(this.minSizes()[index + 1] ?? 5, pairTotal);\n\n const onMove = (e: PointerEvent) => {\n const delta =\n (((horizontal ? e.clientX : e.clientY) - startPos) / total) * 100;\n const next = Math.min(\n Math.max(startSizes[index] + delta, min),\n Math.max(max, min),\n );\n const updated = [...startSizes];\n updated[index] = next;\n updated[index + 1] = pairTotal - next;\n this._sizes.set(updated);\n };\n const stop = () => {\n gutter.removeEventListener('pointermove', onMove);\n gutter.removeEventListener('pointerup', stop);\n gutter.removeEventListener('pointercancel', stop);\n };\n\n gutter.setPointerCapture(event.pointerId);\n gutter.addEventListener('pointermove', onMove);\n gutter.addEventListener('pointerup', stop);\n gutter.addEventListener('pointercancel', stop);\n }\n}\n\n@Component({\n selector: 'f-splitter-panel',\n host: { class: 'block flex-1 min-w-0 min-h-0 overflow-auto' },\n template: `<ng-content />`,\n})\nexport class SplitterPanelComponent {}\n","import { Component, input } from '@angular/core';\n\n@Component({\n selector: 'f-toolbar',\n template: `\n <div\n class=\"flex items-center justify-between gap-3 py-2.5 px-4 bg-(--f-content-background) border border-(--f-content-border-color) rounded-lg shadow-sm\"\n [class]=\"styleClass()\"\n >\n <div class=\"flex items-center gap-2 flex-1\">\n <ng-content select=\"[start],[fStart]\" />\n </div>\n <div class=\"flex items-center gap-2 shrink-0\">\n <ng-content select=\"[center],[fCenter]\" />\n </div>\n <div class=\"flex items-center gap-2 flex-1 justify-end\">\n <ng-content select=\"[end],[fEnd]\" />\n </div>\n <ng-content />\n </div>\n `,\n host: {\n class: 'block',\n },\n})\nexport class ToolbarComponent {\n readonly styleClass = input<string>('');\n}\n","import { Injectable, signal } from '@angular/core';\n\n@Injectable()\nexport class TabsContext {\n private readonly _active = signal<string | number>(0);\n readonly active = this._active.asReadonly();\n private readonly _scrollable = signal(false);\n readonly scrollable = this._scrollable.asReadonly();\n\n setActive(v: string | number): void {\n this._active.set(v);\n }\n\n setScrollable(v: boolean): void {\n this._scrollable.set(v);\n }\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n contentChildren,\n effect,\n ElementRef,\n inject,\n input,\n model,\n output,\n untracked,\n viewChild,\n} from '@angular/core';\nimport { TabsContext } from './tabs.context';\n\n// ─── Tabs root — provides context ─────────────────────────────────────────────\n@Component({\n selector: 'f-tabs',\n providers: [TabsContext],\n template: `<div class=\"flex flex-col\"><ng-content /></div>`,\n})\nexport class TabsComponent {\n readonly value = model<string | number>(0);\n readonly scrollable = input(false, { transform: booleanAttribute });\n readonly onTabChange = output<{ value: string | number }>();\n private readonly ctx = inject(TabsContext);\n\n constructor() {\n // Set synchronously so f-tabpanel children read the right value on their\n // own first render — effect() below only fires after CD, which is too\n // late for content already being created in the same pass (e.g. tab\n // panels rendered via *ngTemplateOutlet inside an @if).\n this.ctx.setActive(this.value());\n this.ctx.setScrollable(this.scrollable());\n\n // Sync external value input → context\n effect(() => { this.ctx.setActive(this.value()); });\n effect(() => { this.ctx.setScrollable(this.scrollable()); });\n\n // Sync context (tab clicks) → model + output\n effect(() => {\n const v = this.ctx.active();\n untracked(() => {\n if (this.value() !== v) {\n this.value.set(v);\n this.onTabChange.emit({ value: v });\n }\n });\n });\n }\n}\n\n// ─── TabList — wraps tab buttons ──────────────────────────────────────────────\n@Component({\n selector: 'f-tablist',\n host: { role: 'tablist', '(keydown)': 'onKeydown($event)' },\n template: `\n <div [class]=\"listClass()\">\n <ng-content />\n </div>\n `,\n})\nexport class TabListComponent {\n private readonly ctx = inject(TabsContext);\n private readonly tabs = contentChildren(TabComponent);\n\n readonly listClass = computed(() => {\n const base = 'flex border-b border-(--f-content-border-color) gap-0 scrollbar-none';\n return this.ctx.scrollable() ? `${base} overflow-x-auto` : `${base} flex-wrap`;\n });\n\n onKeydown(e: KeyboardEvent): void {\n const tabs = this.tabs().filter(t => !t.disabled());\n if (!tabs.length) return;\n const currentEl = document.activeElement;\n const currentIndex = tabs.findIndex(t => t.buttonEl() === currentEl);\n\n let nextIndex: number | null = null;\n if (e.key === 'ArrowRight') nextIndex = currentIndex < 0 ? 0 : (currentIndex + 1) % tabs.length;\n else if (e.key === 'ArrowLeft') nextIndex = currentIndex < 0 ? 0 : (currentIndex - 1 + tabs.length) % tabs.length;\n else if (e.key === 'Home') nextIndex = 0;\n else if (e.key === 'End') nextIndex = tabs.length - 1;\n\n if (nextIndex === null) return;\n e.preventDefault();\n tabs[nextIndex].focusButton();\n }\n}\n\n// ─── Tab — individual clickable tab button ────────────────────────────────────\n@Component({\n selector: 'f-tab',\n template: `\n <button\n #btn\n type=\"button\"\n role=\"tab\"\n [class]=\"tabClass()\"\n [disabled]=\"disabled()\"\n [id]=\"triggerId()\"\n [attr.aria-controls]=\"panelId()\"\n [attr.aria-selected]=\"isActive()\"\n [attr.tabindex]=\"isActive() ? 0 : -1\"\n (click)=\"onClick()\"\n ><ng-content /></button>\n `,\n})\nexport class TabComponent {\n private readonly ctx = inject(TabsContext);\n private readonly buttonRef = viewChild<ElementRef<HTMLButtonElement>>('btn');\n readonly value = input<string | number>('');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly isActive = computed(() => this.ctx.active() === this.value());\n\n readonly triggerId = computed(() => `f-tab-trigger-${this.value()}`);\n readonly panelId = computed(() => `f-tab-panel-${this.value()}`);\n\n readonly tabClass = computed(() => {\n const base = 'px-4 py-2.5 text-sm font-medium whitespace-nowrap border-b-[2.5px] transition-all duration-[var(--f-transition-duration)] -mb-px inline-flex items-center gap-1.5 focus:outline-none focus-visible:ring-focus cursor-pointer disabled:cursor-not-allowed disabled:opacity-40 select-none';\n return this.isActive()\n ? `${base} border-primary text-primary`\n : `${base} border-transparent text-(--f-text-muted-color) hover:text-(--f-text-hover-color) hover:border-(--f-content-border-color) hover:bg-(--f-content-hover-background)/60`;\n });\n\n buttonEl(): HTMLButtonElement | undefined {\n return this.buttonRef()?.nativeElement;\n }\n\n focusButton(): void {\n this.buttonRef()?.nativeElement.focus();\n }\n\n onClick(): void {\n if (!this.disabled()) this.ctx.setActive(this.value());\n }\n}\n\n// ─── TabPanels — wrapper around individual panels ─────────────────────────────\n@Component({\n selector: 'f-tabpanels',\n template: `<div class=\"pt-5\"><ng-content /></div>`,\n})\nexport class TabPanelsComponent {}\n\n// ─── TabPanel — renders content only when active ──────────────────────────────\n@Component({\n selector: 'f-tabpanel',\n host: {\n role: 'tabpanel',\n '[id]': 'panelId()',\n '[attr.aria-labelledby]': 'triggerId()',\n },\n template: `@if (isActive()) { <ng-content /> }`,\n})\nexport class TabPanelComponent {\n private readonly ctx = inject(TabsContext);\n readonly value = input<string | number>('');\n readonly header = input<string>('');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly isActive = computed(() => this.ctx.active() === this.value());\n\n readonly triggerId = computed(() => `f-tab-trigger-${this.value()}`);\n readonly panelId = computed(() => `f-tab-panel-${this.value()}`);\n}\n","import { Injectable, signal } from '@angular/core';\n\n@Injectable()\nexport class AccordionContext {\n private readonly _values = signal<(string | number)[]>([]);\n readonly values = this._values.asReadonly();\n private readonly _multiple = signal(false);\n readonly multiple = this._multiple.asReadonly();\n\n isOpen(v: string | number): boolean {\n return this._values().includes(v);\n }\n\n toggle(v: string | number): void {\n if (this.multiple()) {\n const cur = this._values();\n this._values.set(cur.includes(v) ? cur.filter(x => x !== v) : [...cur, v]);\n } else {\n this._values.set(this._values().includes(v) ? [] : [v]);\n }\n }\n\n setValues(vals: (string | number)[]): void {\n this._values.set(vals);\n }\n\n setMultiple(v: boolean): void {\n this._multiple.set(v);\n }\n}\n\n@Injectable()\nexport class AccordionPanelCtx {\n private readonly _open = signal(false);\n readonly open = this._open.asReadonly();\n private _toggleFn: () => void = () => this._open.update(v => !v);\n\n setToggleFn(fn: () => void): void { this._toggleFn = fn; }\n toggle(): void { this._toggleFn(); }\n setOpen(v: boolean): void { this._open.set(v); }\n}\n","import {\n booleanAttribute,\n Component,\n effect,\n inject,\n input,\n model,\n OnInit,\n output,\n} from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { AccordionContext, AccordionPanelCtx } from './accordion.context';\n\n// ─── Accordion root — provides context ────────────────────────────────────────\n@Component({\n selector: 'f-accordion',\n providers: [AccordionContext],\n host: {\n class: 'block',\n },\n template: `<div\n class=\"border border-(--f-content-border-color) rounded-lg overflow-hidden shadow-sm bg-(--f-content-background)\"\n >\n <ng-content />\n </div>`,\n})\nexport class AccordionComponent implements OnInit {\n readonly multiple = input(false, { transform: booleanAttribute });\n readonly value = model<string | number | (string | number)[] | null>(null);\n readonly onOpen = output<{ value: string | number }>();\n readonly onClose = output<{ value: string | number }>();\n\n private readonly ctx = inject(AccordionContext);\n\n ngOnInit(): void {\n this.ctx.setMultiple(this.multiple());\n const v = this.value();\n if (v != null) {\n this.ctx.setValues(Array.isArray(v) ? v : [v]);\n }\n }\n\n constructor() {\n effect(() => {\n const v = this.value();\n if (v != null) {\n this.ctx.setValues(Array.isArray(v) ? v : [v]);\n }\n });\n }\n}\n\n// ─── AccordionPanel — provides panel-level context ────────────────────────────\n@Component({\n selector: 'f-accordion-panel',\n providers: [AccordionPanelCtx],\n template: `<div\n class=\"border-b border-(--f-content-border-color) last:border-b-0\"\n >\n <ng-content />\n </div>`,\n})\nexport class AccordionPanelComponent implements OnInit {\n readonly value = input<string | number>('');\n readonly disabled = input(false, { transform: booleanAttribute });\n\n private readonly panelCtx = inject(AccordionPanelCtx);\n private readonly accordionCtx = inject(AccordionContext, { optional: true });\n\n ngOnInit(): void {\n this.panelCtx.setToggleFn(() => {\n if (this.accordionCtx) {\n this.accordionCtx.toggle(this.value());\n } else {\n this.panelCtx.setOpen(!this.panelCtx.open());\n }\n });\n }\n\n constructor() {\n effect(() => {\n if (this.accordionCtx) {\n this.panelCtx.setOpen(this.accordionCtx.isOpen(this.value()));\n }\n });\n }\n}\n\n// ─── AccordionHeader — reads panel context, triggers toggle ───────────────────\n@Component({\n selector: 'f-accordion-header',\n imports: [UiIconComponent],\n template: `\n <button\n type=\"button\"\n class=\"w-full flex items-center justify-between px-5 py-3.5 text-sm font-semibold text-(--f-text-color) hover:bg-(--f-content-hover-background)/80 transition-all duration-[var(--f-transition-duration)] text-left select-none focus:outline-none focus-visible:ring-focus cursor-pointer\"\n (click)=\"panelCtx.toggle()\"\n >\n <span class=\"flex-1 tracking-tight\"><ng-content /></span>\n <ui-icon\n name=\"chevron-down\"\n class=\"text-xs text-(--f-text-muted-color) ml-3 shrink-0 transition-transform duration-200\"\n [class.rotate-180]=\"panelCtx.open()\"\n ></ui-icon>\n </button>\n `,\n})\nexport class AccordionHeaderComponent {\n readonly panelCtx = inject(AccordionPanelCtx);\n}\n\n// ─── AccordionContent — shows/hides via panel context ─────────────────────────\n@Component({\n selector: 'f-accordion-content',\n host: { class: 'block' },\n template: `\n <div\n class=\"grid [transition:grid-template-rows_220ms_ease]\"\n [style.grid-template-rows]=\"panelCtx.open() ? '1fr' : '0fr'\"\n >\n <div class=\"overflow-hidden\">\n <div\n class=\"px-5 pb-5 pt-1 text-sm text-(--f-text-muted-color) leading-relaxed\"\n >\n <ng-content />\n </div>\n </div>\n </div>\n `,\n})\nexport class AccordionContentComponent {\n readonly panelCtx = inject(AccordionPanelCtx);\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n AfterViewInit,\n Component,\n effect,\n ElementRef,\n inject,\n input,\n OnDestroy,\n PLATFORM_ID,\n viewChild,\n} from '@angular/core';\nimport { Chart, registerables } from 'chart.js';\n\n@Component({\n selector: 'f-chart',\n host: {\n class: 'block',\n },\n template: `<canvas #canvas></canvas>`,\n})\nexport class ChartComponent implements AfterViewInit, OnDestroy {\n private readonly platformId = inject(PLATFORM_ID);\n\n readonly type = input<string>('bar');\n readonly data = input<unknown>(null);\n readonly options = input<unknown>({});\n readonly width = input<string>('');\n readonly height = input<string>('300');\n\n readonly canvasRef = viewChild<ElementRef<HTMLCanvasElement>>('canvas');\n private chart: Chart | null = null;\n private currentType: string | null = null;\n\n constructor() {\n if (isPlatformBrowser(this.platformId)) {\n Chart.register(...registerables);\n }\n\n effect(() => {\n const type = this.type();\n const data = this.data();\n const options = this.options();\n if (!this.chart) return;\n\n if (this.currentType !== null && type !== this.currentType) {\n this.recreateChart(type, data, options);\n return;\n }\n\n if (data) this.chart.data = data as Chart['data'];\n this.chart.options = (options ?? {}) as Chart['options'];\n this.chart.update();\n });\n }\n\n ngAfterViewInit(): void {\n if (!isPlatformBrowser(this.platformId)) return;\n const canvas = this.canvasRef()?.nativeElement;\n if (!canvas) return;\n if (this.height()) canvas.style.height = this.height() + 'px';\n if (this.width()) canvas.style.width = this.width() + 'px';\n\n this.recreateChart(this.type(), this.data(), this.options());\n }\n\n private recreateChart(type: string, data: unknown, options: unknown): void {\n const canvas = this.canvasRef()?.nativeElement;\n if (!canvas) return;\n this.chart?.destroy();\n this.currentType = type;\n this.chart = new Chart(canvas, {\n type: type as never,\n data: (data ?? { datasets: [] }) as Chart['data'],\n options: (options ?? {}) as Chart['options'],\n });\n }\n\n ngOnDestroy(): void {\n this.chart?.destroy();\n }\n}\n","import { booleanAttribute, Component, computed, input, output } from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\nexport interface PaginatorState {\n first: number;\n rows: number;\n page: number;\n pageCount: number;\n}\n\n@Component({\n selector: 'f-paginator',\n imports: [UiIconComponent],\n template: `\n <div class=\"flex items-center justify-between py-3 px-1 text-sm text-(--f-text-muted-color) select-none gap-3 flex-wrap\">\n <div class=\"flex items-center gap-2\">\n @if (rowsPerPageOptions().length > 0) {\n <span class=\"text-xs text-(--f-text-muted-color)\">Rows:</span>\n <div class=\"relative\">\n <select\n class=\"h-7 pl-2 pr-6 text-xs font-medium rounded-lg border border-(--f-content-border-color) bg-(--f-content-background) text-(--f-text-color) cursor-pointer hover:border-(--f-content-border-color) focus:outline-none focus:border-primary focus:ring-focus transition-colors duration-[var(--f-transition-duration)] appearance-none\"\n (change)=\"onRowsChange($any($event.target).value)\"\n >\n @for (opt of rowsPerPageOptions(); track opt) {\n <option [value]=\"opt\" [selected]=\"opt === rows()\">{{ opt }}</option>\n }\n </select>\n <ui-icon name=\"chevron-down\" class=\"absolute right-1.5 top-1/2 -translate-y-1/2 pointer-events-none text-(--f-text-muted-color) text-[9px]\"></ui-icon>\n </div>\n }\n @if (showCurrentPageReport()) {\n <span class=\"text-xs font-medium\">{{ reportText() }}</span>\n }\n </div>\n <div class=\"flex items-center gap-0.5\">\n <button\n class=\"w-8 h-8 flex items-center justify-center rounded-lg text-(--f-text-muted-color) hover:bg-(--f-content-hover-background) hover:text-(--f-text-hover-color) transition-all duration-[var(--f-transition-duration)] cursor-pointer disabled:cursor-default disabled:opacity-30 disabled:pointer-events-none\"\n [disabled]=\"currentPage() === 0\" (click)=\"goTo(0)\"\n ><ui-icon name=\"chevrons-left\" class=\"text-xs\"></ui-icon></button>\n <button\n class=\"w-8 h-8 flex items-center justify-center rounded-lg text-(--f-text-muted-color) hover:bg-(--f-content-hover-background) hover:text-(--f-text-hover-color) transition-all duration-[var(--f-transition-duration)] cursor-pointer disabled:cursor-default disabled:opacity-30 disabled:pointer-events-none\"\n [disabled]=\"currentPage() === 0\" (click)=\"goTo(currentPage() - 1)\"\n ><ui-icon name=\"chevron-left\" class=\"text-xs\"></ui-icon></button>\n @for (p of visiblePages(); track p) {\n <button [class]=\"pageClass(p)\" (click)=\"goTo(p)\">{{ p + 1 }}</button>\n }\n <button\n class=\"w-8 h-8 flex items-center justify-center rounded-lg text-(--f-text-muted-color) hover:bg-(--f-content-hover-background) hover:text-(--f-text-hover-color) transition-all duration-[var(--f-transition-duration)] cursor-pointer disabled:cursor-default disabled:opacity-30 disabled:pointer-events-none\"\n [disabled]=\"currentPage() === pageCount() - 1\" (click)=\"goTo(currentPage() + 1)\"\n ><ui-icon name=\"chevron-right\" class=\"text-xs\"></ui-icon></button>\n <button\n class=\"w-8 h-8 flex items-center justify-center rounded-lg text-(--f-text-muted-color) hover:bg-(--f-content-hover-background) hover:text-(--f-text-hover-color) transition-all duration-[var(--f-transition-duration)] cursor-pointer disabled:cursor-default disabled:opacity-30 disabled:pointer-events-none\"\n [disabled]=\"currentPage() === pageCount() - 1\" (click)=\"goTo(pageCount() - 1)\"\n ><ui-icon name=\"chevrons-right\" class=\"text-xs\"></ui-icon></button>\n </div>\n </div>\n `,\n})\nexport class PaginatorComponent {\n readonly first = input<number>(0);\n readonly rows = input<number>(10);\n readonly totalRecords = input<number>(0);\n readonly rowsPerPageOptions = input<number[]>([]);\n readonly showCurrentPageReport = input(true, { transform: booleanAttribute });\n readonly currentPageReportTemplate = input<string>('');\n readonly onPageChange = output<PaginatorState>();\n\n readonly currentPage = computed(() => Math.floor(this.first() / this.rows()));\n readonly pageCount = computed(() => Math.max(1, Math.ceil(this.totalRecords() / this.rows())));\n readonly reportText = computed(() => {\n const first = this.first() + 1;\n const last = Math.min(this.first() + this.rows(), this.totalRecords());\n const totalRecords = this.totalRecords();\n const template = this.currentPageReportTemplate();\n if (!template) return `Showing ${first}–${last} of ${totalRecords}`;\n return template\n .replace(/\\{first\\}/g, String(first))\n .replace(/\\{last\\}/g, String(last))\n .replace(/\\{totalRecords\\}/g, String(totalRecords))\n .replace(/\\{rows\\}/g, String(this.rows()))\n .replace(/\\{currentPage\\}/g, String(this.currentPage() + 1))\n .replace(/\\{totalPages\\}/g, String(this.pageCount()));\n });\n readonly visiblePages = computed(() => {\n const cur = this.currentPage();\n const total = this.pageCount();\n const start = Math.max(0, cur - 2);\n const end = Math.min(total - 1, cur + 2);\n return Array.from({ length: end - start + 1 }, (_, i) => start + i);\n });\n\n pageClass(p: number): string {\n return p === this.currentPage()\n ? 'w-8 h-8 rounded-lg text-xs font-semibold bg-(--f-highlight-background) text-(--f-highlight-color) shadow-sm flex items-center justify-center cursor-pointer'\n : 'w-8 h-8 rounded-lg text-xs font-medium text-(--f-text-muted-color) hover:bg-(--f-content-hover-background) hover:text-(--f-text-hover-color) transition-all duration-[var(--f-transition-duration)] flex items-center justify-center cursor-pointer';\n }\n\n goTo(page: number): void {\n const rows = this.rows();\n this.onPageChange.emit({ first: page * rows, rows, page, pageCount: this.pageCount() });\n }\n\n onRowsChange(value: string): void {\n const newRows = Number(value);\n const newPageCount = Math.max(1, Math.ceil(this.totalRecords() / newRows));\n this.onPageChange.emit({ first: 0, rows: newRows, page: 0, pageCount: newPageCount });\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n Component,\n computed,\n contentChild,\n input,\n model,\n OnInit,\n output,\n signal,\n TemplateRef,\n} from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport {\n PaginatorComponent,\n PaginatorState,\n} from '../paginator/paginator.component';\n\nexport interface TableLazyLoadEvent {\n first: number;\n rows: number;\n sortField?: string;\n sortOrder?: number;\n}\n\nexport interface TableSortEvent {\n sortField: string | null;\n sortOrder: number;\n}\n\n@Component({\n selector: 'f-table',\n imports: [UiIconComponent, NgTemplateOutlet, PaginatorComponent],\n styles: [\n `\n :host ::ng-deep thead tr th {\n padding: 0.8125rem 1rem;\n font-size: 0.875rem;\n font-weight: 600;\n letter-spacing: 0.07em;\n text-transform: uppercase;\n color: var(--f-text-muted-color);\n white-space: nowrap;\n background: transparent;\n }\n :host ::ng-deep tbody tr {\n transition: background-color var(--f-transition-duration) ease;\n }\n :host.row-hover ::ng-deep tbody tr:hover {\n background-color: var(--f-content-hover-background);\n }\n :host ::ng-deep tbody tr td {\n padding: 0.8125rem 1rem;\n color: var(--f-text-color);\n font-size: 0.875rem;\n vertical-align: middle;\n }\n `,\n ],\n host: {\n '[class.row-hover]': 'rowHover()',\n '[class]': 'styleClass()',\n },\n template: `\n <div\n class=\"w-full rounded-lg border border-(--f-content-border-color) bg-(--f-content-background) shadow-sm\"\n [class]=\"scrollable() ? 'overflow-auto max-h-[28rem]' : 'overflow-x-auto'\"\n >\n @if (globalFilterFields().length > 0) {\n <div\n [class]=\"\n 'p-2 border-b border-(--f-content-border-color) ' +\n (scrollable()\n ? 'sticky top-0 z-10 bg-(--f-content-background)'\n : '')\n \"\n >\n <div\n class=\"flex items-center gap-2 px-2 py-1.5 max-w-xs bg-(--f-content-hover-background) rounded-lg border border-(--f-content-border-color)\"\n >\n <ui-icon\n name=\"search\"\n class=\"text-xs text-(--f-text-muted-color) shrink-0\"\n ></ui-icon>\n <input\n type=\"text\"\n class=\"flex-1 text-sm bg-transparent focus:outline-none text-(--f-text-color) placeholder:text-(--f-form-field-placeholder-color)\"\n placeholder=\"Search...\"\n [value]=\"filterText()\"\n (input)=\"onFilterInput($any($event.target).value)\"\n />\n </div>\n </div>\n }\n @if (loading()) {\n <div\n class=\"flex flex-col items-center justify-center py-20 text-(--f-text-muted-color) gap-3\"\n >\n <ui-icon\n name=\"loader-circle\"\n [spin]=\"true\"\n class=\"text-2xl text-primary/60\"\n ></ui-icon>\n <span class=\"text-sm text-(--f-text-muted-color)\"\n >Loading data...</span\n >\n </div>\n } @else {\n <table\n class=\"w-full text-sm text-left border-collapse\"\n [style]=\"tableStyle()\"\n >\n <thead\n class=\"bg-(--f-content-hover-background) border-b border-(--f-content-border-color)\"\n [class.sticky]=\"scrollable()\"\n [class.top-0]=\"scrollable()\"\n [class.z-10]=\"scrollable()\"\n >\n @if (headerTemplate()) {\n <ng-container [ngTemplateOutlet]=\"headerTemplate()\" />\n }\n </thead>\n <tbody class=\"divide-y divide-(--f-content-border-color)\">\n @if (pageRows().length > 0) {\n @for (\n row of pageRows();\n track trackByRow($index, row);\n let i = $index\n ) {\n @if (bodyTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"bodyTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: row, rowIndex: i }\"\n />\n }\n }\n } @else {\n @if (emptyTemplate()) {\n <ng-container [ngTemplateOutlet]=\"emptyTemplate()\" />\n } @else {\n <tr>\n <td\n [attr.colspan]=\"100\"\n class=\"text-center py-16 text-(--f-text-muted-color)\"\n >\n <div class=\"flex flex-col items-center gap-3\">\n <div\n class=\"w-12 h-12 rounded-full bg-(--f-content-hover-background) flex items-center justify-center\"\n >\n <ui-icon\n name=\"inbox\"\n class=\"text-xl text-(--f-text-muted-color)\"\n ></ui-icon>\n </div>\n <div>\n <p\n class=\"text-sm font-medium text-(--f-text-muted-color)\"\n >\n No records found\n </p>\n <p class=\"text-xs text-(--f-text-muted-color) mt-0.5\">\n Try adjusting your filters\n </p>\n </div>\n </div>\n </td>\n </tr>\n }\n }\n </tbody>\n </table>\n }\n @if (paginator() && effectiveTotalRecords() > 0) {\n <div class=\"border-t border-(--f-content-border-color) px-4\">\n <f-paginator\n [first]=\"currentFirst()\"\n [rows]=\"currentRows()\"\n [totalRecords]=\"effectiveTotalRecords()\"\n [rowsPerPageOptions]=\"rowsPerPageOptions()\"\n [showCurrentPageReport]=\"showCurrentPageReport()\"\n [currentPageReportTemplate]=\"currentPageReportTemplate()\"\n (onPageChange)=\"handlePageChange($event)\"\n />\n </div>\n }\n </div>\n `,\n})\nexport class TableComponent implements OnInit {\n readonly value = input<unknown[] | null>(null);\n readonly lazy = input(false, { transform: booleanAttribute });\n readonly loading = input(false, { transform: booleanAttribute });\n readonly rows = input<number>(10);\n readonly totalRecords = input<number>(0);\n readonly rowHover = input(false, { transform: booleanAttribute });\n readonly dataKey = input<string>('id');\n readonly scrollable = input(false, { transform: booleanAttribute });\n readonly paginator = input(false, { transform: booleanAttribute });\n readonly first = input<number>(0);\n readonly rowsPerPageOptions = input<number[]>([]);\n readonly showCurrentPageReport = input(false, {\n transform: booleanAttribute,\n });\n readonly currentPageReportTemplate = input<string>('');\n readonly tableStyle = input<Record<string, string> | null>(null);\n readonly styleClass = input<string>('');\n readonly globalFilterFields = input<string[]>([]);\n\n readonly sortField = model<string | null>(null);\n readonly sortOrder = model<number>(1);\n\n readonly onLazyLoad = output<TableLazyLoadEvent>();\n readonly onSort = output<TableSortEvent>();\n\n readonly headerTemplate = contentChild<TemplateRef<unknown>>('header');\n readonly bodyTemplate = contentChild<TemplateRef<unknown>>('body');\n readonly emptyTemplate = contentChild<TemplateRef<unknown>>('emptymessage');\n\n private readonly _currentFirst = signal(0);\n private readonly _currentRows = signal(10);\n readonly currentFirst = this._currentFirst.asReadonly();\n readonly currentRows = this._currentRows.asReadonly();\n\n private readonly _filterText = signal('');\n readonly filterText = this._filterText.asReadonly();\n\n readonly filteredValue = computed(() => {\n const rows = this.value() ?? [];\n const fields = this.globalFilterFields();\n const query = this.filterText().trim().toLowerCase();\n if (!fields.length || !query) return rows;\n return rows.filter((row) =>\n fields.some((field) => {\n const val = (row as Record<string, unknown>)?.[field];\n return val != null && String(val).toLowerCase().includes(query);\n }),\n );\n });\n\n readonly sortedValue = computed(() => {\n const rows = this.filteredValue();\n const field = this.sortField();\n if (this.lazy() || !field) return rows;\n const order = this.sortOrder();\n return [...rows].sort(\n (a, b) =>\n this.compareValues(\n (a as Record<string, unknown>)?.[field],\n (b as Record<string, unknown>)?.[field],\n ) * order,\n );\n });\n\n readonly effectiveTotalRecords = computed(() =>\n this.lazy() ? this.totalRecords() : this.filteredValue().length,\n );\n\n readonly pageRows = computed(() => {\n const rows = this.sortedValue();\n if (this.lazy() || !this.paginator()) return rows;\n const start = this.currentFirst();\n return rows.slice(start, start + this.currentRows());\n });\n\n ngOnInit(): void {\n this._currentFirst.set(this.first());\n this._currentRows.set(this.rows());\n if (this.lazy()) {\n this.onLazyLoad.emit(this.buildLazyEvent(this.first(), this.rows()));\n }\n }\n\n onFilterInput(v: string): void {\n this._filterText.set(v);\n }\n\n trackByRow(index: number, row: unknown): unknown {\n const key = this.dataKey();\n const value = (row as Record<string, unknown>)?.[key];\n return value ?? index;\n }\n\n handlePageChange(event: PaginatorState): void {\n this._currentFirst.set(event.first);\n this._currentRows.set(event.rows);\n if (this.lazy()) {\n this.onLazyLoad.emit(this.buildLazyEvent(event.first, event.rows));\n }\n }\n\n sort(field: string): void {\n if (!field) return;\n if (this.sortField() !== field) {\n this.sortField.set(field);\n this.sortOrder.set(1);\n } else if (this.sortOrder() === 1) {\n this.sortOrder.set(-1);\n } else {\n this.sortField.set(null);\n this.sortOrder.set(1);\n }\n\n this.onSort.emit({\n sortField: this.sortField(),\n sortOrder: this.sortOrder(),\n });\n\n if (this.lazy()) {\n this.onLazyLoad.emit(\n this.buildLazyEvent(this.currentFirst(), this.currentRows()),\n );\n }\n }\n\n private buildLazyEvent(first: number, rows: number): TableLazyLoadEvent {\n const field = this.sortField();\n return {\n first,\n rows,\n ...(field ? { sortField: field, sortOrder: this.sortOrder() } : {}),\n };\n }\n\n private compareValues(a: unknown, b: unknown): number {\n if (a == null && b == null) return 0;\n if (a == null) return -1;\n if (b == null) return 1;\n if (a instanceof Date && b instanceof Date)\n return a.getTime() - b.getTime();\n if (typeof a === 'number' && typeof b === 'number') return a - b;\n return String(a).localeCompare(String(b), undefined, {\n numeric: true,\n sensitivity: 'base',\n });\n }\n}\n","import { Component, computed, Directive, inject, input } from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { TableComponent } from './table.component';\n\n@Directive({\n selector: '[fSortableColumn]',\n host: {\n class: 'cursor-pointer select-none hover:bg-(--f-content-hover-background) transition-colors',\n '(click)': 'onClick()',\n },\n})\nexport class SortableColumnDirective {\n readonly fSortableColumn = input<string>('');\n private readonly table = inject(TableComponent, { optional: true });\n\n onClick(): void {\n const field = this.fSortableColumn();\n if (field) this.table?.sort(field);\n }\n}\n\n@Component({\n selector: 'f-sorticon',\n imports: [UiIconComponent],\n template: `\n <span class=\"inline-flex flex-col ml-1 text-[8px] leading-none\">\n <ui-icon name=\"chevron-up\" [class]=\"direction() === 1 ? 'opacity-100 text-primary' : 'opacity-40'\"></ui-icon>\n <ui-icon name=\"chevron-down\" [class]=\"direction() === -1 ? 'opacity-100 text-primary' : 'opacity-40'\"></ui-icon>\n </span>\n `,\n})\nexport class SortIconComponent {\n readonly field = input<string>('');\n private readonly table = inject(TableComponent, { optional: true });\n\n readonly direction = computed(() =>\n this.table?.sortField() === this.field() ? (this.table?.sortOrder() ?? 0) : 0,\n );\n}\n","import { Directive, ElementRef, inject, input, OnDestroy } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\n@Directive({\n selector: '[fStyleClass]',\n host: { '(click)': 'onClick()' },\n})\nexport class StyleClassDirective implements OnDestroy {\n private readonly el = inject(ElementRef<HTMLElement>);\n private readonly doc = inject(DOCUMENT);\n\n readonly fStyleClass = input<string>('');\n readonly enterFromClass = input<string>('');\n readonly enterActiveClass = input<string>('');\n readonly enterToClass = input<string>('');\n readonly leaveFromClass = input<string>('');\n readonly leaveActiveClass = input<string>('');\n readonly leaveToClass = input<string>('');\n readonly hideOnOutsideClick = input(false);\n readonly toggleClass = input<string>('');\n\n private outsideClickListener: ((e: MouseEvent) => void) | null = null;\n\n onClick(): void {\n const target = this.resolveTarget();\n if (!target) return;\n\n const toggle = this.toggleClass();\n if (toggle) {\n toggle.split(' ').filter(Boolean).forEach(c => target.classList.toggle(c));\n return;\n }\n\n const enterFrom = this.enterFromClass() || 'hidden';\n const isHidden = enterFrom.split(' ').some(c => target.classList.contains(c));\n\n if (isHidden) {\n this.enter(target);\n } else {\n this.leave(target);\n }\n }\n\n ngOnDestroy(): void {\n this.unbindOutsideClick();\n }\n\n private enter(target: Element): void {\n const enterFrom = this.enterFromClass() || 'hidden';\n const enterActive = this.enterActiveClass();\n const enterTo = this.enterToClass();\n\n enterFrom.split(' ').filter(Boolean).forEach(c => target.classList.remove(c));\n\n if (enterActive) {\n enterActive.split(' ').filter(Boolean).forEach(c => target.classList.add(c));\n target.addEventListener('animationend', () => {\n enterActive.split(' ').filter(Boolean).forEach(c => target.classList.remove(c));\n if (enterTo) enterTo.split(' ').filter(Boolean).forEach(c => target.classList.add(c));\n }, { once: true });\n }\n\n if (this.hideOnOutsideClick()) {\n setTimeout(() => this.bindOutsideClick(target), 0);\n }\n }\n\n private leave(target: Element): void {\n const leaveActive = this.leaveActiveClass();\n const leaveTo = this.leaveToClass() || 'hidden';\n\n if (leaveActive) {\n leaveActive.split(' ').filter(Boolean).forEach(c => target.classList.add(c));\n target.addEventListener('animationend', () => {\n leaveActive.split(' ').filter(Boolean).forEach(c => target.classList.remove(c));\n leaveTo.split(' ').filter(Boolean).forEach(c => target.classList.add(c));\n }, { once: true });\n } else {\n leaveTo.split(' ').filter(Boolean).forEach(c => target.classList.add(c));\n }\n\n this.unbindOutsideClick();\n }\n\n private bindOutsideClick(target: Element): void {\n this.unbindOutsideClick();\n this.outsideClickListener = (e: MouseEvent) => {\n const clicked = e.target as Node;\n if (!this.el.nativeElement.contains(clicked) && !target.contains(clicked)) {\n this.leave(target);\n }\n };\n this.doc.addEventListener('click', this.outsideClickListener);\n }\n\n private unbindOutsideClick(): void {\n if (this.outsideClickListener) {\n this.doc.removeEventListener('click', this.outsideClickListener);\n this.outsideClickListener = null;\n }\n }\n\n private resolveTarget(): Element | null {\n const selector = this.fStyleClass();\n if (!selector) return null;\n const el = this.el.nativeElement;\n if (selector === '@next') return el.nextElementSibling;\n if (selector === '@prev') return el.previousElementSibling;\n if (selector === '@parent') return el.parentElement;\n if (selector === '@grandparent') return el.parentElement?.parentElement ?? null;\n return this.doc.querySelector(selector);\n }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n booleanAttribute,\n Directive,\n ElementRef,\n inject,\n input,\n OnDestroy,\n PLATFORM_ID,\n Renderer2,\n} from '@angular/core';\n\n@Directive({\n selector: '[fTooltip]',\n host: {\n '(mouseenter)': 'scheduleShow()',\n '(mouseleave)': 'scheduleHide()',\n '(focus)': 'onFocus()',\n '(blur)': 'scheduleHide()',\n '(click)': 'hide()',\n },\n})\nexport class TooltipDirective implements OnDestroy {\n private readonly el = inject(ElementRef<HTMLElement>);\n private readonly renderer = inject(Renderer2);\n private readonly platformId = inject(PLATFORM_ID);\n\n readonly fTooltip = input<string>('');\n readonly tooltipPosition = input<'top' | 'bottom' | 'left' | 'right'>('top');\n readonly tooltipStyleClass = input<string>('');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly tooltipEvent = input<'hover' | 'focus' | 'both'>('hover');\n readonly showDelay = input<number>(0);\n readonly hideDelay = input<number>(0);\n\n private tip: HTMLElement | null = null;\n private showTimer: ReturnType<typeof setTimeout> | null = null;\n private hideTimer: ReturnType<typeof setTimeout> | null = null;\n private readonly onScrollOrResize = (): void => this.hide();\n\n onFocus(): void {\n if (this.tooltipEvent() === 'hover') return;\n this.scheduleShow();\n }\n\n scheduleShow(): void {\n if (this.hideTimer) { clearTimeout(this.hideTimer); this.hideTimer = null; }\n if (this.showTimer) clearTimeout(this.showTimer);\n const delay = this.showDelay();\n if (delay > 0) {\n this.showTimer = setTimeout(() => this.show(), delay);\n } else {\n this.show();\n }\n }\n\n scheduleHide(): void {\n if (this.showTimer) { clearTimeout(this.showTimer); this.showTimer = null; }\n if (this.hideTimer) clearTimeout(this.hideTimer);\n const delay = this.hideDelay();\n if (delay > 0) {\n this.hideTimer = setTimeout(() => this.hide(), delay);\n } else {\n this.hide();\n }\n }\n\n show(): void {\n if (!isPlatformBrowser(this.platformId) || !this.fTooltip() || this.disabled() || this.tip) return;\n this.tip = this.renderer.createElement('div');\n this.renderer.setProperty(this.tip, 'textContent', this.fTooltip());\n if (this.tooltipStyleClass()) {\n for (const cls of this.tooltipStyleClass().split(/\\s+/).filter(Boolean)) {\n this.renderer.addClass(this.tip, cls);\n }\n }\n this.renderer.setStyle(this.tip, 'position', 'fixed');\n this.renderer.setStyle(this.tip, 'zIndex', '9999');\n this.renderer.setStyle(this.tip, 'padding', '4px 10px');\n this.renderer.setStyle(this.tip, 'background', 'var(--f-tooltip-background, rgba(15, 23, 42, 0.85))');\n this.renderer.setStyle(this.tip, 'backdropFilter', 'blur(4px)');\n this.renderer.setStyle(this.tip, 'color', 'var(--f-tooltip-color, #f8fafc)');\n this.renderer.setStyle(this.tip, 'borderRadius', '6px');\n this.renderer.setStyle(this.tip, 'fontSize', '11px');\n this.renderer.setStyle(this.tip, 'fontWeight', '500');\n this.renderer.setStyle(this.tip, 'letterSpacing', '0.01em');\n this.renderer.setStyle(this.tip, 'lineHeight', '1.5');\n this.renderer.setStyle(this.tip, 'pointerEvents', 'none');\n this.renderer.setStyle(this.tip, 'whiteSpace', 'nowrap');\n this.renderer.setStyle(this.tip, 'boxShadow', '0 2px 8px rgba(0,0,0,0.15)');\n this.renderer.appendChild(document.body, this.tip);\n this.position();\n window.addEventListener('scroll', this.onScrollOrResize, true);\n window.addEventListener('resize', this.onScrollOrResize);\n }\n\n hide(): void {\n if (this.showTimer) { clearTimeout(this.showTimer); this.showTimer = null; }\n if (this.hideTimer) { clearTimeout(this.hideTimer); this.hideTimer = null; }\n if (this.tip && isPlatformBrowser(this.platformId)) {\n this.renderer.removeChild(document.body, this.tip);\n this.tip = null;\n window.removeEventListener('scroll', this.onScrollOrResize, true);\n window.removeEventListener('resize', this.onScrollOrResize);\n }\n }\n\n private position(): void {\n if (!this.tip) return;\n const rect = this.el.nativeElement.getBoundingClientRect();\n const pos = this.tooltipPosition();\n const tw = this.tip.offsetWidth;\n const th = this.tip.offsetHeight;\n const gap = 8;\n\n let top = 0, left = 0;\n if (pos === 'top') { top = rect.top - th - gap; left = rect.left + rect.width / 2 - tw / 2; }\n if (pos === 'bottom') { top = rect.bottom + gap; left = rect.left + rect.width / 2 - tw / 2; }\n if (pos === 'left') { top = rect.top + rect.height / 2 - th / 2; left = rect.left - tw - gap; }\n if (pos === 'right') { top = rect.top + rect.height / 2 - th / 2; left = rect.right + gap; }\n\n left = Math.max(8, Math.min(left, window.innerWidth - tw - 8));\n top = Math.max(8, Math.min(top, window.innerHeight - th - 8));\n\n this.renderer.setStyle(this.tip, 'top', `${top}px`);\n this.renderer.setStyle(this.tip, 'left', `${left}px`);\n }\n\n ngOnDestroy(): void { this.hide(); }\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n ElementRef,\n forwardRef,\n inject,\n input,\n numberAttribute,\n output,\n signal,\n} from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\n\nexport interface AutoCompleteCompleteEvent {\n originalEvent: Event;\n query: string;\n}\n\nexport interface AutoCompleteSelectEvent {\n originalEvent: Event;\n value: unknown;\n}\n\n@Component({\n selector: 'f-autocomplete',\n imports: [UiIconComponent, FormsModule],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => AutoCompleteComponent), multi: true }],\n host: {\n class: 'relative block w-full',\n '(document:click)': 'onDocumentClick($event)',\n },\n template: `\n <div class=\"relative w-full\" [class.opacity-60]=\"disabled()\" [class.pointer-events-none]=\"disabled()\">\n @if (multiple()) {\n <div\n class=\"min-h-[2.375rem] flex flex-wrap items-center gap-1.5 px-2 py-1.5 border rounded-lg bg-(--f-form-field-background) focus-within:ring-focus transition-all duration-[var(--f-transition-duration)] cursor-text\"\n [class]=\"wrapperClass()\"\n (click)=\"inputEl.focus()\"\n >\n @for (chip of selectedItems(); track $index) {\n <span class=\"inline-flex items-center gap-1 px-2 py-0.5 rounded-md bg-primary/10 text-primary text-xs font-medium\">\n {{ getLabel(chip) }}\n <button type=\"button\" aria-label=\"Remove\" class=\"inline-flex items-center justify-center hover:text-primary-emphasis cursor-pointer\" (click)=\"removeChip($index, $event)\">\n <ui-icon name=\"times\" class=\"text-[10px]\"></ui-icon>\n </button>\n </span>\n }\n <input\n #inputEl\n type=\"text\"\n class=\"flex-1 min-w-[6rem] text-sm bg-transparent focus:outline-none text-(--f-form-field-color) placeholder:text-(--f-form-field-placeholder-color)\"\n [placeholder]=\"selectedItems().length === 0 ? placeholder() : ''\"\n [(ngModel)]=\"query\"\n (ngModelChange)=\"onQueryChange($event)\"\n (keydown)=\"onKeyDown($event)\"\n (focus)=\"_handleFocus()\"\n (blur)=\"_handleBlur()\"\n />\n </div>\n } @else {\n <div class=\"relative\">\n <input\n type=\"text\"\n class=\"w-full px-3 py-2 text-sm border rounded-lg bg-(--f-form-field-background) focus:outline-none focus:ring-focus transition-all duration-[var(--f-transition-duration)]\"\n [class]=\"inputClass()\"\n [placeholder]=\"placeholder()\"\n [(ngModel)]=\"query\"\n (ngModelChange)=\"onQueryChange($event)\"\n (keydown)=\"onKeyDown($event)\"\n (focus)=\"_handleFocus()\"\n (blur)=\"_handleBlur()\"\n />\n @if (dropdown()) {\n <button\n type=\"button\"\n class=\"absolute right-0 top-0 h-full px-3 flex items-center text-(--f-text-muted-color) hover:text-(--f-text-hover-color) border-l border-(--f-content-border-color)\"\n (click)=\"onDropdownButtonClick($event)\"\n >\n <ui-icon name=\"chevron-down\" class=\"text-xs\"></ui-icon>\n </button>\n }\n </div>\n }\n\n @if (open() && filteredSuggestions().length > 0) {\n <div class=\"absolute z-50 w-full mt-1 bg-(--f-overlay-popover-background) border border-(--f-content-border-color) rounded-lg shadow-lg overflow-hidden\">\n <ul class=\"max-h-56 overflow-auto py-1\" role=\"listbox\">\n @for (item of filteredSuggestions(); track $index; let i = $index) {\n <li\n role=\"option\"\n class=\"px-3 py-2 text-sm cursor-pointer flex items-center gap-2 transition-colors\"\n [class]=\"i === activeIndex() ? 'bg-(--f-highlight-background) text-(--f-highlight-color)' : 'text-(--f-text-color) hover:bg-(--f-content-hover-background)'\"\n (mousedown)=\"selectItem($event, item)\"\n >\n <span class=\"flex-1 truncate\">{{ getLabel(item) }}</span>\n </li>\n }\n </ul>\n </div>\n }\n </div>\n `,\n})\nexport class AutoCompleteComponent implements ControlValueAccessor {\n private readonly _el = inject(ElementRef);\n\n onDocumentClick(e: MouseEvent): void {\n if (this.open() && !this._el.nativeElement.contains(e.target)) {\n this._open.set(false);\n }\n }\n\n readonly suggestions = input<unknown[]>([]);\n readonly field = input<string>('label');\n readonly placeholder = input<string>('');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly dropdown = input(false, { transform: booleanAttribute });\n readonly forceSelection = input(false, { transform: booleanAttribute });\n readonly multiple = input(false, { transform: booleanAttribute });\n readonly completeOnFocus = input(false, { transform: booleanAttribute });\n readonly delay = input(300, { transform: numberAttribute });\n readonly minLength = input(1, { transform: numberAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly touched = input(true);\n\n readonly completeMethod = output<AutoCompleteCompleteEvent>();\n readonly onSelect = output<AutoCompleteSelectEvent>();\n readonly onUnselect = output<{ originalEvent: Event; value: unknown }>();\n readonly onDropdownClick = output<MouseEvent>();\n readonly onClear = output<void>();\n readonly focusEvent = output<void>();\n readonly blurEvent = output<void>();\n readonly onChange = output<unknown>();\n\n query = '';\n private readonly _open = signal(false);\n readonly open = this._open.asReadonly();\n private readonly _activeIndex = signal(-1);\n readonly activeIndex = this._activeIndex.asReadonly();\n private readonly _selectedItems = signal<unknown[]>([]);\n readonly selectedItems = this._selectedItems.asReadonly();\n private _value = signal<unknown>(null);\n\n private _onChange: (v: unknown) => void = () => {};\n private _onTouched: () => void = () => {};\n private _debounce?: ReturnType<typeof setTimeout>;\n\n readonly filteredSuggestions = computed(() => this.suggestions() as unknown[]);\n\n readonly inputClass = computed(() => {\n const focused = this.open();\n const base = 'border bg-(--f-form-field-background) text-(--f-form-field-color) placeholder:text-(--f-form-field-placeholder-color)';\n const showInvalid = this.invalid() && this.touched();\n const focus = showInvalid\n ? 'border-red-400'\n : focused\n ? 'border-primary'\n : 'border-(--f-form-field-border-color) hover:border-(--f-form-field-hover-border-color)';\n return `${base} ${focus}`;\n });\n\n onDropdownButtonClick(e: MouseEvent): void {\n this.onDropdownClick.emit(e);\n this.completeMethod.emit({ originalEvent: e, query: this.query });\n this._open.set(true);\n this._activeIndex.set(-1);\n }\n\n readonly wrapperClass = computed(() => {\n const focused = this.open();\n return focused\n ? 'border-primary'\n : 'border-(--f-form-field-border-color) hover:border-(--f-form-field-hover-border-color)';\n });\n\n getLabel(item: unknown): string {\n if (!item) return '';\n if (typeof item !== 'object') return String(item);\n return String((item as Record<string, unknown>)[this.field()] ?? item);\n }\n\n onQueryChange(q: string): void {\n this.query = q;\n clearTimeout(this._debounce);\n if (q.length < this.minLength()) {\n this._open.set(false);\n return;\n }\n this._debounce = setTimeout(() => {\n this.completeMethod.emit({ originalEvent: new Event('input'), query: q });\n this._open.set(true);\n this._activeIndex.set(-1);\n }, this.delay());\n }\n\n _handleFocus(): void {\n this.focusEvent.emit();\n if (this.completeOnFocus() && this.query.length >= this.minLength()) {\n this.completeMethod.emit({ originalEvent: new Event('focus'), query: this.query });\n this._open.set(true);\n }\n }\n\n _handleBlur(): void {\n this.blurEvent.emit();\n setTimeout(() => {\n if (this.forceSelection() && this.filteredSuggestions().length === 0) {\n this.query = '';\n }\n this._open.set(false);\n this._onTouched();\n }, 150);\n }\n\n onKeyDown(e: KeyboardEvent): void {\n const len = this.filteredSuggestions().length;\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n this._activeIndex.update(i => Math.min(i + 1, len - 1));\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n this._activeIndex.update(i => Math.max(i - 1, -1));\n } else if (e.key === 'Enter') {\n e.preventDefault();\n const idx = this.activeIndex();\n if (idx >= 0) this.selectItem(e, this.filteredSuggestions()[idx]);\n } else if (e.key === 'Escape') {\n this._open.set(false);\n }\n }\n\n selectItem(e: Event, item: unknown): void {\n e.preventDefault();\n if (this.multiple()) {\n this._selectedItems.update(arr => [...arr, item]);\n this.query = '';\n const val = this.selectedItems();\n this._onChange(val);\n this.onSelect.emit({ originalEvent: e, value: item });\n this.onChange.emit(val);\n } else {\n this.query = this.getLabel(item);\n this._value.set(item);\n this._onChange(item);\n this.onSelect.emit({ originalEvent: e, value: item });\n this.onChange.emit(item);\n }\n this._open.set(false);\n this._activeIndex.set(-1);\n }\n\n removeChip(idx: number, e: Event): void {\n const removed = this.selectedItems()[idx];\n this._selectedItems.update(arr => arr.filter((_, i) => i !== idx));\n this.onUnselect.emit({ originalEvent: e, value: removed });\n this._onChange(this.selectedItems());\n }\n\n writeValue(val: unknown): void {\n if (this.multiple()) {\n this._selectedItems.set(Array.isArray(val) ? val : []);\n } else {\n this._value.set(val);\n this.query = val ? this.getLabel(val) : '';\n }\n }\n registerOnChange(fn: (v: unknown) => void): void { this._onChange = fn; }\n registerOnTouched(fn: () => void): void { this._onTouched = fn; }\n setDisabledState(): void {}\n}\n","import {\n booleanAttribute,\n Component,\n ElementRef,\n forwardRef,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\n\nexport type ColorFormat = 'hex' | 'rgb' | 'hsb';\nexport type ColorPickerChangeEvent = { value: string };\n\nfunction hexToRgb(hex: string): [number, number, number] {\n const clean = hex.replace('#', '');\n return [\n parseInt(clean.substring(0, 2), 16) || 0,\n parseInt(clean.substring(2, 4), 16) || 0,\n parseInt(clean.substring(4, 6), 16) || 0,\n ];\n}\n\nfunction rgbToHex(r: number, g: number, b: number): string {\n const toHex = (n: number) => Math.max(0, Math.min(255, Math.round(n))).toString(16).padStart(2, '0');\n return `#${toHex(r)}${toHex(g)}${toHex(b)}`.toUpperCase();\n}\n\nfunction rgbToHsb(r: number, g: number, b: number): [number, number, number] {\n r /= 255; g /= 255; b /= 255;\n const max = Math.max(r, g, b), min = Math.min(r, g, b);\n const delta = max - min;\n let h = 0;\n if (delta !== 0) {\n if (max === r) h = ((g - b) / delta) % 6;\n else if (max === g) h = (b - r) / delta + 2;\n else h = (r - g) / delta + 4;\n h *= 60;\n if (h < 0) h += 360;\n }\n const s = max === 0 ? 0 : delta / max;\n return [Math.round(h), Math.round(s * 100), Math.round(max * 100)];\n}\n\nfunction hsbToRgb(h: number, s: number, b: number): [number, number, number] {\n s /= 100; b /= 100;\n const k = (n: number) => (n + h / 60) % 6;\n const f = (n: number) => b * (1 - s * Math.max(0, Math.min(k(n), 4 - k(n), 1)));\n return [Math.round(f(5) * 255), Math.round(f(3) * 255), Math.round(f(1) * 255)];\n}\n\nfunction formatColor(hex: string, format: ColorFormat): string {\n if (format === 'hex') return hex;\n const [r, g, b] = hexToRgb(hex);\n if (format === 'rgb') return `rgb(${r}, ${g}, ${b})`;\n const [h, s, br] = rgbToHsb(r, g, b);\n return `hsb(${h}, ${s}%, ${br}%)`;\n}\n\nfunction parseColor(value: string): string {\n const v = value.trim();\n if (v.startsWith('#')) return v;\n const rgbMatch = v.match(/^rgb\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\)$/i);\n if (rgbMatch) return rgbToHex(+rgbMatch[1], +rgbMatch[2], +rgbMatch[3]);\n const hsbMatch = v.match(/^hsb\\(\\s*(\\d+)\\s*,\\s*(\\d+)%?\\s*,\\s*(\\d+)%?\\s*\\)$/i);\n if (hsbMatch) {\n const [r, g, b] = hsbToRgb(+hsbMatch[1], +hsbMatch[2], +hsbMatch[3]);\n return rgbToHex(r, g, b);\n }\n return '#000000';\n}\n\nconst PRESET_COLORS = [\n '#ef4444', '#f97316', '#eab308', '#22c55e', '#14b8a6', '#06b6d4',\n '#3b82f6', '#8b5cf6', '#ec4899', '#f43f5e', '#000000', '#ffffff',\n '#6b7280', '#1f2937', '#d1d5db', '#fef9c3', '#dcfce7', '#dbeafe',\n];\n\n@Component({\n selector: 'f-colorpicker',\n imports: [FormsModule, NgTemplateOutlet],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => ColorPickerComponent), multi: true }],\n host: {\n class: 'relative inline-block',\n '(document:click)': 'onDocumentClick($event)',\n },\n template: `\n @if (inline()) {\n <ng-container [ngTemplateOutlet]=\"pickerPanel\" />\n } @else {\n <button\n type=\"button\"\n class=\"w-8 h-8 rounded-lg border-2 border-(--f-content-border-color) shadow-sm hover:border-(--f-form-field-hover-border-color) transition-all cursor-pointer overflow-hidden\"\n [style.background-color]=\"value()\"\n [disabled]=\"disabled()\"\n (click)=\"togglePanel()\"\n [attr.aria-label]=\"'Pick color'\"\n ></button>\n\n @if (open()) {\n <div class=\"absolute z-50 top-10 left-0 bg-(--f-overlay-popover-background) border border-(--f-content-border-color) rounded-lg shadow-lg p-3 w-56 space-y-3\">\n <ng-container [ngTemplateOutlet]=\"pickerPanel\" />\n </div>\n }\n }\n\n <ng-template #pickerPanel>\n <div class=\"space-y-3\">\n <div class=\"flex flex-wrap gap-1.5\">\n @for (color of presetColors; track color) {\n <button\n type=\"button\"\n class=\"w-6 h-6 rounded-md border border-(--f-content-border-color) hover:scale-110 transition-transform cursor-pointer\"\n [style.background-color]=\"color\"\n [class.ring-2]=\"value() === color\"\n [class.ring-primary]=\"value() === color\"\n (click)=\"selectPreset(color)\"\n [attr.title]=\"color\"\n ></button>\n }\n </div>\n\n <div class=\"flex items-center gap-2\">\n <div\n class=\"w-7 h-7 rounded-md border border-(--f-content-border-color) shrink-0\"\n [style.background-color]=\"value()\"\n ></div>\n <input\n type=\"text\"\n class=\"flex-1 px-2 py-1 text-xs border border-(--f-form-field-border-color) rounded-lg focus:outline-none focus:border-primary focus:ring-focus font-mono uppercase\"\n [ngModel]=\"hexInput()\"\n (ngModelChange)=\"onHexInput($event)\"\n maxlength=\"7\"\n placeholder=\"#000000\"\n />\n <input\n type=\"color\"\n class=\"w-7 h-7 rounded-md cursor-pointer border-0 p-0\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"onNativeChange($event)\"\n />\n </div>\n </div>\n </ng-template>\n `,\n})\nexport class ColorPickerComponent implements ControlValueAccessor {\n private readonly _el = inject(ElementRef);\n\n onDocumentClick(e: MouseEvent): void {\n if (this.open() && !this._el.nativeElement.contains(e.target)) {\n this._open.set(false);\n }\n }\n\n readonly format = input<ColorFormat>('hex');\n readonly inline = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n\n readonly onChange = output<ColorPickerChangeEvent>();\n\n private readonly _open = signal(false);\n readonly open = this._open.asReadonly();\n private readonly _value = signal('#000000');\n readonly value = this._value.asReadonly();\n\n readonly hexInput = this._value.asReadonly();\n\n readonly presetColors = PRESET_COLORS;\n\n private _onChange: (v: unknown) => void = () => {};\n private _onTouched: () => void = () => {};\n\n togglePanel(): void {\n if (!this.disabled()) this._open.update(v => !v);\n }\n\n selectPreset(color: string): void {\n this._setValue(color);\n this._open.set(false);\n }\n\n onHexInput(hex: string): void {\n const normalized = hex.startsWith('#') ? hex : `#${hex}`;\n if (/^#[0-9a-fA-F]{6}$/.test(normalized)) {\n this._setValue(normalized.toUpperCase());\n }\n }\n\n onNativeChange(color: string): void {\n this._setValue(color.toUpperCase());\n }\n\n private _setValue(hex: string): void {\n this._value.set(hex);\n const formatted = formatColor(hex, this.format());\n this._onChange(formatted);\n this._onTouched();\n this.onChange.emit({ value: formatted });\n }\n\n writeValue(val: unknown): void { this._value.set(val ? parseColor(String(val)) : '#000000'); }\n registerOnChange(fn: (v: unknown) => void): void { this._onChange = fn; }\n registerOnTouched(fn: () => void): void { this._onTouched = fn; }\n setDisabledState(): void {}\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n forwardRef,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport interface ListboxChangeEvent {\n originalEvent: Event;\n value: unknown;\n}\n\n@Component({\n selector: 'f-listbox',\n imports: [UiIconComponent],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => ListboxComponent), multi: true }],\n host: { class: 'block' },\n template: `\n <div\n class=\"w-full border border-(--f-content-border-color) rounded-lg bg-(--f-content-background) overflow-hidden shadow-sm\"\n [class.opacity-60]=\"disabled()\"\n [class.pointer-events-none]=\"disabled()\"\n >\n @if (filter()) {\n <div class=\"p-2 border-b border-(--f-content-border-color)\">\n <div class=\"flex items-center gap-2 px-2 py-1.5 bg-(--f-content-hover-background) rounded-lg border border-(--f-content-border-color)\">\n <ui-icon name=\"search\" class=\"text-xs text-(--f-text-muted-color) shrink-0\"></ui-icon>\n <input\n type=\"text\"\n class=\"flex-1 text-sm bg-transparent focus:outline-none text-(--f-text-color) placeholder:text-(--f-form-field-placeholder-color)\"\n [placeholder]=\"filterPlaceholder()\"\n [value]=\"filterText()\"\n (input)=\"onFilterInput($event)\"\n />\n @if (filterText()) {\n <button type=\"button\" class=\"inline-flex items-center text-(--f-text-muted-color) hover:text-(--f-text-hover-color)\" (click)=\"clearFilter()\">\n <ui-icon name=\"times\" class=\"text-xs\"></ui-icon>\n </button>\n }\n </div>\n </div>\n }\n\n <ul\n class=\"overflow-auto divide-y divide-(--f-content-border-color)\"\n [style.max-height]=\"listStyle()?.['max-height'] || '12rem'\"\n role=\"listbox\"\n [attr.aria-multiselectable]=\"multiple()\"\n >\n @for (opt of filteredOptions(); track getOptionValue(opt)) {\n <li\n role=\"option\"\n [attr.aria-selected]=\"isSelected(opt)\"\n class=\"flex items-center gap-3 px-3 py-2.5 cursor-pointer transition-colors text-sm select-none\"\n [class]=\"optionClass(opt)\"\n (click)=\"onOptionClick($event, opt)\"\n >\n @if (multiple()) {\n <span\n class=\"w-4 h-4 rounded-sm border flex items-center justify-center shrink-0 transition-colors\"\n [class]=\"isSelected(opt) ? 'bg-primary border-primary' : 'border-(--f-form-field-border-color) bg-(--f-form-field-background)'\"\n >\n @if (isSelected(opt)) {\n <ui-icon name=\"check\" class=\"text-[10px] text-primary-contrast\"></ui-icon>\n }\n </span>\n } @else {\n @if (isSelected(opt)) {\n <ui-icon name=\"check\" class=\"text-xs text-primary shrink-0\"></ui-icon>\n } @else {\n <span class=\"w-3 h-3 shrink-0\"></span>\n }\n }\n <span class=\"flex-1 truncate\">{{ getOptionLabel(opt) }}</span>\n </li>\n } @empty {\n <li class=\"py-8 flex flex-col items-center gap-2 text-(--f-text-muted-color)\">\n <ui-icon name=\"inbox\" class=\"text-xl\"></ui-icon>\n <span class=\"text-sm\">{{ emptyMessage() }}</span>\n </li>\n }\n </ul>\n </div>\n `,\n})\nexport class ListboxComponent implements ControlValueAccessor {\n readonly options = input<unknown[]>([]);\n readonly optionLabel = input<string>('label');\n readonly optionValue = input<string>('value');\n readonly multiple = input(false, { transform: booleanAttribute });\n readonly filter = input(false, { transform: booleanAttribute });\n readonly filterPlaceholder = input<string>('Search...');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly listStyle = input<Record<string, string> | null>(null);\n readonly metaKeySelection = input(false, { transform: booleanAttribute });\n readonly emptyMessage = input<string>('No results');\n readonly emptyFilterMessage = input<string>('No results found');\n\n readonly onChange = output<ListboxChangeEvent>();\n\n private readonly _filterText = signal('');\n readonly filterText = this._filterText.asReadonly();\n private readonly _value = signal<unknown>(null);\n\n private _onChange: (v: unknown) => void = () => {};\n private _onTouched: () => void = () => {};\n\n readonly filteredOptions = computed(() => {\n const q = this.filterText().toLowerCase();\n const opts = this.options() as Record<string, unknown>[];\n if (!q) return opts;\n return opts.filter(o => String(o[this.optionLabel()] ?? '').toLowerCase().includes(q));\n });\n\n onFilterInput(e: Event): void {\n this._filterText.set((e.target as HTMLInputElement).value);\n }\n\n clearFilter(): void {\n this._filterText.set('');\n }\n\n getOptionLabel(opt: unknown): string {\n if (!opt) return '';\n if (typeof opt !== 'object') return String(opt);\n return String((opt as Record<string, unknown>)[this.optionLabel()] ?? '');\n }\n\n getOptionValue(opt: unknown): unknown {\n if (!opt || typeof opt !== 'object') return opt;\n return (opt as Record<string, unknown>)[this.optionValue()];\n }\n\n isSelected(opt: unknown): boolean {\n const v = this.getOptionValue(opt);\n const cur = this._value();\n if (this.multiple()) return Array.isArray(cur) && cur.includes(v);\n return cur === v;\n }\n\n optionClass(opt: unknown): string {\n return this.isSelected(opt)\n ? 'bg-(--f-highlight-background) text-(--f-highlight-color) font-medium'\n : 'text-(--f-text-color) hover:bg-(--f-content-hover-background)';\n }\n\n onOptionClick(e: Event, opt: unknown): void {\n const v = this.getOptionValue(opt);\n let newVal: unknown;\n\n if (this.multiple()) {\n const cur = Array.isArray(this._value()) ? [...(this._value() as unknown[])] : [];\n const idx = cur.indexOf(v);\n if (idx >= 0) cur.splice(idx, 1); else cur.push(v);\n newVal = cur;\n } else {\n newVal = this._value() === v ? null : v;\n }\n\n this._value.set(newVal);\n this._onChange(newVal);\n this._onTouched();\n this.onChange.emit({ originalEvent: e, value: newVal });\n }\n\n writeValue(val: unknown): void { this._value.set(val ?? (this.multiple() ? [] : null)); }\n registerOnChange(fn: (v: unknown) => void): void { this._onChange = fn; }\n registerOnTouched(fn: () => void): void { this._onTouched = fn; }\n setDisabledState(): void {}\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { ButtonComponent, ButtonSeverity, severitySolidBackground } from '../button/button.component';\nimport { MenuItem } from '../../interfaces/menu-item';\n\n@Component({\n selector: 'f-splitbutton',\n imports: [UiIconComponent, ButtonComponent],\n host: {\n class: 'inline-flex',\n '(document:click)': 'onDocumentClick($event)',\n },\n template: `\n <div class=\"relative inline-flex\" [class.opacity-60]=\"disabled()\" [class.pointer-events-none]=\"disabled()\">\n <f-button\n [label]=\"label()\"\n [icon]=\"icon()\"\n [iconPos]=\"iconPos()\"\n [severity]=\"severity()\"\n [loading]=\"loading()\"\n [disabled]=\"disabled()\"\n [raised]=\"raised()\"\n [rounded]=\"rounded()\"\n [outlined]=\"outlined()\"\n [text]=\"text()\"\n [size]=\"size()\"\n class=\"rounded-r-none border-r-0\"\n (onClick)=\"onClick.emit($event)\"\n />\n <button\n type=\"button\"\n [disabled]=\"disabled() || loading()\"\n [class]=\"dropdownClass()\"\n (click)=\"toggleMenu($event)\"\n [attr.aria-expanded]=\"open()\"\n aria-haspopup=\"listbox\"\n >\n <ui-icon name=\"chevron-down\" class=\"text-xs\"></ui-icon>\n </button>\n\n @if (open() && model().length > 0) {\n <div [class]=\"'absolute z-50 right-0 top-full mt-1 min-w-[10rem] bg-(--f-overlay-popover-background) border border-(--f-content-border-color) rounded-lg shadow-lg overflow-hidden ' + menuStyleClass()\">\n <ul class=\"py-1\" role=\"listbox\">\n @for (item of model(); track $index) {\n @if (item.separator) {\n <li class=\"my-1 border-t border-(--f-content-border-color)\"></li>\n } @else if (item.visible !== false) {\n <li\n role=\"option\"\n class=\"flex items-center gap-2.5 px-3 py-2 text-sm cursor-pointer transition-colors\"\n [class]=\"item.disabled ? 'opacity-60 pointer-events-none text-(--f-text-muted-color)' : 'text-(--f-text-color) hover:bg-(--f-content-hover-background)'\"\n (click)=\"onItemClick($event, item)\"\n >\n @if (item.icon) {\n <ui-icon [name]=\"item.icon\" class=\"text-xs text-(--f-text-muted-color)\"></ui-icon>\n }\n <span class=\"flex-1\">{{ item.label }}</span>\n @if (item.badge) {\n <span class=\"text-xs px-1.5 py-0.5 rounded-full bg-primary/10 text-primary font-medium\">{{ item.badge }}</span>\n }\n </li>\n }\n }\n </ul>\n </div>\n }\n </div>\n `,\n})\nexport class SplitButtonComponent {\n private readonly _el = inject(ElementRef);\n\n onDocumentClick(e: MouseEvent): void {\n if (this.open() && !this._el.nativeElement.contains(e.target)) {\n this._open.set(false);\n }\n }\n\n readonly label = input<string>('');\n readonly icon = input<string>('');\n readonly model = input<MenuItem[]>([]);\n readonly severity = input<ButtonSeverity>('primary');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly loading = input(false, { transform: booleanAttribute });\n readonly raised = input(false, { transform: booleanAttribute });\n readonly rounded = input(false, { transform: booleanAttribute });\n readonly outlined = input(false, { transform: booleanAttribute });\n readonly text = input(false, { transform: booleanAttribute });\n readonly iconPos = input<'left' | 'right'>('left');\n readonly size = input<'small' | 'large' | null>(null);\n readonly menuStyleClass = input<string>('');\n readonly appendTo = input<string>('body');\n\n readonly onClick = output<MouseEvent>();\n readonly onDropdownClick = output<MouseEvent>();\n\n private readonly _open = signal(false);\n readonly open = this._open.asReadonly();\n\n readonly dropdownClass = computed(() => {\n const sev = this.severity();\n const base = 'inline-flex items-center justify-center px-2.5 py-2 text-sm font-medium cursor-pointer transition-all duration-[var(--f-transition-duration)] rounded-r-lg border-l border-white/20 focus:outline-none focus-visible:ring-focus disabled:opacity-60 disabled:pointer-events-none';\n const secondaryBorder = sev === 'secondary' ? 'border border-(--f-content-border-color) border-l-(--f-content-border-color)' : '';\n return `${base} ${severitySolidBackground(sev)} ${secondaryBorder}`;\n });\n\n toggleMenu(e: MouseEvent): void {\n this._open.update(v => !v);\n this.onDropdownClick.emit(e);\n }\n\n onItemClick(e: Event, item: MenuItem): void {\n if (item.disabled) return;\n item.command?.({ originalEvent: e, item });\n this._open.set(false);\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n Component,\n computed,\n contentChild,\n inject,\n Injectable,\n input,\n signal,\n TemplateRef,\n} from '@angular/core';\nimport { TreeNode } from '../../interfaces/tree-node';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\nexport interface TreeTableNode<T = unknown> {\n node: TreeNode<T>;\n level: number;\n leaf: boolean;\n expanded: boolean;\n visible: boolean;\n}\n\nlet _uidCounter = 0;\n\nfunction assignKey(node: TreeNode): string {\n if (!(node as Record<string, unknown>)['__uid']) {\n (node as Record<string, unknown>)['__uid'] = `tt_${_uidCounter++}`;\n }\n return (node as Record<string, unknown>)['__uid'] as string;\n}\n\n@Injectable()\nexport class TreeTableService {\n private readonly _expanded = signal<ReadonlySet<string>>(new Set());\n readonly expanded = this._expanded.asReadonly();\n\n toggle(key: string, node: TreeNode): void {\n this._expanded.update((s) => {\n const next = new Set(s);\n if (next.has(key)) {\n next.delete(key);\n node.expanded = false;\n } else {\n next.add(key);\n node.expanded = true;\n }\n return next;\n });\n }\n\n isExpanded(key: string): boolean {\n return this._expanded().has(key);\n }\n}\n\n@Component({\n selector: 'f-treetabletoggler',\n imports: [UiIconComponent],\n template: `\n @if (!rowNode().leaf) {\n <button\n type=\"button\"\n class=\"inline-flex items-center justify-center w-6 h-6 rounded-md text-(--f-text-muted-color) hover:bg-(--f-content-hover-background) hover:text-(--f-text-hover-color) transition-colors duration-[var(--f-transition-duration)] cursor-pointer shrink-0 align-middle focus:outline-none focus-visible:ring-focus\"\n (click)=\"onToggle($event)\"\n [attr.aria-expanded]=\"rowNode().expanded\"\n >\n <ui-icon\n [name]=\"rowNode().expanded ? 'chevron-down' : 'chevron-right'\"\n class=\"text-xs\"\n ></ui-icon>\n </button>\n } @else {\n <span class=\"inline-block w-6 h-6 shrink-0\"></span>\n }\n `,\n host: {\n class: 'inline-flex items-center align-middle',\n '[style.padding-left.px]': 'rowNode().level * 16',\n },\n})\nexport class TreeTableTogglerComponent {\n readonly rowNode = input.required<TreeTableNode>();\n\n private readonly svc = inject(TreeTableService, { optional: true });\n\n onToggle(event: Event): void {\n event.stopPropagation();\n const rn = this.rowNode();\n const key = assignKey(rn.node);\n this.svc?.toggle(key, rn.node);\n }\n}\n\n@Component({\n selector: 'f-treetable',\n imports: [UiIconComponent, NgTemplateOutlet],\n providers: [TreeTableService],\n styles: [\n `\n :host ::ng-deep table thead tr th {\n padding: 0.8125rem 1rem;\n font-size: 0.875rem;\n font-weight: 600;\n letter-spacing: 0.07em;\n text-transform: uppercase;\n color: var(--f-text-muted-color);\n white-space: nowrap;\n background: transparent;\n }\n :host ::ng-deep table tbody tr td {\n padding: 0.8125rem 1rem;\n color: var(--f-text-color);\n font-size: 0.875rem;\n vertical-align: middle;\n }\n :host ::ng-deep table tbody tr:hover td {\n background-color: var(--f-content-hover-background);\n }\n `,\n ],\n template: `\n <div\n class=\"w-full overflow-x-auto rounded-lg border border-(--f-content-border-color) bg-(--f-content-background) shadow-sm\"\n [style]=\"tableStyle()\"\n >\n @if (loading()) {\n <div class=\"flex flex-col items-center justify-center py-20 gap-3\">\n <ui-icon\n name=\"loader-circle\"\n [spin]=\"true\"\n class=\"text-2xl text-primary/60\"\n ></ui-icon>\n <span class=\"text-sm text-(--f-text-muted-color)\">Loading...</span>\n </div>\n } @else {\n <table class=\"w-full text-sm text-left border-collapse\">\n <thead\n class=\"bg-(--f-content-hover-background) border-b border-(--f-content-border-color)\"\n >\n @if (headerTemplate()) {\n <ng-container [ngTemplateOutlet]=\"headerTemplate()\" />\n }\n </thead>\n <tbody class=\"divide-y divide-(--f-content-border-color)\">\n @if (flatRows().length > 0) {\n @for (row of flatRows(); track trackByRow($index, row)) {\n @if (row.visible) {\n @if (bodyTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"bodyTemplate()\"\n [ngTemplateOutletContext]=\"{\n $implicit: row,\n rowData: row.node.data,\n rowNode: row,\n }\"\n />\n }\n }\n }\n } @else {\n @if (emptyTemplate()) {\n <ng-container [ngTemplateOutlet]=\"emptyTemplate()\" />\n } @else {\n <tr>\n <td\n [attr.colspan]=\"100\"\n class=\"text-center py-16 text-(--f-text-muted-color)\"\n >\n <div class=\"flex flex-col items-center gap-3\">\n <div\n class=\"w-12 h-12 rounded-full bg-(--f-content-hover-background) flex items-center justify-center\"\n >\n <ui-icon\n name=\"inbox\"\n class=\"text-xl text-(--f-text-muted-color)\"\n ></ui-icon>\n </div>\n <p\n class=\"text-sm font-medium text-(--f-text-muted-color)\"\n >\n No records found\n </p>\n </div>\n </td>\n </tr>\n }\n }\n </tbody>\n </table>\n }\n </div>\n `,\n host: { '[class]': 'styleClass()' },\n})\nexport class TreeTableComponent {\n readonly value = input<TreeNode[]>([]);\n readonly loading = input(false, { transform: booleanAttribute });\n readonly dataKey = input<string>('id');\n readonly styleClass = input<string>('');\n readonly tableStyle = input<Record<string, string> | null>(null);\n readonly scrollable = input(false, { transform: booleanAttribute });\n\n readonly headerTemplate = contentChild<TemplateRef<unknown>>('header');\n readonly bodyTemplate = contentChild<TemplateRef<unknown>>('body');\n readonly emptyTemplate = contentChild<TemplateRef<unknown>>('emptymessage');\n\n private readonly svc = inject(TreeTableService);\n\n readonly flatRows = computed<TreeTableNode[]>(() => {\n const expandedKeys = this.svc.expanded();\n const rows: TreeTableNode[] = [];\n this._flatten(this.value(), rows, 0, true, expandedKeys);\n return rows;\n });\n\n trackByRow(_idx: number, row: TreeTableNode): unknown {\n return assignKey(row.node);\n }\n\n private _flatten(\n nodes: TreeNode[],\n out: TreeTableNode[],\n level: number,\n parentVisible: boolean,\n expandedKeys: ReadonlySet<string>,\n ): void {\n for (const node of nodes) {\n const key = assignKey(node);\n const isLeaf = !node.children || node.children.length === 0;\n const isExpanded = expandedKeys.has(key) || node.expanded === true;\n\n out.push({\n node,\n level,\n leaf: isLeaf,\n expanded: isExpanded,\n visible: parentVisible,\n });\n\n if (!isLeaf && isExpanded) {\n this._flatten(\n node.children!,\n out,\n level + 1,\n parentVisible,\n expandedKeys,\n );\n }\n }\n }\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n ElementRef,\n forwardRef,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { TreeNode } from '../../interfaces/tree-node';\n\nexport type TreeSelectionMode = 'single' | 'multiple' | 'checkbox';\n\ninterface FlatTreeSelectNode {\n node: TreeNode;\n key: string;\n level: number;\n leaf: boolean;\n visible: boolean;\n}\n\nlet _uidCounter = 0;\n\nfunction assignKey(node: TreeNode): string {\n if (!node.key) {\n node.key = `ts_${_uidCounter++}`;\n }\n return node.key;\n}\n\n@Component({\n selector: 'f-treeselect',\n imports: [UiIconComponent],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => TreeSelectComponent), multi: true }],\n host: { '[class]': 'styleClass()', '(document:click)': 'onDocumentClick($event)' },\n template: `\n <div class=\"relative w-full\">\n <div [class]=\"triggerClass()\" (click)=\"toggleOpen()\">\n @if (selectionMode() === 'single') {\n <span class=\"truncate text-sm\" [class.text-(--f-form-field-placeholder-color)]=\"!selectedLabels().length\">\n @if (selectedLabels().length) {\n {{ selectedLabels()[0] }}\n } @else {\n {{ placeholder() }}\n }\n </span>\n } @else if (selectedLabels().length) {\n <div class=\"flex flex-wrap items-center gap-1 flex-1 min-w-0\">\n @for (lbl of selectedLabels(); track $index) {\n <span class=\"inline-flex items-center gap-1 px-2 py-0.5 bg-primary/10 text-primary rounded-md text-xs font-medium shrink-0\">\n {{ lbl }}\n <button type=\"button\" aria-label=\"Remove\" class=\"inline-flex items-center justify-center hover:opacity-70 cursor-pointer\" (click)=\"removeByKey($event, findKeyByLabel(lbl))\">\n <ui-icon name=\"times\" class=\"text-[10px]\"></ui-icon>\n </button>\n </span>\n }\n </div>\n } @else {\n <span class=\"text-(--f-form-field-placeholder-color) text-sm\">{{ placeholder() }}</span>\n }\n <ui-icon name=\"chevron-down\" class=\"ml-auto text-xs text-(--f-form-field-placeholder-color) shrink-0 transition-transform duration-[var(--f-transition-duration)]\" [class.rotate-180]=\"open()\"></ui-icon>\n </div>\n\n @if (open()) {\n <div class=\"absolute z-50 w-full mt-1 bg-(--f-overlay-popover-background) border border-(--f-content-border-color) rounded-lg shadow-lg overflow-hidden\">\n @if (filter()) {\n <div class=\"p-2 border-b border-(--f-content-border-color)\">\n <div class=\"flex items-center gap-2 px-2 py-1.5 bg-(--f-content-hover-background) rounded-lg border border-(--f-content-border-color)\">\n <ui-icon name=\"search\" class=\"text-xs text-(--f-text-muted-color) shrink-0\"></ui-icon>\n <input type=\"text\" class=\"flex-1 text-sm bg-transparent focus:outline-none text-(--f-text-color) placeholder:text-(--f-form-field-placeholder-color)\"\n placeholder=\"Search...\" [value]=\"filterText()\" (input)=\"onFilterInput($any($event.target).value)\" (click)=\"$event.stopPropagation()\" />\n </div>\n </div>\n }\n <div class=\"max-h-64 overflow-auto py-1\">\n @for (row of flatNodes(); track row.key) {\n @if (row.visible) {\n <div\n class=\"w-full text-left px-2 py-1.5 text-sm flex items-center gap-1.5 transition-colors cursor-pointer\"\n [style.padding-left.px]=\"row.level * 16 + 8\"\n [class]=\"isSelected(row.key) && selectionMode() !== 'checkbox' ? 'bg-(--f-highlight-background) text-(--f-highlight-color)' : 'text-(--f-text-color) hover:bg-(--f-content-hover-background)'\"\n (click)=\"onNodeClick($event, row)\"\n >\n @if (!row.leaf) {\n <button type=\"button\" class=\"inline-flex items-center justify-center w-5 h-5 rounded-md hover:bg-(--f-content-hover-background) shrink-0 cursor-pointer\" (click)=\"toggleExpand($event, row.key)\">\n <ui-icon [name]=\"isExpanded(row.key) ? 'chevron-down' : 'chevron-right'\" class=\"text-[10px]\"></ui-icon>\n </button>\n } @else {\n <span class=\"inline-block w-5 h-5 shrink-0\"></span>\n }\n\n @if (selectionMode() === 'checkbox') {\n <div class=\"w-4 h-4 rounded-sm border flex items-center justify-center shrink-0 transition-colors\"\n [class]=\"isSelected(row.key) ? 'bg-primary border-primary' : (isPartial(row.key) ? 'bg-primary/30 border-primary' : 'border-(--f-form-field-border-color) bg-(--f-form-field-background)')\">\n @if (isSelected(row.key)) {\n <ui-icon name=\"check\" class=\"text-[9px] text-primary-contrast\"></ui-icon>\n } @else if (isPartial(row.key)) {\n <ui-icon name=\"minus\" class=\"text-[9px] text-primary-contrast\"></ui-icon>\n }\n </div>\n }\n\n @if (row.node.icon) {\n <ui-icon [name]=\"row.node.icon\" class=\"text-xs text-(--f-text-muted-color) shrink-0\"></ui-icon>\n }\n <span class=\"flex-1 truncate\">{{ row.node.label }}</span>\n </div>\n }\n }\n @empty {\n <div class=\"py-6 flex flex-col items-center gap-2\">\n <ui-icon name=\"inbox\" class=\"text-2xl text-(--f-text-muted-color)\"></ui-icon>\n <span class=\"text-sm text-(--f-text-muted-color)\">No options</span>\n </div>\n }\n </div>\n </div>\n }\n </div>\n `,\n})\nexport class TreeSelectComponent implements ControlValueAccessor {\n private readonly _el = inject(ElementRef);\n\n readonly options = input<TreeNode[]>([]);\n readonly placeholder = input<string>('Select');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly filter = input(false, { transform: booleanAttribute });\n readonly selectionMode = input<TreeSelectionMode>('single');\n readonly invalid = input(false, { transform: booleanAttribute });\n // Overwritten with the field's touch state when bound via signal forms [formField]\n readonly touched = input(true);\n readonly styleClass = input<string>('');\n\n private readonly _open = signal(false);\n readonly open = this._open.asReadonly();\n private readonly _filterText = signal('');\n readonly filterText = this._filterText.asReadonly();\n private readonly _selectedKeys = signal<Set<string>>(new Set());\n readonly selectedKeys = this._selectedKeys.asReadonly();\n private readonly expandedKeys = signal<Set<string>>(new Set());\n\n private _onChange: (v: unknown) => void = () => {};\n private _onTouched: () => void = () => {};\n private _keyToNode = new Map<string, TreeNode>();\n\n readonly triggerClass = computed(() => {\n const base = 'w-full min-h-[38px] flex items-center gap-2 px-3 py-1.5 text-sm rounded-lg border bg-(--f-form-field-background) focus:outline-none focus-visible:ring-focus transition-all duration-[var(--f-transition-duration)]';\n const showInvalid = this.invalid() && this.touched();\n const stateClass = this.open()\n ? (showInvalid ? 'border-red-400' : 'border-primary')\n : (showInvalid ? 'border-red-400' : 'border-(--f-form-field-border-color) hover:border-(--f-form-field-hover-border-color)');\n const disabledClass = this.disabled() ? 'opacity-60 cursor-not-allowed' : 'cursor-pointer';\n return `${base} ${stateClass} ${disabledClass}`;\n });\n\n readonly flatNodes = computed<FlatTreeSelectNode[]>(() => {\n const expanded = this.expandedKeys();\n const q = this.filterText().toLowerCase();\n const out: FlatTreeSelectNode[] = [];\n this._keyToNode.clear();\n this._flatten(this.options(), out, 0, true, expanded, q);\n return out;\n });\n\n readonly selectedLabels = computed(() => {\n const keys = this.selectedKeys();\n const labels: string[] = [];\n for (const row of this.flatNodes()) {\n if (keys.has(row.key)) labels.push(row.node.label ?? '');\n }\n return labels;\n });\n\n private _flatten(\n nodes: TreeNode[],\n out: FlatTreeSelectNode[],\n level: number,\n parentVisible: boolean,\n expanded: Set<string>,\n query: string,\n ): boolean {\n let anyMatch = false;\n for (const node of nodes) {\n const key = assignKey(node);\n this._keyToNode.set(key, node);\n const isLeaf = !node.children || node.children.length === 0;\n const selfMatch = !query || String(node.label ?? '').toLowerCase().includes(query);\n\n const startIdx = out.length;\n out.push({ node, key, level, leaf: isLeaf, visible: parentVisible });\n\n let childMatch = false;\n if (!isLeaf) {\n childMatch = this._flatten(node.children!, out, level + 1, parentVisible && (expanded.has(key) || !!query), expanded, query);\n }\n\n const matches = selfMatch || childMatch;\n out[startIdx].visible = parentVisible && matches;\n anyMatch = anyMatch || matches;\n }\n return anyMatch;\n }\n\n onDocumentClick(e: MouseEvent): void {\n if (this.open() && !this._el.nativeElement.contains(e.target)) {\n this._open.set(false);\n this._onTouched();\n }\n }\n\n onFilterInput(v: string): void { this._filterText.set(v); }\n\n toggleOpen(): void {\n if (this.disabled()) return;\n this._open.update(v => !v);\n if (!this.open()) this._onTouched();\n }\n\n toggleExpand(e: Event, key: string): void {\n e.stopPropagation();\n this.expandedKeys.update(s => {\n const next = new Set(s);\n next.has(key) ? next.delete(key) : next.add(key);\n return next;\n });\n }\n\n isExpanded(key: string): boolean {\n return this.expandedKeys().has(key);\n }\n\n isSelected(key: string): boolean {\n return this.selectedKeys().has(key);\n }\n\n isPartial(key: string): boolean {\n if (this.selectionMode() !== 'checkbox' || this.selectedKeys().has(key)) return false;\n const node = this._keyToNode.get(key);\n if (!node?.children?.length) return false;\n let any = false;\n let all = true;\n for (const child of node.children) {\n const childKey = assignKey(child);\n const childSelected = this.selectedKeys().has(childKey) || this.isPartial(childKey);\n any = any || childSelected;\n all = all && this.selectedKeys().has(childKey);\n }\n return any && !all;\n }\n\n onNodeClick(e: Event, row: FlatTreeSelectNode): void {\n e.stopPropagation();\n if (this.selectionMode() === 'checkbox') {\n this.toggleCheckbox(row.key);\n } else if (this.selectionMode() === 'multiple') {\n this.toggleMultiple(row.key);\n } else {\n this._selectedKeys.set(new Set([row.key]));\n this.emitChange();\n this._open.set(false);\n this._onTouched();\n }\n }\n\n private toggleMultiple(key: string): void {\n this._selectedKeys.update(s => {\n const next = new Set(s);\n next.has(key) ? next.delete(key) : next.add(key);\n return next;\n });\n this.emitChange();\n }\n\n private toggleCheckbox(key: string): void {\n const node = this._keyToNode.get(key);\n if (!node) return;\n const next = new Set(this.selectedKeys());\n const willSelect = !next.has(key);\n this.setDescendantSelection(node, willSelect, next);\n this._selectedKeys.set(next);\n this.emitChange();\n }\n\n private setDescendantSelection(node: TreeNode, selected: boolean, set: Set<string>): void {\n const key = assignKey(node);\n selected ? set.add(key) : set.delete(key);\n for (const child of node.children ?? []) {\n this.setDescendantSelection(child, selected, set);\n }\n }\n\n findKeyByLabel(label: string): string {\n for (const row of this.flatNodes()) {\n if (row.node.label === label) return row.key;\n }\n return '';\n }\n\n removeByKey(e: Event, key: string): void {\n e.stopPropagation();\n if (!key) return;\n if (this.selectionMode() === 'checkbox') {\n this.toggleCheckbox(key);\n } else {\n this.toggleMultiple(key);\n }\n }\n\n private emitChange(): void {\n const keys = this.selectedKeys();\n if (this.selectionMode() === 'single') {\n const [first] = keys;\n this._onChange(first ?? null);\n return;\n }\n this._onChange(Array.from(keys));\n }\n\n writeValue(v: unknown): void {\n if (v === null || v === undefined) {\n this._selectedKeys.set(new Set());\n } else if (Array.isArray(v)) {\n this._selectedKeys.set(new Set(v as string[]));\n } else {\n this._selectedKeys.set(new Set([v as string]));\n }\n }\n registerOnChange(fn: (v: unknown) => void): void { this._onChange = fn; }\n registerOnTouched(fn: () => void): void { this._onTouched = fn; }\n setDisabledState(): void {}\n}\n","import { Component, computed, input } from '@angular/core';\n\nexport type BadgeSeverity =\n | 'success'\n | 'info'\n | 'warn'\n | 'danger'\n | 'secondary'\n | 'contrast'\n | null;\nexport type BadgeSize = 'small' | 'large' | 'xlarge' | null;\n\n@Component({\n selector: 'f-badge',\n host: {\n class: 'block',\n },\n template: `\n <p [class]=\"classes()\">\n {{ value() }}\n <ng-content></ng-content>\n </p>\n `,\n})\nexport class BadgeComponent {\n readonly value = input<string | number>('');\n readonly severity = input<BadgeSeverity>(null);\n readonly size = input<BadgeSize>(null);\n\n readonly classes = computed(() => {\n const sizeMap: Record<string, string> = {\n small: 'min-w-4 h-4 text-[10px]',\n large: 'min-w-6 h-6 text-sm',\n xlarge: 'min-w-7 h-7 text-base',\n };\n const sz = this.size();\n const base = `inline-flex items-center justify-center rounded-full px-1.5 font-bold leading-none ${sz ? sizeMap[sz] : 'min-w-5 h-5 text-xs'}`;\n const colorMap: Record<string, string> = {\n success: 'bg-green-500 text-white',\n info: 'bg-sky-500 text-white',\n warn: 'bg-amber-500 text-white',\n danger: 'bg-red-500 text-white',\n secondary: 'bg-surface-200 text-surface-700',\n contrast: 'bg-surface-950 text-surface-0',\n };\n const sev = this.severity();\n return `${base} ${sev ? (colorMap[sev] ?? colorMap['secondary']) : 'bg-primary text-primary-contrast'}`;\n });\n}\n","import { Component, input } from '@angular/core';\nimport {\n BadgeComponent,\n BadgeSeverity,\n BadgeSize,\n} from '../badge/badge.component';\n\n@Component({\n selector: 'f-overlaybadge',\n imports: [BadgeComponent],\n template: `\n <div class=\"relative flex items-center justify-center\">\n <ng-content></ng-content>\n <f-badge\n [value]=\"value()\"\n [severity]=\"severity()\"\n [size]=\"size()\"\n class=\"absolute -top-2 -right-2\"\n ></f-badge>\n </div>\n `,\n})\nexport class OverlayBadgeComponent {\n readonly value = input<string | number>('');\n readonly severity = input<BadgeSeverity>(null);\n readonly size = input<BadgeSize>(null);\n}\n","import { booleanAttribute, Component, input, model } from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\n@Component({\n selector: 'f-fieldset',\n imports: [UiIconComponent],\n template: `\n <fieldset\n class=\"border border-(--f-content-border-color) rounded-lg p-4 pt-0\"\n >\n <legend\n class=\"px-2 text-sm font-semibold text-(--f-text-color) flex items-center gap-2 rounded focus-visible:outline-none focus-visible:ring-focus\"\n [class.cursor-pointer]=\"toggleable()\"\n [attr.tabindex]=\"toggleable() ? 0 : null\"\n [attr.role]=\"toggleable() ? 'button' : null\"\n [attr.aria-expanded]=\"toggleable() ? !collapsed() : null\"\n (click)=\"toggleable() && toggleCollapsed()\"\n (keydown.enter)=\"toggleable() && toggleCollapsed()\"\n (keydown.space)=\"onSpace($event)\"\n >\n @if (toggleable()) {\n <ui-icon\n [name]=\"collapsed() ? 'chevron-right' : 'chevron-down'\"\n class=\"text-xs\"\n ></ui-icon>\n }\n {{ legend() }}\n </legend>\n @if (!collapsed()) {\n <div class=\"pt-2\">\n <ng-content />\n </div>\n }\n </fieldset>\n `,\n host: {\n class: 'block',\n },\n})\nexport class FieldsetComponent {\n readonly legend = input<string>('');\n readonly toggleable = input(false, { transform: booleanAttribute });\n readonly collapsed = model(false);\n\n toggleCollapsed(): void {\n this.collapsed.update((v) => !v);\n }\n\n onSpace(event: Event): void {\n if (!this.toggleable()) return;\n event.preventDefault();\n this.toggleCollapsed();\n }\n}\n","import { Component, computed, input } from '@angular/core';\n\nexport type FloatLabelVariant = 'over' | 'in' | 'on';\n\n@Component({\n selector: 'f-floatlabel',\n host: { '[class]': 'hostClass()' },\n styles: [`\n :host ::ng-deep input,\n :host ::ng-deep .f-floatlabel-target {\n &::placeholder { color: transparent; }\n }\n :host(.f-floatlabel-over) ::ng-deep label {\n position: absolute;\n inset-inline-start: 0.75rem;\n top: 50%;\n transform: translateY(-50%);\n transition: all var(--f-transition-duration, 0.2s) ease;\n pointer-events: none;\n color: var(--f-form-field-placeholder-color);\n }\n :host(.f-floatlabel-over):has(input:focus) ::ng-deep label,\n :host(.f-floatlabel-over):has(input:not(:placeholder-shown)) ::ng-deep label {\n top: -0.6rem;\n font-size: 0.75rem;\n background: var(--f-content-background);\n padding: 0 0.25rem;\n color: var(--f-primary-color, var(--color-primary));\n }\n `],\n template: `\n <div class=\"relative w-full\">\n <ng-content />\n </div>\n `,\n})\nexport class FloatLabelComponent {\n readonly variant = input<FloatLabelVariant>('over');\n\n readonly hostClass = computed(() => `block w-full f-floatlabel-${this.variant()}`);\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'f-iftalabel',\n host: { class: 'relative block w-full' },\n styles: [`\n :host ::ng-deep label {\n position: absolute;\n inset-inline-start: 0.75rem;\n top: 0.4rem;\n font-size: 0.7rem;\n color: var(--f-text-muted-color);\n pointer-events: none;\n }\n :host ::ng-deep input,\n :host ::ng-deep .f-iftalabel-target {\n padding-top: 1.35rem !important;\n padding-bottom: 0.35rem !important;\n }\n `],\n template: `<ng-content></ng-content>`,\n})\nexport class IftaLabelComponent {}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'f-buttongroup',\n host: {\n class:\n 'inline-flex [&>button]:rounded-none [&>button:first-child]:rounded-s-lg [&>button:last-child]:rounded-e-lg [&>button:not(:first-child)]:-ms-px',\n },\n template: `<ng-content></ng-content>`,\n})\nexport class ButtonGroupComponent {}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'f-inputgroup',\n host: {\n class: 'flex items-stretch w-full [&>*]:rounded-none [&>*:first-child]:rounded-s-lg [&>*:last-child]:rounded-e-lg [&>*:not(:first-child)]:-ms-px',\n },\n template: `<ng-content></ng-content>`,\n})\nexport class InputGroupComponent {}\n\n@Component({\n selector: 'f-inputgroupaddon',\n host: {\n class: 'inline-flex items-center justify-center px-3 text-sm text-(--f-text-muted-color) bg-(--f-content-hover-background) border border-(--f-content-border-color)',\n },\n template: `<ng-content></ng-content>`,\n})\nexport class InputGroupAddonComponent {}\n","import { isPlatformBrowser } from '@angular/common';\nimport { Component, effect, ElementRef, inject, input, PLATFORM_ID, signal } from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\n@Component({\n selector: 'f-scrolltop',\n imports: [UiIconComponent],\n styles: [`\n .scrolltop-btn { transition: opacity var(--f-transition-duration, 0.2s) ease, transform var(--f-transition-duration, 0.2s) ease; }\n `],\n template: `\n <button\n type=\"button\"\n class=\"scrolltop-btn fixed z-50 w-10 h-10 rounded-full bg-primary text-primary-contrast shadow-lg flex items-center justify-center hover:bg-primary-emphasis focus:outline-none focus-visible:ring-focus cursor-pointer\"\n [class.opacity-0]=\"!visible()\"\n [class.scale-75]=\"!visible()\"\n [class.pointer-events-none]=\"!visible()\"\n [style.bottom.px]=\"20\"\n [style.right.px]=\"20\"\n [attr.aria-label]=\"buttonAriaLabel()\"\n (click)=\"scrollToTop()\"\n >\n <ui-icon name=\"arrow-up\" class=\"text-sm\"></ui-icon>\n </button>\n `,\n})\nexport class ScrollTopComponent {\n private readonly el = inject(ElementRef<HTMLElement>);\n private readonly platformId = inject(PLATFORM_ID);\n\n readonly threshold = input<number>(400);\n readonly behavior = input<ScrollBehavior>('smooth');\n readonly target = input<'window' | 'parent'>('window');\n readonly buttonAriaLabel = input<string>('Scroll to top');\n\n private readonly _visible = signal(false);\n readonly visible = this._visible.asReadonly();\n\n constructor() {\n effect((onCleanup) => {\n if (!isPlatformBrowser(this.platformId)) return;\n const scrollEl = this.getScrollElement();\n const handler = (): void => this.onScroll();\n scrollEl.addEventListener('scroll', handler);\n onCleanup(() => scrollEl.removeEventListener('scroll', handler));\n });\n }\n\n private getScrollElement(): Window | HTMLElement {\n if (this.target() === 'parent') {\n return this.el.nativeElement.parentElement ?? window;\n }\n return window;\n }\n\n private getScrollTop(): number {\n const scrollEl = this.getScrollElement();\n return scrollEl === window ? window.scrollY : (scrollEl as HTMLElement).scrollTop;\n }\n\n onScroll(): void {\n this._visible.set(this.getScrollTop() > this.threshold());\n }\n\n scrollToTop(): void {\n const scrollEl = this.getScrollElement();\n if (scrollEl === window) {\n window.scrollTo({ top: 0, behavior: this.behavior() });\n } else {\n (scrollEl as HTMLElement).scrollTo({ top: 0, behavior: this.behavior() });\n }\n }\n}\n","import { Component, computed, input } from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\nexport interface MeterItem {\n label: string;\n value: number;\n color?: string;\n icon?: string;\n}\n\n@Component({\n selector: 'f-metergroup',\n imports: [UiIconComponent],\n host: { class: 'block w-full' },\n template: `\n <div class=\"w-full\">\n <div class=\"flex w-full h-2 rounded-full overflow-hidden bg-(--f-content-hover-background)\">\n @for (item of values(); track item.label) {\n <div\n class=\"h-full transition-all duration-300\"\n [style.width.%]=\"percent(item.value)\"\n [style.background-color]=\"item.color || 'var(--color-primary)'\"\n ></div>\n }\n </div>\n <div class=\"flex flex-wrap gap-4 mt-3\">\n @for (item of values(); track item.label) {\n <div class=\"flex items-center gap-2 text-sm\">\n <span class=\"w-2.5 h-2.5 rounded-full shrink-0\" [style.background-color]=\"item.color || 'var(--color-primary)'\"></span>\n @if (item.icon) { <ui-icon [name]=\"item.icon\" class=\"text-xs text-(--f-text-muted-color)\"></ui-icon> }\n <span class=\"text-(--f-text-muted-color)\">{{ item.label }}</span>\n <span class=\"font-semibold text-(--f-text-color)\">{{ item.value }}</span>\n </div>\n }\n </div>\n </div>\n `,\n})\nexport class MeterGroupComponent {\n readonly values = input<MeterItem[]>([]);\n readonly min = input<number>(0);\n readonly max = input<number>(100);\n\n percent(value: number): number {\n const min = this.min();\n const range = this.max() - min;\n if (range <= 0) return 0;\n return Math.min(100, Math.max(0, ((value - min) / range) * 100));\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'f-fluid',\n host: { class: 'block w-full [&_input]:w-full [&_button]:w-full [&_select]:w-full' },\n template: `<ng-content></ng-content>`,\n})\nexport class FluidComponent {}\n","import { booleanAttribute, Component, input } from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\n@Component({\n selector: 'f-blockui',\n imports: [UiIconComponent],\n host: { class: 'relative block' },\n styles: [`\n .blockui-mask { transition: opacity var(--f-transition-duration, 0.2s) ease; }\n `],\n template: `\n <ng-content></ng-content>\n <div\n class=\"blockui-mask absolute inset-0 z-40 flex items-center justify-center bg-(--f-content-background)/60 backdrop-blur-[1px] rounded-[inherit]\"\n [class.opacity-0]=\"!blocked()\"\n [class.pointer-events-none]=\"!blocked()\"\n >\n <ng-content select=\"[block-template]\"></ng-content>\n @if (!hasCustomTemplate()) {\n <ui-icon name=\"loader-circle\" [spin]=\"true\" class=\"text-2xl text-primary\"></ui-icon>\n }\n </div>\n `,\n})\nexport class BlockUiComponent {\n readonly blocked = input(false, { transform: booleanAttribute });\n readonly hasCustomTemplate = input(false, { transform: booleanAttribute });\n}\n","import {\n booleanAttribute,\n Component,\n ElementRef,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { RouterLink } from '@angular/router';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { MenuItem } from '../../interfaces/menu-item';\n\n@Component({\n selector: 'f-menu',\n imports: [UiIconComponent, NgTemplateOutlet, RouterLink],\n host: { class: 'block', '(document:click)': 'onDocumentClick($event)' },\n template: `\n <ng-template #contentTpl let-item>\n @if (item.icon) {\n <ui-icon [name]=\"item.icon\" class=\"text-xs text-(--f-text-muted-color) shrink-0\"></ui-icon>\n }\n <span class=\"flex-1 truncate\">{{ item.label }}</span>\n @if (item.badge) {\n <span class=\"text-xs px-1.5 py-0.5 rounded-full bg-primary/10 text-primary font-medium\">{{ item.badge }}</span>\n }\n @if (item.selected) {\n <ui-icon name=\"check\" class=\"text-primary text-sm shrink-0\"></ui-icon>\n }\n </ng-template>\n\n @if (!popup() || visible()) {\n <div\n [class]=\"popup()\n ? 'absolute z-50 mt-1 min-w-[12rem] bg-(--f-overlay-popover-background) border border-(--f-content-border-color) rounded-lg shadow-lg overflow-hidden'\n : 'w-full bg-(--f-content-background) border border-(--f-content-border-color) rounded-lg overflow-hidden'\"\n >\n <ul class=\"py-1\" role=\"menu\" (keydown)=\"onKeydown($event)\">\n @for (item of model(); track $index) {\n @if (item.separator) {\n <li class=\"my-1 border-t border-(--f-content-border-color)\" role=\"separator\"></li>\n } @else if (item.visible !== false) {\n @let itemClass = item.disabled\n ? 'w-full flex items-center gap-2.5 px-3 py-2 text-sm text-left transition-colors opacity-60 pointer-events-none text-(--f-text-muted-color) focus:outline-none focus-visible:ring-focus'\n : item.selected\n ? 'w-full flex items-center gap-2.5 px-3 py-2 text-sm text-left transition-colors bg-primary/10 text-primary cursor-pointer focus:outline-none focus-visible:ring-focus'\n : 'w-full flex items-center gap-2.5 px-3 py-2 text-sm text-left transition-colors text-(--f-text-color) hover:bg-(--f-content-hover-background) cursor-pointer focus:outline-none focus-visible:ring-focus';\n <li role=\"none\">\n @if (item.routerLink) {\n <a\n role=\"menuitem\"\n [attr.aria-checked]=\"item.selected ?? null\"\n [class]=\"itemClass\"\n [routerLink]=\"item.routerLink\"\n [queryParams]=\"item.queryParams\"\n (click)=\"onItemClick($event, item)\"\n >\n <ng-container [ngTemplateOutlet]=\"contentTpl\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </a>\n } @else if (item.url) {\n <a\n role=\"menuitem\"\n [attr.aria-checked]=\"item.selected ?? null\"\n [class]=\"itemClass\"\n [href]=\"item.url\"\n [target]=\"item.target ?? null\"\n (click)=\"onItemClick($event, item)\"\n >\n <ng-container [ngTemplateOutlet]=\"contentTpl\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </a>\n } @else {\n <button\n type=\"button\"\n role=\"menuitem\"\n [attr.aria-checked]=\"item.selected ?? null\"\n [class]=\"itemClass\"\n (click)=\"onItemClick($event, item)\"\n >\n <ng-container [ngTemplateOutlet]=\"contentTpl\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </button>\n }\n </li>\n }\n }\n @empty {\n <li class=\"px-3 py-2 text-sm text-(--f-text-muted-color)\">No items</li>\n }\n </ul>\n </div>\n }\n `,\n})\nexport class MenuComponent {\n private readonly _el = inject(ElementRef);\n\n readonly model = input<MenuItem[]>([]);\n readonly popup = input(false, { transform: booleanAttribute });\n\n private readonly _visible = signal(false);\n readonly visible = this._visible.asReadonly();\n private _openedAt = 0;\n\n toggle(event?: Event): void {\n this._openedAt = Date.now();\n this._visible.update(v => !v);\n }\n\n show(event?: Event): void {\n this._openedAt = Date.now();\n this._visible.set(true);\n }\n\n hide(): void { this._visible.set(false); }\n\n onDocumentClick(e: MouseEvent): void {\n if (Date.now() - this._openedAt < 50) return;\n if (this.popup() && this.visible() && !this._el.nativeElement.contains(e.target)) {\n this._visible.set(false);\n }\n }\n\n onItemClick(e: Event, item: MenuItem): void {\n if (item.disabled) return;\n item.command?.({ originalEvent: e, item });\n if (this.popup()) this._visible.set(false);\n }\n\n onKeydown(e: KeyboardEvent): void {\n const items = Array.from(\n (e.currentTarget as HTMLElement).querySelectorAll<HTMLElement>('[role=\"menuitem\"]'),\n );\n if (!items.length) return;\n const currentIndex = items.indexOf(document.activeElement as HTMLElement);\n\n switch (e.key) {\n case 'ArrowDown': {\n e.preventDefault();\n items[(currentIndex + 1 + items.length) % items.length].focus();\n break;\n }\n case 'ArrowUp': {\n e.preventDefault();\n items[(currentIndex - 1 + items.length) % items.length].focus();\n break;\n }\n case 'Home': {\n e.preventDefault();\n items[0].focus();\n break;\n }\n case 'End': {\n e.preventDefault();\n items[items.length - 1].focus();\n break;\n }\n case 'Escape': {\n if (this.popup()) {\n e.preventDefault();\n this.hide();\n }\n break;\n }\n case ' ': {\n if (document.activeElement instanceof HTMLAnchorElement) {\n e.preventDefault();\n document.activeElement.click();\n }\n break;\n }\n }\n }\n}\n","import { Component, ElementRef, inject, input, signal } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { RouterLink } from '@angular/router';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { MenuItem } from '../../interfaces/menu-item';\n\n@Component({\n selector: 'f-menubar',\n imports: [UiIconComponent, NgTemplateOutlet, RouterLink],\n host: {\n class: 'block',\n '(document:click)': 'onDocumentClick($event)',\n },\n template: `\n <ng-template #contentTpl let-item>\n @if (item.icon) { <ui-icon [name]=\"item.icon\" class=\"text-xs text-(--f-text-muted-color) shrink-0\"></ui-icon> }\n <span class=\"flex-1 truncate\">{{ item.label }}</span>\n @if (item.items?.length) { <ui-icon name=\"chevron-right\" class=\"text-[10px] text-(--f-text-muted-color) shrink-0\"></ui-icon> }\n </ng-template>\n\n <ng-template #submenuTpl let-list>\n <ul class=\"py-1 min-w-[12rem] bg-(--f-overlay-popover-background) border border-(--f-content-border-color) rounded-lg shadow-lg overflow-visible\" role=\"menu\" (keydown)=\"onSubmenuKeydown($event)\">\n @for (item of list; track $index) {\n @if (item.separator) {\n <li class=\"my-1 border-t border-(--f-content-border-color)\" role=\"separator\"></li>\n } @else if (item.visible !== false) {\n @let itemClass = item.disabled\n ? 'w-full flex items-center gap-2.5 px-3 py-2 text-sm text-left transition-colors opacity-60 pointer-events-none text-(--f-text-muted-color) focus:outline-none focus-visible:ring-focus'\n : 'w-full flex items-center gap-2.5 px-3 py-2 text-sm text-left transition-colors text-(--f-text-color) hover:bg-(--f-content-hover-background) cursor-pointer focus:outline-none focus-visible:ring-focus';\n <li role=\"none\" class=\"relative\" (mouseenter)=\"onSubEnter(item)\" (mouseleave)=\"onSubLeave(item)\">\n @if (item.routerLink) {\n <a role=\"menuitem\" [class]=\"itemClass\" [routerLink]=\"item.routerLink\" [queryParams]=\"item.queryParams\" (click)=\"onItemClick($event, item)\">\n <ng-container [ngTemplateOutlet]=\"contentTpl\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </a>\n } @else if (item.url) {\n <a role=\"menuitem\" [class]=\"itemClass\" [href]=\"item.url\" [target]=\"item.target ?? null\" (click)=\"onItemClick($event, item)\">\n <ng-container [ngTemplateOutlet]=\"contentTpl\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </a>\n } @else {\n <button type=\"button\" role=\"menuitem\" [class]=\"itemClass\" (click)=\"onItemClick($event, item)\">\n <ng-container [ngTemplateOutlet]=\"contentTpl\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </button>\n }\n @if (item.items?.length && activeSubItem() === item) {\n <div class=\"absolute left-full top-0 -mt-1 ml-0.5\">\n <ng-container [ngTemplateOutlet]=\"submenuTpl\" [ngTemplateOutletContext]=\"{ $implicit: item.items }\" />\n </div>\n }\n </li>\n }\n }\n </ul>\n </ng-template>\n\n <ul class=\"flex items-center gap-1 p-1.5 bg-(--f-content-background) border border-(--f-content-border-color) rounded-lg\" role=\"menubar\" (keydown)=\"onRootKeydown($event)\">\n @for (item of model(); track $index) {\n @if (item.visible !== false) {\n @let rootClass = item.disabled\n ? 'flex items-center gap-2 px-3 py-2 text-sm font-medium rounded-md transition-colors opacity-60 pointer-events-none text-(--f-text-muted-color) focus:outline-none focus-visible:ring-focus'\n : (activeRoot() === item\n ? 'flex items-center gap-2 px-3 py-2 text-sm font-medium rounded-md transition-colors bg-(--f-content-hover-background) text-(--f-text-color) cursor-pointer focus:outline-none focus-visible:ring-focus'\n : 'flex items-center gap-2 px-3 py-2 text-sm font-medium rounded-md transition-colors text-(--f-text-color) hover:bg-(--f-content-hover-background) cursor-pointer focus:outline-none focus-visible:ring-focus');\n <li class=\"relative\" role=\"none\" (mouseenter)=\"onRootEnter(item)\" (mouseleave)=\"onRootLeave(item)\">\n @if (item.routerLink) {\n <a role=\"menuitem\" [class]=\"rootClass\" [routerLink]=\"item.routerLink\" [queryParams]=\"item.queryParams\" (click)=\"onRootClick($event, item)\">\n @if (item.icon) { <ui-icon [name]=\"item.icon\" class=\"text-xs\"></ui-icon> }\n <span>{{ item.label }}</span>\n @if (item.items?.length) { <ui-icon name=\"chevron-down\" class=\"text-[10px]\"></ui-icon> }\n </a>\n } @else if (item.url) {\n <a role=\"menuitem\" [class]=\"rootClass\" [href]=\"item.url\" [target]=\"item.target ?? null\" (click)=\"onRootClick($event, item)\">\n @if (item.icon) { <ui-icon [name]=\"item.icon\" class=\"text-xs\"></ui-icon> }\n <span>{{ item.label }}</span>\n @if (item.items?.length) { <ui-icon name=\"chevron-down\" class=\"text-[10px]\"></ui-icon> }\n </a>\n } @else {\n <button type=\"button\" role=\"menuitem\" [class]=\"rootClass\" (click)=\"onRootClick($event, item)\">\n @if (item.icon) { <ui-icon [name]=\"item.icon\" class=\"text-xs\"></ui-icon> }\n <span>{{ item.label }}</span>\n @if (item.items?.length) { <ui-icon name=\"chevron-down\" class=\"text-[10px]\"></ui-icon> }\n </button>\n }\n @if (item.items?.length && activeRoot() === item) {\n <div class=\"absolute left-0 top-full mt-1\">\n <ng-container [ngTemplateOutlet]=\"submenuTpl\" [ngTemplateOutletContext]=\"{ $implicit: item.items }\" />\n </div>\n }\n </li>\n }\n }\n </ul>\n `,\n})\nexport class MenubarComponent {\n private readonly _el = inject(ElementRef);\n\n readonly model = input<MenuItem[]>([]);\n\n private readonly _activeRoot = signal<MenuItem | null>(null);\n readonly activeRoot = this._activeRoot.asReadonly();\n private readonly _activeSubItem = signal<MenuItem | null>(null);\n readonly activeSubItem = this._activeSubItem.asReadonly();\n\n onRootEnter(item: MenuItem): void {\n if (this.activeRoot() && item.items?.length) this._activeRoot.set(item);\n }\n\n onRootLeave(item: MenuItem): void {\n if (this.activeRoot() === item) this._activeRoot.set(null);\n }\n\n onRootClick(e: Event, item: MenuItem): void {\n if (item.disabled) return;\n if (item.items?.length) {\n this._activeRoot.set(this.activeRoot() === item ? null : item);\n return;\n }\n item.command?.({ originalEvent: e, item });\n this._activeRoot.set(null);\n }\n\n onSubEnter(item: MenuItem): void {\n if (item.items?.length) this._activeSubItem.set(item);\n }\n\n onSubLeave(item: MenuItem): void {\n if (this.activeSubItem() === item) this._activeSubItem.set(null);\n }\n\n onItemClick(e: Event, item: MenuItem): void {\n if (item.disabled || item.items?.length) return;\n item.command?.({ originalEvent: e, item });\n this._activeRoot.set(null);\n this._activeSubItem.set(null);\n }\n\n onDocumentClick(e: MouseEvent): void {\n if (!this._el.nativeElement.contains(e.target)) {\n this._activeRoot.set(null);\n this._activeSubItem.set(null);\n }\n }\n\n onRootKeydown(e: KeyboardEvent): void {\n const items = Array.from(\n (e.currentTarget as HTMLElement).querySelectorAll<HTMLElement>(':scope > li[role=\"none\"] > [role=\"menuitem\"]'),\n );\n if (!items.length) return;\n const currentIndex = items.indexOf(document.activeElement as HTMLElement);\n\n switch (e.key) {\n case 'ArrowRight':\n e.preventDefault();\n items[(currentIndex + 1 + items.length) % items.length]?.focus();\n break;\n case 'ArrowLeft':\n e.preventDefault();\n items[(currentIndex - 1 + items.length) % items.length]?.focus();\n break;\n case 'ArrowDown': {\n e.preventDefault();\n const li = (document.activeElement as HTMLElement)?.closest('li');\n const trigger = li?.querySelector<HTMLElement>(':scope > [role=\"menuitem\"]');\n if (trigger) trigger.click();\n break;\n }\n case 'Escape':\n e.preventDefault();\n this._activeRoot.set(null);\n this._activeSubItem.set(null);\n break;\n case ' ':\n if (document.activeElement instanceof HTMLAnchorElement) {\n e.preventDefault();\n document.activeElement.click();\n }\n break;\n }\n }\n\n onSubmenuKeydown(e: KeyboardEvent): void {\n e.stopPropagation();\n const ul = (e.target as HTMLElement).closest('ul');\n if (!ul) return;\n const items = Array.from(ul.querySelectorAll<HTMLElement>(':scope > li[role=\"none\"] > [role=\"menuitem\"]'));\n const currentIndex = items.indexOf(document.activeElement as HTMLElement);\n\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n items[(currentIndex + 1 + items.length) % items.length]?.focus();\n break;\n case 'ArrowUp':\n e.preventDefault();\n items[(currentIndex - 1 + items.length) % items.length]?.focus();\n break;\n case 'Home':\n e.preventDefault();\n items[0]?.focus();\n break;\n case 'End':\n e.preventDefault();\n items[items.length - 1]?.focus();\n break;\n case 'Escape':\n e.preventDefault();\n this._activeRoot.set(null);\n this._activeSubItem.set(null);\n break;\n case ' ':\n if (document.activeElement instanceof HTMLAnchorElement) {\n e.preventDefault();\n document.activeElement.click();\n }\n break;\n }\n }\n}\n","import {\n booleanAttribute,\n Component,\n ElementRef,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { RouterLink } from '@angular/router';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { MenuItem } from '../../interfaces/menu-item';\n\n@Component({\n selector: 'f-tieredmenu',\n imports: [UiIconComponent, NgTemplateOutlet, RouterLink],\n host: { class: 'block', '(document:click)': 'onDocumentClick($event)' },\n template: `\n <ng-template #contentTpl let-item>\n @if (item.icon) {\n <ui-icon [name]=\"item.icon\" class=\"text-xs text-(--f-text-muted-color) shrink-0\"></ui-icon>\n }\n <span class=\"flex-1 truncate\">{{ item.label }}</span>\n @if (item.items?.length) {\n <ui-icon name=\"chevron-right\" class=\"text-[10px] text-(--f-text-muted-color) shrink-0\"></ui-icon>\n }\n </ng-template>\n\n <ng-template #itemsTpl let-list let-root=\"root\">\n <ul\n [class]=\"root\n ? 'py-1 min-w-[12rem] bg-(--f-overlay-popover-background) border border-(--f-content-border-color) rounded-lg shadow-lg overflow-visible'\n : 'py-1 min-w-[12rem] bg-(--f-overlay-popover-background) border border-(--f-content-border-color) rounded-lg shadow-lg overflow-visible absolute left-full top-0 -mt-1 ml-0.5'\"\n role=\"menu\"\n >\n @for (item of list; track $index) {\n @if (item.separator) {\n <li class=\"my-1 border-t border-(--f-content-border-color)\" role=\"separator\"></li>\n } @else if (item.visible !== false) {\n @let itemClass = item.disabled\n ? 'w-full flex items-center gap-2.5 px-3 py-2 text-sm text-left transition-colors opacity-60 pointer-events-none text-(--f-text-muted-color) focus:outline-none focus-visible:ring-focus'\n : 'w-full flex items-center gap-2.5 px-3 py-2 text-sm text-left transition-colors text-(--f-text-color) hover:bg-(--f-content-hover-background) cursor-pointer focus:outline-none focus-visible:ring-focus';\n <li role=\"none\" class=\"relative\" (mouseenter)=\"onEnter(item)\" (mouseleave)=\"onLeave(item)\">\n @if (item.routerLink) {\n <a\n role=\"menuitem\"\n [class]=\"itemClass\"\n [routerLink]=\"item.routerLink\"\n [queryParams]=\"item.queryParams\"\n (click)=\"onItemClick($event, item)\"\n (keydown.arrowRight)=\"onArrowRight($event, item)\"\n (keydown.arrowLeft)=\"onArrowLeft($event)\"\n >\n <ng-container [ngTemplateOutlet]=\"contentTpl\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </a>\n } @else if (item.url) {\n <a\n role=\"menuitem\"\n [class]=\"itemClass\"\n [href]=\"item.url\"\n [target]=\"item.target ?? null\"\n (click)=\"onItemClick($event, item)\"\n (keydown.arrowRight)=\"onArrowRight($event, item)\"\n (keydown.arrowLeft)=\"onArrowLeft($event)\"\n >\n <ng-container [ngTemplateOutlet]=\"contentTpl\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </a>\n } @else {\n <button\n type=\"button\"\n role=\"menuitem\"\n [class]=\"itemClass\"\n (click)=\"onItemClick($event, item)\"\n (keydown.arrowRight)=\"onArrowRight($event, item)\"\n (keydown.arrowLeft)=\"onArrowLeft($event)\"\n >\n <ng-container [ngTemplateOutlet]=\"contentTpl\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </button>\n }\n @if (item.items?.length && activeItem() === item) {\n <ng-container [ngTemplateOutlet]=\"itemsTpl\" [ngTemplateOutletContext]=\"{ $implicit: item.items, root: false }\" />\n }\n </li>\n }\n }\n </ul>\n </ng-template>\n\n @if (!popup() || visible()) {\n <div class=\"relative inline-block\" (keydown)=\"onKeydown($event)\">\n <ng-container [ngTemplateOutlet]=\"itemsTpl\" [ngTemplateOutletContext]=\"{ $implicit: model(), root: true }\" />\n </div>\n }\n `,\n})\nexport class TieredMenuComponent {\n private readonly _el = inject(ElementRef);\n\n readonly model = input<MenuItem[]>([]);\n readonly popup = input(false, { transform: booleanAttribute });\n\n private readonly _visible = signal(false);\n readonly visible = this._visible.asReadonly();\n private readonly _activeItem = signal<MenuItem | null>(null);\n readonly activeItem = this._activeItem.asReadonly();\n private _openedAt = 0;\n\n toggle(event?: Event): void {\n event?.stopPropagation();\n this._openedAt = Date.now();\n this._visible.update(v => !v);\n }\n\n show(event?: Event): void {\n event?.stopPropagation();\n this._openedAt = Date.now();\n this._visible.set(true);\n }\n\n hide(): void { this._visible.set(false); this._activeItem.set(null); }\n\n onEnter(item: MenuItem): void {\n if (item.items?.length) this._activeItem.set(item);\n }\n\n onLeave(item: MenuItem): void {\n if (this.activeItem() === item) this._activeItem.set(null);\n }\n\n onDocumentClick(e: MouseEvent): void {\n if (Date.now() - this._openedAt < 50) return;\n if (this.popup() && this.visible() && !this._el.nativeElement.contains(e.target)) {\n this.hide();\n }\n }\n\n onItemClick(e: Event, item: MenuItem): void {\n if (item.disabled || item.items?.length) return;\n item.command?.({ originalEvent: e, item });\n if (this.popup()) this.hide();\n }\n\n onArrowRight(e: Event, item: MenuItem): void {\n if (!item.items?.length) return;\n e.preventDefault();\n e.stopPropagation();\n this._activeItem.set(item);\n const li = (e.target as HTMLElement).closest('li');\n queueMicrotask(() => {\n const firstChild = li?.querySelector<HTMLElement>(':scope > ul > li[role=\"none\"] > [role=\"menuitem\"]');\n firstChild?.focus();\n });\n }\n\n onArrowLeft(e: Event): void {\n const target = e.target as HTMLElement;\n const ul = target.closest('ul');\n const parentLi = ul?.parentElement?.closest('li');\n const parentTrigger = parentLi?.querySelector<HTMLElement>(':scope > [role=\"menuitem\"]');\n if (parentTrigger) {\n e.preventDefault();\n e.stopPropagation();\n this._activeItem.set(null);\n parentTrigger.focus();\n }\n }\n\n onKeydown(e: KeyboardEvent): void {\n const target = document.activeElement as HTMLElement;\n const ul = target?.closest('ul');\n if (!ul) return;\n const items = Array.from(ul.querySelectorAll<HTMLElement>(':scope > li[role=\"none\"] > [role=\"menuitem\"]'));\n const currentIndex = items.indexOf(target);\n\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n items[(currentIndex + 1 + items.length) % items.length]?.focus();\n break;\n case 'ArrowUp':\n e.preventDefault();\n items[(currentIndex - 1 + items.length) % items.length]?.focus();\n break;\n case 'Home':\n e.preventDefault();\n items[0]?.focus();\n break;\n case 'End':\n e.preventDefault();\n items[items.length - 1]?.focus();\n break;\n case 'Escape':\n if (this.popup()) {\n e.preventDefault();\n this.hide();\n }\n break;\n case ' ':\n if (document.activeElement instanceof HTMLAnchorElement) {\n e.preventDefault();\n document.activeElement.click();\n }\n break;\n }\n }\n}\n","import {\n Component,\n ElementRef,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { RouterLink } from '@angular/router';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { MenuItem } from '../../interfaces/menu-item';\n\n@Component({\n selector: 'f-contextmenu',\n imports: [UiIconComponent, NgTemplateOutlet, RouterLink],\n host: {\n class: 'block',\n '(document:click)': 'onDocumentClick($event)',\n '(document:contextmenu)': 'onDocumentContextMenu($event)',\n },\n template: `\n <ng-template #contentTpl let-item>\n @if (item.icon) {\n <ui-icon [name]=\"item.icon\" class=\"text-xs text-(--f-text-muted-color) shrink-0\"></ui-icon>\n }\n <span class=\"flex-1 truncate\">{{ item.label }}</span>\n </ng-template>\n\n @if (visible()) {\n <div\n class=\"fixed z-[60] min-w-[12rem] bg-(--f-overlay-popover-background) border border-(--f-content-border-color) rounded-lg shadow-lg overflow-hidden\"\n [style.top.px]=\"y()\"\n [style.left.px]=\"x()\"\n >\n <ul class=\"py-1\" role=\"menu\" (keydown)=\"onKeydown($event)\">\n @for (item of model(); track $index) {\n @if (item.separator) {\n <li class=\"my-1 border-t border-(--f-content-border-color)\" role=\"separator\"></li>\n } @else if (item.visible !== false) {\n @let itemClass = item.disabled\n ? 'w-full flex items-center gap-2.5 px-3 py-2 text-sm text-left transition-colors opacity-60 pointer-events-none text-(--f-text-muted-color) focus:outline-none focus-visible:ring-focus'\n : 'w-full flex items-center gap-2.5 px-3 py-2 text-sm text-left transition-colors text-(--f-text-color) hover:bg-(--f-content-hover-background) cursor-pointer focus:outline-none focus-visible:ring-focus';\n <li role=\"none\">\n @if (item.routerLink) {\n <a role=\"menuitem\" [class]=\"itemClass\" [routerLink]=\"item.routerLink\" [queryParams]=\"item.queryParams\" (click)=\"onItemClick($event, item)\">\n <ng-container [ngTemplateOutlet]=\"contentTpl\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </a>\n } @else if (item.url) {\n <a role=\"menuitem\" [class]=\"itemClass\" [href]=\"item.url\" [target]=\"item.target ?? null\" (click)=\"onItemClick($event, item)\">\n <ng-container [ngTemplateOutlet]=\"contentTpl\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </a>\n } @else {\n <button type=\"button\" role=\"menuitem\" [class]=\"itemClass\" (click)=\"onItemClick($event, item)\">\n <ng-container [ngTemplateOutlet]=\"contentTpl\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </button>\n }\n </li>\n }\n }\n </ul>\n </div>\n }\n `,\n})\nexport class ContextMenuComponent {\n private readonly _el = inject(ElementRef);\n\n readonly model = input<MenuItem[]>([]);\n readonly target = input<string>('');\n\n private readonly _visible = signal(false);\n readonly visible = this._visible.asReadonly();\n private readonly _x = signal(0);\n readonly x = this._x.asReadonly();\n private readonly _y = signal(0);\n readonly y = this._y.asReadonly();\n\n show(event: MouseEvent): void {\n event.preventDefault();\n this._x.set(event.clientX);\n this._y.set(event.clientY);\n this._visible.set(true);\n }\n\n hide(): void { this._visible.set(false); }\n\n onDocumentContextMenu(e: MouseEvent): void {\n const sel = this.target();\n if (!sel) return;\n const targetEl = (e.target as HTMLElement)?.closest(sel);\n if (targetEl) this.show(e);\n }\n\n onDocumentClick(e: MouseEvent): void {\n if (this.visible() && !this._el.nativeElement.contains(e.target)) {\n this._visible.set(false);\n }\n }\n\n onItemClick(e: Event, item: MenuItem): void {\n if (item.disabled) return;\n item.command?.({ originalEvent: e, item });\n this._visible.set(false);\n }\n\n onKeydown(e: KeyboardEvent): void {\n const items = Array.from(\n (e.currentTarget as HTMLElement).querySelectorAll<HTMLElement>('[role=\"menuitem\"]'),\n );\n if (!items.length) return;\n const currentIndex = items.indexOf(document.activeElement as HTMLElement);\n\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n items[(currentIndex + 1 + items.length) % items.length].focus();\n break;\n case 'ArrowUp':\n e.preventDefault();\n items[(currentIndex - 1 + items.length) % items.length].focus();\n break;\n case 'Home':\n e.preventDefault();\n items[0].focus();\n break;\n case 'End':\n e.preventDefault();\n items[items.length - 1].focus();\n break;\n case 'Escape':\n e.preventDefault();\n this.hide();\n break;\n case ' ':\n if (document.activeElement instanceof HTMLAnchorElement) {\n e.preventDefault();\n document.activeElement.click();\n }\n break;\n }\n }\n}\n","import { Component, ElementRef, inject, input, signal } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { MenuItem } from '../../interfaces/menu-item';\n\n@Component({\n selector: 'f-megamenu',\n imports: [UiIconComponent, RouterLink],\n host: { class: 'block relative', '(document:click)': 'onDocumentClick($event)' },\n template: `\n <ul class=\"flex items-center gap-1 p-1.5 bg-(--f-content-background) border border-(--f-content-border-color) rounded-lg relative\">\n @for (item of model(); track $index) {\n @if (item.visible !== false) {\n @let rootClass = item.disabled\n ? 'flex items-center gap-2 px-3 py-2 text-sm font-medium rounded-md transition-colors opacity-60 pointer-events-none text-(--f-text-muted-color) focus:outline-none focus-visible:ring-focus'\n : (activeItem() === item\n ? 'flex items-center gap-2 px-3 py-2 text-sm font-medium rounded-md transition-colors bg-(--f-content-hover-background) text-(--f-text-color) cursor-pointer focus:outline-none focus-visible:ring-focus'\n : 'flex items-center gap-2 px-3 py-2 text-sm font-medium rounded-md transition-colors text-(--f-text-color) hover:bg-(--f-content-hover-background) cursor-pointer focus:outline-none focus-visible:ring-focus');\n <li class=\"relative\">\n @if (item.routerLink) {\n <a [class]=\"rootClass\" [routerLink]=\"item.routerLink\" [queryParams]=\"item.queryParams\" (click)=\"onRootClick($event, item)\">\n @if (item.icon) { <ui-icon [name]=\"item.icon\" class=\"text-xs\"></ui-icon> }\n <span>{{ item.label }}</span>\n @if (item.items?.length) { <ui-icon name=\"chevron-down\" class=\"text-[10px]\"></ui-icon> }\n </a>\n } @else if (item.url) {\n <a [class]=\"rootClass\" [href]=\"item.url\" [target]=\"item.target ?? null\" (click)=\"onRootClick($event, item)\">\n @if (item.icon) { <ui-icon [name]=\"item.icon\" class=\"text-xs\"></ui-icon> }\n <span>{{ item.label }}</span>\n @if (item.items?.length) { <ui-icon name=\"chevron-down\" class=\"text-[10px]\"></ui-icon> }\n </a>\n } @else {\n <button type=\"button\" [class]=\"rootClass\" (click)=\"onRootClick($event, item)\">\n @if (item.icon) { <ui-icon [name]=\"item.icon\" class=\"text-xs\"></ui-icon> }\n <span>{{ item.label }}</span>\n @if (item.items?.length) { <ui-icon name=\"chevron-down\" class=\"text-[10px]\"></ui-icon> }\n </button>\n }\n\n @if (item.items?.length && activeItem() === item) {\n <div class=\"absolute left-0 top-full mt-1 z-50 flex gap-8 p-5 bg-(--f-overlay-popover-background) border border-(--f-content-border-color) rounded-lg shadow-lg min-w-max\">\n @for (column of item.items; track $index) {\n <div class=\"min-w-[10rem]\">\n @if (column.label) {\n <div class=\"text-xs font-semibold uppercase tracking-wide text-(--f-text-muted-color) mb-2\">{{ column.label }}</div>\n }\n <ul class=\"flex flex-col gap-1\">\n @for (link of column.items; track $index) {\n @let linkClass = link.disabled\n ? 'w-full flex items-center gap-2 px-2 py-1.5 text-sm text-left rounded-md transition-colors opacity-60 pointer-events-none text-(--f-text-muted-color) focus:outline-none focus-visible:ring-focus'\n : 'w-full flex items-center gap-2 px-2 py-1.5 text-sm text-left rounded-md transition-colors text-(--f-text-color) hover:bg-(--f-content-hover-background) cursor-pointer focus:outline-none focus-visible:ring-focus';\n <li>\n @if (link.routerLink) {\n <a [class]=\"linkClass\" [routerLink]=\"link.routerLink\" [queryParams]=\"link.queryParams\" (click)=\"onLeafClick($event, link)\">\n @if (link.icon) { <ui-icon [name]=\"link.icon\" class=\"text-xs text-(--f-text-muted-color)\"></ui-icon> }\n {{ link.label }}\n </a>\n } @else if (link.url) {\n <a [class]=\"linkClass\" [href]=\"link.url\" [target]=\"link.target ?? null\" (click)=\"onLeafClick($event, link)\">\n @if (link.icon) { <ui-icon [name]=\"link.icon\" class=\"text-xs text-(--f-text-muted-color)\"></ui-icon> }\n {{ link.label }}\n </a>\n } @else {\n <button type=\"button\" [class]=\"linkClass\" (click)=\"onLeafClick($event, link)\">\n @if (link.icon) { <ui-icon [name]=\"link.icon\" class=\"text-xs text-(--f-text-muted-color)\"></ui-icon> }\n {{ link.label }}\n </button>\n }\n </li>\n }\n </ul>\n </div>\n }\n </div>\n }\n </li>\n }\n }\n </ul>\n `,\n})\nexport class MegaMenuComponent {\n private readonly _el = inject(ElementRef);\n\n readonly model = input<MenuItem[]>([]);\n\n private readonly _activeItem = signal<MenuItem | null>(null);\n readonly activeItem = this._activeItem.asReadonly();\n\n onRootClick(e: Event, item: MenuItem): void {\n if (item.disabled) return;\n if (item.items?.length) {\n this._activeItem.set(this.activeItem() === item ? null : item);\n return;\n }\n item.command?.({ originalEvent: e, item });\n this._activeItem.set(null);\n }\n\n onLeafClick(e: Event, item: MenuItem): void {\n if (item.disabled) return;\n item.command?.({ originalEvent: e, item });\n this._activeItem.set(null);\n }\n\n onDocumentClick(e: MouseEvent): void {\n if (!this._el.nativeElement.contains(e.target)) this._activeItem.set(null);\n }\n}\n","import { Component, effect, input, signal } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { RouterLink } from '@angular/router';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { MenuItem } from '../../interfaces/menu-item';\n\n@Component({\n selector: 'f-panelmenu',\n imports: [UiIconComponent, NgTemplateOutlet, RouterLink],\n host: { class: 'block w-full' },\n template: `\n <ng-template #contentTpl let-item let-level=\"level\">\n @if (item.items?.length) {\n <ui-icon name=\"chevron-right\" class=\"text-[10px] text-(--f-text-muted-color) shrink-0 transition-transform duration-[var(--f-transition-duration)]\" [class.rotate-90]=\"isExpanded(item)\"></ui-icon>\n } @else {\n <span class=\"inline-block w-2.5\"></span>\n }\n @if (item.icon) { <ui-icon [name]=\"item.icon\" class=\"text-xs text-(--f-text-muted-color) shrink-0\"></ui-icon> }\n <span class=\"flex-1 truncate\">{{ item.label }}</span>\n </ng-template>\n\n <ng-template #itemsTpl let-list let-level=\"level\">\n <ul [class.pl-4]=\"level > 0\" (keydown)=\"onKeydown($event)\">\n @for (item of list; track $index) {\n @if (item.visible !== false) {\n @let itemClass = item.disabled\n ? 'w-full flex items-center gap-2.5 px-3 py-2.5 text-sm text-left rounded-md transition-colors opacity-60 pointer-events-none text-(--f-text-muted-color) focus:outline-none focus-visible:ring-focus'\n : 'w-full flex items-center gap-2.5 px-3 py-2.5 text-sm text-left rounded-md transition-colors text-(--f-text-color) hover:bg-(--f-content-hover-background) cursor-pointer focus:outline-none focus-visible:ring-focus';\n <li>\n @if (item.routerLink) {\n <a role=\"treeitem\" [class]=\"itemClass\" [routerLink]=\"item.routerLink\" [queryParams]=\"item.queryParams\" (click)=\"onItemClick($event, item)\">\n <ng-container [ngTemplateOutlet]=\"contentTpl\" [ngTemplateOutletContext]=\"{ $implicit: item, level: level }\" />\n </a>\n } @else if (item.url) {\n <a role=\"treeitem\" [class]=\"itemClass\" [href]=\"item.url\" [target]=\"item.target ?? null\" (click)=\"onItemClick($event, item)\">\n <ng-container [ngTemplateOutlet]=\"contentTpl\" [ngTemplateOutletContext]=\"{ $implicit: item, level: level }\" />\n </a>\n } @else {\n <button type=\"button\" role=\"treeitem\" [class]=\"itemClass\" (click)=\"onItemClick($event, item)\">\n <ng-container [ngTemplateOutlet]=\"contentTpl\" [ngTemplateOutletContext]=\"{ $implicit: item, level: level }\" />\n </button>\n }\n @if (item.items?.length) {\n <div class=\"grid [transition:grid-template-rows_220ms_ease]\" [style.grid-template-rows]=\"isExpanded(item) ? '1fr' : '0fr'\">\n <div class=\"overflow-hidden\">\n <ng-container [ngTemplateOutlet]=\"itemsTpl\" [ngTemplateOutletContext]=\"{ $implicit: item.items, level: level + 1 }\" />\n </div>\n </div>\n }\n </li>\n }\n }\n </ul>\n </ng-template>\n\n <div class=\"w-full bg-(--f-content-background) border border-(--f-content-border-color) rounded-lg p-1.5\">\n <ng-container [ngTemplateOutlet]=\"itemsTpl\" [ngTemplateOutletContext]=\"{ $implicit: model(), level: 0 }\" />\n </div>\n `,\n})\nexport class PanelMenuComponent {\n readonly model = input<MenuItem[]>([]);\n readonly multiple = input<boolean>(true);\n\n private readonly expanded = signal<Set<MenuItem>>(new Set());\n private _seeded = false;\n\n constructor() {\n effect(() => {\n const list = this.model();\n if (this._seeded || list.length === 0) return;\n this._seeded = true;\n const seed = new Set<MenuItem>();\n const collect = (items: MenuItem[]): void => {\n for (const it of items) {\n if (it.expanded) seed.add(it);\n if (it.items?.length) collect(it.items);\n }\n };\n collect(list);\n if (seed.size) this.expanded.set(seed);\n });\n }\n\n isExpanded(item: MenuItem): boolean {\n return this.expanded().has(item);\n }\n\n onItemClick(e: Event, item: MenuItem): void {\n if (item.disabled) return;\n if (item.items?.length) {\n this.expanded.update(s => {\n const next = this.multiple() ? new Set(s) : new Set<MenuItem>();\n next.has(item) ? next.delete(item) : next.add(item);\n return next;\n });\n return;\n }\n item.command?.({ originalEvent: e, item });\n }\n\n onKeydown(e: KeyboardEvent): void {\n const ul = e.currentTarget as HTMLElement;\n const items = Array.from(ul.querySelectorAll<HTMLElement>(':scope > li > [role=\"treeitem\"]'));\n if (!items.length) return;\n const currentIndex = items.indexOf(document.activeElement as HTMLElement);\n\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n e.stopPropagation();\n items[(currentIndex + 1 + items.length) % items.length]?.focus();\n break;\n case 'ArrowUp':\n e.preventDefault();\n e.stopPropagation();\n items[(currentIndex - 1 + items.length) % items.length]?.focus();\n break;\n case 'Home':\n e.preventDefault();\n e.stopPropagation();\n items[0]?.focus();\n break;\n case 'End':\n e.preventDefault();\n e.stopPropagation();\n items[items.length - 1]?.focus();\n break;\n case ' ':\n if (document.activeElement instanceof HTMLAnchorElement) {\n e.preventDefault();\n document.activeElement.click();\n }\n break;\n }\n }\n}\n","import { Component, input } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { MenuItem } from '../../interfaces/menu-item';\n\n@Component({\n selector: 'f-breadcrumb',\n imports: [UiIconComponent, RouterLink],\n host: { class: 'block' },\n template: `\n <nav aria-label=\"breadcrumb\">\n <ol class=\"flex items-center gap-2 text-sm flex-wrap\">\n @if (home()) {\n <li class=\"flex items-center gap-2\">\n @if (home()!.routerLink) {\n <a class=\"text-(--f-text-muted-color) hover:text-(--f-text-color) transition-colors cursor-pointer focus:outline-none focus-visible:ring-focus\" [routerLink]=\"home()!.routerLink\" [queryParams]=\"home()!.queryParams\" (click)=\"onItemClick($event, home()!)\">\n <ui-icon [name]=\"home()!.icon || 'home'\" class=\"text-xs\"></ui-icon>\n </a>\n } @else if (home()!.url) {\n <a class=\"text-(--f-text-muted-color) hover:text-(--f-text-color) transition-colors cursor-pointer focus:outline-none focus-visible:ring-focus\" [href]=\"home()!.url\" [target]=\"home()!.target ?? null\" (click)=\"onItemClick($event, home()!)\">\n <ui-icon [name]=\"home()!.icon || 'home'\" class=\"text-xs\"></ui-icon>\n </a>\n } @else {\n <button type=\"button\" class=\"text-(--f-text-muted-color) hover:text-(--f-text-color) transition-colors cursor-pointer focus:outline-none focus-visible:ring-focus\" (click)=\"onItemClick($event, home()!)\">\n <ui-icon [name]=\"home()!.icon || 'home'\" class=\"text-xs\"></ui-icon>\n </button>\n }\n @if (model().length) { <ui-icon name=\"chevron-right\" class=\"text-[10px] text-(--f-text-muted-color)\"></ui-icon> }\n </li>\n }\n @for (item of model(); track $index) {\n <li class=\"flex items-center gap-2\">\n @let itemClass = $last\n ? 'transition-colors text-(--f-text-color) font-medium pointer-events-none focus:outline-none focus-visible:ring-focus'\n : 'transition-colors text-(--f-text-muted-color) hover:text-(--f-text-color) cursor-pointer focus:outline-none focus-visible:ring-focus';\n @if (item.routerLink) {\n <a [class]=\"itemClass\" [attr.aria-current]=\"$last ? 'page' : null\" [routerLink]=\"item.routerLink\" [queryParams]=\"item.queryParams\" (click)=\"onItemClick($event, item)\">\n @if (item.icon) { <ui-icon [name]=\"item.icon\" class=\"text-xs\"></ui-icon> }\n {{ item.label }}\n </a>\n } @else if (item.url) {\n <a [class]=\"itemClass\" [attr.aria-current]=\"$last ? 'page' : null\" [href]=\"item.url\" [target]=\"item.target ?? null\" (click)=\"onItemClick($event, item)\">\n @if (item.icon) { <ui-icon [name]=\"item.icon\" class=\"text-xs\"></ui-icon> }\n {{ item.label }}\n </a>\n } @else {\n <button type=\"button\" [class]=\"itemClass\" [attr.aria-current]=\"$last ? 'page' : null\" (click)=\"onItemClick($event, item)\">\n @if (item.icon) { <ui-icon [name]=\"item.icon\" class=\"text-xs\"></ui-icon> }\n {{ item.label }}\n </button>\n }\n @if (!$last) { <ui-icon name=\"chevron-right\" class=\"text-[10px] text-(--f-text-muted-color)\"></ui-icon> }\n </li>\n }\n </ol>\n </nav>\n `,\n})\nexport class BreadcrumbComponent {\n readonly model = input<MenuItem[]>([]);\n readonly home = input<MenuItem | null>(null);\n\n onItemClick(e: Event, item: MenuItem): void {\n if (item.disabled) return;\n item.command?.({ originalEvent: e, item });\n }\n}\n","import { booleanAttribute, Component, computed, ElementRef, inject, input, signal } from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { MenuItem } from '../../interfaces/menu-item';\n\nexport type SpeedDialDirection = 'up' | 'down' | 'left' | 'right';\nexport type SpeedDialType = 'linear' | 'circle';\n\nconst CIRCLE_ARCS: Record<SpeedDialDirection, [number, number]> = {\n up: [180, 360],\n down: [0, 180],\n left: [90, 270],\n right: [-90, 90],\n};\n\n@Component({\n selector: 'f-speeddial',\n imports: [UiIconComponent],\n host: {\n class: 'relative inline-flex',\n '(document:click)': 'onDocumentClick($event)',\n },\n template: `\n <div [class]=\"containerClass()\">\n @if (visible()) {\n @for (item of model(); track $index) {\n <button\n type=\"button\"\n class=\"w-10 h-10 rounded-full bg-(--f-content-background) border border-(--f-content-border-color) shadow-md flex items-center justify-center hover:bg-(--f-content-hover-background) transition-all duration-[var(--f-transition-duration)] cursor-pointer disabled:cursor-default disabled:pointer-events-none\"\n [class.opacity-60]=\"item.disabled\"\n [style]=\"itemStyle($index)\"\n [disabled]=\"item.disabled\"\n [attr.title]=\"item.label\"\n (click)=\"onItemClick($event, item)\"\n >\n <ui-icon [name]=\"item.icon || 'circle'\" class=\"text-sm\"></ui-icon>\n </button>\n }\n }\n <button\n type=\"button\"\n class=\"w-12 h-12 rounded-full bg-primary text-primary-contrast shadow-lg flex items-center justify-center hover:bg-primary-emphasis transition-transform duration-[var(--f-transition-duration)] cursor-pointer\"\n [class.rotate-45]=\"visible() && rotate()\"\n [class.relative]=\"type() === 'circle'\"\n [class.z-10]=\"type() === 'circle'\"\n (click)=\"toggle()\"\n >\n <ui-icon [name]=\"icon() || 'plus'\" class=\"text-base\"></ui-icon>\n </button>\n </div>\n `,\n})\nexport class SpeedDialComponent {\n readonly model = input<MenuItem[]>([]);\n readonly icon = input<string>('plus');\n readonly direction = input<SpeedDialDirection>('up');\n readonly rotate = input(true, { transform: booleanAttribute });\n readonly type = input<SpeedDialType>('linear');\n readonly radius = input<number>(80);\n\n private readonly _visible = signal(false);\n readonly visible = this._visible.asReadonly();\n\n private readonly _el = inject(ElementRef);\n\n onDocumentClick(e: MouseEvent): void {\n if (this.visible() && !this._el.nativeElement.contains(e.target)) {\n this._visible.set(false);\n }\n }\n\n readonly containerClass = computed(() => {\n if (this.type() === 'circle') return 'relative flex items-center justify-center';\n const dirMap: Record<SpeedDialDirection, string> = {\n up: 'flex flex-col-reverse items-center gap-2',\n down: 'flex flex-col items-center gap-2',\n left: 'flex flex-row-reverse items-center gap-2',\n right: 'flex flex-row items-center gap-2',\n };\n return dirMap[this.direction()];\n });\n\n itemStyle(i: number): Record<string, string> {\n if (this.type() !== 'circle') return {};\n const total = this.model().length;\n const [startDeg, endDeg] = CIRCLE_ARCS[this.direction()];\n const step = total > 1 ? (endDeg - startDeg) / (total - 1) : 0;\n const deg = startDeg + step * i;\n const rad = (deg * Math.PI) / 180;\n const r = this.radius();\n const x = Math.cos(rad) * r;\n const y = Math.sin(rad) * r;\n return {\n position: 'absolute',\n transform: `translate(${x}px, ${y}px)`,\n };\n }\n\n toggle(): void { this._visible.update(v => !v); }\n\n onItemClick(e: Event, item: MenuItem): void {\n if (item.disabled) return;\n item.command?.({ originalEvent: e, item });\n this._visible.set(false);\n }\n}\n","import { Component, computed, input, signal } from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { MenuItem } from '../../interfaces/menu-item';\n\nexport type DockPosition = 'bottom' | 'top' | 'left' | 'right';\n\n@Component({\n selector: 'f-dock',\n imports: [UiIconComponent],\n host: { class: 'inline-flex' },\n template: `\n <div [class]=\"containerClass()\">\n @for (item of model(); track $index) {\n <button\n type=\"button\"\n class=\"flex items-center justify-center w-11 h-11 rounded-xl transition-all duration-150 hover:bg-(--f-content-hover-background) cursor-pointer disabled:cursor-default disabled:pointer-events-none\"\n [class]=\"originClass()\"\n [class.scale-125]=\"hovered() === item\"\n [class.opacity-60]=\"item.disabled\"\n [disabled]=\"item.disabled\"\n [attr.title]=\"item.label\"\n (mouseenter)=\"onHover(item)\"\n (mouseleave)=\"onHover(null)\"\n (click)=\"onItemClick($event, item)\"\n >\n <ui-icon [name]=\"item.icon || 'app-window'\" class=\"text-xl\"></ui-icon>\n </button>\n }\n </div>\n `,\n})\nexport class DockComponent {\n readonly model = input<MenuItem[]>([]);\n readonly position = input<DockPosition>('bottom');\n\n private readonly _hovered = signal<MenuItem | null>(null);\n readonly hovered = this._hovered.asReadonly();\n\n readonly containerClass = computed(() => {\n const base = 'flex px-3 py-2 bg-(--f-content-background)/80 backdrop-blur-md border border-(--f-content-border-color) rounded-2xl shadow-lg';\n const dirMap: Record<DockPosition, string> = {\n bottom: `${base} flex-row items-end gap-1`,\n top: `${base} flex-row items-start gap-1`,\n left: `${base} flex-col items-start gap-1`,\n right: `${base} flex-col items-end gap-1`,\n };\n return dirMap[this.position()];\n });\n\n readonly originClass = computed(() => {\n const originMap: Record<DockPosition, string> = {\n bottom: 'origin-bottom',\n top: 'origin-top',\n left: 'origin-left',\n right: 'origin-right',\n };\n return originMap[this.position()];\n });\n\n onHover(item: MenuItem | null): void {\n this._hovered.set(item);\n }\n\n onItemClick(e: Event, item: MenuItem): void {\n if (item.disabled) return;\n item.command?.({ originalEvent: e, item });\n }\n}\n","import {\n Directive,\n ElementRef,\n forwardRef,\n inject,\n input,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { InputTextDirective } from '../input-text/input-text.directive';\n\nconst MASK_TOKENS: Record<string, RegExp> = {\n '9': /[0-9]/,\n a: /[a-zA-Z]/,\n '*': /[a-zA-Z0-9]/,\n};\n\n@Directive({\n selector: '[fInputMask]',\n hostDirectives: [InputTextDirective],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => InputMaskDirective), multi: true }],\n host: {\n '(input)': 'onInput($event)',\n '(blur)': 'onBlur()',\n },\n})\nexport class InputMaskDirective implements ControlValueAccessor {\n private readonly _el = inject(ElementRef<HTMLInputElement>);\n\n readonly fInputMask = input<string>('');\n readonly slotChar = input<string>('_');\n\n private _onChange: (v: string) => void = () => {};\n private _onTouched: () => void = () => {};\n\n onInput(e: Event): void {\n const raw = (e.target as HTMLInputElement).value;\n const formatted = this.format(raw);\n this._el.nativeElement.value = formatted;\n this._onChange(this.unmask(formatted));\n }\n\n onBlur(): void { this._onTouched(); }\n\n private format(raw: string): string {\n const mask = this.fInputMask();\n if (!mask) return raw;\n const chars = raw.replace(/[^a-zA-Z0-9]/g, '').split('');\n if (!chars.length) return '';\n let out = '';\n let ci = 0;\n let filledAny = false;\n for (const m of mask) {\n if (MASK_TOKENS[m]) {\n while (ci < chars.length && !MASK_TOKENS[m].test(chars[ci])) ci++;\n if (ci >= chars.length) {\n out += this.slotChar();\n } else {\n out += chars[ci];\n ci++;\n filledAny = true;\n }\n } else {\n out += m;\n }\n }\n return filledAny ? out : '';\n }\n\n private unmask(value: string): string {\n const mask = this.fInputMask();\n if (!mask) return value;\n let out = '';\n for (let i = 0; i < value.length; i++) {\n if (MASK_TOKENS[mask[i]] && value[i] !== this.slotChar()) out += value[i];\n }\n return out;\n }\n\n writeValue(v: string): void {\n this._el.nativeElement.value = v ? this.format(v) : '';\n }\n registerOnChange(fn: (v: string) => void): void { this._onChange = fn; }\n registerOnTouched(fn: () => void): void { this._onTouched = fn; }\n setDisabledState(isDisabled: boolean): void { this._el.nativeElement.disabled = isDisabled; }\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n ElementRef,\n forwardRef,\n input,\n signal,\n viewChildren,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\n@Component({\n selector: 'f-inputotp',\n host: { class: 'inline-block' },\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => InputOtpComponent), multi: true }],\n template: `\n <div class=\"flex items-center gap-2\">\n @for (i of indices(); track i) {\n <input\n #cell\n inputmode=\"numeric\"\n maxlength=\"1\"\n [attr.aria-label]=\"'Digit ' + (i + 1)\"\n [class]=\"cellClass()\"\n [value]=\"digits()[i] || ''\"\n [type]=\"mask() ? 'password' : 'text'\"\n [disabled]=\"disabled()\"\n (input)=\"onDigitInput($event, i)\"\n (keydown)=\"onKeydown($event, i)\"\n (paste)=\"onPaste($event)\"\n />\n }\n </div>\n `,\n})\nexport class InputOtpComponent implements ControlValueAccessor {\n readonly length = input<number>(4);\n readonly mask = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly integerOnly = input(true, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n\n readonly cells = viewChildren<ElementRef<HTMLInputElement>>('cell');\n\n readonly cellClass = computed(() => {\n const base = 'w-10 h-11 text-center text-lg font-semibold rounded-lg border bg-(--f-form-field-background) text-(--f-form-field-color) focus:outline-none focus:ring-focus transition-colors duration-[var(--f-transition-duration)] disabled:opacity-60';\n const borderClass = this.invalid() ? 'border-red-400 focus:border-red-400' : 'border-(--f-form-field-border-color) focus:border-primary';\n return `${base} ${borderClass}`;\n });\n\n private readonly _digits = signal<string[]>([]);\n readonly digits = this._digits.asReadonly();\n\n private _onChange: (v: string) => void = () => {};\n private _onTouched: () => void = () => {};\n\n indices(): number[] {\n return Array.from({ length: this.length() }, (_, i) => i);\n }\n\n onDigitInput(e: Event, i: number): void {\n const value = (e.target as HTMLInputElement).value;\n const ch = value.slice(-1);\n if (this.integerOnly() && ch && !/[0-9]/.test(ch)) {\n (e.target as HTMLInputElement).value = this.digits()[i] || '';\n return;\n }\n const next = [...this.digits()];\n next[i] = ch;\n this._digits.set(next);\n this.emitValue();\n if (ch && i < this.length() - 1) {\n this.cells()[i + 1]?.nativeElement.focus();\n }\n }\n\n onKeydown(e: KeyboardEvent, i: number): void {\n if (e.key === 'Backspace' && !this.digits()[i] && i > 0) {\n this.cells()[i - 1]?.nativeElement.focus();\n }\n if (e.key === 'ArrowLeft' && i > 0) this.cells()[i - 1]?.nativeElement.focus();\n if (e.key === 'ArrowRight' && i < this.length() - 1) this.cells()[i + 1]?.nativeElement.focus();\n }\n\n onPaste(e: ClipboardEvent): void {\n e.preventDefault();\n const text = e.clipboardData?.getData('text') ?? '';\n const chars = text.split('').slice(0, this.length());\n this._digits.set(chars);\n this.emitValue();\n this.cells()[Math.min(chars.length, this.length() - 1)]?.nativeElement.focus();\n }\n\n private emitValue(): void {\n this._onChange(this.digits().join(''));\n this._onTouched();\n }\n\n writeValue(v: string): void {\n this._digits.set((v ?? '').split('').slice(0, this.length()));\n }\n registerOnChange(fn: (v: string) => void): void { this._onChange = fn; }\n registerOnTouched(fn: () => void): void { this._onTouched = fn; }\n setDisabledState(): void {}\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n ElementRef,\n forwardRef,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\n@Component({\n selector: 'f-slider',\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SliderComponent), multi: true }],\n host: { class: 'block w-full py-2' },\n template: `\n <div\n #track\n class=\"relative h-1.5 rounded-full bg-(--f-content-hover-background) cursor-pointer\"\n [class.opacity-60]=\"disabled()\"\n [class.pointer-events-none]=\"disabled()\"\n (mousedown)=\"onTrackDown($event)\"\n >\n <div class=\"absolute h-full rounded-full bg-primary\" [style.left.%]=\"rangeStartPercent()\" [style.width.%]=\"rangePercent()\"></div>\n\n @if (range()) {\n <div\n class=\"absolute top-1/2 -translate-y-1/2 w-4 h-4 rounded-full bg-primary border-2 border-(--f-content-background) shadow cursor-grab active:cursor-grabbing focus-visible:outline-none focus-visible:ring-focus\"\n tabindex=\"0\"\n role=\"slider\"\n [attr.aria-valuemin]=\"min()\"\n [attr.aria-valuemax]=\"max()\"\n [attr.aria-valuenow]=\"start()\"\n [style.left.%]=\"startPercent()\"\n (mousedown)=\"onHandleDown($event, 0)\"\n (touchstart)=\"onHandleTouchStart($event, 0)\"\n (keydown)=\"onKeydown($event, 0)\"\n ></div>\n }\n <div\n class=\"absolute top-1/2 -translate-y-1/2 w-4 h-4 rounded-full bg-primary border-2 border-(--f-content-background) shadow cursor-grab active:cursor-grabbing focus-visible:outline-none focus-visible:ring-focus\"\n tabindex=\"0\"\n role=\"slider\"\n [attr.aria-valuemin]=\"min()\"\n [attr.aria-valuemax]=\"max()\"\n [attr.aria-valuenow]=\"end()\"\n [style.left.%]=\"endPercent()\"\n (mousedown)=\"onHandleDown($event, 1)\"\n (touchstart)=\"onHandleTouchStart($event, 1)\"\n (keydown)=\"onKeydown($event, 1)\"\n ></div>\n </div>\n `,\n})\nexport class SliderComponent implements ControlValueAccessor {\n private readonly _el = inject(ElementRef<HTMLElement>);\n\n readonly min = input<number>(0);\n readonly max = input<number>(100);\n readonly step = input<number>(1);\n readonly range = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n\n private readonly _start = signal(0);\n readonly start = this._start.asReadonly();\n private readonly _end = signal(0);\n readonly end = this._end.asReadonly();\n\n private _onChange: (v: number | [number, number]) => void = () => {};\n private _onTouched: () => void = () => {};\n private _dragIdx: 0 | 1 | null = null;\n\n readonly startPercent = computed(() => this.toPercent(this.start()));\n readonly endPercent = computed(() => this.toPercent(this.end()));\n readonly rangeStartPercent = computed(() => (this.range() ? this.startPercent() : 0));\n readonly rangePercent = computed(() => (this.range() ? this.endPercent() - this.startPercent() : this.endPercent()));\n\n private toPercent(v: number): number {\n const min = this.min();\n const max = this.max();\n return max === min ? 0 : ((v - min) / (max - min)) * 100;\n }\n\n private fromClientX(clientX: number): number {\n const rect = this._el.nativeElement.querySelector('div')!.getBoundingClientRect();\n const pct = Math.min(1, Math.max(0, (clientX - rect.left) / rect.width));\n const raw = this.min() + pct * (this.max() - this.min());\n const stepped = Math.round(raw / this.step()) * this.step();\n return Math.min(this.max(), Math.max(this.min(), stepped));\n }\n\n onTrackDown(e: MouseEvent): void {\n if (this.disabled()) return;\n const value = this.fromClientX(e.clientX);\n if (this.range()) {\n const idx = Math.abs(value - this.start()) < Math.abs(value - this.end()) ? 0 : 1;\n this.setValue(idx, value);\n this.startDrag(idx);\n } else {\n this.setValue(1, value);\n this.startDrag(1);\n }\n }\n\n onHandleDown(e: MouseEvent, idx: 0 | 1): void {\n e.stopPropagation();\n if (this.disabled()) return;\n (e.currentTarget as HTMLElement).focus();\n this.startDrag(idx);\n }\n\n onHandleTouchStart(e: TouchEvent, idx: 0 | 1): void {\n e.stopPropagation();\n if (this.disabled()) return;\n this.startTouchDrag(idx);\n }\n\n onKeydown(e: KeyboardEvent, idx: 0 | 1): void {\n if (this.disabled()) return;\n const step = this.step();\n const current = idx === 0 ? this.start() : this.end();\n let next: number | null = null;\n if (e.key === 'ArrowRight' || e.key === 'ArrowUp') next = current + step;\n else if (e.key === 'ArrowLeft' || e.key === 'ArrowDown') next = current - step;\n else if (e.key === 'Home') next = this.min();\n else if (e.key === 'End') next = this.max();\n if (next === null) return;\n e.preventDefault();\n this.setValue(idx, Math.min(this.max(), Math.max(this.min(), next)));\n this._onTouched();\n }\n\n private startDrag(idx: 0 | 1): void {\n this._dragIdx = idx;\n const onMove = (ev: MouseEvent) => {\n if (this._dragIdx === null) return;\n this.setValue(this._dragIdx, this.fromClientX(ev.clientX));\n };\n const onUp = () => {\n this._dragIdx = null;\n this._onTouched();\n document.removeEventListener('mousemove', onMove);\n document.removeEventListener('mouseup', onUp);\n };\n document.addEventListener('mousemove', onMove);\n document.addEventListener('mouseup', onUp);\n }\n\n private startTouchDrag(idx: 0 | 1): void {\n this._dragIdx = idx;\n const onMove = (ev: TouchEvent) => {\n if (this._dragIdx === null || !ev.touches[0]) return;\n this.setValue(this._dragIdx, this.fromClientX(ev.touches[0].clientX));\n };\n const onEnd = () => {\n this._dragIdx = null;\n this._onTouched();\n document.removeEventListener('touchmove', onMove);\n document.removeEventListener('touchend', onEnd);\n };\n document.addEventListener('touchmove', onMove);\n document.addEventListener('touchend', onEnd);\n }\n\n private setValue(idx: 0 | 1, value: number): void {\n if (idx === 0) this._start.set(Math.min(value, this.end()));\n else this._end.set(this.range() ? Math.max(value, this.start()) : value);\n this._onChange(this.range() ? [this.start(), this.end()] : this.end());\n }\n\n writeValue(v: number | [number, number] | null): void {\n if (Array.isArray(v)) {\n this._start.set(v[0] ?? this.min());\n this._end.set(v[1] ?? this.max());\n } else {\n this._end.set(v ?? this.min());\n }\n }\n registerOnChange(fn: (v: number | [number, number]) => void): void { this._onChange = fn; }\n registerOnTouched(fn: () => void): void { this._onTouched = fn; }\n setDisabledState(): void {}\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n ElementRef,\n forwardRef,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\n@Component({\n selector: 'f-knob',\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => KnobComponent), multi: true }],\n host: { class: 'inline-block' },\n template: `\n <svg\n [attr.width]=\"size()\"\n [attr.height]=\"size()\"\n [attr.viewBox]=\"'0 0 ' + size() + ' ' + size()\"\n class=\"select-none focus-visible:outline-none focus-visible:ring-focus rounded-full\"\n [class.cursor-pointer]=\"!disabled()\"\n [class.opacity-60]=\"disabled()\"\n [attr.tabindex]=\"disabled() ? null : 0\"\n role=\"slider\"\n [attr.aria-valuemin]=\"min()\"\n [attr.aria-valuemax]=\"max()\"\n [attr.aria-valuenow]=\"value()\"\n [attr.aria-disabled]=\"disabled() ? 'true' : null\"\n (mousedown)=\"onDown($event)\"\n (keydown)=\"onKeydown($event)\"\n >\n <circle\n [attr.cx]=\"size() / 2\" [attr.cy]=\"size() / 2\" [attr.r]=\"radius()\"\n fill=\"none\" [attr.stroke]=\"rangeColor()\" [attr.stroke-width]=\"strokeWidth()\"\n />\n <circle\n [attr.cx]=\"size() / 2\" [attr.cy]=\"size() / 2\" [attr.r]=\"radius()\"\n fill=\"none\" [attr.stroke]=\"valueColor()\" [attr.stroke-width]=\"strokeWidth()\"\n stroke-linecap=\"round\"\n [attr.stroke-dasharray]=\"circumference()\"\n [attr.stroke-dashoffset]=\"dashOffset()\"\n [attr.transform]=\"'rotate(-90 ' + size() / 2 + ' ' + size() / 2 + ')'\"\n />\n <text\n [attr.x]=\"size() / 2\" [attr.y]=\"size() / 2\"\n text-anchor=\"middle\" dominant-baseline=\"middle\"\n class=\"text-sm font-semibold\" [attr.fill]=\"textColor()\"\n >{{ showValue() ? value() : '' }}</text>\n </svg>\n `,\n})\nexport class KnobComponent implements ControlValueAccessor {\n private readonly _el = inject(ElementRef<HTMLElement>);\n\n readonly size = input<number>(100);\n readonly min = input<number>(0);\n readonly max = input<number>(100);\n readonly step = input<number>(1);\n readonly strokeWidth = input<number>(10);\n readonly showValue = input(true, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly readonly = input(false, { transform: booleanAttribute });\n readonly valueColor = input<string>('var(--color-primary)');\n readonly rangeColor = input<string>('var(--f-content-hover-background)');\n readonly textColor = input<string>('var(--f-text-color)');\n\n private readonly _value = signal(0);\n readonly value = this._value.asReadonly();\n\n private _onChange: (v: number) => void = () => {};\n private _onTouched: () => void = () => {};\n\n readonly radius = computed(() => this.size() / 2 - this.strokeWidth());\n readonly circumference = computed(() => 2 * Math.PI * this.radius());\n\n readonly dashOffset = computed(() => {\n const pct = (this.value() - this.min()) / (this.max() - this.min());\n return this.circumference() * (1 - pct);\n });\n\n onKeydown(e: KeyboardEvent): void {\n if (this.disabled() || this.readonly()) return;\n const step = this.step();\n const current = this.value();\n let next: number | null = null;\n if (e.key === 'ArrowRight' || e.key === 'ArrowUp') next = current + step;\n else if (e.key === 'ArrowLeft' || e.key === 'ArrowDown') next = current - step;\n else if (e.key === 'Home') next = this.min();\n else if (e.key === 'End') next = this.max();\n if (next === null) return;\n e.preventDefault();\n const clamped = Math.min(this.max(), Math.max(this.min(), next));\n this._value.set(clamped);\n this._onChange(clamped);\n this._onTouched();\n }\n\n onDown(e: MouseEvent): void {\n if (this.disabled() || this.readonly()) return;\n this.updateFromEvent(e);\n const onMove = (ev: MouseEvent) => this.updateFromEvent(ev);\n const onUp = () => {\n this._onTouched();\n document.removeEventListener('mousemove', onMove);\n document.removeEventListener('mouseup', onUp);\n };\n document.addEventListener('mousemove', onMove);\n document.addEventListener('mouseup', onUp);\n }\n\n private updateFromEvent(e: MouseEvent): void {\n const rect = this._el.nativeElement.querySelector('svg')!.getBoundingClientRect();\n const cx = rect.left + rect.width / 2;\n const cy = rect.top + rect.height / 2;\n let angle = Math.atan2(e.clientY - cy, e.clientX - cx) * (180 / Math.PI) + 90;\n if (angle < 0) angle += 360;\n const pct = angle / 360;\n const raw = this.min() + pct * (this.max() - this.min());\n const stepped = Math.round(raw / this.step()) * this.step();\n const clamped = Math.min(this.max(), Math.max(this.min(), stepped));\n this._value.set(clamped);\n this._onChange(clamped);\n }\n\n writeValue(v: number): void { this._value.set(v ?? this.min()); }\n registerOnChange(fn: (v: number) => void): void { this._onChange = fn; }\n registerOnTouched(fn: () => void): void { this._onTouched = fn; }\n setDisabledState(): void {}\n}\n","import {\n booleanAttribute,\n Component,\n computed,\n ElementRef,\n forwardRef,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\ninterface CascadeOption {\n [key: string]: unknown;\n}\n\n@Component({\n selector: 'f-cascadeselect',\n imports: [UiIconComponent],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CascadeSelectComponent),\n multi: true,\n },\n ],\n host: { class: 'block', '(document:click)': 'onDocumentClick($event)' },\n template: `\n <div class=\"relative w-full\">\n <button\n type=\"button\"\n [class]=\"triggerClass()\"\n [disabled]=\"disabled()\"\n (click)=\"toggleOpen()\"\n >\n <span\n class=\"truncate text-sm\"\n [class.text-(--f-form-field-placeholder-color)]=\"\n !selectedPath().length\n \"\n >\n {{\n selectedPath().length ? selectedPath().join(' / ') : placeholder()\n }}\n </span>\n <ui-icon\n name=\"chevron-down\"\n class=\"ml-auto text-xs text-(--f-form-field-placeholder-color) shrink-0 transition-transform duration-[var(--f-transition-duration)]\"\n [class.rotate-180]=\"open()\"\n ></ui-icon>\n </button>\n\n @if (open()) {\n <div\n class=\"absolute z-50 mt-1 flex bg-(--f-overlay-popover-background) border border-(--f-content-border-color) rounded-lg shadow-lg overflow-hidden\"\n >\n @for (level of levels(); track $index) {\n <ul\n class=\"max-h-64 overflow-auto py-1 min-w-[10rem] border-r border-(--f-content-border-color) last:border-r-0\"\n >\n @for (opt of level; track getLabel(opt)) {\n <li>\n <button\n type=\"button\"\n class=\"w-full flex items-center justify-between gap-2 px-3 py-2 text-sm text-left transition-colors cursor-pointer\"\n [class]=\"\n isActive(opt, $index)\n ? 'bg-(--f-highlight-background) text-(--f-highlight-color)'\n : 'text-(--f-text-color) hover:bg-(--f-content-hover-background)'\n \"\n (click)=\"onOptionClick(opt, $index)\"\n >\n <span class=\"truncate\">{{ getLabel(opt) }}</span>\n @if (getChildren(opt).length) {\n <ui-icon\n name=\"chevron-right\"\n class=\"text-[10px] text-(--f-text-muted-color) shrink-0\"\n ></ui-icon>\n }\n </button>\n </li>\n }\n </ul>\n }\n </div>\n }\n </div>\n `,\n})\nexport class CascadeSelectComponent implements ControlValueAccessor {\n private readonly _el = inject(ElementRef);\n\n readonly options = input<CascadeOption[]>([]);\n readonly optionLabel = input<string>('label');\n readonly optionValue = input<string>('value');\n readonly optionChildren = input<string>('children');\n readonly placeholder = input<string>('Select');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly touched = input(true);\n\n private readonly _open = signal(false);\n readonly open = this._open.asReadonly();\n private readonly _activePath = signal<CascadeOption[]>([]);\n readonly activePath = this._activePath.asReadonly();\n private readonly _selectedPath = signal<string[]>([]);\n readonly selectedPath = this._selectedPath.asReadonly();\n\n private _onChange: (v: unknown) => void = () => {};\n private _onTouched: () => void = () => {};\n private _selectedValue: unknown = null;\n\n readonly triggerClass = computed(() => {\n const base =\n 'w-full min-h-[38px] flex items-center gap-2 px-3 py-1.5 text-sm rounded-lg border bg-(--f-form-field-background) focus:outline-none focus-visible:ring-focus transition-all duration-[var(--f-transition-duration)]';\n const showInvalid = this.invalid() && this.touched();\n const stateClass = this.open()\n ? showInvalid\n ? 'border-red-400'\n : 'border-primary'\n : showInvalid\n ? 'border-red-400'\n : 'border-(--f-form-field-border-color) hover:border-(--f-form-field-hover-border-color)';\n const disabledClass = this.disabled()\n ? 'opacity-60 cursor-not-allowed'\n : 'cursor-pointer';\n return `${base} ${stateClass} ${disabledClass}`;\n });\n\n readonly levels = computed<CascadeOption[][]>(() => {\n const cols: CascadeOption[][] = [this.options()];\n for (const active of this.activePath()) {\n const children = this.getChildren(active);\n if (children.length) cols.push(children);\n }\n return cols;\n });\n\n getLabel(opt: CascadeOption): string {\n return String(opt[this.optionLabel()] ?? '');\n }\n getValue(opt: CascadeOption): unknown {\n return opt[this.optionValue()];\n }\n getChildren(opt: CascadeOption): CascadeOption[] {\n return (opt[this.optionChildren()] as CascadeOption[]) ?? [];\n }\n\n isActive(opt: CascadeOption, level: number): boolean {\n return this.activePath()[level] === opt;\n }\n\n toggleOpen(): void {\n if (this.disabled()) return;\n this._open.update((v) => !v);\n if (!this.open()) this._onTouched();\n }\n\n onOptionClick(opt: CascadeOption, level: number): void {\n const path = this.activePath().slice(0, level);\n path.push(opt);\n this._activePath.set(path);\n\n const children = this.getChildren(opt);\n if (!children.length) {\n this._selectedValue = this.getValue(opt);\n this._selectedPath.set(path.map((p) => this.getLabel(p)));\n this._onChange(this._selectedValue);\n this._open.set(false);\n this._onTouched();\n }\n }\n\n onDocumentClick(e: MouseEvent): void {\n if (this.open() && !this._el.nativeElement.contains(e.target)) {\n this._open.set(false);\n this._onTouched();\n }\n }\n\n writeValue(v: unknown): void {\n this._selectedValue = v;\n if (v == null) {\n this._selectedPath.set([]);\n return;\n }\n const path = this.findPath(this.options(), v);\n this._selectedPath.set(path.map((p) => this.getLabel(p)));\n }\n\n private findPath(\n options: CascadeOption[],\n value: unknown,\n trail: CascadeOption[] = [],\n ): CascadeOption[] {\n for (const opt of options) {\n const next = [...trail, opt];\n if (this.getValue(opt) === value) return next;\n const found = this.findPath(this.getChildren(opt), value, next);\n if (found.length) return found;\n }\n return [];\n }\n\n registerOnChange(fn: (v: unknown) => void): void {\n this._onChange = fn;\n }\n registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n setDisabledState(): void {}\n}\n","import { Directive, input } from '@angular/core';\n\nexport type KeyFilterPreset = 'int' | 'pint' | 'num' | 'pnum' | 'money' | 'alpha' | 'alphanum' | 'email';\n\nconst PRESETS: Record<KeyFilterPreset, RegExp> = {\n int: /[\\d-]/,\n pint: /\\d/,\n num: /[\\d.-]/,\n pnum: /[\\d.]/,\n money: /[\\d.,]/,\n alpha: /[a-zA-Z]/,\n alphanum: /[a-zA-Z0-9]/,\n email: /[a-zA-Z0-9_.@-]/,\n};\n\n@Directive({\n selector: '[fKeyFilter]',\n host: {\n '(keypress)': 'onKeypress($event)',\n '(paste)': 'onPaste($event)',\n },\n})\nexport class KeyFilterDirective {\n readonly fKeyFilter = input<KeyFilterPreset | RegExp | null>(null);\n\n onKeypress(e: KeyboardEvent): void {\n const filter = this.fKeyFilter();\n if (!filter || e.ctrlKey || e.metaKey || e.altKey || e.key.length > 1) return;\n const regex = typeof filter === 'string' ? PRESETS[filter] : filter;\n if (regex && !regex.test(e.key)) e.preventDefault();\n }\n\n onPaste(e: ClipboardEvent): void {\n const filter = this.fKeyFilter();\n if (!filter) return;\n const regex = typeof filter === 'string' ? PRESETS[filter] : filter;\n const text = e.clipboardData?.getData('text') ?? '';\n if (regex && [...text].some(ch => !regex.test(ch))) e.preventDefault();\n }\n}\n","import { Component, computed, effect, ElementRef, inject, input, signal, viewChild } from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { ConfirmationService } from '../../services/confirmation.service';\n\n@Component({\n selector: 'f-confirmpopup',\n imports: [UiIconComponent],\n host: {\n '(document:click)': 'onDocumentClick($event)',\n '(document:keydown.escape)': 'onEscape()',\n },\n styles: [`\n @keyframes confirmpopup-in { from { opacity: 0; transform: scale(0.95) translateY(-4px); } to { opacity: 1; transform: scale(1) translateY(0); } }\n .confirmpopup-panel { animation: confirmpopup-in 0.15s cubic-bezier(0.16, 1, 0.3, 1); }\n `],\n template: `\n @if (activeConfirmation(); as c) {\n @if (c.target) {\n <div\n #panel\n class=\"confirmpopup-panel fixed z-50 w-72 bg-(--f-overlay-popover-background) border border-(--f-content-border-color) rounded-lg shadow-lg p-4\"\n [style.top.px]=\"top()\"\n [style.left.px]=\"left()\"\n (click)=\"$event.stopPropagation()\"\n >\n <div class=\"flex items-start gap-3\">\n @if (c.icon) {\n <ui-icon [name]=\"c.icon\" class=\"text-lg shrink-0 mt-0.5\" [style.color]=\"'var(--f-yellow-500, #f59e0b)'\"></ui-icon>\n }\n <div class=\"flex-1 min-w-0\">\n @if (c.header) { <div class=\"text-sm font-semibold text-(--f-text-color)\">{{ c.header }}</div> }\n @if (c.message) { <p class=\"text-sm text-(--f-text-muted-color) mt-1\">{{ c.message }}</p> }\n </div>\n </div>\n <div class=\"flex justify-end gap-2 mt-3\">\n @if (c.rejectVisible !== false) {\n <button\n #rejectBtn\n type=\"button\"\n class=\"px-3 py-1.5 text-xs rounded-md border border-(--f-content-border-color) text-(--f-text-color) hover:bg-(--f-content-hover-background) transition-colors font-medium cursor-pointer\"\n (click)=\"reject(c.reject)\"\n >{{ c.rejectLabel ?? 'No' }}</button>\n }\n @if (c.acceptVisible !== false) {\n <button\n #acceptBtn\n type=\"button\"\n class=\"px-3 py-1.5 text-xs rounded-md bg-primary text-primary-contrast hover:bg-primary-emphasis transition-colors font-medium cursor-pointer\"\n (click)=\"accept(c.accept)\"\n >{{ c.acceptLabel ?? 'Yes' }}</button>\n }\n </div>\n </div>\n }\n }\n `,\n})\nexport class ConfirmPopupComponent {\n readonly confirmationService = inject(ConfirmationService);\n readonly key = input<string | undefined>(undefined);\n\n private readonly _top = signal(0);\n readonly top = this._top.asReadonly();\n private readonly _left = signal(0);\n readonly left = this._left.asReadonly();\n\n private readonly panelRef = viewChild<ElementRef<HTMLElement>>('panel');\n private readonly acceptBtnRef = viewChild<ElementRef<HTMLButtonElement>>('acceptBtn');\n\n readonly activeConfirmation = computed(() => {\n const c = this.confirmationService.confirmation();\n if (!c?.target) return null;\n return (c.key ?? undefined) === this.key() ? c : null;\n });\n\n constructor() {\n effect(() => {\n const c = this.activeConfirmation();\n if (c?.target) {\n this.position(c.target as HTMLElement);\n setTimeout(() => {\n this.adjustForViewport(c.target as HTMLElement);\n this.acceptBtnRef()?.nativeElement.focus();\n }, 0);\n }\n });\n }\n\n private position(target: HTMLElement): void {\n const rect = target.getBoundingClientRect?.();\n if (!rect) return;\n const gap = 8;\n let left = rect.left;\n if (typeof window !== 'undefined') left = Math.min(left, window.innerWidth - 288 - 8);\n this._top.set(rect.bottom + gap);\n this._left.set(Math.max(8, left));\n }\n\n private adjustForViewport(target: HTMLElement): void {\n const panelEl = this.panelRef()?.nativeElement;\n const rect = target.getBoundingClientRect?.();\n if (!panelEl || !rect || typeof window === 'undefined') return;\n const gap = 8;\n const panelRect = panelEl.getBoundingClientRect();\n if (rect.bottom + panelRect.height + gap > window.innerHeight) {\n this._top.set(Math.max(8, rect.top - panelRect.height - gap));\n }\n }\n\n onEscape(): void {\n const c = this.activeConfirmation();\n if (c && c.closeOnEscape !== false) this.reject(c.reject);\n }\n\n accept(fn?: () => void): void {\n fn?.();\n this.confirmationService.close();\n }\n\n reject(fn?: () => void): void {\n fn?.();\n this.confirmationService.close();\n }\n\n onDocumentClick(e: MouseEvent): void {\n const c = this.activeConfirmation();\n if (!c?.target) return;\n if (c.target !== e.target && !(c.target as HTMLElement).contains?.(e.target as Node)) {\n this.confirmationService.close();\n }\n }\n}\n","import { Injectable, InjectionToken, Type, signal } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nexport interface DynamicDialogConfig<T = unknown> {\n header?: string;\n width?: string;\n height?: string;\n closable?: boolean;\n closeOnEscape?: boolean;\n dismissableMask?: boolean;\n footer?: Type<unknown>;\n data?: T;\n}\n\nexport class DynamicDialogRef<R = unknown> {\n private readonly _onClose = new Subject<R | undefined>();\n readonly onClose = this._onClose.asObservable();\n\n constructor(private readonly _closeFn: (result?: R) => void) {}\n\n close(result?: R): void {\n this._onClose.next(result);\n this._onClose.complete();\n this._closeFn(result);\n }\n}\n\nexport const DYNAMIC_DIALOG_DATA = new InjectionToken<unknown>('DYNAMIC_DIALOG_DATA');\nexport const DYNAMIC_DIALOG_REF = new InjectionToken<DynamicDialogRef>('DYNAMIC_DIALOG_REF');\n\nexport interface DynamicDialogState {\n id: number;\n component: Type<unknown>;\n config: DynamicDialogConfig;\n ref: DynamicDialogRef<unknown>;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class DynamicDialogService {\n private static idCounter = 0;\n\n private readonly _states = signal<DynamicDialogState[]>([]);\n readonly states = this._states.asReadonly();\n\n open<T = unknown, R = unknown>(component: Type<T>, config: DynamicDialogConfig = {}): DynamicDialogRef<R> {\n const id = ++DynamicDialogService.idCounter;\n const ref = new DynamicDialogRef<R>(() => {\n this._states.update((list) => list.filter((s) => s.id !== id));\n });\n this._states.update((list) => [\n ...list,\n { id, component, config, ref: ref as DynamicDialogRef<unknown> },\n ]);\n return ref;\n }\n\n closeTop(): void {\n const top = this._states()[this._states().length - 1];\n top?.ref.close();\n }\n}\n","import { Component, computed, effect, inject, Injector } from '@angular/core';\nimport { NgComponentOutlet } from '@angular/common';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport {\n DynamicDialogService,\n DynamicDialogState,\n DYNAMIC_DIALOG_DATA,\n DYNAMIC_DIALOG_REF,\n} from './dynamicdialog.service';\n\n@Component({\n selector: 'f-dynamicdialog',\n imports: [NgComponentOutlet, UiIconComponent],\n host: { '(document:keydown.escape)': 'onEscape()' },\n styles: [`\n @keyframes dynamicdialog-backdrop-in { from { opacity: 0; } to { opacity: 1; } }\n @keyframes dynamicdialog-panel-in { from { opacity: 0; transform: scale(0.95) translateY(-8px); } to { opacity: 1; transform: scale(1) translateY(0); } }\n .dynamicdialog-backdrop { animation: dynamicdialog-backdrop-in 0.15s ease-out; }\n .dynamicdialog-panel { animation: dynamicdialog-panel-in 0.22s cubic-bezier(0.16, 1, 0.3, 1); }\n `],\n template: `\n @for (s of dialogService.states(); track s.id; let i = $index) {\n <div class=\"fixed inset-0 flex items-center justify-center p-4\" [style.z-index]=\"40 + i * 2\">\n <div\n class=\"dynamicdialog-backdrop absolute inset-0 bg-black/50 backdrop-blur-[2px]\"\n (click)=\"s.config.dismissableMask && s.ref.close()\"\n ></div>\n <div\n class=\"dynamicdialog-panel relative bg-(--f-overlay-popover-background) rounded-2xl shadow-2xl flex flex-col max-h-[90vh] overflow-hidden max-w-[calc(100vw-2rem)]\"\n [style.width]=\"s.config.width || '32rem'\"\n [style.height]=\"s.config.height || null\"\n role=\"dialog\"\n aria-modal=\"true\"\n >\n @if (s.config.header || s.config.closable !== false) {\n <div class=\"flex items-center justify-between px-6 py-4 border-b border-(--f-content-border-color) shrink-0\">\n <h2 class=\"text-base font-semibold text-(--f-text-color) tracking-tight\">{{ s.config.header }}</h2>\n @if (s.config.closable !== false) {\n <button\n type=\"button\"\n aria-label=\"Close\"\n class=\"w-7 h-7 flex items-center justify-center rounded-lg cursor-pointer text-(--f-text-muted-color) hover:text-(--f-text-hover-color) hover:bg-(--f-content-hover-background) transition-all duration-[var(--f-transition-duration)]\"\n (click)=\"s.ref.close()\"\n >\n <ui-icon name=\"times\" class=\"text-xs\"></ui-icon>\n </button>\n }\n </div>\n }\n <div class=\"px-6 py-5 overflow-y-auto flex-1\">\n <ng-container [ngComponentOutlet]=\"s.component\" [ngComponentOutletInjector]=\"childInjector(s)\" />\n </div>\n @if (s.config.footer) {\n <div class=\"px-6 py-4 border-t border-(--f-content-border-color) shrink-0 flex items-center justify-end gap-2 bg-(--f-content-hover-background)/50\">\n <ng-container [ngComponentOutlet]=\"s.config.footer\" [ngComponentOutletInjector]=\"childInjector(s)\" />\n </div>\n }\n </div>\n </div>\n }\n `,\n})\nexport class DynamicDialogComponent {\n readonly dialogService = inject(DynamicDialogService);\n private readonly _parentInjector = inject(Injector);\n\n private readonly injectorCache = new Map<number, Injector>();\n\n constructor() {\n effect(() => {\n const liveIds = new Set(this.dialogService.states().map((s) => s.id));\n for (const id of this.injectorCache.keys()) {\n if (!liveIds.has(id)) this.injectorCache.delete(id);\n }\n });\n }\n\n childInjector(state: DynamicDialogState): Injector {\n let injector = this.injectorCache.get(state.id);\n if (!injector) {\n injector = Injector.create({\n parent: this._parentInjector,\n providers: [\n { provide: DYNAMIC_DIALOG_DATA, useValue: state.config.data },\n { provide: DYNAMIC_DIALOG_REF, useValue: state.ref },\n ],\n });\n this.injectorCache.set(state.id, injector);\n }\n return injector;\n }\n\n readonly topState = computed(() => {\n const states = this.dialogService.states();\n return states[states.length - 1] ?? null;\n });\n\n onEscape(): void {\n const top = this.topState();\n if (top && top.config.closeOnEscape !== false) top.ref.close();\n }\n}\n","import { booleanAttribute, Component, input, model, output } from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\n@Component({\n selector: 'f-inplace',\n imports: [UiIconComponent],\n host: { class: 'block' },\n template: `\n @if (!active()) {\n <div\n class=\"inline-flex items-center gap-2 px-2 py-1 rounded-md cursor-pointer hover:bg-(--f-content-hover-background) transition-colors focus-visible:outline-none focus-visible:ring-focus\"\n [class.pointer-events-none]=\"disabled()\"\n [attr.tabindex]=\"disabled() ? null : 0\"\n role=\"button\"\n (click)=\"open()\"\n (keydown.enter)=\"open()\"\n (keydown.space)=\"onSpace($event)\"\n >\n <ng-content select=\"[fInplaceDisplay]\" />\n @if (!disabled()) { <ui-icon name=\"pencil\" class=\"text-xs text-(--f-text-muted-color)\"></ui-icon> }\n </div>\n } @else {\n <div class=\"flex items-center gap-2\">\n <ng-content select=\"[fInplaceContent]\" />\n <button type=\"button\" class=\"w-6 h-6 flex items-center justify-center rounded-md text-(--f-text-muted-color) hover:bg-(--f-content-hover-background)\" (click)=\"close()\">\n <ui-icon name=\"check\" class=\"text-xs\"></ui-icon>\n </button>\n </div>\n }\n `,\n})\nexport class InplaceComponent {\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly active = model(false);\n\n readonly onActivate = output<void>();\n readonly onDeactivate = output<void>();\n\n open(): void {\n if (this.disabled()) return;\n this.active.set(true);\n this.onActivate.emit();\n }\n\n close(): void {\n this.active.set(false);\n this.onDeactivate.emit();\n }\n\n onSpace(event: Event): void {\n event.preventDefault();\n this.open();\n }\n}\n","import { booleanAttribute, Component, computed, input, output, signal } from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { TreeNode } from '../../interfaces/tree-node';\n\nexport type TreeSelectionMode = 'single' | 'multiple' | 'checkbox' | null;\n\ninterface FlatNode {\n node: TreeNode;\n key: string;\n level: number;\n leaf: boolean;\n}\n\nlet _uidCounter = 0;\n\nfunction assignKey(node: TreeNode): string {\n if (!node.key) node.key = `tr_${_uidCounter++}`;\n return node.key;\n}\n\n@Component({\n selector: 'f-tree',\n imports: [UiIconComponent],\n host: { class: 'block w-full' },\n template: `\n <div class=\"w-full bg-(--f-content-background) border border-(--f-content-border-color) rounded-lg p-2\">\n @if (filter()) {\n <div class=\"flex items-center gap-2 px-2 py-1.5 mb-2 bg-(--f-content-hover-background) rounded-lg border border-(--f-content-border-color)\">\n <ui-icon name=\"search\" class=\"text-xs text-(--f-text-muted-color) shrink-0\"></ui-icon>\n <input type=\"text\" class=\"flex-1 text-sm bg-transparent focus:outline-none text-(--f-text-color) placeholder:text-(--f-form-field-placeholder-color)\"\n placeholder=\"Search...\" [value]=\"filterText()\" (input)=\"onFilterInput($any($event.target).value)\" />\n </div>\n }\n @if (loading()) {\n <div class=\"flex flex-col items-center justify-center py-10 text-(--f-text-muted-color) gap-3\">\n <ui-icon name=\"loader-circle\" [spin]=\"true\" class=\"text-2xl text-primary/60\"></ui-icon>\n <span class=\"text-sm text-(--f-text-muted-color)\">Loading data...</span>\n </div>\n } @else {\n <ul>\n @for (row of flatNodes(); track row.key) {\n <li\n class=\"flex items-center gap-1.5 px-2 py-1.5 text-sm rounded-md cursor-pointer transition-colors\"\n [style.padding-left.px]=\"row.level * 16 + 8\"\n [class]=\"isSelected(row.key) && selectionMode() !== 'checkbox' ? 'bg-(--f-highlight-background) text-(--f-highlight-color)' : 'text-(--f-text-color) hover:bg-(--f-content-hover-background)'\"\n (click)=\"onNodeClick(row)\"\n >\n @if (!row.leaf) {\n <button type=\"button\" class=\"inline-flex items-center justify-center w-5 h-5 rounded-md hover:bg-(--f-content-hover-background) shrink-0 cursor-pointer\" (click)=\"toggleExpand($event, row.key)\">\n <ui-icon [name]=\"isExpanded(row.key) ? 'chevron-down' : 'chevron-right'\" class=\"text-[10px]\"></ui-icon>\n </button>\n } @else {\n <span class=\"inline-block w-5 h-5 shrink-0\"></span>\n }\n\n @if (selectionMode() === 'checkbox') {\n <div class=\"w-4 h-4 rounded-sm border flex items-center justify-center shrink-0 transition-colors\"\n [class]=\"isSelected(row.key) ? 'bg-primary border-primary' : (isPartial(row.key) ? 'bg-primary/30 border-primary' : 'border-(--f-form-field-border-color) bg-(--f-form-field-background)')\">\n @if (isSelected(row.key)) {\n <ui-icon name=\"check\" class=\"text-[9px] text-primary-contrast\"></ui-icon>\n } @else if (isPartial(row.key)) {\n <ui-icon name=\"minus\" class=\"text-[9px] text-primary-contrast\"></ui-icon>\n }\n </div>\n }\n\n @if (row.node.icon) { <ui-icon [name]=\"row.node.icon\" class=\"text-xs text-(--f-text-muted-color) shrink-0\"></ui-icon> }\n <span class=\"flex-1 truncate\">{{ row.node.label }}</span>\n </li>\n }\n @empty {\n <li class=\"px-3 py-6 text-center text-sm text-(--f-text-muted-color)\">{{ emptyMessage() }}</li>\n }\n </ul>\n }\n </div>\n `,\n})\nexport class TreeComponent {\n readonly value = input<TreeNode[]>([]);\n readonly selectionMode = input<TreeSelectionMode>(null);\n readonly filter = input(false, { transform: booleanAttribute });\n readonly loading = input(false, { transform: booleanAttribute });\n readonly emptyMessage = input<string>('No records found');\n\n readonly selectionChange = output<TreeNode[]>();\n readonly nodeExpand = output<TreeNode>();\n readonly nodeCollapse = output<TreeNode>();\n\n private readonly _filterText = signal('');\n readonly filterText = this._filterText.asReadonly();\n private readonly _selectedKeys = signal<Set<string>>(new Set());\n readonly selectedKeys = this._selectedKeys.asReadonly();\n private readonly expandedKeys = signal<Set<string>>(new Set());\n private _keyToNode = new Map<string, TreeNode>();\n\n readonly flatNodes = computed<FlatNode[]>(() => {\n const expanded = this.expandedKeys();\n const q = this.filterText().toLowerCase();\n const out: FlatNode[] = [];\n this._keyToNode.clear();\n this._flatten(this.value(), out, 0, expanded, q);\n return out;\n });\n\n private _flatten(nodes: TreeNode[], out: FlatNode[], level: number, expanded: Set<string>, query: string): boolean {\n let anyMatch = false;\n for (const node of nodes) {\n const key = assignKey(node);\n this._keyToNode.set(key, node);\n const isLeaf = !node.children || node.children.length === 0;\n const selfMatch = !query || String(node.label ?? '').toLowerCase().includes(query);\n\n let childRows: FlatNode[] = [];\n let childMatch = false;\n if (!isLeaf) {\n childRows = [];\n childMatch = this._flatten(node.children!, childRows, level + 1, expanded, query);\n }\n\n if (selfMatch || childMatch) {\n out.push({ node, key, level, leaf: isLeaf });\n if (!isLeaf && (expanded.has(key) || query)) out.push(...childRows);\n anyMatch = true;\n }\n }\n return anyMatch;\n }\n\n onFilterInput(v: string): void { this._filterText.set(v); }\n\n isExpanded(key: string): boolean { return this.expandedKeys().has(key); }\n isSelected(key: string): boolean { return this.selectedKeys().has(key); }\n\n isPartial(key: string): boolean {\n if (this.selectionMode() !== 'checkbox' || this.selectedKeys().has(key)) return false;\n const node = this._keyToNode.get(key);\n if (!node?.children?.length) return false;\n let any = false;\n let all = true;\n for (const child of node.children) {\n const childKey = assignKey(child);\n const childSelected = this.selectedKeys().has(childKey) || this.isPartial(childKey);\n any = any || childSelected;\n all = all && this.selectedKeys().has(childKey);\n }\n return any && !all;\n }\n\n toggleExpand(e: Event, key: string): void {\n e.stopPropagation();\n this.expandedKeys.update(s => {\n const next = new Set(s);\n if (next.has(key)) { next.delete(key); this.nodeCollapse.emit(this._keyToNode.get(key)!); }\n else { next.add(key); this.nodeExpand.emit(this._keyToNode.get(key)!); }\n return next;\n });\n }\n\n onNodeClick(row: FlatNode): void {\n const mode = this.selectionMode();\n if (!mode) return;\n if (mode === 'single') {\n this._selectedKeys.set(new Set([row.key]));\n } else if (mode === 'multiple') {\n this._selectedKeys.update(s => {\n const next = new Set(s);\n next.has(row.key) ? next.delete(row.key) : next.add(row.key);\n return next;\n });\n } else if (mode === 'checkbox') {\n const next = new Set(this.selectedKeys());\n const willSelect = !next.has(row.key);\n this.setDescendants(row.node, willSelect, next);\n this._selectedKeys.set(next);\n }\n this.emitSelection();\n }\n\n private setDescendants(node: TreeNode, selected: boolean, set: Set<string>): void {\n const key = assignKey(node);\n selected ? set.add(key) : set.delete(key);\n for (const child of node.children ?? []) this.setDescendants(child, selected, set);\n }\n\n private emitSelection(): void {\n const keys = this.selectedKeys();\n const nodes = [...this._keyToNode.entries()].filter(([k]) => keys.has(k)).map(([, n]) => n);\n this.selectionChange.emit(nodes);\n }\n}\n","import { Component, contentChild, input, TemplateRef } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\n\nexport type TimelineAlign = 'left' | 'right' | 'alternate';\nexport type TimelineLayout = 'vertical' | 'horizontal';\n\n@Component({\n selector: 'f-timeline',\n imports: [NgTemplateOutlet],\n host: { class: 'block w-full' },\n template: `\n <div [class]=\"layout() === 'horizontal' ? 'flex items-start' : 'flex flex-col'\">\n @for (item of value(); track $index) {\n <div [class]=\"layout() === 'horizontal' ? 'flex-1 flex flex-col items-center' : 'flex gap-4'\">\n @if (layout() !== 'horizontal' && (align() === 'right' || (align() === 'alternate' && $index % 2 === 1))) {\n <div class=\"flex-1 text-right pr-2\">\n <ng-container [ngTemplateOutlet]=\"contentTpl() ?? null\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </div>\n }\n\n <div [class]=\"layout() === 'horizontal' ? 'flex items-center w-full' : 'flex flex-col items-center'\">\n @if (layout() === 'horizontal' && $index > 0) { <div class=\"flex-1 h-0.5 bg-(--f-content-border-color)\"></div> }\n <div class=\"w-3 h-3 rounded-full bg-primary shrink-0 ring-4 ring-(--f-content-background)\"></div>\n @if (layout() === 'horizontal' && $index < value().length - 1) { <div class=\"flex-1 h-0.5 bg-(--f-content-border-color)\"></div> }\n @if (layout() !== 'horizontal' && $index < value().length - 1) { <div class=\"w-0.5 flex-1 bg-(--f-content-border-color) my-1\"></div> }\n </div>\n\n @if (layout() === 'horizontal') {\n <div class=\"mt-3 text-center px-2\">\n <ng-container [ngTemplateOutlet]=\"contentTpl() ?? null\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </div>\n } @else if (align() === 'left' || align() === 'alternate' && $index % 2 === 0) {\n <div class=\"flex-1 pb-6\">\n <ng-container [ngTemplateOutlet]=\"contentTpl() ?? null\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </div>\n }\n </div>\n }\n </div>\n `,\n})\nexport class TimelineComponent<T = unknown> {\n readonly value = input<T[]>([]);\n readonly align = input<TimelineAlign>('left');\n readonly layout = input<TimelineLayout>('vertical');\n\n readonly contentTpl = contentChild(TemplateRef);\n}\n","import { Component, contentChild, input, model, output, TemplateRef } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { UiIconComponent } from '../icon/ui-icon.component';\nimport { PaginatorComponent, PaginatorState } from '../paginator/paginator.component';\n\nexport type DataViewLayout = 'list' | 'grid';\n\n@Component({\n selector: 'f-dataview',\n imports: [UiIconComponent, NgTemplateOutlet, PaginatorComponent],\n host: { class: 'block w-full' },\n template: `\n <div class=\"w-full\">\n @if (showLayoutToggle()) {\n <div class=\"flex justify-end gap-1 mb-3\">\n <button type=\"button\"\n class=\"w-8 h-8 flex items-center justify-center rounded-md transition-colors cursor-pointer\"\n [class]=\"layout() === 'list' ? 'bg-(--f-content-hover-background) text-(--f-text-color)' : 'text-(--f-text-muted-color) hover:bg-(--f-content-hover-background)'\"\n (click)=\"layout.set('list')\"\n ><ui-icon name=\"list\" class=\"text-sm\"></ui-icon></button>\n <button type=\"button\"\n class=\"w-8 h-8 flex items-center justify-center rounded-md transition-colors cursor-pointer\"\n [class]=\"layout() === 'grid' ? 'bg-(--f-content-hover-background) text-(--f-text-color)' : 'text-(--f-text-muted-color) hover:bg-(--f-content-hover-background)'\"\n (click)=\"layout.set('grid')\"\n ><ui-icon name=\"layout-grid\" class=\"text-sm\"></ui-icon></button>\n </div>\n }\n\n @if (loading()) {\n <div class=\"flex flex-col items-center gap-3 py-16\">\n <ui-icon name=\"loader-circle\" [spin]=\"true\" class=\"text-2xl text-primary/60\"></ui-icon>\n <span class=\"text-sm text-(--f-text-muted-color)\">Loading data...</span>\n </div>\n } @else if (value().length) {\n <div [class]=\"layout() === 'grid' ? 'grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4' : 'flex flex-col gap-3'\">\n @for (item of value(); track $index) {\n <ng-container [ngTemplateOutlet]=\"itemTpl() ?? null\" [ngTemplateOutletContext]=\"{ $implicit: item, layout: layout() }\" />\n }\n </div>\n\n @if (paginator()) {\n <f-paginator [rows]=\"rows()\" [totalRecords]=\"totalRecords() || value().length\" [first]=\"first()\" (onPageChange)=\"handlePageChange($event)\" />\n }\n } @else {\n <div class=\"flex flex-col items-center gap-3 py-16\">\n <ui-icon name=\"inbox\" class=\"text-2xl text-(--f-text-muted-color)\"></ui-icon>\n <span class=\"text-sm text-(--f-text-muted-color)\">No records found</span>\n </div>\n }\n </div>\n `,\n})\nexport class DataViewComponent<T = unknown> {\n readonly value = input<T[]>([]);\n readonly showLayoutToggle = input(true);\n readonly paginator = input(false);\n readonly rows = input<number>(10);\n readonly totalRecords = input<number>(0);\n readonly first = input<number>(0);\n readonly loading = input(false);\n\n readonly layout = model<DataViewLayout>('list');\n\n readonly onPageChange = output<PaginatorState>();\n\n readonly itemTpl = contentChild(TemplateRef);\n\n handlePageChange(event: PaginatorState): void {\n this.onPageChange.emit(event);\n }\n}\n","import { Component, computed, contentChild, DestroyRef, effect, inject, input, OnDestroy, output, signal, TemplateRef } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\n@Component({\n selector: 'f-carousel',\n imports: [UiIconComponent, NgTemplateOutlet],\n host: { class: 'block w-full relative' },\n template: `\n <div class=\"flex items-center gap-2\">\n <button type=\"button\"\n class=\"w-8 h-8 shrink-0 flex items-center justify-center rounded-full border border-(--f-content-border-color) hover:bg-(--f-content-hover-background) cursor-pointer disabled:cursor-default disabled:opacity-40 disabled:pointer-events-none transition-colors\"\n [disabled]=\"page() === 0\"\n (click)=\"prev()\"\n ><ui-icon name=\"chevron-left\" class=\"text-sm\"></ui-icon></button>\n\n <div class=\"flex-1 overflow-hidden\">\n <div class=\"flex transition-transform duration-300 ease-out\" [style.transform]=\"'translateX(-' + (page() * 100) + '%)'\">\n @for (i of pageIndices(); track i) {\n <div class=\"shrink-0 w-full flex gap-4\" [style.width.%]=\"100\">\n @for (item of pageItems(i); track $index) {\n <div [style.width.%]=\"100 / numVisible()\">\n <ng-container [ngTemplateOutlet]=\"itemTpl() ?? null\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </div>\n }\n </div>\n }\n </div>\n </div>\n\n <button type=\"button\"\n class=\"w-8 h-8 shrink-0 flex items-center justify-center rounded-full border border-(--f-content-border-color) hover:bg-(--f-content-hover-background) cursor-pointer disabled:cursor-default disabled:opacity-40 disabled:pointer-events-none transition-colors\"\n [disabled]=\"page() >= pageCount() - 1\"\n (click)=\"next()\"\n ><ui-icon name=\"chevron-right\" class=\"text-sm\"></ui-icon></button>\n </div>\n\n @if (showIndicators()) {\n <div class=\"flex justify-center gap-1.5 mt-3\">\n @for (i of pageIndices(); track i) {\n <button type=\"button\"\n class=\"w-2 h-2 rounded-full transition-colors cursor-pointer\"\n [class]=\"i === page() ? 'bg-primary' : 'bg-(--f-content-border-color)'\"\n (click)=\"goToPage(i)\"\n ></button>\n }\n </div>\n }\n `,\n})\nexport class CarouselComponent<T = unknown> implements OnDestroy {\n readonly value = input<T[]>([]);\n readonly numVisible = input<number>(1);\n readonly showIndicators = input(true);\n readonly circular = input(false);\n readonly autoplayInterval = input<number>(0);\n\n readonly onPage = output<number>();\n\n readonly itemTpl = contentChild(TemplateRef);\n private readonly destroyRef = inject(DestroyRef);\n private autoplayTimer: ReturnType<typeof setInterval> | null = null;\n\n private readonly _page = signal(0);\n readonly page = this._page.asReadonly();\n\n readonly pageCount = computed(() => Math.max(1, Math.ceil(this.value().length / this.numVisible())));\n readonly pageIndices = computed(() => Array.from({ length: this.pageCount() }, (_, i) => i));\n\n constructor() {\n this.destroyRef.onDestroy(() => this.stopAutoplay());\n effect(() => {\n this.autoplayInterval();\n this.startAutoplay();\n });\n }\n\n pageItems(page: number): T[] {\n const n = this.numVisible();\n return this.value().slice(page * n, page * n + n);\n }\n\n private setPage(p: number): void {\n if (p === this._page()) return;\n this._page.set(p);\n this.onPage.emit(p);\n }\n\n prev(): void {\n const count = this.pageCount();\n const cur = this.page();\n if (cur > 0) this.setPage(cur - 1);\n else if (this.circular()) this.setPage(count - 1);\n }\n\n next(): void {\n const count = this.pageCount();\n const cur = this.page();\n if (cur < count - 1) this.setPage(cur + 1);\n else if (this.circular()) this.setPage(0);\n }\n\n goToPage(i: number): void { this.setPage(i); }\n\n private startAutoplay(): void {\n this.stopAutoplay();\n const interval = this.autoplayInterval();\n if (interval > 0) {\n this.autoplayTimer = setInterval(() => this.next(), interval);\n }\n }\n\n private stopAutoplay(): void {\n if (this.autoplayTimer) {\n clearInterval(this.autoplayTimer);\n this.autoplayTimer = null;\n }\n }\n\n ngOnDestroy(): void { this.stopAutoplay(); }\n}\n","import { Component, input } from '@angular/core';\n\n@Component({\n selector: 'f-scrollpanel',\n host: { class: 'block' },\n styles: [`\n :host .f-scrollpanel-content {\n scrollbar-width: thin;\n scrollbar-color: var(--f-content-border-color) transparent;\n }\n :host .f-scrollpanel-content::-webkit-scrollbar { width: 8px; height: 8px; }\n :host .f-scrollpanel-content::-webkit-scrollbar-thumb { background-color: var(--f-content-border-color); border-radius: 999px; }\n :host .f-scrollpanel-content::-webkit-scrollbar-track { background: transparent; }\n `],\n template: `\n <div class=\"f-scrollpanel-content overflow-auto\" [style.max-height]=\"maxHeight()\" [style.max-width]=\"maxWidth()\">\n <ng-content />\n </div>\n `,\n})\nexport class ScrollPanelComponent {\n readonly maxHeight = input<string>('100%');\n readonly maxWidth = input<string>('100%');\n}\n","import {\n AfterViewInit,\n Component,\n computed,\n contentChild,\n DestroyRef,\n ElementRef,\n inject,\n input,\n OnDestroy,\n signal,\n TemplateRef,\n viewChild,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'f-scroller',\n imports: [NgTemplateOutlet],\n host: { class: 'block' },\n template: `\n <div\n #viewport\n class=\"overflow-auto\"\n [style.height]=\"scrollHeight()\"\n (scroll)=\"onScroll($event)\"\n >\n <div [style.height.px]=\"totalHeight()\" class=\"relative w-full\">\n @for (item of visibleItems(); track $index) {\n <div class=\"absolute left-0 right-0\" [style.top.px]=\"offsetFor($index)\" [style.height.px]=\"itemSize()\">\n <ng-container [ngTemplateOutlet]=\"itemTpl() ?? null\" [ngTemplateOutletContext]=\"{ $implicit: item, index: startIndex() + $index }\" />\n </div>\n }\n </div>\n </div>\n `,\n})\nexport class ScrollerComponent<T = unknown> implements AfterViewInit, OnDestroy {\n readonly items = input<T[]>([]);\n readonly itemSize = input<number>(40);\n readonly scrollHeight = input<string>('20rem');\n\n readonly itemTpl = contentChild(TemplateRef);\n private readonly viewportRef = viewChild<ElementRef<HTMLElement>>('viewport');\n private readonly destroyRef = inject(DestroyRef);\n private resizeObserver: ResizeObserver | null = null;\n\n private readonly scrollTop = signal(0);\n private readonly viewportHeight = signal(320);\n\n readonly totalHeight = computed(() => this.items().length * this.itemSize());\n\n readonly startIndex = computed(() => Math.max(0, Math.floor(this.scrollTop() / this.itemSize()) - 3));\n\n private readonly endIndex = computed(() =>\n Math.min(this.items().length, Math.ceil((this.scrollTop() + this.viewportHeight()) / this.itemSize()) + 3),\n );\n\n readonly visibleItems = computed(() => this.items().slice(this.startIndex(), this.endIndex()));\n\n offsetFor(relativeIndex: number): number {\n return (this.startIndex() + relativeIndex) * this.itemSize();\n }\n\n onScroll(e: Event): void {\n const el = e.target as HTMLElement;\n this.scrollTop.set(el.scrollTop);\n this.viewportHeight.set(el.clientHeight);\n }\n\n ngAfterViewInit(): void {\n const el = this.viewportRef()?.nativeElement;\n if (!el) return;\n this.viewportHeight.set(el.clientHeight);\n\n if (typeof ResizeObserver !== 'undefined') {\n this.resizeObserver = new ResizeObserver(() => this.viewportHeight.set(el.clientHeight));\n this.resizeObserver.observe(el);\n this.destroyRef.onDestroy(() => this.resizeObserver?.disconnect());\n }\n }\n\n ngOnDestroy(): void {\n this.resizeObserver?.disconnect();\n }\n}\n","import { Component, contentChild, input, TemplateRef } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { TreeNode } from '../../interfaces/tree-node';\n\n@Component({\n selector: 'f-organizationchart',\n imports: [NgTemplateOutlet],\n host: { class: 'block w-full overflow-x-auto' },\n styles: [`\n .f-orgchart-node { position: relative; }\n .f-orgchart-children {\n display: flex;\n justify-content: center;\n position: relative;\n padding-top: 1.5rem;\n }\n .f-orgchart-children::before {\n content: '';\n position: absolute;\n top: 0;\n left: 50%;\n width: 1px;\n height: 1.5rem;\n background: var(--f-content-border-color);\n }\n .f-orgchart-child { position: relative; padding: 0 1rem; }\n .f-orgchart-child::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 1px;\n background: var(--f-content-border-color);\n }\n .f-orgchart-child:first-child::before { left: 50%; }\n .f-orgchart-child:last-child::before { right: 50%; }\n .f-orgchart-child::after {\n content: '';\n position: absolute;\n top: 0;\n left: 50%;\n width: 1px;\n height: 1rem;\n background: var(--f-content-border-color);\n }\n `],\n template: `\n <ng-template #nodeTpl let-node>\n <div class=\"flex flex-col items-center\">\n <div class=\"f-orgchart-node inline-block px-4 py-2.5 bg-(--f-content-background) border border-(--f-content-border-color) rounded-lg shadow-sm text-sm font-medium text-(--f-text-color)\">\n @if (contentTpl()) {\n <ng-container [ngTemplateOutlet]=\"contentTpl()\" [ngTemplateOutletContext]=\"{ $implicit: node }\" />\n } @else {\n {{ node.label }}\n }\n </div>\n @if (node.children?.length) {\n <div class=\"f-orgchart-children\">\n @for (child of node.children; track $index) {\n <div class=\"f-orgchart-child\">\n <ng-container [ngTemplateOutlet]=\"nodeTpl\" [ngTemplateOutletContext]=\"{ $implicit: child }\" />\n </div>\n }\n </div>\n }\n </div>\n </ng-template>\n\n <div class=\"flex justify-center min-w-max p-4\">\n @if (value()) {\n <ng-container [ngTemplateOutlet]=\"nodeTpl\" [ngTemplateOutletContext]=\"{ $implicit: value() }\" />\n }\n </div>\n `,\n})\nexport class OrganizationChartComponent {\n readonly value = input<TreeNode | null>(null);\n\n readonly contentTpl = contentChild(TemplateRef);\n}\n","import { Component, contentChild, input, model, output, signal, TemplateRef } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\n@Component({\n selector: 'f-picklist',\n imports: [UiIconComponent, NgTemplateOutlet],\n host: { class: 'block w-full' },\n template: `\n <div class=\"flex items-center gap-3\">\n <div class=\"flex-1 border border-(--f-content-border-color) rounded-lg overflow-hidden\">\n @if (sourceHeader()) {\n <div class=\"px-3 py-2 text-sm font-semibold bg-(--f-content-hover-background) border-b border-(--f-content-border-color)\">{{ sourceHeader() }}</div>\n }\n <ul class=\"max-h-72 overflow-auto py-1\">\n @for (item of source(); track $index) {\n <li\n class=\"px-3 py-2 text-sm cursor-pointer transition-colors\"\n [class]=\"sourceSelected().has(item) ? 'bg-(--f-highlight-background) text-(--f-highlight-color)' : 'text-(--f-text-color) hover:bg-(--f-content-hover-background)'\"\n (click)=\"toggleSourceSelect(item)\"\n >\n <ng-container [ngTemplateOutlet]=\"itemTpl() ?? null\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </li>\n }\n @empty { <li class=\"px-3 py-6 text-center text-sm text-(--f-text-muted-color)\">No records found</li> }\n </ul>\n </div>\n\n <div class=\"flex flex-col gap-1.5\">\n <button type=\"button\" class=\"w-8 h-8 flex items-center justify-center rounded-md border border-(--f-content-border-color) hover:bg-(--f-content-hover-background) cursor-pointer disabled:cursor-default disabled:opacity-40 disabled:pointer-events-none\" [disabled]=\"!sourceSelected().size\" (click)=\"moveToTarget()\"><ui-icon name=\"chevron-right\" class=\"text-xs\"></ui-icon></button>\n <button type=\"button\" class=\"w-8 h-8 flex items-center justify-center rounded-md border border-(--f-content-border-color) hover:bg-(--f-content-hover-background) cursor-pointer\" (click)=\"moveAllToTarget()\"><ui-icon name=\"chevrons-right\" class=\"text-xs\"></ui-icon></button>\n <button type=\"button\" class=\"w-8 h-8 flex items-center justify-center rounded-md border border-(--f-content-border-color) hover:bg-(--f-content-hover-background) cursor-pointer disabled:cursor-default disabled:opacity-40 disabled:pointer-events-none\" [disabled]=\"!targetSelected().size\" (click)=\"moveToSource()\"><ui-icon name=\"chevron-left\" class=\"text-xs\"></ui-icon></button>\n <button type=\"button\" class=\"w-8 h-8 flex items-center justify-center rounded-md border border-(--f-content-border-color) hover:bg-(--f-content-hover-background) cursor-pointer\" (click)=\"moveAllToSource()\"><ui-icon name=\"chevrons-left\" class=\"text-xs\"></ui-icon></button>\n </div>\n\n <div class=\"flex-1 border border-(--f-content-border-color) rounded-lg overflow-hidden\">\n @if (targetHeader()) {\n <div class=\"px-3 py-2 text-sm font-semibold bg-(--f-content-hover-background) border-b border-(--f-content-border-color)\">{{ targetHeader() }}</div>\n }\n <ul class=\"max-h-72 overflow-auto py-1\">\n @for (item of target(); track $index) {\n <li\n class=\"px-3 py-2 text-sm cursor-pointer transition-colors\"\n [class]=\"targetSelected().has(item) ? 'bg-(--f-highlight-background) text-(--f-highlight-color)' : 'text-(--f-text-color) hover:bg-(--f-content-hover-background)'\"\n (click)=\"toggleTargetSelect(item)\"\n >\n <ng-container [ngTemplateOutlet]=\"itemTpl() ?? null\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </li>\n }\n @empty { <li class=\"px-3 py-6 text-center text-sm text-(--f-text-muted-color)\">No records found</li> }\n </ul>\n </div>\n </div>\n `,\n})\nexport class PickListComponent<T = unknown> {\n readonly source = model<T[]>([]);\n readonly target = model<T[]>([]);\n readonly sourceHeader = input<string>('');\n readonly targetHeader = input<string>('');\n\n readonly itemTpl = contentChild(TemplateRef);\n\n private readonly _sourceSelected = signal<Set<T>>(new Set());\n readonly sourceSelected = this._sourceSelected.asReadonly();\n private readonly _targetSelected = signal<Set<T>>(new Set());\n readonly targetSelected = this._targetSelected.asReadonly();\n readonly onMoveToTarget = output<T[]>();\n readonly onMoveToSource = output<T[]>();\n\n private toggleSelect(sig: typeof this._sourceSelected, item: T): void {\n sig.update(s => {\n const next = new Set(s);\n next.has(item) ? next.delete(item) : next.add(item);\n return next;\n });\n }\n\n toggleSourceSelect(item: T): void { this.toggleSelect(this._sourceSelected, item); }\n toggleTargetSelect(item: T): void { this.toggleSelect(this._targetSelected, item); }\n\n moveToTarget(): void {\n const moving = [...this.sourceSelected()];\n if (!moving.length) return;\n this.source.set(this.source().filter(i => !this.sourceSelected().has(i)));\n this.target.set([...this.target(), ...moving]);\n this._sourceSelected.set(new Set());\n this.onMoveToTarget.emit(moving);\n }\n\n moveAllToTarget(): void {\n const moving = this.source();\n this.target.set([...this.target(), ...moving]);\n this.source.set([]);\n this._sourceSelected.set(new Set());\n this.onMoveToTarget.emit(moving);\n }\n\n moveToSource(): void {\n const moving = [...this.targetSelected()];\n if (!moving.length) return;\n this.target.set(this.target().filter(i => !this.targetSelected().has(i)));\n this.source.set([...this.source(), ...moving]);\n this._targetSelected.set(new Set());\n this.onMoveToSource.emit(moving);\n }\n\n moveAllToSource(): void {\n const moving = this.target();\n this.source.set([...this.source(), ...moving]);\n this.target.set([]);\n this._targetSelected.set(new Set());\n this.onMoveToSource.emit(moving);\n }\n}\n","import { Component, contentChild, input, model, output, TemplateRef } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\n@Component({\n selector: 'f-orderlist',\n imports: [UiIconComponent, NgTemplateOutlet],\n host: { class: 'block w-full' },\n template: `\n <div class=\"flex gap-2\">\n <div class=\"flex-1 border border-(--f-content-border-color) rounded-lg overflow-hidden\">\n @if (header()) {\n <div class=\"px-3 py-2 text-sm font-semibold bg-(--f-content-hover-background) border-b border-(--f-content-border-color)\">{{ header() }}</div>\n }\n <ul class=\"max-h-72 overflow-auto py-1\">\n @for (item of value(); track $index) {\n <li\n class=\"px-3 py-2 text-sm cursor-pointer transition-colors\"\n [class]=\"selected() === item ? 'bg-(--f-highlight-background) text-(--f-highlight-color)' : 'text-(--f-text-color) hover:bg-(--f-content-hover-background)'\"\n (click)=\"selected.set(item)\"\n >\n <ng-container [ngTemplateOutlet]=\"itemTpl() ?? null\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n </li>\n }\n @empty {\n <li class=\"px-3 py-6 text-center text-sm text-(--f-text-muted-color)\">No records found</li>\n }\n </ul>\n </div>\n\n <div class=\"flex flex-col gap-1.5 justify-center\">\n <button type=\"button\" class=\"w-8 h-8 flex items-center justify-center rounded-md border border-(--f-content-border-color) hover:bg-(--f-content-hover-background) cursor-pointer disabled:cursor-default disabled:opacity-40 disabled:pointer-events-none\" [disabled]=\"!selected()\" (click)=\"moveUp()\"><ui-icon name=\"chevron-up\" class=\"text-xs\"></ui-icon></button>\n <button type=\"button\" class=\"w-8 h-8 flex items-center justify-center rounded-md border border-(--f-content-border-color) hover:bg-(--f-content-hover-background) cursor-pointer disabled:cursor-default disabled:opacity-40 disabled:pointer-events-none\" [disabled]=\"!selected()\" (click)=\"moveDown()\"><ui-icon name=\"chevron-down\" class=\"text-xs\"></ui-icon></button>\n <button type=\"button\" class=\"w-8 h-8 flex items-center justify-center rounded-md border border-(--f-content-border-color) hover:bg-(--f-content-hover-background) cursor-pointer disabled:cursor-default disabled:opacity-40 disabled:pointer-events-none\" [disabled]=\"!selected()\" (click)=\"moveTop()\"><ui-icon name=\"chevrons-up\" class=\"text-xs\"></ui-icon></button>\n <button type=\"button\" class=\"w-8 h-8 flex items-center justify-center rounded-md border border-(--f-content-border-color) hover:bg-(--f-content-hover-background) cursor-pointer disabled:cursor-default disabled:opacity-40 disabled:pointer-events-none\" [disabled]=\"!selected()\" (click)=\"moveBottom()\"><ui-icon name=\"chevrons-down\" class=\"text-xs\"></ui-icon></button>\n </div>\n </div>\n `,\n})\nexport class OrderListComponent<T = unknown> {\n readonly value = model<T[]>([]);\n readonly header = input<string>('');\n\n readonly itemTpl = contentChild(TemplateRef);\n\n readonly selected = model<T | null>(null);\n readonly onReorder = output<T[]>();\n\n private swap(from: number, to: number): void {\n const list = [...this.value()];\n if (to < 0 || to >= list.length) return;\n [list[from], list[to]] = [list[to], list[from]];\n this.value.set(list);\n this.onReorder.emit(list);\n }\n\n moveUp(): void {\n const list = this.value();\n const i = list.indexOf(this.selected() as T);\n if (i > 0) this.swap(i, i - 1);\n }\n\n moveDown(): void {\n const list = this.value();\n const i = list.indexOf(this.selected() as T);\n if (i >= 0 && i < list.length - 1) this.swap(i, i + 1);\n }\n\n moveTop(): void {\n const list = [...this.value()];\n const i = list.indexOf(this.selected() as T);\n if (i > 0) {\n const [item] = list.splice(i, 1);\n list.unshift(item);\n this.value.set(list);\n this.onReorder.emit(list);\n }\n }\n\n moveBottom(): void {\n const list = [...this.value()];\n const i = list.indexOf(this.selected() as T);\n if (i >= 0 && i < list.length - 1) {\n const [item] = list.splice(i, 1);\n list.push(item);\n this.value.set(list);\n this.onReorder.emit(list);\n }\n }\n}\n","import { booleanAttribute, Component, input, signal } from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\nexport interface GalleriaItem {\n itemImageSrc: string;\n thumbnailImageSrc?: string;\n alt?: string;\n}\n\n@Component({\n selector: 'f-galleria',\n imports: [UiIconComponent],\n host: { class: 'block w-full' },\n template: `\n @if (value().length) {\n <div class=\"relative bg-(--f-content-hover-background) rounded-lg overflow-hidden\">\n <img [src]=\"value()[activeIndex()].itemImageSrc\" [alt]=\"value()[activeIndex()].alt ?? ''\" class=\"w-full object-contain\" [style.height]=\"height()\" />\n\n @if (value().length > 1) {\n <button type=\"button\" class=\"absolute left-2 top-1/2 -translate-y-1/2 w-9 h-9 rounded-full bg-black/40 hover:bg-black/60 text-white flex items-center justify-center transition-colors cursor-pointer\" (click)=\"prev()\">\n <ui-icon name=\"chevron-left\" class=\"text-sm\"></ui-icon>\n </button>\n <button type=\"button\" class=\"absolute right-2 top-1/2 -translate-y-1/2 w-9 h-9 rounded-full bg-black/40 hover:bg-black/60 text-white flex items-center justify-center transition-colors cursor-pointer\" (click)=\"next()\">\n <ui-icon name=\"chevron-right\" class=\"text-sm\"></ui-icon>\n </button>\n }\n </div>\n\n @if (showThumbnails() && value().length > 1) {\n <div class=\"flex gap-2 mt-2 overflow-x-auto py-1\">\n @for (item of value(); track $index) {\n <button\n type=\"button\"\n class=\"shrink-0 w-16 h-16 rounded-md overflow-hidden border-2 transition-colors cursor-pointer\"\n [class]=\"$index === activeIndex() ? 'border-primary' : 'border-transparent opacity-70 hover:opacity-100'\"\n (click)=\"selectIndex($index)\"\n >\n <img [src]=\"item.thumbnailImageSrc ?? item.itemImageSrc\" [alt]=\"item.alt ?? ''\" class=\"w-full h-full object-cover\" />\n </button>\n }\n </div>\n }\n }\n `,\n})\nexport class GalleriaComponent {\n readonly value = input<GalleriaItem[]>([]);\n readonly showThumbnails = input(true, { transform: booleanAttribute });\n readonly height = input<string>('24rem');\n\n private readonly _activeIndex = signal(0);\n readonly activeIndex = this._activeIndex.asReadonly();\n\n prev(): void { this._activeIndex.update(i => (i - 1 + this.value().length) % this.value().length); }\n next(): void { this._activeIndex.update(i => (i + 1) % this.value().length); }\n selectIndex(i: number): void { this._activeIndex.set(i); }\n}\n","import {\n Component,\n ElementRef,\n forwardRef,\n inject,\n input,\n SecurityContext,\n viewChild,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\ninterface EditorCommand {\n cmd: string;\n icon: string;\n label: string;\n value?: string;\n}\n\nconst TOOLBAR: EditorCommand[] = [\n { cmd: 'bold', icon: 'bold', label: 'Bold' },\n { cmd: 'italic', icon: 'italic', label: 'Italic' },\n { cmd: 'underline', icon: 'underline', label: 'Underline' },\n { cmd: 'insertUnorderedList', icon: 'list', label: 'Bullet list' },\n { cmd: 'insertOrderedList', icon: 'list-ordered', label: 'Numbered list' },\n { cmd: 'formatBlock', icon: 'quote', label: 'Quote', value: 'blockquote' },\n { cmd: 'removeFormat', icon: 'eraser', label: 'Clear formatting' },\n];\n\n@Component({\n selector: 'f-editor',\n imports: [UiIconComponent],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => EditorComponent), multi: true }],\n host: { class: 'block w-full' },\n styles: [`\n .f-editor-content:empty::before {\n content: attr(data-placeholder);\n color: var(--f-form-field-placeholder-color);\n pointer-events: none;\n }\n `],\n template: `\n <div class=\"border border-(--f-content-border-color) rounded-lg overflow-hidden bg-(--f-content-background)\">\n <div class=\"flex items-center gap-1 px-2 py-1.5 border-b border-(--f-content-border-color) bg-(--f-content-hover-background)/60\">\n @for (btn of toolbar; track btn.cmd) {\n <button\n type=\"button\"\n [attr.title]=\"btn.label\"\n class=\"w-8 h-8 flex items-center justify-center rounded-md text-(--f-text-muted-color) hover:bg-(--f-content-hover-background) hover:text-(--f-text-color) transition-colors cursor-pointer\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"exec(btn)\"\n >\n <ui-icon [name]=\"btn.icon\" class=\"text-sm\"></ui-icon>\n </button>\n }\n </div>\n <div\n #editable\n class=\"f-editor-content min-h-[10rem] max-h-[24rem] overflow-y-auto p-3 text-sm text-(--f-text-color) focus:outline-none prose prose-sm max-w-none\"\n contenteditable=\"true\"\n [attr.data-placeholder]=\"placeholder()\"\n (input)=\"onInput()\"\n (blur)=\"onTouched()\"\n ></div>\n </div>\n `,\n})\nexport class EditorComponent implements ControlValueAccessor {\n private readonly _document = inject(DOCUMENT);\n private readonly _sanitizer = inject(DomSanitizer);\n readonly editable = viewChild.required<ElementRef<HTMLElement>>('editable');\n readonly placeholder = input<string>('');\n\n readonly toolbar = TOOLBAR;\n\n private _onChange: (v: string) => void = () => {};\n private _onTouched: () => void = () => {};\n\n exec(btn: EditorCommand): void {\n this._document.execCommand(btn.cmd, false, btn.value);\n this.editable().nativeElement.focus();\n this.onInput();\n }\n\n onInput(): void {\n this._onChange(this.editable().nativeElement.innerHTML);\n }\n\n onTouched(): void {\n this._onTouched();\n }\n\n writeValue(v: string): void {\n const el = this.editable().nativeElement;\n el.innerHTML = this._sanitizer.sanitize(SecurityContext.HTML, v ?? '') ?? '';\n }\n registerOnChange(fn: (v: string) => void): void { this._onChange = fn; }\n registerOnTouched(fn: () => void): void { this._onTouched = fn; }\n setDisabledState(isDisabled: boolean): void {\n this.editable().nativeElement.contentEditable = String(!isDisabled);\n }\n}\n","import { Component, input, output, signal } from '@angular/core';\n\nexport interface TerminalCommandEvent {\n command: string;\n}\n\n@Component({\n selector: 'f-terminal',\n host: { class: 'block' },\n template: `\n <div class=\"bg-surface-950 text-surface-0 rounded-lg font-mono text-sm p-3 overflow-y-auto\" [style.height]=\"height()\" (click)=\"input.focus()\">\n @for (line of history(); track $index) {\n <div class=\"whitespace-pre-wrap break-words\">\n @if (line.type === 'command') {\n <span class=\"text-green-400\">{{ prompt() }}</span> {{ line.text }}\n } @else {\n <span>{{ line.text }}</span>\n }\n </div>\n }\n <div class=\"flex items-center gap-1\">\n <span class=\"text-green-400 shrink-0\">{{ prompt() }}</span>\n <input\n #input\n type=\"text\"\n class=\"flex-1 bg-transparent border-none outline-none text-surface-0\"\n [value]=\"current()\"\n (input)=\"onCurrentInput($any($event.target).value)\"\n (keydown.enter)=\"submit()\"\n />\n </div>\n </div>\n `,\n})\nexport class TerminalComponent {\n readonly welcomeMessage = input<string>('');\n readonly prompt = input<string>('$');\n readonly height = input<string>('16rem');\n\n readonly onCommand = output<TerminalCommandEvent>();\n\n private readonly _current = signal('');\n readonly current = this._current.asReadonly();\n private readonly _history = signal<Array<{ type: 'command' | 'response'; text: string }>>(\n this.welcomeMessage() ? [{ type: 'response', text: this.welcomeMessage() }] : [],\n );\n readonly history = this._history.asReadonly();\n\n onCurrentInput(v: string): void { this._current.set(v); }\n\n submit(): void {\n const command = this.current().trim();\n if (!command) return;\n this._history.update(h => [...h, { type: 'command', text: command }]);\n this.onCommand.emit({ command });\n this._current.set('');\n }\n\n respond(text: string): void {\n this._history.update(h => [...h, { type: 'response', text }]);\n }\n\n clear(): void {\n this._history.set([]);\n }\n}\n","import { Component, DestroyRef, ElementRef, inject, input, signal } from '@angular/core';\nimport { UiIconComponent } from '../icon/ui-icon.component';\n\n@Component({\n selector: 'f-imagecompare',\n imports: [UiIconComponent],\n host: { class: 'block' },\n template: `\n <div\n class=\"relative w-full overflow-hidden rounded-lg select-none cursor-ew-resize\"\n [style.height]=\"height()\"\n (mousedown)=\"onDown($event)\"\n (touchstart)=\"onTouchDown($event)\"\n >\n <img [src]=\"imageAfterSrc()\" [alt]=\"altAfter()\" class=\"absolute inset-0 w-full h-full object-cover\" draggable=\"false\" />\n <div class=\"absolute inset-0 overflow-hidden\" [style.width.%]=\"position()\">\n <img [src]=\"imageBeforeSrc()\" [alt]=\"altBefore()\" class=\"h-full object-cover\" [style.width]=\"containerWidth()\" draggable=\"false\" />\n </div>\n <div class=\"absolute top-0 bottom-0 w-0.5 bg-white shadow-lg\" [style.left.%]=\"position()\">\n <div class=\"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-8 h-8 rounded-full bg-white shadow-lg flex items-center justify-center\">\n <ui-icon name=\"move-horizontal\" class=\"text-xs text-surface-900\"></ui-icon>\n </div>\n </div>\n </div>\n `,\n})\nexport class ImageCompareComponent {\n private readonly _el = inject(ElementRef<HTMLElement>);\n private readonly destroyRef = inject(DestroyRef);\n\n readonly imageBeforeSrc = input<string>('');\n readonly imageAfterSrc = input<string>('');\n readonly altBefore = input<string>('');\n readonly altAfter = input<string>('');\n readonly height = input<string>('20rem');\n\n private readonly _position = signal(50);\n readonly position = this._position.asReadonly();\n private readonly _containerWidth = signal('100%');\n readonly containerWidth = this._containerWidth.asReadonly();\n\n private activeCleanup: (() => void) | null = null;\n\n constructor() {\n this.destroyRef.onDestroy(() => this.activeCleanup?.());\n }\n\n onDown(e: MouseEvent): void {\n e.preventDefault();\n const rect = this._el.nativeElement.querySelector('div')!.getBoundingClientRect();\n this._containerWidth.set(`${rect.width}px`);\n this.updatePosition(e.clientX, rect);\n const onMove = (ev: MouseEvent) => this.updatePosition(ev.clientX, rect);\n const onUp = () => {\n this.activeCleanup = null;\n document.removeEventListener('mousemove', onMove);\n document.removeEventListener('mouseup', onUp);\n };\n document.addEventListener('mousemove', onMove);\n document.addEventListener('mouseup', onUp);\n this.activeCleanup = onUp;\n }\n\n onTouchDown(e: TouchEvent): void {\n const touch = e.touches[0];\n if (!touch) return;\n const rect = this._el.nativeElement.querySelector('div')!.getBoundingClientRect();\n this._containerWidth.set(`${rect.width}px`);\n this.updatePosition(touch.clientX, rect);\n const onMove = (ev: TouchEvent) => {\n if (ev.touches[0]) this.updatePosition(ev.touches[0].clientX, rect);\n };\n const onEnd = () => {\n this.activeCleanup = null;\n document.removeEventListener('touchmove', onMove);\n document.removeEventListener('touchend', onEnd);\n };\n document.addEventListener('touchmove', onMove);\n document.addEventListener('touchend', onEnd);\n this.activeCleanup = onEnd;\n }\n\n private updatePosition(clientX: number, rect: DOMRect): void {\n const pct = Math.min(100, Math.max(0, ((clientX - rect.left) / rect.width) * 100));\n this._position.set(pct);\n }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { AfterViewInit, Directive, ElementRef, inject, input, OnDestroy, PLATFORM_ID } from '@angular/core';\n\n@Directive({ selector: '[fAnimateOnScroll]' })\nexport class AnimateOnScrollDirective implements AfterViewInit, OnDestroy {\n private readonly _el = inject(ElementRef<HTMLElement>);\n private readonly _platformId = inject(PLATFORM_ID);\n\n readonly enterClass = input<string>('animate-fade-in');\n readonly leaveClass = input<string>('');\n readonly once = input(true);\n readonly threshold = input<number>(0.15);\n\n private _observer?: IntersectionObserver;\n\n ngAfterViewInit(): void {\n if (!isPlatformBrowser(this._platformId)) return;\n const el = this._el.nativeElement;\n this._observer = new IntersectionObserver(\n entries => {\n for (const entry of entries) {\n if (entry.isIntersecting) {\n el.classList.add(...this.enterClass().split(' ').filter(Boolean));\n if (this.leaveClass()) el.classList.remove(...this.leaveClass().split(' ').filter(Boolean));\n if (this.once()) this._observer?.unobserve(el);\n } else if (!this.once()) {\n el.classList.remove(...this.enterClass().split(' ').filter(Boolean));\n if (this.leaveClass()) el.classList.add(...this.leaveClass().split(' ').filter(Boolean));\n }\n }\n },\n { threshold: this.threshold() },\n );\n this._observer.observe(el);\n }\n\n ngOnDestroy(): void {\n this._observer?.disconnect();\n }\n}\n","import { AfterViewInit, booleanAttribute, Directive, ElementRef, inject, input } from '@angular/core';\n\n@Directive({ selector: '[fAutoFocus]' })\nexport class AutoFocusDirective implements AfterViewInit {\n private readonly _el = inject(ElementRef<HTMLElement>);\n\n readonly fAutoFocus = input(true, { transform: booleanAttribute });\n\n ngAfterViewInit(): void {\n if (this.fAutoFocus()) {\n queueMicrotask(() => this._el.nativeElement.focus());\n }\n }\n}\n","import { Directive, ElementRef, inject } from '@angular/core';\n\n@Directive({\n selector: '[fRipple]',\n host: {\n style: 'position: relative; overflow: hidden;',\n '(mousedown)': 'onMouseDown($event)',\n },\n})\nexport class RippleDirective {\n private readonly _el = inject(ElementRef<HTMLElement>);\n\n onMouseDown(e: MouseEvent): void {\n const el = this._el.nativeElement;\n const rect = el.getBoundingClientRect();\n const size = Math.max(rect.width, rect.height) * 2;\n const span = document.createElement('span');\n span.style.cssText = `\n position: absolute;\n border-radius: 50%;\n pointer-events: none;\n background: currentColor;\n opacity: 0.25;\n transform: scale(0);\n width: ${size}px;\n height: ${size}px;\n left: ${e.clientX - rect.left - size / 2}px;\n top: ${e.clientY - rect.top - size / 2}px;\n transition: transform 0.4s ease-out, opacity 0.6s ease-out;\n `;\n el.appendChild(span);\n requestAnimationFrame(() => {\n span.style.transform = 'scale(1)';\n span.style.opacity = '0';\n });\n setTimeout(() => span.remove(), 600);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\n// ─── Phase 8 — Icon ───────────────────────────────────────────────────────────\nimport { UiIconComponent } from '../components/icon/ui-icon.component';\n\n// ─── Phase 1 ──────────────────────────────────────────────────────────────────\nimport { ConfirmDialog } from '../components/confirm-dialog/confirm-dialog.component';\nimport { ToastComponent } from '../components/toast/toast.component';\n\n// ─── Phase 2 ──────────────────────────────────────────────────────────────────\nimport { AvatarComponent } from '../components/avatar/avatar.component';\nimport { AvatarGroupComponent } from '../components/avatar/avatar-group.component';\nimport { ButtonComponent } from '../components/button/button.component';\nimport { FButtonDirective } from '../components/button/f-button.directive';\nimport { ChipComponent } from '../components/chip/chip.component';\nimport { DividerComponent } from '../components/divider/divider.component';\nimport { ImageComponent } from '../components/image/image.component';\nimport { MessageComponent } from '../components/message/message.component';\nimport { ProgressbarComponent } from '../components/progressbar/progressbar.component';\nimport { ProgressSpinnerComponent } from '../components/progressspinner/progressspinner.component';\nimport { SkeletonComponent } from '../components/skeleton/skeleton.component';\nimport { TagComponent } from '../components/tag/tag.component';\n\n// ─── Phase 3 ──────────────────────────────────────────────────────────────────\nimport { CheckboxComponent } from '../components/checkbox/checkbox.component';\nimport { DatePickerComponent } from '../components/datepicker/datepicker.component';\nimport { FileUploadComponent } from '../components/fileupload/fileupload.component';\nimport { IconFieldComponent } from '../components/iconfield/iconfield.component';\nimport { InputIconComponent } from '../components/inputicon/inputicon.component';\nimport { InputNumberComponent } from '../components/inputnumber/inputnumber.component';\nimport { InputTextDirective } from '../components/input-text/input-text.directive';\nimport { InputPasswordDirective } from '../components/input-text/input-password.directive';\nimport { MultiSelectComponent } from '../components/select/multiselect.component';\nimport { PasswordComponent } from '../components/password/password.component';\nimport { RadioButtonComponent } from '../components/radiobutton/radiobutton.component';\nimport { RatingComponent } from '../components/rating/rating.component';\nimport { SelectComponent } from '../components/select/select.component';\nimport { SelectButtonComponent } from '../components/selectbutton/selectbutton.component';\nimport { TextareaDirective } from '../components/textarea/textarea.directive';\nimport { ToggleButtonComponent } from '../components/togglebutton/togglebutton.component';\nimport { ToggleSwitchComponent } from '../components/toggleswitch/toggleswitch.component';\n\n// ─── Phase 4 ──────────────────────────────────────────────────────────────────\nimport { DialogComponent } from '../components/dialog/dialog.component';\nimport { DrawerComponent } from '../components/drawer/drawer.component';\nimport { PopoverComponent } from '../components/popover/popover.component';\n\n// ─── Phase 5 ──────────────────────────────────────────────────────────────────\nimport { CardComponent } from '../components/card/card.component';\nimport { PanelComponent } from '../components/panel/panel.component';\nimport { StepsComponent } from '../components/steps/steps.component';\nimport { SplitterComponent, SplitterPanelComponent } from '../components/splitter/splitter.component';\nimport { ToolbarComponent } from '../components/toolbar/toolbar.component';\nimport {\n TabsComponent,\n TabComponent,\n TabListComponent,\n TabPanelComponent,\n TabPanelsComponent,\n} from '../components/tabs/tabs.component';\nimport {\n AccordionComponent,\n AccordionPanelComponent,\n AccordionHeaderComponent,\n AccordionContentComponent,\n} from '../components/accordion/accordion.component';\n\n// ─── Phase 6 ──────────────────────────────────────────────────────────────────\nimport { ChartComponent } from '../components/chart/chart.component';\nimport { PaginatorComponent } from '../components/paginator/paginator.component';\nimport { SortIconComponent, SortableColumnDirective } from '../components/table/sort-icon.component';\nimport { StyleClassDirective } from '../components/styleclass/styleclass.directive';\nimport { TableComponent } from '../components/table/table.component';\nimport { TooltipDirective } from '../components/tooltip/tooltip.directive';\n\n// ─── Phase 7 ──────────────────────────────────────────────────────────────────\nimport { AutoCompleteComponent } from '../components/autocomplete/autocomplete.component';\nimport { ColorPickerComponent } from '../components/colorpicker/colorpicker.component';\nimport { ListboxComponent } from '../components/listbox/listbox.component';\nimport { SplitButtonComponent } from '../components/splitbutton/splitbutton.component';\nimport { TreeTableComponent, TreeTableTogglerComponent } from '../components/treetable/treetable.component';\nimport { TreeSelectComponent } from '../components/treeselect/treeselect.component';\n\n// ─── Phase 9 — Component library extensions ──────────────────────────────────────────────────\nimport { BadgeComponent } from '../components/badge/badge.component';\nimport { OverlayBadgeComponent } from '../components/overlaybadge/overlaybadge.component';\nimport { FieldsetComponent } from '../components/fieldset/fieldset.component';\nimport { FloatLabelComponent } from '../components/floatlabel/floatlabel.component';\nimport { IftaLabelComponent } from '../components/iftalabel/iftalabel.component';\nimport { ButtonGroupComponent } from '../components/buttongroup/buttongroup.component';\nimport { InputGroupComponent, InputGroupAddonComponent } from '../components/inputgroup/inputgroup.component';\nimport { ScrollTopComponent } from '../components/scrolltop/scrolltop.component';\nimport { MeterGroupComponent } from '../components/metergroup/metergroup.component';\nimport { FluidComponent } from '../components/fluid/fluid.component';\nimport { BlockUiComponent } from '../components/blockui/blockui.component';\nimport { MenuComponent } from '../components/menu/menu.component';\nimport { MenubarComponent } from '../components/menubar/menubar.component';\nimport { TieredMenuComponent } from '../components/tieredmenu/tieredmenu.component';\nimport { ContextMenuComponent } from '../components/contextmenu/contextmenu.component';\nimport { MegaMenuComponent } from '../components/megamenu/megamenu.component';\nimport { PanelMenuComponent } from '../components/panelmenu/panelmenu.component';\nimport { BreadcrumbComponent } from '../components/breadcrumb/breadcrumb.component';\nimport { SpeedDialComponent } from '../components/speeddial/speeddial.component';\nimport { DockComponent } from '../components/dock/dock.component';\nimport { InputMaskDirective } from '../components/inputmask/inputmask.directive';\nimport { InputOtpComponent } from '../components/inputotp/inputotp.component';\nimport { SliderComponent } from '../components/slider/slider.component';\nimport { KnobComponent } from '../components/knob/knob.component';\nimport { CascadeSelectComponent } from '../components/cascadeselect/cascadeselect.component';\nimport { KeyFilterDirective } from '../components/keyfilter/keyfilter.directive';\nimport { ConfirmPopupComponent } from '../components/confirmpopup/confirmpopup.component';\nimport { DynamicDialogComponent } from '../components/dynamicdialog/dynamicdialog.component';\nimport { InplaceComponent } from '../components/inplace/inplace.component';\nimport { TreeComponent } from '../components/tree/tree.component';\nimport { TimelineComponent } from '../components/timeline/timeline.component';\nimport { DataViewComponent } from '../components/dataview/dataview.component';\nimport { CarouselComponent } from '../components/carousel/carousel.component';\nimport { ScrollPanelComponent } from '../components/scrollpanel/scrollpanel.component';\nimport { ScrollerComponent } from '../components/scroller/scroller.component';\nimport { OrganizationChartComponent } from '../components/organizationchart/organizationchart.component';\nimport { PickListComponent } from '../components/picklist/picklist.component';\nimport { OrderListComponent } from '../components/orderlist/orderlist.component';\nimport { GalleriaComponent } from '../components/galleria/galleria.component';\nimport { EditorComponent } from '../components/editor/editor.component';\nimport { TerminalComponent } from '../components/terminal/terminal.component';\nimport { ImageCompareComponent } from '../components/imagecompare/imagecompare.component';\nimport { AnimateOnScrollDirective } from '../components/animateonscroll/animateonscroll.directive';\nimport { AutoFocusDirective } from '../components/autofocus/autofocus.directive';\nimport { RippleDirective } from '../components/ripple/ripple.directive';\n\n// ─── Shared utilities ─────────────────────────────────────────────────────────\nimport { FTemplateDirective } from '../components/shared/ftemplate.directive';\n\nconst ALL_COMPONENTS = [\n // Phase 1\n ConfirmDialog, ToastComponent,\n // Phase 2\n AvatarComponent, AvatarGroupComponent, ButtonComponent, FButtonDirective,\n ChipComponent, DividerComponent, ImageComponent, MessageComponent,\n ProgressbarComponent, ProgressSpinnerComponent, SkeletonComponent, TagComponent,\n // Phase 3\n CheckboxComponent, DatePickerComponent, FileUploadComponent,\n IconFieldComponent, InputIconComponent, InputNumberComponent, InputTextDirective,\n InputPasswordDirective,\n MultiSelectComponent, PasswordComponent, RadioButtonComponent, RatingComponent,\n SelectComponent, SelectButtonComponent, TextareaDirective,\n ToggleButtonComponent, ToggleSwitchComponent,\n // Phase 4\n DialogComponent, DrawerComponent, PopoverComponent,\n // Phase 5\n CardComponent, PanelComponent, StepsComponent,\n SplitterComponent, SplitterPanelComponent, ToolbarComponent,\n TabsComponent, TabComponent, TabListComponent, TabPanelComponent, TabPanelsComponent,\n AccordionComponent, AccordionPanelComponent, AccordionHeaderComponent, AccordionContentComponent,\n // Phase 6\n ChartComponent, PaginatorComponent, SortIconComponent, SortableColumnDirective,\n StyleClassDirective, TableComponent, TooltipDirective,\n // Phase 7\n AutoCompleteComponent, ColorPickerComponent, ListboxComponent,\n SplitButtonComponent, TreeTableComponent, TreeTableTogglerComponent, TreeSelectComponent,\n // Phase 8 — Icon\n UiIconComponent,\n // Phase 9 — Component library extensions\n BadgeComponent, OverlayBadgeComponent, FieldsetComponent, FloatLabelComponent, IftaLabelComponent,\n ButtonGroupComponent, InputGroupComponent, InputGroupAddonComponent, ScrollTopComponent,\n MeterGroupComponent, FluidComponent, BlockUiComponent,\n MenuComponent, MenubarComponent, TieredMenuComponent, ContextMenuComponent, MegaMenuComponent,\n PanelMenuComponent, BreadcrumbComponent, SpeedDialComponent, DockComponent,\n InputMaskDirective, InputOtpComponent, SliderComponent, KnobComponent,\n CascadeSelectComponent, KeyFilterDirective,\n ConfirmPopupComponent, DynamicDialogComponent, InplaceComponent,\n TreeComponent, TimelineComponent, DataViewComponent, CarouselComponent,\n ScrollPanelComponent, ScrollerComponent,\n OrganizationChartComponent, PickListComponent, OrderListComponent, GalleriaComponent,\n EditorComponent, TerminalComponent, ImageCompareComponent,\n AnimateOnScrollDirective, AutoFocusDirective, RippleDirective,\n // Shared utilities\n FTemplateDirective,\n];\n\n@NgModule({\n imports: [FormsModule, ...ALL_COMPONENTS],\n exports: [...ALL_COMPONENTS],\n})\nexport class UiModule {}\n","import { Injectable, signal } from '@angular/core';\n\nexport interface NgUITranslationConfig {\n accept?: string;\n reject?: string;\n choose?: string;\n upload?: string;\n cancel?: string;\n close?: string;\n clear?: string;\n apply?: string;\n remove?: string;\n today?: string;\n weekHeader?: string;\n firstDayOfWeek?: number;\n showMonthAfterYear?: boolean;\n dateFormat?: string;\n dayNames?: string[];\n dayNamesShort?: string[];\n dayNamesMin?: string[];\n monthNames?: string[];\n monthNamesShort?: string[];\n aria?: Record<string, string>;\n [key: string]: unknown;\n}\n\nexport interface NgUIOptions {\n theme?: {\n options?: {\n darkModeSelector?: string;\n cssLayer?: { name: string; order: string } | false;\n };\n };\n translation?: NgUITranslationConfig;\n}\n\n@Injectable()\nexport class NgUIConfig {\n private readonly _translation = signal<NgUITranslationConfig>({\n accept: 'Yes',\n reject: 'No',\n choose: 'Choose',\n upload: 'Upload',\n cancel: 'Cancel',\n close: 'Close',\n clear: 'Clear',\n apply: 'Apply',\n remove: 'Remove',\n today: 'Today',\n weekHeader: 'Wk',\n firstDayOfWeek: 0,\n showMonthAfterYear: false,\n dateFormat: 'mm/dd/yy',\n dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n dayNamesMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n });\n\n readonly translation = this._translation.asReadonly();\n\n configure(options: NgUIOptions): void {\n if (options?.translation) {\n this._translation.update(t => ({ ...t, ...options.translation }));\n }\n }\n}\n","export type ColorShade = '50' | '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900' | '950';\nexport type ColorPalette = Record<ColorShade, string>;\nexport type SurfacePalette = { 0: string } & ColorPalette;\n\n// ─── Primary color palettes (all Tailwind colors) ─────────────────────────────\n\nexport const PRIMARY_PALETTES: Record<string, ColorPalette> = {\n emerald: {\n '50': '#ecfdf5', '100': '#d1fae5', '200': '#a7f3d0', '300': '#6ee7b7',\n '400': '#34d399', '500': '#10b981', '600': '#059669', '700': '#047857',\n '800': '#065f46', '900': '#064e3b', '950': '#022c22',\n },\n green: {\n '50': '#f0fdf4', '100': '#dcfce7', '200': '#bbf7d0', '300': '#86efac',\n '400': '#4ade80', '500': '#22c55e', '600': '#16a34a', '700': '#15803d',\n '800': '#166534', '900': '#14532d', '950': '#052e16',\n },\n lime: {\n '50': '#f7fee7', '100': '#ecfccb', '200': '#d9f99d', '300': '#bef264',\n '400': '#a3e635', '500': '#84cc16', '600': '#65a30d', '700': '#4d7c0f',\n '800': '#3f6212', '900': '#365314', '950': '#1a2e05',\n },\n orange: {\n '50': '#fff7ed', '100': '#ffedd5', '200': '#fed7aa', '300': '#fdba74',\n '400': '#fb923c', '500': '#f97316', '600': '#ea580c', '700': '#c2410c',\n '800': '#9a3412', '900': '#7c2d12', '950': '#431407',\n },\n amber: {\n '50': '#fffbeb', '100': '#fef3c7', '200': '#fde68a', '300': '#fcd34d',\n '400': '#fbbf24', '500': '#f59e0b', '600': '#d97706', '700': '#b45309',\n '800': '#92400e', '900': '#78350f', '950': '#451a03',\n },\n yellow: {\n '50': '#fefce8', '100': '#fef9c3', '200': '#fef08a', '300': '#fde047',\n '400': '#facc15', '500': '#eab308', '600': '#ca8a04', '700': '#a16207',\n '800': '#854d0e', '900': '#713f12', '950': '#422006',\n },\n teal: {\n '50': '#f0fdfa', '100': '#ccfbf1', '200': '#99f6e4', '300': '#5eead4',\n '400': '#2dd4bf', '500': '#14b8a6', '600': '#0d9488', '700': '#0f766e',\n '800': '#115e59', '900': '#134e4a', '950': '#042f2e',\n },\n cyan: {\n '50': '#ecfeff', '100': '#cffafe', '200': '#a5f3fc', '300': '#67e8f9',\n '400': '#22d3ee', '500': '#06b6d4', '600': '#0891b2', '700': '#0e7490',\n '800': '#155e75', '900': '#164e63', '950': '#083344',\n },\n sky: {\n '50': '#f0f9ff', '100': '#e0f2fe', '200': '#bae6fd', '300': '#7dd3fc',\n '400': '#38bdf8', '500': '#0ea5e9', '600': '#0284c7', '700': '#0369a1',\n '800': '#075985', '900': '#0c4a6e', '950': '#082f49',\n },\n blue: {\n '50': '#eff6ff', '100': '#dbeafe', '200': '#bfdbfe', '300': '#93c5fd',\n '400': '#60a5fa', '500': '#3b82f6', '600': '#2563eb', '700': '#1d4ed8',\n '800': '#1e40af', '900': '#1e3a8a', '950': '#172554',\n },\n indigo: {\n '50': '#eef2ff', '100': '#e0e7ff', '200': '#c7d2fe', '300': '#a5b4fc',\n '400': '#818cf8', '500': '#6366f1', '600': '#4f46e5', '700': '#4338ca',\n '800': '#3730a3', '900': '#312e81', '950': '#1e1b4b',\n },\n violet: {\n '50': '#f5f3ff', '100': '#ede9fe', '200': '#ddd6fe', '300': '#c4b5fd',\n '400': '#a78bfa', '500': '#8b5cf6', '600': '#7c3aed', '700': '#6d28d9',\n '800': '#5b21b6', '900': '#4c1d95', '950': '#2e1065',\n },\n purple: {\n '50': '#faf5ff', '100': '#f3e8ff', '200': '#e9d5ff', '300': '#d8b4fe',\n '400': '#c084fc', '500': '#a855f7', '600': '#9333ea', '700': '#7e22ce',\n '800': '#6b21a8', '900': '#581c87', '950': '#3b0764',\n },\n fuchsia: {\n '50': '#fdf4ff', '100': '#fae8ff', '200': '#f5d0fe', '300': '#f0abfc',\n '400': '#e879f9', '500': '#d946ef', '600': '#c026d3', '700': '#a21caf',\n '800': '#86198f', '900': '#701a75', '950': '#4a044e',\n },\n pink: {\n '50': '#fdf2f8', '100': '#fce7f3', '200': '#fbcfe8', '300': '#f9a8d4',\n '400': '#f472b6', '500': '#ec4899', '600': '#db2777', '700': '#be185d',\n '800': '#9d174d', '900': '#831843', '950': '#500724',\n },\n rose: {\n '50': '#fff1f2', '100': '#ffe4e6', '200': '#fecdd3', '300': '#fda4af',\n '400': '#fb7185', '500': '#f43f5e', '600': '#e11d48', '700': '#be123c',\n '800': '#9f1239', '900': '#881337', '950': '#4c0519',\n },\n};\n\n// ─── Surface palettes ─────────────────────────────────────────────────────────\n\nexport const SURFACE_PALETTES: Record<string, SurfacePalette> = {\n slate: {\n 0: '#ffffff', '50': '#f8fafc', '100': '#f1f5f9', '200': '#e2e8f0',\n '300': '#cbd5e1', '400': '#94a3b8', '500': '#64748b', '600': '#475569',\n '700': '#334155', '800': '#1e293b', '900': '#0f172a', '950': '#020617',\n },\n gray: {\n 0: '#ffffff', '50': '#f9fafb', '100': '#f3f4f6', '200': '#e5e7eb',\n '300': '#d1d5db', '400': '#9ca3af', '500': '#6b7280', '600': '#4b5563',\n '700': '#374151', '800': '#1f2937', '900': '#111827', '950': '#030712',\n },\n zinc: {\n 0: '#ffffff', '50': '#fafafa', '100': '#f4f4f5', '200': '#e4e4e7',\n '300': '#d4d4d8', '400': '#a1a1aa', '500': '#71717a', '600': '#52525b',\n '700': '#3f3f46', '800': '#27272a', '900': '#18181b', '950': '#09090b',\n },\n neutral: {\n 0: '#ffffff', '50': '#fafafa', '100': '#f5f5f5', '200': '#e5e5e5',\n '300': '#d4d4d4', '400': '#a3a3a3', '500': '#737373', '600': '#525252',\n '700': '#404040', '800': '#262626', '900': '#171717', '950': '#0a0a0a',\n },\n stone: {\n 0: '#ffffff', '50': '#fafaf9', '100': '#f5f5f4', '200': '#e7e5e4',\n '300': '#d6d3d1', '400': '#a8a29e', '500': '#78716c', '600': '#57534e',\n '700': '#44403c', '800': '#292524', '900': '#1c1917', '950': '#0c0a09',\n },\n soho: {\n 0: '#ffffff', '50': '#ececec', '100': '#dedfdf', '200': '#c4c4c6',\n '300': '#adaeb0', '400': '#97979b', '500': '#7f8084', '600': '#6a6b70',\n '700': '#55565b', '800': '#3f4046', '900': '#2c2c34', '950': '#16161d',\n },\n viva: {\n 0: '#ffffff', '50': '#f3f3f3', '100': '#e7e7e8', '200': '#cfd0d0',\n '300': '#b7b8b9', '400': '#9fa1a1', '500': '#87898a', '600': '#6e7173',\n '700': '#565a5b', '800': '#3e4244', '900': '#262b2c', '950': '#0e1315',\n },\n ocean: {\n 0: '#ffffff', '50': '#fbfcfc', '100': '#f7f9f8', '200': '#eff3f2',\n '300': '#dadedd', '400': '#b1b7b6', '500': '#828787', '600': '#5f7274',\n '700': '#415b61', '800': '#29444e', '900': '#183240', '950': '#0c1920',\n },\n};\n\nexport const NOIR_PRIMARY: ColorPalette = {\n '50': 'var(--f-surface-50)', '100': 'var(--f-surface-100)', '200': 'var(--f-surface-200)',\n '300': 'var(--f-surface-300)', '400': 'var(--f-surface-400)', '500': 'var(--f-surface-500)',\n '600': 'var(--f-surface-600)', '700': 'var(--f-surface-700)', '800': 'var(--f-surface-800)',\n '900': 'var(--f-surface-900)', '950': 'var(--f-surface-950)',\n};\n","export type PresetName = 'Aura' | 'Lara' | 'Nora';\n\nexport interface SelectButtonTokens {\n background: string;\n borderColor: string;\n dividerColor: string;\n padding: string;\n itemColor: string;\n itemHoverBackground: string;\n checkedBackground: string;\n checkedColor: string;\n checkedShadow: string;\n fontWeight: string;\n itemBorderRadius: string;\n}\n\nexport interface ThemePreset {\n name: PresetName;\n borderRadius: string;\n borderRadiusSm: string;\n borderRadiusLg: string;\n borderRadiusXl: string;\n borderWidth: string;\n shadowSm: string;\n shadow: string;\n shadowLg: string;\n shadowXl: string;\n shadow2xl: string;\n transitionDuration: string;\n focusRingWidth: string;\n focusRingStyle: string;\n focusRingOffset: string;\n buttonFontWeight: string;\n highlightVariant: 'tint' | 'solid';\n strongBorders: boolean;\n selectButton: SelectButtonTokens;\n cardBorderRadius: string;\n cardPadding: string;\n cardGap: string;\n cardShadow: string;\n}\n\nexport const AURA_PRESET: ThemePreset = {\n name: 'Aura',\n borderRadius: '6px',\n borderRadiusSm: '4px',\n borderRadiusLg: '8px',\n borderRadiusXl: '12px',\n borderWidth: '1px',\n shadowSm: '0 1px 2px 0 rgb(0 0 0 / 0.05)',\n shadow: '0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)',\n shadowLg: '0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)',\n shadowXl: '0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)',\n shadow2xl: '0 25px 50px -12px rgb(0 0 0 / 0.25)',\n transitionDuration: '0.2s',\n focusRingWidth: '1px',\n focusRingStyle: 'solid',\n focusRingOffset: '2px',\n buttonFontWeight: '500',\n highlightVariant: 'tint',\n strongBorders: false,\n selectButton: {\n background: 'var(--f-track-background)',\n borderColor: 'transparent',\n dividerColor: 'transparent',\n padding: '3px',\n itemColor: 'var(--f-text-muted-color)',\n itemHoverBackground: 'transparent',\n checkedBackground: 'var(--f-track-item-background)',\n checkedColor: 'var(--f-text-color)',\n checkedShadow: '0px 1px 2px 0px rgba(0,0,0,0.02), 0px 1px 2px 0px rgba(0,0,0,0.04)',\n fontWeight: '500',\n itemBorderRadius: 'calc(var(--f-border-radius-md) - 3px)',\n },\n cardBorderRadius: '12px',\n cardPadding: '1.25rem',\n cardGap: '0.5rem',\n cardShadow: '0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1)',\n};\n\nexport const NORA_PRESET: ThemePreset = {\n name: 'Nora',\n borderRadius: '2px',\n borderRadiusSm: '2px',\n borderRadiusLg: '2px',\n borderRadiusXl: '2px',\n borderWidth: '2px',\n shadowSm: '0 1px 2px 0 rgb(0 0 0 / 0.05)',\n shadow: '0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)',\n shadowLg: '0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)',\n shadowXl: '0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)',\n shadow2xl: '0 25px 50px -12px rgb(0 0 0 / 0.25)',\n transitionDuration: '0s',\n focusRingWidth: '2px',\n focusRingStyle: 'solid',\n focusRingOffset: '-1px',\n buttonFontWeight: '700',\n highlightVariant: 'solid',\n strongBorders: true,\n selectButton: {\n background: 'var(--f-form-field-background)',\n borderColor: 'var(--f-form-field-border-color)',\n dividerColor: 'var(--f-form-field-border-color)',\n padding: '0px',\n itemColor: 'var(--f-text-muted-color)',\n itemHoverBackground: 'var(--f-content-hover-background)',\n checkedBackground: 'var(--f-primary-color)',\n checkedColor: 'var(--f-primary-contrast-color)',\n checkedShadow: 'none',\n fontWeight: '600',\n itemBorderRadius: '0px',\n },\n cardBorderRadius: '4px',\n cardPadding: '1.25rem',\n cardGap: '0.5rem',\n cardShadow: '0 1px 4px 0 rgba(0, 0, 0, 0.1)',\n};\n\nexport const LARA_PRESET: ThemePreset = {\n name: 'Lara',\n borderRadius: '6px',\n borderRadiusSm: '4px',\n borderRadiusLg: '8px',\n borderRadiusXl: '12px',\n borderWidth: '1px',\n shadowSm: '0 1px 2px 0 rgba(0, 0, 0, 0.08)',\n shadow: '0 1px 3px rgba(0, 0, 0, 0.1)',\n shadowLg: '0 2px 12px 0 rgba(0, 0, 0, 0.1)',\n shadowXl: '0 1px 3px rgba(0, 0, 0, 0.3)',\n shadow2xl: '0 4px 12px 0 rgba(0, 0, 0, 0.35)',\n transitionDuration: '0.2s',\n focusRingWidth: '0',\n focusRingStyle: 'none',\n focusRingOffset: '0',\n buttonFontWeight: '600',\n highlightVariant: 'tint',\n strongBorders: false,\n selectButton: {\n background: 'var(--f-form-field-background)',\n borderColor: 'var(--f-form-field-border-color)',\n dividerColor: 'var(--f-form-field-border-color)',\n padding: '0px',\n itemColor: 'var(--f-text-muted-color)',\n itemHoverBackground: 'var(--f-content-hover-background)',\n checkedBackground: 'var(--f-highlight-background)',\n checkedColor: 'var(--f-highlight-color)',\n checkedShadow: 'none',\n fontWeight: '500',\n itemBorderRadius: '0px',\n },\n cardBorderRadius: '8px',\n cardPadding: '1.5rem',\n cardGap: '0.75rem',\n cardShadow: '0 0.125rem 0.25rem rgba(0, 0, 0, 0.075)',\n};\n\nexport const PRESETS: Record<PresetName, ThemePreset> = {\n Aura: AURA_PRESET,\n Lara: LARA_PRESET,\n Nora: NORA_PRESET,\n};\n\nexport const PRESET_NAMES: PresetName[] = ['Aura', 'Lara', 'Nora'];\n","import { ColorPalette, SurfacePalette, NOIR_PRIMARY, PRIMARY_PALETTES, SURFACE_PALETTES } from './palettes';\nimport { PresetName, PRESETS, ThemePreset } from './presets';\n\nfunction setVar(name: string, value: string, root: HTMLElement): void {\n root.style.setProperty(name, value);\n}\n\n// ─── Primary color ─────────────────────────────────────────────────────────────\n\nexport function applyPrimaryPalette(palette: ColorPalette, isDark = false, root = document.documentElement): void {\n const shades = ['50', '100', '200', '300', '400', '500', '600', '700', '800', '900', '950'] as const;\n for (const shade of shades) {\n setVar(`--f-primary-${shade}`, palette[shade], root);\n }\n const isNoir = palette['50'].startsWith('var(');\n if (isNoir) {\n if (isDark) {\n setVar('--f-primary-color', 'var(--f-surface-50)', root);\n setVar('--f-primary-hover-color', 'var(--f-surface-200)', root);\n setVar('--f-primary-active-color', 'var(--f-surface-300)', root);\n setVar('--f-primary-contrast-color', 'var(--f-surface-950)', root);\n } else {\n setVar('--f-primary-color', 'var(--f-surface-950)', root);\n setVar('--f-primary-hover-color', 'var(--f-surface-800)', root);\n setVar('--f-primary-active-color', 'var(--f-surface-700)', root);\n setVar('--f-primary-contrast-color', '#ffffff', root);\n }\n } else {\n if (isDark) {\n setVar('--f-primary-color', 'var(--f-primary-400)', root);\n setVar('--f-primary-hover-color', 'var(--f-primary-300)', root);\n setVar('--f-primary-active-color', 'var(--f-primary-200)', root);\n setVar('--f-primary-contrast-color', 'var(--f-surface-900)', root);\n } else {\n setVar('--f-primary-color', 'var(--f-primary-500)', root);\n setVar('--f-primary-hover-color', 'var(--f-primary-600)', root);\n setVar('--f-primary-active-color', 'var(--f-primary-700)', root);\n setVar('--f-primary-contrast-color', '#ffffff', root);\n }\n }\n}\n\n// ─── Surface palette ───────────────────────────────────────────────────────────\n\nexport function applySurfacePalette(palette: SurfacePalette, root = document.documentElement): void {\n setVar('--f-surface-0', palette[0], root);\n const shades = ['50', '100', '200', '300', '400', '500', '600', '700', '800', '900', '950'] as const;\n for (const shade of shades) {\n setVar(`--f-surface-${shade}`, palette[shade], root);\n }\n}\n\n// ─── Semantic tokens ───────────────────────────────────────────────────────────\n\nexport function applyLightSemantics(root = document.documentElement): void {\n setVar('--f-text-color', 'var(--f-surface-700)', root);\n setVar('--f-text-hover-color', 'var(--f-surface-800)', root);\n setVar('--f-text-muted-color', 'var(--f-surface-500)', root);\n setVar('--f-text-hover-muted-color', 'var(--f-surface-600)', root);\n setVar('--f-content-background', 'var(--f-surface-0)', root);\n setVar('--f-content-hover-background', 'var(--f-surface-50)', root);\n setVar('--f-content-hover-color', 'var(--f-surface-700)', root);\n setVar('--f-content-border-color', 'var(--f-surface-200)', root);\n setVar('--f-highlight-background', 'var(--f-primary-50)', root);\n setVar('--f-highlight-color', 'var(--f-primary-700)', root);\n setVar('--f-highlight-focus-background', 'var(--f-primary-100)', root);\n setVar('--f-highlight-focus-color', 'var(--f-primary-800)', root);\n setVar('--f-overlay-popover-background', 'var(--f-surface-0)', root);\n setVar('--f-mask-background', 'rgba(0,0,0,0.4)', root);\n setVar('--f-form-field-background', 'var(--f-surface-0)', root);\n setVar('--f-form-field-border-color', 'var(--f-surface-300)', root);\n setVar('--f-form-field-hover-border-color', 'var(--f-surface-400)', root);\n setVar('--f-form-field-focus-border-color', 'var(--f-primary-500)', root);\n setVar('--f-form-field-disabled-background', 'var(--f-surface-100)', root);\n setVar('--f-form-field-disabled-color', 'var(--f-surface-400)', root);\n setVar('--f-form-field-color', 'var(--f-surface-900)', root);\n setVar('--f-form-field-placeholder-color', 'var(--f-surface-400)', root);\n setVar('--f-track-background', 'var(--f-surface-100)', root);\n setVar('--f-track-item-background', 'var(--f-surface-0)', root);\n}\n\nexport function applyDarkSemantics(root = document.documentElement): void {\n setVar('--f-text-color', 'var(--f-surface-100)', root);\n setVar('--f-text-hover-color', 'var(--f-surface-50)', root);\n setVar('--f-text-muted-color', 'var(--f-surface-400)', root);\n setVar('--f-text-hover-muted-color', 'var(--f-surface-300)', root);\n setVar('--f-content-background', 'var(--f-surface-900)', root);\n setVar('--f-content-hover-background', 'var(--f-surface-800)', root);\n setVar('--f-content-hover-color', 'var(--f-surface-100)', root);\n setVar('--f-content-border-color', 'var(--f-surface-700)', root);\n setVar('--f-highlight-background', 'color-mix(in srgb, var(--f-primary-400), transparent 84%)', root);\n setVar('--f-highlight-color', 'rgba(255,255,255,0.87)', root);\n setVar('--f-highlight-focus-background', 'color-mix(in srgb, var(--f-primary-400), transparent 76%)', root);\n setVar('--f-highlight-focus-color', 'rgba(255,255,255,0.87)', root);\n setVar('--f-overlay-popover-background', 'var(--f-surface-800)', root);\n setVar('--f-mask-background', 'rgba(0,0,0,0.6)', root);\n setVar('--f-form-field-background', 'var(--f-surface-800)', root);\n setVar('--f-form-field-border-color', 'var(--f-surface-700)', root);\n setVar('--f-form-field-hover-border-color', 'var(--f-surface-600)', root);\n setVar('--f-form-field-focus-border-color', 'var(--f-primary-400)', root);\n setVar('--f-form-field-disabled-background', 'var(--f-surface-700)', root);\n setVar('--f-form-field-disabled-color', 'var(--f-surface-500)', root);\n setVar('--f-form-field-color', 'var(--f-surface-50)', root);\n setVar('--f-form-field-placeholder-color', 'var(--f-surface-500)', root);\n setVar('--f-track-background', 'var(--f-surface-950)', root);\n setVar('--f-track-item-background', 'var(--f-surface-800)', root);\n}\n\n// ─── Preset tokens ─────────────────────────────────────────────────────────────\n\nexport function applyPreset(preset: ThemePreset, root = document.documentElement): void {\n setVar('--f-content-border-radius', preset.borderRadius, root);\n setVar('--f-border-radius-sm', preset.borderRadiusSm, root);\n setVar('--f-border-radius-md', preset.borderRadius, root);\n setVar('--f-border-radius-lg', preset.borderRadiusLg, root);\n setVar('--f-border-radius-xl', preset.borderRadiusXl, root);\n setVar('--f-border-width', preset.borderWidth, root);\n setVar('--f-transition-duration', preset.transitionDuration, root);\n setVar('--f-focus-ring-width', preset.focusRingWidth, root);\n setVar('--f-focus-ring-style', preset.focusRingStyle, root);\n setVar('--f-focus-ring-color', 'var(--f-primary-color)', root);\n setVar('--f-focus-ring-offset', preset.focusRingOffset, root);\n setVar('--f-focus-ring-shadow', 'none', root);\n setVar('--f-shadow-sm', preset.shadowSm, root);\n setVar('--f-shadow', preset.shadow, root);\n setVar('--f-shadow-lg', preset.shadowLg, root);\n setVar('--f-shadow-xl', preset.shadowXl, root);\n setVar('--f-shadow-2xl', preset.shadow2xl, root);\n\n setVar('--f-button-font-weight', preset.buttonFontWeight, root);\n\n setVar('--f-card-border-radius', preset.cardBorderRadius, root);\n setVar('--f-card-padding', preset.cardPadding, root);\n setVar('--f-card-gap', preset.cardGap, root);\n setVar('--f-card-shadow', preset.cardShadow, root);\n\n const sb = preset.selectButton;\n setVar('--f-selectbutton-background', sb.background, root);\n setVar('--f-selectbutton-border-color', sb.borderColor, root);\n setVar('--f-selectbutton-divider-color', sb.dividerColor, root);\n setVar('--f-selectbutton-padding', sb.padding, root);\n setVar('--f-selectbutton-item-color', sb.itemColor, root);\n setVar('--f-selectbutton-item-hover-background', sb.itemHoverBackground, root);\n setVar('--f-selectbutton-checked-background', sb.checkedBackground, root);\n setVar('--f-selectbutton-checked-color', sb.checkedColor, root);\n setVar('--f-selectbutton-checked-shadow', sb.checkedShadow, root);\n setVar('--f-selectbutton-font-weight', sb.fontWeight, root);\n setVar('--f-selectbutton-item-border-radius', sb.itemBorderRadius, root);\n}\n\n// ─── Full theme application ────────────────────────────────────────────────────\n\nexport interface ApplyThemeOptions {\n preset?: PresetName;\n primary?: string;\n surface?: string | null;\n darkTheme?: boolean;\n}\n\nexport function applyTheme(options: ApplyThemeOptions, root = document.documentElement): void {\n const presetName = (options.preset ?? 'Aura') as PresetName;\n const preset = PRESETS[presetName] ?? PRESETS['Aura'];\n const primaryName = options.primary ?? 'violet';\n const surfaceName = options.surface;\n const isDark = options.darkTheme ?? false;\n\n const primaryPalette = primaryName === 'noir' ? NOIR_PRIMARY : (PRIMARY_PALETTES[primaryName] ?? PRIMARY_PALETTES['violet']);\n\n const defaultSurface = isDark ? 'zinc' : 'slate';\n const surfacePalette = SURFACE_PALETTES[surfaceName ?? defaultSurface] ?? SURFACE_PALETTES['slate'];\n\n applyPreset(preset, root);\n applySurfacePalette(surfacePalette, root);\n applyPrimaryPalette(primaryPalette, isDark, root);\n\n if (isDark) {\n applyDarkSemantics(root);\n } else {\n applyLightSemantics(root);\n }\n\n if (preset.highlightVariant === 'solid') {\n setVar('--f-highlight-background', 'var(--f-primary-color)', root);\n setVar('--f-highlight-color', 'var(--f-primary-contrast-color)', root);\n setVar('--f-highlight-focus-background', 'var(--f-primary-hover-color)', root);\n setVar('--f-highlight-focus-color', 'var(--f-primary-contrast-color)', root);\n }\n\n if (preset.strongBorders) {\n if (isDark) {\n setVar('--f-form-field-border-color', 'var(--f-surface-600)', root);\n setVar('--f-form-field-hover-border-color', 'var(--f-surface-500)', root);\n setVar('--f-content-border-color', 'var(--f-surface-600)', root);\n } else {\n setVar('--f-form-field-border-color', 'var(--f-surface-400)', root);\n setVar('--f-form-field-hover-border-color', 'var(--f-surface-500)', root);\n setVar('--f-content-border-color', 'var(--f-surface-300)', root);\n }\n }\n}\n\n// ─── Bootstrap helper (reads from localStorage like legacy system) ─────────────\n\nexport function buildBootstrapPreset(envConfig?: { preset?: string; primary?: string; surface?: string | null; isMemorable?: boolean }): ApplyThemeOptions {\n const preset = (envConfig?.preset ?? 'Aura') as PresetName;\n const primary = envConfig?.primary ?? 'violet';\n const surface = envConfig?.surface ?? null;\n\n if (envConfig?.isMemorable !== false) {\n try {\n const stored = localStorage.getItem('flusys.layout.config');\n if (stored) {\n const parsed = JSON.parse(stored) as { preset?: string; primary?: string; surface?: string; darkTheme?: boolean };\n return {\n preset: (parsed.preset as PresetName) ?? preset,\n primary: parsed.primary ?? primary,\n surface: parsed.surface ?? surface,\n darkTheme: parsed.darkTheme ?? false,\n };\n }\n } catch { /* SSR or storage unavailable */ }\n }\n return { preset, primary, surface };\n}\n\n// ─── Re-export for convenience ─────────────────────────────────────────────────\n\nexport { PRIMARY_PALETTES, SURFACE_PALETTES, NOIR_PRIMARY };\nexport type { ColorPalette, SurfacePalette };\n","import { APP_INITIALIZER, EnvironmentProviders, makeEnvironmentProviders, PLATFORM_ID } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { NgUIConfig, NgUIOptions } from './services/ng-ui-config.service';\nimport { applyTheme, buildBootstrapPreset, ApplyThemeOptions } from './themes/applier';\nimport { PresetName } from './themes/presets';\n\nexport interface ProvideNgUIOptions {\n theme?: {\n preset?: ApplyThemeOptions | { preset: ApplyThemeOptions; options: { darkModeSelector?: string } };\n options?: { darkModeSelector?: string };\n };\n translation?: NgUIOptions['translation'];\n ripple?: boolean;\n}\n\nfunction initializeNgUITheme(options: ProvideNgUIOptions, platformId: object): () => void {\n return () => {\n if (!isPlatformBrowser(platformId)) return;\n\n let themeOptions: ApplyThemeOptions = {};\n\n const themePreset = options?.theme?.preset;\n if (themePreset && typeof themePreset === 'object' && 'preset' in themePreset && 'options' in themePreset) {\n themeOptions = (themePreset as { preset: ApplyThemeOptions }).preset;\n } else if (themePreset) {\n themeOptions = themePreset as ApplyThemeOptions;\n }\n\n const darkModeSelector = options?.theme?.options?.darkModeSelector ?? '.app-dark';\n const isDark = document.documentElement.classList.contains(darkModeSelector.replace('.', '')) ||\n document.documentElement.getAttribute('class')?.includes('app-dark') === true;\n\n applyTheme({ ...themeOptions, darkTheme: isDark });\n\n // Apply dark mode semantics on toggle\n const observer = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n if (mutation.type === 'attributes' && mutation.attributeName === 'class') {\n const el = mutation.target as HTMLElement;\n const nowDark = el.classList.contains('app-dark');\n const presetKeys = themeOptions as ApplyThemeOptions;\n applyTheme({ ...presetKeys, darkTheme: nowDark });\n }\n }\n });\n observer.observe(document.documentElement, { attributes: true, attributeFilter: ['class'] });\n };\n}\n\nexport function provideNgUI(options?: ProvideNgUIOptions): EnvironmentProviders {\n const configOptions: NgUIOptions = {\n theme: {\n options: {\n darkModeSelector: options?.theme?.options?.darkModeSelector ?? '.app-dark',\n },\n },\n translation: options?.translation,\n };\n\n return makeEnvironmentProviders([\n {\n provide: NgUIConfig,\n useFactory: () => {\n const config = new NgUIConfig();\n config.configure(configOptions);\n return config;\n },\n },\n {\n provide: APP_INITIALIZER,\n useFactory: (platformId: object) => initializeNgUITheme(options ?? {}, platformId),\n deps: [PLATFORM_ID],\n multi: true,\n },\n ]);\n}\n\nexport { buildBootstrapPreset };\nexport type { PresetName, ApplyThemeOptions };\n","// ─── Module ───────────────────────────────────────────────────────────────────\nexport { UiModule } from './modules/ui.module';\n\n// ─── Services ─────────────────────────────────────────────────────────────────\nexport { MessageService } from './services/message.service';\nexport type { UiMessage } from './services/message.service';\nexport { ConfirmationService } from './services/confirmation.service';\nexport { NgUIConfig } from './services/ng-ui-config.service';\nexport type { NgUITranslationConfig, NgUIOptions } from './services/ng-ui-config.service';\n\n// ─── Provider ─────────────────────────────────────────────────────────────────\nexport { provideNgUI, buildBootstrapPreset } from './provide-ng-ui';\nexport type { ProvideNgUIOptions, ApplyThemeOptions } from './provide-ng-ui';\n\n// ─── Theme system ─────────────────────────────────────────────────────────────\nexport { applyTheme, applyPrimaryPalette, applySurfacePalette, applyPreset, applyLightSemantics, applyDarkSemantics } from './themes/applier';\nexport { PRIMARY_PALETTES, SURFACE_PALETTES, NOIR_PRIMARY } from './themes/palettes';\nexport { PRESETS, PRESET_NAMES, AURA_PRESET, LARA_PRESET, NORA_PRESET } from './themes/presets';\nexport type { PresetName, ThemePreset, SelectButtonTokens } from './themes/presets';\nexport type { ColorPalette, SurfacePalette } from './themes/palettes';\n\n// ─── Own interfaces ───────────────────────────────────────────────────────────\nexport type { MenuItem, MenuItemCommandEvent } from './interfaces/menu-item';\nexport type { TreeNode } from './interfaces/tree-node';\n\n// ─── Phase 1 ──────────────────────────────────────────────────────────────────\nexport { ConfirmDialog } from './components/confirm-dialog/confirm-dialog.component';\nexport { ToastComponent } from './components/toast/toast.component';\n\n// ─── Phase 2 ──────────────────────────────────────────────────────────────────\nexport { ButtonComponent } from './components/button/button.component';\nexport type { ButtonSeverity } from './components/button/button.component';\nexport { FButtonDirective } from './components/button/f-button.directive';\nexport { TagComponent } from './components/tag/tag.component';\nexport { SkeletonComponent } from './components/skeleton/skeleton.component';\nexport { AvatarComponent } from './components/avatar/avatar.component';\nexport { AvatarGroupComponent } from './components/avatar/avatar-group.component';\nexport { DividerComponent } from './components/divider/divider.component';\nexport { ChipComponent } from './components/chip/chip.component';\nexport { ProgressbarComponent } from './components/progressbar/progressbar.component';\nexport { ProgressSpinnerComponent } from './components/progressspinner/progressspinner.component';\nexport { MessageComponent } from './components/message/message.component';\nexport { ImageComponent } from './components/image/image.component';\n\n// ─── Phase 3 ──────────────────────────────────────────────────────────────────\nexport { InputTextDirective } from './components/input-text/input-text.directive';\nexport { InputPasswordDirective } from './components/input-text/input-password.directive';\nexport { TextareaDirective } from './components/textarea/textarea.directive';\nexport { SelectComponent } from './components/select/select.component';\nexport { MultiSelectComponent } from './components/select/multiselect.component';\nexport { CheckboxComponent } from './components/checkbox/checkbox.component';\nexport type { CheckboxChangeEvent } from './components/checkbox/checkbox.component';\nexport { ToggleSwitchComponent } from './components/toggleswitch/toggleswitch.component';\nexport { ToggleButtonComponent } from './components/togglebutton/togglebutton.component';\nexport { SelectButtonComponent } from './components/selectbutton/selectbutton.component';\nexport { PasswordComponent } from './components/password/password.component';\nexport { InputNumberComponent } from './components/inputnumber/inputnumber.component';\nexport { RadioButtonComponent } from './components/radiobutton/radiobutton.component';\nexport type { RadioButtonClickEvent } from './components/radiobutton/radiobutton.component';\nexport { RatingComponent } from './components/rating/rating.component';\nexport { IconFieldComponent } from './components/iconfield/iconfield.component';\nexport { InputIconComponent } from './components/inputicon/inputicon.component';\nexport { DatePickerComponent } from './components/datepicker/datepicker.component';\nexport { FileUploadComponent } from './components/fileupload/fileupload.component';\nexport type { FileSelectEvent, FileRemoveEvent } from './components/fileupload/fileupload.component';\n\n// ─── Phase 4 ──────────────────────────────────────────────────────────────────\nexport { DialogComponent } from './components/dialog/dialog.component';\nexport { DrawerComponent } from './components/drawer/drawer.component';\nexport { PopoverComponent } from './components/popover/popover.component';\n\n// ─── Phase 5 ──────────────────────────────────────────────────────────────────\nexport { CardComponent } from './components/card/card.component';\nexport { PanelComponent } from './components/panel/panel.component';\nexport { TabsComponent, TabComponent, TabListComponent, TabPanelComponent, TabPanelsComponent } from './components/tabs/tabs.component';\nexport { TabsContext } from './components/tabs/tabs.context';\nexport { AccordionComponent, AccordionPanelComponent, AccordionHeaderComponent, AccordionContentComponent } from './components/accordion/accordion.component';\nexport { AccordionContext } from './components/accordion/accordion.context';\nexport { StepsComponent } from './components/steps/steps.component';\nexport type { StepsMenuItem } from './components/steps/steps.component';\nexport { SplitterComponent, SplitterPanelComponent } from './components/splitter/splitter.component';\nexport { ToolbarComponent } from './components/toolbar/toolbar.component';\n\n// ─── Phase 6 ──────────────────────────────────────────────────────────────────\nexport { TableComponent } from './components/table/table.component';\nexport type { TableLazyLoadEvent } from './components/table/table.component';\nexport { SortIconComponent, SortableColumnDirective } from './components/table/sort-icon.component';\nexport { PaginatorComponent } from './components/paginator/paginator.component';\nexport type { PaginatorState } from './components/paginator/paginator.component';\nexport { ChartComponent } from './components/chart/chart.component';\nexport { TooltipDirective } from './components/tooltip/tooltip.directive';\nexport { StyleClassDirective } from './components/styleclass/styleclass.directive';\n\n// ─── Phase 7 — fully native ───────────────────────────────────────────────────\nexport { AutoCompleteComponent } from './components/autocomplete/autocomplete.component';\nexport type { AutoCompleteCompleteEvent, AutoCompleteSelectEvent } from './components/autocomplete/autocomplete.component';\nexport { ColorPickerComponent } from './components/colorpicker/colorpicker.component';\nexport type { ColorFormat, ColorPickerChangeEvent } from './components/colorpicker/colorpicker.component';\nexport { ListboxComponent } from './components/listbox/listbox.component';\nexport type { ListboxChangeEvent } from './components/listbox/listbox.component';\nexport { SplitButtonComponent } from './components/splitbutton/splitbutton.component';\nexport { TreeTableComponent, TreeTableTogglerComponent, TreeTableService } from './components/treetable/treetable.component';\nexport type { TreeTableNode } from './components/treetable/treetable.component';\nexport { TreeSelectComponent } from './components/treeselect/treeselect.component';\nexport type { TreeSelectionMode } from './components/treeselect/treeselect.component';\n\n// ─── Phase 9 — Component library extensions ───────────────────────────────────────────────────\nexport { BadgeComponent } from './components/badge/badge.component';\nexport type { BadgeSeverity, BadgeSize } from './components/badge/badge.component';\nexport { OverlayBadgeComponent } from './components/overlaybadge/overlaybadge.component';\nexport { FieldsetComponent } from './components/fieldset/fieldset.component';\nexport { FloatLabelComponent } from './components/floatlabel/floatlabel.component';\nexport type { FloatLabelVariant } from './components/floatlabel/floatlabel.component';\nexport { IftaLabelComponent } from './components/iftalabel/iftalabel.component';\nexport { ButtonGroupComponent } from './components/buttongroup/buttongroup.component';\nexport { InputGroupComponent, InputGroupAddonComponent } from './components/inputgroup/inputgroup.component';\nexport { ScrollTopComponent } from './components/scrolltop/scrolltop.component';\nexport { MeterGroupComponent } from './components/metergroup/metergroup.component';\nexport type { MeterItem } from './components/metergroup/metergroup.component';\nexport { FluidComponent } from './components/fluid/fluid.component';\nexport { BlockUiComponent } from './components/blockui/blockui.component';\nexport { MenuComponent } from './components/menu/menu.component';\nexport { MenubarComponent } from './components/menubar/menubar.component';\nexport { TieredMenuComponent } from './components/tieredmenu/tieredmenu.component';\nexport { ContextMenuComponent } from './components/contextmenu/contextmenu.component';\nexport { MegaMenuComponent } from './components/megamenu/megamenu.component';\nexport { PanelMenuComponent } from './components/panelmenu/panelmenu.component';\nexport { BreadcrumbComponent } from './components/breadcrumb/breadcrumb.component';\nexport { SpeedDialComponent } from './components/speeddial/speeddial.component';\nexport type { SpeedDialDirection, SpeedDialType } from './components/speeddial/speeddial.component';\nexport { DockComponent } from './components/dock/dock.component';\nexport { InputMaskDirective } from './components/inputmask/inputmask.directive';\nexport { InputOtpComponent } from './components/inputotp/inputotp.component';\nexport { SliderComponent } from './components/slider/slider.component';\nexport { KnobComponent } from './components/knob/knob.component';\nexport { CascadeSelectComponent } from './components/cascadeselect/cascadeselect.component';\nexport { KeyFilterDirective } from './components/keyfilter/keyfilter.directive';\nexport type { KeyFilterPreset } from './components/keyfilter/keyfilter.directive';\nexport { ConfirmPopupComponent } from './components/confirmpopup/confirmpopup.component';\nexport { DynamicDialogComponent } from './components/dynamicdialog/dynamicdialog.component';\nexport {\n DynamicDialogService,\n DynamicDialogRef,\n DYNAMIC_DIALOG_DATA,\n DYNAMIC_DIALOG_REF,\n} from './components/dynamicdialog/dynamicdialog.service';\nexport type { DynamicDialogConfig } from './components/dynamicdialog/dynamicdialog.service';\nexport { InplaceComponent } from './components/inplace/inplace.component';\nexport { TreeComponent } from './components/tree/tree.component';\nexport type { TreeSelectionMode as TreeComponentSelectionMode } from './components/tree/tree.component';\nexport { TimelineComponent } from './components/timeline/timeline.component';\nexport type { TimelineAlign, TimelineLayout } from './components/timeline/timeline.component';\nexport { DataViewComponent } from './components/dataview/dataview.component';\nexport type { DataViewLayout } from './components/dataview/dataview.component';\nexport { CarouselComponent } from './components/carousel/carousel.component';\nexport { ScrollPanelComponent } from './components/scrollpanel/scrollpanel.component';\nexport { ScrollerComponent } from './components/scroller/scroller.component';\nexport { OrganizationChartComponent } from './components/organizationchart/organizationchart.component';\nexport { PickListComponent } from './components/picklist/picklist.component';\nexport { OrderListComponent } from './components/orderlist/orderlist.component';\nexport { GalleriaComponent } from './components/galleria/galleria.component';\nexport type { GalleriaItem } from './components/galleria/galleria.component';\nexport { EditorComponent } from './components/editor/editor.component';\nexport { TerminalComponent } from './components/terminal/terminal.component';\nexport type { TerminalCommandEvent } from './components/terminal/terminal.component';\nexport { ImageCompareComponent } from './components/imagecompare/imagecompare.component';\nexport { AnimateOnScrollDirective } from './components/animateonscroll/animateonscroll.directive';\nexport { AutoFocusDirective } from './components/autofocus/autofocus.directive';\nexport { RippleDirective } from './components/ripple/ripple.directive';\n\n// ─── Phase 8 — Icon ───────────────────────────────────────────────────────────\nexport { UiIconComponent } from './components/icon/ui-icon.component';\n\n// ─── Shared utilities ─────────────────────────────────────────────────────────\nexport { FTemplateDirective } from './components/shared/ftemplate.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["CLOSE_ANIMATION_MS","_uidCounter","assignKey","i1.InputTextDirective","PRESETS"],"mappings":"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"}
|